Compare commits

..

4 Commits

7 changed files with 8 additions and 14 deletions

View File

@@ -12,4 +12,6 @@
## Phase 3: Approval UX Modal [checkpoint: 21157f9] ## Phase 3: Approval UX Modal [checkpoint: 21157f9]
- [x] Task: Design the "Approve Worker Spawn" modal in DearPyGui. 21157f9 - [x] Task: Design the "Approve Worker Spawn" modal in DearPyGui. 21157f9
- [x] Task: Populate the modal with the target role, the exact prompt, and a read-only view of the specific file context. 21157f9 - [x] Task: Populate the modal with the target role, the exact prompt, and a read-only view of the specific file context. 21157f9
- [x] Task: Wire the "Approve", "Modify", and "Reject" buttons to resume or cancel the intercepted spawn. 21157f9 - [x] Task: Wire the "Approve", "Modify", and "Reject" buttons to resume or cancel the intercepted spawn. 21157f9
## Phase: Review Fixes
- [x] Task: Apply review suggestions 82f73e7

View File

@@ -27,7 +27,7 @@
## Configuration & Tooling ## Configuration & Tooling
- **tree-sitter & tree-sitter-python:** For deterministic AST parsing and automated generation of curated "Skeleton Views" (signatures and docstrings) to minimize context bloat for sub-agents. - **ast (Standard Library):** For deterministic AST parsing and automated generation of curated "Skeleton Views" (signatures and docstrings) to minimize context bloat for sub-agents.
- **pydantic / dataclasses:** For defining strict state schemas (Tracks, Tickets) used in linear orchestration. - **pydantic / dataclasses:** For defining strict state schemas (Tracks, Tickets) used in linear orchestration.
- **tomli-w:** For writing TOML configuration files. - **tomli-w:** For writing TOML configuration files.
- **tomllib:** For native TOML parsing (Python 3.11+). - **tomllib:** For native TOML parsing (Python 3.11+).

View File

@@ -18,12 +18,6 @@ This file tracks all major tracks for the project. Each track has its own detail
- [~] **Track: get gui_2 working with latest changes to the project.** - [~] **Track: get gui_2 working with latest changes to the project.**
*Link: [./tracks/gui2_feature_parity_20260223/](./tracks/gui2_feature_parity_20260223/)* *Link: [./tracks/gui2_feature_parity_20260223/](./tracks/gui2_feature_parity_20260223/)*
---
- [x] **Track: Tiered Context Scoping & HITL Approval**
*Link: [./tracks/tiered_context_scoping_hitl_approval/](./tracks/tiered_context_scoping_hitl_approval/)*
--- ---
- [x] **Track: MMA Dashboard Visualization Overhaul** - [x] **Track: MMA Dashboard Visualization Overhaul**

View File

@@ -1,6 +1,8 @@
import ai_client import ai_client
import json import json
import asyncio import asyncio
import threading
import time
from typing import List, Optional, Tuple from typing import List, Optional, Tuple
from dataclasses import asdict from dataclasses import asdict
import events import events
@@ -146,9 +148,6 @@ def confirm_execution(payload: str, event_queue: events.AsyncEventQueue, ticket_
""" """
Pushes an approval request to the GUI and waits for response. Pushes an approval request to the GUI and waits for response.
""" """
import threading
import time
import asyncio
# We use a list container so the GUI can inject the actual Dialog object back to us # We use a list container so the GUI can inject the actual Dialog object back to us
# since the dialog is created in the GUI thread. # since the dialog is created in the GUI thread.
dialog_container = [None] dialog_container = [None]
@@ -187,9 +186,6 @@ def confirm_spawn(role: str, prompt: str, context_md: str, event_queue: events.A
Pushes a spawn approval request to the GUI and waits for response. Pushes a spawn approval request to the GUI and waits for response.
Returns (approved, modified_prompt, modified_context) Returns (approved, modified_prompt, modified_context)
""" """
import threading
import time
import asyncio
dialog_container = [None] dialog_container = [None]
@@ -238,6 +234,8 @@ def confirm_spawn(role: str, prompt: str, context_md: str, event_queue: events.A
return approved, modified_prompt, modified_context return approved, modified_prompt, modified_context
return False, prompt, context_md return False, prompt, context_md
def run_worker_lifecycle(ticket: Ticket, context: WorkerContext, context_files: List[str] = None, event_queue: events.AsyncEventQueue = None, engine: Optional['ConductorEngine'] = None, md_content: str = ""): def run_worker_lifecycle(ticket: Ticket, context: WorkerContext, context_files: List[str] = None, event_queue: events.AsyncEventQueue = None, engine: Optional['ConductorEngine'] = None, md_content: str = ""):
""" """
Simulates the lifecycle of a single agent working on a ticket. Simulates the lifecycle of a single agent working on a ticket.