Repository navigation
trying to address the issue in::Tool-registry scaling: resolve scratc… - #811
theonlychant wants to merge 9 commits into
Conversation
|
@claude please review this PR. |
PR Review — #811 (Tool-registry scaling / dynamic tool loading)Thanks for tackling #688 — the bundle-gated prompt approach is the right idea, and isolating it behind an opt-in A handful of things to address before this is merge-ready. 🟡 PR hygiene
🟡 Silent fallback in
|
Co-authored-by: Copilot <copilot@github.com>
There was a problem hiding this comment.
@theonlychant Thanks for the contribution — appreciate the engagement on multiple issues. The PKCE primitives in pkce.py are correct, and the tool_loader design (bundle-gated activation) is the right shape for #688.
The bot review above covered the tool_loader portion in detail; I won't restate those points. A few structural things that need to be resolved before this can land:
This PR bundles three unrelated work streams
Looking at the non-merge commits in this branch:
2f79fa97— Tool-registry scaling (#688)04d18ca5— Google connections / OAuth scaffold (#915)2f2523bb— Synthetic mbox dataset (#848)
These are three separate issues. They need to be three separate PRs — mixing them means a reviewer who blocks on one stream blocks the others, and the diff is hard to follow.
On the connections/ work for #915 — please back it out
Heads-up that #915 is already in flight on our side and a PR will land in the next day or two with the full implementation (token refresh, loopback server, FastAPI routes, AgentUI Settings page, keychain round-trip, SSE events). Your contribution is genuinely appreciated, but to avoid a merge collision and divergent designs, the cleanest path is to drop the src/gaia/connections/ files and the tests/unit/test_pkce.py test from this PR. Once our PR lands you'll see the architecture and can build the next feature on top of that foundation if you'd like.
The diff is mostly stale-branch noise
The PR shows +6017/-933 across 70 files, but the working branch is your fork's main, which is far behind upstream. Roughly 25 of those 70 file changes are already-merged work showing up as "new" because the merge base is stale. Examples:
schemas/agent-manifest.schema.json(deleted) andutil/gen_manifest_schema.py(deleted) — already removed by #914AGENTS.md(+168) — already added by #904cpp/benchmarks/bench_utils.h(+7) — already changed by #874MANIFEST.in(+16),.github/workflows/publish.yml,.github/workflows/pypi.yml— overlap with #908/#909.claude/agents/*.md— already updated in main- Various docs under
docs/sdk/anddocs/spec/— overlap with #918
A reviewer can't tell genuine new lines from already-merged ones without redoing the rebase mentally, and pushing further commits from your-fork:main will keep compounding this.
Recommended path forward
Close this PR and reopen as two focused PRs from feature branches in your fork:
feat/tool-loaderfor #688 — addressing the bot's blocking items above.feat/email-mbox-fixturesfor #848 — the synthetic mbox fixture and only the tests it enables.
Skip connections/ in your queue — we're handling #915.
Before branching, pull upstream amd:main into your fork's main so the stale-diff problem doesn't follow you into the new branches.
Thanks again for the work — the design instincts on tool_loader are good, and once #915 lands you'll have a fresh codebase to build on.
|
Alright yea I don’t know why it pushed it here I’ll make a new PR sorry my apologies
Yea sorry my apologies I don’t know why it pushed it those changes here I’ll fix that |
@theonlychant no worries, and thanks for the contribution. Should I close this PR? Do you already have one that supersedes it? |
# GAIA v0.13.0 Release Notes ## Overview This major release introduces **GAIA Code**, a proof-of-concept AI coding agent with VSCode integration, and a **Docker Agent** for containerized workflows. Most significantly, this release establishes a new architecture that allows GAIA agents to be easily built, and to be exposed via **API, MCP, and CLI**, opening up extensive possibilities for agent composition and integration. The release also includes improvements to the evaluation framework and enhanced documentation for building custom agents. ## What's New ### 🚀 GAIA Code Agent with VSCode Integration (amd#774, amd#864) Introduced a proof-of-concept AI-powered coding agent with Visual Studio Code integration: - **In-Editor Development**: Trigger GAIA Code Agent from VSCode via extension coupled with GitHub Copilot - **Automated Code Generation**: Generate Python code from natural language descriptions - **Test-Driven Development**: Automatic test generation and execution - **Iterative Refinement**: Multi-iteration approach to code quality - **File Context Awareness**: Automatic workspace file monitoring and context *Note: GAIA Code is currently a proof-of-concept focused on Python development workflows.* **Files Changed**: `src/gaia/agents/code/`, VSCode extension files ### 🐳 Docker Agent (amd#811, amd#833) New proof-of-concept Docker agent for containerized application development: - **Container Management**: Create, start, stop, and manage Docker containers - **Image Building**: Automated Dockerfile generation and image builds - **Docker Compose Support**: Multi-container orchestration capabilities - **Isolated Environments**: Containerized development environments for projects *Note: The Docker Agent is currently a proof-of-concept demonstrating containerized workflow automation.* ### 🏗️ Agent Architecture: Multi-Protocol Exposure (amd#846) **Major architectural enhancement** enabling GAIA agents to be exposed through multiple interfaces: - **API Exposure**: RESTful API endpoints for agent interactions - **MCP (Model Context Protocol)**: Native MCP server support for agent communication - **CLI Interface**: Command-line access to agent capabilities - **Unified Pattern**: Class inheritance-based design pattern for building new agents This architecture opens up powerful possibilities: - Integrate agents into existing tools and workflows - Build custom agents using established patterns - Mix and match communication protocols based on needs ## Improvements ### 🔧 Evaluation Framework Improvements #### Fix: Remove Silent Fallback in Transcript Matching (amd#843) Improved error handling in evaluation transcript matching: - **Fail-Fast Approach**: Clear failures instead of silent fallbacks - **Better Debugging**: Improved error messages for mismatches - **Data Integrity**: Ensures evaluation data consistency #### Restore Python Execution Tools (amd#839) Re-added essential Python execution capabilities: - Restored `run_test` tool for test execution - Restored `execute_python_file` tool for script running - Better integration with code agent workflows ## Getting Started with Custom Agents With the new agent architecture, building custom agents is straightforward. Agents can inherit from base classes and automatically gain API, MCP, and CLI exposure. See the updated documentation for examples and best practices.
…#688) (amd#1447) ## Why this matters Issue amd#688 (dynamic tool loading, p0/consumer) has burned **four PRs** (amd#811/amd#922/amd#957/amd#958), all closing unmerged on the same recurring gaps. The root cause isn't the contributors — it's that the spec in the issue body **drifted from the actual code**, so every attempt built against a stale picture and reviews kept catching it late. Before the next contributor (who's asked to take it) writes a line, this lands one canonical, code-accurate spec at `docs/spec/tool-loader.mdx` so design and implementation can't diverge again — it's reviewed in the same repo as the code that will implement it. It also reframes the **why**: not the discredited "~12K tokens" cleanup, but the two problems users and the architecture actually feel — **cold-start time-to-first-token** (the first query prefills the whole tool block) and **scaling slope** (every tool added taxes every turn forever). The most important correction: tool descriptions reach the model via **two render paths** (text prompt for non-tool-calling models; the native `tools=` schema param for tool-calling models). A selector that filters only the text path — as the original spec and prior PRs did — gives tool-calling models **zero** benefit. The spec makes filtering both a hard requirement, and documents the cache-thrash trap that turns a first-turn TTFT win into an every-turn tax if selection isn't stable. ## Test plan - [x] `python -c "import json; json.load(open('docs/docs.json'))"` — nav JSON valid - [x] New page `spec/tool-loader` registered under Core Framework in `docs.json` - [ ] Mintlify preview renders `docs/spec/tool-loader.mdx` (tables, `<Note>`/`<Warning>`, internal anchor link) - [ ] Maintainer sign-off on the design direction before implementation begins (open questions are left explicitly for the implementer's design sketch) --------- Co-authored-by: Ovtcharov <kovtchar@amd.com>
…hpad/memory collision via #688 dynamic loading #800
Changes