Files
g3/analysis/deps/graph.json
Dhanji R. Prasanna f0bd7959b1 chore(analysis): update dependency analysis artifacts
Authored by: Structural Analysis Agent (Euler)

Updated all dependency analysis artifacts with fresh extraction:
- graph.json: Canonical dependency graph with 10 crates, 139 files, 16 crate edges, 72 file edges
- graph.summary.md: Overview with fan-in/fan-out rankings and crate inventory
- sccs.md: SCC analysis confirming no cycles at crate or file level (clean DAG)
- layers.observed.md: 5-layer architecture diagram derived from dependencies
- hotspots.md: Coupling hotspots (g3-config highest fan-in, g3-cli highest fan-out)
- limitations.md: Documented extraction limitations (conditional compilation, macros, etc.)

Key findings:
- All 10 workspace crates form a directed acyclic graph
- g3-core/src/ui_writer.rs has highest file-level fan-in (10 dependents)
- g3-console is standalone with no workspace dependencies
- Clean layered architecture with no violations detected
2026-01-07 09:36:52 +11:00

800 lines
24 KiB
JSON

{
"metadata": {
"generated_at": "2025-01-07",
"tool": "structural-analysis-agent",
"version": "1.0",
"workspace_root": ".",
"extraction_method": "static-import-parsing"
},
"crates": {
"g3": {
"path": ".",
"type": "binary",
"files": ["src/main.rs", "examples/verify_message_id.rs"]
},
"g3-cli": {
"path": "crates/g3-cli",
"type": "library",
"files": [
"src/lib.rs",
"src/filter_json.rs",
"src/machine_ui_writer.rs",
"src/retro_tui.rs",
"src/simple_output.rs",
"src/theme.rs",
"src/tui.rs",
"src/ui_writer_impl.rs",
"tests/cli_integration_test.rs",
"tests/coach_feedback_extraction_test.rs",
"tests/filter_json_test.rs"
]
},
"g3-core": {
"path": "crates/g3-core",
"type": "library",
"files": [
"src/lib.rs",
"src/background_process.rs",
"src/code_search/mod.rs",
"src/code_search/searcher.rs",
"src/context_window.rs",
"src/error_handling.rs",
"src/error_handling_test.rs",
"src/feedback_extraction.rs",
"src/paths.rs",
"src/project.rs",
"src/prompts.rs",
"src/provider_config.rs",
"src/retry.rs",
"src/session_continuation.rs",
"src/streaming_parser.rs",
"src/take_screenshot_test.rs",
"src/task_result.rs",
"src/task_result_comprehensive_tests.rs",
"src/task_result_tests.rs",
"src/tilde_expansion_tests.rs",
"src/tool_definitions.rs",
"src/tool_dispatch.rs",
"src/tools/executor.rs",
"src/tools/file_ops.rs",
"src/tools/misc.rs",
"src/tools/mod.rs",
"src/tools/shell.rs",
"src/tools/todo.rs",
"src/tools/webdriver.rs",
"src/ui_writer.rs",
"src/utils.rs",
"src/webdriver_session.rs",
"examples/inspect_ast.rs",
"examples/inspect_python_ast.rs",
"examples/test_python_query.rs",
"tests/auto_continue_test.rs",
"tests/background_process_demo_test.rs",
"tests/code_search_test.rs",
"tests/duplicate_detection_test.rs",
"tests/final_output_todo_check_test.rs",
"tests/incomplete_tool_call_test.rs",
"tests/read_image_test.rs",
"tests/streaming_parser_test.rs",
"tests/test_agent_session_id.rs",
"tests/test_context_thinning.rs",
"tests/test_preflight_max_tokens.rs",
"tests/test_reset_with_summary.rs",
"tests/test_session_continuation.rs",
"tests/test_system_message_loading.rs",
"tests/test_todo_completion.rs",
"tests/test_todo_context_thinning.rs",
"tests/test_todo_persistence.rs",
"tests/test_token_counting.rs",
"tests/todo_staleness_test.rs",
"tests/tool_execution_test.rs"
]
},
"g3-config": {
"path": "crates/g3-config",
"type": "library",
"files": [
"src/lib.rs",
"src/tests.rs",
"tests/test_multiple_tool_calls.rs"
]
},
"g3-providers": {
"path": "crates/g3-providers",
"type": "library",
"files": [
"src/lib.rs",
"src/anthropic.rs",
"src/databricks.rs",
"src/embedded.rs",
"src/oauth.rs",
"src/openai.rs",
"tests/cache_control_error_regression_test.rs",
"tests/cache_control_integration_test.rs",
"tests/message_serialization_test.rs"
]
},
"g3-planner": {
"path": "crates/g3-planner",
"type": "library",
"files": [
"src/lib.rs",
"src/code_explore.rs",
"src/git.rs",
"src/history.rs",
"src/llm.rs",
"src/planner.rs",
"src/prompts.rs",
"src/state.rs",
"tests/commit_history_ordering_test.rs",
"tests/logging_test.rs",
"tests/planner_test.rs",
"tests/retry_feedback_test.rs"
]
},
"g3-execution": {
"path": "crates/g3-execution",
"type": "library",
"files": [
"src/lib.rs",
"examples/setup_coverage_tools.rs"
]
},
"g3-computer-control": {
"path": "crates/g3-computer-control",
"type": "library",
"files": [
"build.rs",
"src/lib.rs",
"src/types.rs",
"src/macax/mod.rs",
"src/macax/controller.rs",
"src/macax/tests.rs",
"src/ocr/mod.rs",
"src/ocr/tesseract.rs",
"src/ocr/vision.rs",
"src/platform/mod.rs",
"src/platform/linux.rs",
"src/platform/macos.rs",
"src/platform/macos_window_matching_test.rs",
"src/platform/windows.rs",
"src/webdriver/mod.rs",
"src/webdriver/chrome.rs",
"src/webdriver/safari.rs",
"examples/debug_screenshot.rs",
"examples/list_windows.rs",
"examples/macax_demo.rs",
"examples/safari_demo.rs",
"examples/test_permission_prompt.rs",
"examples/test_screencapture_direct.rs",
"examples/test_screenshot_fix.rs",
"examples/test_type_text.rs",
"examples/test_vision.rs",
"examples/test_window_capture.rs",
"tests/integration_test.rs"
]
},
"g3-console": {
"path": "crates/g3-console",
"type": "binary+library",
"files": [
"src/lib.rs",
"src/main.rs",
"src/launch.rs",
"src/logs.rs",
"src/api/mod.rs",
"src/api/control.rs",
"src/api/instances.rs",
"src/api/logs.rs",
"src/api/state.rs",
"src/models/mod.rs",
"src/models/instance.rs",
"src/models/message.rs",
"src/process/mod.rs",
"src/process/controller.rs",
"src/process/detector.rs",
"examples/debug_detector.rs",
"examples/test_api.rs",
"examples/test_detector.rs"
]
},
"g3-ensembles": {
"path": "crates/g3-ensembles",
"type": "library",
"files": [
"src/lib.rs",
"src/flock.rs",
"src/status.rs",
"src/tests.rs",
"tests/integration_tests.rs"
]
}
},
"crate_dependencies": [
{
"from": "g3",
"to": "g3-cli",
"type": "path",
"evidence": "Cargo.toml: g3-cli = { path = \"crates/g3-cli\" }"
},
{
"from": "g3",
"to": "g3-providers",
"type": "path",
"evidence": "Cargo.toml: g3-providers = { path = \"crates/g3-providers\" }"
},
{
"from": "g3-cli",
"to": "g3-core",
"type": "path",
"evidence": "Cargo.toml: g3-core = { path = \"../g3-core\" }"
},
{
"from": "g3-cli",
"to": "g3-config",
"type": "path",
"evidence": "Cargo.toml: g3-config = { path = \"../g3-config\" }"
},
{
"from": "g3-cli",
"to": "g3-planner",
"type": "path",
"evidence": "Cargo.toml: g3-planner = { path = \"../g3-planner\" }"
},
{
"from": "g3-cli",
"to": "g3-providers",
"type": "path",
"evidence": "Cargo.toml: g3-providers = { path = \"../g3-providers\" }"
},
{
"from": "g3-cli",
"to": "g3-ensembles",
"type": "path",
"evidence": "Cargo.toml: g3-ensembles = { path = \"../g3-ensembles\" }"
},
{
"from": "g3-core",
"to": "g3-providers",
"type": "path",
"evidence": "Cargo.toml: g3-providers = { path = \"../g3-providers\" }"
},
{
"from": "g3-core",
"to": "g3-config",
"type": "path",
"evidence": "Cargo.toml: g3-config = { path = \"../g3-config\" }"
},
{
"from": "g3-core",
"to": "g3-execution",
"type": "path",
"evidence": "Cargo.toml: g3-execution = { path = \"../g3-execution\" }"
},
{
"from": "g3-core",
"to": "g3-computer-control",
"type": "path",
"evidence": "Cargo.toml: g3-computer-control = { path = \"../g3-computer-control\" }"
},
{
"from": "g3-planner",
"to": "g3-providers",
"type": "path",
"evidence": "Cargo.toml: g3-providers = { path = \"../g3-providers\" }"
},
{
"from": "g3-planner",
"to": "g3-core",
"type": "path",
"evidence": "Cargo.toml: g3-core = { path = \"../g3-core\" }"
},
{
"from": "g3-planner",
"to": "g3-config",
"type": "path",
"evidence": "Cargo.toml: g3-config = { path = \"../g3-config\" }"
},
{
"from": "g3-ensembles",
"to": "g3-core",
"type": "path",
"evidence": "Cargo.toml: g3-core = { path = \"../g3-core\" }"
},
{
"from": "g3-ensembles",
"to": "g3-config",
"type": "path",
"evidence": "Cargo.toml: g3-config = { path = \"../g3-config\" }"
}
],
"file_dependencies": [
{
"from": "src/main.rs",
"to": "crates/g3-cli/src/lib.rs",
"import": "use g3_cli::run",
"type": "crate-import"
},
{
"from": "examples/verify_message_id.rs",
"to": "crates/g3-providers/src/lib.rs",
"import": "use g3_providers::{Message, MessageRole}",
"type": "crate-import"
},
{
"from": "crates/g3-cli/src/lib.rs",
"to": "crates/g3-config/src/lib.rs",
"import": "use g3_config::Config",
"type": "crate-import"
},
{
"from": "crates/g3-cli/src/lib.rs",
"to": "crates/g3-core/src/lib.rs",
"import": "use g3_core::{project::Project, ui_writer::UiWriter, Agent, DiscoveryOptions}",
"type": "crate-import"
},
{
"from": "crates/g3-cli/src/lib.rs",
"to": "crates/g3-core/src/error_handling.rs",
"import": "use g3_core::error_handling::{classify_error, ErrorType, RecoverableError}",
"type": "crate-import"
},
{
"from": "crates/g3-cli/src/ui_writer_impl.rs",
"to": "crates/g3-core/src/ui_writer.rs",
"import": "use g3_core::ui_writer::UiWriter",
"type": "crate-import"
},
{
"from": "crates/g3-cli/src/ui_writer_impl.rs",
"to": "crates/g3-cli/src/filter_json.rs",
"import": "use crate::filter_json::{filter_json_tool_calls, reset_json_tool_state}",
"type": "crate-internal"
},
{
"from": "crates/g3-cli/src/machine_ui_writer.rs",
"to": "crates/g3-core/src/ui_writer.rs",
"import": "use g3_core::ui_writer::UiWriter",
"type": "crate-import"
},
{
"from": "crates/g3-cli/src/retro_tui.rs",
"to": "crates/g3-cli/src/theme.rs",
"import": "use crate::theme::ColorTheme",
"type": "crate-internal"
},
{
"from": "crates/g3-core/src/lib.rs",
"to": "crates/g3-config/src/lib.rs",
"import": "use g3_config::Config",
"type": "crate-import"
},
{
"from": "crates/g3-core/src/lib.rs",
"to": "crates/g3-providers/src/lib.rs",
"import": "use g3_providers::{CacheControl, CompletionRequest, Message, MessageRole, ProviderRegistry}",
"type": "crate-import"
},
{
"from": "crates/g3-core/src/lib.rs",
"to": "crates/g3-core/src/ui_writer.rs",
"import": "use crate::ui_writer::UiWriter",
"type": "crate-internal"
},
{
"from": "crates/g3-core/src/context_window.rs",
"to": "crates/g3-providers/src/lib.rs",
"import": "use g3_providers::{Message, MessageRole, Usage}",
"type": "crate-import"
},
{
"from": "crates/g3-core/src/context_window.rs",
"to": "crates/g3-core/src/paths.rs",
"import": "use crate::paths::get_thinned_dir",
"type": "crate-internal"
},
{
"from": "crates/g3-core/src/streaming_parser.rs",
"to": "crates/g3-core/src/lib.rs",
"import": "use crate::ToolCall",
"type": "crate-internal"
},
{
"from": "crates/g3-core/src/tool_dispatch.rs",
"to": "crates/g3-core/src/tools/executor.rs",
"import": "use crate::tools::executor::ToolContext",
"type": "crate-internal"
},
{
"from": "crates/g3-core/src/tool_dispatch.rs",
"to": "crates/g3-core/src/tools/mod.rs",
"import": "use crate::tools::{file_ops, misc, shell, todo, webdriver}",
"type": "crate-internal"
},
{
"from": "crates/g3-core/src/tool_dispatch.rs",
"to": "crates/g3-core/src/ui_writer.rs",
"import": "use crate::ui_writer::UiWriter",
"type": "crate-internal"
},
{
"from": "crates/g3-core/src/tools/executor.rs",
"to": "crates/g3-core/src/background_process.rs",
"import": "use crate::background_process::BackgroundProcessManager",
"type": "crate-internal"
},
{
"from": "crates/g3-core/src/tools/executor.rs",
"to": "crates/g3-core/src/paths.rs",
"import": "use crate::paths::{ensure_session_dir, get_session_todo_path, get_todo_path}",
"type": "crate-internal"
},
{
"from": "crates/g3-core/src/tools/executor.rs",
"to": "crates/g3-core/src/webdriver_session.rs",
"import": "use crate::webdriver_session::WebDriverSession",
"type": "crate-internal"
},
{
"from": "crates/g3-core/src/tools/executor.rs",
"to": "crates/g3-config/src/lib.rs",
"import": "use g3_config::Config",
"type": "crate-import"
},
{
"from": "crates/g3-core/src/tools/file_ops.rs",
"to": "crates/g3-core/src/ui_writer.rs",
"import": "use crate::ui_writer::UiWriter",
"type": "crate-internal"
},
{
"from": "crates/g3-core/src/tools/file_ops.rs",
"to": "crates/g3-core/src/utils.rs",
"import": "use crate::utils::resolve_path_with_unicode_fallback",
"type": "crate-internal"
},
{
"from": "crates/g3-core/src/tools/shell.rs",
"to": "crates/g3-core/src/ui_writer.rs",
"import": "use crate::ui_writer::UiWriter",
"type": "crate-internal"
},
{
"from": "crates/g3-core/src/tools/shell.rs",
"to": "crates/g3-core/src/utils.rs",
"import": "use crate::utils::resolve_paths_in_shell_command",
"type": "crate-internal"
},
{
"from": "crates/g3-core/src/tools/misc.rs",
"to": "crates/g3-core/src/ui_writer.rs",
"import": "use crate::ui_writer::UiWriter",
"type": "crate-internal"
},
{
"from": "crates/g3-core/src/tools/todo.rs",
"to": "crates/g3-core/src/ui_writer.rs",
"import": "use crate::ui_writer::UiWriter",
"type": "crate-internal"
},
{
"from": "crates/g3-core/src/tools/webdriver.rs",
"to": "crates/g3-computer-control/src/lib.rs",
"import": "use g3_computer_control::WebDriverController",
"type": "crate-import"
},
{
"from": "crates/g3-core/src/tools/webdriver.rs",
"to": "crates/g3-core/src/webdriver_session.rs",
"import": "use crate::webdriver_session::WebDriverSession",
"type": "crate-internal"
},
{
"from": "crates/g3-core/src/tools/webdriver.rs",
"to": "crates/g3-core/src/ui_writer.rs",
"import": "use crate::ui_writer::UiWriter",
"type": "crate-internal"
},
{
"from": "crates/g3-core/src/webdriver_session.rs",
"to": "crates/g3-computer-control/src/lib.rs",
"import": "use g3_computer_control::{ChromeDriver, SafariDriver, WebDriverController, WebElement}",
"type": "crate-import"
},
{
"from": "crates/g3-core/src/feedback_extraction.rs",
"to": "crates/g3-core/src/lib.rs",
"import": "use crate::{logs_dir, Agent, TaskResult}",
"type": "crate-internal"
},
{
"from": "crates/g3-core/src/feedback_extraction.rs",
"to": "crates/g3-core/src/ui_writer.rs",
"import": "use crate::ui_writer::UiWriter",
"type": "crate-internal"
},
{
"from": "crates/g3-core/src/task_result.rs",
"to": "crates/g3-core/src/context_window.rs",
"import": "use crate::ContextWindow",
"type": "crate-internal"
},
{
"from": "crates/g3-core/src/task_result_comprehensive_tests.rs",
"to": "crates/g3-core/src/context_window.rs",
"import": "use crate::{ContextWindow, TaskResult}",
"type": "crate-internal"
},
{
"from": "crates/g3-core/src/task_result_comprehensive_tests.rs",
"to": "crates/g3-providers/src/lib.rs",
"import": "use g3_providers::{Message, MessageRole}",
"type": "crate-import"
},
{
"from": "crates/g3-core/src/tool_definitions.rs",
"to": "crates/g3-providers/src/lib.rs",
"import": "use g3_providers::Tool",
"type": "crate-import"
},
{
"from": "crates/g3-core/src/provider_config.rs",
"to": "crates/g3-config/src/lib.rs",
"import": "use g3_config::Config",
"type": "crate-import"
},
{
"from": "crates/g3-core/src/retry.rs",
"to": "crates/g3-core/src/error_handling.rs",
"import": "use crate::error_handling::{calculate_retry_delay, classify_error, ErrorType, RecoverableError}",
"type": "crate-internal"
},
{
"from": "crates/g3-core/src/retry.rs",
"to": "crates/g3-core/src/ui_writer.rs",
"import": "use crate::ui_writer::UiWriter",
"type": "crate-internal"
},
{
"from": "crates/g3-core/src/retry.rs",
"to": "crates/g3-core/src/lib.rs",
"import": "use crate::{Agent, DiscoveryOptions, TaskResult}",
"type": "crate-internal"
},
{
"from": "crates/g3-providers/src/anthropic.rs",
"to": "crates/g3-providers/src/lib.rs",
"import": "use crate::{...}",
"type": "crate-internal"
},
{
"from": "crates/g3-providers/src/databricks.rs",
"to": "crates/g3-providers/src/lib.rs",
"import": "use crate::{...}",
"type": "crate-internal"
},
{
"from": "crates/g3-providers/src/openai.rs",
"to": "crates/g3-providers/src/lib.rs",
"import": "use crate::{...}",
"type": "crate-internal"
},
{
"from": "crates/g3-providers/src/embedded.rs",
"to": "crates/g3-providers/src/lib.rs",
"import": "use crate::{...}",
"type": "crate-internal"
},
{
"from": "crates/g3-planner/src/lib.rs",
"to": "crates/g3-providers/src/lib.rs",
"import": "use g3_providers::{CompletionRequest, LLMProvider, Message, MessageRole}",
"type": "crate-import"
},
{
"from": "crates/g3-planner/src/llm.rs",
"to": "crates/g3-config/src/lib.rs",
"import": "use g3_config::Config",
"type": "crate-import"
},
{
"from": "crates/g3-planner/src/llm.rs",
"to": "crates/g3-core/src/project.rs",
"import": "use g3_core::project::Project",
"type": "crate-import"
},
{
"from": "crates/g3-planner/src/llm.rs",
"to": "crates/g3-core/src/lib.rs",
"import": "use g3_core::Agent",
"type": "crate-import"
},
{
"from": "crates/g3-planner/src/llm.rs",
"to": "crates/g3-core/src/error_handling.rs",
"import": "use g3_core::error_handling::{classify_error, ErrorType}",
"type": "crate-import"
},
{
"from": "crates/g3-planner/src/llm.rs",
"to": "crates/g3-providers/src/lib.rs",
"import": "use g3_providers::{CompletionRequest, LLMProvider, Message, MessageRole}",
"type": "crate-import"
},
{
"from": "crates/g3-planner/src/llm.rs",
"to": "crates/g3-planner/src/prompts.rs",
"import": "use crate::prompts",
"type": "crate-internal"
},
{
"from": "crates/g3-planner/src/planner.rs",
"to": "crates/g3-planner/src/git.rs",
"import": "use crate::git",
"type": "crate-internal"
},
{
"from": "crates/g3-planner/src/planner.rs",
"to": "crates/g3-planner/src/history.rs",
"import": "use crate::history",
"type": "crate-internal"
},
{
"from": "crates/g3-planner/src/planner.rs",
"to": "crates/g3-planner/src/llm.rs",
"import": "use crate::llm",
"type": "crate-internal"
},
{
"from": "crates/g3-planner/src/planner.rs",
"to": "crates/g3-planner/src/state.rs",
"import": "use crate::state::{...}",
"type": "crate-internal"
},
{
"from": "crates/g3-ensembles/src/flock.rs",
"to": "crates/g3-config/src/lib.rs",
"import": "use g3_config::Config",
"type": "crate-import"
},
{
"from": "crates/g3-ensembles/src/flock.rs",
"to": "crates/g3-ensembles/src/status.rs",
"import": "use crate::status::{FlockStatus, SegmentState, SegmentStatus}",
"type": "crate-internal"
},
{
"from": "crates/g3-computer-control/src/platform/macos.rs",
"to": "crates/g3-computer-control/src/ocr/mod.rs",
"import": "use crate::ocr::{DefaultOCR, OCREngine}",
"type": "crate-internal"
},
{
"from": "crates/g3-computer-control/src/platform/macos.rs",
"to": "crates/g3-computer-control/src/types.rs",
"import": "use crate::{...}",
"type": "crate-internal"
},
{
"from": "crates/g3-computer-control/src/platform/linux.rs",
"to": "crates/g3-computer-control/src/types.rs",
"import": "use crate::{types::*, ComputerController}",
"type": "crate-internal"
},
{
"from": "crates/g3-computer-control/src/platform/windows.rs",
"to": "crates/g3-computer-control/src/types.rs",
"import": "use crate::{types::*, ComputerController}",
"type": "crate-internal"
},
{
"from": "crates/g3-computer-control/src/ocr/vision.rs",
"to": "crates/g3-computer-control/src/types.rs",
"import": "use crate::types::TextLocation",
"type": "crate-internal"
},
{
"from": "crates/g3-computer-control/src/ocr/tesseract.rs",
"to": "crates/g3-computer-control/src/types.rs",
"import": "use crate::types::TextLocation",
"type": "crate-internal"
},
{
"from": "crates/g3-computer-control/src/ocr/mod.rs",
"to": "crates/g3-computer-control/src/types.rs",
"import": "use crate::types::TextLocation",
"type": "crate-internal"
},
{
"from": "crates/g3-console/src/main.rs",
"to": "crates/g3-console/src/api/mod.rs",
"import": "use g3_console::api",
"type": "crate-internal"
},
{
"from": "crates/g3-console/src/main.rs",
"to": "crates/g3-console/src/launch.rs",
"import": "use g3_console::launch",
"type": "crate-internal"
},
{
"from": "crates/g3-console/src/main.rs",
"to": "crates/g3-console/src/process/mod.rs",
"import": "use g3_console::process",
"type": "crate-internal"
},
{
"from": "crates/g3-console/src/api/instances.rs",
"to": "crates/g3-console/src/logs.rs",
"import": "use crate::logs::{LogParser, StatsAggregator}",
"type": "crate-internal"
},
{
"from": "crates/g3-console/src/api/instances.rs",
"to": "crates/g3-console/src/models/mod.rs",
"import": "use crate::models::*",
"type": "crate-internal"
},
{
"from": "crates/g3-console/src/api/instances.rs",
"to": "crates/g3-console/src/process/detector.rs",
"import": "use crate::process::ProcessDetector",
"type": "crate-internal"
},
{
"from": "crates/g3-console/src/api/control.rs",
"to": "crates/g3-console/src/models/mod.rs",
"import": "use crate::models::*",
"type": "crate-internal"
},
{
"from": "crates/g3-console/src/api/control.rs",
"to": "crates/g3-console/src/process/controller.rs",
"import": "use crate::process::ProcessController",
"type": "crate-internal"
},
{
"from": "crates/g3-console/src/api/state.rs",
"to": "crates/g3-console/src/launch.rs",
"import": "use crate::launch::ConsoleState",
"type": "crate-internal"
},
{
"from": "crates/g3-console/src/api/logs.rs",
"to": "crates/g3-console/src/logs.rs",
"import": "use crate::logs::LogParser",
"type": "crate-internal"
},
{
"from": "crates/g3-console/src/api/logs.rs",
"to": "crates/g3-console/src/process/detector.rs",
"import": "use crate::process::ProcessDetector",
"type": "crate-internal"
},
{
"from": "crates/g3-console/src/logs.rs",
"to": "crates/g3-console/src/models/mod.rs",
"import": "use crate::models::{InstanceStats, TurnInfo}",
"type": "crate-internal"
},
{
"from": "crates/g3-console/src/process/controller.rs",
"to": "crates/g3-console/src/models/mod.rs",
"import": "use crate::models::LaunchParams",
"type": "crate-internal"
},
{
"from": "crates/g3-console/src/process/detector.rs",
"to": "crates/g3-console/src/models/mod.rs",
"import": "use crate::models::{ExecutionMethod, Instance, InstanceStatus, InstanceType}",
"type": "crate-internal"
}
],
"statistics": {
"total_crates": 10,
"total_files": 139,
"crate_dependency_edges": 16,
"file_dependency_edges": 72
}
}