feat(design): add DesignAgent using Gemini CLI for UI/UX design tasks (#46)#47
feat(design): add DesignAgent using Gemini CLI for UI/UX design tasks (#46)#47trixy-the-ai-bot wants to merge 3 commits into
Conversation
…#46) - Add GeminiQuotaMixin (gemini_quota.py) for rate-limit detection and cooldown handling, parallel to ClaudeQuotaMixin. Detects quota/429/ RESOURCE_EXHAUSTED errors and parses "Retry after Xs" reset times. - Add DesignTask (design_task.py) that watches for the ready-for-design label, posts design specs as <!-- loony-design --> comments, iterates on user feedback, and hands off to PlanningTask when ready-for-planning is added. Includes _extract_image_urls() for markdown and HTML images. - Add DesignAgent (design_agent.py) that invokes `gemini --yolo -p` with image files appended as @path references for multimodal support. Uses start_new_session=True for signal isolation. - Add ready-for-design label to REQUIRED_LABELS in github.py. - Wire DesignTask (priority=25) into orchestrator.py TASK_CLASSES and register DesignAgent in the cli.py worker command. - Add 30 tests in test_design_agent.py covering: quota error detection, retry-after parsing, cooldown behaviour, image URL extraction (markdown and HTML), label transition logic, and signal isolation. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
Merge conflicts resolved. The merge conflict in |
|
Merge conflicts resolved. The merge conflict in |
|
Failed to resolve merge conflicts: Agent exited with code 1 Manual intervention is required. |
|
Failed to resolve merge conflicts: Agent exited with code 1 Manual intervention is required. |
|
Failed to resolve merge conflicts: Agent exited with code 1 Manual intervention is required. |
|
Failed to resolve merge conflicts: Agent exited with code 1 Manual intervention is required. |
|
Failed to resolve merge conflicts: Agent exited with code 1 Manual intervention is required. |
|
Failed to resolve merge conflicts: Agent exited with code 1 Manual intervention is required. |
|
Failed to resolve merge conflicts: Agent exited with code 1 Manual intervention is required. |
29 similar comments
|
Failed to resolve merge conflicts: Agent exited with code 1 Manual intervention is required. |
|
Failed to resolve merge conflicts: Agent exited with code 1 Manual intervention is required. |
|
Failed to resolve merge conflicts: Agent exited with code 1 Manual intervention is required. |
|
Failed to resolve merge conflicts: Agent exited with code 1 Manual intervention is required. |
|
Failed to resolve merge conflicts: Agent exited with code 1 Manual intervention is required. |
|
Failed to resolve merge conflicts: Agent exited with code 1 Manual intervention is required. |
|
Failed to resolve merge conflicts: Agent exited with code 1 Manual intervention is required. |
|
Failed to resolve merge conflicts: Agent exited with code 1 Manual intervention is required. |
|
Failed to resolve merge conflicts: Agent exited with code 1 Manual intervention is required. |
|
Failed to resolve merge conflicts: Agent exited with code 1 Manual intervention is required. |
|
Failed to resolve merge conflicts: Agent exited with code 1 Manual intervention is required. |
|
Failed to resolve merge conflicts: Agent exited with code 1 Manual intervention is required. |
|
Failed to resolve merge conflicts: Agent exited with code 1 Manual intervention is required. |
|
Failed to resolve merge conflicts: Agent exited with code 1 Manual intervention is required. |
|
Failed to resolve merge conflicts: Agent exited with code 1 Manual intervention is required. |
|
Failed to resolve merge conflicts: Agent exited with code 1 Manual intervention is required. |
|
Failed to resolve merge conflicts: Agent exited with code 1 Manual intervention is required. |
|
Failed to resolve merge conflicts: Agent exited with code 1 Manual intervention is required. |
|
Failed to resolve merge conflicts: Agent exited with code 1 Manual intervention is required. |
|
Failed to resolve merge conflicts: Agent exited with code 1 Manual intervention is required. |
|
Failed to resolve merge conflicts: Agent exited with code 1 Manual intervention is required. |
|
Failed to resolve merge conflicts: Agent exited with code 1 Manual intervention is required. |
|
Failed to resolve merge conflicts: Agent exited with code 1 Manual intervention is required. |
|
Failed to resolve merge conflicts: Agent exited with code 1 Manual intervention is required. |
|
Failed to resolve merge conflicts: Agent exited with code 1 Manual intervention is required. |
|
Failed to resolve merge conflicts: Agent exited with code 1 Manual intervention is required. |
|
Failed to resolve merge conflicts: Agent exited with code 1 Manual intervention is required. |
|
Failed to resolve merge conflicts: Agent exited with code 1 Manual intervention is required. |
|
Failed to resolve merge conflicts: Agent exited with code 1 Manual intervention is required. |
Summary
GeminiQuotaMixinfor Gemini-specific rate-limit detection and cooldown, parallel toClaudeQuotaMixinDesignTaskthat watchesready-for-designissues, posts<!-- loony-design -->design specs, iterates on feedback, and hands off to planning whenready-for-planningis addedDesignAgentthat runsgemini --yolo -pwith multimodal image support via@pathsyntaxDesignTask(priority=25, between PRReview=20 and Planning=30) into orchestrator and CLIready-for-designlabel toREQUIRED_LABELSfor automatic provisioningLabel lifecycle
Test plan
test_design_agent.pyquota,429,RESOURCE_EXHAUSTED,rate limit,retry after_parse_reset_timehandles"Retry after Xs"/"retry after N seconds"formats_extract_image_urls: markdown, HTML<img src="">, deduplication, non-HTTP ignoreddiscover()label transitions: yields task initially, skips when no new feedback, removesready-for-designwhenready-for-planningpresentterminate()still kills ittest_quota_handling.py::test_resets_without_atunrelated to this PR)Closes #46
🤖 Generated with Claude Code