Keep the tutorial self-contained and framework-neutral. The removed
section only pointed to a separate CLI product and was not required to
run the tutorial; the app depends solely on the openai package.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JA7f8inQZuMo7oe4Tf7adq
The defaults were pinned versions, which are the versions that happened to be current
the day they were written. Providers retire versions, so the pin would eventually fail
for a reader cloning this months later -- before they had seen the panel work at all.
The defaults are now `~openai/gpt-mini-latest`, `~anthropic/claude-haiku-latest` and
`~google/gemini-flash-latest`, which OpenRouter documents as always redirecting to the
current model in each family; today they resolve to exactly the three ids that were
pinned. A model id that does not resolve now says so and points at the catalogue, and
--help and the README say where ids come from.
Re-running the demo against the new defaults turned up a real defect in the grouping,
which is the point of the folder. The position regex required the finding reference to
sit immediately after the label, so only a judge writing bare "UPHOLD: A1" was grouped:
gemini's "* **UPHOLD: A1**" and gpt-mini's "UPHOLD: Reviewer A1 / Reviewer B3" both
parsed to nothing, and two of three rebuttals vanished from the table without a word.
The label match now tolerates bullets and bold, references are collected from the whole
line so one position may argue two findings, a model arguing the same finding twice
counts once, and a rebuttal that parses to nothing is named instead of dropped.
Also: the roster example cited google/gemini-3.8-pro, which OpenRouter does not serve.
* Add AI Codebase Migration Agent (LangGraph HITL + parallel fan-out)
A multi-agent codebase migration planner built on LangGraph, demonstrating
two primitives not covered elsewhere in the repo: interrupt()-based human
approval of a generated plan, and Send() fan-out to parallel workers.
Pipeline:
START -> query_validator -> planner -> approval (interrupt)
-> refactor_worker fan-out (Send) -> aggregator -> END
The planner produces a file-by-file migration plan with per-file risk
ratings. Execution pauses at an interrupt() so a developer can approve the
plan or revise it in natural language before any refactoring runs, then one
worker per file generates diffs and tests in parallel. The aggregator
synthesizes a migration report with matplotlib risk charts.
Defaults to gpt-5-mini for planning/workers and gpt-5.5 for synthesis,
matching model IDs already used elsewhere in the repo. Any OpenAI-compatible
endpoint works via LLM_BASE_URL.
* fix: remove executable chart code path
Signed-off-by: Aryan Pardeshi <aryanpardeshi606@gmail.com>
---------
Signed-off-by: Aryan Pardeshi <aryanpardeshi606@gmail.com>
Remove pathlib==1.0.1 from ai_tic_tac_toe_agent/requirements.txt. This is the
abandoned 2012 backport of the stdlib module that can shadow and break Python's
built-in pathlib on modern Python. The code already uses `from pathlib import
Path` (stdlib), so the package is unnecessary.
Migrate PyPDF2 to pypdf in two projects (ai_recruitment_agent_team and
rag_chain). PyPDF2 is deprecated and had a ReDoS vulnerability (CVE-2023-36810).
The maintained successor is pypdf, which the rest of the repo already uses in
10+ other projects. The PdfReader API is identical:
- import PyPDF2 -> import pypdf
- PyPDF2.PdfReader -> pypdf.PdfReader
Files changed:
- ai_tic_tac_toe_agent/requirements.txt: removed pathlib==1.0.1
- ai_recruitment_agent_team/requirements.txt: PyPDF2==3.0.1 -> pypdf>=4.0.0
- ai_recruitment_agent_team/ai_recruitment_agent_team.py: import and usage
- ai_recruitment_agent_team/README.md: updated tech stack mention
- rag_chain/requirements.txt: PyPDF2 -> pypdf>=4.0.0
- ai_travel_planner_agent_team/client (plan/page.tsx): the 'Number of children'
NumberInput had min={1} while the form default is 0, so once incremented it
could never return to 0 and submitted children:1. Set min={0} (adults/rooms
stay min={1}).
- multimodal_video_moment_finder/frontend (app/page.tsx): jumpToMoment seeked
after a fixed 100ms setTimeout; on a cross-video jump the new <video src>
hasn't loaded yet, so the seek is clamped and playback starts at 0. Seek on the
new file's 'loadeddata' event when switching videos.
- ai_negotiation_battle_simulator/frontend (src/app/page.tsx): the poll
setInterval was a local var cleared only on a terminal status, with no useEffect
cleanup, so it kept fetching/setState after unmount and polled forever if the
run never terminated. Own the handle in a ref and clear it on unmount.
- multi_agent_trust_layer: DelegationScope.narrow() intersected allowed_actions
sets, and allows_action() treated an EMPTY set as 'all allowed'. So a
sub-delegation whose scope didn't overlap the parent's collapsed to an empty
set and thus permitted EVERYTHING (privilege escalation). Use None as the
'all allowed' sentinel; an empty intersection now permits nothing. Verified:
parent{web_search,summarize}.narrow(child{read_document}) -> allows delete_file
False (was True).
- ai_domain_deep_research_agent: 'Compile Final Report' was nested inside the
'Start Research' button block, so clicking it reran the script with Start
Research False and the button was never rendered — the report was unreachable.
Hoist it out, gate on st.session_state.question_answers.
- ai_home_renovation_agent/tools.py + multimodal_uiux_feedback_agent_team/tools.py:
the asset version counter was clobbered by save_artifact()'s return value (ADK's
per-filename revision), so repeated generations for one asset collided on the
same filename and overwrote each other. Keep the version from
get_next_version_number; don't rebind it.
All four files compile-check clean.
- x_post_extractor.py: the display-name selector was hardcoded to match 'Henrik',
so user_display_name/user_profile_pic_url were NULL for every other author (and
the avatar selector was pinned to one account's data-testid). Use generic
selectors (first profile anchor without '@'; UserAvatar-Container- prefix).
- social_media_service.get_engagement_stats: AVG()/MAX() over zero matching rows
return NULL while COUNT(*)=0, so the 'if not result' guard never fires and
summing None raised HTTP 500 on any empty date range / fresh install. Coalesce
the aggregates to 0.
- x_scraper.crawl_x_profile: the pending sentiment-analysis queue was flushed only
on KeyboardInterrupt, so a partial final batch on a normal exit was dropped
(posts left with NULL sentiment forever) and the connection leaked. Flush after
the loop on every exit path.
All three compile-check clean.
recruitment_agent_team pinned both phidata and agno; drop the stray
phidata line. teaching_agent_team still pinned composio-phidata and
imported composio_phidata, left over from the repo-wide Phidata->Agno
migration; switch to composio-agno (same Action/ComposioToolSet API).
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
- utils/crawl_url.py: match 'og:' (not 'ogg:') so OpenGraph metadata is
captured; no page emits property='ogg:...', so metadata['og'] was always {}.
- tools/browser_crawler.py: both failure branches now return 'original_url'
(snake_case, matching the success path and every caller). Previously a single
failed URL raised KeyError('original_url') in the caller's dict comprehension
and lost the whole scrape batch instead of just that URL.
Fixes#1017
Co-authored-by: thejesh23 <thejesh23@users.noreply.github.com>
- devpulse_ai/streamlit_app.py: import/instantiate SignalCollector (not the
nonexistent SignalCollectorAgent) so the app starts; switch the API-key field
from Gemini/GOOGLE_API_KEY to OpenAI/OPENAI_API_KEY, which is what the three
OpenAIChat agents actually read.
- ai_financial_coach_agent.py: guard against the emoji-prefixed radio label
'📤 Upload CSV Transactions' so the no-CSV validation error fires instead of
falling through to a ZeroDivisionError.
- multimodal_design_agent_team/design_agent_team.py: pass the prompt positionally
to agent.run() (agno 2.x renamed the first param message->input).
Fixes#1015
Co-authored-by: thejesh23 <thejesh23@users.noreply.github.com>
Replace the verbatim upstream EvoAgentX project README (badges, Latest
News, demo video, benchmark tables, Roadmap, community/Support,
contributor graph, star history, Acknowledgements) with a focused
example README describing what this folder actually runs:
ai_Self-Evolving_agent.py — auto-generate a multi-agent workflow from a
goal, execute it on gpt-4o-mini, verify/repair the output with Claude,
and write a playable Tetris index.html.
Also documents the EvoAgentX install (the script imports evoagentx, which
requirements.txt doesn't include) and both required API keys
(OPENAI_API_KEY + ANTHROPIC_API_KEY).
271 lines -> 56.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Deep audit pass over the whole repo (links + anchors + images + HTML
src/href) surfaced references my earlier markdown-only scan missed:
- ai_self_evolving_agent: remove 8 broken local references to vendored
EvoAgentX assets that were never copied into this repo — the logo,
framework diagram, two all-image demo tables, the WeChat badge, and the
./README-zh.md translation link — plus the now-orphaned "Final Results"
TOC entry. All real text and external links are kept.
- code-reviewer/AGENTS.md: fix TOC anchor #avoid-n-1-query-problem ->
#avoid-n1-query-problem (GitHub slugs "N+1" to "n1").
Repo-wide broken local references (links, anchors, images, HTML) now 0.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Strip the remaining broken local links whose targets don't exist in the
repo, and tidy the surrounding content so nothing reads as dangling:
- ai_self_evolving_agent: drop vendored EvoAgentX ./docs/* pointers
(install guide, LLM guide, quickstart, tutorial table) and the broken
./LICENSE link (kept the plain "MIT License" statement)
- ai-mcp-app-builder: remove all docs/* links (TRACKER, HANDOFF, PLAN,
DEPLOY-RENDER, DYNAMIC_MCP, E2B-IMPLEMENTATION) — that docs/ folder was
never included — plus the now-empty "In this repo" block; kept valid
UI-entry and External links
- web_scraping_ai_agent: drop two links to a missing scrapegraph_ai_sdk/
README (kept the upstream GitHub + API doc links)
- windows_use_autonomous_agent: remove README-level License and
Contributing sections (no LICENSE/CONTRIBUTING files present)
- thinkpath_chatbot_app: remove missing demo.gif image (video block kept)
Repo-wide broken local-link count is now 0 (down from 68 originally).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
asyncio and uuid are Python standard library modules (available since
Python 3.4+). Listing them in requirements.txt is unnecessary and can
install unrelated PyPI packages with the same name, causing conflicts.
Affected files (8 total):
- starter_ai_agents: openai_research_agent, mixture_of_agents,
ai_meme_generator_agent_browseruse
- mcp_ai_agents: github_mcp_agent, browser_mcp_agent
- ai_agent_framework_crash_course: 5_1_in_memory_conversation_agent,
5_2_persistent_conversation_agent
- advanced_ai_agents: ai_financial_coach_agent
Migrates the AI travel planner agent team from agno 1.x to 2.x,
fixing the critical eval injection vulnerability (CVE-2026-35002).
API changes: show_tool_calls removed, add_datetime_to_instructions
renamed to add_datetime_to_context, add_member_tools_to_system_message
renamed to add_member_tools_to_context, enable_agentic_context renamed
to enable_agentic_state, success_criteria removed.
https://claude.ai/code/session_01SSNSNTTcFB7hWYU3DCDLyg
Version 6.4.1 is no longer distributed on PyPI (6.4.2 is the
closest available in the 6.4.x line). Four requirements.txt
files still pin the unavailable version, causing a hard
`pip install` failure on a clean checkout.
Widen to `>=6.4.2,<9` so the resolver picks the latest
compatible release (currently 8.1.1); the lower bound preserves
the original intent of pinning within the 6.4.x family, and the
upper bound matches the loosest existing pin elsewhere in the
repo (ai_competitor_intelligence_agent_team uses 7.2.1, the
ADK crash course uses `>=6.0.0`).
Affected projects:
- starter_ai_agents/ai_medical_imaging_agent
- rag_tutorials/rag_database_routing
- rag_tutorials/rag_agent_cohere
- advanced_ai_agents/multi_agent_apps/agent_teams/ai_teaching_agent_team
Fixes#63
Made-with: Cursor
Self-contained Streamlit tutorial demonstrating:
- Trust scoring with configurable threshold and tier-based gating
- SHA-256 hash-chained audit trail for every agent action
- Multi-agent research pipeline: Researcher → Analyst → Writer
- Visual trust dashboard and exportable audit log
Zero external dependencies beyond openai + streamlit.
Rework of #631 — addresses all feedback: core logic is fully self-contained,
no proprietary service dependency required to run.