Spaces:
Running
Running
| <html> | |
| <head> | |
| <meta charset="utf-8"> | |
| <title>๐ฑ Imperial Guild Knowledge Graph Portal</title> | |
| <script src="https://d3js.org/d3.v7.min.js"></script> | |
| <style> | |
| body { | |
| margin: 0; | |
| font-family: 'Outfit', 'Inter', sans-serif; | |
| background-color: #0f1016; | |
| color: #e2e8f0; | |
| overflow: hidden; | |
| } | |
| #header { | |
| position: absolute; | |
| top: 20px; | |
| left: 20px; | |
| z-index: 10; | |
| pointer-events: none; | |
| } | |
| h1 { | |
| margin: 0; | |
| font-size: 24px; | |
| font-weight: 700; | |
| background: linear-gradient(135deg, #38bdf8, #818cf8); | |
| -webkit-background-clip: text; | |
| -webkit-text-fill-color: transparent; | |
| letter-spacing: -0.05em; | |
| } | |
| p { | |
| margin: 5px 0 0 0; | |
| font-size: 12px; | |
| color: #64748b; | |
| } | |
| #canvas { | |
| width: 100vw; | |
| height: 100vh; | |
| } | |
| .node { | |
| stroke-width: 1.5px; | |
| cursor: pointer; | |
| transition: r 0.2s ease, stroke-width 0.2s ease; | |
| } | |
| .link { | |
| stroke: #334155; | |
| stroke-opacity: 0.6; | |
| stroke-width: 1.2px; | |
| } | |
| .label { | |
| font-size: 10px; | |
| fill: #94a3b8; | |
| pointer-events: none; | |
| text-shadow: 0 1px 3px rgba(0,0,0,0.8); | |
| } | |
| #details { | |
| position: absolute; | |
| top: 20px; | |
| right: 20px; | |
| width: 320px; | |
| background: rgba(15, 23, 42, 0.85); | |
| backdrop-filter: blur(12px); | |
| border: 1px solid rgba(255,255,255,0.1); | |
| border-radius: 12px; | |
| padding: 20px; | |
| box-shadow: 0 10px 25px -5px rgba(0, 0, 0, 0.5); | |
| z-index: 10; | |
| display: none; | |
| max-height: 80vh; | |
| overflow-y: auto; | |
| } | |
| #details h3 { | |
| margin-top: 0; | |
| color: #38bdf8; | |
| border-bottom: 1px solid rgba(255,255,255,0.1); | |
| padding-bottom: 10px; | |
| } | |
| .meta-item { | |
| margin-bottom: 10px; | |
| font-size: 13px; | |
| } | |
| .meta-label { | |
| color: #64748b; | |
| font-weight: bold; | |
| } | |
| .meta-value { | |
| color: #cbd5e1; | |
| word-break: break-all; | |
| } | |
| .legend { | |
| position: absolute; | |
| bottom: 20px; | |
| left: 20px; | |
| background: rgba(15, 23, 42, 0.7); | |
| padding: 10px 15px; | |
| border-radius: 8px; | |
| border: 1px solid rgba(255,255,255,0.05); | |
| font-size: 11px; | |
| z-index: 10; | |
| } | |
| .legend-item { | |
| display: flex; | |
| align-items: center; | |
| margin-bottom: 5px; | |
| } | |
| .legend-color { | |
| width: 10px; | |
| height: 10px; | |
| border-radius: 50%; | |
| margin-right: 8px; | |
| } | |
| </style> | |
| </head> | |
| <body> | |
| <div id="header"> | |
| <h1>๐ฑ ์ ๊ตญ ์ง์ ๊ทธ๋ํ ํฌํ</h1> | |
| <p>Imperial Knowledge & Codebase Mapping (Graphify Engine)</p> | |
| </div> | |
| <div id="details"> | |
| <h3 id="detail-title">Node Details</h3> | |
| <div id="detail-content"></div> | |
| </div> | |
| <div class="legend"> | |
| <div class="legend-item"><div class="legend-color" style="background: #38bdf8;"></div> ์์ค ์ฝ๋ (File)</div> | |
| <div class="legend-item"><div class="legend-color" style="background: #fb7185;"></div> ๋งํฌ๋ค์ด ๋ฌธ์ (Document)</div> | |
| <div class="legend-item"><div class="legend-color" style="background: #c084fc;"></div> ๊ตฌ์กฐ์ ํด๋์ค (Class)</div> | |
| </div> | |
| <svg id="canvas"></svg> | |
| <script> | |
| const graph = { | |
| "nodes": [ | |
| { | |
| "id": "aegis_link.py", | |
| "label": "aegis_link.py", | |
| "type": "file", | |
| "details": { | |
| "size": 10445 | |
| } | |
| }, | |
| { | |
| "id": "aegis_link.py::AegisLink", | |
| "label": "AegisLink", | |
| "type": "class", | |
| "details": { | |
| "file": "aegis_link.py", | |
| "methods": [ | |
| "__init__", | |
| "get_base_url", | |
| "_headers", | |
| "check_health", | |
| "get_guardian_identity", | |
| "memory_read", | |
| "memory_write", | |
| "memory_search", | |
| "memory_list", | |
| "memory_delete", | |
| "post_announcement" | |
| ] | |
| } | |
| }, | |
| { | |
| "id": "app_hf.py", | |
| "label": "app_hf.py", | |
| "type": "file", | |
| "details": { | |
| "size": 5330 | |
| } | |
| }, | |
| { | |
| "id": "app_hf.py::LinuxCloudEngine", | |
| "label": "LinuxCloudEngine", | |
| "type": "class", | |
| "details": { | |
| "file": "app_hf.py", | |
| "methods": [ | |
| "set_title", | |
| "get_status" | |
| ] | |
| } | |
| }, | |
| { | |
| "id": "app_minimal.py", | |
| "label": "app_minimal.py", | |
| "type": "file", | |
| "details": { | |
| "size": 502 | |
| } | |
| }, | |
| { | |
| "id": "check_columns.py", | |
| "label": "check_columns.py", | |
| "type": "file", | |
| "details": { | |
| "size": 351 | |
| } | |
| }, | |
| { | |
| "id": "check_db_schema.py", | |
| "label": "check_db_schema.py", | |
| "type": "file", | |
| "details": { | |
| "size": 924 | |
| } | |
| }, | |
| { | |
| "id": "check_master_persona.py", | |
| "label": "check_master_persona.py", | |
| "type": "file", | |
| "details": { | |
| "size": 1045 | |
| } | |
| }, | |
| { | |
| "id": "check_personas.py", | |
| "label": "check_personas.py", | |
| "type": "file", | |
| "details": { | |
| "size": 453 | |
| } | |
| }, | |
| { | |
| "id": "check_rust.py", | |
| "label": "check_rust.py", | |
| "type": "file", | |
| "details": { | |
| "size": 399 | |
| } | |
| }, | |
| { | |
| "id": "check_schema_multi.py", | |
| "label": "check_schema_multi.py", | |
| "type": "file", | |
| "details": { | |
| "size": 736 | |
| } | |
| }, | |
| { | |
| "id": "check_tables.py", | |
| "label": "check_tables.py", | |
| "type": "file", | |
| "details": { | |
| "size": 1261 | |
| } | |
| }, | |
| { | |
| "id": "check_uuid.py", | |
| "label": "check_uuid.py", | |
| "type": "file", | |
| "details": { | |
| "size": 390 | |
| } | |
| }, | |
| { | |
| "id": "check_weird_uuid.py", | |
| "label": "check_weird_uuid.py", | |
| "type": "file", | |
| "details": { | |
| "size": 557 | |
| } | |
| }, | |
| { | |
| "id": "check_weird_uuid2.py", | |
| "label": "check_weird_uuid2.py", | |
| "type": "file", | |
| "details": { | |
| "size": 423 | |
| } | |
| }, | |
| { | |
| "id": "clean_redundant_table.py", | |
| "label": "clean_redundant_table.py", | |
| "type": "file", | |
| "details": { | |
| "size": 1416 | |
| } | |
| }, | |
| { | |
| "id": "cloud_obsidian_vault.py", | |
| "label": "cloud_obsidian_vault.py", | |
| "type": "file", | |
| "details": { | |
| "size": 20607 | |
| } | |
| }, | |
| { | |
| "id": "cloud_obsidian_vector.py", | |
| "label": "cloud_obsidian_vector.py", | |
| "type": "file", | |
| "details": { | |
| "size": 6540 | |
| } | |
| }, | |
| { | |
| "id": "compaction.py", | |
| "label": "compaction.py", | |
| "type": "file", | |
| "details": { | |
| "size": 7205 | |
| } | |
| }, | |
| { | |
| "id": "compaction.py::CompactionEngine", | |
| "label": "CompactionEngine", | |
| "type": "class", | |
| "details": { | |
| "file": "compaction.py", | |
| "methods": [ | |
| "__init__", | |
| "_get_settings", | |
| "should_compact", | |
| "extract_metadata", | |
| "generate_summary_message", | |
| "compact" | |
| ] | |
| } | |
| }, | |
| { | |
| "id": "db_util.py", | |
| "label": "db_util.py", | |
| "type": "file", | |
| "details": { | |
| "size": 590 | |
| } | |
| }, | |
| { | |
| "id": "diagnostic_genai.py", | |
| "label": "diagnostic_genai.py", | |
| "type": "file", | |
| "details": { | |
| "size": 755 | |
| } | |
| }, | |
| { | |
| "id": "diagnostic_mixed_tools.py", | |
| "label": "diagnostic_mixed_tools.py", | |
| "type": "file", | |
| "details": { | |
| "size": 1872 | |
| } | |
| }, | |
| { | |
| "id": "diagnostic_retrieval.py", | |
| "label": "diagnostic_retrieval.py", | |
| "type": "file", | |
| "details": { | |
| "size": 482 | |
| } | |
| }, | |
| { | |
| "id": "diagnostic_retrieval_v2.py", | |
| "label": "diagnostic_retrieval_v2.py", | |
| "type": "file", | |
| "details": { | |
| "size": 683 | |
| } | |
| }, | |
| { | |
| "id": "discord_service.py", | |
| "label": "discord_service.py", | |
| "type": "file", | |
| "details": { | |
| "size": 78156 | |
| } | |
| }, | |
| { | |
| "id": "discord_service.py::ShadowDiscordBot", | |
| "label": "ShadowDiscordBot", | |
| "type": "class", | |
| "details": { | |
| "file": "discord_service.py", | |
| "methods": [ | |
| "__init__", | |
| "_data_root", | |
| "start", | |
| "_run_event_loop", | |
| "stop", | |
| "_fetch_personas_sync", | |
| "send_agent_message", | |
| "_get_guardian_persona", | |
| "_fallback_persona", | |
| "_sanitize_text", | |
| "_extract_image_blocks", | |
| "_strip_brain_tags", | |
| "_brain_reply", | |
| "_parse_debate_items", | |
| "_resolve_uuid_by_name", | |
| "_resolve_uuid_by_discord_bot_id", | |
| "_lookup_user_by_discord_id", | |
| "_save_discord_to_aegis", | |
| "_get_shadow_settings", | |
| "_load_last_message_map", | |
| "_save_last_message_id" | |
| ] | |
| } | |
| }, | |
| { | |
| "id": "download_supertonic_models.py", | |
| "label": "download_supertonic_models.py", | |
| "type": "file", | |
| "details": { | |
| "size": 4231 | |
| } | |
| }, | |
| { | |
| "id": "evolution_engine.py", | |
| "label": "evolution_engine.py", | |
| "type": "file", | |
| "details": { | |
| "size": 795 | |
| } | |
| }, | |
| { | |
| "id": "find_uuid.py", | |
| "label": "find_uuid.py", | |
| "type": "file", | |
| "details": { | |
| "size": 601 | |
| } | |
| }, | |
| { | |
| "id": "fleet_worker.py", | |
| "label": "fleet_worker.py", | |
| "type": "file", | |
| "details": { | |
| "size": 5247 | |
| } | |
| }, | |
| { | |
| "id": "guardian_bridge.py", | |
| "label": "guardian_bridge.py", | |
| "type": "file", | |
| "details": { | |
| "size": 6896 | |
| } | |
| }, | |
| { | |
| "id": "guardian_bridge.py::GuardianBridge", | |
| "label": "GuardianBridge", | |
| "type": "class", | |
| "details": { | |
| "file": "guardian_bridge.py", | |
| "methods": [ | |
| "__init__", | |
| "_get_soul_mapping", | |
| "self_heal" | |
| ] | |
| } | |
| }, | |
| { | |
| "id": "guardian_jobs.py", | |
| "label": "guardian_jobs.py", | |
| "type": "file", | |
| "details": { | |
| "size": 3839 | |
| } | |
| }, | |
| { | |
| "id": "guardian_monitor.py", | |
| "label": "guardian_monitor.py", | |
| "type": "file", | |
| "details": { | |
| "size": 4020 | |
| } | |
| }, | |
| { | |
| "id": "guardian_monitor.py::GuardianMonitor", | |
| "label": "GuardianMonitor", | |
| "type": "class", | |
| "details": { | |
| "file": "guardian_monitor.py", | |
| "methods": [ | |
| "check_port", | |
| "get_readiness_report" | |
| ] | |
| } | |
| }, | |
| { | |
| "id": "heartbeat.py", | |
| "label": "heartbeat.py", | |
| "type": "file", | |
| "details": { | |
| "size": 7963 | |
| } | |
| }, | |
| { | |
| "id": "heartbeat.py::ImperialHeartbeat", | |
| "label": "ImperialHeartbeat", | |
| "type": "class", | |
| "details": { | |
| "file": "heartbeat.py", | |
| "methods": [ | |
| "__init__", | |
| "start", | |
| "_post_to_gbb", | |
| "_loop", | |
| "_tick", | |
| "_check_guardian_health", | |
| "_process_routines", | |
| "_execute_routine", | |
| "_cleanup_missions" | |
| ] | |
| } | |
| }, | |
| { | |
| "id": "imperial_obsidian_context.py", | |
| "label": "imperial_obsidian_context.py", | |
| "type": "file", | |
| "details": { | |
| "size": 9484 | |
| } | |
| }, | |
| { | |
| "id": "imperial_obsidian_context.py::ContextResult", | |
| "label": "ContextResult", | |
| "type": "class", | |
| "details": { | |
| "file": "imperial_obsidian_context.py", | |
| "methods": [] | |
| } | |
| }, | |
| { | |
| "id": "jarvis_run.py", | |
| "label": "jarvis_run.py", | |
| "type": "file", | |
| "details": { | |
| "size": 19625 | |
| } | |
| }, | |
| { | |
| "id": "jarvis_run.py::JarvisOrchestrator", | |
| "label": "JarvisOrchestrator", | |
| "type": "class", | |
| "details": { | |
| "file": "jarvis_run.py", | |
| "methods": [ | |
| "__init__", | |
| "log_message", | |
| "_sync_to_cloud", | |
| "start_task_watcher", | |
| "_task_watcher_loop", | |
| "cleanup_existing_sessions", | |
| "_start_qwen_gateway", | |
| "start_monitoring", | |
| "handle_signal", | |
| "run", | |
| "cmd_restart", | |
| "exit_app" | |
| ] | |
| } | |
| }, | |
| { | |
| "id": "list_all_tables.py", | |
| "label": "list_all_tables.py", | |
| "type": "file", | |
| "details": { | |
| "size": 583 | |
| } | |
| }, | |
| { | |
| "id": "list_db_tables.py", | |
| "label": "list_db_tables.py", | |
| "type": "file", | |
| "details": { | |
| "size": 1027 | |
| } | |
| }, | |
| { | |
| "id": "local_guardians.py", | |
| "label": "local_guardians.py", | |
| "type": "file", | |
| "details": { | |
| "size": 5377 | |
| } | |
| }, | |
| { | |
| "id": "local_launcher.py", | |
| "label": "local_launcher.py", | |
| "type": "file", | |
| "details": { | |
| "size": 11064 | |
| } | |
| }, | |
| { | |
| "id": "mcp_client.py", | |
| "label": "mcp_client.py", | |
| "type": "file", | |
| "details": { | |
| "size": 37869 | |
| } | |
| }, | |
| { | |
| "id": "mcp_client.py::ImperialMCPClient", | |
| "label": "ImperialMCPClient", | |
| "type": "class", | |
| "details": { | |
| "file": "mcp_client.py", | |
| "methods": [ | |
| "__init__", | |
| "_run_loop", | |
| "_load_config", | |
| "_resolve_windows_command", | |
| "wait_ready", | |
| "get_raw_tools", | |
| "get_gemini_tools", | |
| "call_tool_sync", | |
| "call_tool_by_gemini_name", | |
| "_map_json_type", | |
| "_convert_to_gemini_schema", | |
| "get_openai_tools", | |
| "get_gemini_callables", | |
| "get_status", | |
| "get_servers_config", | |
| "_write_config", | |
| "add_server", | |
| "remove_server", | |
| "set_server_enabled", | |
| "reload_sync", | |
| "shutdown" | |
| ] | |
| } | |
| }, | |
| { | |
| "id": "migrate_chat_persona.py", | |
| "label": "migrate_chat_persona.py", | |
| "type": "file", | |
| "details": { | |
| "size": 1688 | |
| } | |
| }, | |
| { | |
| "id": "migrate_web_server.py", | |
| "label": "migrate_web_server.py", | |
| "type": "file", | |
| "details": { | |
| "size": 1302 | |
| } | |
| }, | |
| { | |
| "id": "obsidian_health.py", | |
| "label": "obsidian_health.py", | |
| "type": "file", | |
| "details": { | |
| "size": 4883 | |
| } | |
| }, | |
| { | |
| "id": "obsidian_index.py", | |
| "label": "obsidian_index.py", | |
| "type": "file", | |
| "details": { | |
| "size": 9349 | |
| } | |
| }, | |
| { | |
| "id": "obsidian_jobs.py", | |
| "label": "obsidian_jobs.py", | |
| "type": "file", | |
| "details": { | |
| "size": 10300 | |
| } | |
| }, | |
| { | |
| "id": "obsidian_router.py", | |
| "label": "obsidian_router.py", | |
| "type": "file", | |
| "details": { | |
| "size": 3480 | |
| } | |
| }, | |
| { | |
| "id": "obsidian_vault.py", | |
| "label": "obsidian_vault.py", | |
| "type": "file", | |
| "details": { | |
| "size": 18610 | |
| } | |
| }, | |
| { | |
| "id": "patch_db.py", | |
| "label": "patch_db.py", | |
| "type": "file", | |
| "details": { | |
| "size": 384 | |
| } | |
| }, | |
| { | |
| "id": "phantom_sandbox.py", | |
| "label": "phantom_sandbox.py", | |
| "type": "file", | |
| "details": { | |
| "size": 4223 | |
| } | |
| }, | |
| { | |
| "id": "phantom_sandbox.py::PhantomSandbox", | |
| "label": "PhantomSandbox", | |
| "type": "class", | |
| "details": { | |
| "file": "phantom_sandbox.py", | |
| "methods": [ | |
| "__init__", | |
| "create_session", | |
| "cleanup", | |
| "run_command", | |
| "stage_files" | |
| ] | |
| } | |
| }, | |
| { | |
| "id": "relay_session_store.py", | |
| "label": "relay_session_store.py", | |
| "type": "file", | |
| "details": { | |
| "size": 2522 | |
| } | |
| }, | |
| { | |
| "id": "remote_vision_service.py", | |
| "label": "remote_vision_service.py", | |
| "type": "file", | |
| "details": { | |
| "size": 10911 | |
| } | |
| }, | |
| { | |
| "id": "scratch_brave_tester.py", | |
| "label": "scratch_brave_tester.py", | |
| "type": "file", | |
| "details": { | |
| "size": 2520 | |
| } | |
| }, | |
| { | |
| "id": "scratch_check_search_persona.py", | |
| "label": "scratch_check_search_persona.py", | |
| "type": "file", | |
| "details": { | |
| "size": 1003 | |
| } | |
| }, | |
| { | |
| "id": "scratch_db_check.py", | |
| "label": "scratch_db_check.py", | |
| "type": "file", | |
| "details": { | |
| "size": 766 | |
| } | |
| }, | |
| { | |
| "id": "scratch_db_check_v2.py", | |
| "label": "scratch_db_check_v2.py", | |
| "type": "file", | |
| "details": { | |
| "size": 1423 | |
| } | |
| }, | |
| { | |
| "id": "scratch_db_check_v3.py", | |
| "label": "scratch_db_check_v3.py", | |
| "type": "file", | |
| "details": { | |
| "size": 1512 | |
| } | |
| }, | |
| { | |
| "id": "scratch_diag.py", | |
| "label": "scratch_diag.py", | |
| "type": "file", | |
| "details": { | |
| "size": 1007 | |
| } | |
| }, | |
| { | |
| "id": "scratch_grounding_tester.py", | |
| "label": "scratch_grounding_tester.py", | |
| "type": "file", | |
| "details": { | |
| "size": 2363 | |
| } | |
| }, | |
| { | |
| "id": "scratch_identify_uuid.py", | |
| "label": "scratch_identify_uuid.py", | |
| "type": "file", | |
| "details": { | |
| "size": 544 | |
| } | |
| }, | |
| { | |
| "id": "scratch_identity_check.py", | |
| "label": "scratch_identity_check.py", | |
| "type": "file", | |
| "details": { | |
| "size": 1143 | |
| } | |
| }, | |
| { | |
| "id": "scratch_integration_tester.py", | |
| "label": "scratch_integration_tester.py", | |
| "type": "file", | |
| "details": { | |
| "size": 2164 | |
| } | |
| }, | |
| { | |
| "id": "scratch_list_personas.py", | |
| "label": "scratch_list_personas.py", | |
| "type": "file", | |
| "details": { | |
| "size": 514 | |
| } | |
| }, | |
| { | |
| "id": "scratch_purify_test.py", | |
| "label": "scratch_purify_test.py", | |
| "type": "file", | |
| "details": { | |
| "size": 2099 | |
| } | |
| }, | |
| { | |
| "id": "scratch_update_models.py", | |
| "label": "scratch_update_models.py", | |
| "type": "file", | |
| "details": { | |
| "size": 798 | |
| } | |
| }, | |
| { | |
| "id": "scratch_update_models_api.py", | |
| "label": "scratch_update_models_api.py", | |
| "type": "file", | |
| "details": { | |
| "size": 1887 | |
| } | |
| }, | |
| { | |
| "id": "scratch_verify_persona.py", | |
| "label": "scratch_verify_persona.py", | |
| "type": "file", | |
| "details": { | |
| "size": 942 | |
| } | |
| }, | |
| { | |
| "id": "session_manager.py", | |
| "label": "session_manager.py", | |
| "type": "file", | |
| "details": { | |
| "size": 3951 | |
| } | |
| }, | |
| { | |
| "id": "session_manager.py::SessionManager", | |
| "label": "SessionManager", | |
| "type": "class", | |
| "details": { | |
| "file": "session_manager.py", | |
| "methods": [ | |
| "__new__", | |
| "_init_manager", | |
| "add_chat_client", | |
| "remove_chat_client", | |
| "broadcast_chat", | |
| "get_user_id", | |
| "set_user_id", | |
| "get_agent_session", | |
| "set_agent_session", | |
| "update_agent_session", | |
| "get_rag_pending", | |
| "set_rag_pending", | |
| "clear_rag_pending", | |
| "get_rag_timer", | |
| "set_rag_timer", | |
| "cancel_rag_timer" | |
| ] | |
| } | |
| }, | |
| { | |
| "id": "sovereign_browser_agent.py", | |
| "label": "sovereign_browser_agent.py", | |
| "type": "file", | |
| "details": { | |
| "size": 13705 | |
| } | |
| }, | |
| { | |
| "id": "sovereign_browser_agent.py::SovereignMissionAgent", | |
| "label": "SovereignMissionAgent", | |
| "type": "class", | |
| "details": { | |
| "file": "sovereign_browser_agent.py", | |
| "methods": [ | |
| "__init__", | |
| "execute_mission", | |
| "_build_prompt", | |
| "_extract_script", | |
| "_run_script" | |
| ] | |
| } | |
| }, | |
| { | |
| "id": "sovereign_engine.py", | |
| "label": "sovereign_engine.py", | |
| "type": "file", | |
| "details": { | |
| "size": 30640 | |
| } | |
| }, | |
| { | |
| "id": "sovereign_memory.py", | |
| "label": "sovereign_memory.py", | |
| "type": "file", | |
| "details": { | |
| "size": 26448 | |
| } | |
| }, | |
| { | |
| "id": "sovereign_task_manager.py", | |
| "label": "sovereign_task_manager.py", | |
| "type": "file", | |
| "details": { | |
| "size": 9396 | |
| } | |
| }, | |
| { | |
| "id": "sovereign_task_manager.py::SovereignTaskManager", | |
| "label": "SovereignTaskManager", | |
| "type": "class", | |
| "details": { | |
| "file": "sovereign_task_manager.py", | |
| "methods": [ | |
| "__init__", | |
| "start_task", | |
| "_run_loop", | |
| "_log_mission_outcome", | |
| "_post_mission_to_gbb", | |
| "_build_thought_prompt", | |
| "_extract_command", | |
| "get_task_status" | |
| ] | |
| } | |
| }, | |
| { | |
| "id": "tasks_util.py", | |
| "label": "tasks_util.py", | |
| "type": "file", | |
| "details": { | |
| "size": 6290 | |
| } | |
| }, | |
| { | |
| "id": "telegram_service.py", | |
| "label": "telegram_service.py", | |
| "type": "file", | |
| "details": { | |
| "size": 19085 | |
| } | |
| }, | |
| { | |
| "id": "telegram_service.py::ShadowTelegramBot", | |
| "label": "ShadowTelegramBot", | |
| "type": "class", | |
| "details": { | |
| "file": "telegram_service.py", | |
| "methods": [ | |
| "__init__", | |
| "start", | |
| "_setup_webhook", | |
| "_is_webhook_active", | |
| "_delete_webhook", | |
| "process_webhook_update", | |
| "stop", | |
| "_poll_loop", | |
| "_get_updates", | |
| "_handle_update", | |
| "_provision_admin", | |
| "_heimdall_webapp_markup", | |
| "_handle_command", | |
| "_get_shadow_settings", | |
| "_handle_chat", | |
| "_call_provider", | |
| "_nvidia_api_key", | |
| "_send_message", | |
| "_report_status", | |
| "_start_mission", | |
| "_send_snapshot" | |
| ] | |
| } | |
| }, | |
| { | |
| "id": "temp_fix_db.py", | |
| "label": "temp_fix_db.py", | |
| "type": "file", | |
| "details": { | |
| "size": 1362 | |
| } | |
| }, | |
| { | |
| "id": "test_gemma.py", | |
| "label": "test_gemma.py", | |
| "type": "file", | |
| "details": { | |
| "size": 1178 | |
| } | |
| }, | |
| { | |
| "id": "test_search_grounding.py", | |
| "label": "test_search_grounding.py", | |
| "type": "file", | |
| "details": { | |
| "size": 1590 | |
| } | |
| }, | |
| { | |
| "id": "tool_router.py", | |
| "label": "tool_router.py", | |
| "type": "file", | |
| "details": { | |
| "size": 8578 | |
| } | |
| }, | |
| { | |
| "id": "verify_agent_loop.py", | |
| "label": "verify_agent_loop.py", | |
| "type": "file", | |
| "details": { | |
| "size": 2331 | |
| } | |
| }, | |
| { | |
| "id": "verify_ask_user.py", | |
| "label": "verify_ask_user.py", | |
| "type": "file", | |
| "details": { | |
| "size": 5418 | |
| } | |
| }, | |
| { | |
| "id": "verify_curator_model.py", | |
| "label": "verify_curator_model.py", | |
| "type": "file", | |
| "details": { | |
| "size": 6163 | |
| } | |
| }, | |
| { | |
| "id": "verify_debug_mode.py", | |
| "label": "verify_debug_mode.py", | |
| "type": "file", | |
| "details": { | |
| "size": 3355 | |
| } | |
| }, | |
| { | |
| "id": "verify_honesty_gate.py", | |
| "label": "verify_honesty_gate.py", | |
| "type": "file", | |
| "details": { | |
| "size": 3791 | |
| } | |
| }, | |
| { | |
| "id": "verify_imperial_obsidian_context.py", | |
| "label": "verify_imperial_obsidian_context.py", | |
| "type": "file", | |
| "details": { | |
| "size": 2469 | |
| } | |
| }, | |
| { | |
| "id": "verify_knowledge_base.py", | |
| "label": "verify_knowledge_base.py", | |
| "type": "file", | |
| "details": { | |
| "size": 4108 | |
| } | |
| }, | |
| { | |
| "id": "verify_knowledge_scopes.py", | |
| "label": "verify_knowledge_scopes.py", | |
| "type": "file", | |
| "details": { | |
| "size": 4734 | |
| } | |
| }, | |
| { | |
| "id": "verify_mcp_unified.py", | |
| "label": "verify_mcp_unified.py", | |
| "type": "file", | |
| "details": { | |
| "size": 4643 | |
| } | |
| }, | |
| { | |
| "id": "verify_memory_engine_sb.py", | |
| "label": "verify_memory_engine_sb.py", | |
| "type": "file", | |
| "details": { | |
| "size": 4085 | |
| } | |
| }, | |
| { | |
| "id": "verify_memory_extraction.py", | |
| "label": "verify_memory_extraction.py", | |
| "type": "file", | |
| "details": { | |
| "size": 9591 | |
| } | |
| }, | |
| { | |
| "id": "verify_migration.py", | |
| "label": "verify_migration.py", | |
| "type": "file", | |
| "details": { | |
| "size": 2054 | |
| } | |
| }, | |
| { | |
| "id": "verify_minimax_rest.py", | |
| "label": "verify_minimax_rest.py", | |
| "type": "file", | |
| "details": { | |
| "size": 1995 | |
| } | |
| }, | |
| { | |
| "id": "verify_obsidian_health.py", | |
| "label": "verify_obsidian_health.py", | |
| "type": "file", | |
| "details": { | |
| "size": 1496 | |
| } | |
| }, | |
| { | |
| "id": "verify_obsidian_index.py", | |
| "label": "verify_obsidian_index.py", | |
| "type": "file", | |
| "details": { | |
| "size": 2378 | |
| } | |
| }, | |
| { | |
| "id": "verify_obsidian_jobs.py", | |
| "label": "verify_obsidian_jobs.py", | |
| "type": "file", | |
| "details": { | |
| "size": 4707 | |
| } | |
| }, | |
| { | |
| "id": "verify_reasoning_gate.py", | |
| "label": "verify_reasoning_gate.py", | |
| "type": "file", | |
| "details": { | |
| "size": 4866 | |
| } | |
| }, | |
| { | |
| "id": "verify_recall_floor.py", | |
| "label": "verify_recall_floor.py", | |
| "type": "file", | |
| "details": { | |
| "size": 3090 | |
| } | |
| }, | |
| { | |
| "id": "verify_tool_runtime.py", | |
| "label": "verify_tool_runtime.py", | |
| "type": "file", | |
| "details": { | |
| "size": 12730 | |
| } | |
| }, | |
| { | |
| "id": "verify_tool_runtime.py::_Coding", | |
| "label": "_Coding", | |
| "type": "class", | |
| "details": { | |
| "file": "verify_tool_runtime.py", | |
| "methods": [ | |
| "handles", | |
| "execute" | |
| ] | |
| } | |
| }, | |
| { | |
| "id": "verify_tool_runtime.py::MockMCP", | |
| "label": "MockMCP", | |
| "type": "class", | |
| "details": { | |
| "file": "verify_tool_runtime.py", | |
| "methods": [ | |
| "get_raw_tools", | |
| "call_tool_by_gemini_name" | |
| ] | |
| } | |
| }, | |
| { | |
| "id": "verify_tool_runtime.py::MockBrain", | |
| "label": "MockBrain", | |
| "type": "class", | |
| "details": { | |
| "file": "verify_tool_runtime.py", | |
| "methods": [ | |
| "__init__", | |
| "recall_memory", | |
| "search_media", | |
| "search_3d_model", | |
| "search_knowledge", | |
| "_dispatch_mcp_tool", | |
| "_begin_ask_user", | |
| "_wait_ask_user", | |
| "_store_web_recon", | |
| "_extract_fake_ask_payload", | |
| "_extract_ask_from_markdown" | |
| ] | |
| } | |
| }, | |
| { | |
| "id": "verify_uuid_persistence.py", | |
| "label": "verify_uuid_persistence.py", | |
| "type": "file", | |
| "details": { | |
| "size": 1235 | |
| } | |
| }, | |
| { | |
| "id": "verify_vector_history.py", | |
| "label": "verify_vector_history.py", | |
| "type": "file", | |
| "details": { | |
| "size": 2509 | |
| } | |
| }, | |
| { | |
| "id": "vision_reporter.py", | |
| "label": "vision_reporter.py", | |
| "type": "file", | |
| "details": { | |
| "size": 3096 | |
| } | |
| }, | |
| { | |
| "id": "web_server.py", | |
| "label": "web_server.py", | |
| "type": "file", | |
| "details": { | |
| "size": 367006 | |
| } | |
| }, | |
| { | |
| "id": "web_server.py::ImperialLogHandler", | |
| "label": "ImperialLogHandler", | |
| "type": "class", | |
| "details": { | |
| "file": "web_server.py", | |
| "methods": [ | |
| "__init__", | |
| "emit" | |
| ] | |
| } | |
| }, | |
| { | |
| "id": "web_server.py::StreamTee", | |
| "label": "StreamTee", | |
| "type": "class", | |
| "details": { | |
| "file": "web_server.py", | |
| "methods": [ | |
| "__init__", | |
| "write", | |
| "flush" | |
| ] | |
| } | |
| }, | |
| { | |
| "id": "__init__.py", | |
| "label": "__init__.py", | |
| "type": "file", | |
| "details": { | |
| "size": 282 | |
| } | |
| }, | |
| { | |
| "id": "blueprints/admin_routes.py", | |
| "label": "admin_routes.py", | |
| "type": "file", | |
| "details": { | |
| "size": 11219 | |
| } | |
| }, | |
| { | |
| "id": "blueprints/agent_routes.py", | |
| "label": "agent_routes.py", | |
| "type": "file", | |
| "details": { | |
| "size": 23358 | |
| } | |
| }, | |
| { | |
| "id": "blueprints/chat_routes.py", | |
| "label": "chat_routes.py", | |
| "type": "file", | |
| "details": { | |
| "size": 265936 | |
| } | |
| }, | |
| { | |
| "id": "blueprints/deployment_routes.py", | |
| "label": "deployment_routes.py", | |
| "type": "file", | |
| "details": { | |
| "size": 19819 | |
| } | |
| }, | |
| { | |
| "id": "blueprints/hermes_acp.py", | |
| "label": "hermes_acp.py", | |
| "type": "file", | |
| "details": { | |
| "size": 19043 | |
| } | |
| }, | |
| { | |
| "id": "blueprints/hermes_acp.py::HermesAcpClient", | |
| "label": "HermesAcpClient", | |
| "type": "class", | |
| "details": { | |
| "file": "blueprints/hermes_acp.py", | |
| "methods": [ | |
| "__init__", | |
| "_alive", | |
| "_spawn", | |
| "_ensure_proc", | |
| "_send", | |
| "_request", | |
| "_reader_loop", | |
| "_handle_message", | |
| "_apply_relay_model", | |
| "chat", | |
| "is_ready", | |
| "progress", | |
| "new_session", | |
| "close" | |
| ] | |
| } | |
| }, | |
| { | |
| "id": "blueprints/mcp_routes.py", | |
| "label": "mcp_routes.py", | |
| "type": "file", | |
| "details": { | |
| "size": 6121 | |
| } | |
| }, | |
| { | |
| "id": "blueprints/media_routes.py", | |
| "label": "media_routes.py", | |
| "type": "file", | |
| "details": { | |
| "size": 1207 | |
| } | |
| }, | |
| { | |
| "id": "blueprints/obsidian_routes.py", | |
| "label": "obsidian_routes.py", | |
| "type": "file", | |
| "details": { | |
| "size": 22258 | |
| } | |
| }, | |
| { | |
| "id": "blueprints/openclaw_token.py", | |
| "label": "openclaw_token.py", | |
| "type": "file", | |
| "details": { | |
| "size": 7343 | |
| } | |
| }, | |
| { | |
| "id": "blueprints/parallel_routes.py", | |
| "label": "parallel_routes.py", | |
| "type": "file", | |
| "details": { | |
| "size": 6971 | |
| } | |
| }, | |
| { | |
| "id": "blueprints/report_routes.py", | |
| "label": "report_routes.py", | |
| "type": "file", | |
| "details": { | |
| "size": 17049 | |
| } | |
| }, | |
| { | |
| "id": "blueprints/security_routes.py", | |
| "label": "security_routes.py", | |
| "type": "file", | |
| "details": { | |
| "size": 19489 | |
| } | |
| }, | |
| { | |
| "id": "blueprints/system_routes.py", | |
| "label": "system_routes.py", | |
| "type": "file", | |
| "details": { | |
| "size": 18997 | |
| } | |
| }, | |
| { | |
| "id": "blueprints/transcribe_routes.py", | |
| "label": "transcribe_routes.py", | |
| "type": "file", | |
| "details": { | |
| "size": 11547 | |
| } | |
| }, | |
| { | |
| "id": "brain/aegis-migrate.py", | |
| "label": "aegis-migrate.py", | |
| "type": "file", | |
| "details": { | |
| "size": 5049 | |
| } | |
| }, | |
| { | |
| "id": "brain/aegis-secret-injector.py", | |
| "label": "aegis-secret-injector.py", | |
| "type": "file", | |
| "details": { | |
| "size": 4626 | |
| } | |
| }, | |
| { | |
| "id": "brain/browser_controller.py", | |
| "label": "browser_controller.py", | |
| "type": "file", | |
| "details": { | |
| "size": 24901 | |
| } | |
| }, | |
| { | |
| "id": "brain/browser_controller.py::BrowserController", | |
| "label": "BrowserController", | |
| "type": "class", | |
| "details": { | |
| "file": "brain/browser_controller.py", | |
| "methods": [ | |
| "__init__", | |
| "_report", | |
| "start", | |
| "open_url", | |
| "click", | |
| "type_text", | |
| "smart_type", | |
| "get_content", | |
| "capture", | |
| "press_key", | |
| "get_text", | |
| "wait_for_selector", | |
| "send_chat_message", | |
| "hugin_navigate", | |
| "hugin_screenshot", | |
| "hugin_click", | |
| "hugin_type", | |
| "_run_hugin", | |
| "_run_hugin_remote", | |
| "_run_hugin_local", | |
| "local_playwright_search", | |
| "stop" | |
| ] | |
| } | |
| }, | |
| { | |
| "id": "brain/check_dependencies.py", | |
| "label": "check_dependencies.py", | |
| "type": "file", | |
| "details": { | |
| "size": 5605 | |
| } | |
| }, | |
| { | |
| "id": "brain/cluster_node.py", | |
| "label": "cluster_node.py", | |
| "type": "file", | |
| "details": { | |
| "size": 29397 | |
| } | |
| }, | |
| { | |
| "id": "brain/cluster_node.py::JarvisClusterNode", | |
| "label": "JarvisClusterNode", | |
| "type": "class", | |
| "details": { | |
| "file": "brain/cluster_node.py", | |
| "methods": [ | |
| "__init__", | |
| "_get_local_ip", | |
| "_get_all_local_ips", | |
| "_ensure_config", | |
| "get_config", | |
| "_save_config", | |
| "_purge_stagnant_nodes", | |
| "update_allocation", | |
| "update_allocation_status", | |
| "get_guardian_host", | |
| "get_node_ip", | |
| "_get_broadcast_addresses", | |
| "update_manual_peers", | |
| "_broadcast_presence", | |
| "_listen_for_peers", | |
| "_sync_active_nodes_to_config", | |
| "_sync_to_cloud", | |
| "get_orpheus_url", | |
| "start", | |
| "stop" | |
| ] | |
| } | |
| }, | |
| { | |
| "id": "brain/coding_tools.py", | |
| "label": "coding_tools.py", | |
| "type": "file", | |
| "details": { | |
| "size": 18758 | |
| } | |
| }, | |
| { | |
| "id": "brain/coding_tools.py::CodingToolkit", | |
| "label": "CodingToolkit", | |
| "type": "class", | |
| "details": { | |
| "file": "brain/coding_tools.py", | |
| "methods": [ | |
| "__init__", | |
| "_resolve", | |
| "_is_text_file", | |
| "_walk", | |
| "code_list_dir", | |
| "code_glob", | |
| "code_grep", | |
| "code_read_file", | |
| "code_write_file", | |
| "code_edit_file", | |
| "code_run_command", | |
| "handles", | |
| "execute", | |
| "callables" | |
| ] | |
| } | |
| }, | |
| { | |
| "id": "brain/copilot_auth.py", | |
| "label": "copilot_auth.py", | |
| "type": "file", | |
| "details": { | |
| "size": 3712 | |
| } | |
| }, | |
| { | |
| "id": "brain/core.py", | |
| "label": "core.py", | |
| "type": "file", | |
| "details": { | |
| "size": 262391 | |
| } | |
| }, | |
| { | |
| "id": "brain/core.py::JarvisBrain", | |
| "label": "JarvisBrain", | |
| "type": "class", | |
| "details": { | |
| "file": "brain/core.py", | |
| "methods": [ | |
| "__deepcopy__", | |
| "__init__", | |
| "_classify_job_by_prompt", | |
| "get_dynamic_config", | |
| "_load_shadow_settings", | |
| "_execute_cli", | |
| "_get_mcp_allowed_dirs", | |
| "_resolve_aegis", | |
| "search_knowledge", | |
| "search_media", | |
| "search_media_hits", | |
| "search_3d_model", | |
| "web_search", | |
| "youtube_search", | |
| "save_knowledge", | |
| "obsidian_search", | |
| "obsidian_read", | |
| "obsidian_write", | |
| "project_graph_query", | |
| "review_knowledge_proposals", | |
| "judge_knowledge_proposal", | |
| "_begin_ask_user", | |
| "_store_web_recon", | |
| "_wait_ask_user", | |
| "check_port", | |
| "find_process", | |
| "recall_memory", | |
| "count_history", | |
| "jarvis_memory", | |
| "jarvis_system", | |
| "jarvis_skill", | |
| "jarvis_soul", | |
| "jarvis_gbb_post", | |
| "generate_image", | |
| "sovereign_type_text", | |
| "sovereign_run_app", | |
| "sovereign_press_key", | |
| "delegate_team_task", | |
| "dispatch_to_hydra", | |
| "_emit_token_usage", | |
| "_resolve_shadow_brain_user_id", | |
| "_get_vsc_machine_id", | |
| "_get_copilot_token", | |
| "_get_client", | |
| "_think_fallback", | |
| "_get_tools_schema", | |
| "_get_client", | |
| "_think_copilot", | |
| "_assign_atlas_port", | |
| "_think_atlas", | |
| "_wants_coding", | |
| "_wants_obsidian", | |
| "_wants_obsidian_write", | |
| "_obsidian_query", | |
| "_wants_media", | |
| "_wants_realtime_search", | |
| "_wants_hugin", | |
| "_wants_web_search", | |
| "_wants_delegation", | |
| "_wants_os_control", | |
| "_tool_allowed", | |
| "_mcp_name_kept", | |
| "_apply_native_whitelist_openai", | |
| "_load_equipped_skills", | |
| "_is_task_request", | |
| "_should_use_google_grounding", | |
| "_aegis_api_url", | |
| "_search_grounding_context", | |
| "_build_ollama_prompt", | |
| "_think_ollama", | |
| "_parse_gemma_tool_call", | |
| "_ollama_direct_obsidian_write", | |
| "_ensure_hermes_proxy_running", | |
| "_think_openrouter", | |
| "_load_google_cli_creds", | |
| "_resolve_actual_model", | |
| "think", | |
| "_search_brave", | |
| "direct_search" | |
| ] | |
| } | |
| }, | |
| { | |
| "id": "brain/tool_runtime.py", | |
| "label": "tool_runtime.py", | |
| "type": "file", | |
| "details": { | |
| "size": 58257 | |
| } | |
| }, | |
| { | |
| "id": "brain/tool_runtime.py::RuntimeCtx", | |
| "label": "RuntimeCtx", | |
| "type": "class", | |
| "details": { | |
| "file": "brain/tool_runtime.py", | |
| "methods": [ | |
| "__init__" | |
| ] | |
| } | |
| }, | |
| { | |
| "id": "brain/tool_runtime.py::ToolRuntime", | |
| "label": "ToolRuntime", | |
| "type": "class", | |
| "details": { | |
| "file": "brain/tool_runtime.py", | |
| "methods": [ | |
| "__init__", | |
| "native_schemas", | |
| "curated_native_schemas", | |
| "_handle_search_media", | |
| "_handle_search_youtube", | |
| "dispatch", | |
| "_dispatch_mcp_tool", | |
| "_extract_fake_ask_payload", | |
| "_extract_ask_from_markdown", | |
| "_handle_ask_user", | |
| "_emit_ask_card", | |
| "_route_search_menu_answer", | |
| "_looks_3d", | |
| "_infer_media_type", | |
| "_extract_limit", | |
| "_clean_search_query", | |
| "_handle_search_3d", | |
| "run_tool_calls", | |
| "handle_no_tool_calls", | |
| "nudge_obsidian_write" | |
| ] | |
| } | |
| }, | |
| { | |
| "id": "brain/__init__.py", | |
| "label": "__init__.py", | |
| "type": "file", | |
| "details": { | |
| "size": 223 | |
| } | |
| }, | |
| { | |
| "id": "engines/base.py", | |
| "label": "base.py", | |
| "type": "file", | |
| "details": { | |
| "size": 3216 | |
| } | |
| }, | |
| { | |
| "id": "engines/base.py::JarvisEngine", | |
| "label": "JarvisEngine", | |
| "type": "class", | |
| "details": { | |
| "file": "engines/base.py", | |
| "methods": [ | |
| "__init__", | |
| "check_process", | |
| "check_guardian", | |
| "check_port", | |
| "get_system_stats", | |
| "open_file_or_url", | |
| "open_webview", | |
| "update_heartbeat", | |
| "get_os_name" | |
| ] | |
| } | |
| }, | |
| { | |
| "id": "engines/gemini_audio.py", | |
| "label": "gemini_audio.py", | |
| "type": "file", | |
| "details": { | |
| "size": 44371 | |
| } | |
| }, | |
| { | |
| "id": "engines/gemini_audio.py::VoiceSession", | |
| "label": "VoiceSession", | |
| "type": "class", | |
| "details": { | |
| "file": "engines/gemini_audio.py", | |
| "methods": [ | |
| "__init__" | |
| ] | |
| } | |
| }, | |
| { | |
| "id": "engines/gemini_audio.py::GeminiAudioEngine", | |
| "label": "GeminiAudioEngine", | |
| "type": "class", | |
| "details": { | |
| "file": "engines/gemini_audio.py", | |
| "methods": [ | |
| "__init__", | |
| "_run_event_loop", | |
| "available", | |
| "get_voices", | |
| "_resolve_voice", | |
| "auto_match_voice", | |
| "_pcm_to_wav", | |
| "parse_dialogue", | |
| "tts", | |
| "stt", | |
| "start_voice_session", | |
| "send_audio_to_session", | |
| "send_text_to_session", | |
| "receive_from_session", | |
| "stream_session", | |
| "stop_voice_session", | |
| "get_active_sessions", | |
| "cleanup_stale_sessions", | |
| "shadow_live_tts" | |
| ] | |
| } | |
| }, | |
| { | |
| "id": "engines/gemini_voice_unified.py", | |
| "label": "gemini_voice_unified.py", | |
| "type": "file", | |
| "details": { | |
| "size": 13644 | |
| } | |
| }, | |
| { | |
| "id": "engines/gemini_voice_unified.py::UnifiedVoiceSession", | |
| "label": "UnifiedVoiceSession", | |
| "type": "class", | |
| "details": { | |
| "file": "engines/gemini_voice_unified.py", | |
| "methods": [ | |
| "__init__", | |
| "start", | |
| "_run_async_loop" | |
| ] | |
| } | |
| }, | |
| { | |
| "id": "engines/gemini_voice_ws.py", | |
| "label": "gemini_voice_ws.py", | |
| "type": "file", | |
| "details": { | |
| "size": 23787 | |
| } | |
| }, | |
| { | |
| "id": "engines/hydra.py", | |
| "label": "hydra.py", | |
| "type": "file", | |
| "details": { | |
| "size": 13928 | |
| } | |
| }, | |
| { | |
| "id": "engines/hydra.py::HydraDirector", | |
| "label": "HydraDirector", | |
| "type": "class", | |
| "details": { | |
| "file": "engines/hydra.py", | |
| "methods": [ | |
| "__init__", | |
| "_log_to_file", | |
| "_log_to_db", | |
| "execute_parallel_planning", | |
| "_synthesize_results", | |
| "_create_team_tasks", | |
| "_update_task_status" | |
| ] | |
| } | |
| }, | |
| { | |
| "id": "engines/macos.py", | |
| "label": "macos.py", | |
| "type": "file", | |
| "details": { | |
| "size": 2068 | |
| } | |
| }, | |
| { | |
| "id": "engines/macos.py::MacOSEngine", | |
| "label": "MacOSEngine", | |
| "type": "class", | |
| "details": { | |
| "file": "engines/macos.py", | |
| "methods": [ | |
| "__init__", | |
| "check_process", | |
| "check_port", | |
| "get_system_stats", | |
| "open_file_or_url", | |
| "execute_command", | |
| "open_webview", | |
| "get_os_name" | |
| ] | |
| } | |
| }, | |
| { | |
| "id": "engines/windows.py", | |
| "label": "windows.py", | |
| "type": "file", | |
| "details": { | |
| "size": 9442 | |
| } | |
| }, | |
| { | |
| "id": "engines/windows.py::WindowsEngine", | |
| "label": "WindowsEngine", | |
| "type": "class", | |
| "details": { | |
| "file": "engines/windows.py", | |
| "methods": [ | |
| "__init__", | |
| "check_process", | |
| "check_guardian", | |
| "check_port", | |
| "check_http_status", | |
| "get_system_stats", | |
| "get_gpu_stats", | |
| "get_r2_storage_info", | |
| "open_file_or_url", | |
| "execute_command", | |
| "open_webview", | |
| "get_os_name" | |
| ] | |
| } | |
| }, | |
| { | |
| "id": "engines/__init__.py", | |
| "label": "__init__.py", | |
| "type": "file", | |
| "details": { | |
| "size": 0 | |
| } | |
| }, | |
| { | |
| "id": "scratch/check_8000.py", | |
| "label": "check_8000.py", | |
| "type": "file", | |
| "details": { | |
| "size": 604 | |
| } | |
| }, | |
| { | |
| "id": "scratch/check_aegis_persona.py", | |
| "label": "check_aegis_persona.py", | |
| "type": "file", | |
| "details": { | |
| "size": 813 | |
| } | |
| }, | |
| { | |
| "id": "scratch/check_aegis_relay.py", | |
| "label": "check_aegis_relay.py", | |
| "type": "file", | |
| "details": { | |
| "size": 1080 | |
| } | |
| }, | |
| { | |
| "id": "scratch/check_aizen_info.py", | |
| "label": "check_aizen_info.py", | |
| "type": "file", | |
| "details": { | |
| "size": 788 | |
| } | |
| }, | |
| { | |
| "id": "scratch/check_db_contexts.py", | |
| "label": "check_db_contexts.py", | |
| "type": "file", | |
| "details": { | |
| "size": 640 | |
| } | |
| }, | |
| { | |
| "id": "scratch/check_personas.py", | |
| "label": "check_personas.py", | |
| "type": "file", | |
| "details": { | |
| "size": 534 | |
| } | |
| }, | |
| { | |
| "id": "scratch/check_persona_schema.py", | |
| "label": "check_persona_schema.py", | |
| "type": "file", | |
| "details": { | |
| "size": 1266 | |
| } | |
| }, | |
| { | |
| "id": "scratch/check_rust_id.py", | |
| "label": "check_rust_id.py", | |
| "type": "file", | |
| "details": { | |
| "size": 632 | |
| } | |
| }, | |
| { | |
| "id": "scratch/check_task_schema.py", | |
| "label": "check_task_schema.py", | |
| "type": "file", | |
| "details": { | |
| "size": 712 | |
| } | |
| }, | |
| { | |
| "id": "scratch/db_check_v41.py", | |
| "label": "db_check_v41.py", | |
| "type": "file", | |
| "details": { | |
| "size": 1215 | |
| } | |
| }, | |
| { | |
| "id": "scratch/debug_gbb_auth.py", | |
| "label": "debug_gbb_auth.py", | |
| "type": "file", | |
| "details": { | |
| "size": 958 | |
| } | |
| }, | |
| { | |
| "id": "scratch/debug_relay_502.py", | |
| "label": "debug_relay_502.py", | |
| "type": "file", | |
| "details": { | |
| "size": 1336 | |
| } | |
| }, | |
| { | |
| "id": "scratch/detect_log_encoding.py", | |
| "label": "detect_log_encoding.py", | |
| "type": "file", | |
| "details": { | |
| "size": 731 | |
| } | |
| }, | |
| { | |
| "id": "scratch/enable_aegis_chat.py", | |
| "label": "enable_aegis_chat.py", | |
| "type": "file", | |
| "details": { | |
| "size": 1938 | |
| } | |
| }, | |
| { | |
| "id": "scratch/fetch_copilot_models.py", | |
| "label": "fetch_copilot_models.py", | |
| "type": "file", | |
| "details": { | |
| "size": 2622 | |
| } | |
| }, | |
| { | |
| "id": "scratch/fix_deployment_encoding.py", | |
| "label": "fix_deployment_encoding.py", | |
| "type": "file", | |
| "details": { | |
| "size": 3466 | |
| } | |
| }, | |
| { | |
| "id": "scratch/fix_init.py", | |
| "label": "fix_init.py", | |
| "type": "file", | |
| "details": { | |
| "size": 2512 | |
| } | |
| }, | |
| { | |
| "id": "scratch/fix_persona_tts_json.py", | |
| "label": "fix_persona_tts_json.py", | |
| "type": "file", | |
| "details": { | |
| "size": 1595 | |
| } | |
| }, | |
| { | |
| "id": "scratch/fix_security_encoding.py", | |
| "label": "fix_security_encoding.py", | |
| "type": "file", | |
| "details": { | |
| "size": 2315 | |
| } | |
| }, | |
| { | |
| "id": "scratch/fix_shadow_brain_tts_flag.py", | |
| "label": "fix_shadow_brain_tts_flag.py", | |
| "type": "file", | |
| "details": { | |
| "size": 1806 | |
| } | |
| }, | |
| { | |
| "id": "scratch/fix_webserver_encoding.py", | |
| "label": "fix_webserver_encoding.py", | |
| "type": "file", | |
| "details": { | |
| "size": 16284 | |
| } | |
| }, | |
| { | |
| "id": "scratch/fix_welcome_msg.py", | |
| "label": "fix_welcome_msg.py", | |
| "type": "file", | |
| "details": { | |
| "size": 3393 | |
| } | |
| }, | |
| { | |
| "id": "scratch/full_aizen_record.py", | |
| "label": "full_aizen_record.py", | |
| "type": "file", | |
| "details": { | |
| "size": 708 | |
| } | |
| }, | |
| { | |
| "id": "scratch/grounding_audit.py", | |
| "label": "grounding_audit.py", | |
| "type": "file", | |
| "details": { | |
| "size": 1502 | |
| } | |
| }, | |
| { | |
| "id": "scratch/inspect_all_personas.py", | |
| "label": "inspect_all_personas.py", | |
| "type": "file", | |
| "details": { | |
| "size": 1264 | |
| } | |
| }, | |
| { | |
| "id": "scratch/list_all_guardians.py", | |
| "label": "list_all_guardians.py", | |
| "type": "file", | |
| "details": { | |
| "size": 667 | |
| } | |
| }, | |
| { | |
| "id": "scratch/live_chat_test.py", | |
| "label": "live_chat_test.py", | |
| "type": "file", | |
| "details": { | |
| "size": 878 | |
| } | |
| }, | |
| { | |
| "id": "scratch/patch_rust_brain_db.py", | |
| "label": "patch_rust_brain_db.py", | |
| "type": "file", | |
| "details": { | |
| "size": 1172 | |
| } | |
| }, | |
| { | |
| "id": "scratch/post_gbb_test.py", | |
| "label": "post_gbb_test.py", | |
| "type": "file", | |
| "details": { | |
| "size": 1998 | |
| } | |
| }, | |
| { | |
| "id": "scratch/post_gbb_test_v2.py", | |
| "label": "post_gbb_test_v2.py", | |
| "type": "file", | |
| "details": { | |
| "size": 2409 | |
| } | |
| }, | |
| { | |
| "id": "scratch/purify_guardians_db.py", | |
| "label": "purify_guardians_db.py", | |
| "type": "file", | |
| "details": { | |
| "size": 1200 | |
| } | |
| }, | |
| { | |
| "id": "scratch/real_world_chat_test.py", | |
| "label": "real_world_chat_test.py", | |
| "type": "file", | |
| "details": { | |
| "size": 1338 | |
| } | |
| }, | |
| { | |
| "id": "scratch/repair_aegis_metadata.py", | |
| "label": "repair_aegis_metadata.py", | |
| "type": "file", | |
| "details": { | |
| "size": 905 | |
| } | |
| }, | |
| { | |
| "id": "scratch/restore_srb_uuid.py", | |
| "label": "restore_srb_uuid.py", | |
| "type": "file", | |
| "details": { | |
| "size": 745 | |
| } | |
| }, | |
| { | |
| "id": "scratch/scan_broken_korean.py", | |
| "label": "scan_broken_korean.py", | |
| "type": "file", | |
| "details": { | |
| "size": 754 | |
| } | |
| }, | |
| { | |
| "id": "scratch/test_encodings.py", | |
| "label": "test_encodings.py", | |
| "type": "file", | |
| "details": { | |
| "size": 640 | |
| } | |
| }, | |
| { | |
| "id": "scratch/test_genai_v2.py", | |
| "label": "test_genai_v2.py", | |
| "type": "file", | |
| "details": { | |
| "size": 2016 | |
| } | |
| }, | |
| { | |
| "id": "scratch/test_job_save.py", | |
| "label": "test_job_save.py", | |
| "type": "file", | |
| "details": { | |
| "size": 1464 | |
| } | |
| }, | |
| { | |
| "id": "scratch/test_minimal_search.py", | |
| "label": "test_minimal_search.py", | |
| "type": "file", | |
| "details": { | |
| "size": 1931 | |
| } | |
| }, | |
| { | |
| "id": "scratch/test_offline_relay.py", | |
| "label": "test_offline_relay.py", | |
| "type": "file", | |
| "details": { | |
| "size": 1995 | |
| } | |
| }, | |
| { | |
| "id": "scratch/test_openclaw.py", | |
| "label": "test_openclaw.py", | |
| "type": "file", | |
| "details": { | |
| "size": 1424 | |
| } | |
| }, | |
| { | |
| "id": "scratch/test_openclaw_final.py", | |
| "label": "test_openclaw_final.py", | |
| "type": "file", | |
| "details": { | |
| "size": 1050 | |
| } | |
| }, | |
| { | |
| "id": "scratch/test_ops_normalization.py", | |
| "label": "test_ops_normalization.py", | |
| "type": "file", | |
| "details": { | |
| "size": 1796 | |
| } | |
| }, | |
| { | |
| "id": "scratch/test_orpheus_detector.py", | |
| "label": "test_orpheus_detector.py", | |
| "type": "file", | |
| "details": { | |
| "size": 816 | |
| } | |
| }, | |
| { | |
| "id": "scratch/test_purify.py", | |
| "label": "test_purify.py", | |
| "type": "file", | |
| "details": { | |
| "size": 1666 | |
| } | |
| }, | |
| { | |
| "id": "scratch/test_rbac_logic.py", | |
| "label": "test_rbac_logic.py", | |
| "type": "file", | |
| "details": { | |
| "size": 1341 | |
| } | |
| }, | |
| { | |
| "id": "scratch/test_relay_logic.py", | |
| "label": "test_relay_logic.py", | |
| "type": "file", | |
| "details": { | |
| "size": 902 | |
| } | |
| }, | |
| { | |
| "id": "scratch/test_resolver.py", | |
| "label": "test_resolver.py", | |
| "type": "file", | |
| "details": { | |
| "size": 917 | |
| } | |
| }, | |
| { | |
| "id": "scratch/test_resolver.py::MockRequest", | |
| "label": "MockRequest", | |
| "type": "class", | |
| "details": { | |
| "file": "scratch/test_resolver.py", | |
| "methods": [] | |
| } | |
| }, | |
| { | |
| "id": "scratch/test_resolver.py::MockCluster", | |
| "label": "MockCluster", | |
| "type": "class", | |
| "details": { | |
| "file": "scratch/test_resolver.py", | |
| "methods": [ | |
| "get_config" | |
| ] | |
| } | |
| }, | |
| { | |
| "id": "scratch/test_search_parity.py", | |
| "label": "test_search_parity.py", | |
| "type": "file", | |
| "details": { | |
| "size": 2098 | |
| } | |
| }, | |
| { | |
| "id": "scratch/test_server_run.py", | |
| "label": "test_server_run.py", | |
| "type": "file", | |
| "details": { | |
| "size": 653 | |
| } | |
| }, | |
| { | |
| "id": "scratch/verify_brain_direct_v2.py", | |
| "label": "verify_brain_direct_v2.py", | |
| "type": "file", | |
| "details": { | |
| "size": 1127 | |
| } | |
| }, | |
| { | |
| "id": "scratch/verify_brain_direct_v3.py", | |
| "label": "verify_brain_direct_v3.py", | |
| "type": "file", | |
| "details": { | |
| "size": 1706 | |
| } | |
| }, | |
| { | |
| "id": "scratch/verify_brain_direct_v4.py", | |
| "label": "verify_brain_direct_v4.py", | |
| "type": "file", | |
| "details": { | |
| "size": 1925 | |
| } | |
| }, | |
| { | |
| "id": "scratch/verify_copilot_transport.py", | |
| "label": "verify_copilot_transport.py", | |
| "type": "file", | |
| "details": { | |
| "size": 2432 | |
| } | |
| }, | |
| { | |
| "id": "scratch/verify_dynamic_config.py", | |
| "label": "verify_dynamic_config.py", | |
| "type": "file", | |
| "details": { | |
| "size": 869 | |
| } | |
| }, | |
| { | |
| "id": "scratch/verify_encoding.py", | |
| "label": "verify_encoding.py", | |
| "type": "file", | |
| "details": { | |
| "size": 607 | |
| } | |
| }, | |
| { | |
| "id": "scratch/verify_history_api.py", | |
| "label": "verify_history_api.py", | |
| "type": "file", | |
| "details": { | |
| "size": 960 | |
| } | |
| }, | |
| { | |
| "id": "scratch/verify_job_routing.py", | |
| "label": "verify_job_routing.py", | |
| "type": "file", | |
| "details": { | |
| "size": 2127 | |
| } | |
| }, | |
| { | |
| "id": "scratch/verify_shadow_direct_chat.py", | |
| "label": "verify_shadow_direct_chat.py", | |
| "type": "file", | |
| "details": { | |
| "size": 1912 | |
| } | |
| }, | |
| { | |
| "id": "scratch/verify_unified_brain.py", | |
| "label": "verify_unified_brain.py", | |
| "type": "file", | |
| "details": { | |
| "size": 1398 | |
| } | |
| }, | |
| { | |
| "id": "scratch/verify_unified_brain.py::MockBrain", | |
| "label": "MockBrain", | |
| "type": "class", | |
| "details": { | |
| "file": "scratch/verify_unified_brain.py", | |
| "methods": [ | |
| "__init__", | |
| "think" | |
| ] | |
| } | |
| }, | |
| { | |
| "id": "scripts/build_graph.py", | |
| "label": "build_graph.py", | |
| "type": "file", | |
| "details": { | |
| "size": 20177 | |
| } | |
| }, | |
| { | |
| "id": "scripts/build_graph.py::ProjectGraphBuilder", | |
| "label": "ProjectGraphBuilder", | |
| "type": "class", | |
| "details": { | |
| "file": "scripts/build_graph.py", | |
| "methods": [ | |
| "__init__", | |
| "add_node", | |
| "add_edge", | |
| "scan_python_files", | |
| "_analyze_ast", | |
| "_try_add_import_edge", | |
| "scan_markdown_docs", | |
| "build" | |
| ] | |
| } | |
| }, | |
| { | |
| "id": "scripts/seed_cloud_obsidian.py", | |
| "label": "seed_cloud_obsidian.py", | |
| "type": "file", | |
| "details": { | |
| "size": 5817 | |
| } | |
| }, | |
| { | |
| "id": "services/brain_service.py", | |
| "label": "brain_service.py", | |
| "type": "file", | |
| "details": { | |
| "size": 24853 | |
| } | |
| }, | |
| { | |
| "id": "services/chat_service.py", | |
| "label": "chat_service.py", | |
| "type": "file", | |
| "details": { | |
| "size": 10942 | |
| } | |
| }, | |
| { | |
| "id": "services/media_service.py", | |
| "label": "media_service.py", | |
| "type": "file", | |
| "details": { | |
| "size": 3501 | |
| } | |
| }, | |
| { | |
| "id": "services/memory_extraction.py", | |
| "label": "memory_extraction.py", | |
| "type": "file", | |
| "details": { | |
| "size": 11313 | |
| } | |
| }, | |
| { | |
| "id": "skills/git_manager.py", | |
| "label": "git_manager.py", | |
| "type": "file", | |
| "details": { | |
| "size": 1411 | |
| } | |
| }, | |
| { | |
| "id": "ui/__init__.py", | |
| "label": "__init__.py", | |
| "type": "file", | |
| "details": { | |
| "size": 0 | |
| } | |
| }, | |
| { | |
| "id": "utils/emotion.py", | |
| "label": "emotion.py", | |
| "type": "file", | |
| "details": { | |
| "size": 7209 | |
| } | |
| }, | |
| { | |
| "id": "utils/__init__.py", | |
| "label": "__init__.py", | |
| "type": "file", | |
| "details": { | |
| "size": 0 | |
| } | |
| }, | |
| { | |
| "id": "implementation_plan.md", | |
| "label": "implementation_plan.md", | |
| "type": "document", | |
| "details": { | |
| "size": 11026 | |
| } | |
| }, | |
| { | |
| "id": "implementation_plan_guardian_jobs.md", | |
| "label": "implementation_plan_guardian_jobs.md", | |
| "type": "document", | |
| "details": { | |
| "size": 6873 | |
| } | |
| }, | |
| { | |
| "id": "implementation_plan_job_editor.md", | |
| "label": "implementation_plan_job_editor.md", | |
| "type": "document", | |
| "details": { | |
| "size": 5111 | |
| } | |
| }, | |
| { | |
| "id": "implementation_plan_memory_extraction.md", | |
| "label": "implementation_plan_memory_extraction.md", | |
| "type": "document", | |
| "details": { | |
| "size": 7243 | |
| } | |
| }, | |
| { | |
| "id": "implementation_plan_tool_runtime.md", | |
| "label": "implementation_plan_tool_runtime.md", | |
| "type": "document", | |
| "details": { | |
| "size": 6611 | |
| } | |
| }, | |
| { | |
| "id": "README_HF.md", | |
| "label": "README_HF.md", | |
| "type": "document", | |
| "details": { | |
| "size": 384 | |
| } | |
| }, | |
| { | |
| "id": "docs/tts/Qwen3TTS_QuickRef.md", | |
| "label": "Qwen3TTS_QuickRef.md", | |
| "type": "document", | |
| "details": { | |
| "size": 1903 | |
| } | |
| }, | |
| { | |
| "id": "docs/tts/Qwen3TTS_Usage.md", | |
| "label": "Qwen3TTS_Usage.md", | |
| "type": "document", | |
| "details": { | |
| "size": 2790 | |
| } | |
| }, | |
| { | |
| "id": "docs/tts/README_TTS_TEST.md", | |
| "label": "README_TTS_TEST.md", | |
| "type": "document", | |
| "details": { | |
| "size": 1651 | |
| } | |
| } | |
| ], | |
| "links": [ | |
| { | |
| "source": "aegis_link.py", | |
| "target": "aegis_link.py::AegisLink", | |
| "type": "defines" | |
| }, | |
| { | |
| "source": "app_hf.py", | |
| "target": "app_hf.py::LinuxCloudEngine", | |
| "type": "defines" | |
| }, | |
| { | |
| "source": "cloud_obsidian_vector.py", | |
| "target": "cloud_obsidian_vault.py", | |
| "type": "imports" | |
| }, | |
| { | |
| "source": "cloud_obsidian_vector.py", | |
| "target": "aegis_link.py", | |
| "type": "imports" | |
| }, | |
| { | |
| "source": "compaction.py", | |
| "target": "compaction.py::CompactionEngine", | |
| "type": "defines" | |
| }, | |
| { | |
| "source": "discord_service.py", | |
| "target": "discord_service.py::ShadowDiscordBot", | |
| "type": "defines" | |
| }, | |
| { | |
| "source": "guardian_bridge.py", | |
| "target": "guardian_bridge.py::GuardianBridge", | |
| "type": "defines" | |
| }, | |
| { | |
| "source": "guardian_monitor.py", | |
| "target": "guardian_monitor.py::GuardianMonitor", | |
| "type": "defines" | |
| }, | |
| { | |
| "source": "heartbeat.py", | |
| "target": "heartbeat.py::ImperialHeartbeat", | |
| "type": "defines" | |
| }, | |
| { | |
| "source": "imperial_obsidian_context.py", | |
| "target": "imperial_obsidian_context.py::ContextResult", | |
| "type": "defines" | |
| }, | |
| { | |
| "source": "jarvis_run.py", | |
| "target": "jarvis_run.py::JarvisOrchestrator", | |
| "type": "defines" | |
| }, | |
| { | |
| "source": "mcp_client.py", | |
| "target": "mcp_client.py::ImperialMCPClient", | |
| "type": "defines" | |
| }, | |
| { | |
| "source": "obsidian_health.py", | |
| "target": "imperial_obsidian_context.py", | |
| "type": "imports" | |
| }, | |
| { | |
| "source": "obsidian_router.py", | |
| "target": "cloud_obsidian_vault.py", | |
| "type": "imports" | |
| }, | |
| { | |
| "source": "obsidian_vault.py", | |
| "target": "obsidian_index.py", | |
| "type": "imports" | |
| }, | |
| { | |
| "source": "phantom_sandbox.py", | |
| "target": "phantom_sandbox.py::PhantomSandbox", | |
| "type": "defines" | |
| }, | |
| { | |
| "source": "scratch_db_check.py", | |
| "target": "db_util.py", | |
| "type": "imports" | |
| }, | |
| { | |
| "source": "scratch_db_check_v3.py", | |
| "target": "db_util.py", | |
| "type": "imports" | |
| }, | |
| { | |
| "source": "scratch_identify_uuid.py", | |
| "target": "db_util.py", | |
| "type": "imports" | |
| }, | |
| { | |
| "source": "scratch_identity_check.py", | |
| "target": "db_util.py", | |
| "type": "imports" | |
| }, | |
| { | |
| "source": "scratch_verify_persona.py", | |
| "target": "db_util.py", | |
| "type": "imports" | |
| }, | |
| { | |
| "source": "session_manager.py", | |
| "target": "session_manager.py::SessionManager", | |
| "type": "defines" | |
| }, | |
| { | |
| "source": "sovereign_browser_agent.py", | |
| "target": "sovereign_browser_agent.py::SovereignMissionAgent", | |
| "type": "defines" | |
| }, | |
| { | |
| "source": "sovereign_engine.py", | |
| "target": "remote_vision_service.py", | |
| "type": "imports" | |
| }, | |
| { | |
| "source": "sovereign_engine.py", | |
| "target": "mcp_client.py", | |
| "type": "imports" | |
| }, | |
| { | |
| "source": "sovereign_memory.py", | |
| "target": "aegis_link.py", | |
| "type": "imports" | |
| }, | |
| { | |
| "source": "sovereign_task_manager.py", | |
| "target": "db_util.py", | |
| "type": "imports" | |
| }, | |
| { | |
| "source": "sovereign_task_manager.py", | |
| "target": "phantom_sandbox.py", | |
| "type": "imports" | |
| }, | |
| { | |
| "source": "sovereign_task_manager.py", | |
| "target": "sovereign_task_manager.py::SovereignTaskManager", | |
| "type": "defines" | |
| }, | |
| { | |
| "source": "sovereign_task_manager.py", | |
| "target": "sovereign_memory.py", | |
| "type": "imports" | |
| }, | |
| { | |
| "source": "tasks_util.py", | |
| "target": "sovereign_memory.py", | |
| "type": "imports" | |
| }, | |
| { | |
| "source": "telegram_service.py", | |
| "target": "telegram_service.py::ShadowTelegramBot", | |
| "type": "defines" | |
| }, | |
| { | |
| "source": "telegram_service.py", | |
| "target": "sovereign_memory.py", | |
| "type": "imports" | |
| }, | |
| { | |
| "source": "telegram_service.py", | |
| "target": "remote_vision_service.py", | |
| "type": "imports" | |
| }, | |
| { | |
| "source": "telegram_service.py", | |
| "target": "sovereign_task_manager.py", | |
| "type": "imports" | |
| }, | |
| { | |
| "source": "temp_fix_db.py", | |
| "target": "db_util.py", | |
| "type": "imports" | |
| }, | |
| { | |
| "source": "tool_router.py", | |
| "target": "sovereign_memory.py", | |
| "type": "imports" | |
| }, | |
| { | |
| "source": "tool_router.py", | |
| "target": "mcp_client.py", | |
| "type": "imports" | |
| }, | |
| { | |
| "source": "verify_honesty_gate.py", | |
| "target": "sovereign_memory.py", | |
| "type": "imports" | |
| }, | |
| { | |
| "source": "verify_imperial_obsidian_context.py", | |
| "target": "obsidian_vault.py", | |
| "type": "imports" | |
| }, | |
| { | |
| "source": "verify_imperial_obsidian_context.py", | |
| "target": "imperial_obsidian_context.py", | |
| "type": "imports" | |
| }, | |
| { | |
| "source": "verify_memory_extraction.py", | |
| "target": "aegis_link.py", | |
| "type": "imports" | |
| }, | |
| { | |
| "source": "verify_migration.py", | |
| "target": "sovereign_memory.py", | |
| "type": "imports" | |
| }, | |
| { | |
| "source": "verify_obsidian_health.py", | |
| "target": "obsidian_health.py", | |
| "type": "imports" | |
| }, | |
| { | |
| "source": "verify_obsidian_index.py", | |
| "target": "obsidian_index.py", | |
| "type": "imports" | |
| }, | |
| { | |
| "source": "verify_obsidian_index.py", | |
| "target": "obsidian_vault.py", | |
| "type": "imports" | |
| }, | |
| { | |
| "source": "verify_obsidian_jobs.py", | |
| "target": "obsidian_jobs.py", | |
| "type": "imports" | |
| }, | |
| { | |
| "source": "verify_obsidian_jobs.py", | |
| "target": "guardian_jobs.py", | |
| "type": "imports" | |
| }, | |
| { | |
| "source": "verify_tool_runtime.py", | |
| "target": "verify_tool_runtime.py::_Coding", | |
| "type": "defines" | |
| }, | |
| { | |
| "source": "verify_tool_runtime.py", | |
| "target": "verify_tool_runtime.py::MockMCP", | |
| "type": "defines" | |
| }, | |
| { | |
| "source": "verify_tool_runtime.py", | |
| "target": "verify_tool_runtime.py::MockBrain", | |
| "type": "defines" | |
| }, | |
| { | |
| "source": "verify_uuid_persistence.py", | |
| "target": "sovereign_memory.py", | |
| "type": "imports" | |
| }, | |
| { | |
| "source": "verify_vector_history.py", | |
| "target": "sovereign_memory.py", | |
| "type": "imports" | |
| }, | |
| { | |
| "source": "vision_reporter.py", | |
| "target": "remote_vision_service.py", | |
| "type": "imports" | |
| }, | |
| { | |
| "source": "web_server.py", | |
| "target": "phantom_sandbox.py", | |
| "type": "imports" | |
| }, | |
| { | |
| "source": "web_server.py", | |
| "target": "sovereign_task_manager.py", | |
| "type": "imports" | |
| }, | |
| { | |
| "source": "web_server.py", | |
| "target": "aegis_link.py", | |
| "type": "imports" | |
| }, | |
| { | |
| "source": "web_server.py", | |
| "target": "sovereign_browser_agent.py", | |
| "type": "imports" | |
| }, | |
| { | |
| "source": "web_server.py", | |
| "target": "compaction.py", | |
| "type": "imports" | |
| }, | |
| { | |
| "source": "web_server.py", | |
| "target": "guardian_monitor.py", | |
| "type": "imports" | |
| }, | |
| { | |
| "source": "web_server.py", | |
| "target": "db_util.py", | |
| "type": "imports" | |
| }, | |
| { | |
| "source": "web_server.py", | |
| "target": "telegram_service.py", | |
| "type": "imports" | |
| }, | |
| { | |
| "source": "web_server.py", | |
| "target": "discord_service.py", | |
| "type": "imports" | |
| }, | |
| { | |
| "source": "web_server.py", | |
| "target": "tasks_util.py", | |
| "type": "imports" | |
| }, | |
| { | |
| "source": "web_server.py", | |
| "target": "sovereign_memory.py", | |
| "type": "imports" | |
| }, | |
| { | |
| "source": "web_server.py", | |
| "target": "web_server.py::ImperialLogHandler", | |
| "type": "defines" | |
| }, | |
| { | |
| "source": "web_server.py", | |
| "target": "web_server.py::StreamTee", | |
| "type": "defines" | |
| }, | |
| { | |
| "source": "web_server.py", | |
| "target": "remote_vision_service.py", | |
| "type": "imports" | |
| }, | |
| { | |
| "source": "web_server.py", | |
| "target": "sovereign_engine.py", | |
| "type": "imports" | |
| }, | |
| { | |
| "source": "web_server.py", | |
| "target": "mcp_client.py", | |
| "type": "imports" | |
| }, | |
| { | |
| "source": "web_server.py", | |
| "target": "download_supertonic_models.py", | |
| "type": "imports" | |
| }, | |
| { | |
| "source": "__init__.py", | |
| "target": "sovereign_engine.py", | |
| "type": "imports" | |
| }, | |
| { | |
| "source": "__init__.py", | |
| "target": "remote_vision_service.py", | |
| "type": "imports" | |
| }, | |
| { | |
| "source": "blueprints/admin_routes.py", | |
| "target": "session_manager.py", | |
| "type": "imports" | |
| }, | |
| { | |
| "source": "blueprints/admin_routes.py", | |
| "target": "db_util.py", | |
| "type": "imports" | |
| }, | |
| { | |
| "source": "blueprints/admin_routes.py", | |
| "target": "sovereign_memory.py", | |
| "type": "imports" | |
| }, | |
| { | |
| "source": "blueprints/agent_routes.py", | |
| "target": "session_manager.py", | |
| "type": "imports" | |
| }, | |
| { | |
| "source": "blueprints/agent_routes.py", | |
| "target": "tasks_util.py", | |
| "type": "imports" | |
| }, | |
| { | |
| "source": "blueprints/chat_routes.py", | |
| "target": "session_manager.py", | |
| "type": "imports" | |
| }, | |
| { | |
| "source": "blueprints/chat_routes.py", | |
| "target": "sovereign_memory.py", | |
| "type": "imports" | |
| }, | |
| { | |
| "source": "blueprints/chat_routes.py", | |
| "target": "db_util.py", | |
| "type": "imports" | |
| }, | |
| { | |
| "source": "blueprints/chat_routes.py", | |
| "target": "aegis_link.py", | |
| "type": "imports" | |
| }, | |
| { | |
| "source": "blueprints/chat_routes.py", | |
| "target": "remote_vision_service.py", | |
| "type": "imports" | |
| }, | |
| { | |
| "source": "blueprints/chat_routes.py", | |
| "target": "guardian_jobs.py", | |
| "type": "imports" | |
| }, | |
| { | |
| "source": "blueprints/chat_routes.py", | |
| "target": "obsidian_jobs.py", | |
| "type": "imports" | |
| }, | |
| { | |
| "source": "blueprints/chat_routes.py", | |
| "target": "local_guardians.py", | |
| "type": "imports" | |
| }, | |
| { | |
| "source": "blueprints/chat_routes.py", | |
| "target": "relay_session_store.py", | |
| "type": "imports" | |
| }, | |
| { | |
| "source": "blueprints/chat_routes.py", | |
| "target": "mcp_client.py", | |
| "type": "imports" | |
| }, | |
| { | |
| "source": "blueprints/hermes_acp.py", | |
| "target": "blueprints/hermes_acp.py::HermesAcpClient", | |
| "type": "defines" | |
| }, | |
| { | |
| "source": "blueprints/mcp_routes.py", | |
| "target": "mcp_client.py", | |
| "type": "imports" | |
| }, | |
| { | |
| "source": "blueprints/obsidian_routes.py", | |
| "target": "obsidian_router.py", | |
| "type": "imports" | |
| }, | |
| { | |
| "source": "blueprints/obsidian_routes.py", | |
| "target": "cloud_obsidian_vector.py", | |
| "type": "imports" | |
| }, | |
| { | |
| "source": "blueprints/obsidian_routes.py", | |
| "target": "obsidian_health.py", | |
| "type": "imports" | |
| }, | |
| { | |
| "source": "blueprints/parallel_routes.py", | |
| "target": "guardian_monitor.py", | |
| "type": "imports" | |
| }, | |
| { | |
| "source": "blueprints/report_routes.py", | |
| "target": "sovereign_memory.py", | |
| "type": "imports" | |
| }, | |
| { | |
| "source": "blueprints/report_routes.py", | |
| "target": "db_util.py", | |
| "type": "imports" | |
| }, | |
| { | |
| "source": "blueprints/system_routes.py", | |
| "target": "tasks_util.py", | |
| "type": "imports" | |
| }, | |
| { | |
| "source": "blueprints/system_routes.py", | |
| "target": "sovereign_memory.py", | |
| "type": "imports" | |
| }, | |
| { | |
| "source": "brain/browser_controller.py", | |
| "target": "brain/browser_controller.py::BrowserController", | |
| "type": "defines" | |
| }, | |
| { | |
| "source": "brain/cluster_node.py", | |
| "target": "brain/cluster_node.py::JarvisClusterNode", | |
| "type": "defines" | |
| }, | |
| { | |
| "source": "brain/coding_tools.py", | |
| "target": "brain/coding_tools.py::CodingToolkit", | |
| "type": "defines" | |
| }, | |
| { | |
| "source": "brain/core.py", | |
| "target": "brain/browser_controller.py", | |
| "type": "imports" | |
| }, | |
| { | |
| "source": "brain/core.py", | |
| "target": "brain/coding_tools.py", | |
| "type": "imports" | |
| }, | |
| { | |
| "source": "brain/core.py", | |
| "target": "sovereign_memory.py", | |
| "type": "imports" | |
| }, | |
| { | |
| "source": "brain/core.py", | |
| "target": "brain/core.py::JarvisBrain", | |
| "type": "defines" | |
| }, | |
| { | |
| "source": "brain/core.py", | |
| "target": "mcp_client.py", | |
| "type": "imports" | |
| }, | |
| { | |
| "source": "brain/core.py", | |
| "target": "guardian_jobs.py", | |
| "type": "imports" | |
| }, | |
| { | |
| "source": "brain/core.py", | |
| "target": "obsidian_router.py", | |
| "type": "imports" | |
| }, | |
| { | |
| "source": "brain/core.py", | |
| "target": "db_util.py", | |
| "type": "imports" | |
| }, | |
| { | |
| "source": "brain/core.py", | |
| "target": "aegis_link.py", | |
| "type": "imports" | |
| }, | |
| { | |
| "source": "brain/core.py", | |
| "target": "remote_vision_service.py", | |
| "type": "imports" | |
| }, | |
| { | |
| "source": "brain/core.py", | |
| "target": "obsidian_vault.py", | |
| "type": "imports" | |
| }, | |
| { | |
| "source": "brain/core.py", | |
| "target": "imperial_obsidian_context.py", | |
| "type": "imports" | |
| }, | |
| { | |
| "source": "brain/core.py", | |
| "target": "cloud_obsidian_vector.py", | |
| "type": "imports" | |
| }, | |
| { | |
| "source": "brain/tool_runtime.py", | |
| "target": "brain/tool_runtime.py::RuntimeCtx", | |
| "type": "defines" | |
| }, | |
| { | |
| "source": "brain/tool_runtime.py", | |
| "target": "brain/tool_runtime.py::ToolRuntime", | |
| "type": "defines" | |
| }, | |
| { | |
| "source": "brain/tool_runtime.py", | |
| "target": "obsidian_router.py", | |
| "type": "imports" | |
| }, | |
| { | |
| "source": "brain/tool_runtime.py", | |
| "target": "obsidian_health.py", | |
| "type": "imports" | |
| }, | |
| { | |
| "source": "brain/__init__.py", | |
| "target": "brain/core.py", | |
| "type": "imports" | |
| }, | |
| { | |
| "source": "engines/base.py", | |
| "target": "engines/base.py::JarvisEngine", | |
| "type": "defines" | |
| }, | |
| { | |
| "source": "engines/gemini_audio.py", | |
| "target": "engines/gemini_audio.py::VoiceSession", | |
| "type": "defines" | |
| }, | |
| { | |
| "source": "engines/gemini_audio.py", | |
| "target": "engines/gemini_audio.py::GeminiAudioEngine", | |
| "type": "defines" | |
| }, | |
| { | |
| "source": "engines/gemini_voice_unified.py", | |
| "target": "engines/gemini_voice_unified.py::UnifiedVoiceSession", | |
| "type": "defines" | |
| }, | |
| { | |
| "source": "engines/hydra.py", | |
| "target": "db_util.py", | |
| "type": "imports" | |
| }, | |
| { | |
| "source": "engines/hydra.py", | |
| "target": "engines/hydra.py::HydraDirector", | |
| "type": "defines" | |
| }, | |
| { | |
| "source": "engines/macos.py", | |
| "target": "engines/macos.py::MacOSEngine", | |
| "type": "defines" | |
| }, | |
| { | |
| "source": "engines/windows.py", | |
| "target": "engines/windows.py::WindowsEngine", | |
| "type": "defines" | |
| }, | |
| { | |
| "source": "scratch/check_aegis_persona.py", | |
| "target": "sovereign_memory.py", | |
| "type": "imports" | |
| }, | |
| { | |
| "source": "scratch/check_aizen_info.py", | |
| "target": "sovereign_memory.py", | |
| "type": "imports" | |
| }, | |
| { | |
| "source": "scratch/check_rust_id.py", | |
| "target": "sovereign_memory.py", | |
| "type": "imports" | |
| }, | |
| { | |
| "source": "scratch/check_task_schema.py", | |
| "target": "sovereign_memory.py", | |
| "type": "imports" | |
| }, | |
| { | |
| "source": "scratch/db_check_v41.py", | |
| "target": "sovereign_memory.py", | |
| "type": "imports" | |
| }, | |
| { | |
| "source": "scratch/debug_gbb_auth.py", | |
| "target": "sovereign_memory.py", | |
| "type": "imports" | |
| }, | |
| { | |
| "source": "scratch/fetch_copilot_models.py", | |
| "target": "brain/__init__.py", | |
| "type": "imports" | |
| }, | |
| { | |
| "source": "scratch/fix_persona_tts_json.py", | |
| "target": "sovereign_memory.py", | |
| "type": "imports" | |
| }, | |
| { | |
| "source": "scratch/fix_shadow_brain_tts_flag.py", | |
| "target": "sovereign_memory.py", | |
| "type": "imports" | |
| }, | |
| { | |
| "source": "scratch/full_aizen_record.py", | |
| "target": "sovereign_memory.py", | |
| "type": "imports" | |
| }, | |
| { | |
| "source": "scratch/list_all_guardians.py", | |
| "target": "sovereign_memory.py", | |
| "type": "imports" | |
| }, | |
| { | |
| "source": "scratch/patch_rust_brain_db.py", | |
| "target": "sovereign_memory.py", | |
| "type": "imports" | |
| }, | |
| { | |
| "source": "scratch/test_resolver.py", | |
| "target": "scratch/test_resolver.py::MockRequest", | |
| "type": "defines" | |
| }, | |
| { | |
| "source": "scratch/test_resolver.py", | |
| "target": "scratch/test_resolver.py::MockCluster", | |
| "type": "defines" | |
| }, | |
| { | |
| "source": "scratch/test_search_parity.py", | |
| "target": "brain/__init__.py", | |
| "type": "imports" | |
| }, | |
| { | |
| "source": "scratch/test_server_run.py", | |
| "target": "web_server.py", | |
| "type": "imports" | |
| }, | |
| { | |
| "source": "scratch/test_server_run.py", | |
| "target": "jarvis_run.py", | |
| "type": "imports" | |
| }, | |
| { | |
| "source": "scratch/verify_brain_direct_v2.py", | |
| "target": "brain/__init__.py", | |
| "type": "imports" | |
| }, | |
| { | |
| "source": "scratch/verify_brain_direct_v3.py", | |
| "target": "brain/__init__.py", | |
| "type": "imports" | |
| }, | |
| { | |
| "source": "scratch/verify_brain_direct_v4.py", | |
| "target": "brain/__init__.py", | |
| "type": "imports" | |
| }, | |
| { | |
| "source": "scratch/verify_copilot_transport.py", | |
| "target": "brain/__init__.py", | |
| "type": "imports" | |
| }, | |
| { | |
| "source": "scratch/verify_dynamic_config.py", | |
| "target": "brain/__init__.py", | |
| "type": "imports" | |
| }, | |
| { | |
| "source": "scratch/verify_job_routing.py", | |
| "target": "brain/__init__.py", | |
| "type": "imports" | |
| }, | |
| { | |
| "source": "scratch/verify_unified_brain.py", | |
| "target": "scratch/verify_unified_brain.py::MockBrain", | |
| "type": "defines" | |
| }, | |
| { | |
| "source": "scripts/build_graph.py", | |
| "target": "scripts/build_graph.py::ProjectGraphBuilder", | |
| "type": "defines" | |
| }, | |
| { | |
| "source": "scripts/seed_cloud_obsidian.py", | |
| "target": "cloud_obsidian_vault.py", | |
| "type": "imports" | |
| }, | |
| { | |
| "source": "services/brain_service.py", | |
| "target": "sovereign_memory.py", | |
| "type": "imports" | |
| }, | |
| { | |
| "source": "services/brain_service.py", | |
| "target": "brain/__init__.py", | |
| "type": "imports" | |
| }, | |
| { | |
| "source": "services/brain_service.py", | |
| "target": "aegis_link.py", | |
| "type": "imports" | |
| }, | |
| { | |
| "source": "services/brain_service.py", | |
| "target": "obsidian_health.py", | |
| "type": "imports" | |
| }, | |
| { | |
| "source": "services/chat_service.py", | |
| "target": "session_manager.py", | |
| "type": "imports" | |
| }, | |
| { | |
| "source": "services/chat_service.py", | |
| "target": "sovereign_memory.py", | |
| "type": "imports" | |
| }, | |
| { | |
| "source": "services/memory_extraction.py", | |
| "target": "sovereign_memory.py", | |
| "type": "imports" | |
| }, | |
| { | |
| "source": "services/memory_extraction.py", | |
| "target": "aegis_link.py", | |
| "type": "imports" | |
| }, | |
| { | |
| "source": "implementation_plan.md", | |
| "target": "sovereign_engine.py", | |
| "type": "references" | |
| }, | |
| { | |
| "source": "implementation_plan.md", | |
| "target": "verify_agent_loop.py", | |
| "type": "references" | |
| }, | |
| { | |
| "source": "implementation_plan.md", | |
| "target": "blueprints/chat_routes.py", | |
| "type": "references" | |
| }, | |
| { | |
| "source": "implementation_plan.md", | |
| "target": "web_server.py", | |
| "type": "references" | |
| }, | |
| { | |
| "source": "implementation_plan.md", | |
| "target": "brain/core.py", | |
| "type": "references" | |
| }, | |
| { | |
| "source": "implementation_plan.md", | |
| "target": "mcp_client.py", | |
| "type": "references" | |
| }, | |
| { | |
| "source": "implementation_plan_guardian_jobs.md", | |
| "target": "blueprints/chat_routes.py", | |
| "type": "references" | |
| }, | |
| { | |
| "source": "implementation_plan_guardian_jobs.md", | |
| "target": "brain/core.py", | |
| "type": "references" | |
| }, | |
| { | |
| "source": "implementation_plan_job_editor.md", | |
| "target": "guardian_jobs.py", | |
| "type": "references" | |
| }, | |
| { | |
| "source": "implementation_plan_job_editor.md", | |
| "target": "blueprints/chat_routes.py", | |
| "type": "references" | |
| }, | |
| { | |
| "source": "implementation_plan_job_editor.md", | |
| "target": "brain/core.py", | |
| "type": "references" | |
| }, | |
| { | |
| "source": "implementation_plan_memory_extraction.md", | |
| "target": "services/memory_extraction.py", | |
| "type": "references" | |
| }, | |
| { | |
| "source": "implementation_plan_memory_extraction.md", | |
| "target": "verify_recall_floor.py", | |
| "type": "references" | |
| }, | |
| { | |
| "source": "implementation_plan_memory_extraction.md", | |
| "target": "verify_memory_extraction.py", | |
| "type": "references" | |
| }, | |
| { | |
| "source": "implementation_plan_memory_extraction.md", | |
| "target": "services/chat_service.py", | |
| "type": "references" | |
| }, | |
| { | |
| "source": "implementation_plan_tool_runtime.md", | |
| "target": "brain/tool_runtime.py", | |
| "type": "references" | |
| }, | |
| { | |
| "source": "implementation_plan_tool_runtime.md", | |
| "target": "verify_tool_runtime.py", | |
| "type": "references" | |
| }, | |
| { | |
| "source": "implementation_plan_tool_runtime.md", | |
| "target": "brain/coding_tools.py", | |
| "type": "references" | |
| }, | |
| { | |
| "source": "implementation_plan_tool_runtime.md", | |
| "target": "brain/core.py", | |
| "type": "references" | |
| }, | |
| { | |
| "source": "docs/tts/README_TTS_TEST.md", | |
| "target": "web_server.py", | |
| "type": "references" | |
| } | |
| ] | |
| }; | |
| const width = window.innerWidth; | |
| const height = window.innerHeight; | |
| const svg = d3.select("#canvas") | |
| .attr("viewBox", [0, 0, width, height]); | |
| const g = svg.append("g"); | |
| // ์ค/ํฌ ์ค์ | |
| svg.call(d3.zoom() | |
| .scaleExtent([0.1, 8]) | |
| .on("zoom", (event) => { | |
| g.attr("transform", event.transform); | |
| })); | |
| // ์์ ๋งต | |
| const colorMap = { | |
| "file": "#38bdf8", | |
| "document": "#fb7185", | |
| "class": "#c084fc" | |
| }; | |
| // ์๋ฎฌ๋ ์ด์ ์ค์ | |
| const simulation = d3.forceSimulation(graph.nodes) | |
| .force("link", d3.forceLink(graph.links).id(d => d.id).distance(80)) | |
| .force("charge", d3.forceManyBody().strength(-120)) | |
| .force("center", d3.forceCenter(width / 2, height / 2)) | |
| .force("collision", d3.forceCollide().radius(25)); | |
| // ๊ฐ์ (Edges) ๋๋ก์ | |
| const link = g.append("g") | |
| .selectAll("line") | |
| .data(graph.links) | |
| .join("line") | |
| .attr("class", "link"); | |
| // ๋ ธ๋(Nodes) ๋๋ก์ | |
| const node = g.append("g") | |
| .selectAll("circle") | |
| .data(graph.nodes) | |
| .join("circle") | |
| .attr("class", "node") | |
| .attr("r", d => d.type === "file" ? 8 : (d.type === "document" ? 7 : 5)) | |
| .attr("fill", d => colorMap[d.type] || "#94a3b8") | |
| .attr("stroke", "#0f1016") | |
| .attr("stroke-width", 1.5) | |
| .call(drag(simulation)); | |
| // ๋ผ๋ฒจ ์ถ๊ฐ | |
| const label = g.append("g") | |
| .selectAll("text") | |
| .data(graph.nodes) | |
| .join("text") | |
| .attr("class", "label") | |
| .attr("dx", 12) | |
| .attr("dy", ".35em") | |
| .text(d => d.label); | |
| // ์ด๋ฒคํธ ๋ฆฌ์ค๋ | |
| node.on("click", (event, d) => { | |
| showDetails(d); | |
| event.stopPropagation(); | |
| }); | |
| svg.on("click", () => { | |
| d3.select("#details").style("display", "none"); | |
| }); | |
| simulation.on("tick", () => { | |
| link | |
| .attr("x1", d => d.source.x) | |
| .attr("y1", d => d.source.y) | |
| .attr("x2", d => d.target.x) | |
| .attr("y2", d => d.target.y); | |
| node | |
| .attr("cx", d => d.x) | |
| .attr("cy", d => d.y); | |
| label | |
| .attr("x", d => d.x) | |
| .attr("y", d => d.y); | |
| }); | |
| function showDetails(d) { | |
| const details = d3.select("#details"); | |
| d3.select("#detail-title").text(d.label); | |
| let html = ` | |
| <div class="meta-item"> | |
| <div class="meta-label">ID / ์๋ ๊ฒฝ๋ก</div> | |
| <div class="meta-value">${d.id}</div> | |
| </div> | |
| <div class="meta-item"> | |
| <div class="meta-label">์ ํ</div> | |
| <div class="meta-value">${d.type.toUpperCase()}</div> | |
| </div> | |
| `; | |
| if (d.type === "class" && d.details.methods) { | |
| html += ` | |
| <div class="meta-item"> | |
| <div class="meta-label">๋ถ๋ชจ ์์ค ํ์ผ</div> | |
| <div class="meta-value">${d.details.file}</div> | |
| </div> | |
| <div class="meta-item"> | |
| <div class="meta-label">ํฌํจ๋ ๋ฉ์๋ ๋ชฉ๋ก</div> | |
| <div class="meta-value">${d.details.methods.join(', ') || '์์'}</div> | |
| </div> | |
| `; | |
| } else if (d.details.size) { | |
| html += ` | |
| <div class="meta-item"> | |
| <div class="meta-label">ํ์ผ ํฌ๊ธฐ</div> | |
| <div class="meta-value">${d.details.size.toLocaleString()} bytes</div> | |
| </div> | |
| `; | |
| } | |
| d3.select("#detail-content").html(html); | |
| details.style("display", "block"); | |
| } | |
| function drag(simulation) { | |
| return d3.drag() | |
| .on("start", (event) => { | |
| if (!event.active) simulation.alphaTarget(0.3).restart(); | |
| event.subject.fx = event.subject.x; | |
| event.subject.fy = event.subject.y; | |
| }) | |
| .on("drag", (event) => { | |
| event.subject.fx = event.subject.x; | |
| event.subject.fy = event.subject.y; | |
| }) | |
| .on("end", (event) => { | |
| if (!event.active) simulation.alphaTarget(0); | |
| event.subject.fx = null; | |
| event.subject.fy = null; | |
| }); | |
| } | |
| </script> | |
| </body> | |
| </html> | |