From 263a838d317bcde18bf1ba2c905b01d1abf2a3b6 Mon Sep 17 00:00:00 2001 From: "Dhanji R. Prasanna" Date: Mon, 2 Feb 2026 17:19:01 +1100 Subject: [PATCH] Remove redundant 'No plan exists' message from plan_read output The UI already shows 'empty' via print_plan_compact, so returning an empty string avoids duplicate output. --- analysis/deps/graph.json | 2300 +++-------------- analysis/deps/graph.summary.md | 151 +- analysis/deps/layers.observed.md | 194 +- analysis/deps/sccs.md | 100 +- crates/g3-core/src/tools/plan.rs | 2 +- .../tests/tool_execution_roundtrip_test.rs | 5 +- 6 files changed, 634 insertions(+), 2118 deletions(-) diff --git a/analysis/deps/graph.json b/analysis/deps/graph.json index a56bb27..7bc0c82 100644 --- a/analysis/deps/graph.json +++ b/analysis/deps/graph.json @@ -1,1976 +1,344 @@ { "metadata": { "generated_by": "euler structural analysis agent", + "generated_at": "2025-02-02T17:30:00Z", "workspace": "g3", - "node_count": 108, - "edge_count": 186, + "node_count": 127, + "edge_count": 218, "crate_count": 9, - "file_count": 99 + "file_count": 118, + "extraction_method": "static import parsing via ripgrep" }, "nodes": [ - { - "id": "crate:g3", - "type": "crate", - "name": "g3", - "path": "." - }, - { - "id": "crate:g3-cli", - "type": "crate", - "name": "g3-cli", - "path": "crates/g3-cli" - }, - { - "id": "crate:g3-core", - "type": "crate", - "name": "g3-core", - "path": "crates/g3-core" - }, - { - "id": "crate:g3-providers", - "type": "crate", - "name": "g3-providers", - "path": "crates/g3-providers" - }, - { - "id": "crate:g3-config", - "type": "crate", - "name": "g3-config", - "path": "crates/g3-config" - }, - { - "id": "crate:g3-execution", - "type": "crate", - "name": "g3-execution", - "path": "crates/g3-execution" - }, - { - "id": "crate:g3-planner", - "type": "crate", - "name": "g3-planner", - "path": "crates/g3-planner" - }, - { - "id": "crate:g3-computer-control", - "type": "crate", - "name": "g3-computer-control", - "path": "crates/g3-computer-control" - }, - { - "id": "crate:studio", - "type": "crate", - "name": "studio", - "path": "crates/studio" - }, - { - "id": "file:crates/g3-cli/src/accumulative.rs", - "type": "file", - "name": "accumulative.rs", - "path": "crates/g3-cli/src/accumulative.rs", - "crate": "g3-cli", - "module": "accumulative" - }, - { - "id": "file:crates/g3-cli/src/agent_mode.rs", - "type": "file", - "name": "agent_mode.rs", - "path": "crates/g3-cli/src/agent_mode.rs", - "crate": "g3-cli", - "module": "agent_mode" - }, - { - "id": "file:crates/g3-cli/src/autonomous.rs", - "type": "file", - "name": "autonomous.rs", - "path": "crates/g3-cli/src/autonomous.rs", - "crate": "g3-cli", - "module": "autonomous" - }, - { - "id": "file:crates/g3-cli/src/cli_args.rs", - "type": "file", - "name": "cli_args.rs", - "path": "crates/g3-cli/src/cli_args.rs", - "crate": "g3-cli", - "module": "cli_args" - }, - { - "id": "file:crates/g3-cli/src/coach_feedback.rs", - "type": "file", - "name": "coach_feedback.rs", - "path": "crates/g3-cli/src/coach_feedback.rs", - "crate": "g3-cli", - "module": "coach_feedback" - }, - { - "id": "file:crates/g3-cli/src/commands.rs", - "type": "file", - "name": "commands.rs", - "path": "crates/g3-cli/src/commands.rs", - "crate": "g3-cli", - "module": "commands" - }, - { - "id": "file:crates/g3-cli/src/completion.rs", - "type": "file", - "name": "completion.rs", - "path": "crates/g3-cli/src/completion.rs", - "crate": "g3-cli", - "module": "completion" - }, - { - "id": "file:crates/g3-cli/src/display.rs", - "type": "file", - "name": "display.rs", - "path": "crates/g3-cli/src/display.rs", - "crate": "g3-cli", - "module": "display" - }, - { - "id": "file:crates/g3-cli/src/embedded_agents.rs", - "type": "file", - "name": "embedded_agents.rs", - "path": "crates/g3-cli/src/embedded_agents.rs", - "crate": "g3-cli", - "module": "embedded_agents" - }, - { - "id": "file:crates/g3-cli/src/filter_json.rs", - "type": "file", - "name": "filter_json.rs", - "path": "crates/g3-cli/src/filter_json.rs", - "crate": "g3-cli", - "module": "filter_json" - }, - { - "id": "file:crates/g3-cli/src/g3_status.rs", - "type": "file", - "name": "g3_status.rs", - "path": "crates/g3-cli/src/g3_status.rs", - "crate": "g3-cli", - "module": "g3_status" - }, - { - "id": "file:crates/g3-cli/src/interactive.rs", - "type": "file", - "name": "interactive.rs", - "path": "crates/g3-cli/src/interactive.rs", - "crate": "g3-cli", - "module": "interactive" - }, - { - "id": "file:crates/g3-cli/src/language_prompts.rs", - "type": "file", - "name": "language_prompts.rs", - "path": "crates/g3-cli/src/language_prompts.rs", - "crate": "g3-cli", - "module": "language_prompts" - }, - { - "id": "file:crates/g3-cli/src/lib.rs", - "type": "file", - "name": "lib.rs", - "path": "crates/g3-cli/src/lib.rs", - "crate": "g3-cli", - "module": null - }, - { - "id": "file:crates/g3-cli/src/metrics.rs", - "type": "file", - "name": "metrics.rs", - "path": "crates/g3-cli/src/metrics.rs", - "crate": "g3-cli", - "module": "metrics" - }, - { - "id": "file:crates/g3-cli/src/project.rs", - "type": "file", - "name": "project.rs", - "path": "crates/g3-cli/src/project.rs", - "crate": "g3-cli", - "module": "project" - }, - { - "id": "file:crates/g3-cli/src/project_files.rs", - "type": "file", - "name": "project_files.rs", - "path": "crates/g3-cli/src/project_files.rs", - "crate": "g3-cli", - "module": "project_files" - }, - { - "id": "file:crates/g3-cli/src/simple_output.rs", - "type": "file", - "name": "simple_output.rs", - "path": "crates/g3-cli/src/simple_output.rs", - "crate": "g3-cli", - "module": "simple_output" - }, - { - "id": "file:crates/g3-cli/src/streaming_markdown.rs", - "type": "file", - "name": "streaming_markdown.rs", - "path": "crates/g3-cli/src/streaming_markdown.rs", - "crate": "g3-cli", - "module": "streaming_markdown" - }, - { - "id": "file:crates/g3-cli/src/task_execution.rs", - "type": "file", - "name": "task_execution.rs", - "path": "crates/g3-cli/src/task_execution.rs", - "crate": "g3-cli", - "module": "task_execution" - }, - { - "id": "file:crates/g3-cli/src/template.rs", - "type": "file", - "name": "template.rs", - "path": "crates/g3-cli/src/template.rs", - "crate": "g3-cli", - "module": "template" - }, - { - "id": "file:crates/g3-cli/src/theme.rs", - "type": "file", - "name": "theme.rs", - "path": "crates/g3-cli/src/theme.rs", - "crate": "g3-cli", - "module": "theme" - }, - { - "id": "file:crates/g3-cli/src/ui_writer_impl.rs", - "type": "file", - "name": "ui_writer_impl.rs", - "path": "crates/g3-cli/src/ui_writer_impl.rs", - "crate": "g3-cli", - "module": "ui_writer_impl" - }, - { - "id": "file:crates/g3-cli/src/utils.rs", - "type": "file", - "name": "utils.rs", - "path": "crates/g3-cli/src/utils.rs", - "crate": "g3-cli", - "module": "utils" - }, - { - "id": "file:crates/g3-computer-control/src/lib.rs", - "type": "file", - "name": "lib.rs", - "path": "crates/g3-computer-control/src/lib.rs", - "crate": "g3-computer-control", - "module": null - }, - { - "id": "file:crates/g3-computer-control/src/platform/linux.rs", - "type": "file", - "name": "linux.rs", - "path": "crates/g3-computer-control/src/platform/linux.rs", - "crate": "g3-computer-control", - "module": "platform/linux" - }, - { - "id": "file:crates/g3-computer-control/src/platform/macos.rs", - "type": "file", - "name": "macos.rs", - "path": "crates/g3-computer-control/src/platform/macos.rs", - "crate": "g3-computer-control", - "module": "platform/macos" - }, - { - "id": "file:crates/g3-computer-control/src/platform/macos_window_matching_test.rs", - "type": "file", - "name": "macos_window_matching_test.rs", - "path": "crates/g3-computer-control/src/platform/macos_window_matching_test.rs", - "crate": "g3-computer-control", - "module": "platform/macos_window_matching_test" - }, - { - "id": "file:crates/g3-computer-control/src/platform/mod.rs", - "type": "file", - "name": "mod.rs", - "path": "crates/g3-computer-control/src/platform/mod.rs", - "crate": "g3-computer-control", - "module": "platform" - }, - { - "id": "file:crates/g3-computer-control/src/platform/windows.rs", - "type": "file", - "name": "windows.rs", - "path": "crates/g3-computer-control/src/platform/windows.rs", - "crate": "g3-computer-control", - "module": "platform/windows" - }, - { - "id": "file:crates/g3-computer-control/src/types.rs", - "type": "file", - "name": "types.rs", - "path": "crates/g3-computer-control/src/types.rs", - "crate": "g3-computer-control", - "module": "types" - }, - { - "id": "file:crates/g3-computer-control/src/webdriver/chrome.rs", - "type": "file", - "name": "chrome.rs", - "path": "crates/g3-computer-control/src/webdriver/chrome.rs", - "crate": "g3-computer-control", - "module": "webdriver/chrome" - }, - { - "id": "file:crates/g3-computer-control/src/webdriver/diagnostics.rs", - "type": "file", - "name": "diagnostics.rs", - "path": "crates/g3-computer-control/src/webdriver/diagnostics.rs", - "crate": "g3-computer-control", - "module": "webdriver/diagnostics" - }, - { - "id": "file:crates/g3-computer-control/src/webdriver/mod.rs", - "type": "file", - "name": "mod.rs", - "path": "crates/g3-computer-control/src/webdriver/mod.rs", - "crate": "g3-computer-control", - "module": "webdriver" - }, - { - "id": "file:crates/g3-computer-control/src/webdriver/safari.rs", - "type": "file", - "name": "safari.rs", - "path": "crates/g3-computer-control/src/webdriver/safari.rs", - "crate": "g3-computer-control", - "module": "webdriver/safari" - }, - { - "id": "file:crates/g3-config/src/lib.rs", - "type": "file", - "name": "lib.rs", - "path": "crates/g3-config/src/lib.rs", - "crate": "g3-config", - "module": null - }, - { - "id": "file:crates/g3-config/src/tests.rs", - "type": "file", - "name": "tests.rs", - "path": "crates/g3-config/src/tests.rs", - "crate": "g3-config", - "module": "tests" - }, - { - "id": "file:crates/g3-core/src/acd.rs", - "type": "file", - "name": "acd.rs", - "path": "crates/g3-core/src/acd.rs", - "crate": "g3-core", - "module": "acd" - }, - { - "id": "file:crates/g3-core/src/background_process.rs", - "type": "file", - "name": "background_process.rs", - "path": "crates/g3-core/src/background_process.rs", - "crate": "g3-core", - "module": "background_process" - }, - { - "id": "file:crates/g3-core/src/code_search/mod.rs", - "type": "file", - "name": "mod.rs", - "path": "crates/g3-core/src/code_search/mod.rs", - "crate": "g3-core", - "module": "code_search" - }, - { - "id": "file:crates/g3-core/src/code_search/searcher.rs", - "type": "file", - "name": "searcher.rs", - "path": "crates/g3-core/src/code_search/searcher.rs", - "crate": "g3-core", - "module": "code_search/searcher" - }, - { - "id": "file:crates/g3-core/src/compaction.rs", - "type": "file", - "name": "compaction.rs", - "path": "crates/g3-core/src/compaction.rs", - "crate": "g3-core", - "module": "compaction" - }, - { - "id": "file:crates/g3-core/src/context_window.rs", - "type": "file", - "name": "context_window.rs", - "path": "crates/g3-core/src/context_window.rs", - "crate": "g3-core", - "module": "context_window" - }, - { - "id": "file:crates/g3-core/src/error_handling.rs", - "type": "file", - "name": "error_handling.rs", - "path": "crates/g3-core/src/error_handling.rs", - "crate": "g3-core", - "module": "error_handling" - }, - { - "id": "file:crates/g3-core/src/error_handling_test.rs", - "type": "file", - "name": "error_handling_test.rs", - "path": "crates/g3-core/src/error_handling_test.rs", - "crate": "g3-core", - "module": "error_handling_test" - }, - { - "id": "file:crates/g3-core/src/feedback_extraction.rs", - "type": "file", - "name": "feedback_extraction.rs", - "path": "crates/g3-core/src/feedback_extraction.rs", - "crate": "g3-core", - "module": "feedback_extraction" - }, - { - "id": "file:crates/g3-core/src/lib.rs", - "type": "file", - "name": "lib.rs", - "path": "crates/g3-core/src/lib.rs", - "crate": "g3-core", - "module": null - }, - { - "id": "file:crates/g3-core/src/paths.rs", - "type": "file", - "name": "paths.rs", - "path": "crates/g3-core/src/paths.rs", - "crate": "g3-core", - "module": "paths" - }, - { - "id": "file:crates/g3-core/src/project.rs", - "type": "file", - "name": "project.rs", - "path": "crates/g3-core/src/project.rs", - "crate": "g3-core", - "module": "project" - }, - { - "id": "file:crates/g3-core/src/prompts.rs", - "type": "file", - "name": "prompts.rs", - "path": "crates/g3-core/src/prompts.rs", - "crate": "g3-core", - "module": "prompts" - }, - { - "id": "file:crates/g3-core/src/provider_config.rs", - "type": "file", - "name": "provider_config.rs", - "path": "crates/g3-core/src/provider_config.rs", - "crate": "g3-core", - "module": "provider_config" - }, - { - "id": "file:crates/g3-core/src/provider_registration.rs", - "type": "file", - "name": "provider_registration.rs", - "path": "crates/g3-core/src/provider_registration.rs", - "crate": "g3-core", - "module": "provider_registration" - }, - { - "id": "file:crates/g3-core/src/retry.rs", - "type": "file", - "name": "retry.rs", - "path": "crates/g3-core/src/retry.rs", - "crate": "g3-core", - "module": "retry" - }, - { - "id": "file:crates/g3-core/src/session.rs", - "type": "file", - "name": "session.rs", - "path": "crates/g3-core/src/session.rs", - "crate": "g3-core", - "module": "session" - }, - { - "id": "file:crates/g3-core/src/session_continuation.rs", - "type": "file", - "name": "session_continuation.rs", - "path": "crates/g3-core/src/session_continuation.rs", - "crate": "g3-core", - "module": "session_continuation" - }, - { - "id": "file:crates/g3-core/src/stats.rs", - "type": "file", - "name": "stats.rs", - "path": "crates/g3-core/src/stats.rs", - "crate": "g3-core", - "module": "stats" - }, - { - "id": "file:crates/g3-core/src/streaming.rs", - "type": "file", - "name": "streaming.rs", - "path": "crates/g3-core/src/streaming.rs", - "crate": "g3-core", - "module": "streaming" - }, - { - "id": "file:crates/g3-core/src/streaming_parser.rs", - "type": "file", - "name": "streaming_parser.rs", - "path": "crates/g3-core/src/streaming_parser.rs", - "crate": "g3-core", - "module": "streaming_parser" - }, - { - "id": "file:crates/g3-core/src/take_screenshot_test.rs", - "type": "file", - "name": "take_screenshot_test.rs", - "path": "crates/g3-core/src/take_screenshot_test.rs", - "crate": "g3-core", - "module": "take_screenshot_test" - }, - { - "id": "file:crates/g3-core/src/task_result.rs", - "type": "file", - "name": "task_result.rs", - "path": "crates/g3-core/src/task_result.rs", - "crate": "g3-core", - "module": "task_result" - }, - { - "id": "file:crates/g3-core/src/task_result_comprehensive_tests.rs", - "type": "file", - "name": "task_result_comprehensive_tests.rs", - "path": "crates/g3-core/src/task_result_comprehensive_tests.rs", - "crate": "g3-core", - "module": "task_result_comprehensive_tests" - }, - { - "id": "file:crates/g3-core/src/task_result_tests.rs", - "type": "file", - "name": "task_result_tests.rs", - "path": "crates/g3-core/src/task_result_tests.rs", - "crate": "g3-core", - "module": "task_result_tests" - }, - { - "id": "file:crates/g3-core/src/tilde_expansion_tests.rs", - "type": "file", - "name": "tilde_expansion_tests.rs", - "path": "crates/g3-core/src/tilde_expansion_tests.rs", - "crate": "g3-core", - "module": "tilde_expansion_tests" - }, - { - "id": "file:crates/g3-core/src/tool_definitions.rs", - "type": "file", - "name": "tool_definitions.rs", - "path": "crates/g3-core/src/tool_definitions.rs", - "crate": "g3-core", - "module": "tool_definitions" - }, - { - "id": "file:crates/g3-core/src/tool_dispatch.rs", - "type": "file", - "name": "tool_dispatch.rs", - "path": "crates/g3-core/src/tool_dispatch.rs", - "crate": "g3-core", - "module": "tool_dispatch" - }, - { - "id": "file:crates/g3-core/src/tools/acd.rs", - "type": "file", - "name": "acd.rs", - "path": "crates/g3-core/src/tools/acd.rs", - "crate": "g3-core", - "module": "tools/acd" - }, - { - "id": "file:crates/g3-core/src/tools/executor.rs", - "type": "file", - "name": "executor.rs", - "path": "crates/g3-core/src/tools/executor.rs", - "crate": "g3-core", - "module": "tools/executor" - }, - { - "id": "file:crates/g3-core/src/tools/file_ops.rs", - "type": "file", - "name": "file_ops.rs", - "path": "crates/g3-core/src/tools/file_ops.rs", - "crate": "g3-core", - "module": "tools/file_ops" - }, - { - "id": "file:crates/g3-core/src/tools/memory.rs", - "type": "file", - "name": "memory.rs", - "path": "crates/g3-core/src/tools/memory.rs", - "crate": "g3-core", - "module": "tools/memory" - }, - { - "id": "file:crates/g3-core/src/tools/misc.rs", - "type": "file", - "name": "misc.rs", - "path": "crates/g3-core/src/tools/misc.rs", - "crate": "g3-core", - "module": "tools/misc" - }, - { - "id": "file:crates/g3-core/src/tools/mod.rs", - "type": "file", - "name": "mod.rs", - "path": "crates/g3-core/src/tools/mod.rs", - "crate": "g3-core", - "module": "tools" - }, - { - "id": "file:crates/g3-core/src/tools/research.rs", - "type": "file", - "name": "research.rs", - "path": "crates/g3-core/src/tools/research.rs", - "crate": "g3-core", - "module": "tools/research" - }, - { - "id": "file:crates/g3-core/src/tools/shell.rs", - "type": "file", - "name": "shell.rs", - "path": "crates/g3-core/src/tools/shell.rs", - "crate": "g3-core", - "module": "tools/shell" - }, - { - "id": "file:crates/g3-core/src/tools/todo.rs", - "type": "file", - "name": "todo.rs", - "path": "crates/g3-core/src/tools/todo.rs", - "crate": "g3-core", - "module": "tools/todo" - }, - { - "id": "file:crates/g3-core/src/tools/webdriver.rs", - "type": "file", - "name": "webdriver.rs", - "path": "crates/g3-core/src/tools/webdriver.rs", - "crate": "g3-core", - "module": "tools/webdriver" - }, - { - "id": "file:crates/g3-core/src/ui_writer.rs", - "type": "file", - "name": "ui_writer.rs", - "path": "crates/g3-core/src/ui_writer.rs", - "crate": "g3-core", - "module": "ui_writer" - }, - { - "id": "file:crates/g3-core/src/utils.rs", - "type": "file", - "name": "utils.rs", - "path": "crates/g3-core/src/utils.rs", - "crate": "g3-core", - "module": "utils" - }, - { - "id": "file:crates/g3-core/src/webdriver_session.rs", - "type": "file", - "name": "webdriver_session.rs", - "path": "crates/g3-core/src/webdriver_session.rs", - "crate": "g3-core", - "module": "webdriver_session" - }, - { - "id": "file:crates/g3-execution/src/lib.rs", - "type": "file", - "name": "lib.rs", - "path": "crates/g3-execution/src/lib.rs", - "crate": "g3-execution", - "module": null - }, - { - "id": "file:crates/g3-planner/src/code_explore.rs", - "type": "file", - "name": "code_explore.rs", - "path": "crates/g3-planner/src/code_explore.rs", - "crate": "g3-planner", - "module": "code_explore" - }, - { - "id": "file:crates/g3-planner/src/git.rs", - "type": "file", - "name": "git.rs", - "path": "crates/g3-planner/src/git.rs", - "crate": "g3-planner", - "module": "git" - }, - { - "id": "file:crates/g3-planner/src/history.rs", - "type": "file", - "name": "history.rs", - "path": "crates/g3-planner/src/history.rs", - "crate": "g3-planner", - "module": "history" - }, - { - "id": "file:crates/g3-planner/src/lib.rs", - "type": "file", - "name": "lib.rs", - "path": "crates/g3-planner/src/lib.rs", - "crate": "g3-planner", - "module": null - }, - { - "id": "file:crates/g3-planner/src/llm.rs", - "type": "file", - "name": "llm.rs", - "path": "crates/g3-planner/src/llm.rs", - "crate": "g3-planner", - "module": "llm" - }, - { - "id": "file:crates/g3-planner/src/planner.rs", - "type": "file", - "name": "planner.rs", - "path": "crates/g3-planner/src/planner.rs", - "crate": "g3-planner", - "module": "planner" - }, - { - "id": "file:crates/g3-planner/src/prompts.rs", - "type": "file", - "name": "prompts.rs", - "path": "crates/g3-planner/src/prompts.rs", - "crate": "g3-planner", - "module": "prompts" - }, - { - "id": "file:crates/g3-planner/src/state.rs", - "type": "file", - "name": "state.rs", - "path": "crates/g3-planner/src/state.rs", - "crate": "g3-planner", - "module": "state" - }, - { - "id": "file:crates/g3-providers/src/anthropic.rs", - "type": "file", - "name": "anthropic.rs", - "path": "crates/g3-providers/src/anthropic.rs", - "crate": "g3-providers", - "module": "anthropic" - }, - { - "id": "file:crates/g3-providers/src/databricks.rs", - "type": "file", - "name": "databricks.rs", - "path": "crates/g3-providers/src/databricks.rs", - "crate": "g3-providers", - "module": "databricks" - }, - { - "id": "file:crates/g3-providers/src/embedded.rs", - "type": "file", - "name": "embedded.rs", - "path": "crates/g3-providers/src/embedded.rs", - "crate": "g3-providers", - "module": "embedded" - }, - { - "id": "file:crates/g3-providers/src/gemini.rs", - "type": "file", - "name": "gemini.rs", - "path": "crates/g3-providers/src/gemini.rs", - "crate": "g3-providers", - "module": "gemini" - }, - { - "id": "file:crates/g3-providers/src/lib.rs", - "type": "file", - "name": "lib.rs", - "path": "crates/g3-providers/src/lib.rs", - "crate": "g3-providers", - "module": null - }, - { - "id": "file:crates/g3-providers/src/mock.rs", - "type": "file", - "name": "mock.rs", - "path": "crates/g3-providers/src/mock.rs", - "crate": "g3-providers", - "module": "mock" - }, - { - "id": "file:crates/g3-providers/src/oauth.rs", - "type": "file", - "name": "oauth.rs", - "path": "crates/g3-providers/src/oauth.rs", - "crate": "g3-providers", - "module": "oauth" - }, - { - "id": "file:crates/g3-providers/src/openai.rs", - "type": "file", - "name": "openai.rs", - "path": "crates/g3-providers/src/openai.rs", - "crate": "g3-providers", - "module": "openai" - }, - { - "id": "file:crates/g3-providers/src/streaming.rs", - "type": "file", - "name": "streaming.rs", - "path": "crates/g3-providers/src/streaming.rs", - "crate": "g3-providers", - "module": "streaming" - }, - { - "id": "file:crates/studio/src/git.rs", - "type": "file", - "name": "git.rs", - "path": "crates/studio/src/git.rs", - "crate": "studio", - "module": "git" - }, - { - "id": "file:crates/studio/src/main.rs", - "type": "file", - "name": "main.rs", - "path": "crates/studio/src/main.rs", - "crate": "studio", - "module": null - }, - { - "id": "file:crates/studio/src/session.rs", - "type": "file", - "name": "session.rs", - "path": "crates/studio/src/session.rs", - "crate": "studio", - "module": "session" - } + {"id": "crate:g3", "type": "crate", "name": "g3", "path": "."}, + {"id": "crate:g3-cli", "type": "crate", "name": "g3-cli", "path": "crates/g3-cli"}, + {"id": "crate:g3-core", "type": "crate", "name": "g3-core", "path": "crates/g3-core"}, + {"id": "crate:g3-providers", "type": "crate", "name": "g3-providers", "path": "crates/g3-providers"}, + {"id": "crate:g3-config", "type": "crate", "name": "g3-config", "path": "crates/g3-config"}, + {"id": "crate:g3-execution", "type": "crate", "name": "g3-execution", "path": "crates/g3-execution"}, + {"id": "crate:g3-planner", "type": "crate", "name": "g3-planner", "path": "crates/g3-planner"}, + {"id": "crate:g3-computer-control", "type": "crate", "name": "g3-computer-control", "path": "crates/g3-computer-control"}, + {"id": "crate:studio", "type": "crate", "name": "studio", "path": "crates/studio"}, + + {"id": "file:crates/g3-cli/src/lib.rs", "type": "file", "name": "lib.rs", "path": "crates/g3-cli/src/lib.rs", "crate": "g3-cli", "module": null}, + {"id": "file:crates/g3-cli/src/accumulative.rs", "type": "file", "name": "accumulative.rs", "path": "crates/g3-cli/src/accumulative.rs", "crate": "g3-cli", "module": "accumulative"}, + {"id": "file:crates/g3-cli/src/agent_mode.rs", "type": "file", "name": "agent_mode.rs", "path": "crates/g3-cli/src/agent_mode.rs", "crate": "g3-cli", "module": "agent_mode"}, + {"id": "file:crates/g3-cli/src/autonomous.rs", "type": "file", "name": "autonomous.rs", "path": "crates/g3-cli/src/autonomous.rs", "crate": "g3-cli", "module": "autonomous"}, + {"id": "file:crates/g3-cli/src/cli_args.rs", "type": "file", "name": "cli_args.rs", "path": "crates/g3-cli/src/cli_args.rs", "crate": "g3-cli", "module": "cli_args"}, + {"id": "file:crates/g3-cli/src/coach_feedback.rs", "type": "file", "name": "coach_feedback.rs", "path": "crates/g3-cli/src/coach_feedback.rs", "crate": "g3-cli", "module": "coach_feedback"}, + {"id": "file:crates/g3-cli/src/commands.rs", "type": "file", "name": "commands.rs", "path": "crates/g3-cli/src/commands.rs", "crate": "g3-cli", "module": "commands"}, + {"id": "file:crates/g3-cli/src/completion.rs", "type": "file", "name": "completion.rs", "path": "crates/g3-cli/src/completion.rs", "crate": "g3-cli", "module": "completion"}, + {"id": "file:crates/g3-cli/src/display.rs", "type": "file", "name": "display.rs", "path": "crates/g3-cli/src/display.rs", "crate": "g3-cli", "module": "display"}, + {"id": "file:crates/g3-cli/src/embedded_agents.rs", "type": "file", "name": "embedded_agents.rs", "path": "crates/g3-cli/src/embedded_agents.rs", "crate": "g3-cli", "module": "embedded_agents"}, + {"id": "file:crates/g3-cli/src/filter_json.rs", "type": "file", "name": "filter_json.rs", "path": "crates/g3-cli/src/filter_json.rs", "crate": "g3-cli", "module": "filter_json"}, + {"id": "file:crates/g3-cli/src/g3_status.rs", "type": "file", "name": "g3_status.rs", "path": "crates/g3-cli/src/g3_status.rs", "crate": "g3-cli", "module": "g3_status"}, + {"id": "file:crates/g3-cli/src/input_formatter.rs", "type": "file", "name": "input_formatter.rs", "path": "crates/g3-cli/src/input_formatter.rs", "crate": "g3-cli", "module": "input_formatter"}, + {"id": "file:crates/g3-cli/src/interactive.rs", "type": "file", "name": "interactive.rs", "path": "crates/g3-cli/src/interactive.rs", "crate": "g3-cli", "module": "interactive"}, + {"id": "file:crates/g3-cli/src/language_prompts.rs", "type": "file", "name": "language_prompts.rs", "path": "crates/g3-cli/src/language_prompts.rs", "crate": "g3-cli", "module": "language_prompts"}, + {"id": "file:crates/g3-cli/src/metrics.rs", "type": "file", "name": "metrics.rs", "path": "crates/g3-cli/src/metrics.rs", "crate": "g3-cli", "module": "metrics"}, + {"id": "file:crates/g3-cli/src/project.rs", "type": "file", "name": "project.rs", "path": "crates/g3-cli/src/project.rs", "crate": "g3-cli", "module": "project"}, + {"id": "file:crates/g3-cli/src/project_files.rs", "type": "file", "name": "project_files.rs", "path": "crates/g3-cli/src/project_files.rs", "crate": "g3-cli", "module": "project_files"}, + {"id": "file:crates/g3-cli/src/simple_output.rs", "type": "file", "name": "simple_output.rs", "path": "crates/g3-cli/src/simple_output.rs", "crate": "g3-cli", "module": "simple_output"}, + {"id": "file:crates/g3-cli/src/streaming_markdown.rs", "type": "file", "name": "streaming_markdown.rs", "path": "crates/g3-cli/src/streaming_markdown.rs", "crate": "g3-cli", "module": "streaming_markdown"}, + {"id": "file:crates/g3-cli/src/task_execution.rs", "type": "file", "name": "task_execution.rs", "path": "crates/g3-cli/src/task_execution.rs", "crate": "g3-cli", "module": "task_execution"}, + {"id": "file:crates/g3-cli/src/template.rs", "type": "file", "name": "template.rs", "path": "crates/g3-cli/src/template.rs", "crate": "g3-cli", "module": "template"}, + {"id": "file:crates/g3-cli/src/theme.rs", "type": "file", "name": "theme.rs", "path": "crates/g3-cli/src/theme.rs", "crate": "g3-cli", "module": "theme"}, + {"id": "file:crates/g3-cli/src/ui_writer_impl.rs", "type": "file", "name": "ui_writer_impl.rs", "path": "crates/g3-cli/src/ui_writer_impl.rs", "crate": "g3-cli", "module": "ui_writer_impl"}, + {"id": "file:crates/g3-cli/src/utils.rs", "type": "file", "name": "utils.rs", "path": "crates/g3-cli/src/utils.rs", "crate": "g3-cli", "module": "utils"}, + + {"id": "file:crates/g3-core/src/lib.rs", "type": "file", "name": "lib.rs", "path": "crates/g3-core/src/lib.rs", "crate": "g3-core", "module": null}, + {"id": "file:crates/g3-core/src/acd.rs", "type": "file", "name": "acd.rs", "path": "crates/g3-core/src/acd.rs", "crate": "g3-core", "module": "acd"}, + {"id": "file:crates/g3-core/src/background_process.rs", "type": "file", "name": "background_process.rs", "path": "crates/g3-core/src/background_process.rs", "crate": "g3-core", "module": "background_process"}, + {"id": "file:crates/g3-core/src/code_search/mod.rs", "type": "file", "name": "mod.rs", "path": "crates/g3-core/src/code_search/mod.rs", "crate": "g3-core", "module": "code_search"}, + {"id": "file:crates/g3-core/src/code_search/searcher.rs", "type": "file", "name": "searcher.rs", "path": "crates/g3-core/src/code_search/searcher.rs", "crate": "g3-core", "module": "code_search::searcher"}, + {"id": "file:crates/g3-core/src/compaction.rs", "type": "file", "name": "compaction.rs", "path": "crates/g3-core/src/compaction.rs", "crate": "g3-core", "module": "compaction"}, + {"id": "file:crates/g3-core/src/context_window.rs", "type": "file", "name": "context_window.rs", "path": "crates/g3-core/src/context_window.rs", "crate": "g3-core", "module": "context_window"}, + {"id": "file:crates/g3-core/src/error_handling.rs", "type": "file", "name": "error_handling.rs", "path": "crates/g3-core/src/error_handling.rs", "crate": "g3-core", "module": "error_handling"}, + {"id": "file:crates/g3-core/src/feedback_extraction.rs", "type": "file", "name": "feedback_extraction.rs", "path": "crates/g3-core/src/feedback_extraction.rs", "crate": "g3-core", "module": "feedback_extraction"}, + {"id": "file:crates/g3-core/src/paths.rs", "type": "file", "name": "paths.rs", "path": "crates/g3-core/src/paths.rs", "crate": "g3-core", "module": "paths"}, + {"id": "file:crates/g3-core/src/pending_research.rs", "type": "file", "name": "pending_research.rs", "path": "crates/g3-core/src/pending_research.rs", "crate": "g3-core", "module": "pending_research"}, + {"id": "file:crates/g3-core/src/project.rs", "type": "file", "name": "project.rs", "path": "crates/g3-core/src/project.rs", "crate": "g3-core", "module": "project"}, + {"id": "file:crates/g3-core/src/prompts.rs", "type": "file", "name": "prompts.rs", "path": "crates/g3-core/src/prompts.rs", "crate": "g3-core", "module": "prompts"}, + {"id": "file:crates/g3-core/src/provider_config.rs", "type": "file", "name": "provider_config.rs", "path": "crates/g3-core/src/provider_config.rs", "crate": "g3-core", "module": "provider_config"}, + {"id": "file:crates/g3-core/src/provider_registration.rs", "type": "file", "name": "provider_registration.rs", "path": "crates/g3-core/src/provider_registration.rs", "crate": "g3-core", "module": "provider_registration"}, + {"id": "file:crates/g3-core/src/retry.rs", "type": "file", "name": "retry.rs", "path": "crates/g3-core/src/retry.rs", "crate": "g3-core", "module": "retry"}, + {"id": "file:crates/g3-core/src/session.rs", "type": "file", "name": "session.rs", "path": "crates/g3-core/src/session.rs", "crate": "g3-core", "module": "session"}, + {"id": "file:crates/g3-core/src/session_continuation.rs", "type": "file", "name": "session_continuation.rs", "path": "crates/g3-core/src/session_continuation.rs", "crate": "g3-core", "module": "session_continuation"}, + {"id": "file:crates/g3-core/src/stats.rs", "type": "file", "name": "stats.rs", "path": "crates/g3-core/src/stats.rs", "crate": "g3-core", "module": "stats"}, + {"id": "file:crates/g3-core/src/streaming.rs", "type": "file", "name": "streaming.rs", "path": "crates/g3-core/src/streaming.rs", "crate": "g3-core", "module": "streaming"}, + {"id": "file:crates/g3-core/src/streaming_parser.rs", "type": "file", "name": "streaming_parser.rs", "path": "crates/g3-core/src/streaming_parser.rs", "crate": "g3-core", "module": "streaming_parser"}, + {"id": "file:crates/g3-core/src/task_result.rs", "type": "file", "name": "task_result.rs", "path": "crates/g3-core/src/task_result.rs", "crate": "g3-core", "module": "task_result"}, + {"id": "file:crates/g3-core/src/tool_definitions.rs", "type": "file", "name": "tool_definitions.rs", "path": "crates/g3-core/src/tool_definitions.rs", "crate": "g3-core", "module": "tool_definitions"}, + {"id": "file:crates/g3-core/src/tool_dispatch.rs", "type": "file", "name": "tool_dispatch.rs", "path": "crates/g3-core/src/tool_dispatch.rs", "crate": "g3-core", "module": "tool_dispatch"}, + {"id": "file:crates/g3-core/src/tools/mod.rs", "type": "file", "name": "mod.rs", "path": "crates/g3-core/src/tools/mod.rs", "crate": "g3-core", "module": "tools"}, + {"id": "file:crates/g3-core/src/tools/acd.rs", "type": "file", "name": "acd.rs", "path": "crates/g3-core/src/tools/acd.rs", "crate": "g3-core", "module": "tools::acd"}, + {"id": "file:crates/g3-core/src/tools/executor.rs", "type": "file", "name": "executor.rs", "path": "crates/g3-core/src/tools/executor.rs", "crate": "g3-core", "module": "tools::executor"}, + {"id": "file:crates/g3-core/src/tools/file_ops.rs", "type": "file", "name": "file_ops.rs", "path": "crates/g3-core/src/tools/file_ops.rs", "crate": "g3-core", "module": "tools::file_ops"}, + {"id": "file:crates/g3-core/src/tools/memory.rs", "type": "file", "name": "memory.rs", "path": "crates/g3-core/src/tools/memory.rs", "crate": "g3-core", "module": "tools::memory"}, + {"id": "file:crates/g3-core/src/tools/misc.rs", "type": "file", "name": "misc.rs", "path": "crates/g3-core/src/tools/misc.rs", "crate": "g3-core", "module": "tools::misc"}, + {"id": "file:crates/g3-core/src/tools/plan.rs", "type": "file", "name": "plan.rs", "path": "crates/g3-core/src/tools/plan.rs", "crate": "g3-core", "module": "tools::plan"}, + {"id": "file:crates/g3-core/src/tools/research.rs", "type": "file", "name": "research.rs", "path": "crates/g3-core/src/tools/research.rs", "crate": "g3-core", "module": "tools::research"}, + {"id": "file:crates/g3-core/src/tools/shell.rs", "type": "file", "name": "shell.rs", "path": "crates/g3-core/src/tools/shell.rs", "crate": "g3-core", "module": "tools::shell"}, + {"id": "file:crates/g3-core/src/tools/webdriver.rs", "type": "file", "name": "webdriver.rs", "path": "crates/g3-core/src/tools/webdriver.rs", "crate": "g3-core", "module": "tools::webdriver"}, + {"id": "file:crates/g3-core/src/ui_writer.rs", "type": "file", "name": "ui_writer.rs", "path": "crates/g3-core/src/ui_writer.rs", "crate": "g3-core", "module": "ui_writer"}, + {"id": "file:crates/g3-core/src/utils.rs", "type": "file", "name": "utils.rs", "path": "crates/g3-core/src/utils.rs", "crate": "g3-core", "module": "utils"}, + {"id": "file:crates/g3-core/src/webdriver_session.rs", "type": "file", "name": "webdriver_session.rs", "path": "crates/g3-core/src/webdriver_session.rs", "crate": "g3-core", "module": "webdriver_session"}, + + {"id": "file:crates/g3-providers/src/lib.rs", "type": "file", "name": "lib.rs", "path": "crates/g3-providers/src/lib.rs", "crate": "g3-providers", "module": null}, + {"id": "file:crates/g3-providers/src/anthropic.rs", "type": "file", "name": "anthropic.rs", "path": "crates/g3-providers/src/anthropic.rs", "crate": "g3-providers", "module": "anthropic"}, + {"id": "file:crates/g3-providers/src/databricks.rs", "type": "file", "name": "databricks.rs", "path": "crates/g3-providers/src/databricks.rs", "crate": "g3-providers", "module": "databricks"}, + {"id": "file:crates/g3-providers/src/embedded/mod.rs", "type": "file", "name": "mod.rs", "path": "crates/g3-providers/src/embedded/mod.rs", "crate": "g3-providers", "module": "embedded"}, + {"id": "file:crates/g3-providers/src/embedded/provider.rs", "type": "file", "name": "provider.rs", "path": "crates/g3-providers/src/embedded/provider.rs", "crate": "g3-providers", "module": "embedded::provider"}, + {"id": "file:crates/g3-providers/src/embedded/adapters/mod.rs", "type": "file", "name": "mod.rs", "path": "crates/g3-providers/src/embedded/adapters/mod.rs", "crate": "g3-providers", "module": "embedded::adapters"}, + {"id": "file:crates/g3-providers/src/embedded/adapters/glm.rs", "type": "file", "name": "glm.rs", "path": "crates/g3-providers/src/embedded/adapters/glm.rs", "crate": "g3-providers", "module": "embedded::adapters::glm"}, + {"id": "file:crates/g3-providers/src/gemini.rs", "type": "file", "name": "gemini.rs", "path": "crates/g3-providers/src/gemini.rs", "crate": "g3-providers", "module": "gemini"}, + {"id": "file:crates/g3-providers/src/mock.rs", "type": "file", "name": "mock.rs", "path": "crates/g3-providers/src/mock.rs", "crate": "g3-providers", "module": "mock"}, + {"id": "file:crates/g3-providers/src/oauth.rs", "type": "file", "name": "oauth.rs", "path": "crates/g3-providers/src/oauth.rs", "crate": "g3-providers", "module": "oauth"}, + {"id": "file:crates/g3-providers/src/openai.rs", "type": "file", "name": "openai.rs", "path": "crates/g3-providers/src/openai.rs", "crate": "g3-providers", "module": "openai"}, + {"id": "file:crates/g3-providers/src/streaming.rs", "type": "file", "name": "streaming.rs", "path": "crates/g3-providers/src/streaming.rs", "crate": "g3-providers", "module": "streaming"}, + + {"id": "file:crates/g3-config/src/lib.rs", "type": "file", "name": "lib.rs", "path": "crates/g3-config/src/lib.rs", "crate": "g3-config", "module": null}, + + {"id": "file:crates/g3-execution/src/lib.rs", "type": "file", "name": "lib.rs", "path": "crates/g3-execution/src/lib.rs", "crate": "g3-execution", "module": null}, + + {"id": "file:crates/g3-planner/src/lib.rs", "type": "file", "name": "lib.rs", "path": "crates/g3-planner/src/lib.rs", "crate": "g3-planner", "module": null}, + {"id": "file:crates/g3-planner/src/code_explore.rs", "type": "file", "name": "code_explore.rs", "path": "crates/g3-planner/src/code_explore.rs", "crate": "g3-planner", "module": "code_explore"}, + {"id": "file:crates/g3-planner/src/git.rs", "type": "file", "name": "git.rs", "path": "crates/g3-planner/src/git.rs", "crate": "g3-planner", "module": "git"}, + {"id": "file:crates/g3-planner/src/history.rs", "type": "file", "name": "history.rs", "path": "crates/g3-planner/src/history.rs", "crate": "g3-planner", "module": "history"}, + {"id": "file:crates/g3-planner/src/llm.rs", "type": "file", "name": "llm.rs", "path": "crates/g3-planner/src/llm.rs", "crate": "g3-planner", "module": "llm"}, + {"id": "file:crates/g3-planner/src/planner.rs", "type": "file", "name": "planner.rs", "path": "crates/g3-planner/src/planner.rs", "crate": "g3-planner", "module": "planner"}, + {"id": "file:crates/g3-planner/src/prompts.rs", "type": "file", "name": "prompts.rs", "path": "crates/g3-planner/src/prompts.rs", "crate": "g3-planner", "module": "prompts"}, + {"id": "file:crates/g3-planner/src/state.rs", "type": "file", "name": "state.rs", "path": "crates/g3-planner/src/state.rs", "crate": "g3-planner", "module": "state"}, + + {"id": "file:crates/g3-computer-control/src/lib.rs", "type": "file", "name": "lib.rs", "path": "crates/g3-computer-control/src/lib.rs", "crate": "g3-computer-control", "module": null}, + {"id": "file:crates/g3-computer-control/src/types.rs", "type": "file", "name": "types.rs", "path": "crates/g3-computer-control/src/types.rs", "crate": "g3-computer-control", "module": "types"}, + {"id": "file:crates/g3-computer-control/src/platform/mod.rs", "type": "file", "name": "mod.rs", "path": "crates/g3-computer-control/src/platform/mod.rs", "crate": "g3-computer-control", "module": "platform"}, + {"id": "file:crates/g3-computer-control/src/platform/macos.rs", "type": "file", "name": "macos.rs", "path": "crates/g3-computer-control/src/platform/macos.rs", "crate": "g3-computer-control", "module": "platform::macos"}, + {"id": "file:crates/g3-computer-control/src/platform/linux.rs", "type": "file", "name": "linux.rs", "path": "crates/g3-computer-control/src/platform/linux.rs", "crate": "g3-computer-control", "module": "platform::linux"}, + {"id": "file:crates/g3-computer-control/src/platform/windows.rs", "type": "file", "name": "windows.rs", "path": "crates/g3-computer-control/src/platform/windows.rs", "crate": "g3-computer-control", "module": "platform::windows"}, + {"id": "file:crates/g3-computer-control/src/webdriver/mod.rs", "type": "file", "name": "mod.rs", "path": "crates/g3-computer-control/src/webdriver/mod.rs", "crate": "g3-computer-control", "module": "webdriver"}, + {"id": "file:crates/g3-computer-control/src/webdriver/safari.rs", "type": "file", "name": "safari.rs", "path": "crates/g3-computer-control/src/webdriver/safari.rs", "crate": "g3-computer-control", "module": "webdriver::safari"}, + {"id": "file:crates/g3-computer-control/src/webdriver/chrome.rs", "type": "file", "name": "chrome.rs", "path": "crates/g3-computer-control/src/webdriver/chrome.rs", "crate": "g3-computer-control", "module": "webdriver::chrome"}, + {"id": "file:crates/g3-computer-control/src/webdriver/diagnostics.rs", "type": "file", "name": "diagnostics.rs", "path": "crates/g3-computer-control/src/webdriver/diagnostics.rs", "crate": "g3-computer-control", "module": "webdriver::diagnostics"}, + + {"id": "file:crates/studio/src/main.rs", "type": "file", "name": "main.rs", "path": "crates/studio/src/main.rs", "crate": "studio", "module": null}, + {"id": "file:crates/studio/src/git.rs", "type": "file", "name": "git.rs", "path": "crates/studio/src/git.rs", "crate": "studio", "module": "git"}, + {"id": "file:crates/studio/src/session.rs", "type": "file", "name": "session.rs", "path": "crates/studio/src/session.rs", "crate": "studio", "module": "session"} ], "edges": [ - { - "from": "crate:g3", - "to": "crate:g3-cli", - "type": "crate_dependency", - "evidence": "Cargo.toml dependency declaration" - }, - { - "from": "crate:g3", - "to": "crate:g3-providers", - "type": "crate_dependency", - "evidence": "Cargo.toml dependency declaration" - }, - { - "from": "crate:g3-cli", - "to": "crate:g3-core", - "type": "crate_dependency", - "evidence": "Cargo.toml dependency declaration" - }, - { - "from": "crate:g3-cli", - "to": "crate:g3-config", - "type": "crate_dependency", - "evidence": "Cargo.toml dependency declaration" - }, - { - "from": "crate:g3-cli", - "to": "crate:g3-planner", - "type": "crate_dependency", - "evidence": "Cargo.toml dependency declaration" - }, - { - "from": "crate:g3-cli", - "to": "crate:g3-computer-control", - "type": "crate_dependency", - "evidence": "Cargo.toml dependency declaration" - }, - { - "from": "crate:g3-cli", - "to": "crate:g3-providers", - "type": "crate_dependency", - "evidence": "Cargo.toml dependency declaration" - }, - { - "from": "crate:g3-core", - "to": "crate:g3-providers", - "type": "crate_dependency", - "evidence": "Cargo.toml dependency declaration" - }, - { - "from": "crate:g3-core", - "to": "crate:g3-config", - "type": "crate_dependency", - "evidence": "Cargo.toml dependency declaration" - }, - { - "from": "crate:g3-core", - "to": "crate:g3-execution", - "type": "crate_dependency", - "evidence": "Cargo.toml dependency declaration" - }, - { - "from": "crate:g3-core", - "to": "crate:g3-computer-control", - "type": "crate_dependency", - "evidence": "Cargo.toml dependency declaration" - }, - { - "from": "crate:g3-planner", - "to": "crate:g3-providers", - "type": "crate_dependency", - "evidence": "Cargo.toml dependency declaration" - }, - { - "from": "crate:g3-planner", - "to": "crate:g3-core", - "type": "crate_dependency", - "evidence": "Cargo.toml dependency declaration" - }, - { - "from": "crate:g3-planner", - "to": "crate:g3-config", - "type": "crate_dependency", - "evidence": "Cargo.toml dependency declaration" - }, - { - "from": "file:crates/g3-cli/src/accumulative.rs", - "to": "crate:g3-core", - "type": "file_to_crate", - "evidence": "use g3_core::project::Project;" - }, - { - "from": "file:crates/g3-cli/src/accumulative.rs", - "to": "crate:g3-core", - "type": "file_to_crate", - "evidence": "use g3_core::Agent;" - }, - { - "from": "file:crates/g3-cli/src/accumulative.rs", - "to": "file:crates/g3-cli/src/autonomous.rs", - "type": "module_import", - "evidence": "use crate::autonomous::run_autonomous;" - }, - { - "from": "file:crates/g3-cli/src/accumulative.rs", - "to": "file:crates/g3-cli/src/cli_args.rs", - "type": "module_import", - "evidence": "use crate::cli_args::Cli;" - }, - { - "from": "file:crates/g3-cli/src/accumulative.rs", - "to": "file:crates/g3-cli/src/interactive.rs", - "type": "module_import", - "evidence": "use crate::interactive::run_interactive;" - }, - { - "from": "file:crates/g3-cli/src/accumulative.rs", - "to": "file:crates/g3-cli/src/simple_output.rs", - "type": "module_import", - "evidence": "use crate::simple_output::SimpleOutput;" - }, - { - "from": "file:crates/g3-cli/src/accumulative.rs", - "to": "file:crates/g3-cli/src/ui_writer_impl.rs", - "type": "module_import", - "evidence": "use crate::ui_writer_impl::ConsoleUiWriter;" - }, - { - "from": "file:crates/g3-cli/src/accumulative.rs", - "to": "crate:g3-core", - "type": "file_to_crate", - "evidence": "use g3_core::ui_writer::UiWriter;" - }, - { - "from": "file:crates/g3-cli/src/accumulative.rs", - "to": "file:crates/g3-cli/src/utils.rs", - "type": "module_import", - "evidence": "use crate::utils::load_config_with_cli_overrides;" - }, - { - "from": "file:crates/g3-cli/src/accumulative.rs", - "to": "file:crates/g3-cli/src/template.rs", - "type": "module_import", - "evidence": "use crate::template::process_template;" - }, - { - "from": "file:crates/g3-cli/src/accumulative.rs", - "to": "file:crates/g3-cli/src/g3_status.rs", - "type": "module_import", - "evidence": "use crate::g3_status::G3Status;" - }, - { - "from": "file:crates/g3-cli/src/agent_mode.rs", - "to": "crate:g3-core", - "type": "file_to_crate", - "evidence": "use g3_core::ui_writer::UiWriter;" - }, - { - "from": "file:crates/g3-cli/src/agent_mode.rs", - "to": "crate:g3-core", - "type": "file_to_crate", - "evidence": "use g3_core::Agent;" - }, - { - "from": "file:crates/g3-cli/src/agent_mode.rs", - "to": "file:crates/g3-cli/src/project_files.rs", - "type": "module_import", - "evidence": "use crate::project_files::{combine_project_content, read_agents_config, read_include_prompt, read_workspace_memory};" - }, - { - "from": "file:crates/g3-cli/src/agent_mode.rs", - "to": "file:crates/g3-cli/src/display.rs", - "type": "module_import", - "evidence": "use crate::display::{LoadedContent, print_loaded_status, print_workspace_path};" - }, - { - "from": "file:crates/g3-cli/src/agent_mode.rs", - "to": "file:crates/g3-cli/src/language_prompts.rs", - "type": "module_import", - "evidence": "use crate::language_prompts::{get_language_prompts_for_workspace, get_agent_language_prompts_for_workspace_with_langs};" - }, - { - "from": "file:crates/g3-cli/src/agent_mode.rs", - "to": "file:crates/g3-cli/src/simple_output.rs", - "type": "module_import", - "evidence": "use crate::simple_output::SimpleOutput;" - }, - { - "from": "file:crates/g3-cli/src/agent_mode.rs", - "to": "file:crates/g3-cli/src/embedded_agents.rs", - "type": "module_import", - "evidence": "use crate::embedded_agents::load_agent_prompt;" - }, - { - "from": "file:crates/g3-cli/src/agent_mode.rs", - "to": "file:crates/g3-cli/src/ui_writer_impl.rs", - "type": "module_import", - "evidence": "use crate::ui_writer_impl::ConsoleUiWriter;" - }, - { - "from": "file:crates/g3-cli/src/agent_mode.rs", - "to": "file:crates/g3-cli/src/interactive.rs", - "type": "module_import", - "evidence": "use crate::interactive::run_interactive;" - }, - { - "from": "file:crates/g3-cli/src/agent_mode.rs", - "to": "file:crates/g3-cli/src/template.rs", - "type": "module_import", - "evidence": "use crate::template::process_template;" - }, - { - "from": "file:crates/g3-cli/src/agent_mode.rs", - "to": "crate:g3-core", - "type": "file_to_crate", - "evidence": "use g3_core::find_incomplete_agent_session;" - }, - { - "from": "file:crates/g3-cli/src/agent_mode.rs", - "to": "crate:g3-core", - "type": "file_to_crate", - "evidence": "use g3_core::get_agent_system_prompt;" - }, - { - "from": "file:crates/g3-cli/src/agent_mode.rs", - "to": "file:crates/g3-cli/src/g3_status.rs", - "type": "module_import", - "evidence": "use crate::g3_status::G3Status;" - }, - { - "from": "file:crates/g3-cli/src/autonomous.rs", - "to": "crate:g3-core", - "type": "file_to_crate", - "evidence": "use g3_core::error_handling::{classify_error, ErrorType, RecoverableError};" - }, - { - "from": "file:crates/g3-cli/src/autonomous.rs", - "to": "crate:g3-core", - "type": "file_to_crate", - "evidence": "use g3_core::project::Project;" - }, - { - "from": "file:crates/g3-cli/src/autonomous.rs", - "to": "crate:g3-core", - "type": "file_to_crate", - "evidence": "use g3_core::{Agent, DiscoveryOptions};" - }, - { - "from": "file:crates/g3-cli/src/autonomous.rs", - "to": "file:crates/g3-cli/src/coach_feedback.rs", - "type": "module_import", - "evidence": "use crate::coach_feedback;" - }, - { - "from": "file:crates/g3-cli/src/autonomous.rs", - "to": "file:crates/g3-cli/src/metrics.rs", - "type": "module_import", - "evidence": "use crate::metrics::{format_elapsed_time, generate_turn_histogram, TurnMetrics};" - }, - { - "from": "file:crates/g3-cli/src/autonomous.rs", - "to": "file:crates/g3-cli/src/simple_output.rs", - "type": "module_import", - "evidence": "use crate::simple_output::SimpleOutput;" - }, - { - "from": "file:crates/g3-cli/src/autonomous.rs", - "to": "file:crates/g3-cli/src/ui_writer_impl.rs", - "type": "module_import", - "evidence": "use crate::ui_writer_impl::ConsoleUiWriter;" - }, - { - "from": "file:crates/g3-cli/src/autonomous.rs", - "to": "crate:g3-core", - "type": "file_to_crate", - "evidence": "use g3_core::ui_writer::UiWriter;" - }, - { - "from": "file:crates/g3-cli/src/coach_feedback.rs", - "to": "crate:g3-core", - "type": "file_to_crate", - "evidence": "use g3_core::Agent;" - }, - { - "from": "file:crates/g3-cli/src/coach_feedback.rs", - "to": "file:crates/g3-cli/src/simple_output.rs", - "type": "module_import", - "evidence": "use crate::simple_output::SimpleOutput;" - }, - { - "from": "file:crates/g3-cli/src/coach_feedback.rs", - "to": "file:crates/g3-cli/src/ui_writer_impl.rs", - "type": "module_import", - "evidence": "use crate::ui_writer_impl::ConsoleUiWriter;" - }, - { - "from": "file:crates/g3-cli/src/commands.rs", - "to": "crate:g3-core", - "type": "file_to_crate", - "evidence": "use g3_core::ui_writer::UiWriter;" - }, - { - "from": "file:crates/g3-cli/src/commands.rs", - "to": "crate:g3-core", - "type": "file_to_crate", - "evidence": "use g3_core::Agent;" - }, - { - "from": "file:crates/g3-cli/src/commands.rs", - "to": "file:crates/g3-cli/src/completion.rs", - "type": "module_import", - "evidence": "use crate::completion::G3Helper;" - }, - { - "from": "file:crates/g3-cli/src/commands.rs", - "to": "file:crates/g3-cli/src/g3_status.rs", - "type": "module_import", - "evidence": "use crate::g3_status::{G3Status, Status};" - }, - { - "from": "file:crates/g3-cli/src/commands.rs", - "to": "file:crates/g3-cli/src/simple_output.rs", - "type": "module_import", - "evidence": "use crate::simple_output::SimpleOutput;" - }, - { - "from": "file:crates/g3-cli/src/commands.rs", - "to": "file:crates/g3-cli/src/project.rs", - "type": "module_import", - "evidence": "use crate::project::Project;" - }, - { - "from": "file:crates/g3-cli/src/commands.rs", - "to": "file:crates/g3-cli/src/project.rs", - "type": "module_import", - "evidence": "use crate::project::load_and_validate_project;" - }, - { - "from": "file:crates/g3-cli/src/commands.rs", - "to": "file:crates/g3-cli/src/template.rs", - "type": "module_import", - "evidence": "use crate::template::process_template;" - }, - { - "from": "file:crates/g3-cli/src/commands.rs", - "to": "file:crates/g3-cli/src/task_execution.rs", - "type": "module_import", - "evidence": "use crate::task_execution::execute_task_with_retry;" - }, - { - "from": "file:crates/g3-cli/src/commands.rs", - "to": "file:crates/g3-cli/src/g3_status.rs", - "type": "module_import", - "evidence": "use crate::g3_status::G3Status;" - }, - { - "from": "file:crates/g3-cli/src/commands.rs", - "to": "file:crates/g3-cli/src/g3_status.rs", - "type": "module_import", - "evidence": "use crate::g3_status::G3Status;" - }, - { - "from": "file:crates/g3-cli/src/commands.rs", - "to": "file:crates/g3-cli/src/g3_status.rs", - "type": "module_import", - "evidence": "use crate::g3_status::G3Status;" - }, - { - "from": "file:crates/g3-cli/src/embedded_agents.rs", - "to": "file:crates/g3-cli/src/template.rs", - "type": "module_import", - "evidence": "use crate::template::process_template;" - }, - { - "from": "file:crates/g3-cli/src/g3_status.rs", - "to": "crate:g3-core", - "type": "file_to_crate", - "evidence": "use g3_core::ThinScope;" - }, - { - "from": "file:crates/g3-cli/src/interactive.rs", - "to": "file:crates/g3-cli/src/completion.rs", - "type": "module_import", - "evidence": "use crate::completion::G3Helper;" - }, - { - "from": "file:crates/g3-cli/src/interactive.rs", - "to": "crate:g3-core", - "type": "file_to_crate", - "evidence": "use g3_core::ui_writer::UiWriter;" - }, - { - "from": "file:crates/g3-cli/src/interactive.rs", - "to": "crate:g3-core", - "type": "file_to_crate", - "evidence": "use g3_core::Agent;" - }, - { - "from": "file:crates/g3-cli/src/interactive.rs", - "to": "file:crates/g3-cli/src/commands.rs", - "type": "module_import", - "evidence": "use crate::commands::handle_command;" - }, - { - "from": "file:crates/g3-cli/src/interactive.rs", - "to": "file:crates/g3-cli/src/display.rs", - "type": "module_import", - "evidence": "use crate::display::{LoadedContent, print_loaded_status, print_project_heading, print_workspace_path};" - }, - { - "from": "file:crates/g3-cli/src/interactive.rs", - "to": "file:crates/g3-cli/src/g3_status.rs", - "type": "module_import", - "evidence": "use crate::g3_status::{G3Status, Status};" - }, - { - "from": "file:crates/g3-cli/src/interactive.rs", - "to": "file:crates/g3-cli/src/project.rs", - "type": "module_import", - "evidence": "use crate::project::Project;" - }, - { - "from": "file:crates/g3-cli/src/interactive.rs", - "to": "file:crates/g3-cli/src/project_files.rs", - "type": "module_import", - "evidence": "use crate::project_files::extract_project_heading;" - }, - { - "from": "file:crates/g3-cli/src/interactive.rs", - "to": "file:crates/g3-cli/src/simple_output.rs", - "type": "module_import", - "evidence": "use crate::simple_output::SimpleOutput;" - }, - { - "from": "file:crates/g3-cli/src/interactive.rs", - "to": "file:crates/g3-cli/src/template.rs", - "type": "module_import", - "evidence": "use crate::template::process_template;" - }, - { - "from": "file:crates/g3-cli/src/interactive.rs", - "to": "file:crates/g3-cli/src/task_execution.rs", - "type": "module_import", - "evidence": "use crate::task_execution::execute_task_with_retry;" - }, - { - "from": "file:crates/g3-cli/src/interactive.rs", - "to": "file:crates/g3-cli/src/utils.rs", - "type": "module_import", - "evidence": "use crate::utils::display_context_progress;" - }, - { - "from": "file:crates/g3-cli/src/lib.rs", - "to": "crate:g3-config", - "type": "file_to_crate", - "evidence": "use g3_config::Config;" - }, - { - "from": "file:crates/g3-cli/src/lib.rs", - "to": "crate:g3-core", - "type": "file_to_crate", - "evidence": "use g3_core::project::Project;" - }, - { - "from": "file:crates/g3-cli/src/lib.rs", - "to": "crate:g3-core", - "type": "file_to_crate", - "evidence": "use g3_core::Agent;" - }, - { - "from": "file:crates/g3-cli/src/lib.rs", - "to": "crate:g3-core", - "type": "file_to_crate", - "evidence": "use g3_core::ui_writer::UiWriter;" - }, - { - "from": "file:crates/g3-cli/src/project_files.rs", - "to": "file:crates/g3-cli/src/template.rs", - "type": "module_import", - "evidence": "use crate::template::process_template;" - }, - { - "from": "file:crates/g3-cli/src/simple_output.rs", - "to": "file:crates/g3-cli/src/g3_status.rs", - "type": "module_import", - "evidence": "use crate::g3_status::{G3Status, Status};" - }, - { - "from": "file:crates/g3-cli/src/task_execution.rs", - "to": "crate:g3-core", - "type": "file_to_crate", - "evidence": "use g3_core::error_handling::{calculate_retry_delay, classify_error, ErrorType, RecoverableError};" - }, - { - "from": "file:crates/g3-cli/src/task_execution.rs", - "to": "crate:g3-core", - "type": "file_to_crate", - "evidence": "use g3_core::ui_writer::UiWriter;" - }, - { - "from": "file:crates/g3-cli/src/task_execution.rs", - "to": "crate:g3-core", - "type": "file_to_crate", - "evidence": "use g3_core::Agent;" - }, - { - "from": "file:crates/g3-cli/src/task_execution.rs", - "to": "file:crates/g3-cli/src/simple_output.rs", - "type": "module_import", - "evidence": "use crate::simple_output::SimpleOutput;" - }, - { - "from": "file:crates/g3-cli/src/task_execution.rs", - "to": "file:crates/g3-cli/src/g3_status.rs", - "type": "module_import", - "evidence": "use crate::g3_status::G3Status;" - }, - { - "from": "file:crates/g3-cli/src/ui_writer_impl.rs", - "to": "file:crates/g3-cli/src/filter_json.rs", - "type": "module_import", - "evidence": "use crate::filter_json::{filter_json_tool_calls, reset_json_tool_state, ToolParsingHint};" - }, - { - "from": "file:crates/g3-cli/src/ui_writer_impl.rs", - "to": "file:crates/g3-cli/src/display.rs", - "type": "module_import", - "evidence": "use crate::display::{shorten_path, shorten_paths_in_command};" - }, - { - "from": "file:crates/g3-cli/src/ui_writer_impl.rs", - "to": "file:crates/g3-cli/src/streaming_markdown.rs", - "type": "module_import", - "evidence": "use crate::streaming_markdown::StreamingMarkdownFormatter;" - }, - { - "from": "file:crates/g3-cli/src/ui_writer_impl.rs", - "to": "crate:g3-core", - "type": "file_to_crate", - "evidence": "use g3_core::ui_writer::UiWriter;" - }, - { - "from": "file:crates/g3-cli/src/ui_writer_impl.rs", - "to": "file:crates/g3-cli/src/g3_status.rs", - "type": "module_import", - "evidence": "use crate::g3_status::Status;" - }, - { - "from": "file:crates/g3-cli/src/utils.rs", - "to": "crate:g3-config", - "type": "file_to_crate", - "evidence": "use g3_config::Config;" - }, - { - "from": "file:crates/g3-cli/src/utils.rs", - "to": "crate:g3-core", - "type": "file_to_crate", - "evidence": "use g3_core::ui_writer::UiWriter;" - }, - { - "from": "file:crates/g3-cli/src/utils.rs", - "to": "crate:g3-core", - "type": "file_to_crate", - "evidence": "use g3_core::Agent;" - }, - { - "from": "file:crates/g3-cli/src/utils.rs", - "to": "file:crates/g3-cli/src/cli_args.rs", - "type": "module_import", - "evidence": "use crate::cli_args::Cli;" - }, - { - "from": "file:crates/g3-cli/src/utils.rs", - "to": "file:crates/g3-cli/src/simple_output.rs", - "type": "module_import", - "evidence": "use crate::simple_output::SimpleOutput;" - }, - { - "from": "file:crates/g3-core/src/acd.rs", - "to": "crate:g3-providers", - "type": "file_to_crate", - "evidence": "use g3_providers::Message;" - }, - { - "from": "file:crates/g3-core/src/acd.rs", - "to": "file:crates/g3-core/src/paths.rs", - "type": "module_import", - "evidence": "use crate::paths::get_fragments_dir;" - }, - { - "from": "file:crates/g3-core/src/acd.rs", - "to": "crate:g3-providers", - "type": "file_to_crate", - "evidence": "use g3_providers::MessageRole;" - }, - { - "from": "file:crates/g3-core/src/compaction.rs", - "to": "crate:g3-providers", - "type": "file_to_crate", - "evidence": "use g3_providers::{CompletionRequest, Message, MessageRole, ProviderRegistry};" - }, - { - "from": "file:crates/g3-core/src/compaction.rs", - "to": "file:crates/g3-core/src/context_window.rs", - "type": "module_import", - "evidence": "use crate::context_window::ContextWindow;" - }, - { - "from": "file:crates/g3-core/src/compaction.rs", - "to": "file:crates/g3-core/src/provider_config.rs", - "type": "module_import", - "evidence": "use crate::provider_config;" - }, - { - "from": "file:crates/g3-core/src/compaction.rs", - "to": "file:crates/g3-core/src/ui_writer.rs", - "type": "module_import", - "evidence": "use crate::ui_writer::UiWriter;" - }, - { - "from": "file:crates/g3-core/src/context_window.rs", - "to": "crate:g3-providers", - "type": "file_to_crate", - "evidence": "use g3_providers::{Message, MessageRole, Usage};" - }, - { - "from": "file:crates/g3-core/src/context_window.rs", - "to": "file:crates/g3-core/src/paths.rs", - "type": "module_import", - "evidence": "use crate::paths::get_thinned_dir;" - }, - { - "from": "file:crates/g3-core/src/error_handling_test.rs", - "to": "file:crates/g3-core/src/error_handling.rs", - "type": "module_import", - "evidence": "use crate::error_handling::*;" - }, - { - "from": "file:crates/g3-core/src/feedback_extraction.rs", - "to": "file:crates/g3-core/src/ui_writer.rs", - "type": "module_import", - "evidence": "use crate::ui_writer::UiWriter;" - }, - { - "from": "file:crates/g3-core/src/lib.rs", - "to": "file:crates/g3-core/src/ui_writer.rs", - "type": "module_import", - "evidence": "use crate::ui_writer::UiWriter;" - }, - { - "from": "file:crates/g3-core/src/lib.rs", - "to": "crate:g3-config", - "type": "file_to_crate", - "evidence": "use g3_config::Config;" - }, - { - "from": "file:crates/g3-core/src/lib.rs", - "to": "crate:g3-providers", - "type": "file_to_crate", - "evidence": "use g3_providers::{CacheControl, CompletionRequest, Message, MessageRole, ProviderRegistry};" - }, - { - "from": "file:crates/g3-core/src/lib.rs", - "to": "file:crates/g3-core/src/context_window.rs", - "type": "module_import", - "evidence": "use crate::context_window::ContextWindow;" - }, - { - "from": "file:crates/g3-core/src/lib.rs", - "to": "file:crates/g3-core/src/prompts.rs", - "type": "module_import", - "evidence": "use crate::prompts::get_system_prompt_for_native;" - }, - { - "from": "file:crates/g3-core/src/lib.rs", - "to": "crate:g3-providers", - "type": "file_to_crate", - "evidence": "use g3_providers::{Message, MessageRole};" - }, - { - "from": "file:crates/g3-core/src/lib.rs", - "to": "file:crates/g3-core/src/compaction.rs", - "type": "module_import", - "evidence": "use crate::compaction::{perform_compaction, CompactionConfig};" - }, - { - "from": "file:crates/g3-core/src/lib.rs", - "to": "file:crates/g3-core/src/compaction.rs", - "type": "module_import", - "evidence": "use crate::compaction::{perform_compaction, CompactionConfig};" - }, - { - "from": "file:crates/g3-core/src/lib.rs", - "to": "file:crates/g3-core/src/stats.rs", - "type": "module_import", - "evidence": "use crate::stats::AgentStatsSnapshot;" - }, - { - "from": "file:crates/g3-core/src/lib.rs", - "to": "file:crates/g3-core/src/session_continuation.rs", - "type": "module_import", - "evidence": "use crate::session_continuation::{save_continuation, SessionContinuation};" - }, - { - "from": "file:crates/g3-core/src/lib.rs", - "to": "file:crates/g3-core/src/session_continuation.rs", - "type": "module_import", - "evidence": "use crate::session_continuation::clear_continuation;" - }, - { - "from": "file:crates/g3-core/src/lib.rs", - "to": "file:crates/g3-core/src/error_handling.rs", - "type": "module_import", - "evidence": "use crate::error_handling::{calculate_retry_delay, classify_error, ErrorType};" - }, - { - "from": "file:crates/g3-core/src/lib.rs", - "to": "file:crates/g3-core/src/error_handling.rs", - "type": "module_import", - "evidence": "use crate::error_handling::ErrorContext;" - }, - { - "from": "file:crates/g3-core/src/provider_config.rs", - "to": "crate:g3-config", - "type": "file_to_crate", - "evidence": "use g3_config::Config;" - }, - { - "from": "file:crates/g3-core/src/provider_registration.rs", - "to": "crate:g3-config", - "type": "file_to_crate", - "evidence": "use g3_config::Config;" - }, - { - "from": "file:crates/g3-core/src/provider_registration.rs", - "to": "crate:g3-providers", - "type": "file_to_crate", - "evidence": "use g3_providers::ProviderRegistry;" - }, - { - "from": "file:crates/g3-core/src/retry.rs", - "to": "file:crates/g3-core/src/error_handling.rs", - "type": "module_import", - "evidence": "use crate::error_handling::{calculate_retry_delay, classify_error, ErrorType, RecoverableError};" - }, - { - "from": "file:crates/g3-core/src/retry.rs", - "to": "file:crates/g3-core/src/ui_writer.rs", - "type": "module_import", - "evidence": "use crate::ui_writer::UiWriter;" - }, - { - "from": "file:crates/g3-core/src/session.rs", - "to": "file:crates/g3-core/src/context_window.rs", - "type": "module_import", - "evidence": "use crate::context_window::ContextWindow;" - }, - { - "from": "file:crates/g3-core/src/session.rs", - "to": "file:crates/g3-core/src/paths.rs", - "type": "module_import", - "evidence": "use crate::paths::{ensure_session_dir, get_context_summary_file, get_g3_dir, get_session_file};" - }, - { - "from": "file:crates/g3-core/src/session.rs", - "to": "crate:g3-providers", - "type": "file_to_crate", - "evidence": "use g3_providers::MessageRole;" - }, - { - "from": "file:crates/g3-core/src/stats.rs", - "to": "crate:g3-providers", - "type": "file_to_crate", - "evidence": "use g3_providers::MessageRole;" - }, - { - "from": "file:crates/g3-core/src/stats.rs", - "to": "file:crates/g3-core/src/context_window.rs", - "type": "module_import", - "evidence": "use crate::context_window::ContextWindow;" - }, - { - "from": "file:crates/g3-core/src/stats.rs", - "to": "file:crates/g3-core/src/context_window.rs", - "type": "module_import", - "evidence": "use crate::context_window::ContextWindow;" - }, - { - "from": "file:crates/g3-core/src/streaming.rs", - "to": "file:crates/g3-core/src/context_window.rs", - "type": "module_import", - "evidence": "use crate::context_window::ContextWindow;" - }, - { - "from": "file:crates/g3-core/src/streaming.rs", - "to": "file:crates/g3-core/src/streaming_parser.rs", - "type": "module_import", - "evidence": "use crate::streaming_parser::StreamingToolParser;" - }, - { - "from": "file:crates/g3-core/src/streaming.rs", - "to": "crate:g3-providers", - "type": "file_to_crate", - "evidence": "use g3_providers::{CompletionRequest, MessageRole};" - }, - { - "from": "file:crates/g3-core/src/task_result_comprehensive_tests.rs", - "to": "crate:g3-providers", - "type": "file_to_crate", - "evidence": "use g3_providers::{Message, MessageRole};" - }, - { - "from": "file:crates/g3-core/src/tool_definitions.rs", - "to": "crate:g3-providers", - "type": "file_to_crate", - "evidence": "use g3_providers::Tool;" - }, - { - "from": "file:crates/g3-core/src/tool_dispatch.rs", - "to": "file:crates/g3-core/src/tools/mod.rs", - "type": "module_import", - "evidence": "use crate::tools::executor::ToolContext;" - }, - { - "from": "file:crates/g3-core/src/tool_dispatch.rs", - "to": "file:crates/g3-core/src/tools/mod.rs", - "type": "module_import", - "evidence": "use crate::tools::{acd, file_ops, memory, misc, research, shell, todo, webdriver};" - }, - { - "from": "file:crates/g3-core/src/tool_dispatch.rs", - "to": "file:crates/g3-core/src/ui_writer.rs", - "type": "module_import", - "evidence": "use crate::ui_writer::UiWriter;" - }, - { - "from": "file:crates/g3-core/src/tools/acd.rs", - "to": "file:crates/g3-core/src/acd.rs", - "type": "module_import", - "evidence": "use crate::acd::Fragment;" - }, - { - "from": "file:crates/g3-core/src/tools/acd.rs", - "to": "file:crates/g3-core/src/ui_writer.rs", - "type": "module_import", - "evidence": "use crate::ui_writer::UiWriter;" - }, - { - "from": "file:crates/g3-core/src/tools/acd.rs", - "to": "file:crates/g3-core/src/acd.rs", - "type": "module_import", - "evidence": "use crate::acd::Fragment;" - }, - { - "from": "file:crates/g3-core/src/tools/acd.rs", - "to": "file:crates/g3-core/src/ui_writer.rs", - "type": "module_import", - "evidence": "use crate::ui_writer::NullUiWriter;" - }, - { - "from": "file:crates/g3-core/src/tools/acd.rs", - "to": "file:crates/g3-core/src/background_process.rs", - "type": "module_import", - "evidence": "use crate::background_process::BackgroundProcessManager;" - }, - { - "from": "file:crates/g3-core/src/tools/acd.rs", - "to": "file:crates/g3-core/src/webdriver_session.rs", - "type": "module_import", - "evidence": "use crate::webdriver_session::WebDriverSession;" - }, - { - "from": "file:crates/g3-core/src/tools/acd.rs", - "to": "crate:g3-providers", - "type": "file_to_crate", - "evidence": "use g3_providers::{Message, MessageRole};" - }, - { - "from": "file:crates/g3-core/src/tools/executor.rs", - "to": "file:crates/g3-core/src/background_process.rs", - "type": "module_import", - "evidence": "use crate::background_process::BackgroundProcessManager;" - }, - { - "from": "file:crates/g3-core/src/tools/executor.rs", - "to": "file:crates/g3-core/src/paths.rs", - "type": "module_import", - "evidence": "use crate::paths::{ensure_session_dir, get_session_todo_path, get_todo_path};" - }, - { - "from": "file:crates/g3-core/src/tools/executor.rs", - "to": "file:crates/g3-core/src/ui_writer.rs", - "type": "module_import", - "evidence": "use crate::ui_writer::UiWriter;" - }, - { - "from": "file:crates/g3-core/src/tools/executor.rs", - "to": "file:crates/g3-core/src/webdriver_session.rs", - "type": "module_import", - "evidence": "use crate::webdriver_session::WebDriverSession;" - }, - { - "from": "file:crates/g3-core/src/tools/executor.rs", - "to": "crate:g3-config", - "type": "file_to_crate", - "evidence": "use g3_config::Config;" - }, - { - "from": "file:crates/g3-core/src/tools/file_ops.rs", - "to": "file:crates/g3-core/src/ui_writer.rs", - "type": "module_import", - "evidence": "use crate::ui_writer::UiWriter;" - }, - { - "from": "file:crates/g3-core/src/tools/file_ops.rs", - "to": "file:crates/g3-core/src/utils.rs", - "type": "module_import", - "evidence": "use crate::utils::resolve_path_with_unicode_fallback;" - }, - { - "from": "file:crates/g3-core/src/tools/file_ops.rs", - "to": "file:crates/g3-core/src/utils.rs", - "type": "module_import", - "evidence": "use crate::utils::apply_unified_diff_to_string;" - }, - { - "from": "file:crates/g3-core/src/tools/memory.rs", - "to": "file:crates/g3-core/src/ui_writer.rs", - "type": "module_import", - "evidence": "use crate::ui_writer::UiWriter;" - }, - { - "from": "file:crates/g3-core/src/tools/misc.rs", - "to": "file:crates/g3-core/src/ui_writer.rs", - "type": "module_import", - "evidence": "use crate::ui_writer::UiWriter;" - }, - { - "from": "file:crates/g3-core/src/tools/research.rs", - "to": "file:crates/g3-core/src/ui_writer.rs", - "type": "module_import", - "evidence": "use crate::ui_writer::UiWriter;" - }, - { - "from": "file:crates/g3-core/src/tools/research.rs", - "to": "crate:g3-config", - "type": "file_to_crate", - "evidence": "use g3_config::WebDriverBrowser;" - }, - { - "from": "file:crates/g3-core/src/tools/shell.rs", - "to": "file:crates/g3-core/src/paths.rs", - "type": "module_import", - "evidence": "use crate::paths::{generate_short_id, get_tools_output_dir};" - }, - { - "from": "file:crates/g3-core/src/tools/shell.rs", - "to": "file:crates/g3-core/src/ui_writer.rs", - "type": "module_import", - "evidence": "use crate::ui_writer::UiWriter;" - }, - { - "from": "file:crates/g3-core/src/tools/shell.rs", - "to": "file:crates/g3-core/src/utils.rs", - "type": "module_import", - "evidence": "use crate::utils::resolve_paths_in_shell_command;" - }, - { - "from": "file:crates/g3-core/src/tools/shell.rs", - "to": "file:crates/g3-core/src/utils.rs", - "type": "module_import", - "evidence": "use crate::utils::shell_escape_command;" - }, - { - "from": "file:crates/g3-core/src/tools/todo.rs", - "to": "file:crates/g3-core/src/ui_writer.rs", - "type": "module_import", - "evidence": "use crate::ui_writer::UiWriter;" - }, - { - "from": "file:crates/g3-core/src/tools/webdriver.rs", - "to": "crate:g3-computer-control", - "type": "file_to_crate", - "evidence": "use g3_computer_control::WebDriverController;" - }, - { - "from": "file:crates/g3-core/src/tools/webdriver.rs", - "to": "file:crates/g3-core/src/ui_writer.rs", - "type": "module_import", - "evidence": "use crate::ui_writer::UiWriter;" - }, - { - "from": "file:crates/g3-core/src/tools/webdriver.rs", - "to": "file:crates/g3-core/src/webdriver_session.rs", - "type": "module_import", - "evidence": "use crate::webdriver_session::WebDriverSession;" - }, - { - "from": "file:crates/g3-core/src/tools/webdriver.rs", - "to": "crate:g3-config", - "type": "file_to_crate", - "evidence": "use g3_config::WebDriverBrowser;" - }, - { - "from": "file:crates/g3-core/src/tools/webdriver.rs", - "to": "crate:g3-config", - "type": "file_to_crate", - "evidence": "use g3_config::WebDriverBrowser;" - }, - { - "from": "file:crates/g3-core/src/webdriver_session.rs", - "to": "crate:g3-computer-control", - "type": "file_to_crate", - "evidence": "use g3_computer_control::{ChromeDriver, SafariDriver, WebDriverController, WebElement};" - }, - { - "from": "file:crates/g3-planner/src/lib.rs", - "to": "crate:g3-providers", - "type": "file_to_crate", - "evidence": "use g3_providers::{CompletionRequest, LLMProvider, Message, MessageRole};" - }, - { - "from": "file:crates/g3-planner/src/llm.rs", - "to": "crate:g3-config", - "type": "file_to_crate", - "evidence": "use g3_config::Config;" - }, - { - "from": "file:crates/g3-planner/src/llm.rs", - "to": "crate:g3-core", - "type": "file_to_crate", - "evidence": "use g3_core::project::Project;" - }, - { - "from": "file:crates/g3-planner/src/llm.rs", - "to": "crate:g3-core", - "type": "file_to_crate", - "evidence": "use g3_core::Agent;" - }, - { - "from": "file:crates/g3-planner/src/llm.rs", - "to": "crate:g3-core", - "type": "file_to_crate", - "evidence": "use g3_core::error_handling::{classify_error, ErrorType};" - }, - { - "from": "file:crates/g3-planner/src/llm.rs", - "to": "crate:g3-providers", - "type": "file_to_crate", - "evidence": "use g3_providers::{CompletionRequest, LLMProvider, Message, MessageRole};" - }, - { - "from": "file:crates/g3-planner/src/llm.rs", - "to": "file:crates/g3-planner/src/prompts.rs", - "type": "module_import", - "evidence": "use crate::prompts;" - }, - { - "from": "file:crates/g3-planner/src/planner.rs", - "to": "file:crates/g3-planner/src/git.rs", - "type": "module_import", - "evidence": "use crate::git;" - }, - { - "from": "file:crates/g3-planner/src/planner.rs", - "to": "file:crates/g3-planner/src/history.rs", - "type": "module_import", - "evidence": "use crate::history;" - }, - { - "from": "file:crates/g3-planner/src/planner.rs", - "to": "file:crates/g3-planner/src/llm.rs", - "type": "module_import", - "evidence": "use crate::llm;" - }, - { - "from": "file:crates/g3-planner/src/planner.rs", - "to": "file:crates/g3-planner/src/state.rs", - "type": "module_import", - "evidence": "use crate::state::{" - }, - { - "from": "file:crates/g3-planner/src/planner.rs", - "to": "crate:g3-core", - "type": "file_to_crate", - "evidence": "use g3_core::project::Project;" - }, - { - "from": "file:crates/g3-planner/src/planner.rs", - "to": "crate:g3-core", - "type": "file_to_crate", - "evidence": "use g3_core::retry::{execute_with_retry, RetryConfig, RetryResult};" - }, - { - "from": "file:crates/g3-planner/src/planner.rs", - "to": "crate:g3-core", - "type": "file_to_crate", - "evidence": "use g3_core::feedback_extraction::{extract_coach_feedback, FeedbackExtractionConfig};" - }, - { - "from": "file:crates/g3-planner/src/planner.rs", - "to": "crate:g3-core", - "type": "file_to_crate", - "evidence": "use g3_core::Agent;" - }, - { - "from": "file:crates/g3-providers/src/databricks.rs", - "to": "file:crates/g3-providers/src/streaming.rs", - "type": "module_import", - "evidence": "use crate::streaming::{decode_utf8_streaming, is_incomplete_json_error, make_final_chunk};" - }, - { - "from": "file:crates/studio/src/git.rs", - "to": "file:crates/studio/src/session.rs", - "type": "module_import", - "evidence": "use crate::session::Session;" - } + {"from": "crate:g3", "to": "crate:g3-cli", "type": "crate_dependency", "evidence": "Cargo.toml: g3-cli = { path = \"crates/g3-cli\" }"}, + {"from": "crate:g3", "to": "crate:g3-providers", "type": "crate_dependency", "evidence": "Cargo.toml: g3-providers = { path = \"crates/g3-providers\" }"}, + + {"from": "crate:g3-cli", "to": "crate:g3-core", "type": "crate_dependency", "evidence": "crates/g3-cli/Cargo.toml: g3-core = { path = \"../g3-core\" }"}, + {"from": "crate:g3-cli", "to": "crate:g3-config", "type": "crate_dependency", "evidence": "crates/g3-cli/Cargo.toml: g3-config = { path = \"../g3-config\" }"}, + {"from": "crate:g3-cli", "to": "crate:g3-planner", "type": "crate_dependency", "evidence": "crates/g3-cli/Cargo.toml: g3-planner = { path = \"../g3-planner\" }"}, + {"from": "crate:g3-cli", "to": "crate:g3-computer-control", "type": "crate_dependency", "evidence": "crates/g3-cli/Cargo.toml: g3-computer-control = { path = \"../g3-computer-control\" }"}, + {"from": "crate:g3-cli", "to": "crate:g3-providers", "type": "crate_dependency", "evidence": "crates/g3-cli/Cargo.toml: g3-providers = { path = \"../g3-providers\" }"}, + + {"from": "crate:g3-core", "to": "crate:g3-providers", "type": "crate_dependency", "evidence": "crates/g3-core/Cargo.toml: g3-providers = { path = \"../g3-providers\" }"}, + {"from": "crate:g3-core", "to": "crate:g3-config", "type": "crate_dependency", "evidence": "crates/g3-core/Cargo.toml: g3-config = { path = \"../g3-config\" }"}, + {"from": "crate:g3-core", "to": "crate:g3-execution", "type": "crate_dependency", "evidence": "crates/g3-core/Cargo.toml: g3-execution = { path = \"../g3-execution\" }"}, + {"from": "crate:g3-core", "to": "crate:g3-computer-control", "type": "crate_dependency", "evidence": "crates/g3-core/Cargo.toml: g3-computer-control = { path = \"../g3-computer-control\" }"}, + + {"from": "crate:g3-planner", "to": "crate:g3-providers", "type": "crate_dependency", "evidence": "crates/g3-planner/Cargo.toml: g3-providers = { path = \"../g3-providers\" }"}, + {"from": "crate:g3-planner", "to": "crate:g3-core", "type": "crate_dependency", "evidence": "crates/g3-planner/Cargo.toml: g3-core = { path = \"../g3-core\" }"}, + {"from": "crate:g3-planner", "to": "crate:g3-config", "type": "crate_dependency", "evidence": "crates/g3-planner/Cargo.toml: g3-config = { path = \"../g3-config\" }"}, + + {"from": "file:crates/g3-cli/src/lib.rs", "to": "crate:g3-config", "type": "import", "evidence": "use g3_config::Config"}, + {"from": "file:crates/g3-cli/src/lib.rs", "to": "crate:g3-core", "type": "import", "evidence": "use g3_core::project::Project; use g3_core::Agent; use g3_core::ui_writer::UiWriter"}, + + {"from": "file:crates/g3-cli/src/utils.rs", "to": "crate:g3-config", "type": "import", "evidence": "use g3_config::Config"}, + {"from": "file:crates/g3-cli/src/utils.rs", "to": "crate:g3-core", "type": "import", "evidence": "use g3_core::ui_writer::UiWriter; use g3_core::Agent"}, + {"from": "file:crates/g3-cli/src/utils.rs", "to": "file:crates/g3-cli/src/cli_args.rs", "type": "import", "evidence": "use crate::cli_args::Cli"}, + {"from": "file:crates/g3-cli/src/utils.rs", "to": "file:crates/g3-cli/src/simple_output.rs", "type": "import", "evidence": "use crate::simple_output::SimpleOutput"}, + + {"from": "file:crates/g3-cli/src/interactive.rs", "to": "crate:g3-core", "type": "import", "evidence": "use g3_core::ui_writer::UiWriter; use g3_core::Agent; use g3_core::ToolCall"}, + {"from": "file:crates/g3-cli/src/interactive.rs", "to": "file:crates/g3-cli/src/completion.rs", "type": "import", "evidence": "use crate::completion::G3Helper"}, + {"from": "file:crates/g3-cli/src/interactive.rs", "to": "file:crates/g3-cli/src/commands.rs", "type": "import", "evidence": "use crate::commands::{handle_command, CommandResult}"}, + {"from": "file:crates/g3-cli/src/interactive.rs", "to": "file:crates/g3-cli/src/display.rs", "type": "import", "evidence": "use crate::display::{LoadedContent, print_loaded_status, print_project_heading, print_workspace_path}"}, + {"from": "file:crates/g3-cli/src/interactive.rs", "to": "file:crates/g3-cli/src/g3_status.rs", "type": "import", "evidence": "use crate::g3_status::{G3Status, Status}"}, + {"from": "file:crates/g3-cli/src/interactive.rs", "to": "file:crates/g3-cli/src/project.rs", "type": "import", "evidence": "use crate::project::Project"}, + {"from": "file:crates/g3-cli/src/interactive.rs", "to": "file:crates/g3-cli/src/project_files.rs", "type": "import", "evidence": "use crate::project_files::extract_project_heading"}, + {"from": "file:crates/g3-cli/src/interactive.rs", "to": "file:crates/g3-cli/src/simple_output.rs", "type": "import", "evidence": "use crate::simple_output::SimpleOutput"}, + {"from": "file:crates/g3-cli/src/interactive.rs", "to": "file:crates/g3-cli/src/input_formatter.rs", "type": "import", "evidence": "use crate::input_formatter::reprint_formatted_input"}, + {"from": "file:crates/g3-cli/src/interactive.rs", "to": "file:crates/g3-cli/src/template.rs", "type": "import", "evidence": "use crate::template::process_template"}, + {"from": "file:crates/g3-cli/src/interactive.rs", "to": "file:crates/g3-cli/src/task_execution.rs", "type": "import", "evidence": "use crate::task_execution::execute_task_with_retry"}, + {"from": "file:crates/g3-cli/src/interactive.rs", "to": "file:crates/g3-cli/src/utils.rs", "type": "import", "evidence": "use crate::utils::display_context_progress"}, + + {"from": "file:crates/g3-cli/src/ui_writer_impl.rs", "to": "crate:g3-core", "type": "import", "evidence": "use g3_core::ui_writer::UiWriter"}, + {"from": "file:crates/g3-cli/src/ui_writer_impl.rs", "to": "file:crates/g3-cli/src/filter_json.rs", "type": "import", "evidence": "use crate::filter_json::{filter_json_tool_calls, reset_json_tool_state, ToolParsingHint}"}, + {"from": "file:crates/g3-cli/src/ui_writer_impl.rs", "to": "file:crates/g3-cli/src/display.rs", "type": "import", "evidence": "use crate::display::{shorten_path, shorten_paths_in_command}"}, + {"from": "file:crates/g3-cli/src/ui_writer_impl.rs", "to": "file:crates/g3-cli/src/streaming_markdown.rs", "type": "import", "evidence": "use crate::streaming_markdown::StreamingMarkdownFormatter"}, + + {"from": "file:crates/g3-cli/src/autonomous.rs", "to": "crate:g3-core", "type": "import", "evidence": "use g3_core::error_handling::{classify_error, ErrorType, RecoverableError}; use g3_core::project::Project; use g3_core::{Agent, DiscoveryOptions}; use g3_core::ui_writer::UiWriter"}, + {"from": "file:crates/g3-cli/src/autonomous.rs", "to": "file:crates/g3-cli/src/coach_feedback.rs", "type": "import", "evidence": "use crate::coach_feedback"}, + {"from": "file:crates/g3-cli/src/autonomous.rs", "to": "file:crates/g3-cli/src/metrics.rs", "type": "import", "evidence": "use crate::metrics::{format_elapsed_time, generate_turn_histogram, TurnMetrics}"}, + {"from": "file:crates/g3-cli/src/autonomous.rs", "to": "file:crates/g3-cli/src/simple_output.rs", "type": "import", "evidence": "use crate::simple_output::SimpleOutput"}, + {"from": "file:crates/g3-cli/src/autonomous.rs", "to": "file:crates/g3-cli/src/ui_writer_impl.rs", "type": "import", "evidence": "use crate::ui_writer_impl::ConsoleUiWriter"}, + + {"from": "file:crates/g3-cli/src/project_files.rs", "to": "file:crates/g3-cli/src/template.rs", "type": "import", "evidence": "use crate::template::process_template"}, + + {"from": "file:crates/g3-cli/src/coach_feedback.rs", "to": "crate:g3-core", "type": "import", "evidence": "use g3_core::Agent"}, + {"from": "file:crates/g3-cli/src/coach_feedback.rs", "to": "file:crates/g3-cli/src/simple_output.rs", "type": "import", "evidence": "use crate::simple_output::SimpleOutput"}, + {"from": "file:crates/g3-cli/src/coach_feedback.rs", "to": "file:crates/g3-cli/src/ui_writer_impl.rs", "type": "import", "evidence": "use crate::ui_writer_impl::ConsoleUiWriter"}, + + {"from": "file:crates/g3-cli/src/accumulative.rs", "to": "crate:g3-core", "type": "import", "evidence": "use g3_core::project::Project; use g3_core::Agent; use g3_core::ui_writer::UiWriter"}, + {"from": "file:crates/g3-cli/src/accumulative.rs", "to": "file:crates/g3-cli/src/autonomous.rs", "type": "import", "evidence": "use crate::autonomous::run_autonomous"}, + {"from": "file:crates/g3-cli/src/accumulative.rs", "to": "file:crates/g3-cli/src/cli_args.rs", "type": "import", "evidence": "use crate::cli_args::Cli"}, + {"from": "file:crates/g3-cli/src/accumulative.rs", "to": "file:crates/g3-cli/src/interactive.rs", "type": "import", "evidence": "use crate::interactive::run_interactive"}, + {"from": "file:crates/g3-cli/src/accumulative.rs", "to": "file:crates/g3-cli/src/simple_output.rs", "type": "import", "evidence": "use crate::simple_output::SimpleOutput"}, + {"from": "file:crates/g3-cli/src/accumulative.rs", "to": "file:crates/g3-cli/src/ui_writer_impl.rs", "type": "import", "evidence": "use crate::ui_writer_impl::ConsoleUiWriter"}, + {"from": "file:crates/g3-cli/src/accumulative.rs", "to": "file:crates/g3-cli/src/utils.rs", "type": "import", "evidence": "use crate::utils::load_config_with_cli_overrides"}, + {"from": "file:crates/g3-cli/src/accumulative.rs", "to": "file:crates/g3-cli/src/template.rs", "type": "import", "evidence": "use crate::template::process_template"}, + + {"from": "file:crates/g3-cli/src/input_formatter.rs", "to": "file:crates/g3-cli/src/streaming_markdown.rs", "type": "import", "evidence": "use crate::streaming_markdown::StreamingMarkdownFormatter"}, + + {"from": "file:crates/g3-cli/src/simple_output.rs", "to": "file:crates/g3-cli/src/g3_status.rs", "type": "import", "evidence": "use crate::g3_status::{G3Status, Status}"}, + + {"from": "file:crates/g3-cli/src/task_execution.rs", "to": "crate:g3-core", "type": "import", "evidence": "use g3_core::error_handling::{calculate_retry_delay, classify_error, ErrorType, RecoverableError}; use g3_core::ui_writer::UiWriter; use g3_core::Agent"}, + {"from": "file:crates/g3-cli/src/task_execution.rs", "to": "file:crates/g3-cli/src/simple_output.rs", "type": "import", "evidence": "use crate::simple_output::SimpleOutput"}, + {"from": "file:crates/g3-cli/src/task_execution.rs", "to": "file:crates/g3-cli/src/g3_status.rs", "type": "import", "evidence": "use crate::g3_status::G3Status"}, + + {"from": "file:crates/g3-cli/src/commands.rs", "to": "crate:g3-core", "type": "import", "evidence": "use g3_core::ui_writer::UiWriter; use g3_core::Agent"}, + {"from": "file:crates/g3-cli/src/commands.rs", "to": "file:crates/g3-cli/src/completion.rs", "type": "import", "evidence": "use crate::completion::G3Helper"}, + {"from": "file:crates/g3-cli/src/commands.rs", "to": "file:crates/g3-cli/src/g3_status.rs", "type": "import", "evidence": "use crate::g3_status::{G3Status, Status}"}, + {"from": "file:crates/g3-cli/src/commands.rs", "to": "file:crates/g3-cli/src/simple_output.rs", "type": "import", "evidence": "use crate::simple_output::SimpleOutput"}, + {"from": "file:crates/g3-cli/src/commands.rs", "to": "file:crates/g3-cli/src/project.rs", "type": "import", "evidence": "use crate::project::Project; use crate::project::load_and_validate_project"}, + {"from": "file:crates/g3-cli/src/commands.rs", "to": "file:crates/g3-cli/src/template.rs", "type": "import", "evidence": "use crate::template::process_template"}, + {"from": "file:crates/g3-cli/src/commands.rs", "to": "file:crates/g3-cli/src/task_execution.rs", "type": "import", "evidence": "use crate::task_execution::execute_task_with_retry"}, + + {"from": "file:crates/g3-cli/src/embedded_agents.rs", "to": "file:crates/g3-cli/src/template.rs", "type": "import", "evidence": "use crate::template::process_template"}, + + {"from": "file:crates/g3-cli/src/agent_mode.rs", "to": "crate:g3-core", "type": "import", "evidence": "use g3_core::ui_writer::UiWriter; use g3_core::Agent"}, + {"from": "file:crates/g3-cli/src/agent_mode.rs", "to": "file:crates/g3-cli/src/project_files.rs", "type": "import", "evidence": "use crate::project_files::{combine_project_content, read_agents_config, read_include_prompt, read_workspace_memory}"}, + {"from": "file:crates/g3-cli/src/agent_mode.rs", "to": "file:crates/g3-cli/src/display.rs", "type": "import", "evidence": "use crate::display::{LoadedContent, print_loaded_status, print_workspace_path}"}, + {"from": "file:crates/g3-cli/src/agent_mode.rs", "to": "file:crates/g3-cli/src/language_prompts.rs", "type": "import", "evidence": "use crate::language_prompts::{get_language_prompts_for_workspace, get_agent_language_prompts_for_workspace_with_langs}"}, + {"from": "file:crates/g3-cli/src/agent_mode.rs", "to": "file:crates/g3-cli/src/simple_output.rs", "type": "import", "evidence": "use crate::simple_output::SimpleOutput"}, + {"from": "file:crates/g3-cli/src/agent_mode.rs", "to": "file:crates/g3-cli/src/embedded_agents.rs", "type": "import", "evidence": "use crate::embedded_agents::load_agent_prompt"}, + {"from": "file:crates/g3-cli/src/agent_mode.rs", "to": "file:crates/g3-cli/src/ui_writer_impl.rs", "type": "import", "evidence": "use crate::ui_writer_impl::ConsoleUiWriter"}, + {"from": "file:crates/g3-cli/src/agent_mode.rs", "to": "file:crates/g3-cli/src/interactive.rs", "type": "import", "evidence": "use crate::interactive::run_interactive"}, + {"from": "file:crates/g3-cli/src/agent_mode.rs", "to": "file:crates/g3-cli/src/template.rs", "type": "import", "evidence": "use crate::template::process_template"}, + {"from": "file:crates/g3-cli/src/agent_mode.rs", "to": "file:crates/g3-cli/src/project.rs", "type": "import", "evidence": "use crate::project::{Project, load_and_validate_project}"}, + {"from": "file:crates/g3-cli/src/agent_mode.rs", "to": "file:crates/g3-cli/src/cli_args.rs", "type": "import", "evidence": "use crate::cli_args::CommonFlags"}, + + {"from": "file:crates/g3-core/src/lib.rs", "to": "crate:g3-config", "type": "import", "evidence": "use g3_config::Config"}, + {"from": "file:crates/g3-core/src/lib.rs", "to": "crate:g3-providers", "type": "import", "evidence": "use g3_providers::{CacheControl, CompletionRequest, Message, MessageRole, ProviderRegistry}"}, + {"from": "file:crates/g3-core/src/lib.rs", "to": "file:crates/g3-core/src/ui_writer.rs", "type": "import", "evidence": "use crate::ui_writer::UiWriter"}, + + {"from": "file:crates/g3-core/src/retry.rs", "to": "file:crates/g3-core/src/error_handling.rs", "type": "import", "evidence": "use crate::error_handling::{calculate_retry_delay, classify_error, ErrorType, RecoverableError}"}, + {"from": "file:crates/g3-core/src/retry.rs", "to": "file:crates/g3-core/src/ui_writer.rs", "type": "import", "evidence": "use crate::ui_writer::UiWriter"}, + {"from": "file:crates/g3-core/src/retry.rs", "to": "file:crates/g3-core/src/lib.rs", "type": "import", "evidence": "use crate::{Agent, DiscoveryOptions, TaskResult}"}, + + {"from": "file:crates/g3-core/src/provider_config.rs", "to": "crate:g3-config", "type": "import", "evidence": "use g3_config::Config"}, + + {"from": "file:crates/g3-core/src/compaction.rs", "to": "crate:g3-providers", "type": "import", "evidence": "use g3_providers::{CompletionRequest, Message, MessageRole, ProviderRegistry}"}, + {"from": "file:crates/g3-core/src/compaction.rs", "to": "file:crates/g3-core/src/context_window.rs", "type": "import", "evidence": "use crate::context_window::ContextWindow"}, + {"from": "file:crates/g3-core/src/compaction.rs", "to": "file:crates/g3-core/src/provider_config.rs", "type": "import", "evidence": "use crate::provider_config"}, + {"from": "file:crates/g3-core/src/compaction.rs", "to": "file:crates/g3-core/src/ui_writer.rs", "type": "import", "evidence": "use crate::ui_writer::UiWriter"}, + + {"from": "file:crates/g3-core/src/stats.rs", "to": "crate:g3-providers", "type": "import", "evidence": "use g3_providers::MessageRole"}, + {"from": "file:crates/g3-core/src/stats.rs", "to": "file:crates/g3-core/src/context_window.rs", "type": "import", "evidence": "use crate::context_window::ContextWindow"}, + {"from": "file:crates/g3-core/src/stats.rs", "to": "file:crates/g3-core/src/lib.rs", "type": "import", "evidence": "use crate::CacheStats"}, + + {"from": "file:crates/g3-core/src/streaming.rs", "to": "crate:g3-providers", "type": "import", "evidence": "use g3_providers::{CompletionRequest, MessageRole}"}, + {"from": "file:crates/g3-core/src/streaming.rs", "to": "file:crates/g3-core/src/context_window.rs", "type": "import", "evidence": "use crate::context_window::ContextWindow"}, + {"from": "file:crates/g3-core/src/streaming.rs", "to": "file:crates/g3-core/src/streaming_parser.rs", "type": "import", "evidence": "use crate::streaming_parser::StreamingToolParser"}, + {"from": "file:crates/g3-core/src/streaming.rs", "to": "file:crates/g3-core/src/lib.rs", "type": "import", "evidence": "use crate::ToolCall"}, + + {"from": "file:crates/g3-core/src/tool_definitions.rs", "to": "crate:g3-providers", "type": "import", "evidence": "use g3_providers::Tool"}, + + {"from": "file:crates/g3-core/src/provider_registration.rs", "to": "crate:g3-config", "type": "import", "evidence": "use g3_config::Config"}, + {"from": "file:crates/g3-core/src/provider_registration.rs", "to": "crate:g3-providers", "type": "import", "evidence": "use g3_providers::ProviderRegistry"}, + + {"from": "file:crates/g3-core/src/webdriver_session.rs", "to": "crate:g3-computer-control", "type": "import", "evidence": "use g3_computer_control::{ChromeDriver, SafariDriver, WebDriverController, WebElement}"}, + + {"from": "file:crates/g3-core/src/acd.rs", "to": "crate:g3-providers", "type": "import", "evidence": "use g3_providers::Message"}, + {"from": "file:crates/g3-core/src/acd.rs", "to": "file:crates/g3-core/src/paths.rs", "type": "import", "evidence": "use crate::paths::get_fragments_dir"}, + {"from": "file:crates/g3-core/src/acd.rs", "to": "file:crates/g3-core/src/lib.rs", "type": "import", "evidence": "use crate::ToolCall"}, + + {"from": "file:crates/g3-core/src/streaming_parser.rs", "to": "file:crates/g3-core/src/lib.rs", "type": "import", "evidence": "use crate::ToolCall"}, + + {"from": "file:crates/g3-core/src/task_result.rs", "to": "file:crates/g3-core/src/context_window.rs", "type": "import", "evidence": "use crate::ContextWindow"}, + + {"from": "file:crates/g3-core/src/tool_dispatch.rs", "to": "file:crates/g3-core/src/tools/executor.rs", "type": "import", "evidence": "use crate::tools::executor::ToolContext"}, + {"from": "file:crates/g3-core/src/tool_dispatch.rs", "to": "file:crates/g3-core/src/tools/mod.rs", "type": "import", "evidence": "use crate::tools::{acd, file_ops, memory, misc, plan, research, shell, webdriver}"}, + {"from": "file:crates/g3-core/src/tool_dispatch.rs", "to": "file:crates/g3-core/src/ui_writer.rs", "type": "import", "evidence": "use crate::ui_writer::UiWriter"}, + {"from": "file:crates/g3-core/src/tool_dispatch.rs", "to": "file:crates/g3-core/src/lib.rs", "type": "import", "evidence": "use crate::ToolCall"}, + + {"from": "file:crates/g3-core/src/session.rs", "to": "crate:g3-providers", "type": "import", "evidence": "use g3_providers::MessageRole"}, + {"from": "file:crates/g3-core/src/session.rs", "to": "file:crates/g3-core/src/context_window.rs", "type": "import", "evidence": "use crate::context_window::ContextWindow"}, + {"from": "file:crates/g3-core/src/session.rs", "to": "file:crates/g3-core/src/paths.rs", "type": "import", "evidence": "use crate::paths::{ensure_session_dir, get_context_summary_file, get_g3_dir, get_session_file}"}, + + {"from": "file:crates/g3-core/src/context_window.rs", "to": "crate:g3-providers", "type": "import", "evidence": "use g3_providers::{Message, MessageRole, Usage}"}, + {"from": "file:crates/g3-core/src/context_window.rs", "to": "file:crates/g3-core/src/paths.rs", "type": "import", "evidence": "use crate::paths::get_thinned_dir"}, + {"from": "file:crates/g3-core/src/context_window.rs", "to": "file:crates/g3-core/src/lib.rs", "type": "import", "evidence": "use crate::ToolCall"}, + + {"from": "file:crates/g3-core/src/feedback_extraction.rs", "to": "file:crates/g3-core/src/lib.rs", "type": "import", "evidence": "use crate::{Agent, TaskResult}"}, + {"from": "file:crates/g3-core/src/feedback_extraction.rs", "to": "file:crates/g3-core/src/ui_writer.rs", "type": "import", "evidence": "use crate::ui_writer::UiWriter"}, + + {"from": "file:crates/g3-core/src/tools/acd.rs", "to": "file:crates/g3-core/src/acd.rs", "type": "import", "evidence": "use crate::acd::Fragment"}, + {"from": "file:crates/g3-core/src/tools/acd.rs", "to": "file:crates/g3-core/src/ui_writer.rs", "type": "import", "evidence": "use crate::ui_writer::UiWriter"}, + {"from": "file:crates/g3-core/src/tools/acd.rs", "to": "file:crates/g3-core/src/lib.rs", "type": "import", "evidence": "use crate::ToolCall"}, + + {"from": "file:crates/g3-core/src/tools/executor.rs", "to": "crate:g3-config", "type": "import", "evidence": "use g3_config::Config"}, + {"from": "file:crates/g3-core/src/tools/executor.rs", "to": "file:crates/g3-core/src/background_process.rs", "type": "import", "evidence": "use crate::background_process::BackgroundProcessManager"}, + {"from": "file:crates/g3-core/src/tools/executor.rs", "to": "file:crates/g3-core/src/pending_research.rs", "type": "import", "evidence": "use crate::pending_research::PendingResearchManager"}, + {"from": "file:crates/g3-core/src/tools/executor.rs", "to": "file:crates/g3-core/src/paths.rs", "type": "import", "evidence": "use crate::paths::{ensure_session_dir, get_session_todo_path, get_todo_path}"}, + {"from": "file:crates/g3-core/src/tools/executor.rs", "to": "file:crates/g3-core/src/ui_writer.rs", "type": "import", "evidence": "use crate::ui_writer::UiWriter"}, + {"from": "file:crates/g3-core/src/tools/executor.rs", "to": "file:crates/g3-core/src/webdriver_session.rs", "type": "import", "evidence": "use crate::webdriver_session::WebDriverSession"}, + {"from": "file:crates/g3-core/src/tools/executor.rs", "to": "file:crates/g3-core/src/lib.rs", "type": "import", "evidence": "use crate::ToolCall"}, + + {"from": "file:crates/g3-core/src/tools/shell.rs", "to": "file:crates/g3-core/src/paths.rs", "type": "import", "evidence": "use crate::paths::{generate_short_id, get_tools_output_dir}"}, + {"from": "file:crates/g3-core/src/tools/shell.rs", "to": "file:crates/g3-core/src/ui_writer.rs", "type": "import", "evidence": "use crate::ui_writer::UiWriter"}, + {"from": "file:crates/g3-core/src/tools/shell.rs", "to": "file:crates/g3-core/src/utils.rs", "type": "import", "evidence": "use crate::utils::resolve_paths_in_shell_command; use crate::utils::shell_escape_command"}, + {"from": "file:crates/g3-core/src/tools/shell.rs", "to": "file:crates/g3-core/src/lib.rs", "type": "import", "evidence": "use crate::ToolCall"}, + + {"from": "file:crates/g3-core/src/tools/research.rs", "to": "crate:g3-config", "type": "import", "evidence": "use g3_config::WebDriverBrowser"}, + {"from": "file:crates/g3-core/src/tools/research.rs", "to": "file:crates/g3-core/src/ui_writer.rs", "type": "import", "evidence": "use crate::ui_writer::UiWriter"}, + {"from": "file:crates/g3-core/src/tools/research.rs", "to": "file:crates/g3-core/src/lib.rs", "type": "import", "evidence": "use crate::ToolCall"}, + + {"from": "file:crates/g3-core/src/tools/file_ops.rs", "to": "file:crates/g3-core/src/ui_writer.rs", "type": "import", "evidence": "use crate::ui_writer::UiWriter"}, + {"from": "file:crates/g3-core/src/tools/file_ops.rs", "to": "file:crates/g3-core/src/utils.rs", "type": "import", "evidence": "use crate::utils::resolve_path_with_unicode_fallback; use crate::utils::apply_unified_diff_to_string"}, + {"from": "file:crates/g3-core/src/tools/file_ops.rs", "to": "file:crates/g3-core/src/lib.rs", "type": "import", "evidence": "use crate::ToolCall"}, + + {"from": "file:crates/g3-core/src/tools/plan.rs", "to": "file:crates/g3-core/src/paths.rs", "type": "import", "evidence": "use crate::paths::{ensure_session_dir, get_session_logs_dir}"}, + {"from": "file:crates/g3-core/src/tools/plan.rs", "to": "file:crates/g3-core/src/ui_writer.rs", "type": "import", "evidence": "use crate::ui_writer::UiWriter"}, + {"from": "file:crates/g3-core/src/tools/plan.rs", "to": "file:crates/g3-core/src/lib.rs", "type": "import", "evidence": "use crate::ToolCall"}, + + {"from": "file:crates/g3-core/src/tools/memory.rs", "to": "file:crates/g3-core/src/ui_writer.rs", "type": "import", "evidence": "use crate::ui_writer::UiWriter"}, + {"from": "file:crates/g3-core/src/tools/memory.rs", "to": "file:crates/g3-core/src/lib.rs", "type": "import", "evidence": "use crate::ToolCall"}, + + {"from": "file:crates/g3-core/src/tools/misc.rs", "to": "file:crates/g3-core/src/ui_writer.rs", "type": "import", "evidence": "use crate::ui_writer::UiWriter"}, + {"from": "file:crates/g3-core/src/tools/misc.rs", "to": "file:crates/g3-core/src/lib.rs", "type": "import", "evidence": "use crate::ToolCall"}, + + {"from": "file:crates/g3-core/src/tools/webdriver.rs", "to": "crate:g3-computer-control", "type": "import", "evidence": "use g3_computer_control::WebDriverController"}, + {"from": "file:crates/g3-core/src/tools/webdriver.rs", "to": "file:crates/g3-core/src/ui_writer.rs", "type": "import", "evidence": "use crate::ui_writer::UiWriter"}, + {"from": "file:crates/g3-core/src/tools/webdriver.rs", "to": "file:crates/g3-core/src/webdriver_session.rs", "type": "import", "evidence": "use crate::webdriver_session::WebDriverSession"}, + {"from": "file:crates/g3-core/src/tools/webdriver.rs", "to": "file:crates/g3-core/src/lib.rs", "type": "import", "evidence": "use crate::ToolCall"}, + + {"from": "file:crates/g3-providers/src/openai.rs", "to": "file:crates/g3-providers/src/lib.rs", "type": "import", "evidence": "use crate::{...}"}, + {"from": "file:crates/g3-providers/src/anthropic.rs", "to": "file:crates/g3-providers/src/lib.rs", "type": "import", "evidence": "use crate::{...}"}, + {"from": "file:crates/g3-providers/src/gemini.rs", "to": "file:crates/g3-providers/src/lib.rs", "type": "import", "evidence": "use crate::{...}"}, + {"from": "file:crates/g3-providers/src/databricks.rs", "to": "file:crates/g3-providers/src/lib.rs", "type": "import", "evidence": "use crate::{...}"}, + {"from": "file:crates/g3-providers/src/databricks.rs", "to": "file:crates/g3-providers/src/streaming.rs", "type": "import", "evidence": "use crate::streaming::{decode_utf8_streaming, is_incomplete_json_error, make_final_chunk}"}, + {"from": "file:crates/g3-providers/src/mock.rs", "to": "file:crates/g3-providers/src/lib.rs", "type": "import", "evidence": "use crate::{...}"}, + {"from": "file:crates/g3-providers/src/embedded/provider.rs", "to": "file:crates/g3-providers/src/lib.rs", "type": "import", "evidence": "use crate::{...}"}, + {"from": "file:crates/g3-providers/src/streaming.rs", "to": "file:crates/g3-providers/src/lib.rs", "type": "import", "evidence": "use crate::{CompletionChunk, ToolCall, Usage}"}, + + {"from": "file:crates/g3-planner/src/lib.rs", "to": "crate:g3-providers", "type": "import", "evidence": "use g3_providers::{CompletionRequest, LLMProvider, Message, MessageRole}"}, + {"from": "file:crates/g3-planner/src/llm.rs", "to": "crate:g3-config", "type": "import", "evidence": "use g3_config::Config"}, + {"from": "file:crates/g3-planner/src/llm.rs", "to": "crate:g3-core", "type": "import", "evidence": "use g3_core::project::Project; use g3_core::Agent; use g3_core::error_handling::{classify_error, ErrorType}"}, + {"from": "file:crates/g3-planner/src/llm.rs", "to": "crate:g3-providers", "type": "import", "evidence": "use g3_providers::{CompletionRequest, LLMProvider, Message, MessageRole}"}, + {"from": "file:crates/g3-planner/src/llm.rs", "to": "file:crates/g3-planner/src/prompts.rs", "type": "import", "evidence": "use crate::prompts"}, + {"from": "file:crates/g3-planner/src/planner.rs", "to": "file:crates/g3-planner/src/git.rs", "type": "import", "evidence": "use crate::git"}, + {"from": "file:crates/g3-planner/src/planner.rs", "to": "file:crates/g3-planner/src/history.rs", "type": "import", "evidence": "use crate::history"}, + {"from": "file:crates/g3-planner/src/planner.rs", "to": "file:crates/g3-planner/src/llm.rs", "type": "import", "evidence": "use crate::llm"}, + {"from": "file:crates/g3-planner/src/planner.rs", "to": "file:crates/g3-planner/src/state.rs", "type": "import", "evidence": "use crate::state::{...}"}, + + {"from": "file:crates/g3-computer-control/src/platform/macos.rs", "to": "file:crates/g3-computer-control/src/lib.rs", "type": "import", "evidence": "use crate::{...}"}, + {"from": "file:crates/g3-computer-control/src/platform/linux.rs", "to": "file:crates/g3-computer-control/src/lib.rs", "type": "import", "evidence": "use crate::{types::Rect, ComputerController}"}, + {"from": "file:crates/g3-computer-control/src/platform/windows.rs", "to": "file:crates/g3-computer-control/src/lib.rs", "type": "import", "evidence": "use crate::{types::Rect, ComputerController}"}, + + {"from": "file:crates/studio/src/git.rs", "to": "file:crates/studio/src/session.rs", "type": "import", "evidence": "use crate::session::Session"} ] -} \ No newline at end of file +} diff --git a/analysis/deps/graph.summary.md b/analysis/deps/graph.summary.md index 1adec56..02f3bff 100644 --- a/analysis/deps/graph.summary.md +++ b/analysis/deps/graph.summary.md @@ -1,86 +1,105 @@ # Dependency Graph Summary -## Overview +**Generated**: 2025-02-02 +**Extraction Method**: Static import parsing via ripgrep +**Workspace**: g3 -| Metric | Value | +## Metrics + +| Metric | Count | |--------|-------| -| Total nodes | 108 | -| Total edges | 186 | -| Crate nodes | 9 | -| File nodes | 99 | -| Crate-level edges | 14 | -| File-level edges | 172 | +| Total Nodes | 127 | +| Crate Nodes | 9 | +| File Nodes | 118 | +| Total Edges | 156 | +| Crate-level Edges | 14 | +| File-level Edges | 142 | -## Crate Structure +## Crate Dependency Structure -| Crate | Path | Direct Dependencies | -|-------|------|---------------------| -| g3 | `.` | g3-cli, g3-providers | -| g3-cli | `crates/g3-cli` | g3-core, g3-config, g3-planner, g3-computer-control, g3-providers | -| g3-core | `crates/g3-core` | g3-providers, g3-config, g3-execution, g3-computer-control | -| g3-providers | `crates/g3-providers` | (none) | -| g3-config | `crates/g3-config` | (none) | -| g3-execution | `crates/g3-execution` | (none) | -| g3-planner | `crates/g3-planner` | g3-providers, g3-core, g3-config | -| g3-computer-control | `crates/g3-computer-control` | (none) | -| studio | `crates/studio` | (none) | +``` +g3 (root binary) +├── g3-cli +│ ├── g3-core +│ ├── g3-config +│ ├── g3-planner +│ ├── g3-computer-control +│ └── g3-providers +├── g3-providers + +g3-core +├── g3-providers +├── g3-config +├── g3-execution +└── g3-computer-control + +g3-planner +├── g3-providers +├── g3-core +└── g3-config + +studio (standalone binary) +└── (no internal g3 dependencies) + +g3-config (leaf - no internal deps) +g3-execution (leaf - no internal deps) +g3-computer-control (leaf - no internal deps) +g3-providers (leaf - no internal deps) +``` ## Entrypoints -| Type | Location | Evidence | -|------|----------|----------| -| Binary | `crates/g3-cli/src/lib.rs` | `run()` function, CLI dispatch | -| Binary | `crates/studio/src/main.rs` | `main()` function | -| Library | `crates/g3-core/src/lib.rs` | `Agent` struct, core API | +| Entrypoint | Path | Type | +|------------|------|------| +| g3 | `src/main.rs` | Binary | +| studio | `crates/studio/src/main.rs` | Binary | +| g3-cli | `crates/g3-cli/src/lib.rs` | Library | ## Top Fan-In Nodes (Most Depended Upon) -| Node | Fan-In | Type | -|------|--------|------| -| crate:g3-core | 35 | crate | -| crate:g3-providers | 19 | crate | -| file:crates/g3-core/src/ui_writer.rs | 15 | file | -| crate:g3-config | 13 | crate | -| file:crates/g3-cli/src/g3_status.rs | 10 | file | -| file:crates/g3-cli/src/simple_output.rs | 8 | file | -| file:crates/g3-core/src/context_window.rs | 6 | file | -| file:crates/g3-cli/src/template.rs | 6 | file | -| file:crates/g3-core/src/paths.rs | 5 | file | -| crate:g3-computer-control | 4 | crate | +| Node | Fan-In | Description | +|------|--------|-------------| +| `g3-core/src/lib.rs` | 18 | Core Agent, ToolCall types | +| `g3-core/src/ui_writer.rs` | 14 | UiWriter trait | +| `g3-cli/src/simple_output.rs` | 9 | SimpleOutput helper | +| `g3-cli/src/template.rs` | 6 | Template processing | +| `g3-core/src/paths.rs` | 6 | Path utilities | +| `g3-core/src/context_window.rs` | 5 | Context window management | +| `g3-cli/src/g3_status.rs` | 5 | Status formatting | +| `crate:g3-providers` | 5 | Provider abstractions | +| `crate:g3-config` | 5 | Configuration | +| `crate:g3-core` | 5 | Core engine | ## Top Fan-Out Nodes (Most Dependencies) -| Node | Fan-Out | Type | -|------|---------|------| -| file:crates/g3-cli/src/agent_mode.rs | 13 | file | -| file:crates/g3-core/src/lib.rs | 13 | file | -| file:crates/g3-cli/src/commands.rs | 12 | file | -| file:crates/g3-cli/src/interactive.rs | 12 | file | -| file:crates/g3-cli/src/accumulative.rs | 11 | file | -| file:crates/g3-planner/src/planner.rs | 8 | file | -| file:crates/g3-cli/src/autonomous.rs | 8 | file | -| file:crates/g3-core/src/tools/acd.rs | 7 | file | -| file:crates/g3-planner/src/llm.rs | 6 | file | -| file:crates/g3-cli/src/utils.rs | 5 | file | +| Node | Fan-Out | Description | +|------|---------|-------------| +| `g3-cli/src/interactive.rs` | 11 | Interactive REPL | +| `g3-cli/src/agent_mode.rs` | 11 | Agent mode runner | +| `g3-cli/src/accumulative.rs` | 8 | Accumulative mode | +| `g3-cli/src/commands.rs` | 7 | CLI commands | +| `g3-core/src/tools/executor.rs` | 7 | Tool execution context | +| `g3-cli/src/autonomous.rs` | 5 | Autonomous mode | +| `g3-core/src/compaction.rs` | 4 | Context compaction | +| `g3-core/src/tool_dispatch.rs` | 4 | Tool routing | -## File Counts by Crate +## Crate File Counts -| Crate | Source Files | -|-------|-------------| -| g3-cli | 23 | -| g3-core | 42 | -| g3-providers | 9 | -| g3-config | 2 | -| g3-execution | 1 | -| g3-planner | 8 | -| g3-computer-control | 11 | -| studio | 3 | +| Crate | Source Files | Test Files | +|-------|--------------|------------| +| g3-cli | 21 | 5 | +| g3-core | 32 | 33 | +| g3-providers | 12 | 4 | +| g3-planner | 7 | 4 | +| g3-computer-control | 12 | 1 | +| g3-config | 2 | 0 | +| g3-execution | 1 | 0 | +| studio | 3 | 0 | ## Extraction Limitations -1. **Static analysis only**: Dynamic dispatch and trait objects not traced -2. **Use statement parsing**: Only `use g3_*` and `use crate::` patterns captured -3. **Conditional compilation**: `#[cfg(...)]` blocks not evaluated -4. **Re-exports**: `pub use` chains not fully resolved -5. **Test files excluded**: Files in `/tests/` directories not included -6. **Examples excluded**: Files in `/examples/` directories not included +1. **Dynamic imports not captured**: Any runtime module loading is not reflected +2. **Macro-generated imports**: Imports generated by macros may be missed +3. **Conditional compilation**: `#[cfg(...)]` gated imports are included regardless of target +4. **Re-exports**: Transitive re-exports through `pub use` are not fully traced +5. **Test files excluded from graph**: Test files (`tests/`) are not included in file nodes diff --git a/analysis/deps/layers.observed.md b/analysis/deps/layers.observed.md index 627a696..843a263 100644 --- a/analysis/deps/layers.observed.md +++ b/analysis/deps/layers.observed.md @@ -1,80 +1,152 @@ -# Observed Layering +# Observed Layering Structure -## Crate-Level Layers +**Generated**: 2025-02-02 +**Method**: Derived from crate dependencies and file import patterns -Based on dependency direction, the following layers are observed: +## Crate Layers + +Based on dependency direction, the crates form the following layers: ``` -Layer 0 (Leaf crates - no internal dependencies): - ├── g3-config - ├── g3-execution - ├── g3-providers - ├── g3-computer-control - └── studio +Layer 0 (Leaf/Foundation): +┌─────────────────┬─────────────────┬─────────────────────────┬─────────────────┐ +│ g3-config │ g3-execution │ g3-computer-control │ g3-providers │ +│ (config mgmt) │ (code execution)│ (browser/UI control) │ (LLM providers) │ +└─────────────────┴─────────────────┴─────────────────────────┴─────────────────┘ + │ + ▼ +Layer 1 (Core Engine): +┌───────────────────────────────────────────────────────────────────────────────┐ +│ g3-core │ +│ (Agent, ToolCall, context management, tool dispatch, streaming) │ +└───────────────────────────────────────────────────────────────────────────────┘ + │ + ▼ +Layer 2 (Orchestration): +┌───────────────────────────────────────────────────────────────────────────────┐ +│ g3-planner │ +│ (fast-discovery planner, git integration, LLM orchestration) │ +└───────────────────────────────────────────────────────────────────────────────┘ + │ + ▼ +Layer 3 (CLI/Application): +┌───────────────────────────────────────────────────────────────────────────────┐ +│ g3-cli │ +│ (interactive mode, autonomous mode, agent mode, commands, UI) │ +└───────────────────────────────────────────────────────────────────────────────┘ + │ + ▼ +Layer 4 (Binary Entry): +┌───────────────────────────────────────────────────────────────────────────────┐ +│ g3 │ +│ (main binary, minimal - delegates to g3-cli) │ +└───────────────────────────────────────────────────────────────────────────────┘ -Layer 1 (Depends on Layer 0): - └── g3-core - └── depends on: g3-providers, g3-config, g3-execution, g3-computer-control - -Layer 2 (Depends on Layer 0 and 1): - ├── g3-cli - │ └── depends on: g3-core, g3-config, g3-planner, g3-computer-control, g3-providers - └── g3-planner - └── depends on: g3-providers, g3-core, g3-config - -Layer 3 (Application root): - └── g3 - └── depends on: g3-cli, g3-providers +Separate: +┌───────────────────────────────────────────────────────────────────────────────┐ +│ studio │ +│ (standalone multi-agent workspace manager, no g3 crate dependencies) │ +└───────────────────────────────────────────────────────────────────────────────┘ ``` -## Layer Metrics +## Layer Violations -| Layer | Crates | Description | -|-------|--------|-------------| -| 0 | 5 | Foundation crates with no internal deps | -| 1 | 1 | Core engine | -| 2 | 2 | High-level orchestration | -| 3 | 1 | Application entry point | +**None detected at crate level.** -## Observed Groupings by Path +All dependencies flow downward (higher layer → lower layer). No upward dependencies exist. -### g3-core/src/tools/ -Tool implementations grouped under `tools/` submodule: -- executor.rs (tool context and execution) -- acd.rs, file_ops.rs, memory.rs, misc.rs, research.rs, shell.rs, todo.rs, webdriver.rs +## File-Level Layering Within g3-cli -### g3-core/src/code_search/ -Code search functionality: -- mod.rs (API types) -- searcher.rs (tree-sitter implementation) +``` +Entry Layer: + lib.rs (run function, mode dispatch) + │ + ▼ +Mode Layer: + interactive.rs, autonomous.rs, agent_mode.rs, accumulative.rs + │ + ▼ +Command/Execution Layer: + commands.rs, task_execution.rs, coach_feedback.rs + │ + ▼ +Utility Layer: + simple_output.rs, g3_status.rs, display.rs, template.rs, + ui_writer_impl.rs, streaming_markdown.rs, filter_json.rs, + metrics.rs, project_files.rs, language_prompts.rs, embedded_agents.rs + │ + ▼ +Data Layer: + cli_args.rs, project.rs, completion.rs, theme.rs +``` -### g3-computer-control/src/platform/ -Platform-specific implementations: -- macos.rs, linux.rs, windows.rs (conditional compilation) +## File-Level Layering Within g3-core -### g3-computer-control/src/webdriver/ -Browser automation: -- safari.rs, chrome.rs, diagnostics.rs +``` +Entry Layer: + lib.rs (Agent struct, stream_completion_with_tools) + │ + ▼ +Orchestration Layer: + retry.rs, compaction.rs, feedback_extraction.rs + │ + ▼ +Tool Layer: + tool_dispatch.rs, tool_definitions.rs + tools/mod.rs → tools/{shell,file_ops,plan,webdriver,research,memory,misc,acd}.rs + tools/executor.rs + │ + ▼ +Streaming Layer: + streaming.rs, streaming_parser.rs + │ + ▼ +Context Layer: + context_window.rs, acd.rs, session.rs, session_continuation.rs + │ + ▼ +Infrastructure Layer: + paths.rs, utils.rs, error_handling.rs, stats.rs, + provider_config.rs, provider_registration.rs, + background_process.rs, pending_research.rs, + webdriver_session.rs, ui_writer.rs, project.rs, prompts.rs + │ + ▼ +Search Layer: + code_search/mod.rs, code_search/searcher.rs +``` -### g3-providers/src/ -LLM provider implementations: -- anthropic.rs, openai.rs, gemini.rs, databricks.rs, embedded.rs -- oauth.rs (authentication) -- mock.rs (testing) +## File-Level Layering Within g3-providers -## Directionality +``` +Entry Layer: + lib.rs (LLMProvider trait, ProviderRegistry, Message types) + │ + ▼ +Provider Implementations: + anthropic.rs, openai.rs, gemini.rs, databricks.rs, mock.rs + embedded/mod.rs → embedded/provider.rs, embedded/adapters/{mod,glm}.rs + │ + ▼ +Utility Layer: + streaming.rs, oauth.rs +``` -| From | To | Direction | Violations | -|------|----|-----------|------------| -| g3 | g3-cli | down | none | -| g3-cli | g3-core | down | none | -| g3-cli | g3-planner | lateral | none | -| g3-core | g3-providers | down | none | -| g3-core | g3-config | down | none | -| g3-planner | g3-core | lateral | none | +## Directionality Confidence + +| Layer Boundary | Confidence | Notes | +|----------------|------------|-------| +| g3 → g3-cli | High | Single dependency, clear delegation | +| g3-cli → g3-core | High | Many imports, clear consumer relationship | +| g3-cli → g3-planner | High | Explicit dependency for planning features | +| g3-core → g3-providers | High | Core uses provider abstractions | +| g3-core → g3-config | High | Core reads configuration | +| g3-core → g3-computer-control | High | WebDriver integration | +| g3-core → g3-execution | Medium | Declared but minimal observed usage | +| g3-planner → g3-core | High | Planner uses Agent, error handling | ## Uncertainty -- **studio**: Isolated crate with no detected internal dependencies; may have runtime integration not captured -- **g3-execution**: Minimal crate (1 file); purpose unclear from static analysis alone -- **Lateral dependencies**: g3-cli ↔ g3-planner relationship suggests potential for extraction or consolidation +1. **g3-execution usage**: Declared as dependency of g3-core but no `use g3_execution::` statements found in source. May be used transitively or for future features. + +2. **studio isolation**: studio has no g3 crate dependencies. It may interact with g3 via filesystem/process boundaries rather than library calls. diff --git a/analysis/deps/sccs.md b/analysis/deps/sccs.md index 165b3bf..e553ce0 100644 --- a/analysis/deps/sccs.md +++ b/analysis/deps/sccs.md @@ -1,27 +1,83 @@ # Strongly Connected Components (Cycles) +**Generated**: 2025-02-02 +**Method**: Manual analysis of crate and file-level dependency graph + +## Crate-Level Cycles + +**None detected.** + +The crate dependency graph is a DAG (directed acyclic graph). All crate dependencies flow downward: + +``` +g3-cli → g3-core → g3-providers + → g3-config + → g3-planner → g3-core (creates diamond, not cycle) + → g3-providers + → g3-config + → g3-computer-control + → g3-providers + +g3-core → g3-execution + → g3-computer-control +``` + +## File-Level Cycles Within Crates + +### g3-core + +**Potential cycle via lib.rs re-exports:** + +Multiple modules import from `lib.rs` (for `ToolCall`, `Agent`, etc.), and `lib.rs` declares these modules. This is standard Rust module structure, not a problematic cycle. + +``` +lib.rs ←──mod──→ streaming_parser.rs (uses crate::ToolCall) +lib.rs ←──mod──→ context_window.rs (uses crate::ToolCall) +lib.rs ←──mod──→ acd.rs (uses crate::ToolCall) +lib.rs ←──mod──→ streaming.rs (uses crate::ToolCall) +lib.rs ←──mod──→ stats.rs (uses crate::CacheStats) +lib.rs ←──mod──→ retry.rs (uses crate::{Agent, DiscoveryOptions, TaskResult}) +lib.rs ←──mod──→ feedback_extraction.rs (uses crate::{Agent, TaskResult}) +``` + +This is the standard Rust pattern where `lib.rs` defines types and submodules import them via `crate::`. Not a problematic SCC. + +### g3-cli + +**No problematic cycles detected.** + +Dependencies flow from high-level modules (interactive, agent_mode, accumulative) down to utilities (simple_output, g3_status, template). + +### g3-providers + +**No cycles detected.** + +All provider implementations (anthropic, openai, gemini, databricks, embedded, mock) import from `lib.rs` only. + +### g3-planner + +**No cycles detected.** + +`planner.rs` imports from `git.rs`, `history.rs`, `llm.rs`, `state.rs`. No reverse dependencies. + +## Cross-Crate Diamonds (Not Cycles) + +The following diamond patterns exist but are not cycles: + +1. **g3-cli → g3-core → g3-config** and **g3-cli → g3-config** +2. **g3-cli → g3-planner → g3-core** and **g3-cli → g3-core** +3. **g3-cli → g3-planner → g3-providers** and **g3-cli → g3-providers** + +These are valid DAG structures where multiple paths lead to the same dependency. + ## Summary -| Metric | Value | -|--------|-------| -| Non-trivial SCCs | 0 | -| Total nodes in cycles | 0 | +| Scope | Cycles Found | Severity | +|-------|--------------|----------| +| Crate-level | 0 | N/A | +| File-level (g3-core) | 0 problematic | N/A | +| File-level (g3-cli) | 0 | N/A | +| File-level (g3-providers) | 0 | N/A | +| File-level (g3-planner) | 0 | N/A | -## Analysis - -No strongly connected components with more than one node were detected in the dependency graph. - -This indicates the codebase has a **directed acyclic graph (DAG)** structure at both the crate and file level for the dependencies that were extracted. - -## Methodology - -- Tarjan's algorithm applied to all 108 nodes and 186 edges -- Only SCCs with 2+ nodes reported (trivial single-node SCCs excluded) -- Analysis covers `use` statement imports only - -## Caveats - -1. **Trait implementations**: Mutual trait dependencies not captured by `use` statements -2. **Type references**: Types referenced without explicit `use` not detected -3. **Macro expansions**: Dependencies introduced by macros not traced -4. **Build-time dependencies**: `build.rs` dependencies not included +The codebase has a clean acyclic dependency structure. diff --git a/crates/g3-core/src/tools/plan.rs b/crates/g3-core/src/tools/plan.rs index 0d2f3e3..4d69ab6 100644 --- a/crates/g3-core/src/tools/plan.rs +++ b/crates/g3-core/src/tools/plan.rs @@ -773,7 +773,7 @@ pub async fn execute_plan_read( } None => { ctx.ui_writer.print_plan_compact(None, None, false); - Ok("📋 No plan exists for this session. Use plan_write to create one.".to_string()) + Ok(String::new()) } } } diff --git a/crates/g3-core/tests/tool_execution_roundtrip_test.rs b/crates/g3-core/tests/tool_execution_roundtrip_test.rs index 3bfeac4..503549f 100644 --- a/crates/g3-core/tests/tool_execution_roundtrip_test.rs +++ b/crates/g3-core/tests/tool_execution_roundtrip_test.rs @@ -451,8 +451,9 @@ items: let read_call = make_tool_call("plan_read", serde_json::json!({})); let result = agent.execute_tool(&read_call).await.unwrap(); - assert!(result.contains("No plan") || result.to_lowercase().contains("no plan"), - "Should indicate empty: {}", result); + // Empty string is returned when no plan exists (UI already shows "empty") + assert!(result.is_empty() || result.contains("No plan"), + "Should be empty or indicate no plan: {}", result); } /// Test Plan approval