Commit Graph

13 Commits

Author SHA1 Message Date
starmen1265 9e8fc81469 feat(04-02): implement _handle_new_project with UserContextManager
- Add UserContextManager for per-user project tracking
- Add _handle_new_project method that pre-creates sessions
- Update user context after new-project creation
- Route new-project command in handle_message
- Add LONG_COMMANDS class attribute for timeout control

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 19:11:32 +08:00
starmen1265 31823ba582 feat(03-03): update SKILL.md and exports
- Add Orchestrator to __init__.py exports
- Update SKILL.md with "How It Works" section explaining orchestrator.py entry point
- Document command routing and approval workflow

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 19:11:32 +08:00
starmen1265 6d9bd902ea feat(03-03): implement Orchestrator class
- Add Orchestrator class with handle_message() and handle_callback() entry points
- Command parsing via regex: /gsd:* pattern extraction
- Auto-session-creation per CONTEXT.md decision
- Error handling with try/except returning format_error() cards
- Approval detection integration with ApprovalHandler
- Output truncation to 2000 chars for Feishu card limits
- 18 tests passing with full coverage

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 19:11:32 +08:00
starmen1265 48222d28df feat(03-02): export ApprovalHandler and ProgressMonitor from package
Add exports for:
- ApprovalHandler, ApprovalState
- ProgressMonitor, ProgressInfo

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 19:11:31 +08:00
starmen1265 16ddc3edaa feat(03-02): implement ProgressMonitor class
- Add ProgressInfo dataclass for progress data
- Add ProgressMonitor class with:
  - PROGRESS_PATTERNS for extraction (percentage, fraction, phase, completion)
  - extract_progress() to find progress indicators in output
  - should_send_update() with 60 second throttling
  - create_progress_card() for Feishu card formatting
- Fix fraction pattern to allow content after fraction (e.g., [3/5 tasks])
- Fix should_send_update() to return False on first call
- Fix test assertions to use kwargs instead of positional args

All 7 tests pass for progress monitoring.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 19:11:31 +08:00
starmen1265 ddd0477498 feat(03-02): implement ApprovalHandler class
- Add ApprovalState dataclass for approval workflow state
- Add ApprovalHandler class with:
  - APPROVAL_PATTERNS for detection (AskUserQuestion, ExitPlanMode, 需要确认, Please confirm)
  - detect_approval_request() to find approval requests in output
  - create_approval_card() with confirm/reject buttons using CardButton
  - handle_callback() to process approval actions
  - In-memory pending_approvals cache
- Fix test assertions to use kwargs instead of positional args

All 8 tests pass for approval handling.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 19:11:31 +08:00
starmen1265 ff0846c820 feat(03-01): export CommandExecutor classes from package
Add CommandResult, OutputCapture, and CommandExecutor to __init__.py
exports for public API access.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 19:11:31 +08:00
starmen1265 40cc92ec6e feat(03-01): implement CommandExecutor and OutputCapture classes
- Add CommandResult dataclass for storing execution results
- Add OutputCapture class with prompt detection and stabilization
- Add CommandExecutor class for command execution and error detection
- Support common shell prompts ($, ❯, ➜, >)
- Detect errors in both English and Chinese
- Use 60s default timeout from CONTEXT.md decision
- Mock-based testing (no real tmux required)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 19:11:31 +08:00
starmen1265 9d738eeec2 feat(02-03): implement PromptLoader class
- PromptLoader loads and renders markdown templates
- get() returns raw template content (cached)
- render() substitutes {{variable}} placeholders
- Missing variables left as-is (safe substitution)
- Default template_dir points to prompts/ directory

All 10 tests pass.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 14:30:54 +08:00
starmen1265 662ee48533 feat(02-02): implement FeishuResponseFormatter class
- format_success() creates card with green theme
- format_error() creates card with red theme
- format_info() creates card with blue theme
- format_paginated() adds [N/M] marker
- _build_card() creates three-zone structure (header/elements/actions)
- _build_actions() creates interactive button elements

All 6 tests pass. Card JSON uses schema 2.0 with lark_md content.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 14:30:54 +08:00
starmen1265 915e97ffe1 feat(02-03): add prompt template files
- prompts/__init__.py: Package marker
- context_recovery.md: Session context recovery prompt
- command_mapping.md: User input to GSD command mapping
- error_recovery.md: User-friendly error message generation

All templates use {{variable}} syntax for substitution.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 14:30:54 +08:00
starmen1265 a155d93dd8 feat(02-02): add CardTheme enum and CardButton dataclass
- CardTheme enum with SUCCESS (green), ERROR (red), INFO (blue), WARNING (orange)
- CardButton dataclass with text, value dict, and button_type

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 14:30:54 +08:00
starmen1265 96f06f3751 feat: 添加 gsd-openclaw 技能
PR Test / lint (pull_request) Successful in 2s
2026-03-11 10:41:01 +08:00