diff --git a/analysis/deps/graph.json b/analysis/deps/graph.json index e8bd6d1..f98a3ad 100644 --- a/analysis/deps/graph.json +++ b/analysis/deps/graph.json @@ -1,1980 +1,1708 @@ { - "edges": [ - { - "evidence": "Cargo.toml: g3 depends on g3-cli", - "source": "g3", - "target": "g3-cli", - "type": "crate_dependency" - }, - { - "evidence": "Cargo.toml: g3 depends on g3-providers", - "source": "g3", - "target": "g3-providers", - "type": "crate_dependency" - }, - { - "evidence": "Cargo.toml: g3-cli depends on g3-core", - "source": "g3-cli", - "target": "g3-core", - "type": "crate_dependency" - }, - { - "evidence": "Cargo.toml: g3-cli depends on g3-config", - "source": "g3-cli", - "target": "g3-config", - "type": "crate_dependency" - }, - { - "evidence": "Cargo.toml: g3-cli depends on g3-planner", - "source": "g3-cli", - "target": "g3-planner", - "type": "crate_dependency" - }, - { - "evidence": "Cargo.toml: g3-cli depends on g3-computer-control", - "source": "g3-cli", - "target": "g3-computer-control", - "type": "crate_dependency" - }, - { - "evidence": "Cargo.toml: g3-cli depends on g3-providers", - "source": "g3-cli", - "target": "g3-providers", - "type": "crate_dependency" - }, - { - "evidence": "Cargo.toml: g3-cli depends on g3-ensembles", - "source": "g3-cli", - "target": "g3-ensembles", - "type": "crate_dependency" - }, - { - "evidence": "Cargo.toml: g3-core depends on g3-providers", - "source": "g3-core", - "target": "g3-providers", - "type": "crate_dependency" - }, - { - "evidence": "Cargo.toml: g3-core depends on g3-config", - "source": "g3-core", - "target": "g3-config", - "type": "crate_dependency" - }, - { - "evidence": "Cargo.toml: g3-core depends on g3-execution", - "source": "g3-core", - "target": "g3-execution", - "type": "crate_dependency" - }, - { - "evidence": "Cargo.toml: g3-core depends on g3-computer-control", - "source": "g3-core", - "target": "g3-computer-control", - "type": "crate_dependency" - }, - { - "evidence": "Cargo.toml: g3-ensembles depends on g3-core", - "source": "g3-ensembles", - "target": "g3-core", - "type": "crate_dependency" - }, - { - "evidence": "Cargo.toml: g3-ensembles depends on g3-config", - "source": "g3-ensembles", - "target": "g3-config", - "type": "crate_dependency" - }, - { - "evidence": "Cargo.toml: g3-planner depends on g3-providers", - "source": "g3-planner", - "target": "g3-providers", - "type": "crate_dependency" - }, - { - "evidence": "Cargo.toml: g3-planner depends on g3-core", - "source": "g3-planner", - "target": "g3-core", - "type": "crate_dependency" - }, - { - "evidence": "Cargo.toml: g3-planner depends on g3-config", - "source": "g3-planner", - "target": "g3-config", - "type": "crate_dependency" - }, - { - "evidence": "pub mod filter_json;", - "source": "./crates/g3-cli/src/lib.rs", - "target": "./crates/g3-cli/src/filter_json.rs", - "type": "mod_declaration" - }, - { - "evidence": "pub mod streaming_markdown;", - "source": "./crates/g3-cli/src/lib.rs", - "target": "./crates/g3-cli/src/streaming_markdown.rs", - "type": "mod_declaration" - }, - { - "evidence": "use g3_config::Config;", - "source": "./crates/g3-cli/src/lib.rs", - "target": "g3-config", - "type": "file_to_crate" - }, - { - "evidence": "use g3_core::{project::Project, ui_writer::UiWriter, Agent, DiscoveryOptions};", - "source": "./crates/g3-cli/src/lib.rs", - "target": "g3-core", - "type": "file_to_crate" - }, - { - "evidence": "use g3_core::error_handling::{classify_error, ErrorType, RecoverableError};", - "source": "./crates/g3-cli/src/lib.rs", - "target": "g3-core", - "type": "file_to_crate" - }, - { - "evidence": "mod simple_output;", - "source": "./crates/g3-cli/src/lib.rs", - "target": "./crates/g3-cli/src/simple_output.rs", - "type": "mod_declaration" - }, - { - "evidence": "mod ui_writer_impl;", - "source": "./crates/g3-cli/src/lib.rs", - "target": "./crates/g3-cli/src/ui_writer_impl.rs", - "type": "mod_declaration" - }, - { - "evidence": "mod machine_ui_writer;", - "source": "./crates/g3-cli/src/lib.rs", - "target": "./crates/g3-cli/src/machine_ui_writer.rs", - "type": "mod_declaration" - }, - { - "evidence": "use g3_core::get_agent_system_prompt;", - "source": "./crates/g3-cli/src/lib.rs", - "target": "g3-core", - "type": "file_to_crate" - }, - { - "evidence": "use g3_core::find_incomplete_agent_session;", - "source": "./crates/g3-cli/src/lib.rs", - "target": "g3-core", - "type": "file_to_crate" - }, - { - "evidence": "use g3_core::error_handling::{classify_error, ErrorType, RecoverableError};", - "source": "./crates/g3-cli/src/lib.rs", - "target": "g3-core", - "type": "file_to_crate" - }, - { - "evidence": "use g3_core::error_handling::{classify_error, ErrorType, RecoverableError};", - "source": "./crates/g3-cli/src/lib.rs", - "target": "g3-core", - "type": "file_to_crate" - }, - { - "evidence": "use g3_core::ui_writer::UiWriter;", - "source": "./crates/g3-cli/src/machine_ui_writer.rs", - "target": "g3-core", - "type": "file_to_crate" - }, - { - "evidence": "use g3_core::ui_writer::UiWriter;", - "source": "./crates/g3-cli/src/ui_writer_impl.rs", - "target": "g3-core", - "type": "file_to_crate" - }, - { - "evidence": "use g3_cli::filter_json::{filter_json_tool_calls, reset_json_tool_state};", - "source": "./crates/g3-cli/tests/filter_json_stress_test.rs", - "target": "g3-cli", - "type": "file_to_crate" - }, - { - "evidence": "use g3_cli::filter_json::{filter_json_tool_calls, reset_json_tool_state};", - "source": "./crates/g3-cli/tests/filter_json_test.rs", - "target": "g3-cli", - "type": "file_to_crate" - }, - { - "evidence": "use g3_cli::streaming_markdown::StreamingMarkdownFormatter;", - "source": "./crates/g3-cli/tests/streaming_markdown_test.rs", - "target": "g3-cli", - "type": "file_to_crate" - }, - { - "evidence": "use g3_computer_control::MacAxController;", - "source": "./crates/g3-computer-control/examples/macax_demo.rs", - "target": "g3-computer-control", - "type": "file_to_crate" - }, - { - "evidence": "use g3_computer_control::webdriver::WebDriverController;", - "source": "./crates/g3-computer-control/examples/safari_demo.rs", - "target": "g3-computer-control", - "type": "file_to_crate" - }, - { - "evidence": "use g3_computer_control::SafariDriver;", - "source": "./crates/g3-computer-control/examples/safari_demo.rs", - "target": "g3-computer-control", - "type": "file_to_crate" - }, - { - "evidence": "use g3_computer_control::create_controller;", - "source": "./crates/g3-computer-control/examples/test_permission_prompt.rs", - "target": "g3-computer-control", - "type": "file_to_crate" - }, - { - "evidence": "use g3_computer_control::MacAxController;", - "source": "./crates/g3-computer-control/examples/test_type_text.rs", - "target": "g3-computer-control", - "type": "file_to_crate" - }, - { - "evidence": "use g3_computer_control::ocr::{DefaultOCR, OCREngine};", - "source": "./crates/g3-computer-control/examples/test_vision.rs", - "target": "g3-computer-control", - "type": "file_to_crate" - }, - { - "evidence": "use g3_computer_control::create_controller;", - "source": "./crates/g3-computer-control/examples/test_window_capture.rs", - "target": "g3-computer-control", - "type": "file_to_crate" - }, - { - "evidence": "pub mod macax;", - "source": "./crates/g3-computer-control/src/lib.rs", - "target": "./crates/g3-computer-control/src/macax/mod.rs", - "type": "mod_declaration" - }, - { - "evidence": "pub mod ocr;", - "source": "./crates/g3-computer-control/src/lib.rs", - "target": "./crates/g3-computer-control/src/ocr/mod.rs", - "type": "mod_declaration" - }, - { - "evidence": "pub mod platform;", - "source": "./crates/g3-computer-control/src/lib.rs", - "target": "./crates/g3-computer-control/src/platform/mod.rs", - "type": "mod_declaration" - }, - { - "evidence": "pub mod types;", - "source": "./crates/g3-computer-control/src/lib.rs", - "target": "./crates/g3-computer-control/src/types.rs", - "type": "mod_declaration" - }, - { - "evidence": "pub mod webdriver;", - "source": "./crates/g3-computer-control/src/lib.rs", - "target": "./crates/g3-computer-control/src/webdriver/mod.rs", - "type": "mod_declaration" - }, - { - "evidence": "pub mod controller;", - "source": "./crates/g3-computer-control/src/macax/mod.rs", - "target": "./crates/g3-computer-control/src/macax/controller.rs", - "type": "mod_declaration" - }, - { - "evidence": "mod tests;", - "source": "./crates/g3-computer-control/src/macax/mod.rs", - "target": "./crates/g3-computer-control/src/macax/tests.rs", - "type": "mod_declaration" - }, - { - "evidence": "pub mod vision;", - "source": "./crates/g3-computer-control/src/ocr/mod.rs", - "target": "./crates/g3-computer-control/src/ocr/vision.rs", - "type": "mod_declaration" - }, - { - "evidence": "pub mod tesseract;", - "source": "./crates/g3-computer-control/src/ocr/mod.rs", - "target": "./crates/g3-computer-control/src/ocr/tesseract.rs", - "type": "mod_declaration" - }, - { - "evidence": "pub mod macos;", - "source": "./crates/g3-computer-control/src/platform/mod.rs", - "target": "./crates/g3-computer-control/src/platform/macos.rs", - "type": "mod_declaration" - }, - { - "evidence": "pub mod linux;", - "source": "./crates/g3-computer-control/src/platform/mod.rs", - "target": "./crates/g3-computer-control/src/platform/linux.rs", - "type": "mod_declaration" - }, - { - "evidence": "pub mod windows;", - "source": "./crates/g3-computer-control/src/platform/mod.rs", - "target": "./crates/g3-computer-control/src/platform/windows.rs", - "type": "mod_declaration" - }, - { - "evidence": "pub mod safari;", - "source": "./crates/g3-computer-control/src/webdriver/mod.rs", - "target": "./crates/g3-computer-control/src/webdriver/safari.rs", - "type": "mod_declaration" - }, - { - "evidence": "pub mod chrome;", - "source": "./crates/g3-computer-control/src/webdriver/mod.rs", - "target": "./crates/g3-computer-control/src/webdriver/chrome.rs", - "type": "mod_declaration" - }, - { - "evidence": "pub mod diagnostics;", - "source": "./crates/g3-computer-control/src/webdriver/mod.rs", - "target": "./crates/g3-computer-control/src/webdriver/diagnostics.rs", - "type": "mod_declaration" - }, - { - "evidence": "use g3_computer_control::*;", - "source": "./crates/g3-computer-control/tests/integration_test.rs", - "target": "g3-computer-control", - "type": "file_to_crate" - }, - { - "evidence": "mod tests;", - "source": "./crates/g3-config/src/lib.rs", - "target": "./crates/g3-config/src/tests.rs", - "type": "mod_declaration" - }, - { - "evidence": "mod searcher;", - "source": "./crates/g3-core/src/code_search/mod.rs", - "target": "./crates/g3-core/src/code_search/searcher.rs", - "type": "mod_declaration" - }, - { - "evidence": "use g3_providers::{Message, MessageRole, Usage};", - "source": "./crates/g3-core/src/context_window.rs", - "target": "g3-providers", - "type": "file_to_crate" - }, - { - "evidence": "pub mod context_window;", - "source": "./crates/g3-core/src/lib.rs", - "target": "./crates/g3-core/src/context_window.rs", - "type": "mod_declaration" - }, - { - "evidence": "pub mod background_process;", - "source": "./crates/g3-core/src/lib.rs", - "target": "./crates/g3-core/src/background_process.rs", - "type": "mod_declaration" - }, - { - "evidence": "pub mod code_search;", - "source": "./crates/g3-core/src/lib.rs", - "target": "./crates/g3-core/src/code_search/mod.rs", - "type": "mod_declaration" - }, - { - "evidence": "pub mod error_handling;", - "source": "./crates/g3-core/src/lib.rs", - "target": "./crates/g3-core/src/error_handling.rs", - "type": "mod_declaration" - }, - { - "evidence": "pub mod feedback_extraction;", - "source": "./crates/g3-core/src/lib.rs", - "target": "./crates/g3-core/src/feedback_extraction.rs", - "type": "mod_declaration" - }, - { - "evidence": "pub mod paths;", - "source": "./crates/g3-core/src/lib.rs", - "target": "./crates/g3-core/src/paths.rs", - "type": "mod_declaration" - }, - { - "evidence": "pub mod project;", - "source": "./crates/g3-core/src/lib.rs", - "target": "./crates/g3-core/src/project.rs", - "type": "mod_declaration" - }, - { - "evidence": "pub mod provider_registration;", - "source": "./crates/g3-core/src/lib.rs", - "target": "./crates/g3-core/src/provider_registration.rs", - "type": "mod_declaration" - }, - { - "evidence": "pub mod provider_config;", - "source": "./crates/g3-core/src/lib.rs", - "target": "./crates/g3-core/src/provider_config.rs", - "type": "mod_declaration" - }, - { - "evidence": "pub mod retry;", - "source": "./crates/g3-core/src/lib.rs", - "target": "./crates/g3-core/src/retry.rs", - "type": "mod_declaration" - }, - { - "evidence": "pub mod session;", - "source": "./crates/g3-core/src/lib.rs", - "target": "./crates/g3-core/src/session.rs", - "type": "mod_declaration" - }, - { - "evidence": "pub mod session_continuation;", - "source": "./crates/g3-core/src/lib.rs", - "target": "./crates/g3-core/src/session_continuation.rs", - "type": "mod_declaration" - }, - { - "evidence": "pub mod streaming_parser;", - "source": "./crates/g3-core/src/lib.rs", - "target": "./crates/g3-core/src/streaming_parser.rs", - "type": "mod_declaration" - }, - { - "evidence": "pub mod task_result;", - "source": "./crates/g3-core/src/lib.rs", - "target": "./crates/g3-core/src/task_result.rs", - "type": "mod_declaration" - }, - { - "evidence": "pub mod tool_dispatch;", - "source": "./crates/g3-core/src/lib.rs", - "target": "./crates/g3-core/src/tool_dispatch.rs", - "type": "mod_declaration" - }, - { - "evidence": "pub mod tool_definitions;", - "source": "./crates/g3-core/src/lib.rs", - "target": "./crates/g3-core/src/tool_definitions.rs", - "type": "mod_declaration" - }, - { - "evidence": "pub mod tools;", - "source": "./crates/g3-core/src/lib.rs", - "target": "./crates/g3-core/src/tools/mod.rs", - "type": "mod_declaration" - }, - { - "evidence": "pub mod ui_writer;", - "source": "./crates/g3-core/src/lib.rs", - "target": "./crates/g3-core/src/ui_writer.rs", - "type": "mod_declaration" - }, - { - "evidence": "pub mod streaming;", - "source": "./crates/g3-core/src/lib.rs", - "target": "./crates/g3-core/src/streaming.rs", - "type": "mod_declaration" - }, - { - "evidence": "pub mod utils;", - "source": "./crates/g3-core/src/lib.rs", - "target": "./crates/g3-core/src/utils.rs", - "type": "mod_declaration" - }, - { - "evidence": "pub mod webdriver_session;", - "source": "./crates/g3-core/src/lib.rs", - "target": "./crates/g3-core/src/webdriver_session.rs", - "type": "mod_declaration" - }, - { - "evidence": "mod task_result_comprehensive_tests;", - "source": "./crates/g3-core/src/lib.rs", - "target": "./crates/g3-core/src/task_result_comprehensive_tests.rs", - "type": "mod_declaration" - }, - { - "evidence": "mod tilde_expansion_tests;", - "source": "./crates/g3-core/src/lib.rs", - "target": "./crates/g3-core/src/tilde_expansion_tests.rs", - "type": "mod_declaration" - }, - { - "evidence": "mod error_handling_test;", - "source": "./crates/g3-core/src/lib.rs", - "target": "./crates/g3-core/src/error_handling_test.rs", - "type": "mod_declaration" - }, - { - "evidence": "mod prompts;", - "source": "./crates/g3-core/src/lib.rs", - "target": "./crates/g3-core/src/prompts.rs", - "type": "mod_declaration" - }, - { - "evidence": "use g3_config::Config;", - "source": "./crates/g3-core/src/lib.rs", - "target": "g3-config", - "type": "file_to_crate" - }, - { - "evidence": "use g3_providers::{CacheControl, CompletionRequest, Message, MessageRole, ProviderRegistry};", - "source": "./crates/g3-core/src/lib.rs", - "target": "g3-providers", - "type": "file_to_crate" - }, - { - "evidence": "use g3_config::Config;", - "source": "./crates/g3-core/src/provider_config.rs", - "target": "g3-config", - "type": "file_to_crate" - }, - { - "evidence": "use g3_config::Config;", - "source": "./crates/g3-core/src/provider_registration.rs", - "target": "g3-config", - "type": "file_to_crate" - }, - { - "evidence": "use g3_providers::ProviderRegistry;", - "source": "./crates/g3-core/src/provider_registration.rs", - "target": "g3-providers", - "type": "file_to_crate" - }, - { - "evidence": "use g3_providers::MessageRole;", - "source": "./crates/g3-core/src/session.rs", - "target": "g3-providers", - "type": "file_to_crate" - }, - { - "evidence": "use g3_providers::{CompletionRequest, MessageRole};", - "source": "./crates/g3-core/src/streaming.rs", - "target": "g3-providers", - "type": "file_to_crate" - }, - { - "evidence": "use g3_providers::{Message, MessageRole};", - "source": "./crates/g3-core/src/task_result_comprehensive_tests.rs", - "target": "g3-providers", - "type": "file_to_crate" - }, - { - "evidence": "use g3_providers::Tool;", - "source": "./crates/g3-core/src/tool_definitions.rs", - "target": "g3-providers", - "type": "file_to_crate" - }, - { - "evidence": "use g3_config::Config;", - "source": "./crates/g3-core/src/tools/executor.rs", - "target": "g3-config", - "type": "file_to_crate" - }, - { - "evidence": "pub mod executor;", - "source": "./crates/g3-core/src/tools/mod.rs", - "target": "./crates/g3-core/src/tools/executor.rs", - "type": "mod_declaration" - }, - { - "evidence": "pub mod file_ops;", - "source": "./crates/g3-core/src/tools/mod.rs", - "target": "./crates/g3-core/src/tools/file_ops.rs", - "type": "mod_declaration" - }, - { - "evidence": "pub mod memory;", - "source": "./crates/g3-core/src/tools/mod.rs", - "target": "./crates/g3-core/src/tools/memory.rs", - "type": "mod_declaration" - }, - { - "evidence": "pub mod misc;", - "source": "./crates/g3-core/src/tools/mod.rs", - "target": "./crates/g3-core/src/tools/misc.rs", - "type": "mod_declaration" - }, - { - "evidence": "pub mod research;", - "source": "./crates/g3-core/src/tools/mod.rs", - "target": "./crates/g3-core/src/tools/research.rs", - "type": "mod_declaration" - }, - { - "evidence": "pub mod shell;", - "source": "./crates/g3-core/src/tools/mod.rs", - "target": "./crates/g3-core/src/tools/shell.rs", - "type": "mod_declaration" - }, - { - "evidence": "pub mod todo;", - "source": "./crates/g3-core/src/tools/mod.rs", - "target": "./crates/g3-core/src/tools/todo.rs", - "type": "mod_declaration" - }, - { - "evidence": "pub mod webdriver;", - "source": "./crates/g3-core/src/tools/mod.rs", - "target": "./crates/g3-core/src/tools/webdriver.rs", - "type": "mod_declaration" - }, - { - "evidence": "use g3_config::WebDriverBrowser;", - "source": "./crates/g3-core/src/tools/research.rs", - "target": "g3-config", - "type": "file_to_crate" - }, - { - "evidence": "use g3_computer_control::WebDriverController;", - "source": "./crates/g3-core/src/tools/webdriver.rs", - "target": "g3-computer-control", - "type": "file_to_crate" - }, - { - "evidence": "use g3_config::WebDriverBrowser;", - "source": "./crates/g3-core/src/tools/webdriver.rs", - "target": "g3-config", - "type": "file_to_crate" - }, - { - "evidence": "use g3_computer_control::{ChromeDriver, SafariDriver, WebDriverController, WebElement};", - "source": "./crates/g3-core/src/webdriver_session.rs", - "target": "g3-computer-control", - "type": "file_to_crate" - }, - { - "evidence": "use g3_core::background_process::BackgroundProcessManager;", - "source": "./crates/g3-core/tests/background_process_demo_test.rs", - "target": "g3-core", - "type": "file_to_crate" - }, - { - "evidence": "use g3_core::code_search::{execute_code_search, CodeSearchRequest, SearchSpec};", - "source": "./crates/g3-core/tests/code_search_test.rs", - "target": "g3-core", - "type": "file_to_crate" - }, - { - "evidence": "use g3_core::StreamingToolParser;", - "source": "./crates/g3-core/tests/duplicate_detection_test.rs", - "target": "g3-core", - "type": "file_to_crate" - }, - { - "evidence": "use g3_providers::CompletionChunk;", - "source": "./crates/g3-core/tests/duplicate_detection_test.rs", - "target": "g3-providers", - "type": "file_to_crate" - }, - { - "evidence": "use g3_core::StreamingToolParser;", - "source": "./crates/g3-core/tests/incomplete_tool_call_test.rs", - "target": "g3-core", - "type": "file_to_crate" - }, - { - "evidence": "use g3_providers::CompletionChunk;", - "source": "./crates/g3-core/tests/incomplete_tool_call_test.rs", - "target": "g3-providers", - "type": "file_to_crate" - }, - { - "evidence": "use g3_providers::ImageContent;", - "source": "./crates/g3-core/tests/read_image_test.rs", - "target": "g3-providers", - "type": "file_to_crate" - }, - { - "evidence": "use g3_core::StreamingToolParser;", - "source": "./crates/g3-core/tests/streaming_parser_test.rs", - "target": "g3-core", - "type": "file_to_crate" - }, - { - "evidence": "use g3_providers::CompletionChunk;", - "source": "./crates/g3-core/tests/streaming_parser_test.rs", - "target": "g3-providers", - "type": "file_to_crate" - }, - { - "evidence": "use g3_config::Config;", - "source": "./crates/g3-core/tests/test_agent_session_id.rs", - "target": "g3-config", - "type": "file_to_crate" - }, - { - "evidence": "use g3_core::ui_writer::NullUiWriter;", - "source": "./crates/g3-core/tests/test_agent_session_id.rs", - "target": "g3-core", - "type": "file_to_crate" - }, - { - "evidence": "use g3_core::Agent;", - "source": "./crates/g3-core/tests/test_agent_session_id.rs", - "target": "g3-core", - "type": "file_to_crate" - }, - { - "evidence": "use g3_core::ContextWindow;", - "source": "./crates/g3-core/tests/test_context_thinning.rs", - "target": "g3-core", - "type": "file_to_crate" - }, - { - "evidence": "use g3_providers::{Message, MessageRole};", - "source": "./crates/g3-core/tests/test_context_thinning.rs", - "target": "g3-providers", - "type": "file_to_crate" - }, - { - "evidence": "use g3_config::Config;", - "source": "./crates/g3-core/tests/test_preflight_max_tokens.rs", - "target": "g3-config", - "type": "file_to_crate" - }, - { - "evidence": "use g3_core::ContextWindow;", - "source": "./crates/g3-core/tests/test_preflight_max_tokens.rs", - "target": "g3-core", - "type": "file_to_crate" - }, - { - "evidence": "use g3_core::ContextWindow;", - "source": "./crates/g3-core/tests/test_reset_with_summary.rs", - "target": "g3-core", - "type": "file_to_crate" - }, - { - "evidence": "use g3_providers::{Message, MessageRole};", - "source": "./crates/g3-core/tests/test_reset_with_summary.rs", - "target": "g3-providers", - "type": "file_to_crate" - }, - { - "evidence": "use g3_core::session_continuation::{", - "source": "./crates/g3-core/tests/test_session_continuation.rs", - "target": "g3-core", - "type": "file_to_crate" - }, - { - "evidence": "use g3_core::session_continuation::find_incomplete_agent_session;", - "source": "./crates/g3-core/tests/test_session_continuation.rs", - "target": "g3-core", - "type": "file_to_crate" - }, - { - "evidence": "use g3_core::session_continuation::find_incomplete_agent_session;", - "source": "./crates/g3-core/tests/test_session_continuation.rs", - "target": "g3-core", - "type": "file_to_crate" - }, - { - "evidence": "use g3_core::session_continuation::find_incomplete_agent_session;", - "source": "./crates/g3-core/tests/test_session_continuation.rs", - "target": "g3-core", - "type": "file_to_crate" - }, - { - "evidence": "use g3_core::ContextWindow;", - "source": "./crates/g3-core/tests/test_system_message_loading.rs", - "target": "g3-core", - "type": "file_to_crate" - }, - { - "evidence": "use g3_providers::{Message, MessageRole};", - "source": "./crates/g3-core/tests/test_system_message_loading.rs", - "target": "g3-providers", - "type": "file_to_crate" - }, - { - "evidence": "use g3_core::ContextWindow;", - "source": "./crates/g3-core/tests/test_todo_context_thinning.rs", - "target": "g3-core", - "type": "file_to_crate" - }, - { - "evidence": "use g3_providers::{Message, MessageRole};", - "source": "./crates/g3-core/tests/test_todo_context_thinning.rs", - "target": "g3-providers", - "type": "file_to_crate" - }, - { - "evidence": "use g3_core::ui_writer::NullUiWriter;", - "source": "./crates/g3-core/tests/test_todo_persistence.rs", - "target": "g3-core", - "type": "file_to_crate" - }, - { - "evidence": "use g3_core::Agent;", - "source": "./crates/g3-core/tests/test_todo_persistence.rs", - "target": "g3-core", - "type": "file_to_crate" - }, - { - "evidence": "use g3_core::ContextWindow;", - "source": "./crates/g3-core/tests/test_token_counting.rs", - "target": "g3-core", - "type": "file_to_crate" - }, - { - "evidence": "use g3_providers::{Message, MessageRole, Usage};", - "source": "./crates/g3-core/tests/test_token_counting.rs", - "target": "g3-providers", - "type": "file_to_crate" - }, - { - "evidence": "use g3_config::Config;", - "source": "./crates/g3-core/tests/todo_staleness_test.rs", - "target": "g3-config", - "type": "file_to_crate" - }, - { - "evidence": "use g3_core::ui_writer::UiWriter;", - "source": "./crates/g3-core/tests/todo_staleness_test.rs", - "target": "g3-core", - "type": "file_to_crate" - }, - { - "evidence": "use g3_core::{Agent, ToolCall};", - "source": "./crates/g3-core/tests/todo_staleness_test.rs", - "target": "g3-core", - "type": "file_to_crate" - }, - { - "evidence": "use g3_core::ToolCall;", - "source": "./crates/g3-core/tests/tool_execution_test.rs", - "target": "g3-core", - "type": "file_to_crate" - }, - { - "evidence": "use g3_core::apply_unified_diff_to_string;", - "source": "./crates/g3-core/tests/tool_execution_test.rs", - "target": "g3-core", - "type": "file_to_crate" - }, - { - "evidence": "use g3_config::Config;", - "source": "./crates/g3-ensembles/src/flock.rs", - "target": "g3-config", - "type": "file_to_crate" - }, - { - "evidence": "pub mod flock;", - "source": "./crates/g3-ensembles/src/lib.rs", - "target": "./crates/g3-ensembles/src/flock.rs", - "type": "mod_declaration" - }, - { - "evidence": "pub mod status;", - "source": "./crates/g3-ensembles/src/lib.rs", - "target": "./crates/g3-ensembles/src/status.rs", - "type": "mod_declaration" - }, - { - "evidence": "mod tests;", - "source": "./crates/g3-ensembles/src/lib.rs", - "target": "./crates/g3-ensembles/src/tests.rs", - "type": "mod_declaration" - }, - { - "evidence": "use g3_ensembles::{FlockConfig, FlockMode};", - "source": "./crates/g3-ensembles/tests/integration_tests.rs", - "target": "g3-ensembles", - "type": "file_to_crate" - }, - { - "evidence": "use g3_ensembles::FlockStatus;", - "source": "./crates/g3-ensembles/tests/integration_tests.rs", - "target": "g3-ensembles", - "type": "file_to_crate" - }, - { - "evidence": "use g3_execution::ensure_coverage_tools_installed;", - "source": "./crates/g3-execution/examples/setup_coverage_tools.rs", - "target": "g3-execution", - "type": "file_to_crate" - }, - { - "evidence": "mod code_explore;", - "source": "./crates/g3-planner/src/lib.rs", - "target": "./crates/g3-planner/src/code_explore.rs", - "type": "mod_declaration" - }, - { - "evidence": "pub mod git;", - "source": "./crates/g3-planner/src/lib.rs", - "target": "./crates/g3-planner/src/git.rs", - "type": "mod_declaration" - }, - { - "evidence": "pub mod history;", - "source": "./crates/g3-planner/src/lib.rs", - "target": "./crates/g3-planner/src/history.rs", - "type": "mod_declaration" - }, - { - "evidence": "pub mod llm;", - "source": "./crates/g3-planner/src/lib.rs", - "target": "./crates/g3-planner/src/llm.rs", - "type": "mod_declaration" - }, - { - "evidence": "pub mod planner;", - "source": "./crates/g3-planner/src/lib.rs", - "target": "./crates/g3-planner/src/planner.rs", - "type": "mod_declaration" - }, - { - "evidence": "pub mod prompts;", - "source": "./crates/g3-planner/src/lib.rs", - "target": "./crates/g3-planner/src/prompts.rs", - "type": "mod_declaration" - }, - { - "evidence": "pub mod state;", - "source": "./crates/g3-planner/src/lib.rs", - "target": "./crates/g3-planner/src/state.rs", - "type": "mod_declaration" - }, - { - "evidence": "use g3_providers::{CompletionRequest, LLMProvider, Message, MessageRole};", - "source": "./crates/g3-planner/src/lib.rs", - "target": "g3-providers", - "type": "file_to_crate" - }, - { - "evidence": "use g3_config::Config;", - "source": "./crates/g3-planner/src/llm.rs", - "target": "g3-config", - "type": "file_to_crate" - }, - { - "evidence": "use g3_core::project::Project;", - "source": "./crates/g3-planner/src/llm.rs", - "target": "g3-core", - "type": "file_to_crate" - }, - { - "evidence": "use g3_core::Agent;", - "source": "./crates/g3-planner/src/llm.rs", - "target": "g3-core", - "type": "file_to_crate" - }, - { - "evidence": "use g3_core::error_handling::{classify_error, ErrorType};", - "source": "./crates/g3-planner/src/llm.rs", - "target": "g3-core", - "type": "file_to_crate" - }, - { - "evidence": "use g3_providers::{CompletionRequest, LLMProvider, Message, MessageRole};", - "source": "./crates/g3-planner/src/llm.rs", - "target": "g3-providers", - "type": "file_to_crate" - }, - { - "evidence": "use g3_core::project::Project;", - "source": "./crates/g3-planner/src/planner.rs", - "target": "g3-core", - "type": "file_to_crate" - }, - { - "evidence": "use g3_core::retry::{execute_with_retry, RetryConfig, RetryResult};", - "source": "./crates/g3-planner/src/planner.rs", - "target": "g3-core", - "type": "file_to_crate" - }, - { - "evidence": "use g3_core::feedback_extraction::{extract_coach_feedback, FeedbackExtractionConfig};", - "source": "./crates/g3-planner/src/planner.rs", - "target": "g3-core", - "type": "file_to_crate" - }, - { - "evidence": "use g3_core::Agent;", - "source": "./crates/g3-planner/src/planner.rs", - "target": "g3-core", - "type": "file_to_crate" - }, - { - "evidence": "use g3_planner::planner::PlannerConfig;", - "source": "./crates/g3-planner/tests/commit_history_ordering_test.rs", - "target": "g3-planner", - "type": "file_to_crate" - }, - { - "evidence": "use g3_planner::history;", - "source": "./crates/g3-planner/tests/commit_history_ordering_test.rs", - "target": "g3-planner", - "type": "file_to_crate" - }, - { - "evidence": "use g3_planner::history;", - "source": "./crates/g3-planner/tests/commit_history_ordering_test.rs", - "target": "g3-planner", - "type": "file_to_crate" - }, - { - "evidence": "use g3_planner::history;", - "source": "./crates/g3-planner/tests/commit_history_ordering_test.rs", - "target": "g3-planner", - "type": "file_to_crate" - }, - { - "evidence": "use g3_planner::history;", - "source": "./crates/g3-planner/tests/commit_history_ordering_test.rs", - "target": "g3-planner", - "type": "file_to_crate" - }, - { - "evidence": "use g3_planner::history;", - "source": "./crates/g3-planner/tests/commit_history_ordering_test.rs", - "target": "g3-planner", - "type": "file_to_crate" - }, - { - "evidence": "use g3_planner::git;", - "source": "./crates/g3-planner/tests/commit_history_ordering_test.rs", - "target": "g3-planner", - "type": "file_to_crate" - }, - { - "evidence": "use g3_planner::history;", - "source": "./crates/g3-planner/tests/commit_history_ordering_test.rs", - "target": "g3-planner", - "type": "file_to_crate" - }, - { - "evidence": "use g3_planner::{create_tool_message, explore_codebase, extract_shell_commands};", - "source": "./crates/g3-planner/tests/planner_test.rs", - "target": "g3-planner", - "type": "file_to_crate" - }, - { - "evidence": "use g3_providers::MessageRole;", - "source": "./crates/g3-planner/tests/planner_test.rs", - "target": "g3-providers", - "type": "file_to_crate" - }, - { - "evidence": "use g3_core::feedback_extraction::{ExtractedFeedback, FeedbackExtractionConfig, FeedbackSource};", - "source": "./crates/g3-planner/tests/retry_feedback_test.rs", - "target": "g3-core", - "type": "file_to_crate" - }, - { - "evidence": "use g3_core::retry::RetryConfig;", - "source": "./crates/g3-planner/tests/retry_feedback_test.rs", - "target": "g3-core", - "type": "file_to_crate" - }, - { - "evidence": "mod streaming;", - "source": "./crates/g3-providers/src/lib.rs", - "target": "./crates/g3-providers/src/streaming.rs", - "type": "mod_declaration" - }, - { - "evidence": "pub mod anthropic;", - "source": "./crates/g3-providers/src/lib.rs", - "target": "./crates/g3-providers/src/anthropic.rs", - "type": "mod_declaration" - }, - { - "evidence": "pub mod databricks;", - "source": "./crates/g3-providers/src/lib.rs", - "target": "./crates/g3-providers/src/databricks.rs", - "type": "mod_declaration" - }, - { - "evidence": "pub mod embedded;", - "source": "./crates/g3-providers/src/lib.rs", - "target": "./crates/g3-providers/src/embedded.rs", - "type": "mod_declaration" - }, - { - "evidence": "pub mod oauth;", - "source": "./crates/g3-providers/src/lib.rs", - "target": "./crates/g3-providers/src/oauth.rs", - "type": "mod_declaration" - }, - { - "evidence": "pub mod openai;", - "source": "./crates/g3-providers/src/lib.rs", - "target": "./crates/g3-providers/src/openai.rs", - "type": "mod_declaration" - }, - { - "evidence": "use g3_providers::{CacheControl, Message, MessageRole};", - "source": "./crates/g3-providers/tests/cache_control_error_regression_test.rs", - "target": "g3-providers", - "type": "file_to_crate" - }, - { - "evidence": "use g3_providers::{CacheControl, Message, MessageRole};", - "source": "./crates/g3-providers/tests/cache_control_integration_test.rs", - "target": "g3-providers", - "type": "file_to_crate" - }, - { - "evidence": "use g3_providers::{Message, MessageRole, CacheControl, Tool};", - "source": "./crates/g3-providers/tests/message_serialization_test.rs", - "target": "g3-providers", - "type": "file_to_crate" - }, - { - "evidence": "use g3_providers::{Message, MessageRole};", - "source": "./examples/verify_message_id.rs", - "target": "g3-providers", - "type": "file_to_crate" - }, - { - "evidence": "use g3_cli::run;", - "source": "./src/main.rs", - "target": "g3-cli", - "type": "file_to_crate" - } - ], - "nodes": [ - { - "crate": "g3-cli", - "file_type": "module", - "id": "./crates/g3-cli/src/filter_json.rs", - "type": "file" - }, - { - "crate": "g3-cli", - "file_type": "lib", - "id": "./crates/g3-cli/src/lib.rs", - "type": "file" - }, - { - "crate": "g3-cli", - "file_type": "module", - "id": "./crates/g3-cli/src/machine_ui_writer.rs", - "type": "file" - }, - { - "crate": "g3-cli", - "file_type": "module", - "id": "./crates/g3-cli/src/simple_output.rs", - "type": "file" - }, - { - "crate": "g3-cli", - "file_type": "module", - "id": "./crates/g3-cli/src/streaming_markdown.rs", - "type": "file" - }, - { - "crate": "g3-cli", - "file_type": "module", - "id": "./crates/g3-cli/src/theme.rs", - "type": "file" - }, - { - "crate": "g3-cli", - "file_type": "module", - "id": "./crates/g3-cli/src/ui_writer_impl.rs", - "type": "file" - }, - { - "crate": "g3-cli", - "file_type": "test", - "id": "./crates/g3-cli/tests/cli_integration_test.rs", - "type": "file" - }, - { - "crate": "g3-cli", - "file_type": "test", - "id": "./crates/g3-cli/tests/coach_feedback_extraction_test.rs", - "type": "file" - }, - { - "crate": "g3-cli", - "file_type": "test", - "id": "./crates/g3-cli/tests/filter_json_stress_test.rs", - "type": "file" - }, - { - "crate": "g3-cli", - "file_type": "test", - "id": "./crates/g3-cli/tests/filter_json_test.rs", - "type": "file" - }, - { - "crate": "g3-cli", - "file_type": "test", - "id": "./crates/g3-cli/tests/streaming_markdown_test.rs", - "type": "file" - }, - { - "crate": "g3-computer-control", - "file_type": "build", - "id": "./crates/g3-computer-control/build.rs", - "type": "file" - }, - { - "crate": "g3-computer-control", - "file_type": "example", - "id": "./crates/g3-computer-control/examples/debug_screenshot.rs", - "type": "file" - }, - { - "crate": "g3-computer-control", - "file_type": "example", - "id": "./crates/g3-computer-control/examples/list_windows.rs", - "type": "file" - }, - { - "crate": "g3-computer-control", - "file_type": "example", - "id": "./crates/g3-computer-control/examples/macax_demo.rs", - "type": "file" - }, - { - "crate": "g3-computer-control", - "file_type": "example", - "id": "./crates/g3-computer-control/examples/safari_demo.rs", - "type": "file" - }, - { - "crate": "g3-computer-control", - "file_type": "example", - "id": "./crates/g3-computer-control/examples/test_permission_prompt.rs", - "type": "file" - }, - { - "crate": "g3-computer-control", - "file_type": "example", - "id": "./crates/g3-computer-control/examples/test_screencapture_direct.rs", - "type": "file" - }, - { - "crate": "g3-computer-control", - "file_type": "example", - "id": "./crates/g3-computer-control/examples/test_screenshot_fix.rs", - "type": "file" - }, - { - "crate": "g3-computer-control", - "file_type": "example", - "id": "./crates/g3-computer-control/examples/test_type_text.rs", - "type": "file" - }, - { - "crate": "g3-computer-control", - "file_type": "example", - "id": "./crates/g3-computer-control/examples/test_vision.rs", - "type": "file" - }, - { - "crate": "g3-computer-control", - "file_type": "example", - "id": "./crates/g3-computer-control/examples/test_window_capture.rs", - "type": "file" - }, - { - "crate": "g3-computer-control", - "file_type": "lib", - "id": "./crates/g3-computer-control/src/lib.rs", - "type": "file" - }, - { - "crate": "g3-computer-control", - "file_type": "module", - "id": "./crates/g3-computer-control/src/macax/controller.rs", - "type": "file" - }, - { - "crate": "g3-computer-control", - "file_type": "module", - "id": "./crates/g3-computer-control/src/macax/mod.rs", - "type": "file" - }, - { - "crate": "g3-computer-control", - "file_type": "module", - "id": "./crates/g3-computer-control/src/macax/tests.rs", - "type": "file" - }, - { - "crate": "g3-computer-control", - "file_type": "module", - "id": "./crates/g3-computer-control/src/ocr/mod.rs", - "type": "file" - }, - { - "crate": "g3-computer-control", - "file_type": "module", - "id": "./crates/g3-computer-control/src/ocr/tesseract.rs", - "type": "file" - }, - { - "crate": "g3-computer-control", - "file_type": "module", - "id": "./crates/g3-computer-control/src/ocr/vision.rs", - "type": "file" - }, - { - "crate": "g3-computer-control", - "file_type": "module", - "id": "./crates/g3-computer-control/src/platform/linux.rs", - "type": "file" - }, - { - "crate": "g3-computer-control", - "file_type": "module", - "id": "./crates/g3-computer-control/src/platform/macos.rs", - "type": "file" - }, - { - "crate": "g3-computer-control", - "file_type": "test", - "id": "./crates/g3-computer-control/src/platform/macos_window_matching_test.rs", - "type": "file" - }, - { - "crate": "g3-computer-control", - "file_type": "module", - "id": "./crates/g3-computer-control/src/platform/mod.rs", - "type": "file" - }, - { - "crate": "g3-computer-control", - "file_type": "module", - "id": "./crates/g3-computer-control/src/platform/windows.rs", - "type": "file" - }, - { - "crate": "g3-computer-control", - "file_type": "module", - "id": "./crates/g3-computer-control/src/types.rs", - "type": "file" - }, - { - "crate": "g3-computer-control", - "file_type": "module", - "id": "./crates/g3-computer-control/src/webdriver/chrome.rs", - "type": "file" - }, - { - "crate": "g3-computer-control", - "file_type": "module", - "id": "./crates/g3-computer-control/src/webdriver/diagnostics.rs", - "type": "file" - }, - { - "crate": "g3-computer-control", - "file_type": "module", - "id": "./crates/g3-computer-control/src/webdriver/mod.rs", - "type": "file" - }, - { - "crate": "g3-computer-control", - "file_type": "module", - "id": "./crates/g3-computer-control/src/webdriver/safari.rs", - "type": "file" - }, - { - "crate": "g3-computer-control", - "file_type": "test", - "id": "./crates/g3-computer-control/tests/integration_test.rs", - "type": "file" - }, - { - "crate": "g3-config", - "file_type": "lib", - "id": "./crates/g3-config/src/lib.rs", - "type": "file" - }, - { - "crate": "g3-config", - "file_type": "module", - "id": "./crates/g3-config/src/tests.rs", - "type": "file" - }, - { - "crate": "g3-core", - "file_type": "example", - "id": "./crates/g3-core/examples/inspect_ast.rs", - "type": "file" - }, - { - "crate": "g3-core", - "file_type": "example", - "id": "./crates/g3-core/examples/inspect_python_ast.rs", - "type": "file" - }, - { - "crate": "g3-core", - "file_type": "example", - "id": "./crates/g3-core/examples/test_python_query.rs", - "type": "file" - }, - { - "crate": "g3-core", - "file_type": "module", - "id": "./crates/g3-core/src/background_process.rs", - "type": "file" - }, - { - "crate": "g3-core", - "file_type": "module", - "id": "./crates/g3-core/src/code_search/mod.rs", - "type": "file" - }, - { - "crate": "g3-core", - "file_type": "module", - "id": "./crates/g3-core/src/code_search/searcher.rs", - "type": "file" - }, - { - "crate": "g3-core", - "file_type": "module", - "id": "./crates/g3-core/src/context_window.rs", - "type": "file" - }, - { - "crate": "g3-core", - "file_type": "module", - "id": "./crates/g3-core/src/error_handling.rs", - "type": "file" - }, - { - "crate": "g3-core", - "file_type": "test", - "id": "./crates/g3-core/src/error_handling_test.rs", - "type": "file" - }, - { - "crate": "g3-core", - "file_type": "module", - "id": "./crates/g3-core/src/feedback_extraction.rs", - "type": "file" - }, - { - "crate": "g3-core", - "file_type": "lib", - "id": "./crates/g3-core/src/lib.rs", - "type": "file" - }, - { - "crate": "g3-core", - "file_type": "module", - "id": "./crates/g3-core/src/paths.rs", - "type": "file" - }, - { - "crate": "g3-core", - "file_type": "module", - "id": "./crates/g3-core/src/project.rs", - "type": "file" - }, - { - "crate": "g3-core", - "file_type": "module", - "id": "./crates/g3-core/src/prompts.rs", - "type": "file" - }, - { - "crate": "g3-core", - "file_type": "module", - "id": "./crates/g3-core/src/provider_config.rs", - "type": "file" - }, - { - "crate": "g3-core", - "file_type": "module", - "id": "./crates/g3-core/src/provider_registration.rs", - "type": "file" - }, - { - "crate": "g3-core", - "file_type": "module", - "id": "./crates/g3-core/src/retry.rs", - "type": "file" - }, - { - "crate": "g3-core", - "file_type": "module", - "id": "./crates/g3-core/src/session.rs", - "type": "file" - }, - { - "crate": "g3-core", - "file_type": "module", - "id": "./crates/g3-core/src/session_continuation.rs", - "type": "file" - }, - { - "crate": "g3-core", - "file_type": "module", - "id": "./crates/g3-core/src/streaming.rs", - "type": "file" - }, - { - "crate": "g3-core", - "file_type": "module", - "id": "./crates/g3-core/src/streaming_parser.rs", - "type": "file" - }, - { - "crate": "g3-core", - "file_type": "test", - "id": "./crates/g3-core/src/take_screenshot_test.rs", - "type": "file" - }, - { - "crate": "g3-core", - "file_type": "module", - "id": "./crates/g3-core/src/task_result.rs", - "type": "file" - }, - { - "crate": "g3-core", - "file_type": "module", - "id": "./crates/g3-core/src/task_result_comprehensive_tests.rs", - "type": "file" - }, - { - "crate": "g3-core", - "file_type": "module", - "id": "./crates/g3-core/src/task_result_tests.rs", - "type": "file" - }, - { - "crate": "g3-core", - "file_type": "module", - "id": "./crates/g3-core/src/tilde_expansion_tests.rs", - "type": "file" - }, - { - "crate": "g3-core", - "file_type": "module", - "id": "./crates/g3-core/src/tool_definitions.rs", - "type": "file" - }, - { - "crate": "g3-core", - "file_type": "module", - "id": "./crates/g3-core/src/tool_dispatch.rs", - "type": "file" - }, - { - "crate": "g3-core", - "file_type": "module", - "id": "./crates/g3-core/src/tools/executor.rs", - "type": "file" - }, - { - "crate": "g3-core", - "file_type": "module", - "id": "./crates/g3-core/src/tools/file_ops.rs", - "type": "file" - }, - { - "crate": "g3-core", - "file_type": "module", - "id": "./crates/g3-core/src/tools/memory.rs", - "type": "file" - }, - { - "crate": "g3-core", - "file_type": "module", - "id": "./crates/g3-core/src/tools/misc.rs", - "type": "file" - }, - { - "crate": "g3-core", - "file_type": "module", - "id": "./crates/g3-core/src/tools/mod.rs", - "type": "file" - }, - { - "crate": "g3-core", - "file_type": "module", - "id": "./crates/g3-core/src/tools/research.rs", - "type": "file" - }, - { - "crate": "g3-core", - "file_type": "module", - "id": "./crates/g3-core/src/tools/shell.rs", - "type": "file" - }, - { - "crate": "g3-core", - "file_type": "module", - "id": "./crates/g3-core/src/tools/todo.rs", - "type": "file" - }, - { - "crate": "g3-core", - "file_type": "module", - "id": "./crates/g3-core/src/tools/webdriver.rs", - "type": "file" - }, - { - "crate": "g3-core", - "file_type": "module", - "id": "./crates/g3-core/src/ui_writer.rs", - "type": "file" - }, - { - "crate": "g3-core", - "file_type": "module", - "id": "./crates/g3-core/src/utils.rs", - "type": "file" - }, - { - "crate": "g3-core", - "file_type": "module", - "id": "./crates/g3-core/src/webdriver_session.rs", - "type": "file" - }, - { - "crate": "g3-core", - "file_type": "test", - "id": "./crates/g3-core/tests/auto_continue_test.rs", - "type": "file" - }, - { - "crate": "g3-core", - "file_type": "test", - "id": "./crates/g3-core/tests/background_process_demo_test.rs", - "type": "file" - }, - { - "crate": "g3-core", - "file_type": "test", - "id": "./crates/g3-core/tests/code_search_test.rs", - "type": "file" - }, - { - "crate": "g3-core", - "file_type": "test", - "id": "./crates/g3-core/tests/duplicate_detection_test.rs", - "type": "file" - }, - { - "crate": "g3-core", - "file_type": "test", - "id": "./crates/g3-core/tests/incomplete_tool_call_test.rs", - "type": "file" - }, - { - "crate": "g3-core", - "file_type": "test", - "id": "./crates/g3-core/tests/read_file_token_limit_test.rs", - "type": "file" - }, - { - "crate": "g3-core", - "file_type": "test", - "id": "./crates/g3-core/tests/read_image_test.rs", - "type": "file" - }, - { - "crate": "g3-core", - "file_type": "test", - "id": "./crates/g3-core/tests/streaming_parser_test.rs", - "type": "file" - }, - { - "crate": "g3-core", - "file_type": "test", - "id": "./crates/g3-core/tests/test_agent_session_id.rs", - "type": "file" - }, - { - "crate": "g3-core", - "file_type": "test", - "id": "./crates/g3-core/tests/test_context_thinning.rs", - "type": "file" - }, - { - "crate": "g3-core", - "file_type": "test", - "id": "./crates/g3-core/tests/test_preflight_max_tokens.rs", - "type": "file" - }, - { - "crate": "g3-core", - "file_type": "test", - "id": "./crates/g3-core/tests/test_reset_with_summary.rs", - "type": "file" - }, - { - "crate": "g3-core", - "file_type": "test", - "id": "./crates/g3-core/tests/test_session_continuation.rs", - "type": "file" - }, - { - "crate": "g3-core", - "file_type": "test", - "id": "./crates/g3-core/tests/test_system_message_loading.rs", - "type": "file" - }, - { - "crate": "g3-core", - "file_type": "test", - "id": "./crates/g3-core/tests/test_todo_completion.rs", - "type": "file" - }, - { - "crate": "g3-core", - "file_type": "test", - "id": "./crates/g3-core/tests/test_todo_context_thinning.rs", - "type": "file" - }, - { - "crate": "g3-core", - "file_type": "test", - "id": "./crates/g3-core/tests/test_todo_persistence.rs", - "type": "file" - }, - { - "crate": "g3-core", - "file_type": "test", - "id": "./crates/g3-core/tests/test_token_counting.rs", - "type": "file" - }, - { - "crate": "g3-core", - "file_type": "test", - "id": "./crates/g3-core/tests/todo_staleness_test.rs", - "type": "file" - }, - { - "crate": "g3-core", - "file_type": "test", - "id": "./crates/g3-core/tests/tool_execution_test.rs", - "type": "file" - }, - { - "crate": "g3-ensembles", - "file_type": "module", - "id": "./crates/g3-ensembles/src/flock.rs", - "type": "file" - }, - { - "crate": "g3-ensembles", - "file_type": "lib", - "id": "./crates/g3-ensembles/src/lib.rs", - "type": "file" - }, - { - "crate": "g3-ensembles", - "file_type": "module", - "id": "./crates/g3-ensembles/src/status.rs", - "type": "file" - }, - { - "crate": "g3-ensembles", - "file_type": "module", - "id": "./crates/g3-ensembles/src/tests.rs", - "type": "file" - }, - { - "crate": "g3-ensembles", - "file_type": "test", - "id": "./crates/g3-ensembles/tests/integration_tests.rs", - "type": "file" - }, - { - "crate": "g3-execution", - "file_type": "example", - "id": "./crates/g3-execution/examples/setup_coverage_tools.rs", - "type": "file" - }, - { - "crate": "g3-execution", - "file_type": "lib", - "id": "./crates/g3-execution/src/lib.rs", - "type": "file" - }, - { - "crate": "g3-planner", - "file_type": "module", - "id": "./crates/g3-planner/src/code_explore.rs", - "type": "file" - }, - { - "crate": "g3-planner", - "file_type": "module", - "id": "./crates/g3-planner/src/git.rs", - "type": "file" - }, - { - "crate": "g3-planner", - "file_type": "module", - "id": "./crates/g3-planner/src/history.rs", - "type": "file" - }, - { - "crate": "g3-planner", - "file_type": "lib", - "id": "./crates/g3-planner/src/lib.rs", - "type": "file" - }, - { - "crate": "g3-planner", - "file_type": "module", - "id": "./crates/g3-planner/src/llm.rs", - "type": "file" - }, - { - "crate": "g3-planner", - "file_type": "module", - "id": "./crates/g3-planner/src/planner.rs", - "type": "file" - }, - { - "crate": "g3-planner", - "file_type": "module", - "id": "./crates/g3-planner/src/prompts.rs", - "type": "file" - }, - { - "crate": "g3-planner", - "file_type": "module", - "id": "./crates/g3-planner/src/state.rs", - "type": "file" - }, - { - "crate": "g3-planner", - "file_type": "test", - "id": "./crates/g3-planner/tests/commit_history_ordering_test.rs", - "type": "file" - }, - { - "crate": "g3-planner", - "file_type": "test", - "id": "./crates/g3-planner/tests/logging_test.rs", - "type": "file" - }, - { - "crate": "g3-planner", - "file_type": "test", - "id": "./crates/g3-planner/tests/planner_test.rs", - "type": "file" - }, - { - "crate": "g3-planner", - "file_type": "test", - "id": "./crates/g3-planner/tests/retry_feedback_test.rs", - "type": "file" - }, - { - "crate": "g3-providers", - "file_type": "module", - "id": "./crates/g3-providers/src/anthropic.rs", - "type": "file" - }, - { - "crate": "g3-providers", - "file_type": "module", - "id": "./crates/g3-providers/src/databricks.rs", - "type": "file" - }, - { - "crate": "g3-providers", - "file_type": "module", - "id": "./crates/g3-providers/src/embedded.rs", - "type": "file" - }, - { - "crate": "g3-providers", - "file_type": "lib", - "id": "./crates/g3-providers/src/lib.rs", - "type": "file" - }, - { - "crate": "g3-providers", - "file_type": "module", - "id": "./crates/g3-providers/src/oauth.rs", - "type": "file" - }, - { - "crate": "g3-providers", - "file_type": "module", - "id": "./crates/g3-providers/src/openai.rs", - "type": "file" - }, - { - "crate": "g3-providers", - "file_type": "module", - "id": "./crates/g3-providers/src/streaming.rs", - "type": "file" - }, - { - "crate": "g3-providers", - "file_type": "test", - "id": "./crates/g3-providers/tests/cache_control_error_regression_test.rs", - "type": "file" - }, - { - "crate": "g3-providers", - "file_type": "test", - "id": "./crates/g3-providers/tests/cache_control_integration_test.rs", - "type": "file" - }, - { - "crate": "g3-providers", - "file_type": "test", - "id": "./crates/g3-providers/tests/message_serialization_test.rs", - "type": "file" - }, - { - "crate": "g3", - "file_type": "example", - "id": "./examples/verify_message_id.rs", - "type": "file" - }, - { - "crate": "g3", - "file_type": "main", - "id": "./src/main.rs", - "type": "file" - }, - { - "id": "g3", - "type": "crate" - }, - { - "id": "g3-cli", - "type": "crate" - }, - { - "id": "g3-core", - "type": "crate" - }, - { - "id": "g3-providers", - "type": "crate" - }, - { - "id": "g3-config", - "type": "crate" - }, - { - "id": "g3-execution", - "type": "crate" - }, - { - "id": "g3-computer-control", - "type": "crate" - }, - { - "id": "g3-ensembles", - "type": "crate" - }, - { - "id": "g3-planner", - "type": "crate" - } - ] + "crate_level": { + "edges": [ + { + "evidence": "Cargo.toml path dependency", + "from": "g3", + "to": "g3-cli", + "type": "crate_dependency" + }, + { + "evidence": "Cargo.toml path dependency", + "from": "g3", + "to": "g3-providers", + "type": "crate_dependency" + }, + { + "evidence": "Cargo.toml path dependency", + "from": "g3-cli", + "to": "g3-core", + "type": "crate_dependency" + }, + { + "evidence": "Cargo.toml path dependency", + "from": "g3-cli", + "to": "g3-config", + "type": "crate_dependency" + }, + { + "evidence": "Cargo.toml path dependency", + "from": "g3-cli", + "to": "g3-planner", + "type": "crate_dependency" + }, + { + "evidence": "Cargo.toml path dependency", + "from": "g3-cli", + "to": "g3-computer-control", + "type": "crate_dependency" + }, + { + "evidence": "Cargo.toml path dependency", + "from": "g3-cli", + "to": "g3-providers", + "type": "crate_dependency" + }, + { + "evidence": "Cargo.toml path dependency", + "from": "g3-cli", + "to": "g3-ensembles", + "type": "crate_dependency" + }, + { + "evidence": "Cargo.toml path dependency", + "from": "g3-core", + "to": "g3-providers", + "type": "crate_dependency" + }, + { + "evidence": "Cargo.toml path dependency", + "from": "g3-core", + "to": "g3-config", + "type": "crate_dependency" + }, + { + "evidence": "Cargo.toml path dependency", + "from": "g3-core", + "to": "g3-execution", + "type": "crate_dependency" + }, + { + "evidence": "Cargo.toml path dependency", + "from": "g3-core", + "to": "g3-computer-control", + "type": "crate_dependency" + }, + { + "evidence": "Cargo.toml path dependency", + "from": "g3-planner", + "to": "g3-providers", + "type": "crate_dependency" + }, + { + "evidence": "Cargo.toml path dependency", + "from": "g3-planner", + "to": "g3-core", + "type": "crate_dependency" + }, + { + "evidence": "Cargo.toml path dependency", + "from": "g3-planner", + "to": "g3-config", + "type": "crate_dependency" + }, + { + "evidence": "Cargo.toml path dependency", + "from": "g3-ensembles", + "to": "g3-core", + "type": "crate_dependency" + }, + { + "evidence": "Cargo.toml path dependency", + "from": "g3-ensembles", + "to": "g3-config", + "type": "crate_dependency" + } + ], + "metrics": { + "fan_in": { + "g3-cli": 1, + "g3-computer-control": 2, + "g3-config": 4, + "g3-core": 3, + "g3-ensembles": 1, + "g3-execution": 1, + "g3-planner": 1, + "g3-providers": 4 + }, + "fan_out": { + "g3": 2, + "g3-cli": 6, + "g3-core": 4, + "g3-ensembles": 2, + "g3-planner": 3 + } + }, + "nodes": [ + { + "id": "g3", + "type": "bin" + }, + { + "id": "g3-cli", + "type": "lib" + }, + { + "id": "g3-core", + "type": "lib" + }, + { + "id": "g3-providers", + "type": "lib" + }, + { + "id": "g3-config", + "type": "lib" + }, + { + "id": "g3-execution", + "type": "lib" + }, + { + "id": "g3-computer-control", + "type": "lib" + }, + { + "id": "g3-planner", + "type": "lib" + }, + { + "id": "g3-ensembles", + "type": "lib" + }, + { + "id": "studio", + "type": "bin" + } + ] + }, + "file_level": { + "edges": [ + { + "evidence": "mod macax", + "from": "crates/g3-computer-control/src/lib.rs", + "to": "crates/g3-computer-control/src/macax/mod.rs", + "type": "mod_declaration" + }, + { + "evidence": "mod ocr", + "from": "crates/g3-computer-control/src/lib.rs", + "to": "crates/g3-computer-control/src/ocr/mod.rs", + "type": "mod_declaration" + }, + { + "evidence": "mod platform", + "from": "crates/g3-computer-control/src/lib.rs", + "to": "crates/g3-computer-control/src/platform/mod.rs", + "type": "mod_declaration" + }, + { + "evidence": "mod types", + "from": "crates/g3-computer-control/src/lib.rs", + "to": "crates/g3-computer-control/src/types.rs", + "type": "mod_declaration" + }, + { + "evidence": "mod webdriver", + "from": "crates/g3-computer-control/src/lib.rs", + "to": "crates/g3-computer-control/src/webdriver/mod.rs", + "type": "mod_declaration" + }, + { + "evidence": "mod macos", + "from": "crates/g3-computer-control/src/platform/mod.rs", + "to": "crates/g3-computer-control/src/platform/macos.rs", + "type": "mod_declaration" + }, + { + "evidence": "mod linux", + "from": "crates/g3-computer-control/src/platform/mod.rs", + "to": "crates/g3-computer-control/src/platform/linux.rs", + "type": "mod_declaration" + }, + { + "evidence": "mod windows", + "from": "crates/g3-computer-control/src/platform/mod.rs", + "to": "crates/g3-computer-control/src/platform/windows.rs", + "type": "mod_declaration" + }, + { + "evidence": "mod vision", + "from": "crates/g3-computer-control/src/ocr/mod.rs", + "to": "crates/g3-computer-control/src/ocr/vision.rs", + "type": "mod_declaration" + }, + { + "evidence": "mod tesseract", + "from": "crates/g3-computer-control/src/ocr/mod.rs", + "to": "crates/g3-computer-control/src/ocr/tesseract.rs", + "type": "mod_declaration" + }, + { + "evidence": "mod safari", + "from": "crates/g3-computer-control/src/webdriver/mod.rs", + "to": "crates/g3-computer-control/src/webdriver/safari.rs", + "type": "mod_declaration" + }, + { + "evidence": "mod chrome", + "from": "crates/g3-computer-control/src/webdriver/mod.rs", + "to": "crates/g3-computer-control/src/webdriver/chrome.rs", + "type": "mod_declaration" + }, + { + "evidence": "mod diagnostics", + "from": "crates/g3-computer-control/src/webdriver/mod.rs", + "to": "crates/g3-computer-control/src/webdriver/diagnostics.rs", + "type": "mod_declaration" + }, + { + "evidence": "mod controller", + "from": "crates/g3-computer-control/src/macax/mod.rs", + "to": "crates/g3-computer-control/src/macax/controller.rs", + "type": "mod_declaration" + }, + { + "evidence": "mod streaming", + "from": "crates/g3-providers/src/lib.rs", + "to": "crates/g3-providers/src/streaming.rs", + "type": "mod_declaration" + }, + { + "evidence": "mod anthropic", + "from": "crates/g3-providers/src/lib.rs", + "to": "crates/g3-providers/src/anthropic.rs", + "type": "mod_declaration" + }, + { + "evidence": "mod databricks", + "from": "crates/g3-providers/src/lib.rs", + "to": "crates/g3-providers/src/databricks.rs", + "type": "mod_declaration" + }, + { + "evidence": "mod embedded", + "from": "crates/g3-providers/src/lib.rs", + "to": "crates/g3-providers/src/embedded.rs", + "type": "mod_declaration" + }, + { + "evidence": "mod oauth", + "from": "crates/g3-providers/src/lib.rs", + "to": "crates/g3-providers/src/oauth.rs", + "type": "mod_declaration" + }, + { + "evidence": "mod openai", + "from": "crates/g3-providers/src/lib.rs", + "to": "crates/g3-providers/src/openai.rs", + "type": "mod_declaration" + }, + { + "evidence": "mod flock", + "from": "crates/g3-ensembles/src/lib.rs", + "to": "crates/g3-ensembles/src/flock.rs", + "type": "mod_declaration" + }, + { + "evidence": "mod status", + "from": "crates/g3-ensembles/src/lib.rs", + "to": "crates/g3-ensembles/src/status.rs", + "type": "mod_declaration" + }, + { + "evidence": "use g3_config::Config", + "from": "crates/g3-ensembles/src/flock.rs", + "to_crate": "g3-config", + "type": "cross_crate_import" + }, + { + "evidence": "use g3_providers::MessageRole", + "from": "crates/g3-core/src/session.rs", + "to_crate": "g3-providers", + "type": "cross_crate_import" + }, + { + "evidence": "use g3_computer_control::", + "from": "crates/g3-core/src/webdriver_session.rs", + "to_crate": "g3-computer-control", + "type": "cross_crate_import" + }, + { + "evidence": "use g3_config::Config", + "from": "crates/g3-core/src/lib.rs", + "to_crate": "g3-config", + "type": "cross_crate_import" + }, + { + "evidence": "use g3_providers::", + "from": "crates/g3-core/src/lib.rs", + "to_crate": "g3-providers", + "type": "cross_crate_import" + }, + { + "evidence": "mod acd", + "from": "crates/g3-core/src/lib.rs", + "to": "crates/g3-core/src/acd.rs", + "type": "mod_declaration" + }, + { + "evidence": "mod context_window", + "from": "crates/g3-core/src/lib.rs", + "to": "crates/g3-core/src/context_window.rs", + "type": "mod_declaration" + }, + { + "evidence": "mod background_process", + "from": "crates/g3-core/src/lib.rs", + "to": "crates/g3-core/src/background_process.rs", + "type": "mod_declaration" + }, + { + "evidence": "mod compaction", + "from": "crates/g3-core/src/lib.rs", + "to": "crates/g3-core/src/compaction.rs", + "type": "mod_declaration" + }, + { + "evidence": "mod code_search", + "from": "crates/g3-core/src/lib.rs", + "to": "crates/g3-core/src/code_search/mod.rs", + "type": "mod_declaration" + }, + { + "evidence": "mod error_handling", + "from": "crates/g3-core/src/lib.rs", + "to": "crates/g3-core/src/error_handling.rs", + "type": "mod_declaration" + }, + { + "evidence": "mod feedback_extraction", + "from": "crates/g3-core/src/lib.rs", + "to": "crates/g3-core/src/feedback_extraction.rs", + "type": "mod_declaration" + }, + { + "evidence": "mod paths", + "from": "crates/g3-core/src/lib.rs", + "to": "crates/g3-core/src/paths.rs", + "type": "mod_declaration" + }, + { + "evidence": "mod project", + "from": "crates/g3-core/src/lib.rs", + "to": "crates/g3-core/src/project.rs", + "type": "mod_declaration" + }, + { + "evidence": "mod provider_registration", + "from": "crates/g3-core/src/lib.rs", + "to": "crates/g3-core/src/provider_registration.rs", + "type": "mod_declaration" + }, + { + "evidence": "mod provider_config", + "from": "crates/g3-core/src/lib.rs", + "to": "crates/g3-core/src/provider_config.rs", + "type": "mod_declaration" + }, + { + "evidence": "mod retry", + "from": "crates/g3-core/src/lib.rs", + "to": "crates/g3-core/src/retry.rs", + "type": "mod_declaration" + }, + { + "evidence": "mod session", + "from": "crates/g3-core/src/lib.rs", + "to": "crates/g3-core/src/session.rs", + "type": "mod_declaration" + }, + { + "evidence": "mod session_continuation", + "from": "crates/g3-core/src/lib.rs", + "to": "crates/g3-core/src/session_continuation.rs", + "type": "mod_declaration" + }, + { + "evidence": "mod streaming_parser", + "from": "crates/g3-core/src/lib.rs", + "to": "crates/g3-core/src/streaming_parser.rs", + "type": "mod_declaration" + }, + { + "evidence": "mod task_result", + "from": "crates/g3-core/src/lib.rs", + "to": "crates/g3-core/src/task_result.rs", + "type": "mod_declaration" + }, + { + "evidence": "mod tool_dispatch", + "from": "crates/g3-core/src/lib.rs", + "to": "crates/g3-core/src/tool_dispatch.rs", + "type": "mod_declaration" + }, + { + "evidence": "mod tool_definitions", + "from": "crates/g3-core/src/lib.rs", + "to": "crates/g3-core/src/tool_definitions.rs", + "type": "mod_declaration" + }, + { + "evidence": "mod tools", + "from": "crates/g3-core/src/lib.rs", + "to": "crates/g3-core/src/tools/mod.rs", + "type": "mod_declaration" + }, + { + "evidence": "mod ui_writer", + "from": "crates/g3-core/src/lib.rs", + "to": "crates/g3-core/src/ui_writer.rs", + "type": "mod_declaration" + }, + { + "evidence": "mod streaming", + "from": "crates/g3-core/src/lib.rs", + "to": "crates/g3-core/src/streaming.rs", + "type": "mod_declaration" + }, + { + "evidence": "mod utils", + "from": "crates/g3-core/src/lib.rs", + "to": "crates/g3-core/src/utils.rs", + "type": "mod_declaration" + }, + { + "evidence": "mod webdriver_session", + "from": "crates/g3-core/src/lib.rs", + "to": "crates/g3-core/src/webdriver_session.rs", + "type": "mod_declaration" + }, + { + "evidence": "mod task_result_comprehensive_tests", + "from": "crates/g3-core/src/lib.rs", + "to": "crates/g3-core/src/task_result_comprehensive_tests.rs", + "type": "mod_declaration" + }, + { + "evidence": "mod tilde_expansion_tests", + "from": "crates/g3-core/src/lib.rs", + "to": "crates/g3-core/src/tilde_expansion_tests.rs", + "type": "mod_declaration" + }, + { + "evidence": "mod error_handling_test", + "from": "crates/g3-core/src/lib.rs", + "to": "crates/g3-core/src/error_handling_test.rs", + "type": "mod_declaration" + }, + { + "evidence": "mod prompts", + "from": "crates/g3-core/src/lib.rs", + "to": "crates/g3-core/src/prompts.rs", + "type": "mod_declaration" + }, + { + "evidence": "use g3_providers::", + "from": "crates/g3-core/src/context_window.rs", + "to_crate": "g3-providers", + "type": "cross_crate_import" + }, + { + "evidence": "use g3_providers::Message", + "from": "crates/g3-core/src/acd.rs", + "to_crate": "g3-providers", + "type": "cross_crate_import" + }, + { + "evidence": "use g3_config::Config", + "from": "crates/g3-core/src/provider_registration.rs", + "to_crate": "g3-config", + "type": "cross_crate_import" + }, + { + "evidence": "use g3_providers::ProviderRegistry", + "from": "crates/g3-core/src/provider_registration.rs", + "to_crate": "g3-providers", + "type": "cross_crate_import" + }, + { + "evidence": "use g3_providers::", + "from": "crates/g3-core/src/task_result_comprehensive_tests.rs", + "to_crate": "g3-providers", + "type": "cross_crate_import" + }, + { + "evidence": "use g3_providers::Tool", + "from": "crates/g3-core/src/tool_definitions.rs", + "to_crate": "g3-providers", + "type": "cross_crate_import" + }, + { + "evidence": "use g3_providers::", + "from": "crates/g3-core/src/streaming.rs", + "to_crate": "g3-providers", + "type": "cross_crate_import" + }, + { + "evidence": "use g3_providers::", + "from": "crates/g3-core/src/compaction.rs", + "to_crate": "g3-providers", + "type": "cross_crate_import" + }, + { + "evidence": "use g3_config::Config", + "from": "crates/g3-core/src/provider_config.rs", + "to_crate": "g3-config", + "type": "cross_crate_import" + }, + { + "evidence": "use g3_config::WebDriverBrowser", + "from": "crates/g3-core/src/tools/research.rs", + "to_crate": "g3-config", + "type": "cross_crate_import" + }, + { + "evidence": "mod executor", + "from": "crates/g3-core/src/tools/mod.rs", + "to": "crates/g3-core/src/tools/executor.rs", + "type": "mod_declaration" + }, + { + "evidence": "mod acd", + "from": "crates/g3-core/src/tools/mod.rs", + "to": "crates/g3-core/src/tools/acd.rs", + "type": "mod_declaration" + }, + { + "evidence": "mod file_ops", + "from": "crates/g3-core/src/tools/mod.rs", + "to": "crates/g3-core/src/tools/file_ops.rs", + "type": "mod_declaration" + }, + { + "evidence": "mod memory", + "from": "crates/g3-core/src/tools/mod.rs", + "to": "crates/g3-core/src/tools/memory.rs", + "type": "mod_declaration" + }, + { + "evidence": "mod misc", + "from": "crates/g3-core/src/tools/mod.rs", + "to": "crates/g3-core/src/tools/misc.rs", + "type": "mod_declaration" + }, + { + "evidence": "mod research", + "from": "crates/g3-core/src/tools/mod.rs", + "to": "crates/g3-core/src/tools/research.rs", + "type": "mod_declaration" + }, + { + "evidence": "mod shell", + "from": "crates/g3-core/src/tools/mod.rs", + "to": "crates/g3-core/src/tools/shell.rs", + "type": "mod_declaration" + }, + { + "evidence": "mod todo", + "from": "crates/g3-core/src/tools/mod.rs", + "to": "crates/g3-core/src/tools/todo.rs", + "type": "mod_declaration" + }, + { + "evidence": "mod webdriver", + "from": "crates/g3-core/src/tools/mod.rs", + "to": "crates/g3-core/src/tools/webdriver.rs", + "type": "mod_declaration" + }, + { + "evidence": "use g3_computer_control::WebDriverController", + "from": "crates/g3-core/src/tools/webdriver.rs", + "to_crate": "g3-computer-control", + "type": "cross_crate_import" + }, + { + "evidence": "use g3_config::Config", + "from": "crates/g3-core/src/tools/executor.rs", + "to_crate": "g3-config", + "type": "cross_crate_import" + }, + { + "evidence": "mod searcher", + "from": "crates/g3-core/src/code_search/mod.rs", + "to": "crates/g3-core/src/code_search/searcher.rs", + "type": "mod_declaration" + }, + { + "evidence": "use g3_core::ui_writer::UiWriter", + "from": "crates/g3-cli/src/agent_mode.rs", + "to_crate": "g3-core", + "type": "cross_crate_import" + }, + { + "evidence": "use g3_core::Agent", + "from": "crates/g3-cli/src/agent_mode.rs", + "to_crate": "g3-core", + "type": "cross_crate_import" + }, + { + "evidence": "use g3_config::Config", + "from": "crates/g3-cli/src/lib.rs", + "to_crate": "g3-config", + "type": "cross_crate_import" + }, + { + "evidence": "use g3_core::project::Project", + "from": "crates/g3-cli/src/lib.rs", + "to_crate": "g3-core", + "type": "cross_crate_import" + }, + { + "evidence": "use g3_core::Agent", + "from": "crates/g3-cli/src/lib.rs", + "to_crate": "g3-core", + "type": "cross_crate_import" + }, + { + "evidence": "mod filter_json", + "from": "crates/g3-cli/src/lib.rs", + "to": "crates/g3-cli/src/filter_json.rs", + "type": "mod_declaration" + }, + { + "evidence": "mod metrics", + "from": "crates/g3-cli/src/lib.rs", + "to": "crates/g3-cli/src/metrics.rs", + "type": "mod_declaration" + }, + { + "evidence": "mod project_files", + "from": "crates/g3-cli/src/lib.rs", + "to": "crates/g3-cli/src/project_files.rs", + "type": "mod_declaration" + }, + { + "evidence": "mod streaming_markdown", + "from": "crates/g3-cli/src/lib.rs", + "to": "crates/g3-cli/src/streaming_markdown.rs", + "type": "mod_declaration" + }, + { + "evidence": "mod accumulative", + "from": "crates/g3-cli/src/lib.rs", + "to": "crates/g3-cli/src/accumulative.rs", + "type": "mod_declaration" + }, + { + "evidence": "mod agent_mode", + "from": "crates/g3-cli/src/lib.rs", + "to": "crates/g3-cli/src/agent_mode.rs", + "type": "mod_declaration" + }, + { + "evidence": "mod autonomous", + "from": "crates/g3-cli/src/lib.rs", + "to": "crates/g3-cli/src/autonomous.rs", + "type": "mod_declaration" + }, + { + "evidence": "mod cli_args", + "from": "crates/g3-cli/src/lib.rs", + "to": "crates/g3-cli/src/cli_args.rs", + "type": "mod_declaration" + }, + { + "evidence": "mod coach_feedback", + "from": "crates/g3-cli/src/lib.rs", + "to": "crates/g3-cli/src/coach_feedback.rs", + "type": "mod_declaration" + }, + { + "evidence": "mod interactive", + "from": "crates/g3-cli/src/lib.rs", + "to": "crates/g3-cli/src/interactive.rs", + "type": "mod_declaration" + }, + { + "evidence": "mod simple_output", + "from": "crates/g3-cli/src/lib.rs", + "to": "crates/g3-cli/src/simple_output.rs", + "type": "mod_declaration" + }, + { + "evidence": "mod task_execution", + "from": "crates/g3-cli/src/lib.rs", + "to": "crates/g3-cli/src/task_execution.rs", + "type": "mod_declaration" + }, + { + "evidence": "mod ui_writer_impl", + "from": "crates/g3-cli/src/lib.rs", + "to": "crates/g3-cli/src/ui_writer_impl.rs", + "type": "mod_declaration" + }, + { + "evidence": "mod utils", + "from": "crates/g3-cli/src/lib.rs", + "to": "crates/g3-cli/src/utils.rs", + "type": "mod_declaration" + }, + { + "evidence": "use g3_core::project::Project", + "from": "crates/g3-cli/src/accumulative.rs", + "to_crate": "g3-core", + "type": "cross_crate_import" + }, + { + "evidence": "use g3_core::Agent", + "from": "crates/g3-cli/src/accumulative.rs", + "to_crate": "g3-core", + "type": "cross_crate_import" + }, + { + "evidence": "use g3_core::error_handling::", + "from": "crates/g3-cli/src/task_execution.rs", + "to_crate": "g3-core", + "type": "cross_crate_import" + }, + { + "evidence": "use g3_core::ui_writer::UiWriter", + "from": "crates/g3-cli/src/task_execution.rs", + "to_crate": "g3-core", + "type": "cross_crate_import" + }, + { + "evidence": "use g3_core::Agent", + "from": "crates/g3-cli/src/task_execution.rs", + "to_crate": "g3-core", + "type": "cross_crate_import" + }, + { + "evidence": "use g3_core::Agent", + "from": "crates/g3-cli/src/coach_feedback.rs", + "to_crate": "g3-core", + "type": "cross_crate_import" + }, + { + "evidence": "use g3_core::error_handling::", + "from": "crates/g3-cli/src/autonomous.rs", + "to_crate": "g3-core", + "type": "cross_crate_import" + }, + { + "evidence": "use g3_core::project::Project", + "from": "crates/g3-cli/src/autonomous.rs", + "to_crate": "g3-core", + "type": "cross_crate_import" + }, + { + "evidence": "use g3_core::", + "from": "crates/g3-cli/src/autonomous.rs", + "to_crate": "g3-core", + "type": "cross_crate_import" + }, + { + "evidence": "use g3_core::ui_writer::UiWriter", + "from": "crates/g3-cli/src/ui_writer_impl.rs", + "to_crate": "g3-core", + "type": "cross_crate_import" + }, + { + "evidence": "use g3_core::ui_writer::UiWriter", + "from": "crates/g3-cli/src/interactive.rs", + "to_crate": "g3-core", + "type": "cross_crate_import" + }, + { + "evidence": "use g3_core::Agent", + "from": "crates/g3-cli/src/interactive.rs", + "to_crate": "g3-core", + "type": "cross_crate_import" + }, + { + "evidence": "use g3_config::Config", + "from": "crates/g3-cli/src/utils.rs", + "to_crate": "g3-config", + "type": "cross_crate_import" + }, + { + "evidence": "use g3_core::ui_writer::UiWriter", + "from": "crates/g3-cli/src/utils.rs", + "to_crate": "g3-core", + "type": "cross_crate_import" + }, + { + "evidence": "use g3_core::Agent", + "from": "crates/g3-cli/src/utils.rs", + "to_crate": "g3-core", + "type": "cross_crate_import" + }, + { + "evidence": "use g3_config::Config", + "from": "crates/g3-planner/src/llm.rs", + "to_crate": "g3-config", + "type": "cross_crate_import" + }, + { + "evidence": "use g3_core::project::Project", + "from": "crates/g3-planner/src/llm.rs", + "to_crate": "g3-core", + "type": "cross_crate_import" + }, + { + "evidence": "use g3_core::Agent", + "from": "crates/g3-planner/src/llm.rs", + "to_crate": "g3-core", + "type": "cross_crate_import" + }, + { + "evidence": "use g3_core::error_handling::", + "from": "crates/g3-planner/src/llm.rs", + "to_crate": "g3-core", + "type": "cross_crate_import" + }, + { + "evidence": "use g3_providers::", + "from": "crates/g3-planner/src/llm.rs", + "to_crate": "g3-providers", + "type": "cross_crate_import" + }, + { + "evidence": "use g3_providers::", + "from": "crates/g3-planner/src/lib.rs", + "to_crate": "g3-providers", + "type": "cross_crate_import" + }, + { + "evidence": "mod code_explore", + "from": "crates/g3-planner/src/lib.rs", + "to": "crates/g3-planner/src/code_explore.rs", + "type": "mod_declaration" + }, + { + "evidence": "mod git", + "from": "crates/g3-planner/src/lib.rs", + "to": "crates/g3-planner/src/git.rs", + "type": "mod_declaration" + }, + { + "evidence": "mod history", + "from": "crates/g3-planner/src/lib.rs", + "to": "crates/g3-planner/src/history.rs", + "type": "mod_declaration" + }, + { + "evidence": "mod llm", + "from": "crates/g3-planner/src/lib.rs", + "to": "crates/g3-planner/src/llm.rs", + "type": "mod_declaration" + }, + { + "evidence": "mod planner", + "from": "crates/g3-planner/src/lib.rs", + "to": "crates/g3-planner/src/planner.rs", + "type": "mod_declaration" + }, + { + "evidence": "mod prompts", + "from": "crates/g3-planner/src/lib.rs", + "to": "crates/g3-planner/src/prompts.rs", + "type": "mod_declaration" + }, + { + "evidence": "mod state", + "from": "crates/g3-planner/src/lib.rs", + "to": "crates/g3-planner/src/state.rs", + "type": "mod_declaration" + } + ], + "metrics": { + "fan_in": { + "crates/g3-cli/src/accumulative.rs": 1, + "crates/g3-cli/src/agent_mode.rs": 1, + "crates/g3-cli/src/autonomous.rs": 1, + "crates/g3-cli/src/cli_args.rs": 1, + "crates/g3-cli/src/coach_feedback.rs": 1, + "crates/g3-cli/src/filter_json.rs": 1, + "crates/g3-cli/src/interactive.rs": 1, + "crates/g3-cli/src/metrics.rs": 1, + "crates/g3-cli/src/project_files.rs": 1, + "crates/g3-cli/src/simple_output.rs": 1, + "crates/g3-cli/src/streaming_markdown.rs": 1, + "crates/g3-cli/src/task_execution.rs": 1, + "crates/g3-cli/src/ui_writer_impl.rs": 1, + "crates/g3-cli/src/utils.rs": 1, + "crates/g3-computer-control/src/macax/controller.rs": 1, + "crates/g3-computer-control/src/macax/mod.rs": 1, + "crates/g3-computer-control/src/ocr/mod.rs": 1, + "crates/g3-computer-control/src/ocr/tesseract.rs": 1, + "crates/g3-computer-control/src/ocr/vision.rs": 1, + "crates/g3-computer-control/src/platform/linux.rs": 1, + "crates/g3-computer-control/src/platform/macos.rs": 1, + "crates/g3-computer-control/src/platform/mod.rs": 1, + "crates/g3-computer-control/src/platform/windows.rs": 1, + "crates/g3-computer-control/src/types.rs": 1, + "crates/g3-computer-control/src/webdriver/chrome.rs": 1, + "crates/g3-computer-control/src/webdriver/diagnostics.rs": 1, + "crates/g3-computer-control/src/webdriver/mod.rs": 1, + "crates/g3-computer-control/src/webdriver/safari.rs": 1, + "crates/g3-core/src/acd.rs": 1, + "crates/g3-core/src/background_process.rs": 1, + "crates/g3-core/src/code_search/mod.rs": 1, + "crates/g3-core/src/code_search/searcher.rs": 1, + "crates/g3-core/src/compaction.rs": 1, + "crates/g3-core/src/context_window.rs": 1, + "crates/g3-core/src/error_handling.rs": 1, + "crates/g3-core/src/error_handling_test.rs": 1, + "crates/g3-core/src/feedback_extraction.rs": 1, + "crates/g3-core/src/paths.rs": 1, + "crates/g3-core/src/project.rs": 1, + "crates/g3-core/src/prompts.rs": 1, + "crates/g3-core/src/provider_config.rs": 1, + "crates/g3-core/src/provider_registration.rs": 1, + "crates/g3-core/src/retry.rs": 1, + "crates/g3-core/src/session.rs": 1, + "crates/g3-core/src/session_continuation.rs": 1, + "crates/g3-core/src/streaming.rs": 1, + "crates/g3-core/src/streaming_parser.rs": 1, + "crates/g3-core/src/task_result.rs": 1, + "crates/g3-core/src/task_result_comprehensive_tests.rs": 1, + "crates/g3-core/src/tilde_expansion_tests.rs": 1, + "crates/g3-core/src/tool_definitions.rs": 1, + "crates/g3-core/src/tool_dispatch.rs": 1, + "crates/g3-core/src/tools/acd.rs": 1, + "crates/g3-core/src/tools/executor.rs": 1, + "crates/g3-core/src/tools/file_ops.rs": 1, + "crates/g3-core/src/tools/memory.rs": 1, + "crates/g3-core/src/tools/misc.rs": 1, + "crates/g3-core/src/tools/mod.rs": 1, + "crates/g3-core/src/tools/research.rs": 1, + "crates/g3-core/src/tools/shell.rs": 1, + "crates/g3-core/src/tools/todo.rs": 1, + "crates/g3-core/src/tools/webdriver.rs": 1, + "crates/g3-core/src/ui_writer.rs": 1, + "crates/g3-core/src/utils.rs": 1, + "crates/g3-core/src/webdriver_session.rs": 1, + "crates/g3-ensembles/src/flock.rs": 1, + "crates/g3-ensembles/src/status.rs": 1, + "crates/g3-planner/src/code_explore.rs": 1, + "crates/g3-planner/src/git.rs": 1, + "crates/g3-planner/src/history.rs": 1, + "crates/g3-planner/src/llm.rs": 1, + "crates/g3-planner/src/planner.rs": 1, + "crates/g3-planner/src/prompts.rs": 1, + "crates/g3-planner/src/state.rs": 1, + "crates/g3-providers/src/anthropic.rs": 1, + "crates/g3-providers/src/databricks.rs": 1, + "crates/g3-providers/src/embedded.rs": 1, + "crates/g3-providers/src/oauth.rs": 1, + "crates/g3-providers/src/openai.rs": 1, + "crates/g3-providers/src/streaming.rs": 1, + "g3-computer-control": 2, + "g3-config": 9, + "g3-core": 21, + "g3-providers": 11 + }, + "fan_out": { + "crates/g3-cli/src/accumulative.rs": 2, + "crates/g3-cli/src/agent_mode.rs": 2, + "crates/g3-cli/src/autonomous.rs": 3, + "crates/g3-cli/src/coach_feedback.rs": 1, + "crates/g3-cli/src/interactive.rs": 2, + "crates/g3-cli/src/lib.rs": 17, + "crates/g3-cli/src/task_execution.rs": 3, + "crates/g3-cli/src/ui_writer_impl.rs": 1, + "crates/g3-cli/src/utils.rs": 3, + "crates/g3-computer-control/src/lib.rs": 5, + "crates/g3-computer-control/src/macax/mod.rs": 1, + "crates/g3-computer-control/src/ocr/mod.rs": 2, + "crates/g3-computer-control/src/platform/mod.rs": 3, + "crates/g3-computer-control/src/webdriver/mod.rs": 3, + "crates/g3-core/src/acd.rs": 1, + "crates/g3-core/src/code_search/mod.rs": 1, + "crates/g3-core/src/compaction.rs": 1, + "crates/g3-core/src/context_window.rs": 1, + "crates/g3-core/src/lib.rs": 29, + "crates/g3-core/src/provider_config.rs": 1, + "crates/g3-core/src/provider_registration.rs": 2, + "crates/g3-core/src/session.rs": 1, + "crates/g3-core/src/streaming.rs": 1, + "crates/g3-core/src/task_result_comprehensive_tests.rs": 1, + "crates/g3-core/src/tool_definitions.rs": 1, + "crates/g3-core/src/tools/executor.rs": 1, + "crates/g3-core/src/tools/mod.rs": 9, + "crates/g3-core/src/tools/research.rs": 1, + "crates/g3-core/src/tools/webdriver.rs": 1, + "crates/g3-core/src/webdriver_session.rs": 1, + "crates/g3-ensembles/src/flock.rs": 1, + "crates/g3-ensembles/src/lib.rs": 2, + "crates/g3-planner/src/lib.rs": 8, + "crates/g3-planner/src/llm.rs": 5, + "crates/g3-providers/src/lib.rs": 6 + } + }, + "nodes": [ + { + "crate": "g3-computer-control", + "id": "crates/g3-computer-control/src/types.rs", + "mods_declared": [], + "type": "module" + }, + { + "crate": "g3-computer-control", + "id": "crates/g3-computer-control/src/lib.rs", + "mods_declared": [ + "macax", + "ocr", + "platform", + "types", + "webdriver" + ], + "type": "lib_root" + }, + { + "crate": "g3-computer-control", + "id": "crates/g3-computer-control/src/platform/macos.rs", + "mods_declared": [], + "type": "module" + }, + { + "crate": "g3-computer-control", + "id": "crates/g3-computer-control/src/platform/mod.rs", + "mods_declared": [ + "macos", + "linux", + "windows" + ], + "type": "mod_root" + }, + { + "crate": "g3-computer-control", + "id": "crates/g3-computer-control/src/platform/windows.rs", + "mods_declared": [], + "type": "module" + }, + { + "crate": "g3-computer-control", + "id": "crates/g3-computer-control/src/platform/linux.rs", + "mods_declared": [], + "type": "module" + }, + { + "crate": "g3-computer-control", + "id": "crates/g3-computer-control/src/ocr/vision.rs", + "mods_declared": [], + "type": "module" + }, + { + "crate": "g3-computer-control", + "id": "crates/g3-computer-control/src/ocr/tesseract.rs", + "mods_declared": [], + "type": "module" + }, + { + "crate": "g3-computer-control", + "id": "crates/g3-computer-control/src/ocr/mod.rs", + "mods_declared": [ + "vision", + "tesseract" + ], + "type": "mod_root" + }, + { + "crate": "g3-computer-control", + "id": "crates/g3-computer-control/src/webdriver/diagnostics.rs", + "mods_declared": [], + "type": "module" + }, + { + "crate": "g3-computer-control", + "id": "crates/g3-computer-control/src/webdriver/safari.rs", + "mods_declared": [], + "type": "module" + }, + { + "crate": "g3-computer-control", + "id": "crates/g3-computer-control/src/webdriver/mod.rs", + "mods_declared": [ + "safari", + "chrome", + "diagnostics" + ], + "type": "mod_root" + }, + { + "crate": "g3-computer-control", + "id": "crates/g3-computer-control/src/webdriver/chrome.rs", + "mods_declared": [], + "type": "module" + }, + { + "crate": "g3-computer-control", + "id": "crates/g3-computer-control/src/macax/controller.rs", + "mods_declared": [], + "type": "module" + }, + { + "crate": "g3-computer-control", + "id": "crates/g3-computer-control/src/macax/mod.rs", + "mods_declared": [ + "controller" + ], + "type": "mod_root" + }, + { + "crate": "g3-computer-control", + "id": "crates/g3-computer-control/src/macax/tests.rs", + "mods_declared": [], + "type": "module" + }, + { + "crate": "studio", + "id": "crates/studio/src/session.rs", + "mods_declared": [], + "type": "module" + }, + { + "crate": "studio", + "id": "crates/studio/src/git.rs", + "mods_declared": [], + "type": "module" + }, + { + "crate": "studio", + "id": "crates/studio/src/main.rs", + "mods_declared": [ + "git", + "session" + ], + "type": "bin_root" + }, + { + "crate": "g3-providers", + "id": "crates/g3-providers/src/lib.rs", + "mods_declared": [ + "streaming", + "anthropic", + "databricks", + "embedded", + "oauth", + "openai" + ], + "type": "lib_root" + }, + { + "crate": "g3-providers", + "id": "crates/g3-providers/src/embedded.rs", + "mods_declared": [], + "type": "module" + }, + { + "crate": "g3-providers", + "id": "crates/g3-providers/src/oauth.rs", + "mods_declared": [], + "type": "module" + }, + { + "crate": "g3-providers", + "id": "crates/g3-providers/src/databricks.rs", + "mods_declared": [], + "type": "module" + }, + { + "crate": "g3-providers", + "id": "crates/g3-providers/src/streaming.rs", + "mods_declared": [], + "type": "module" + }, + { + "crate": "g3-providers", + "id": "crates/g3-providers/src/anthropic.rs", + "mods_declared": [], + "type": "module" + }, + { + "crate": "g3-providers", + "id": "crates/g3-providers/src/openai.rs", + "mods_declared": [], + "type": "module" + }, + { + "crate": "g3-ensembles", + "id": "crates/g3-ensembles/src/lib.rs", + "mods_declared": [ + "flock", + "status" + ], + "type": "lib_root" + }, + { + "crate": "g3-ensembles", + "id": "crates/g3-ensembles/src/status.rs", + "mods_declared": [], + "type": "module" + }, + { + "crate": "g3-ensembles", + "id": "crates/g3-ensembles/src/tests.rs", + "mods_declared": [], + "type": "module" + }, + { + "crate": "g3-ensembles", + "id": "crates/g3-ensembles/src/flock.rs", + "mods_declared": [], + "type": "module" + }, + { + "crate": "g3-core", + "id": "crates/g3-core/src/session.rs", + "mods_declared": [], + "type": "module" + }, + { + "crate": "g3-core", + "id": "crates/g3-core/src/prompts.rs", + "mods_declared": [], + "type": "module" + }, + { + "crate": "g3-core", + "id": "crates/g3-core/src/background_process.rs", + "mods_declared": [], + "type": "module" + }, + { + "crate": "g3-core", + "id": "crates/g3-core/src/ui_writer.rs", + "mods_declared": [], + "type": "module" + }, + { + "crate": "g3-core", + "id": "crates/g3-core/src/tool_dispatch.rs", + "mods_declared": [], + "type": "module" + }, + { + "crate": "g3-core", + "id": "crates/g3-core/src/webdriver_session.rs", + "mods_declared": [], + "type": "module" + }, + { + "crate": "g3-core", + "id": "crates/g3-core/src/lib.rs", + "mods_declared": [ + "acd", + "context_window", + "background_process", + "compaction", + "code_search", + "error_handling", + "feedback_extraction", + "paths", + "project", + "provider_registration", + "provider_config", + "retry", + "session", + "session_continuation", + "streaming_parser", + "task_result", + "tool_dispatch", + "tool_definitions", + "tools", + "ui_writer", + "streaming", + "utils", + "webdriver_session", + "task_result_comprehensive_tests", + "tilde_expansion_tests", + "error_handling_test", + "prompts" + ], + "type": "lib_root" + }, + { + "crate": "g3-core", + "id": "crates/g3-core/src/streaming_parser.rs", + "mods_declared": [], + "type": "module" + }, + { + "crate": "g3-core", + "id": "crates/g3-core/src/paths.rs", + "mods_declared": [], + "type": "module" + }, + { + "crate": "g3-core", + "id": "crates/g3-core/src/context_window.rs", + "mods_declared": [], + "type": "module" + }, + { + "crate": "g3-core", + "id": "crates/g3-core/src/acd.rs", + "mods_declared": [], + "type": "module" + }, + { + "crate": "g3-core", + "id": "crates/g3-core/src/feedback_extraction.rs", + "mods_declared": [], + "type": "module" + }, + { + "crate": "g3-core", + "id": "crates/g3-core/src/session_continuation.rs", + "mods_declared": [], + "type": "module" + }, + { + "crate": "g3-core", + "id": "crates/g3-core/src/tilde_expansion_tests.rs", + "mods_declared": [ + "tilde_expansion_tests" + ], + "type": "module" + }, + { + "crate": "g3-core", + "id": "crates/g3-core/src/task_result.rs", + "mods_declared": [], + "type": "module" + }, + { + "crate": "g3-core", + "id": "crates/g3-core/src/project.rs", + "mods_declared": [], + "type": "module" + }, + { + "crate": "g3-core", + "id": "crates/g3-core/src/provider_registration.rs", + "mods_declared": [], + "type": "module" + }, + { + "crate": "g3-core", + "id": "crates/g3-core/src/task_result_comprehensive_tests.rs", + "mods_declared": [], + "type": "module" + }, + { + "crate": "g3-core", + "id": "crates/g3-core/src/tool_definitions.rs", + "mods_declared": [], + "type": "module" + }, + { + "crate": "g3-core", + "id": "crates/g3-core/src/streaming.rs", + "mods_declared": [], + "type": "module" + }, + { + "crate": "g3-core", + "id": "crates/g3-core/src/task_result_tests.rs", + "mods_declared": [], + "type": "module" + }, + { + "crate": "g3-core", + "id": "crates/g3-core/src/compaction.rs", + "mods_declared": [], + "type": "module" + }, + { + "crate": "g3-core", + "id": "crates/g3-core/src/provider_config.rs", + "mods_declared": [], + "type": "module" + }, + { + "crate": "g3-core", + "id": "crates/g3-core/src/error_handling.rs", + "mods_declared": [], + "type": "module" + }, + { + "crate": "g3-core", + "id": "crates/g3-core/src/retry.rs", + "mods_declared": [], + "type": "module" + }, + { + "crate": "g3-core", + "id": "crates/g3-core/src/utils.rs", + "mods_declared": [], + "type": "module" + }, + { + "crate": "g3-core", + "id": "crates/g3-core/src/tools/file_ops.rs", + "mods_declared": [], + "type": "module" + }, + { + "crate": "g3-core", + "id": "crates/g3-core/src/tools/shell.rs", + "mods_declared": [], + "type": "module" + }, + { + "crate": "g3-core", + "id": "crates/g3-core/src/tools/research.rs", + "mods_declared": [], + "type": "module" + }, + { + "crate": "g3-core", + "id": "crates/g3-core/src/tools/memory.rs", + "mods_declared": [], + "type": "module" + }, + { + "crate": "g3-core", + "id": "crates/g3-core/src/tools/acd.rs", + "mods_declared": [], + "type": "module" + }, + { + "crate": "g3-core", + "id": "crates/g3-core/src/tools/misc.rs", + "mods_declared": [], + "type": "module" + }, + { + "crate": "g3-core", + "id": "crates/g3-core/src/tools/mod.rs", + "mods_declared": [ + "executor", + "acd", + "file_ops", + "memory", + "misc", + "research", + "shell", + "todo", + "webdriver" + ], + "type": "mod_root" + }, + { + "crate": "g3-core", + "id": "crates/g3-core/src/tools/webdriver.rs", + "mods_declared": [], + "type": "module" + }, + { + "crate": "g3-core", + "id": "crates/g3-core/src/tools/executor.rs", + "mods_declared": [], + "type": "module" + }, + { + "crate": "g3-core", + "id": "crates/g3-core/src/tools/todo.rs", + "mods_declared": [], + "type": "module" + }, + { + "crate": "g3-core", + "id": "crates/g3-core/src/code_search/searcher.rs", + "mods_declared": [], + "type": "module" + }, + { + "crate": "g3-core", + "id": "crates/g3-core/src/code_search/mod.rs", + "mods_declared": [ + "searcher" + ], + "type": "mod_root" + }, + { + "crate": "g3-cli", + "id": "crates/g3-cli/src/agent_mode.rs", + "mods_declared": [], + "type": "module" + }, + { + "crate": "g3-cli", + "id": "crates/g3-cli/src/simple_output.rs", + "mods_declared": [], + "type": "module" + }, + { + "crate": "g3-cli", + "id": "crates/g3-cli/src/lib.rs", + "mods_declared": [ + "filter_json", + "metrics", + "project_files", + "streaming_markdown", + "accumulative", + "agent_mode", + "autonomous", + "cli_args", + "coach_feedback", + "interactive", + "simple_output", + "task_execution", + "ui_writer_impl", + "utils" + ], + "type": "lib_root" + }, + { + "crate": "g3-cli", + "id": "crates/g3-cli/src/theme.rs", + "mods_declared": [], + "type": "module" + }, + { + "crate": "g3-cli", + "id": "crates/g3-cli/src/cli_args.rs", + "mods_declared": [], + "type": "module" + }, + { + "crate": "g3-cli", + "id": "crates/g3-cli/src/metrics.rs", + "mods_declared": [], + "type": "module" + }, + { + "crate": "g3-cli", + "id": "crates/g3-cli/src/streaming_markdown.rs", + "mods_declared": [], + "type": "module" + }, + { + "crate": "g3-cli", + "id": "crates/g3-cli/src/accumulative.rs", + "mods_declared": [], + "type": "module" + }, + { + "crate": "g3-cli", + "id": "crates/g3-cli/src/task_execution.rs", + "mods_declared": [], + "type": "module" + }, + { + "crate": "g3-cli", + "id": "crates/g3-cli/src/coach_feedback.rs", + "mods_declared": [], + "type": "module" + }, + { + "crate": "g3-cli", + "id": "crates/g3-cli/src/project_files.rs", + "mods_declared": [], + "type": "module" + }, + { + "crate": "g3-cli", + "id": "crates/g3-cli/src/autonomous.rs", + "mods_declared": [], + "type": "module" + }, + { + "crate": "g3-cli", + "id": "crates/g3-cli/src/ui_writer_impl.rs", + "mods_declared": [], + "type": "module" + }, + { + "crate": "g3-cli", + "id": "crates/g3-cli/src/interactive.rs", + "mods_declared": [], + "type": "module" + }, + { + "crate": "g3-cli", + "id": "crates/g3-cli/src/filter_json.rs", + "mods_declared": [], + "type": "module" + }, + { + "crate": "g3-cli", + "id": "crates/g3-cli/src/utils.rs", + "mods_declared": [], + "type": "module" + }, + { + "crate": "g3-planner", + "id": "crates/g3-planner/src/llm.rs", + "mods_declared": [], + "type": "module" + }, + { + "crate": "g3-planner", + "id": "crates/g3-planner/src/prompts.rs", + "mods_declared": [], + "type": "module" + }, + { + "crate": "g3-planner", + "id": "crates/g3-planner/src/lib.rs", + "mods_declared": [ + "code_explore", + "git", + "history", + "llm", + "planner", + "prompts", + "state" + ], + "type": "lib_root" + }, + { + "crate": "g3-planner", + "id": "crates/g3-planner/src/git.rs", + "mods_declared": [], + "type": "module" + }, + { + "crate": "g3-planner", + "id": "crates/g3-planner/src/planner.rs", + "mods_declared": [], + "type": "module" + }, + { + "crate": "g3-planner", + "id": "crates/g3-planner/src/history.rs", + "mods_declared": [], + "type": "module" + }, + { + "crate": "g3-planner", + "id": "crates/g3-planner/src/state.rs", + "mods_declared": [], + "type": "module" + }, + { + "crate": "g3-planner", + "id": "crates/g3-planner/src/code_explore.rs", + "mods_declared": [], + "type": "module" + }, + { + "crate": "g3-config", + "id": "crates/g3-config/src/lib.rs", + "mods_declared": [], + "type": "lib_root" + }, + { + "crate": "g3-config", + "id": "crates/g3-config/src/tests.rs", + "mods_declared": [], + "type": "module" + }, + { + "crate": "g3-execution", + "id": "crates/g3-execution/src/lib.rs", + "mods_declared": [], + "type": "lib_root" + } + ] + }, + "generated_by": "euler_agent", + "sccs": [], + "version": "1.0" } \ No newline at end of file diff --git a/analysis/deps/graph.summary.md b/analysis/deps/graph.summary.md index b18d9d5..1143e96 100644 --- a/analysis/deps/graph.summary.md +++ b/analysis/deps/graph.summary.md @@ -4,112 +4,90 @@ | Metric | Count | |--------|-------| -| Total nodes | 143 | -| Crate nodes | 9 | -| File nodes | 134 | -| Total edges | 189 | +| Workspace crates | 10 | +| Crate-level edges | 17 | +| Source files (non-test) | 95 | +| File-level edges | 123 | +| Cross-crate imports | 43 | +| Strongly connected components | 0 | -## Node Distribution +## Crate-Level Structure -### Files by Crate +### Crates by Type -| Crate | File Count | +| Crate | Type | Files | +|-------|------|-------| +| g3 | bin (root) | 1 | +| g3-cli | lib | 16 | +| g3-core | lib | 38 | +| g3-providers | lib | 7 | +| g3-config | lib | 2 | +| g3-execution | lib | 1 | +| g3-computer-control | lib | 16 | +| g3-planner | lib | 8 | +| g3-ensembles | lib | 4 | +| studio | bin | 3 | + +### Fan-In (Most Depended Upon) + +| Crate | Dependents | |-------|------------| -| g3-core | 60 | -| g3-computer-control | 29 | -| g3-cli | 12 | -| g3-planner | 12 | -| g3-providers | 10 | -| g3-ensembles | 5 | -| g3 (root) | 2 | -| g3-config | 2 | -| g3-execution | 2 | +| g3-config | 4 | +| g3-providers | 4 | +| g3-core | 3 | +| g3-computer-control | 2 | +| g3-cli | 1 | +| g3-ensembles | 1 | +| g3-execution | 1 | +| g3-planner | 1 | -### Files by Type +### Fan-Out (Most Dependencies) -| Type | Count | -|------|-------| -| module | 72 | -| test | 37 | -| example | 15 | -| lib | 8 | -| build | 1 | -| main | 1 | - -## Edge Distribution - -| Edge Type | Count | Description | -|-----------|-------|-------------| -| file_to_crate | 101 | File imports from external crate | -| mod_declaration | 71 | Module declaration within crate | -| crate_dependency | 17 | Cargo.toml dependency | - -## Crate Dependency Structure - -``` -g3 (root binary) -├── g3-cli -│ ├── g3-core -│ │ ├── g3-providers -│ │ ├── g3-config -│ │ ├── g3-execution -│ │ └── g3-computer-control -│ ├── g3-config -│ ├── g3-planner -│ │ ├── g3-providers -│ │ ├── g3-core -│ │ └── g3-config -│ ├── g3-computer-control -│ ├── g3-providers -│ └── g3-ensembles -│ ├── g3-core -│ └── g3-config -└── g3-providers -``` - -## Top Fan-In Nodes (Most Depended Upon) - -| Node | Fan-In | -|------|--------| -| g3-core | 43 | -| g3-providers | 27 | -| g3-config | 16 | -| g3-computer-control | 12 | -| g3-planner | 10 | -| g3-cli | 5 | -| g3-ensembles | 3 | -| g3-execution | 2 | - -## Top Fan-Out Nodes (Most Dependencies) - -| Node | Fan-Out | -|------|--------| -| ./crates/g3-core/src/lib.rs | 27 | -| ./crates/g3-cli/src/lib.rs | 12 | -| ./crates/g3-core/src/tools/mod.rs | 8 | -| ./crates/g3-planner/src/lib.rs | 8 | -| ./crates/g3-providers/src/lib.rs | 6 | +| Crate | Dependencies | +|-------|-------------| | g3-cli | 6 | -| ./crates/g3-computer-control/src/lib.rs | 5 | -| ./crates/g3-planner/src/llm.rs | 5 | +| g3-core | 4 | +| g3-planner | 3 | +| g3 | 2 | +| g3-ensembles | 2 | + +## File-Level Structure + +### Top Fan-Out Files (Most Outgoing Edges) + +| File | Edges | Description | +|------|-------|-------------| +| crates/g3-core/src/lib.rs | 29 | Core library root | +| crates/g3-cli/src/lib.rs | 17 | CLI library root | +| crates/g3-core/src/tools/mod.rs | 9 | Tools module root | +| crates/g3-planner/src/lib.rs | 8 | Planner library root | +| crates/g3-providers/src/lib.rs | 6 | Providers library root | +| crates/g3-computer-control/src/lib.rs | 5 | Computer control root | +| crates/g3-planner/src/llm.rs | 5 | LLM integration | + +### Top Fan-In (Most Imported) + +| Target | Imports | +|--------|--------| +| g3-core (crate) | 21 | +| g3-providers (crate) | 11 | +| g3-config (crate) | 9 | +| g3-computer-control (crate) | 2 | ## Entrypoints -| File | Type | Description | -|------|------|-------------| -| ./src/main.rs | main | Root binary entrypoint | -| ./crates/g3-cli/src/lib.rs | lib | CLI library root | -| ./crates/g3-core/src/lib.rs | lib | Core engine library root | -| ./crates/g3-providers/src/lib.rs | lib | LLM providers library root | -| ./crates/g3-config/src/lib.rs | lib | Configuration library root | -| ./crates/g3-execution/src/lib.rs | lib | Execution library root | -| ./crates/g3-computer-control/src/lib.rs | lib | Computer control library root | -| ./crates/g3-ensembles/src/lib.rs | lib | Ensembles library root | -| ./crates/g3-planner/src/lib.rs | lib | Planner library root | +| File | Type | +|------|------| +| src/main.rs | Binary entrypoint (g3) | +| crates/studio/src/main.rs | Binary entrypoint (studio) | +| crates/g3-cli/src/lib.rs | Library root | +| crates/g3-core/src/lib.rs | Library root | -## Extraction Method +## Extraction Limitations -- Crate dependencies: Parsed from `Cargo.toml` files -- File-to-crate edges: Extracted from `use g3_*::` statements -- Module declarations: Extracted from `mod` and `pub mod` statements -- File classification: Based on path patterns and filename conventions +- Only `use` and `mod` statements at line start are parsed +- Conditional compilation (`#[cfg(...)]`) not evaluated +- Macro-generated imports not detected +- Re-exports through `pub use` not fully traced +- Test modules (`mod tests`) excluded from graph +- Test files (`*_test.rs`, `tests/`) excluded from graph diff --git a/analysis/deps/hotspots.md b/analysis/deps/hotspots.md index fa8f76f..6cb1ba6 100644 --- a/analysis/deps/hotspots.md +++ b/analysis/deps/hotspots.md @@ -1,101 +1,112 @@ # Coupling Hotspots -## Identification Method +## Method Hotspots identified by: -1. Fan-in: Number of incoming edges (dependents) -2. Fan-out: Number of outgoing edges (dependencies) -3. Cross-crate edges: Files with imports from multiple external crates +1. Fan-in > 2× average (high incoming dependencies) +2. Fan-out > 2× average (high outgoing dependencies) +3. Cross-group edge concentration + +## Metrics + +### Crate Level + +| Metric | Value | +|--------|-------| +| Average fan-in | 2.0 | +| Average fan-out | 1.7 | +| Threshold (2×) | 4.0 / 3.4 | + +### File Level + +| Metric | Value | +|--------|-------| +| Total edges | 123 | +| Total files | 95 | +| Average fan-out | 1.3 | +| Threshold (2×) | 2.6 | ## Crate-Level Hotspots -### By Fan-In (Most Depended Upon) +### High Fan-In (Most Depended Upon) -| Crate | Fan-In | Dependents | -|-------|--------|------------| -| g3-core | 43 | g3-cli, g3-ensembles, g3-planner + 40 file imports | -| g3-providers | 27 | g3-core, g3-planner + 25 file imports | -| g3-config | 16 | g3-cli, g3-core, g3-ensembles, g3-planner + 12 file imports | -| g3-computer-control | 12 | g3-cli, g3-core + 10 file imports | +| Crate | Fan-In | Status | +|-------|--------|--------| +| g3-config | 4 | **HOTSPOT** (2× avg) | +| g3-providers | 4 | **HOTSPOT** (2× avg) | +| g3-core | 3 | Near threshold | -### By Fan-Out (Most Dependencies) +**Evidence for g3-config:** +- Depended on by: g3-cli, g3-core, g3-planner, g3-ensembles +- Contains: Configuration types, loading logic -| Crate | Fan-Out | Dependencies | -|-------|---------|-------------| -| g3-cli | 6 | g3-core, g3-config, g3-planner, g3-computer-control, g3-providers, g3-ensembles | -| g3-core | 4 | g3-providers, g3-config, g3-execution, g3-computer-control | -| g3-planner | 3 | g3-providers, g3-core, g3-config | -| g3-ensembles | 2 | g3-core, g3-config | +**Evidence for g3-providers:** +- Depended on by: g3, g3-cli, g3-core, g3-planner +- Contains: LLM provider trait, message types, streaming + +### High Fan-Out (Most Dependencies) + +| Crate | Fan-Out | Status | +|-------|---------|--------| +| g3-cli | 6 | **HOTSPOT** (3.5× avg) | +| g3-core | 4 | **HOTSPOT** (2.4× avg) | +| g3-planner | 3 | Near threshold | + +**Evidence for g3-cli:** +- Depends on: g3-core, g3-config, g3-planner, g3-computer-control, g3-providers, g3-ensembles +- Role: Top-level integration point + +**Evidence for g3-core:** +- Depends on: g3-providers, g3-config, g3-execution, g3-computer-control +- Role: Central engine with multiple infrastructure dependencies ## File-Level Hotspots -### By Fan-Out (Files with Most Dependencies) +### High Fan-Out Files -| File | Fan-Out | Description | -|------|---------|-------------| -| ./crates/g3-core/src/lib.rs | 27 | Core library root - declares 22 modules + 5 external imports | -| ./crates/g3-cli/src/lib.rs | 12 | CLI library root - 5 modules + 7 external imports | -| ./crates/g3-core/src/tools/mod.rs | 8 | Tools module - declares 8 submodules | -| ./crates/g3-planner/src/lib.rs | 8 | Planner library root - 7 modules + 1 external import | -| ./crates/g3-providers/src/lib.rs | 6 | Providers library root - 5 modules + 1 internal | -| ./crates/g3-computer-control/src/lib.rs | 5 | Computer control root - 5 modules | -| ./crates/g3-planner/src/llm.rs | 5 | LLM integration - 5 external imports | +| File | Fan-Out | Threshold | Status | +|------|---------|-----------|--------| +| crates/g3-core/src/lib.rs | 29 | 2.6 | **HOTSPOT** (22× avg) | +| crates/g3-cli/src/lib.rs | 17 | 2.6 | **HOTSPOT** (13× avg) | +| crates/g3-core/src/tools/mod.rs | 9 | 2.6 | **HOTSPOT** (7× avg) | +| crates/g3-planner/src/lib.rs | 8 | 2.6 | **HOTSPOT** (6× avg) | +| crates/g3-providers/src/lib.rs | 6 | 2.6 | **HOTSPOT** (4.6× avg) | +| crates/g3-computer-control/src/lib.rs | 5 | 2.6 | **HOTSPOT** (3.8× avg) | +| crates/g3-planner/src/llm.rs | 5 | 2.6 | **HOTSPOT** (3.8× avg) | -### Files with Cross-Crate Imports +**Note:** High fan-out in `lib.rs` files is expected (module re-exports). The `tools/mod.rs` and `llm.rs` hotspots are more significant as they represent actual coupling. -| File | External Crates Imported | -|------|-------------------------| -| ./crates/g3-cli/src/lib.rs | g3-config, g3-core | -| ./crates/g3-core/src/lib.rs | g3-config, g3-providers | -| ./crates/g3-core/src/context_window.rs | g3-providers | -| ./crates/g3-core/src/streaming.rs | g3-providers | -| ./crates/g3-core/src/tool_definitions.rs | g3-providers | -| ./crates/g3-core/src/tools/executor.rs | g3-config | -| ./crates/g3-core/src/tools/research.rs | g3-config | -| ./crates/g3-core/src/tools/webdriver.rs | g3-computer-control | -| ./crates/g3-core/src/webdriver_session.rs | g3-computer-control | -| ./crates/g3-planner/src/llm.rs | g3-config, g3-core, g3-providers | -| ./crates/g3-planner/src/lib.rs | g3-providers | -| ./crates/g3-ensembles/src/flock.rs | g3-config | +### Cross-Crate Import Concentration -## High-Coupling Observations +| Source File | Cross-Crate Imports | +|-------------|--------------------| +| crates/g3-cli/src/lib.rs | 5 (g3-core, g3-config, g3-providers, g3-planner, g3-ensembles) | +| crates/g3-planner/src/llm.rs | 4 (g3-config, g3-core, g3-providers) | +| crates/g3-cli/src/autonomous.rs | 2 (g3-core) | +| crates/g3-cli/src/task_execution.rs | 2 (g3-core) | -### g3-core/src/lib.rs +## Observations -- Fan-out: 27 (highest in codebase) -- Declares 22 public modules -- Imports from: g3-config, g3-providers -- Central hub for all core functionality +1. **g3-core/src/lib.rs** has extreme fan-out (29 edges) due to declaring 22+ modules +2. **g3-config** and **g3-providers** are foundational crates with high fan-in +3. **g3-cli** is the integration hub, pulling together all subsystems +4. **tools/mod.rs** aggregates 9 tool modules - natural aggregation point +5. **g3-planner/src/llm.rs** has notable cross-crate coupling (imports from 3 other crates) -### g3-providers +## Cross-Group Edges -- Fan-in: 27 (second highest) -- Imported by 25 files across 3 crates -- Provides: Message, MessageRole, CompletionRequest, LLMProvider, etc. -- Core abstraction layer for LLM communication +Total cross-crate imports: 43 -### g3-config - -- Fan-in: 16 -- Imported by 12 files across 4 crates -- Provides: Config struct -- Shared configuration across all layers - -## Representative Evidence - -### g3-core imports from g3-providers (18 edges) - -``` -./crates/g3-core/src/lib.rs: use g3_providers::{CacheControl, CompletionRequest, Message, MessageRole, ProviderRegistry}; -./crates/g3-core/src/context_window.rs: use g3_providers::{Message, MessageRole, Usage}; -./crates/g3-core/src/streaming.rs: use g3_providers::{CompletionRequest, MessageRole}; -./crates/g3-core/src/tool_definitions.rs: use g3_providers::Tool; -``` - -### g3-planner imports from g3-core (5 edges) - -``` -./crates/g3-planner/src/llm.rs: use g3_core::project::Project; -./crates/g3-planner/src/llm.rs: use g3_core::Agent; -./crates/g3-planner/src/llm.rs: use g3_core::error_handling::{classify_error, ErrorType}; -``` +| From Crate | To Crate | Count | +|------------|----------|-------| +| g3-cli | g3-core | 21 | +| g3-cli | g3-config | 4 | +| g3-cli | g3-providers | 2 | +| g3-planner | g3-core | 5 | +| g3-planner | g3-providers | 4 | +| g3-planner | g3-config | 2 | +| g3-core | g3-providers | 8 | +| g3-core | g3-config | 3 | +| g3-core | g3-computer-control | 2 | +| g3-ensembles | g3-core | 1 | +| g3-ensembles | g3-config | 1 | diff --git a/analysis/deps/layers.observed.md b/analysis/deps/layers.observed.md index 38bb8fe..e89e339 100644 --- a/analysis/deps/layers.observed.md +++ b/analysis/deps/layers.observed.md @@ -4,103 +4,169 @@ Layers derived mechanically from: 1. Crate dependency direction in Cargo.toml -2. Path-based grouping within crates -3. Import directionality between files +2. Path-based module grouping +3. Import directionality analysis -## Crate Layers +## Crate Hierarchy -### Layer 0: Foundation (No internal dependencies) +``` +┌─────────────────────────────────────────────────────────────┐ +│ Layer 0: Binaries │ +│ g3 (main entry) │ +│ studio (standalone tool) │ +└─────────────────────────────────────────────────────────────┘ + │ + ▼ +┌─────────────────────────────────────────────────────────────┐ +│ Layer 1: Application │ +│ g3-cli (CLI interface, 16 files) │ +└─────────────────────────────────────────────────────────────┘ + │ + ▼ +┌─────────────────────────────────────────────────────────────┐ +│ Layer 2: Orchestration │ +│ g3-planner (planning logic, 8 files) │ +│ g3-ensembles (multi-agent, 4 files) │ +└─────────────────────────────────────────────────────────────┘ + │ + ▼ +┌─────────────────────────────────────────────────────────────┐ +│ Layer 3: Core Engine │ +│ g3-core (agent engine, 38 files) │ +└─────────────────────────────────────────────────────────────┘ + │ + ▼ +┌─────────────────────────────────────────────────────────────┐ +│ Layer 4: Infrastructure │ +│ g3-providers (LLM providers, 7 files) │ +│ g3-config (configuration, 2 files) │ +│ g3-execution (code execution, 1 file) │ +│ g3-computer-control (desktop automation, 16 files) │ +└─────────────────────────────────────────────────────────────┘ +``` -| Crate | Purpose (from Cargo.toml description) | -|-------|---------------------------------------| -| g3-config | Configuration management | -| g3-execution | Code execution engine | -| g3-providers | LLM provider abstractions | -| g3-computer-control | Computer control (no description) | +## Intra-Crate Module Structure -### Layer 1: Core Services +### g3-core (38 files) -| Crate | Dependencies | -|-------|-------------| -| g3-core | g3-providers, g3-config, g3-execution, g3-computer-control | +``` +lib.rs +├── acd.rs # Aggressive Context Dehydration +├── background_process.rs # Background process management +├── code_search/ # Tree-sitter code search +│ ├── mod.rs +│ └── searcher.rs +├── compaction.rs # Context compaction +├── context_window.rs # Context window management +├── error_handling.rs # Error classification +├── feedback_extraction.rs # Coach feedback extraction +├── paths.rs # Path utilities +├── project.rs # Project abstraction +├── prompts.rs # System prompts +├── provider_config.rs # Provider configuration +├── provider_registration.rs # Provider registration +├── retry.rs # Retry logic +├── session.rs # Session management +├── session_continuation.rs # Session continuation +├── streaming.rs # Streaming utilities +├── streaming_parser.rs # Tool call parser +├── task_result.rs # Task result types +├── tool_definitions.rs # Tool definitions +├── tool_dispatch.rs # Tool routing +├── tools/ # Tool implementations +│ ├── mod.rs +│ ├── acd.rs +│ ├── executor.rs +│ ├── file_ops.rs +│ ├── memory.rs +│ ├── misc.rs +│ ├── research.rs +│ ├── shell.rs +│ ├── todo.rs +│ └── webdriver.rs +├── ui_writer.rs # UI abstraction +├── utils.rs # General utilities +└── webdriver_session.rs # WebDriver session +``` -### Layer 2: Higher-Level Services +### g3-cli (16 files) -| Crate | Dependencies | -|-------|-------------| -| g3-ensembles | g3-core, g3-config | -| g3-planner | g3-providers, g3-core, g3-config | +``` +lib.rs +├── accumulative.rs # Accumulative mode +├── agent_mode.rs # Agent mode +├── autonomous.rs # Autonomous mode +├── cli_args.rs # CLI argument parsing +├── coach_feedback.rs # Coach feedback +├── filter_json.rs # JSON filtering +├── interactive.rs # Interactive mode +├── metrics.rs # Metrics/timing +├── project_files.rs # Project file loading +├── simple_output.rs # Simple output helper +├── streaming_markdown.rs # Markdown formatting +├── task_execution.rs # Task execution +├── theme.rs # UI theming +├── ui_writer_impl.rs # UiWriter implementation +└── utils.rs # CLI utilities +``` -### Layer 3: Application +### g3-computer-control (16 files) -| Crate | Dependencies | -|-------|-------------| -| g3-cli | g3-core, g3-config, g3-planner, g3-computer-control, g3-providers, g3-ensembles | -| g3 (root) | g3-cli, g3-providers | +``` +lib.rs +├── macax/ # macOS Accessibility +│ ├── mod.rs +│ └── controller.rs +├── ocr/ # OCR engines +│ ├── mod.rs +│ ├── tesseract.rs +│ └── vision.rs +├── platform/ # Platform implementations +│ ├── mod.rs +│ ├── linux.rs +│ ├── macos.rs +│ └── windows.rs +├── types.rs # Shared types +└── webdriver/ # WebDriver implementations + ├── mod.rs + ├── chrome.rs + ├── diagnostics.rs + └── safari.rs +``` -## Module Groupings Within Crates +### g3-providers (7 files) -### g3-core (60 files) +``` +lib.rs +├── anthropic.rs # Anthropic Claude +├── databricks.rs # Databricks +├── embedded.rs # Local llama.cpp +├── oauth.rs # OAuth flow +├── openai.rs # OpenAI-compatible +└── streaming.rs # Streaming utilities +``` -| Group | Files | Purpose | -|-------|-------|--------| -| tools/ | 9 | Tool implementations (file_ops, shell, webdriver, etc.) | -| code_search/ | 2 | Tree-sitter based code search | -| root modules | 22 | Core functionality (agent, context, streaming, etc.) | -| tests/ | 27 | Integration and unit tests | +### g3-planner (8 files) -### g3-computer-control (29 files) +``` +lib.rs +├── code_explore.rs # Code exploration +├── git.rs # Git operations +├── history.rs # History management +├── llm.rs # LLM integration +├── planner.rs # Planning logic +├── prompts.rs # Planner prompts +└── state.rs # State management +``` -| Group | Files | Purpose | -|-------|-------|--------| -| platform/ | 5 | OS-specific implementations (macos, linux, windows) | -| webdriver/ | 4 | Browser automation (safari, chrome) | -| ocr/ | 3 | Text recognition (tesseract, vision) | -| macax/ | 3 | macOS accessibility | -| examples/ | 12 | Usage examples | - -### g3-providers (10 files) - -| Group | Files | Purpose | -|-------|-------|--------| -| providers | 5 | LLM implementations (anthropic, databricks, openai, embedded) | -| support | 3 | OAuth, streaming utilities | -| tests/ | 3 | Provider tests | - -### g3-planner (12 files) - -| Group | Files | Purpose | -|-------|-------|--------| -| core | 7 | Planner logic (planner, state, llm, git, history) | -| tests/ | 4 | Planner tests | - -## Observed Directionality - -### Cross-Crate Import Patterns - -| From Crate | To Crate | Edge Count | -|------------|----------|------------| -| g3-cli | g3-core | 5 | -| g3-cli | g3-config | 2 | -| g3-cli | g3-computer-control | 1 | -| g3-core | g3-providers | 18 | -| g3-core | g3-config | 6 | -| g3-core | g3-computer-control | 2 | -| g3-planner | g3-providers | 3 | -| g3-planner | g3-core | 5 | -| g3-planner | g3-config | 1 | -| g3-ensembles | g3-core | 1 | -| g3-ensembles | g3-config | 1 | - -### Layer Violations +## Layer Violations **None detected.** -All observed imports follow the declared crate dependency direction. -No file imports from a crate that is not declared as a dependency. +All dependencies flow downward through the layer hierarchy. No upward dependencies exist. ## Uncertainty -- Internal `use crate::` imports not fully resolved to specific files -- Some module relationships inferred from `mod` declarations only -- Test files may have additional dev-dependencies not tracked +- Layer assignment is based on dependency direction, not semantic intent +- `studio` is isolated (no internal crate dependencies) - layer assignment is nominal +- Some crates at Layer 4 could arguably be split further (e.g., `g3-computer-control` is large) diff --git a/analysis/deps/limitations.md b/analysis/deps/limitations.md index 3ee3568..2198854 100644 --- a/analysis/deps/limitations.md +++ b/analysis/deps/limitations.md @@ -1,103 +1,103 @@ # Analysis Limitations -## What Was Observed +## Extraction Method -| Source | Method | Confidence | -|--------|--------|------------| -| Crate dependencies | Parsed from Cargo.toml `[dependencies]` sections | High | -| External crate imports | Regex match on `use g3_*::` statements | High | -| Module declarations | Regex match on `mod` and `pub mod` statements | High | -| File classification | Path pattern matching (tests/, examples/, lib.rs, etc.) | High | +Dependencies extracted via: +1. Cargo.toml parsing for crate-level dependencies +2. Regex-based `use` and `mod` statement extraction from source files -## What Was Not Observed +## Known Limitations -### 1. Internal Module Imports +### 1. Conditional Compilation Not Evaluated -`use crate::` statements were detected but not resolved to specific target files. - -**Impact**: File-to-file edges within a crate are incomplete. Only `mod` declaration edges are captured. - -**Example not captured**: ```rust -// In ./crates/g3-core/src/streaming.rs -use crate::context_window::ContextWindow; // Edge to context_window.rs not in graph +#[cfg(target_os = "macos")] +use core_graphics::window::*; ``` -### 2. Re-exports +Platform-specific imports in `g3-computer-control` are included unconditionally. The actual dependency graph varies by target platform. -`pub use` statements that re-export items from submodules are not tracked as separate edges. +**Affected files:** +- `crates/g3-computer-control/src/platform/macos.rs` +- `crates/g3-computer-control/src/platform/linux.rs` +- `crates/g3-computer-control/src/platform/windows.rs` -**Impact**: Transitive dependencies through re-exports are not visible. +### 2. Macro-Generated Imports Not Detected + +Imports generated by procedural macros (e.g., `#[derive(...)]`, `#[async_trait]`) are not captured. These may introduce implicit dependencies. + +**Common macros in codebase:** +- `serde::Serialize`, `serde::Deserialize` +- `async_trait::async_trait` +- `clap::Parser` + +### 3. Re-Exports Not Fully Traced -**Example**: ```rust -// In ./crates/g3-core/src/lib.rs -pub use context_window::{ContextWindow, ThinScope}; // Re-export not tracked +pub use some_module::SomeType; ``` -### 3. Conditional Compilation +Re-exports create transitive dependencies that are not fully traced. A file importing `SomeType` from a re-exporting module has an indirect dependency on the original module. -`#[cfg(...)]` attributes on imports are not parsed. All imports are treated as unconditional. +### 4. Glob Imports Partially Resolved -**Impact**: Platform-specific dependencies (e.g., macOS-only code in g3-computer-control) appear as universal. - -### 4. Macro-Generated Imports - -Imports generated by macros (e.g., `derive` macros, `include!`) are not detected. - -**Impact**: Some edges may be missing if macros generate `use` statements. - -### 5. Dev-Dependencies - -Only `[dependencies]` sections were parsed. `[dev-dependencies]` were not included in crate-level edges. - -**Impact**: Test-only dependencies (e.g., `tempfile`, `serial_test`) are not in the graph. - -### 6. Build Dependencies - -`[build-dependencies]` were not parsed. - -**Impact**: Build script dependencies are not represented. - -### 7. Feature-Gated Dependencies - -Cargo features that enable optional dependencies are not tracked. - -**Impact**: Optional dependencies appear the same as required ones. - -### 8. Workspace Dependencies - -`[workspace.dependencies]` are resolved but the inheritance relationship is not tracked. - -**Impact**: Cannot distinguish workspace-inherited vs crate-specific dependency versions. - -## What Was Inferred - -| Inference | Basis | Confidence | -|-----------|-------|------------| -| File type classification | Filename and path patterns | Medium-High | -| Module file resolution | Rust module naming conventions (mod.rs, name.rs) | High | -| Crate membership | File path prefix matching | High | - -## Potential Invalidation Conditions - -1. **Non-standard module structure**: If any crate uses `#[path = "..."]` attributes to override module paths, those edges will be incorrect. - -2. **Generated code**: If any `.rs` files are generated at build time (not checked into git), they are not included. - -3. **Symlinks**: Symbolic links in the source tree are not followed or detected. - -4. **External workspace members**: Only crates in `./crates/` and root `./src/` were analyzed. External workspace members would be missed. - -## Verification Commands - -To verify crate-level dependencies match Cargo's resolution: -```bash -cargo tree --prefix none --no-dedupe | grep '^g3-' +```rust +use crate::types::*; ``` -To find imports not captured by this analysis: -```bash -rg 'use crate::' --type rust | wc -l # Internal imports (not fully resolved) -rg 'pub use' --type rust | wc -l # Re-exports (not tracked) +Glob imports are recorded but individual items are not enumerated. The actual coupling may be higher or lower than represented. + +### 5. Test Code Excluded + +Files matching these patterns are excluded: +- `*_test.rs` +- `tests/*.rs` +- `mod tests { ... }` blocks + +Test dependencies are not represented in the graph. + +### 6. Build Scripts Not Analyzed + +`build.rs` files are not included. Build-time dependencies (e.g., code generation) are not captured. + +**Affected:** +- `crates/g3-computer-control/build.rs` + +### 7. External Crate Dependencies Not Graphed + +Only workspace-internal dependencies are represented. External crates (tokio, serde, etc.) are not included in the graph. + +### 8. Inline Module Definitions + +```rust +mod foo { + // inline definition +} ``` + +Inline module definitions without corresponding files are detected but may not resolve to file edges. + +### 9. Path Aliases Not Resolved + +```rust +use crate::foo as bar; +``` + +Aliased imports are recorded with original path, but alias usage elsewhere is not correlated. + +## What May Invalidate Conclusions + +1. **Feature flags**: Cargo features may enable/disable entire modules +2. **Workspace changes**: Adding/removing crates changes the graph structure +3. **Refactoring**: Moving code between modules changes edges without changing functionality +4. **Dynamic dispatch**: Trait objects create runtime dependencies not visible statically + +## Confidence Assessment + +| Aspect | Confidence | +|--------|------------| +| Crate-level dependencies | High (from Cargo.toml) | +| Module tree structure | High (from mod declarations) | +| Cross-crate imports | Medium (regex-based) | +| Intra-module coupling | Low (not analyzed) | +| Runtime dependencies | Not captured | diff --git a/analysis/deps/sccs.md b/analysis/deps/sccs.md index 8859226..4e1a1f3 100644 --- a/analysis/deps/sccs.md +++ b/analysis/deps/sccs.md @@ -1,40 +1,44 @@ -# Strongly Connected Components (Cycles) +# Strongly Connected Components Analysis -## Summary +## Method -**No non-trivial strongly connected components detected.** +Tarjan's algorithm applied to file-level dependency graph. -The dependency graph is acyclic at both the crate level and the file level. +Edge types considered: +- `mod_declaration`: Parent module declares child module +- `cross_crate_import`: File imports from another crate -## Analysis Details +## Results -- Algorithm: Tarjan's SCC algorithm -- Scope: All 143 nodes (9 crates + 134 files) -- Result: 0 cycles with size > 1 +**No non-trivial SCCs detected.** -## Crate-Level Verification +The file-level dependency graph is acyclic. All `mod` declarations form a strict tree structure within each crate, and cross-crate imports follow the crate dependency DAG. -The crate dependency graph forms a directed acyclic graph (DAG): +## Crate-Level Cycle Analysis + +The crate dependency graph was also analyzed: ``` -Leaf crates (no dependencies on other g3-* crates): - - g3-providers - - g3-config - - g3-execution - - g3-computer-control - -Intermediate crates: - - g3-core → depends on: g3-providers, g3-config, g3-execution, g3-computer-control - - g3-ensembles → depends on: g3-core, g3-config - - g3-planner → depends on: g3-providers, g3-core, g3-config - -Top-level crates: - - g3-cli → depends on: g3-core, g3-config, g3-planner, g3-computer-control, g3-providers, g3-ensembles - - g3 (root) → depends on: g3-cli, g3-providers +g3 → g3-cli → g3-core → g3-providers + → g3-config + → g3-execution + → g3-computer-control + → g3-planner → g3-core + → g3-providers + → g3-config + → g3-ensembles → g3-core + → g3-config ``` +**No cycles detected at crate level.** + +The workspace forms a directed acyclic graph (DAG) with: +- Leaf crates: `g3-providers`, `g3-config`, `g3-execution`, `g3-computer-control`, `studio` +- Mid-tier crates: `g3-core`, `g3-planner`, `g3-ensembles` +- Top-tier crates: `g3-cli`, `g3` + ## Implications -- No circular dependencies exist between crates +- No circular dependencies exist - Build order is deterministic -- Crates can be compiled in topological order +- Crates can be compiled in parallel respecting the DAG