conductor(tech-stack): update tool count 26->45, add api_hooks + command_palette, link 8 new per-file guides
This commit is contained in:
+29
-2
@@ -42,11 +42,20 @@
|
||||
- **src/tool_bias.py:** Implements the `ToolBiasEngine` for semantic tool description nudging and dynamic tooling strategy generation.
|
||||
|
||||
- **src/tool_presets.py:** Extends `ToolPresetManager` to handle nested `Tool` models, weights, and global `BiasProfile` persistence within `tool_presets.toml`.
|
||||
- **src/mcp_client.py:** Implements the native tool registry and the `ExternalMCPManager` for orchestrating third-party Model Context Protocol servers. Provides dynamic tool discovery and validation.
|
||||
- **src/mcp_client.py:** Implements the native tool registry (45 tools) and the `ExternalMCPManager` for orchestrating third-party Model Context Protocol servers. Provides dynamic tool discovery and validation. See [docs/guide_mcp_client.md](../docs/guide_mcp_client.md) for the complete 3-layer security model (Allowlist → Validate → Resolve) and tool inventory.
|
||||
- **StdioMCPServer:** Manages local MCP servers via asynchronous subprocess pipes (stdin/stdout/stderr).
|
||||
- **RemoteMCPServer (SSE):** Provides a foundation for remote MCP integration via Server-Sent Events.
|
||||
- **JSON-RPC 2.0 Engine:** Handles asynchronous message routing, request/response matching, and error handling for all external MCP communication.
|
||||
- **AST-Based C/C++ Tools:** Provides `ts_c_get_skeleton`, `ts_cpp_get_skeleton`, `ts_c_get_code_outline`, and `ts_cpp_get_code_outline` for structural analysis of C/C++ codebases using tree-sitter.
|
||||
- **AST-Based Python Tools (15):** `py_get_skeleton`, `py_get_code_outline`, `py_get_definition`, `py_update_definition`, `py_get_signature`, `py_set_signature`, `py_get_class_summary`, `py_get_var_declaration`, `py_set_var_declaration`, `py_get_hierarchy`, `py_get_docstring`, `py_get_imports`, `py_find_usages`, `py_check_syntax`, plus structural mutators `py_remove_def`, `py_add_def`, `py_move_def`, `py_region_wrap`.
|
||||
- **Network Tools:** `web_search` (DuckDuckGo HTML scrape), `fetch_url` (HTML → text).
|
||||
- **Beads Tools (4):** `bd_list`, `bd_create`, `bd_update`, `bd_ready` — interface to the Beads/Dolt backend.
|
||||
|
||||
- **src/api_hooks.py + src/api_hook_client.py:** Implements the Hook API and Python client wrapper for external automation. See [docs/guide_api_hooks.md](../docs/guide_api_hooks.md).
|
||||
- **HookServer:** FastAPI/Uvicorn server on `127.0.0.1:8999`, started by `AppController` when `--enable-test-hooks` is set. Exposes 8+ REST endpoints (`/status`, `/api/gui`, `/api/ask`, `/api/mma_status`, `/api/performance`, `/api/comms`, `/api/diagnostics`).
|
||||
- **ApiHookClient:** Python client with retry logic, health-check polling, and timeout configuration. Used by all `live_gui` tests, the WorkerPool, and external scripts.
|
||||
- **`/api/ask` Protocol:** Non-blocking, ID-based challenge/response for synchronous HITL approvals from external contexts.
|
||||
- **`_predefined_callbacks` and `_gettable_fields`:** AppController-owned registries that the Hook API consumes to expose any App method as a `custom_callback` action.
|
||||
|
||||
- **src/rag_engine.py:** Core RAG implementation managing the vector store lifecycle, chunking strategies (character-based and AST-aware), and multi-provider search. Integrates with **ChromaDB** for local persistence and provides a bridge for external MCP retrieval tools.
|
||||
|
||||
@@ -69,7 +78,7 @@
|
||||
- **pywin32:** For custom OS window frame manipulation on Windows (e.g., minimizing, maximizing, closing, and dragging the borderless ImGui window).
|
||||
- **pytest:** For unit and integration testing, leveraging custom fixtures for live GUI verification.
|
||||
- **Taxonomy & Artifacts:** Enforces a clean root by organizing core implementation into a `src/` directory, and redirecting session logs and artifacts to configurable directories (defaulting to `logs/sessions/` and `scripts/generated/`). Temporary test data and test logs are siloed in `tests/artifacts/` and `tests/logs/`.
|
||||
- **ApiHookClient:** A dedicated IPC client for automated GUI interaction and state inspection. Now supports simulating complex interactions including `drag` and `right_click` operations.
|
||||
- **ApiHookClient:** A dedicated IPC client for automated GUI interaction and state inspection. Now supports simulating complex interactions including `drag` and `right_click` operations. Full API surface: `click()`, `set_value()`, `select_tab()`, `select_list_item()`, `push_event()`, `get_value()`, `get_status()`, `reset_session()`, `wait_for_event()`. See [docs/guide_api_hooks.md](../docs/guide_api_hooks.md) for the complete method reference and `/api/ask` protocol.
|
||||
- **mma-exec / mma.ps1:** Python-based execution engine and PowerShell wrapper for managing the 4-Tier MMA hierarchy and automated documentation mapping.
|
||||
- **dag_engine.py:** A native Python utility implementing `TrackDAG` and `ExecutionEngine` for dependency resolution, cycle detection, transitive blocking propagation, and programmable task execution loops. Optimized using **Kahn's Algorithm** and **iterative DFS** to eliminate recursion overhead and provide $O(V+E)$ performance.
|
||||
- **multi_agent_conductor.py:** Orchestrates the concurrent execution of implementation tracks using a non-blocking `ConductorEngine` and a thread-safe `WorkerPool`. Employs configurable concurrency limits and thread-local context isolation to manage multi-agent state.
|
||||
@@ -90,5 +99,23 @@
|
||||
- **UI Delegation Pattern:** Employs module-level rendering functions decoupled from the `App` class. This enables selective hot-reloading of UI logic by swapping function references at runtime while maintaining a stable state object (`app: App`).
|
||||
- **Manual Hot-Reload Pipeline:** Implements a `HotReloader` utility that manages module invalidation and state preservation, triggered by keyboard shortcuts (Ctrl+Alt+R) or GUI controls.
|
||||
|
||||
- **src/command_palette.py + src/commands.py:** Implements the keyboard-driven Command Palette (Ctrl+Shift+P). See [docs/guide_command_palette.md](../docs/guide_command_palette.md) and [docs/guide_gui_2.md](../docs/guide_gui_2.md#command-palette).
|
||||
- **CommandRegistry:** Decorator-based command registration (`@registry.register`). 32+ built-in commands including `_toggle_command_palette`, `_open_command_palette`, theme switching, view presets, persona application.
|
||||
- **fuzzy_match:** Subsequence matching with score (consecutive bonus, start-of-word bonus, length penalty).
|
||||
- **render_palette_modal:** Centered popup with input field, keyboard navigation (Up/Down/Enter/Esc), and live result filtering.
|
||||
- **defensive try/except wrapping:** All action callbacks wrapped to prevent GUI crashes from buggy commands.
|
||||
|
||||
## Per-Source-File Deep Dives
|
||||
|
||||
For the largest source files, consult the dedicated guides in `docs/`:
|
||||
- **[docs/guide_gui_2.md](../docs/guide_gui_2.md)** — `src/gui_2.py` (260KB main GUI)
|
||||
- **[docs/guide_ai_client.md](../docs/guide_ai_client.md)** — `src/ai_client.py` (116KB multi-provider LLM)
|
||||
- **[docs/guide_api_hooks.md](../docs/guide_api_hooks.md)** — `src/api_hooks.py` + `src/api_hook_client.py` (38KB + 31KB Hook API)
|
||||
- **[docs/guide_mcp_client.md](../docs/guide_mcp_client.md)** — `src/mcp_client.py` (81KB, 45 tools)
|
||||
- **[docs/guide_app_controller.md](../docs/guide_app_controller.md)** — `src/app_controller.py` (166KB headless controller)
|
||||
- **[docs/guide_multi_agent_conductor.md](../docs/guide_multi_agent_conductor.md)** — `src/multi_agent_conductor.py` + `src/dag_engine.py` (28KB + 10KB MMA)
|
||||
- **[docs/guide_models.md](../docs/guide_models.md)** — `src/models.py` (132KB data models)
|
||||
- **[docs/guide_testing.md](../docs/guide_testing.md)** — Test suite architecture (251 files, 7 conftest fixtures)
|
||||
|
||||
ter/ImGui) and the business logic (AppController). All platform-native UI actions, such as file and directory selection, are handled exclusively within the GUI layer.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user