10 KiB
10 KiB
phase, plan, type, wave, depends_on, files_modified, autonomous, requirements, must_haves
| phase | plan | type | wave | depends_on | files_modified | autonomous | requirements | must_haves | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 03-orchestration | 03 | execute | 3 |
|
|
true |
|
|
Purpose: Create the central command router that receives chat messages, routes them through session management and command execution, handles approvals and progress, and returns formatted responses. Output: Orchestrator class with handle_message() entry point, SKILL.md update with orchestrator reference.
<execution_context> @/home/starmen1265/.claude/get-shit-done/workflows/execute-plan.md @/home/starmen1265/.claude/get-shit-done/templates/summary.md </execution_context>
@.planning/PROJECT.md @.planning/ROADMAP.md @.planning/STATE.md @.planning/phases/03-orchestration/03-CONTEXT.md @.planning/phases/03-orchestration/03-RESEARCH.md @.planning/phases/03-orchestration/03-01-PLAN.md @.planning/phases/03-orchestration/03-02-PLAN.mdFrom src/gsd_openclaw/command_executor.py (Wave 1):
@dataclass
class CommandResult:
output: str
completed: bool
has_error: bool
error_type: Optional[str]
class CommandExecutor:
DEFAULT_TIMEOUT: float = 60.0
def execute(self, session: TmuxSession, command: str, timeout: float = None) -> CommandResult: ...
From src/gsd_openclaw/approval_handler.py (Wave 2):
@dataclass
class ApprovalState:
approval_id: str
session_id: str
project_name: str
context: dict
created_at: float
class ApprovalHandler:
def detect_approval_request(self, output: str) -> Optional[dict]: ...
def create_approval_card(self, context: dict, session_id: str, project_name: str) -> dict: ...
def handle_callback(self, callback_data: dict) -> str: ...
From src/gsd_openclaw/progress_monitor.py (Wave 2):
@dataclass
class ProgressInfo:
type: str # percentage, fraction, phase, completion
value: Optional[int] = None
current: Optional[int] = None
total: Optional[int] = None
class ProgressMonitor:
def extract_progress(self, output: str) -> Optional[ProgressInfo]: ...
def should_send_update(self) -> bool: ...
def create_progress_card(self, progress: ProgressInfo, message: str) -> dict: ...
From src/gsd_openclaw/tmux_session.py:
class TmuxSessionManager:
def get_session(self, project_name: str) -> Optional[TmuxSession]: ...
def create_session(self, project_name: str, ...) -> TmuxSession: ...
From src/gsd_openclaw/response_formatter.py:
class FeishuResponseFormatter:
def format_success(self, title: str, content: str, buttons=None) -> dict: ...
def format_error(self, title: str, content: str, buttons=None) -> dict: ...
def format_info(self, title: str, content: str, buttons=None) -> dict: ...
Use real component instances where possible, mock only tmux server.
Ensure all tests pass with full coverage of integration paths.
pytest tests/test_orchestrator.py -v --cov=src/gsd_openclaw/orchestrator
Integration tests added and passing, orchestrator coverage >90%
Run full test suite for Phase 3:
```bash
pytest tests/test_command_executor.py tests/test_approval_handler.py tests/test_progress_monitor.py tests/test_orchestrator.py -v --cov=src/gsd_openclaw
```
All tests must pass. Phase 3 coverage should be >85%.
<success_criteria>
- Orchestrator integrates all Phase 3 components
- handle_message() provides complete command routing flow
- Auto-session-creation works per CONTEXT.md decision
- Error handling returns formatted error cards
- Approval workflow integrates with callback handling
- All exports added to __init__.py
- SKILL.md documents orchestrator integration </success_criteria>