gemcode 0.4.0__tar.gz → 0.4.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {gemcode-0.4.0/src/gemcode.egg-info → gemcode-0.4.1}/PKG-INFO +102 -25
- {gemcode-0.4.0 → gemcode-0.4.1}/README.md +101 -24
- {gemcode-0.4.0 → gemcode-0.4.1}/pyproject.toml +1 -1
- {gemcode-0.4.0 → gemcode-0.4.1}/src/gemcode/agent.py +85 -32
- gemcode-0.4.1/src/gemcode/agent_habits.py +413 -0
- gemcode-0.4.1/src/gemcode/agent_intelligence.py +650 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/src/gemcode/agent_mesh.py +125 -18
- {gemcode-0.4.0 → gemcode-0.4.1}/src/gemcode/callbacks.py +34 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/src/gemcode/checkpoints.py +1 -1
- gemcode-0.4.1/src/gemcode/codebase_awareness.py +368 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/src/gemcode/config.py +2 -2
- {gemcode-0.4.0 → gemcode-0.4.1}/src/gemcode/curated_memory.py +1 -1
- {gemcode-0.4.0 → gemcode-0.4.1}/src/gemcode/invoke.py +101 -95
- {gemcode-0.4.0 → gemcode-0.4.1}/src/gemcode/learning.py +1 -1
- {gemcode-0.4.0 → gemcode-0.4.1}/src/gemcode/model_routing.py +19 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/src/gemcode/plugins/terminal_hooks_plugin.py +1 -1
- gemcode-0.4.1/src/gemcode/self_healing.py +303 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/src/gemcode/session_runtime.py +1 -1
- gemcode-0.4.1/src/gemcode/tool_synthesis.py +234 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/src/gemcode/tools/__init__.py +14 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/src/gemcode/tools/curated_memory.py +1 -1
- {gemcode-0.4.0 → gemcode-0.4.1}/src/gemcode/tools/edit.py +1 -1
- {gemcode-0.4.0 → gemcode-0.4.1/src/gemcode.egg-info}/PKG-INFO +102 -25
- {gemcode-0.4.0 → gemcode-0.4.1}/src/gemcode.egg-info/SOURCES.txt +5 -0
- gemcode-0.4.1/tests/test_agent_habits.py +113 -0
- gemcode-0.4.0/src/gemcode/agent_intelligence.py +0 -259
- {gemcode-0.4.0 → gemcode-0.4.1}/LICENSE +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/MANIFEST.in +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/setup.cfg +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/src/gemcode/__init__.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/src/gemcode/__main__.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/src/gemcode/a2a_bridge.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/src/gemcode/agent_triggers.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/src/gemcode/audit.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/src/gemcode/autocompact.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/src/gemcode/automations.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/src/gemcode/autotune.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/src/gemcode/capability_routing.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/src/gemcode/cli.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/src/gemcode/compaction.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/src/gemcode/computer_use/__init__.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/src/gemcode/computer_use/browser_computer.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/src/gemcode/context_budget.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/src/gemcode/context_warning.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/src/gemcode/credentials.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/src/gemcode/delegation_learning.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/src/gemcode/dynamic_policy.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/src/gemcode/evals/harness.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/src/gemcode/event_bus.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/src/gemcode/fleet_reports.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/src/gemcode/hitl_session.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/src/gemcode/hooks.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/src/gemcode/ide_protocol.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/src/gemcode/ide_stdio.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/src/gemcode/intent_classifier.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/src/gemcode/interactions.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/src/gemcode/kaira_client.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/src/gemcode/kaira_daemon.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/src/gemcode/kaira_ipc.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/src/gemcode/kaira_job_store.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/src/gemcode/limits.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/src/gemcode/live_audio_engine.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/src/gemcode/logging_config.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/src/gemcode/mcp_loader.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/src/gemcode/memory/__init__.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/src/gemcode/memory/embedding_memory_service.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/src/gemcode/memory/file_memory_service.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/src/gemcode/modality_tools.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/src/gemcode/model_errors.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/src/gemcode/multimodal_input.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/src/gemcode/openapi_loader.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/src/gemcode/org.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/src/gemcode/output_styles.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/src/gemcode/paths.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/src/gemcode/permissions.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/src/gemcode/plugins/__init__.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/src/gemcode/plugins/tool_recovery_plugin.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/src/gemcode/policy_profile.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/src/gemcode/pricing.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/src/gemcode/prompt_suggestions.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/src/gemcode/query/__init__.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/src/gemcode/query/config.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/src/gemcode/query/deps.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/src/gemcode/query/engine.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/src/gemcode/query/stop_hooks.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/src/gemcode/query/token_budget.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/src/gemcode/query/transitions.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/src/gemcode/query_sanitizer.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/src/gemcode/refine.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/src/gemcode/repl_commands.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/src/gemcode/repl_slash.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/src/gemcode/review_agent.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/src/gemcode/rules.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/src/gemcode/session_store.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/src/gemcode/session_summariser.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/src/gemcode/skills.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/src/gemcode/slash_commands.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/src/gemcode/thinking.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/src/gemcode/tool_prompt_manifest.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/src/gemcode/tool_registry.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/src/gemcode/tool_result_store.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/src/gemcode/tools/automations_tools.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/src/gemcode/tools/bash.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/src/gemcode/tools/browser.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/src/gemcode/tools/compress_memory.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/src/gemcode/tools/filesystem.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/src/gemcode/tools/notebook.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/src/gemcode/tools/notes.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/src/gemcode/tools/org_tools.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/src/gemcode/tools/repo_map.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/src/gemcode/tools/search.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/src/gemcode/tools/shell.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/src/gemcode/tools/shell_gate.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/src/gemcode/tools/skills.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/src/gemcode/tools/subtask.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/src/gemcode/tools/tasks.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/src/gemcode/tools/think.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/src/gemcode/tools/todo.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/src/gemcode/tools/user_choice.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/src/gemcode/tools/veomem_tools.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/src/gemcode/tools/web.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/src/gemcode/tools/web_search.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/src/gemcode/tools_inspector.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/src/gemcode/trust.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/src/gemcode/tui/input_handler.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/src/gemcode/tui/scrollback.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/src/gemcode/tui/spinner.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/src/gemcode/tui/welcome_banner.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/src/gemcode/tui/welcome_rich.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/src/gemcode/veomem_bridge.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/src/gemcode/version.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/src/gemcode/vertex.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/src/gemcode/wal.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/src/gemcode/web/__init__.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/src/gemcode/web/sse_adapter.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/src/gemcode/web/terminal_repl.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/src/gemcode/web/web_sse_compat.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/src/gemcode/workspace_hints.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/src/gemcode.egg-info/dependency_links.txt +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/src/gemcode.egg-info/entry_points.txt +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/src/gemcode.egg-info/requires.txt +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/src/gemcode.egg-info/top_level.txt +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/tests/test_add_dir.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/tests/test_agent_instruction.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/tests/test_agent_mesh.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/tests/test_autocompact.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/tests/test_automations.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/tests/test_capability_routing.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/tests/test_checkpoint_diff_command.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/tests/test_cli_init.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/tests/test_compress_memory_tool.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/tests/test_computer_use_permissions.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/tests/test_context_budget.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/tests/test_context_warning.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/tests/test_credentials.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/tests/test_eval_harness_layout.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/tests/test_event_bus.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/tests/test_fleet_reports.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/tests/test_ide_stdio_attachments.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/tests/test_interactive_permission_ask.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/tests/test_kaira_ipc_paths.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/tests/test_kaira_scheduler.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/tests/test_modality_tools.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/tests/test_model_error_retry.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/tests/test_model_errors.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/tests/test_model_routing.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/tests/test_multimodal_input.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/tests/test_output_styles_and_rules.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/tests/test_paths.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/tests/test_permissions.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/tests/test_prompt_suggestions.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/tests/test_repl_commands.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/tests/test_repl_slash.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/tests/test_session_runtime_cache.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/tests/test_skills.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/tests/test_slash_commands.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/tests/test_slash_completion_registry.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/tests/test_thinking_config.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/tests/test_token_budget.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/tests/test_tool_context_circulation.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/tests/test_tools.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/tests/test_tools_inspector.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/tests/test_web_sse_adapter.py +0 -0
- {gemcode-0.4.0 → gemcode-0.4.1}/tests/test_workspace_hints.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: gemcode
|
|
3
|
-
Version: 0.4.
|
|
3
|
+
Version: 0.4.1
|
|
4
4
|
Summary: Local-first coding agent on Google Gemini + ADK
|
|
5
5
|
Author: GemCode Contributors
|
|
6
6
|
License: Apache License
|
|
@@ -195,14 +195,18 @@ Dynamic: license-file
|
|
|
195
195
|
This document is the primary user-facing manual for GemCode. It explains the product at a high level and points to the subsystem-specific documentation pages that provide production-grade depth.
|
|
196
196
|
|
|
197
197
|
## What GemCode is
|
|
198
|
-
GemCode is a local-first coding agent built
|
|
199
|
-
- a configuration model
|
|
200
|
-
- a runtime runner
|
|
201
|
-
- a root language-model agent
|
|
202
|
-
- a configurable tool inventory
|
|
203
|
-
- project-local state under `.gemcode/`
|
|
198
|
+
GemCode is a local-first, self-evolving coding agent built on Google Gemini and the Agent Development Kit (ADK). It operates against a chosen project root and provides:
|
|
204
199
|
|
|
205
|
-
|
|
200
|
+
- **Autonomous multi-agent orchestration** — agents delegate, verify, and fix each other's work
|
|
201
|
+
- **Self-healing code** — changes are auto-verified; failures are auto-fixed
|
|
202
|
+
- **Self-evolving tools** — the agent creates new reusable tools from repeated patterns
|
|
203
|
+
- **Progressive learning** — gets smarter with every session (memory, skills, project map)
|
|
204
|
+
- **Scheduled habits** — agents wake up on cron/interval to run tests, audits, checks
|
|
205
|
+
- **Cross-machine agents** — expose/consume agents via Google A2A protocol
|
|
206
|
+
- **58 built-in tools** — filesystem, shell, web, search, memory, orchestration, synthesis
|
|
207
|
+
- **Full ADK integration** — native sub-agents, transfer_to_agent, output_key, workflow agents
|
|
208
|
+
|
|
209
|
+
All state lives under `.gemcode/` in the project root. No external services required beyond a Gemini API key.
|
|
206
210
|
|
|
207
211
|
## Runtime modes
|
|
208
212
|
|
|
@@ -331,14 +335,20 @@ Reference:
|
|
|
331
335
|
|
|
332
336
|
### Super mode (fully autonomous)
|
|
333
337
|
|
|
334
|
-
Use when you want GemCode to run
|
|
338
|
+
Use when you want GemCode to run with all powers unlocked and zero friction. In super mode:
|
|
339
|
+
- All capabilities auto-enable (memory, web search, agents, habits, triggers)
|
|
340
|
+
- Default org members auto-create (kaira + verifier)
|
|
341
|
+
- Habits auto-generate based on project type
|
|
342
|
+
- Auto-verification runs after risky changes
|
|
343
|
+
- No confirmation prompts for any operation
|
|
335
344
|
|
|
336
345
|
- **CLI:** `gemcode -C . --super "your task"`
|
|
337
346
|
- **Env:** `GEMCODE_SUPER_MODE=1`
|
|
338
|
-
- **REPL/TUI:** `/super` (use `/super off` to clear
|
|
339
|
-
|
|
347
|
+
- **REPL/TUI:** `/super` (use `/super off` to clear)
|
|
348
|
+
|
|
349
|
+
In normal mode, GemCode asks on first run: "Enable autonomous mode? [Y/n]"
|
|
340
350
|
|
|
341
|
-
Details
|
|
351
|
+
Details: [`../docs/orchestration.md`](../docs/orchestration.md).
|
|
342
352
|
|
|
343
353
|
## Common commands
|
|
344
354
|
|
|
@@ -367,17 +377,22 @@ gemcode kaira -C .
|
|
|
367
377
|
GemCode includes a built-in multi-agent orchestration system that works automatically — no separate daemon required.
|
|
368
378
|
|
|
369
379
|
**Key features:**
|
|
370
|
-
- **
|
|
380
|
+
- **Native ADK sub-agents** — org members are real ADK sub-agents with `transfer_to_agent` routing
|
|
381
|
+
- **Agent Mesh** — async background execution with full GemCode sessions per agent
|
|
371
382
|
- **Event Bus** — agents communicate via pub/sub (no Unix sockets needed)
|
|
372
|
-
- **Self-
|
|
383
|
+
- **Self-Healing** — closed loop: change → verify → fix → verify → done
|
|
384
|
+
- **Self-Triggers** — agents auto-activate on events (verification, failure recovery)
|
|
385
|
+
- **Tool Synthesis** — agent creates new reusable tools from repeated patterns
|
|
373
386
|
- **Delegation Learning** — remembers which agents succeed at which tasks
|
|
374
|
-
- **A2A Bridge** — expose/consume agents across machines via Google
|
|
387
|
+
- **A2A Bridge** — expose/consume agents across machines via Google A2A protocol
|
|
375
388
|
|
|
376
389
|
Quick example in the REPL:
|
|
377
390
|
```text
|
|
378
391
|
> Analyze the auth module. Delegate security review to the verifier.
|
|
379
392
|
```
|
|
380
|
-
The
|
|
393
|
+
The LLM calls `transfer_to_agent(agent_name='verifier')` → ADK routes natively → verifier runs → result saved to session state.
|
|
394
|
+
|
|
395
|
+
For background work: `org_delegate("kaira", "run tests")` → mesh runs kaira as a full GemCode session → result flows back via fleet reports.
|
|
381
396
|
|
|
382
397
|
Docs:
|
|
383
398
|
- [`../docs/orchestration.md`](../docs/orchestration.md)
|
|
@@ -428,6 +443,60 @@ Status note:
|
|
|
428
443
|
| `/agent assign <member> <task>` | Delegate work to a member |
|
|
429
444
|
| `/agent improve <member> <lessons>` | Improve a member's skill |
|
|
430
445
|
|
|
446
|
+
## Intelligence features (automatic)
|
|
447
|
+
|
|
448
|
+
These work without configuration. In super mode, everything is enabled silently. In normal mode, GemCode asks once on first run.
|
|
449
|
+
|
|
450
|
+
| Feature | How it works |
|
|
451
|
+
|---|---|
|
|
452
|
+
| **Codebase awareness** | Builds a persistent understanding of the project from every tool call — file structure, imports/exports, recent changes, learned facts. The agent starts each turn already knowing the project. |
|
|
453
|
+
| **Self-healing** | After file changes, auto-runs tests/lint. If they fail, auto-fixes (up to 2 attempts). Closed loop: change → verify → fix → verify → done. |
|
|
454
|
+
| **Tool synthesis** | When the agent repeats multi-step operations, it can create a reusable tool (bash/python script) stored in `.gemcode/synthesized_tools/`. |
|
|
455
|
+
| **Self-improving skills** | When a delegation succeeds, the member's skill file gets a "Learned pattern" appended. Future invocations benefit from past successes. |
|
|
456
|
+
| **Proactive memory** | After exploring 5+ files or running 3+ commands, key discoveries are auto-saved to curated memory. Future sessions start with this knowledge. |
|
|
457
|
+
| **Impact analysis** | When a file changes, GemCode knows which other files are affected (via import tracking + learned correlations). Self-healing runs only relevant tests. |
|
|
458
|
+
| **Auto-verification** | After 3+ file writes, the verifier agent auto-checks for syntax errors, broken imports, and logic bugs. |
|
|
459
|
+
| **Delegation suggestions** | `suggest_delegate(task)` recommends the best agent based on historical success patterns. |
|
|
460
|
+
| **Capability auto-enable** | If a project consistently uses web search or memory, those capabilities auto-enable in future sessions. |
|
|
461
|
+
|
|
462
|
+
## Tool Synthesis (self-evolving)
|
|
463
|
+
|
|
464
|
+
The agent can create new reusable tools when it detects repeated patterns:
|
|
465
|
+
|
|
466
|
+
```text
|
|
467
|
+
# Create a tool
|
|
468
|
+
synthesize_tool("run-tests", "Run pytest with coverage", "pytest --cov=src -q")
|
|
469
|
+
synthesize_tool("deploy-staging", "Deploy to staging", "git push origin main && ssh staging 'cd app && git pull'")
|
|
470
|
+
|
|
471
|
+
# Use it later
|
|
472
|
+
run_synthesized_tool("run-tests")
|
|
473
|
+
run_synthesized_tool("deploy-staging")
|
|
474
|
+
|
|
475
|
+
# List all synthesized tools
|
|
476
|
+
list_synthesized_tools()
|
|
477
|
+
```
|
|
478
|
+
|
|
479
|
+
Tools persist in `.gemcode/synthesized_tools/` across sessions.
|
|
480
|
+
|
|
481
|
+
## Agent Habits (scheduled tasks)
|
|
482
|
+
|
|
483
|
+
Agents can run recurring tasks on a schedule — no daemon needed, runs inside the main GemCode process.
|
|
484
|
+
|
|
485
|
+
```text
|
|
486
|
+
# From the agent (tools):
|
|
487
|
+
habits_add("test-watch", "kaira", "Run pytest -q and report", every_minutes=30)
|
|
488
|
+
habits_add("nightly-audit", "verifier", "Full security review", daily_at="02:00")
|
|
489
|
+
habits_add("hourly-status", "self", "Summarize recent changes", cron="0 * * * *")
|
|
490
|
+
|
|
491
|
+
# Management:
|
|
492
|
+
habits_list()
|
|
493
|
+
habits_pause("test-watch")
|
|
494
|
+
habits_resume("test-watch")
|
|
495
|
+
habits_remove("test-watch")
|
|
496
|
+
```
|
|
497
|
+
|
|
498
|
+
In super mode, GemCode auto-creates habits based on project type (test-watch for Python, lint-watch for Node).
|
|
499
|
+
|
|
431
500
|
Detailed behavior:
|
|
432
501
|
- [`../docs/cli-and-repl.md`](../docs/cli-and-repl.md)
|
|
433
502
|
|
|
@@ -435,15 +504,23 @@ Detailed behavior:
|
|
|
435
504
|
|
|
436
505
|
| Capability | What it adds |
|
|
437
506
|
|---|---|
|
|
438
|
-
|
|
|
439
|
-
|
|
|
440
|
-
| Self-
|
|
441
|
-
|
|
|
442
|
-
|
|
|
443
|
-
|
|
|
444
|
-
|
|
|
445
|
-
|
|
|
446
|
-
|
|
|
507
|
+
| **Codebase Awareness** | Persistent understanding of the project — structure graph, change journal, insight cache. Compounds over time, zero extra cost |
|
|
508
|
+
| **Agent Mesh** | In-process multi-agent orchestration — each agent is a full GemCode session with own workspace, memory, and persistent history |
|
|
509
|
+
| **Self-Healing** | Closed loop: change → verify → fix → verify → done. Code repairs itself automatically |
|
|
510
|
+
| **Tool Synthesis** | Agent creates new reusable tools at runtime from repeated patterns |
|
|
511
|
+
| **Agent Habits** | Scheduled recurring tasks (cron/interval/daily) — agents wake up and do work autonomously |
|
|
512
|
+
| **Self-Triggers** | Agents auto-activate on events (verification after changes, failure recovery) |
|
|
513
|
+
| **Self-Improving Skills** | Skills evolve — successful patterns are appended automatically |
|
|
514
|
+
| **Delegation Learning** | Remembers which agents succeed at which tasks, suggests optimal routing |
|
|
515
|
+
| **Proactive Memory** | Auto-saves important discoveries to curated memory without being asked |
|
|
516
|
+
| **A2A Bridge** | Cross-machine agent communication via Google A2A protocol |
|
|
517
|
+
| **Event Bus** | In-memory pub/sub for agent-to-agent communication |
|
|
518
|
+
| **Deep research** | Research-focused tool routing and optional dedicated model path |
|
|
519
|
+
| **Embeddings** | Semantic search and optional embedding-backed memory |
|
|
520
|
+
| **Memory** | Retrieval-oriented persistent memory across sessions |
|
|
521
|
+
| **Browser/computer use** | Playwright-backed browser automation and inspection |
|
|
522
|
+
| **Checkpoints** | File mutations are reversible — undo any agent edit |
|
|
523
|
+
| **Live audio** | Gemini Live microphone sessions (experimental) |
|
|
447
524
|
|
|
448
525
|
Detailed behavior:
|
|
449
526
|
- [`../docs/capabilities.md`](../docs/capabilities.md)
|
|
@@ -3,14 +3,18 @@
|
|
|
3
3
|
This document is the primary user-facing manual for GemCode. It explains the product at a high level and points to the subsystem-specific documentation pages that provide production-grade depth.
|
|
4
4
|
|
|
5
5
|
## What GemCode is
|
|
6
|
-
GemCode is a local-first coding agent built
|
|
7
|
-
- a configuration model
|
|
8
|
-
- a runtime runner
|
|
9
|
-
- a root language-model agent
|
|
10
|
-
- a configurable tool inventory
|
|
11
|
-
- project-local state under `.gemcode/`
|
|
6
|
+
GemCode is a local-first, self-evolving coding agent built on Google Gemini and the Agent Development Kit (ADK). It operates against a chosen project root and provides:
|
|
12
7
|
|
|
13
|
-
|
|
8
|
+
- **Autonomous multi-agent orchestration** — agents delegate, verify, and fix each other's work
|
|
9
|
+
- **Self-healing code** — changes are auto-verified; failures are auto-fixed
|
|
10
|
+
- **Self-evolving tools** — the agent creates new reusable tools from repeated patterns
|
|
11
|
+
- **Progressive learning** — gets smarter with every session (memory, skills, project map)
|
|
12
|
+
- **Scheduled habits** — agents wake up on cron/interval to run tests, audits, checks
|
|
13
|
+
- **Cross-machine agents** — expose/consume agents via Google A2A protocol
|
|
14
|
+
- **58 built-in tools** — filesystem, shell, web, search, memory, orchestration, synthesis
|
|
15
|
+
- **Full ADK integration** — native sub-agents, transfer_to_agent, output_key, workflow agents
|
|
16
|
+
|
|
17
|
+
All state lives under `.gemcode/` in the project root. No external services required beyond a Gemini API key.
|
|
14
18
|
|
|
15
19
|
## Runtime modes
|
|
16
20
|
|
|
@@ -139,14 +143,20 @@ Reference:
|
|
|
139
143
|
|
|
140
144
|
### Super mode (fully autonomous)
|
|
141
145
|
|
|
142
|
-
Use when you want GemCode to run
|
|
146
|
+
Use when you want GemCode to run with all powers unlocked and zero friction. In super mode:
|
|
147
|
+
- All capabilities auto-enable (memory, web search, agents, habits, triggers)
|
|
148
|
+
- Default org members auto-create (kaira + verifier)
|
|
149
|
+
- Habits auto-generate based on project type
|
|
150
|
+
- Auto-verification runs after risky changes
|
|
151
|
+
- No confirmation prompts for any operation
|
|
143
152
|
|
|
144
153
|
- **CLI:** `gemcode -C . --super "your task"`
|
|
145
154
|
- **Env:** `GEMCODE_SUPER_MODE=1`
|
|
146
|
-
- **REPL/TUI:** `/super` (use `/super off` to clear
|
|
147
|
-
|
|
155
|
+
- **REPL/TUI:** `/super` (use `/super off` to clear)
|
|
156
|
+
|
|
157
|
+
In normal mode, GemCode asks on first run: "Enable autonomous mode? [Y/n]"
|
|
148
158
|
|
|
149
|
-
Details
|
|
159
|
+
Details: [`../docs/orchestration.md`](../docs/orchestration.md).
|
|
150
160
|
|
|
151
161
|
## Common commands
|
|
152
162
|
|
|
@@ -175,17 +185,22 @@ gemcode kaira -C .
|
|
|
175
185
|
GemCode includes a built-in multi-agent orchestration system that works automatically — no separate daemon required.
|
|
176
186
|
|
|
177
187
|
**Key features:**
|
|
178
|
-
- **
|
|
188
|
+
- **Native ADK sub-agents** — org members are real ADK sub-agents with `transfer_to_agent` routing
|
|
189
|
+
- **Agent Mesh** — async background execution with full GemCode sessions per agent
|
|
179
190
|
- **Event Bus** — agents communicate via pub/sub (no Unix sockets needed)
|
|
180
|
-
- **Self-
|
|
191
|
+
- **Self-Healing** — closed loop: change → verify → fix → verify → done
|
|
192
|
+
- **Self-Triggers** — agents auto-activate on events (verification, failure recovery)
|
|
193
|
+
- **Tool Synthesis** — agent creates new reusable tools from repeated patterns
|
|
181
194
|
- **Delegation Learning** — remembers which agents succeed at which tasks
|
|
182
|
-
- **A2A Bridge** — expose/consume agents across machines via Google
|
|
195
|
+
- **A2A Bridge** — expose/consume agents across machines via Google A2A protocol
|
|
183
196
|
|
|
184
197
|
Quick example in the REPL:
|
|
185
198
|
```text
|
|
186
199
|
> Analyze the auth module. Delegate security review to the verifier.
|
|
187
200
|
```
|
|
188
|
-
The
|
|
201
|
+
The LLM calls `transfer_to_agent(agent_name='verifier')` → ADK routes natively → verifier runs → result saved to session state.
|
|
202
|
+
|
|
203
|
+
For background work: `org_delegate("kaira", "run tests")` → mesh runs kaira as a full GemCode session → result flows back via fleet reports.
|
|
189
204
|
|
|
190
205
|
Docs:
|
|
191
206
|
- [`../docs/orchestration.md`](../docs/orchestration.md)
|
|
@@ -236,6 +251,60 @@ Status note:
|
|
|
236
251
|
| `/agent assign <member> <task>` | Delegate work to a member |
|
|
237
252
|
| `/agent improve <member> <lessons>` | Improve a member's skill |
|
|
238
253
|
|
|
254
|
+
## Intelligence features (automatic)
|
|
255
|
+
|
|
256
|
+
These work without configuration. In super mode, everything is enabled silently. In normal mode, GemCode asks once on first run.
|
|
257
|
+
|
|
258
|
+
| Feature | How it works |
|
|
259
|
+
|---|---|
|
|
260
|
+
| **Codebase awareness** | Builds a persistent understanding of the project from every tool call — file structure, imports/exports, recent changes, learned facts. The agent starts each turn already knowing the project. |
|
|
261
|
+
| **Self-healing** | After file changes, auto-runs tests/lint. If they fail, auto-fixes (up to 2 attempts). Closed loop: change → verify → fix → verify → done. |
|
|
262
|
+
| **Tool synthesis** | When the agent repeats multi-step operations, it can create a reusable tool (bash/python script) stored in `.gemcode/synthesized_tools/`. |
|
|
263
|
+
| **Self-improving skills** | When a delegation succeeds, the member's skill file gets a "Learned pattern" appended. Future invocations benefit from past successes. |
|
|
264
|
+
| **Proactive memory** | After exploring 5+ files or running 3+ commands, key discoveries are auto-saved to curated memory. Future sessions start with this knowledge. |
|
|
265
|
+
| **Impact analysis** | When a file changes, GemCode knows which other files are affected (via import tracking + learned correlations). Self-healing runs only relevant tests. |
|
|
266
|
+
| **Auto-verification** | After 3+ file writes, the verifier agent auto-checks for syntax errors, broken imports, and logic bugs. |
|
|
267
|
+
| **Delegation suggestions** | `suggest_delegate(task)` recommends the best agent based on historical success patterns. |
|
|
268
|
+
| **Capability auto-enable** | If a project consistently uses web search or memory, those capabilities auto-enable in future sessions. |
|
|
269
|
+
|
|
270
|
+
## Tool Synthesis (self-evolving)
|
|
271
|
+
|
|
272
|
+
The agent can create new reusable tools when it detects repeated patterns:
|
|
273
|
+
|
|
274
|
+
```text
|
|
275
|
+
# Create a tool
|
|
276
|
+
synthesize_tool("run-tests", "Run pytest with coverage", "pytest --cov=src -q")
|
|
277
|
+
synthesize_tool("deploy-staging", "Deploy to staging", "git push origin main && ssh staging 'cd app && git pull'")
|
|
278
|
+
|
|
279
|
+
# Use it later
|
|
280
|
+
run_synthesized_tool("run-tests")
|
|
281
|
+
run_synthesized_tool("deploy-staging")
|
|
282
|
+
|
|
283
|
+
# List all synthesized tools
|
|
284
|
+
list_synthesized_tools()
|
|
285
|
+
```
|
|
286
|
+
|
|
287
|
+
Tools persist in `.gemcode/synthesized_tools/` across sessions.
|
|
288
|
+
|
|
289
|
+
## Agent Habits (scheduled tasks)
|
|
290
|
+
|
|
291
|
+
Agents can run recurring tasks on a schedule — no daemon needed, runs inside the main GemCode process.
|
|
292
|
+
|
|
293
|
+
```text
|
|
294
|
+
# From the agent (tools):
|
|
295
|
+
habits_add("test-watch", "kaira", "Run pytest -q and report", every_minutes=30)
|
|
296
|
+
habits_add("nightly-audit", "verifier", "Full security review", daily_at="02:00")
|
|
297
|
+
habits_add("hourly-status", "self", "Summarize recent changes", cron="0 * * * *")
|
|
298
|
+
|
|
299
|
+
# Management:
|
|
300
|
+
habits_list()
|
|
301
|
+
habits_pause("test-watch")
|
|
302
|
+
habits_resume("test-watch")
|
|
303
|
+
habits_remove("test-watch")
|
|
304
|
+
```
|
|
305
|
+
|
|
306
|
+
In super mode, GemCode auto-creates habits based on project type (test-watch for Python, lint-watch for Node).
|
|
307
|
+
|
|
239
308
|
Detailed behavior:
|
|
240
309
|
- [`../docs/cli-and-repl.md`](../docs/cli-and-repl.md)
|
|
241
310
|
|
|
@@ -243,15 +312,23 @@ Detailed behavior:
|
|
|
243
312
|
|
|
244
313
|
| Capability | What it adds |
|
|
245
314
|
|---|---|
|
|
246
|
-
|
|
|
247
|
-
|
|
|
248
|
-
| Self-
|
|
249
|
-
|
|
|
250
|
-
|
|
|
251
|
-
|
|
|
252
|
-
|
|
|
253
|
-
|
|
|
254
|
-
|
|
|
315
|
+
| **Codebase Awareness** | Persistent understanding of the project — structure graph, change journal, insight cache. Compounds over time, zero extra cost |
|
|
316
|
+
| **Agent Mesh** | In-process multi-agent orchestration — each agent is a full GemCode session with own workspace, memory, and persistent history |
|
|
317
|
+
| **Self-Healing** | Closed loop: change → verify → fix → verify → done. Code repairs itself automatically |
|
|
318
|
+
| **Tool Synthesis** | Agent creates new reusable tools at runtime from repeated patterns |
|
|
319
|
+
| **Agent Habits** | Scheduled recurring tasks (cron/interval/daily) — agents wake up and do work autonomously |
|
|
320
|
+
| **Self-Triggers** | Agents auto-activate on events (verification after changes, failure recovery) |
|
|
321
|
+
| **Self-Improving Skills** | Skills evolve — successful patterns are appended automatically |
|
|
322
|
+
| **Delegation Learning** | Remembers which agents succeed at which tasks, suggests optimal routing |
|
|
323
|
+
| **Proactive Memory** | Auto-saves important discoveries to curated memory without being asked |
|
|
324
|
+
| **A2A Bridge** | Cross-machine agent communication via Google A2A protocol |
|
|
325
|
+
| **Event Bus** | In-memory pub/sub for agent-to-agent communication |
|
|
326
|
+
| **Deep research** | Research-focused tool routing and optional dedicated model path |
|
|
327
|
+
| **Embeddings** | Semantic search and optional embedding-backed memory |
|
|
328
|
+
| **Memory** | Retrieval-oriented persistent memory across sessions |
|
|
329
|
+
| **Browser/computer use** | Playwright-backed browser automation and inspection |
|
|
330
|
+
| **Checkpoints** | File mutations are reversible — undo any agent edit |
|
|
331
|
+
| **Live audio** | Gemini Live microphone sessions (experimental) |
|
|
255
332
|
|
|
256
333
|
Detailed behavior:
|
|
257
334
|
- [`../docs/capabilities.md`](../docs/capabilities.md)
|
|
@@ -1287,37 +1287,90 @@ def build_root_agent(
|
|
|
1287
1287
|
sub_agents = []
|
|
1288
1288
|
if getattr(cfg, "enable_adk_agent_transfer", True) and _tools is None:
|
|
1289
1289
|
try:
|
|
1290
|
-
|
|
1291
|
-
|
|
1292
|
-
|
|
1293
|
-
|
|
1294
|
-
|
|
1295
|
-
|
|
1296
|
-
|
|
1297
|
-
|
|
1298
|
-
|
|
1299
|
-
|
|
1300
|
-
)
|
|
1301
|
-
|
|
1302
|
-
|
|
1303
|
-
|
|
1304
|
-
|
|
1305
|
-
|
|
1306
|
-
|
|
1307
|
-
|
|
1308
|
-
|
|
1309
|
-
|
|
1310
|
-
|
|
1311
|
-
|
|
1312
|
-
|
|
1313
|
-
|
|
1314
|
-
|
|
1315
|
-
|
|
1316
|
-
|
|
1317
|
-
|
|
1318
|
-
|
|
1319
|
-
|
|
1320
|
-
|
|
1290
|
+
from gemcode.org import list_members, resolve_fleet_root
|
|
1291
|
+
|
|
1292
|
+
fleet_root = resolve_fleet_root(cfg.project_root)
|
|
1293
|
+
members = list_members(fleet_root)
|
|
1294
|
+
|
|
1295
|
+
for m in members:
|
|
1296
|
+
# Build a specialized sub-agent for each org member
|
|
1297
|
+
member_tools = build_function_tools(cfg, include_subtask=False)
|
|
1298
|
+
|
|
1299
|
+
# Restrict tools based on member kind
|
|
1300
|
+
if m.kind == "subagent" and m.name in ("verifier", "reviewer"):
|
|
1301
|
+
# Verifiers don't need write tools
|
|
1302
|
+
member_tools = [t for t in member_tools if getattr(t, "__name__", "") not in (
|
|
1303
|
+
"write_file", "search_replace", "delete_file", "move_file",
|
|
1304
|
+
)]
|
|
1305
|
+
|
|
1306
|
+
# Build instruction from member's skill if available
|
|
1307
|
+
member_instruction = (
|
|
1308
|
+
f"You are {m.name} ({m.title}).\n"
|
|
1309
|
+
f"Role: {m.description or 'General assistant'}\n"
|
|
1310
|
+
f"Reports to: {m.reports_to or 'manager'}\n\n"
|
|
1311
|
+
"Complete assigned tasks concisely. Return structured JSON when possible.\n"
|
|
1312
|
+
)
|
|
1313
|
+
|
|
1314
|
+
# Load skill content if available
|
|
1315
|
+
if m.skill_name:
|
|
1316
|
+
try:
|
|
1317
|
+
skill = load_skill(fleet_root, m.skill_name)
|
|
1318
|
+
if skill is not None:
|
|
1319
|
+
member_instruction += "\n" + expand_skill_text(skill, arguments="", session_id="")
|
|
1320
|
+
except Exception:
|
|
1321
|
+
pass
|
|
1322
|
+
|
|
1323
|
+
member_agent = LlmAgent(
|
|
1324
|
+
name=m.name,
|
|
1325
|
+
model=getattr(cfg, "model_alt", None) or cfg.model,
|
|
1326
|
+
description=m.description or f"{m.name} — {m.title}",
|
|
1327
|
+
instruction=member_instruction,
|
|
1328
|
+
tools=member_tools,
|
|
1329
|
+
generate_content_config=gen_cfg,
|
|
1330
|
+
output_key=f"agent_{m.name}_result",
|
|
1331
|
+
**cb_kwargs,
|
|
1332
|
+
)
|
|
1333
|
+
sub_agents.append(member_agent)
|
|
1334
|
+
|
|
1335
|
+
# If no org members exist, create default explorer + verifier
|
|
1336
|
+
if not sub_agents:
|
|
1337
|
+
explorer_tools = build_function_tools(cfg, include_subtask=False)
|
|
1338
|
+
explorer_tools = [t for t in explorer_tools if getattr(t, "__name__", "") not in (
|
|
1339
|
+
"write_file", "search_replace", "delete_file", "move_file", "bash", "run_command",
|
|
1340
|
+
)]
|
|
1341
|
+
explorer = LlmAgent(
|
|
1342
|
+
name="explorer",
|
|
1343
|
+
model=getattr(cfg, "model_alt", None) or cfg.model,
|
|
1344
|
+
description="Quickly maps the codebase and finds relevant files/symbols.",
|
|
1345
|
+
instruction=(
|
|
1346
|
+
"You are Explorer. Your job is to quickly map the codebase and answer: "
|
|
1347
|
+
"what files/symbols matter and where to look next. Use read-only tools only. "
|
|
1348
|
+
"Return concise findings with file paths and symbol names."
|
|
1349
|
+
),
|
|
1350
|
+
tools=explorer_tools,
|
|
1351
|
+
generate_content_config=gen_cfg,
|
|
1352
|
+
output_key="explorer_result",
|
|
1353
|
+
**cb_kwargs,
|
|
1354
|
+
)
|
|
1355
|
+
verifier_tools = build_function_tools(cfg, include_subtask=False)
|
|
1356
|
+
verifier_tools = [t for t in verifier_tools if getattr(t, "__name__", "") not in (
|
|
1357
|
+
"write_file", "search_replace", "delete_file", "move_file",
|
|
1358
|
+
)]
|
|
1359
|
+
verifier = LlmAgent(
|
|
1360
|
+
name="verifier",
|
|
1361
|
+
model=getattr(cfg, "model_alt", None) or cfg.model,
|
|
1362
|
+
description="Verifies changes: runs checks/tests, spots inconsistencies, reports PASS/FAIL.",
|
|
1363
|
+
instruction=(
|
|
1364
|
+
"You are Verifier. Your job is to verify changes: run checks/tests when needed, "
|
|
1365
|
+
"spot inconsistencies, and report PASS/FAIL with concrete evidence. "
|
|
1366
|
+
"Prefer minimal commands and short outputs."
|
|
1367
|
+
),
|
|
1368
|
+
tools=verifier_tools,
|
|
1369
|
+
generate_content_config=gen_cfg,
|
|
1370
|
+
output_key="verifier_result",
|
|
1371
|
+
**cb_kwargs,
|
|
1372
|
+
)
|
|
1373
|
+
sub_agents = [explorer, verifier]
|
|
1321
1374
|
except Exception:
|
|
1322
1375
|
sub_agents = []
|
|
1323
1376
|
|
|
@@ -1327,8 +1380,8 @@ def build_root_agent(
|
|
|
1327
1380
|
instruction=build_instruction(cfg),
|
|
1328
1381
|
tools=tools,
|
|
1329
1382
|
generate_content_config=gen_cfg,
|
|
1330
|
-
# ADK expects a list; passing None can fail validation on some versions.
|
|
1331
1383
|
sub_agents=sub_agents,
|
|
1384
|
+
output_key="gemcode_last_output",
|
|
1332
1385
|
**cb_kwargs,
|
|
1333
1386
|
)
|
|
1334
1387
|
|