claude-code-workflow 7.2.27 → 7.2.29
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.ccw/specs/architecture-constraints.md +5 -0
- package/.claude/skills/_shared/SKILL-DESIGN-SPEC.md +140 -0
- package/.claude/skills/investigate/SKILL.md +110 -0
- package/.claude/skills/investigate/phases/01-root-cause-investigation.md +132 -0
- package/.claude/skills/investigate/phases/02-pattern-analysis.md +126 -0
- package/.claude/skills/investigate/phases/03-hypothesis-testing.md +177 -0
- package/.claude/skills/investigate/phases/04-implementation.md +139 -0
- package/.claude/skills/investigate/phases/05-verification-report.md +153 -0
- package/.claude/skills/investigate/specs/debug-report-format.md +226 -0
- package/.claude/skills/investigate/specs/iron-law.md +101 -0
- package/.claude/skills/security-audit/SKILL.md +125 -0
- package/.claude/skills/security-audit/phases/01-supply-chain-scan.md +139 -0
- package/.claude/skills/security-audit/phases/02-owasp-review.md +156 -0
- package/.claude/skills/security-audit/phases/03-threat-modeling.md +180 -0
- package/.claude/skills/security-audit/phases/04-report-tracking.md +177 -0
- package/.claude/skills/security-audit/specs/owasp-checklist.md +442 -0
- package/.claude/skills/security-audit/specs/scoring-gates.md +141 -0
- package/.claude/skills/ship/SKILL.md +105 -0
- package/.claude/skills/ship/phases/01-preflight-checks.md +121 -0
- package/.claude/skills/ship/phases/02-code-review.md +137 -0
- package/.claude/skills/ship/phases/03-version-bump.md +171 -0
- package/.claude/skills/ship/phases/04-changelog-commit.md +167 -0
- package/.claude/skills/ship/phases/05-pr-creation.md +163 -0
- package/.claude/skills/skill-generator/templates/sequential-phase.md +10 -0
- package/.claude/skills/skill-generator/templates/skill-md.md +4 -0
- package/.claude/skills/team-interactive-craft/SKILL.md +127 -0
- package/.claude/skills/team-interactive-craft/roles/a11y-tester/role.md +159 -0
- package/.claude/skills/team-interactive-craft/roles/builder/role.md +216 -0
- package/.claude/skills/team-interactive-craft/roles/coordinator/commands/analyze.md +71 -0
- package/.claude/skills/team-interactive-craft/roles/coordinator/commands/dispatch.md +192 -0
- package/.claude/skills/team-interactive-craft/roles/coordinator/commands/monitor.md +183 -0
- package/.claude/skills/team-interactive-craft/roles/coordinator/role.md +166 -0
- package/.claude/skills/team-interactive-craft/roles/interaction-designer/role.md +144 -0
- package/.claude/skills/team-interactive-craft/roles/researcher/role.md +131 -0
- package/.claude/skills/team-interactive-craft/specs/interaction-patterns.md +362 -0
- package/.claude/skills/team-interactive-craft/specs/pipelines.md +85 -0
- package/.claude/skills/team-interactive-craft/specs/team-config.json +105 -0
- package/.claude/skills/team-interactive-craft/specs/vanilla-constraints.md +83 -0
- package/.claude/skills/team-motion-design/SKILL.md +129 -0
- package/.claude/skills/team-motion-design/roles/animator/role.md +194 -0
- package/.claude/skills/team-motion-design/roles/choreographer/role.md +164 -0
- package/.claude/skills/team-motion-design/roles/coordinator/commands/analyze.md +64 -0
- package/.claude/skills/team-motion-design/roles/coordinator/commands/dispatch.md +203 -0
- package/.claude/skills/team-motion-design/roles/coordinator/commands/monitor.md +184 -0
- package/.claude/skills/team-motion-design/roles/coordinator/role.md +167 -0
- package/.claude/skills/team-motion-design/roles/motion-researcher/role.md +115 -0
- package/.claude/skills/team-motion-design/roles/motion-tester/role.md +175 -0
- package/.claude/skills/team-motion-design/specs/gpu-constraints.md +114 -0
- package/.claude/skills/team-motion-design/specs/motion-tokens.md +128 -0
- package/.claude/skills/team-motion-design/specs/pipelines.md +74 -0
- package/.claude/skills/team-motion-design/specs/reduced-motion.md +129 -0
- package/.claude/skills/team-motion-design/specs/team-config.json +99 -0
- package/.claude/skills/team-ui-polish/SKILL.md +127 -0
- package/.claude/skills/team-ui-polish/roles/coordinator/commands/analyze.md +77 -0
- package/.claude/skills/team-ui-polish/roles/coordinator/commands/dispatch.md +194 -0
- package/.claude/skills/team-ui-polish/roles/coordinator/commands/monitor.md +180 -0
- package/.claude/skills/team-ui-polish/roles/coordinator/role.md +170 -0
- package/.claude/skills/team-ui-polish/roles/diagnostician/role.md +160 -0
- package/.claude/skills/team-ui-polish/roles/optimizer/role.md +225 -0
- package/.claude/skills/team-ui-polish/roles/scanner/role.md +356 -0
- package/.claude/skills/team-ui-polish/roles/verifier/role.md +142 -0
- package/.claude/skills/team-ui-polish/specs/anti-patterns.md +141 -0
- package/.claude/skills/team-ui-polish/specs/design-standards.md +356 -0
- package/.claude/skills/team-ui-polish/specs/fix-strategies.md +235 -0
- package/.claude/skills/team-ui-polish/specs/pipelines.md +81 -0
- package/.claude/skills/team-ui-polish/specs/scoring-guide.md +162 -0
- package/.claude/skills/team-ui-polish/specs/team-config.json +73 -0
- package/.claude/skills/team-uidesign/SKILL.md +6 -1
- package/.claude/skills/team-uidesign/roles/designer/role.md +28 -4
- package/.claude/skills/team-uidesign/roles/implementer/role.md +25 -3
- package/.claude/skills/team-uidesign/roles/researcher/role.md +21 -2
- package/.claude/skills/team-uidesign/roles/reviewer/role.md +19 -17
- package/.claude/skills/team-uidesign/specs/anti-patterns.md +211 -0
- package/.claude/skills/team-uidesign/specs/design-standards.md +329 -0
- package/.claude/skills/team-uidesign/specs/scoring-guide.md +114 -0
- package/.claude/skills/team-uidesign/specs/team-config.json +1 -1
- package/.claude/skills/team-uidesign/specs/ux-writing.md +86 -0
- package/.claude/skills/team-ux-improve/SKILL.md +3 -0
- package/.claude/skills/team-ux-improve/roles/designer/role.md +30 -0
- package/.claude/skills/team-ux-improve/roles/diagnoser/role.md +16 -1
- package/.claude/skills/team-ux-improve/roles/scanner/role.md +43 -1
- package/.claude/skills/team-ux-improve/specs/anti-patterns.md +103 -0
- package/.claude/skills/team-ux-improve/specs/design-standards.md +54 -0
- package/.claude/skills/team-ux-improve/specs/heuristics.md +88 -0
- package/.claude/skills/team-ux-improve/wisdom/anti-patterns/common-ux-pitfalls.md +40 -8
- package/.claude/skills/team-ux-improve/wisdom/patterns/state-management.md +32 -12
- package/.claude/skills/team-ux-improve/wisdom/patterns/ui-feedback.md +35 -11
- package/.claude/skills/team-ux-improve/wisdom/principles/general-ux.md +36 -9
- package/.claude/skills/team-visual-a11y/SKILL.md +143 -0
- package/.claude/skills/team-visual-a11y/roles/color-auditor/role.md +178 -0
- package/.claude/skills/team-visual-a11y/roles/coordinator/commands/analyze.md +72 -0
- package/.claude/skills/team-visual-a11y/roles/coordinator/commands/dispatch.md +250 -0
- package/.claude/skills/team-visual-a11y/roles/coordinator/commands/monitor.md +204 -0
- package/.claude/skills/team-visual-a11y/roles/coordinator/role.md +169 -0
- package/.claude/skills/team-visual-a11y/roles/fix-implementer/role.md +246 -0
- package/.claude/skills/team-visual-a11y/roles/focus-auditor/role.md +222 -0
- package/.claude/skills/team-visual-a11y/roles/remediation-planner/role.md +206 -0
- package/.claude/skills/team-visual-a11y/roles/typo-auditor/role.md +185 -0
- package/.claude/skills/team-visual-a11y/specs/focus-patterns.md +325 -0
- package/.claude/skills/team-visual-a11y/specs/oklch-standards.md +130 -0
- package/.claude/skills/team-visual-a11y/specs/pipelines.md +98 -0
- package/.claude/skills/team-visual-a11y/specs/team-config.json +109 -0
- package/.claude/skills/team-visual-a11y/specs/typography-scale.md +165 -0
- package/.claude/skills/team-visual-a11y/specs/wcag-matrix.md +133 -0
- package/.codex/skills/brainstorm/SKILL.md +3 -3
- package/.codex/skills/clean/SKILL.md +3 -3
- package/.codex/skills/investigate/agents/investigator.md +392 -0
- package/.codex/skills/investigate/orchestrator.md +362 -0
- package/.codex/skills/investigate/phases/01-root-cause-investigation.md +212 -0
- package/.codex/skills/investigate/phases/02-pattern-analysis.md +181 -0
- package/.codex/skills/investigate/phases/03-hypothesis-testing.md +214 -0
- package/.codex/skills/investigate/phases/04-implementation.md +195 -0
- package/.codex/skills/investigate/phases/05-verification-report.md +240 -0
- package/.codex/skills/issue-discover/SKILL.md +13 -13
- package/.codex/skills/issue-discover/phases/02-discover.md +4 -4
- package/.codex/skills/issue-discover/phases/03-discover-by-prompt.md +3 -3
- package/.codex/skills/parallel-dev-cycle/SKILL.md +4 -4
- package/.codex/skills/parallel-dev-cycle/phases/02-agent-execution.md +6 -6
- package/.codex/skills/parallel-dev-cycle/phases/03-result-aggregation.md +10 -10
- package/.codex/skills/review-cycle/SKILL.md +10 -10
- package/.codex/skills/review-cycle/phases/02-parallel-review.md +6 -6
- package/.codex/skills/review-cycle/phases/04-iterative-deep-dive.md +4 -4
- package/.codex/skills/review-cycle/phases/07-fix-parallel-planning.md +4 -4
- package/.codex/skills/review-cycle/phases/08-fix-execution.md +2 -2
- package/.codex/skills/roadmap-with-file/SKILL.md +14 -14
- package/.codex/skills/security-audit/agents/security-auditor.md +341 -0
- package/.codex/skills/security-audit/orchestrator.md +384 -0
- package/.codex/skills/security-audit/phases/01-supply-chain-scan.md +226 -0
- package/.codex/skills/security-audit/phases/02-owasp-review.md +232 -0
- package/.codex/skills/security-audit/phases/03-threat-modeling.md +249 -0
- package/.codex/skills/security-audit/phases/04-report-tracking.md +300 -0
- package/.codex/skills/ship/agents/ship-operator.md +318 -0
- package/.codex/skills/ship/orchestrator.md +426 -0
- package/.codex/skills/ship/phases/01-preflight-checks.md +198 -0
- package/.codex/skills/ship/phases/02-code-review.md +228 -0
- package/.codex/skills/ship/phases/03-version-bump.md +259 -0
- package/.codex/skills/ship/phases/04-changelog-commit.md +263 -0
- package/.codex/skills/ship/phases/05-pr-creation.md +280 -0
- package/.codex/skills/spec-generator/README.md +1 -1
- package/.codex/skills/spec-generator/SKILL.md +184 -88
- package/.codex/skills/spec-generator/phases/01-5-requirement-clarification.md +4 -7
- package/.codex/skills/spec-generator/phases/01-discovery.md +30 -11
- package/.codex/skills/spec-generator/phases/02-product-brief.md +2 -5
- package/.codex/skills/spec-generator/phases/03-requirements.md +4 -6
- package/.codex/skills/spec-generator/phases/04-architecture.md +4 -6
- package/.codex/skills/spec-generator/phases/05-epics-stories.md +4 -6
- package/.codex/skills/spec-generator/phases/06-5-auto-fix.md +4 -5
- package/.codex/skills/spec-generator/phases/06-readiness-check.md +8 -8
- package/.codex/skills/spec-generator/phases/07-issue-export.md +2 -2
- package/.codex/skills/spec-setup/SKILL.md +4 -4
- package/.codex/skills/team-interactive-craft/SKILL.md +220 -0
- package/.codex/skills/team-interactive-craft/roles/a11y-tester/role.md +159 -0
- package/.codex/skills/team-interactive-craft/roles/builder/role.md +216 -0
- package/.codex/skills/team-interactive-craft/roles/coordinator/commands/analyze.md +71 -0
- package/.codex/skills/team-interactive-craft/roles/coordinator/commands/dispatch.md +162 -0
- package/.codex/skills/team-interactive-craft/roles/coordinator/commands/monitor.md +233 -0
- package/.codex/skills/team-interactive-craft/roles/coordinator/role.md +209 -0
- package/.codex/skills/team-interactive-craft/roles/interaction-designer/role.md +144 -0
- package/.codex/skills/team-interactive-craft/roles/researcher/role.md +131 -0
- package/.codex/skills/team-interactive-craft/specs/interaction-patterns.md +362 -0
- package/.codex/skills/team-interactive-craft/specs/pipelines.md +85 -0
- package/.codex/skills/team-interactive-craft/specs/team-config.json +105 -0
- package/.codex/skills/team-interactive-craft/specs/vanilla-constraints.md +83 -0
- package/.codex/skills/team-motion-design/SKILL.md +222 -0
- package/.codex/skills/team-motion-design/roles/animator/role.md +194 -0
- package/.codex/skills/team-motion-design/roles/choreographer/role.md +164 -0
- package/.codex/skills/team-motion-design/roles/coordinator/commands/analyze.md +64 -0
- package/.codex/skills/team-motion-design/roles/coordinator/commands/dispatch.md +168 -0
- package/.codex/skills/team-motion-design/roles/coordinator/commands/monitor.md +242 -0
- package/.codex/skills/team-motion-design/roles/coordinator/role.md +210 -0
- package/.codex/skills/team-motion-design/roles/motion-researcher/role.md +115 -0
- package/.codex/skills/team-motion-design/roles/motion-tester/role.md +175 -0
- package/.codex/skills/team-motion-design/specs/gpu-constraints.md +114 -0
- package/.codex/skills/team-motion-design/specs/motion-tokens.md +128 -0
- package/.codex/skills/team-motion-design/specs/pipelines.md +74 -0
- package/.codex/skills/team-motion-design/specs/reduced-motion.md +129 -0
- package/.codex/skills/team-motion-design/specs/team-config.json +99 -0
- package/.codex/skills/team-ui-polish/SKILL.md +218 -0
- package/.codex/skills/team-ui-polish/roles/coordinator/commands/analyze.md +77 -0
- package/.codex/skills/team-ui-polish/roles/coordinator/commands/dispatch.md +167 -0
- package/.codex/skills/team-ui-polish/roles/coordinator/commands/monitor.md +230 -0
- package/.codex/skills/team-ui-polish/roles/coordinator/role.md +213 -0
- package/.codex/skills/team-ui-polish/roles/diagnostician/role.md +164 -0
- package/.codex/skills/team-ui-polish/roles/optimizer/role.md +229 -0
- package/.codex/skills/team-ui-polish/roles/scanner/role.md +360 -0
- package/.codex/skills/team-ui-polish/roles/verifier/role.md +142 -0
- package/.codex/skills/team-ui-polish/specs/anti-patterns.md +141 -0
- package/.codex/skills/team-ui-polish/specs/design-standards.md +356 -0
- package/.codex/skills/team-ui-polish/specs/fix-strategies.md +235 -0
- package/.codex/skills/team-ui-polish/specs/pipelines.md +81 -0
- package/.codex/skills/team-ui-polish/specs/scoring-guide.md +162 -0
- package/.codex/skills/team-ui-polish/specs/team-config.json +73 -0
- package/.codex/skills/team-visual-a11y/SKILL.md +319 -0
- package/.codex/skills/team-visual-a11y/roles/color-auditor/role.md +178 -0
- package/.codex/skills/team-visual-a11y/roles/coordinator/commands/analyze.md +72 -0
- package/.codex/skills/team-visual-a11y/roles/coordinator/commands/dispatch.md +188 -0
- package/.codex/skills/team-visual-a11y/roles/coordinator/commands/monitor.md +281 -0
- package/.codex/skills/team-visual-a11y/roles/coordinator/role.md +213 -0
- package/.codex/skills/team-visual-a11y/roles/fix-implementer/role.md +246 -0
- package/.codex/skills/team-visual-a11y/roles/focus-auditor/role.md +222 -0
- package/.codex/skills/team-visual-a11y/roles/remediation-planner/role.md +206 -0
- package/.codex/skills/team-visual-a11y/roles/typo-auditor/role.md +185 -0
- package/.codex/skills/team-visual-a11y/specs/focus-patterns.md +325 -0
- package/.codex/skills/team-visual-a11y/specs/oklch-standards.md +130 -0
- package/.codex/skills/team-visual-a11y/specs/pipelines.md +98 -0
- package/.codex/skills/team-visual-a11y/specs/team-config.json +109 -0
- package/.codex/skills/team-visual-a11y/specs/typography-scale.md +165 -0
- package/.codex/skills/team-visual-a11y/specs/wcag-matrix.md +133 -0
- package/.codex/skills/workflow-plan/SKILL.md +6 -6
- package/.codex/skills/workflow-tdd-plan/SKILL.md +5 -5
- package/.codex/skills/workflow-test-fix-cycle/SKILL.md +19 -19
- package/.codex/skills/workflow-test-fix-cycle/phases/01-test-fix-gen.md +5 -5
- package/.codex/skills/workflow-test-fix-cycle/phases/02-test-cycle-execute.md +5 -5
- package/README.md +8 -0
- package/ccw/dist/core/hooks/hook-templates.d.ts.map +1 -1
- package/ccw/dist/core/hooks/hook-templates.js +114 -1
- package/ccw/dist/core/hooks/hook-templates.js.map +1 -1
- package/ccw/dist/core/routes/cli-routes.d.ts.map +1 -1
- package/ccw/dist/core/routes/cli-routes.js +34 -0
- package/ccw/dist/core/routes/cli-routes.js.map +1 -1
- package/ccw/dist/core/routes/system-routes.js +2 -2
- package/ccw/dist/core/routes/system-routes.js.map +1 -1
- package/ccw/frontend/dist/assets/{AlertDialog-Bf1jdqax.js → AlertDialog-exlTDW81.js} +3 -3
- package/ccw/frontend/dist/assets/{AlertDialog-Bf1jdqax.js.map → AlertDialog-exlTDW81.js.map} +1 -1
- package/ccw/frontend/dist/assets/{AnalysisPage-C8niKdp4.js → AnalysisPage-cgV9LfAI.js} +2 -2
- package/ccw/frontend/dist/assets/{AnalysisPage-C8niKdp4.js.map → AnalysisPage-cgV9LfAI.js.map} +1 -1
- package/ccw/frontend/dist/assets/{ApiSettingsPage-BL2c3UNS.js → ApiSettingsPage-Dk5jJdWt.js} +2 -2
- package/ccw/frontend/dist/assets/{ApiSettingsPage-BL2c3UNS.js.map → ApiSettingsPage-Dk5jJdWt.js.map} +1 -1
- package/ccw/frontend/dist/assets/{CliModeToggle-BePBFynD.js → CliModeToggle-Be9xsPiv.js} +2 -2
- package/ccw/frontend/dist/assets/{CliModeToggle-BePBFynD.js.map → CliModeToggle-Be9xsPiv.js.map} +1 -1
- package/ccw/frontend/dist/assets/{CliSessionSharePage-7cYtX6FT.js → CliSessionSharePage-Bh9jBtPI.js} +2 -2
- package/ccw/frontend/dist/assets/{CliSessionSharePage-7cYtX6FT.js.map → CliSessionSharePage-Bh9jBtPI.js.map} +1 -1
- package/ccw/frontend/dist/assets/{CliViewerPage-CBwg1mPL.js → CliViewerPage-BrE-oyEq.js} +2 -2
- package/ccw/frontend/dist/assets/{CliViewerPage-CBwg1mPL.js.map → CliViewerPage-BrE-oyEq.js.map} +1 -1
- package/ccw/frontend/dist/assets/{CodexLensPage-Bt74xORP.js → CodexLensPage-Cd3nrC93.js} +2 -2
- package/ccw/frontend/dist/assets/{CodexLensPage-Bt74xORP.js.map → CodexLensPage-Cd3nrC93.js.map} +1 -1
- package/ccw/frontend/dist/assets/{Collapsible-Wrs87QT7.js → Collapsible-DXFl3VKF.js} +2 -2
- package/ccw/frontend/dist/assets/{Collapsible-Wrs87QT7.js.map → Collapsible-DXFl3VKF.js.map} +1 -1
- package/ccw/frontend/dist/assets/{CommandsManagerPage-ChQjmPWZ.js → CommandsManagerPage-IV8zpjgX.js} +2 -2
- package/ccw/frontend/dist/assets/{CommandsManagerPage-ChQjmPWZ.js.map → CommandsManagerPage-IV8zpjgX.js.map} +1 -1
- package/ccw/frontend/dist/assets/{DeepWikiPage-dEO5wi6X.js → DeepWikiPage-CpDxtmRX.js} +2 -2
- package/ccw/frontend/dist/assets/{DeepWikiPage-dEO5wi6X.js.map → DeepWikiPage-CpDxtmRX.js.map} +1 -1
- package/ccw/frontend/dist/assets/{EndpointsPage-4zq269xY.js → EndpointsPage-BchjWe7s.js} +2 -2
- package/ccw/frontend/dist/assets/{EndpointsPage-4zq269xY.js.map → EndpointsPage-BchjWe7s.js.map} +1 -1
- package/ccw/frontend/dist/assets/{ExplorerPage-B0YTENhA.js → ExplorerPage-CbWvaJ0y.js} +2 -2
- package/ccw/frontend/dist/assets/{ExplorerPage-B0YTENhA.js.map → ExplorerPage-CbWvaJ0y.js.map} +1 -1
- package/ccw/frontend/dist/assets/{FixSessionPage-CwGs6dhz.js → FixSessionPage-YMjVRiCk.js} +2 -2
- package/ccw/frontend/dist/assets/{FixSessionPage-CwGs6dhz.js.map → FixSessionPage-YMjVRiCk.js.map} +1 -1
- package/ccw/frontend/dist/assets/{FloatingFileBrowser-COZRBslc.js → FloatingFileBrowser-JW2ehYY_.js} +2 -2
- package/ccw/frontend/dist/assets/{FloatingFileBrowser-COZRBslc.js.map → FloatingFileBrowser-JW2ehYY_.js.map} +1 -1
- package/ccw/frontend/dist/assets/{FloatingPanel-DYvgQZRD.js → FloatingPanel-BtqzqDVq.js} +2 -2
- package/ccw/frontend/dist/assets/{FloatingPanel-DYvgQZRD.js.map → FloatingPanel-BtqzqDVq.js.map} +1 -1
- package/ccw/frontend/dist/assets/{GraphExplorerPage-ewMHQGem.js → GraphExplorerPage-BsJL_W4d.js} +3 -3
- package/ccw/frontend/dist/assets/{GraphExplorerPage-ewMHQGem.js.map → GraphExplorerPage-BsJL_W4d.js.map} +1 -1
- package/ccw/frontend/dist/assets/{HistoryPage-BMeR0PrK.js → HistoryPage-BuWpQ7k5.js} +2 -2
- package/ccw/frontend/dist/assets/{HistoryPage-BMeR0PrK.js.map → HistoryPage-BuWpQ7k5.js.map} +1 -1
- package/ccw/frontend/dist/assets/{HookManagerPage-DBW2LnRm.js → HookManagerPage-D0BtMIWy.js} +2 -2
- package/ccw/frontend/dist/assets/{HookManagerPage-DBW2LnRm.js.map → HookManagerPage-D0BtMIWy.js.map} +1 -1
- package/ccw/frontend/dist/assets/{InstallationsPage--pMj0QEH.js → InstallationsPage-C7dwsAKG.js} +2 -2
- package/ccw/frontend/dist/assets/{InstallationsPage--pMj0QEH.js.map → InstallationsPage-C7dwsAKG.js.map} +1 -1
- package/ccw/frontend/dist/assets/{IssueHubPage-C_QMpQSR.js → IssueHubPage-D0nCNaeB.js} +2 -2
- package/ccw/frontend/dist/assets/{IssueHubPage-C_QMpQSR.js.map → IssueHubPage-D0nCNaeB.js.map} +1 -1
- package/ccw/frontend/dist/assets/{LiteTasksPage-CSWFdQ2-.js → LiteTasksPage-B5c2Kb9r.js} +3 -3
- package/ccw/frontend/dist/assets/{LiteTasksPage-CSWFdQ2-.js.map → LiteTasksPage-B5c2Kb9r.js.map} +1 -1
- package/ccw/frontend/dist/assets/{McpManagerPage-Dvv8NtGy.js → McpManagerPage-C-S5CehM.js} +2 -2
- package/ccw/frontend/dist/assets/{McpManagerPage-Dvv8NtGy.js.map → McpManagerPage-C-S5CehM.js.map} +1 -1
- package/ccw/frontend/dist/assets/{MemoryPage-YO8WZzZO.js → MemoryPage-P_B0JVUQ.js} +2 -2
- package/ccw/frontend/dist/assets/{MemoryPage-YO8WZzZO.js.map → MemoryPage-P_B0JVUQ.js.map} +1 -1
- package/ccw/frontend/dist/assets/{NotFoundPage-quUJw0CD.js → NotFoundPage-S4Jn9LUE.js} +2 -2
- package/ccw/frontend/dist/assets/{NotFoundPage-quUJw0CD.js.map → NotFoundPage-S4Jn9LUE.js.map} +1 -1
- package/ccw/frontend/dist/assets/{OrchestratorPage-tuThWPID.js → OrchestratorPage-C2Zlr7AC.js} +2 -2
- package/ccw/frontend/dist/assets/{OrchestratorPage-tuThWPID.js.map → OrchestratorPage-C2Zlr7AC.js.map} +1 -1
- package/ccw/frontend/dist/assets/{ProjectOverviewPage-shTilwiT.js → ProjectOverviewPage-CMVfz8s5.js} +2 -2
- package/ccw/frontend/dist/assets/{ProjectOverviewPage-shTilwiT.js.map → ProjectOverviewPage-CMVfz8s5.js.map} +1 -1
- package/ccw/frontend/dist/assets/{PromptHistoryPage-6rQnsI8l.js → PromptHistoryPage-YEMjFARX.js} +3 -3
- package/ccw/frontend/dist/assets/{PromptHistoryPage-6rQnsI8l.js.map → PromptHistoryPage-YEMjFARX.js.map} +1 -1
- package/ccw/frontend/dist/assets/{ReviewSessionPage-JOmzjVbT.js → ReviewSessionPage-DnTm55nG.js} +2 -2
- package/ccw/frontend/dist/assets/{ReviewSessionPage-JOmzjVbT.js.map → ReviewSessionPage-DnTm55nG.js.map} +1 -1
- package/ccw/frontend/dist/assets/{RulesManagerPage-Cayfywqi.js → RulesManagerPage-CUwebtO2.js} +2 -2
- package/ccw/frontend/dist/assets/{RulesManagerPage-Cayfywqi.js.map → RulesManagerPage-CUwebtO2.js.map} +1 -1
- package/ccw/frontend/dist/assets/{SessionDetailPage-iMn0k84i.js → SessionDetailPage-0qyH1Z5P.js} +2 -2
- package/ccw/frontend/dist/assets/{SessionDetailPage-iMn0k84i.js.map → SessionDetailPage-0qyH1Z5P.js.map} +1 -1
- package/ccw/frontend/dist/assets/{SessionsPage-Ciqjy9kz.js → SessionsPage-BpgP4087.js} +2 -2
- package/ccw/frontend/dist/assets/{SessionsPage-Ciqjy9kz.js.map → SessionsPage-BpgP4087.js.map} +1 -1
- package/ccw/frontend/dist/assets/SettingsPage-C3SJajeT.js +150 -0
- package/ccw/frontend/dist/assets/SettingsPage-C3SJajeT.js.map +1 -0
- package/ccw/frontend/dist/assets/SkillsManagerPage-vD9PTsmy.js +7 -0
- package/ccw/frontend/dist/assets/SkillsManagerPage-vD9PTsmy.js.map +1 -0
- package/ccw/frontend/dist/assets/{SpecsSettingsPage-BpkJctzo.js → SpecsSettingsPage-DT-yTVkD.js} +4 -4
- package/ccw/frontend/dist/assets/{SpecsSettingsPage-BpkJctzo.js.map → SpecsSettingsPage-DT-yTVkD.js.map} +1 -1
- package/ccw/frontend/dist/assets/{Switch-BpB9h__9.js → Switch-CYSPdqWk.js} +2 -2
- package/ccw/frontend/dist/assets/{Switch-BpB9h__9.js.map → Switch-CYSPdqWk.js.map} +1 -1
- package/ccw/frontend/dist/assets/{TabsNavigation-BGsKy7DO.js → TabsNavigation-CPh6Zor1.js} +2 -2
- package/ccw/frontend/dist/assets/{TabsNavigation-BGsKy7DO.js.map → TabsNavigation-CPh6Zor1.js.map} +1 -1
- package/ccw/frontend/dist/assets/{TaskDrawer-bYIlbM0Q.js → TaskDrawer-Ds-8830B.js} +2 -2
- package/ccw/frontend/dist/assets/{TaskDrawer-bYIlbM0Q.js.map → TaskDrawer-Ds-8830B.js.map} +1 -1
- package/ccw/frontend/dist/assets/{TeamPage-CihtQ6LQ.js → TeamPage-CJODUxBk.js} +2 -2
- package/ccw/frontend/dist/assets/{TeamPage-CihtQ6LQ.js.map → TeamPage-CJODUxBk.js.map} +1 -1
- package/ccw/frontend/dist/assets/{TerminalDashboardPage-BDnNF_ud.js → TerminalDashboardPage-Cn3fGUuO.js} +3 -3
- package/ccw/frontend/dist/assets/{TerminalDashboardPage-BDnNF_ud.js.map → TerminalDashboardPage-Cn3fGUuO.js.map} +1 -1
- package/ccw/frontend/dist/assets/{archive-CQJ86bQp.js → archive-CjwVpw6k.js} +2 -2
- package/ccw/frontend/dist/assets/{archive-CQJ86bQp.js.map → archive-CjwVpw6k.js.map} +1 -1
- package/ccw/frontend/dist/assets/{archive-restore-BhTfDbPU.js → archive-restore-2vZa9Ic3.js} +2 -2
- package/ccw/frontend/dist/assets/{archive-restore-BhTfDbPU.js.map → archive-restore-2vZa9Ic3.js.map} +1 -1
- package/ccw/frontend/dist/assets/{arrow-right-eUAZnT9C.js → arrow-right-CUU5XDgT.js} +2 -2
- package/ccw/frontend/dist/assets/{arrow-right-eUAZnT9C.js.map → arrow-right-CUU5XDgT.js.map} +1 -1
- package/ccw/frontend/dist/assets/{bookmark-plus-ilF5-V-k.js → bookmark-plus-Cc3nKRZ5.js} +2 -2
- package/ccw/frontend/dist/assets/{bookmark-plus-ilF5-V-k.js.map → bookmark-plus-Cc3nKRZ5.js.map} +1 -1
- package/ccw/frontend/dist/assets/{bot-BLkaQscs.js → bot-BwpSRDUa.js} +2 -2
- package/ccw/frontend/dist/assets/{bot-BLkaQscs.js.map → bot-BwpSRDUa.js.map} +1 -1
- package/ccw/frontend/dist/assets/{braces-D9HdgsO6.js → braces-DBzUW1XC.js} +2 -2
- package/ccw/frontend/dist/assets/{braces-D9HdgsO6.js.map → braces-DBzUW1XC.js.map} +1 -1
- package/ccw/frontend/dist/assets/{circle-stop-C3ZF1okQ.js → circle-stop-CGNNsjvE.js} +2 -2
- package/ccw/frontend/dist/assets/{circle-stop-C3ZF1okQ.js.map → circle-stop-CGNNsjvE.js.map} +1 -1
- package/ccw/frontend/dist/assets/{cpu-B-QjaSjm.js → cpu-D27G86Ul.js} +2 -2
- package/ccw/frontend/dist/assets/{cpu-B-QjaSjm.js.map → cpu-D27G86Ul.js.map} +1 -1
- package/ccw/frontend/dist/assets/{ellipsis-vertical-CbNlw2gS.js → ellipsis-vertical-C1Ij47Yz.js} +2 -2
- package/ccw/frontend/dist/assets/{ellipsis-vertical-CbNlw2gS.js.map → ellipsis-vertical-C1Ij47Yz.js.map} +1 -1
- package/ccw/frontend/dist/assets/{eye-yAy69Cnn.js → eye-C6MOB7Au.js} +2 -2
- package/ccw/frontend/dist/assets/{eye-yAy69Cnn.js.map → eye-C6MOB7Au.js.map} +1 -1
- package/ccw/frontend/dist/assets/{eye-off-D5uzLZyP.js → eye-off-BxfBlZ26.js} +2 -2
- package/ccw/frontend/dist/assets/{eye-off-D5uzLZyP.js.map → eye-off-BxfBlZ26.js.map} +1 -1
- package/ccw/frontend/dist/assets/{file-json-rwo1NowL.js → file-json-NI237wA-.js} +2 -2
- package/ccw/frontend/dist/assets/{file-json-rwo1NowL.js.map → file-json-NI237wA-.js.map} +1 -1
- package/ccw/frontend/dist/assets/{file-text-DRkrjie9.js → file-text-Byn2_2v6.js} +2 -2
- package/ccw/frontend/dist/assets/{file-text-DRkrjie9.js.map → file-text-Byn2_2v6.js.map} +1 -1
- package/ccw/frontend/dist/assets/{filter-BOe-OTu1.js → filter-D-7PhZjx.js} +2 -2
- package/ccw/frontend/dist/assets/{filter-BOe-OTu1.js.map → filter-D-7PhZjx.js.map} +1 -1
- package/ccw/frontend/dist/assets/{folder-BaWZWn_r.js → folder-BoAsK_FL.js} +2 -2
- package/ccw/frontend/dist/assets/{folder-BaWZWn_r.js.map → folder-BoAsK_FL.js.map} +1 -1
- package/ccw/frontend/dist/assets/{gauge-kazFexTr.js → gauge-DCSxJIS4.js} +2 -2
- package/ccw/frontend/dist/assets/{gauge-kazFexTr.js.map → gauge-DCSxJIS4.js.map} +1 -1
- package/ccw/frontend/dist/assets/{globe-BuHeEjxd.js → globe-CHS3prza.js} +2 -2
- package/ccw/frontend/dist/assets/{globe-BuHeEjxd.js.map → globe-CHS3prza.js.map} +1 -1
- package/ccw/frontend/dist/assets/{grid-3x3-DbhuUu4V.js → grid-3x3-D7K35U7S.js} +2 -2
- package/ccw/frontend/dist/assets/{grid-3x3-DbhuUu4V.js.map → grid-3x3-D7K35U7S.js.map} +1 -1
- package/ccw/frontend/dist/assets/{hard-drive-AoLGL0z4.js → hard-drive-eq9xE07G.js} +2 -2
- package/ccw/frontend/dist/assets/{hard-drive-AoLGL0z4.js.map → hard-drive-eq9xE07G.js.map} +1 -1
- package/ccw/frontend/dist/assets/{hash-Dpo1exMB.js → hash-C1DMpBua.js} +2 -2
- package/ccw/frontend/dist/assets/{hash-Dpo1exMB.js.map → hash-C1DMpBua.js.map} +1 -1
- package/ccw/frontend/dist/assets/{history-ujQnmMC9.js → history-Di5SBCY-.js} +2 -2
- package/ccw/frontend/dist/assets/{history-ujQnmMC9.js.map → history-Di5SBCY-.js.map} +1 -1
- package/ccw/frontend/dist/assets/{index-C_Yf5fZ4.js → index--_R7COnA.js} +2 -2
- package/ccw/frontend/dist/assets/{index-C_Yf5fZ4.js.map → index--_R7COnA.js.map} +1 -1
- package/ccw/frontend/dist/assets/{index-Dff4bg3u.js → index-BUol9HDD.js} +3 -3
- package/ccw/frontend/dist/assets/{index-Dff4bg3u.js.map → index-BUol9HDD.js.map} +1 -1
- package/ccw/frontend/dist/assets/{index-B76AGix5.js → index-CT9oykfw.js} +2 -2
- package/ccw/frontend/dist/assets/{index-B76AGix5.js.map → index-CT9oykfw.js.map} +1 -1
- package/ccw/frontend/dist/assets/{index-CxzXz6o1.js → index-Ddwvf87H.js} +2 -2
- package/ccw/frontend/dist/assets/{index-CxzXz6o1.js.map → index-Ddwvf87H.js.map} +1 -1
- package/ccw/frontend/dist/assets/{layout-grid-CBdE4K8h.js → layout-grid-LiX0qZbN.js} +2 -2
- package/ccw/frontend/dist/assets/{layout-grid-CBdE4K8h.js.map → layout-grid-LiX0qZbN.js.map} +1 -1
- package/ccw/frontend/dist/assets/{lightbulb-B9K6ZgRp.js → lightbulb-CL3DVEwb.js} +2 -2
- package/ccw/frontend/dist/assets/{lightbulb-B9K6ZgRp.js.map → lightbulb-CL3DVEwb.js.map} +1 -1
- package/ccw/frontend/dist/assets/{link-2-Oea4xHJl.js → link-2-CC5cFeq6.js} +2 -2
- package/ccw/frontend/dist/assets/{link-2-Oea4xHJl.js.map → link-2-CC5cFeq6.js.map} +1 -1
- package/ccw/frontend/dist/assets/{link-5yXdZBch.js → link-ngFQ9bs0.js} +2 -2
- package/ccw/frontend/dist/assets/{link-5yXdZBch.js.map → link-ngFQ9bs0.js.map} +1 -1
- package/ccw/frontend/dist/assets/{list-9lHhC_U_.js → list-BEU6I0KK.js} +2 -2
- package/ccw/frontend/dist/assets/{list-9lHhC_U_.js.map → list-BEU6I0KK.js.map} +1 -1
- package/ccw/frontend/dist/assets/{map-pin-B6Io5kmB.js → map-pin-BWZdLA6y.js} +2 -2
- package/ccw/frontend/dist/assets/{map-pin-B6Io5kmB.js.map → map-pin-BWZdLA6y.js.map} +1 -1
- package/ccw/frontend/dist/assets/{messages-square-BT000aD3.js → messages-square-K6_Chm7n.js} +2 -2
- package/ccw/frontend/dist/assets/{messages-square-BT000aD3.js.map → messages-square-K6_Chm7n.js.map} +1 -1
- package/ccw/frontend/dist/assets/{minimize-2-DO-zbT3a.js → minimize-2-CWkphauf.js} +2 -2
- package/ccw/frontend/dist/assets/{minimize-2-DO-zbT3a.js.map → minimize-2-CWkphauf.js.map} +1 -1
- package/ccw/frontend/dist/assets/{package-BjOw1ldU.js → package-DrNgkamn.js} +2 -2
- package/ccw/frontend/dist/assets/{package-BjOw1ldU.js.map → package-DrNgkamn.js.map} +1 -1
- package/ccw/frontend/dist/assets/{plug-9dAARpE1.js → plug-CMo3sw5_.js} +2 -2
- package/ccw/frontend/dist/assets/{plug-9dAARpE1.js.map → plug-CMo3sw5_.js.map} +1 -1
- package/ccw/frontend/dist/assets/{power-K2S39x7f.js → power-DppNTW5e.js} +2 -2
- package/ccw/frontend/dist/assets/{power-K2S39x7f.js.map → power-DppNTW5e.js.map} +1 -1
- package/ccw/frontend/dist/assets/{save-D9-CoT3x.js → save-CD8aPMbZ.js} +2 -2
- package/ccw/frontend/dist/assets/{save-D9-CoT3x.js.map → save-CD8aPMbZ.js.map} +1 -1
- package/ccw/frontend/dist/assets/{send-Bunw9NtC.js → send-B4z90fQD.js} +2 -2
- package/ccw/frontend/dist/assets/{send-Bunw9NtC.js.map → send-B4z90fQD.js.map} +1 -1
- package/ccw/frontend/dist/assets/{settings-2-osl4EXFf.js → settings-2-CAKRU_QC.js} +2 -2
- package/ccw/frontend/dist/assets/{settings-2-osl4EXFf.js.map → settings-2-CAKRU_QC.js.map} +1 -1
- package/ccw/frontend/dist/assets/{square-check-big-Dl5gYkjR.js → square-check-big-KhI3HrzX.js} +2 -2
- package/ccw/frontend/dist/assets/{square-check-big-Dl5gYkjR.js.map → square-check-big-KhI3HrzX.js.map} +1 -1
- package/ccw/frontend/dist/assets/{square-pen-Bue1chJR.js → square-pen-BtdGIpuq.js} +2 -2
- package/ccw/frontend/dist/assets/{square-pen-Bue1chJR.js.map → square-pen-BtdGIpuq.js.map} +1 -1
- package/ccw/frontend/dist/assets/{star-Bk7EC7FB.js → star-ZoBUkXoD.js} +2 -2
- package/ccw/frontend/dist/assets/{star-Bk7EC7FB.js.map → star-ZoBUkXoD.js.map} +1 -1
- package/ccw/frontend/dist/assets/{style-BbREPmRj.js → style-CltxQP-P.js} +2 -2
- package/ccw/frontend/dist/assets/{style-BbREPmRj.js.map → style-CltxQP-P.js.map} +1 -1
- package/ccw/frontend/dist/assets/{target-CElrCVhR.js → target-C32OUSGf.js} +2 -2
- package/ccw/frontend/dist/assets/{target-CElrCVhR.js.map → target-C32OUSGf.js.map} +1 -1
- package/ccw/frontend/dist/assets/{test-tube-wciJaoas.js → test-tube-0IxoyAVZ.js} +2 -2
- package/ccw/frontend/dist/assets/{test-tube-wciJaoas.js.map → test-tube-0IxoyAVZ.js.map} +1 -1
- package/ccw/frontend/dist/assets/{upload-BD1F07wG.js → upload-4eKCkyBn.js} +2 -2
- package/ccw/frontend/dist/assets/{upload-BD1F07wG.js.map → upload-4eKCkyBn.js.map} +1 -1
- package/ccw/frontend/dist/assets/{useApiSettings-D23HVEt8.js → useApiSettings-zLTUWqhi.js} +2 -2
- package/ccw/frontend/dist/assets/{useApiSettings-D23HVEt8.js.map → useApiSettings-zLTUWqhi.js.map} +1 -1
- package/ccw/frontend/dist/assets/{useCli-BGDd_lXD.js → useCli-BtN2vpOX.js} +2 -2
- package/ccw/frontend/dist/assets/{useCli-BGDd_lXD.js.map → useCli-BtN2vpOX.js.map} +1 -1
- package/ccw/frontend/dist/assets/{useCommands-B-m_HxPB.js → useCommands-_spj49qL.js} +2 -2
- package/ccw/frontend/dist/assets/{useCommands-B-m_HxPB.js.map → useCommands-_spj49qL.js.map} +1 -1
- package/ccw/frontend/dist/assets/{useDebounce-Z18-PHZr.js → useDebounce-Bm9KFZvd.js} +2 -2
- package/ccw/frontend/dist/assets/{useDebounce-Z18-PHZr.js.map → useDebounce-Bm9KFZvd.js.map} +1 -1
- package/ccw/frontend/dist/assets/{useFileExplorer-D4gPp-LB.js → useFileExplorer-DOmpm6v9.js} +2 -2
- package/ccw/frontend/dist/assets/{useFileExplorer-D4gPp-LB.js.map → useFileExplorer-DOmpm6v9.js.map} +1 -1
- package/ccw/frontend/dist/assets/{useLocale-DJ62jjFa.js → useLocale-D2rj4rea.js} +2 -2
- package/ccw/frontend/dist/assets/{useLocale-DJ62jjFa.js.map → useLocale-D2rj4rea.js.map} +1 -1
- package/ccw/frontend/dist/assets/{useSkills-B8NPs9__.js → useSkills-OskEpomF.js} +3 -3
- package/ccw/frontend/dist/assets/{useSkills-B8NPs9__.js.map → useSkills-OskEpomF.js.map} +1 -1
- package/ccw/frontend/dist/assets/{useSystemSettings-CVi7nKGJ.js → useSystemSettings-BjMgsNSF.js} +2 -2
- package/ccw/frontend/dist/assets/{useSystemSettings-CVi7nKGJ.js.map → useSystemSettings-BjMgsNSF.js.map} +1 -1
- package/ccw/frontend/dist/assets/{wand-sparkles-CLjPiU5w.js → wand-sparkles-CLhyYWa7.js} +2 -2
- package/ccw/frontend/dist/assets/{wand-sparkles-CLjPiU5w.js.map → wand-sparkles-CLhyYWa7.js.map} +1 -1
- package/ccw/frontend/dist/index.html +1 -1
- package/package.json +105 -105
- package/ccw/frontend/dist/assets/SettingsPage-BPDbXPSM.js +0 -150
- package/ccw/frontend/dist/assets/SettingsPage-BPDbXPSM.js.map +0 -1
- package/ccw/frontend/dist/assets/SkillsManagerPage-D3LzbpJY.js +0 -7
- package/ccw/frontend/dist/assets/SkillsManagerPage-D3LzbpJY.js.map +0 -1
|
@@ -0,0 +1,281 @@
|
|
|
1
|
+
# Monitor Pipeline
|
|
2
|
+
|
|
3
|
+
Synchronous pipeline coordination using spawn_agent + wait_agent.
|
|
4
|
+
|
|
5
|
+
## Constants
|
|
6
|
+
|
|
7
|
+
- WORKER_AGENT: team_worker
|
|
8
|
+
- MAX_GC_ROUNDS: 2
|
|
9
|
+
|
|
10
|
+
## Handler Router
|
|
11
|
+
|
|
12
|
+
| Source | Handler |
|
|
13
|
+
|--------|---------|
|
|
14
|
+
| "capability_gap" | handleAdapt |
|
|
15
|
+
| "check" or "status" | handleCheck |
|
|
16
|
+
| "resume" or "continue" | handleResume |
|
|
17
|
+
| All tasks completed | handleComplete |
|
|
18
|
+
| Default | handleSpawnNext |
|
|
19
|
+
|
|
20
|
+
## handleCallback
|
|
21
|
+
|
|
22
|
+
Worker completed (wait_agent returns). Process and advance.
|
|
23
|
+
|
|
24
|
+
1. Determine role from completed task prefix:
|
|
25
|
+
|
|
26
|
+
| Task Prefix | Role |
|
|
27
|
+
|-------------|------|
|
|
28
|
+
| `COLOR-*` | color-auditor |
|
|
29
|
+
| `TYPO-*` | typo-auditor |
|
|
30
|
+
| `FOCUS-*` | focus-auditor |
|
|
31
|
+
| `REMED-*` | remediation-planner |
|
|
32
|
+
| `FIX-*` | fix-implementer |
|
|
33
|
+
|
|
34
|
+
2. Mark task completed in tasks.json: `state.tasks[taskId].status = 'completed'`
|
|
35
|
+
3. Record completion in session state
|
|
36
|
+
|
|
37
|
+
4. Check checkpoint for completed task:
|
|
38
|
+
|
|
39
|
+
| Completed Task | Checkpoint | Action |
|
|
40
|
+
|---------------|------------|--------|
|
|
41
|
+
| COLOR-001 | Parallel fan-in | Check if all 3 audits complete -> unblock REMED-001 |
|
|
42
|
+
| TYPO-001 | Parallel fan-in | Check if all 3 audits complete -> unblock REMED-001 |
|
|
43
|
+
| FOCUS-001 | Parallel fan-in | Check if all 3 audits complete -> unblock REMED-001 |
|
|
44
|
+
| REMED-001 | -- | Unblock FIX-001 (full mode only) |
|
|
45
|
+
| FIX-001 | GC check | Spawn COLOR-002 + FOCUS-002 in parallel (full mode) |
|
|
46
|
+
| COLOR-002 | Re-audit fan-in | Check if both re-audits complete -> handleComplete |
|
|
47
|
+
| FOCUS-002 | Re-audit fan-in | Check if both re-audits complete -> handleComplete |
|
|
48
|
+
|
|
49
|
+
5. **Parallel fan-in handling** (audit task completed):
|
|
50
|
+
|
|
51
|
+
**CRITICAL**: REMED-001 must wait for ALL 3 auditors (COLOR-001 + TYPO-001 + FOCUS-001) to complete.
|
|
52
|
+
|
|
53
|
+
Since all 3 are spawned together and waited on together:
|
|
54
|
+
```javascript
|
|
55
|
+
// Spawn all 3 auditors
|
|
56
|
+
spawn_agent({ agent_type: "team_worker", task_name: "COLOR-001", ... })
|
|
57
|
+
spawn_agent({ agent_type: "team_worker", task_name: "TYPO-001", ... })
|
|
58
|
+
spawn_agent({ agent_type: "team_worker", task_name: "FOCUS-001", ... })
|
|
59
|
+
|
|
60
|
+
// Wait for ALL 3 to complete
|
|
61
|
+
wait_agent({ targets: ["COLOR-001", "TYPO-001", "FOCUS-001"], timeout_ms: 900000 })
|
|
62
|
+
|
|
63
|
+
// Close all 3
|
|
64
|
+
close_agent({ target: "COLOR-001" })
|
|
65
|
+
close_agent({ target: "TYPO-001" })
|
|
66
|
+
close_agent({ target: "FOCUS-001" })
|
|
67
|
+
|
|
68
|
+
// Mark all 3 completed in tasks.json
|
|
69
|
+
// Then spawn REMED-001
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
6. **GC loop handling** (full mode, after FIX-001 completes):
|
|
73
|
+
|
|
74
|
+
Spawn COLOR-002 + FOCUS-002 in parallel, wait for both:
|
|
75
|
+
```javascript
|
|
76
|
+
spawn_agent({ agent_type: "team_worker", task_name: "COLOR-002", ... })
|
|
77
|
+
spawn_agent({ agent_type: "team_worker", task_name: "FOCUS-002", ... })
|
|
78
|
+
wait_agent({ targets: ["COLOR-002", "FOCUS-002"], timeout_ms: 900000 })
|
|
79
|
+
close_agent({ target: "COLOR-002" })
|
|
80
|
+
close_agent({ target: "FOCUS-002" })
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
Read re-audit results:
|
|
84
|
+
|
|
85
|
+
| Signal | Condition | Action |
|
|
86
|
+
|--------|-----------|--------|
|
|
87
|
+
| All pass | No critical/high issues remaining | GC converged -> handleComplete |
|
|
88
|
+
| Issues remain | Critical/high issues found | gc_rounds < max -> create FIX-002 + re-audit tasks |
|
|
89
|
+
| Any | gc_rounds >= max | Escalate to user |
|
|
90
|
+
|
|
91
|
+
**GC Fix Task Creation** (when re-audit finds issues):
|
|
92
|
+
```json
|
|
93
|
+
{
|
|
94
|
+
"FIX-002": {
|
|
95
|
+
"title": "Address remaining issues from re-audit",
|
|
96
|
+
"description": "PURPOSE: Address remaining issues from re-audit | Success: All critical/high issues resolved\nTASK:\n - Parse re-audit reports for remaining issues\n - Apply targeted fixes for color and focus issues\nCONTEXT:\n - Session: <session-folder>\n - Upstream artifacts: re-audit/color-audit-002.md, re-audit/focus-audit-002.md",
|
|
97
|
+
"role": "fix-implementer",
|
|
98
|
+
"prefix": "FIX",
|
|
99
|
+
"deps": ["COLOR-002", "FOCUS-002"],
|
|
100
|
+
"status": "pending",
|
|
101
|
+
"findings": "",
|
|
102
|
+
"error": ""
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
```
|
|
106
|
+
Then create new re-audit tasks with deps on FIX-002. Increment gc_rounds.
|
|
107
|
+
|
|
108
|
+
**GC Escalation Options** (when max rounds exceeded):
|
|
109
|
+
1. Accept current state - acknowledge remaining issues
|
|
110
|
+
2. Try one more round
|
|
111
|
+
3. Terminate
|
|
112
|
+
|
|
113
|
+
7. -> handleSpawnNext
|
|
114
|
+
|
|
115
|
+
## handleCheck
|
|
116
|
+
|
|
117
|
+
Read-only status report from tasks.json, then STOP.
|
|
118
|
+
|
|
119
|
+
```
|
|
120
|
+
Pipeline Status (<pipeline-mode>):
|
|
121
|
+
[DONE] COLOR-001 (color-auditor) -> audits/color/color-audit-001.md
|
|
122
|
+
[DONE] TYPO-001 (typo-auditor) -> audits/typography/typo-audit-001.md
|
|
123
|
+
[RUN] FOCUS-001 (focus-auditor) -> auditing focus...
|
|
124
|
+
[WAIT] REMED-001 (remediation-planner) -> blocked by COLOR-001, TYPO-001, FOCUS-001
|
|
125
|
+
[WAIT] FIX-001 (fix-implementer) -> blocked by REMED-001
|
|
126
|
+
[WAIT] COLOR-002 (color-auditor) -> blocked by FIX-001
|
|
127
|
+
[WAIT] FOCUS-002 (focus-auditor) -> blocked by FIX-001
|
|
128
|
+
|
|
129
|
+
Fan-in: 2/3 audits complete
|
|
130
|
+
GC Rounds: 0/2
|
|
131
|
+
Session: <session-id>
|
|
132
|
+
Commands: 'resume' to advance | 'check' to refresh
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
Output status -- do NOT advance pipeline.
|
|
136
|
+
|
|
137
|
+
## handleResume
|
|
138
|
+
|
|
139
|
+
**Agent Health Check** (v4):
|
|
140
|
+
```
|
|
141
|
+
// Verify actual running agents match session state
|
|
142
|
+
const runningAgents = list_agents({})
|
|
143
|
+
// For each active_agent in tasks.json:
|
|
144
|
+
// - If agent NOT in runningAgents -> agent crashed
|
|
145
|
+
// - Reset that task to pending, remove from active_agents
|
|
146
|
+
// This prevents stale agent references from blocking the pipeline
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
1. Audit tasks.json for inconsistencies:
|
|
150
|
+
- Tasks stuck in "in_progress" -> reset to "pending"
|
|
151
|
+
- Tasks with completed deps but still "pending" -> include in spawn list
|
|
152
|
+
2. -> handleSpawnNext
|
|
153
|
+
|
|
154
|
+
## handleSpawnNext
|
|
155
|
+
|
|
156
|
+
Find ready tasks, spawn workers, wait for results.
|
|
157
|
+
|
|
158
|
+
1. Read tasks.json: completedTasks, inProgressTasks, readyTasks (pending + all deps completed)
|
|
159
|
+
2. No ready + work in progress -> report waiting, STOP
|
|
160
|
+
3. No ready + nothing in progress -> handleComplete
|
|
161
|
+
4. Has ready -> for each:
|
|
162
|
+
a. Check inner loop role with active worker -> skip (worker picks up)
|
|
163
|
+
b. Update task status to in_progress in tasks.json
|
|
164
|
+
c. team_msg log -> task_unblocked
|
|
165
|
+
d. Spawn team_worker:
|
|
166
|
+
|
|
167
|
+
```javascript
|
|
168
|
+
// 1) Update status in tasks.json
|
|
169
|
+
state.tasks[taskId].status = 'in_progress'
|
|
170
|
+
|
|
171
|
+
// 2) Spawn worker
|
|
172
|
+
const agentId = spawn_agent({
|
|
173
|
+
agent_type: "team_worker",
|
|
174
|
+
task_name: taskId, // e.g., "COLOR-001" -- enables named targeting
|
|
175
|
+
fork_context: false,
|
|
176
|
+
items: [
|
|
177
|
+
{ type: "text", text: `## Role Assignment
|
|
178
|
+
role: ${role}
|
|
179
|
+
role_spec: ${skillRoot}/roles/${role}/role.md
|
|
180
|
+
session: ${sessionFolder}
|
|
181
|
+
session_id: ${sessionId}
|
|
182
|
+
requirement: ${taskDescription}
|
|
183
|
+
inner_loop: ${innerLoop}
|
|
184
|
+
|
|
185
|
+
Read role_spec file to load Phase 2-4 domain instructions.` },
|
|
186
|
+
|
|
187
|
+
{ type: "text", text: `## Task Context
|
|
188
|
+
task_id: ${taskId}
|
|
189
|
+
title: ${taskTitle}
|
|
190
|
+
description: ${taskDescription}
|
|
191
|
+
pipeline_phase: ${pipelinePhase}` },
|
|
192
|
+
|
|
193
|
+
{ type: "text", text: `## Upstream Context
|
|
194
|
+
${upstreamContext}` }
|
|
195
|
+
]
|
|
196
|
+
})
|
|
197
|
+
|
|
198
|
+
// 3) Track agent
|
|
199
|
+
state.active_agents[taskId] = { agentId, role, started_at: now }
|
|
200
|
+
|
|
201
|
+
// 4) Wait for completion -- use task_name for stable targeting (v4)
|
|
202
|
+
const waitResult = wait_agent({ targets: [taskId], timeout_ms: 900000 })
|
|
203
|
+
if (waitResult.timed_out) {
|
|
204
|
+
state.tasks[taskId].status = 'timed_out'
|
|
205
|
+
close_agent({ target: taskId })
|
|
206
|
+
delete state.active_agents[taskId]
|
|
207
|
+
} else {
|
|
208
|
+
// 5) Collect results and update tasks.json
|
|
209
|
+
state.tasks[taskId].status = 'completed'
|
|
210
|
+
close_agent({ target: taskId }) // Use task_name, not agentId
|
|
211
|
+
delete state.active_agents[taskId]
|
|
212
|
+
}
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
**Parallel spawn rules by mode**:
|
|
216
|
+
|
|
217
|
+
| Mode | Scenario | Spawn Behavior |
|
|
218
|
+
|------|----------|---------------|
|
|
219
|
+
| audit-only | Initial | Spawn COLOR-001 + TYPO-001 + FOCUS-001 in parallel, wait_agent for all 3 |
|
|
220
|
+
| audit-only | After 3 audits complete | Spawn REMED-001 |
|
|
221
|
+
| full | Initial | Spawn COLOR-001 + TYPO-001 + FOCUS-001 in parallel, wait_agent for all 3 |
|
|
222
|
+
| full | After 3 audits complete | Spawn REMED-001 |
|
|
223
|
+
| full | After REMED-001 | Spawn FIX-001 |
|
|
224
|
+
| full | After FIX-001 | Spawn COLOR-002 + FOCUS-002 in parallel, wait_agent for both |
|
|
225
|
+
| full (GC) | After re-audit fan-in | If issues: spawn FIX-002, then new re-audits |
|
|
226
|
+
|
|
227
|
+
**Cross-Agent Supplementary Context** (v4):
|
|
228
|
+
|
|
229
|
+
When spawning workers in a later pipeline phase, send upstream results as supplementary context to already-running workers:
|
|
230
|
+
|
|
231
|
+
```
|
|
232
|
+
// Example: Send audit results to running remediation-planner
|
|
233
|
+
send_message({
|
|
234
|
+
target: "<running-agent-task-name>",
|
|
235
|
+
items: [{ type: "text", text: `## Supplementary Context\n${upstreamFindings}` }]
|
|
236
|
+
})
|
|
237
|
+
// Note: send_message queues info without interrupting the agent's current work
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
Use `send_message` (not `assign_task`) for supplementary info that enriches but doesn't redirect the agent's current task.
|
|
241
|
+
|
|
242
|
+
5. Update tasks.json, output summary, STOP
|
|
243
|
+
|
|
244
|
+
## handleComplete
|
|
245
|
+
|
|
246
|
+
**Cleanup Verification** (v4):
|
|
247
|
+
```
|
|
248
|
+
// Verify all agents are properly closed
|
|
249
|
+
const remaining = list_agents({})
|
|
250
|
+
// If any team agents still running -> close_agent each
|
|
251
|
+
// Ensures clean session shutdown
|
|
252
|
+
```
|
|
253
|
+
|
|
254
|
+
Pipeline done. Generate report and completion action.
|
|
255
|
+
|
|
256
|
+
**Completion check by mode**:
|
|
257
|
+
|
|
258
|
+
| Mode | Completion Condition |
|
|
259
|
+
|------|---------------------|
|
|
260
|
+
| audit-only | All 4 tasks (+ any fix tasks) completed |
|
|
261
|
+
| full | All 7 tasks (+ any GC fix tasks) completed |
|
|
262
|
+
|
|
263
|
+
1. If any tasks not completed -> handleSpawnNext
|
|
264
|
+
2. If all completed -> transition to coordinator Phase 5
|
|
265
|
+
|
|
266
|
+
## handleAdapt
|
|
267
|
+
|
|
268
|
+
Capability gap reported mid-pipeline.
|
|
269
|
+
|
|
270
|
+
1. Parse gap description
|
|
271
|
+
2. Check if existing role covers it -> redirect
|
|
272
|
+
3. Role count < 6 -> generate dynamic role spec
|
|
273
|
+
4. Create new task in tasks.json, spawn worker
|
|
274
|
+
5. Role count >= 6 -> merge or pause
|
|
275
|
+
|
|
276
|
+
## Fast-Advance Reconciliation
|
|
277
|
+
|
|
278
|
+
On every coordinator wake:
|
|
279
|
+
1. Read tasks.json for completed tasks
|
|
280
|
+
2. Sync active_agents with actual state
|
|
281
|
+
3. No duplicate spawns
|
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
# Coordinator Role
|
|
2
|
+
|
|
3
|
+
Visual Accessibility Team coordinator. Orchestrate pipeline: analyze -> dispatch -> spawn -> monitor -> report. Manages parallel fan-in (3 auditors), remediation synthesis, fix implementation, and optional re-audit GC loop.
|
|
4
|
+
|
|
5
|
+
## Scope Lock (READ FIRST -- overrides all other sections)
|
|
6
|
+
|
|
7
|
+
**You are a dispatcher, not a doer.** Your ONLY outputs are:
|
|
8
|
+
- Session state files (`.workflow/.team/` directory)
|
|
9
|
+
- `spawn_agent` / `wait_agent` / `close_agent` / `send_message` / `assign_task` calls
|
|
10
|
+
- Status reports to the user / `request_user_input` prompts
|
|
11
|
+
|
|
12
|
+
**FORBIDDEN** (even if the task seems trivial):
|
|
13
|
+
```
|
|
14
|
+
WRONG: Read/Grep/Glob on project source code -- worker work
|
|
15
|
+
WRONG: Bash("ccw cli ...") -- worker work
|
|
16
|
+
WRONG: Edit/Write on project source files -- worker work
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
**Self-check gate**: Before ANY tool call, ask: "Is this orchestration or project work? If project work -> STOP -> spawn worker."
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## Identity
|
|
24
|
+
- **Name**: coordinator | **Tag**: [coordinator]
|
|
25
|
+
- **Responsibility**: Analyze scope -> Create session -> Dispatch tasks -> Monitor progress -> Report results
|
|
26
|
+
|
|
27
|
+
## Boundaries
|
|
28
|
+
|
|
29
|
+
### MUST
|
|
30
|
+
- All output (team_msg, logs) must carry `[coordinator]` identifier
|
|
31
|
+
- Use `team_worker` agent type for all worker spawns (NOT `general-purpose`)
|
|
32
|
+
- Dispatch tasks with proper dependency chains and deps in tasks.json
|
|
33
|
+
- Spawn COLOR-001, TYPO-001, FOCUS-001 in PARALLEL (no deps between them)
|
|
34
|
+
- Monitor worker progress via wait_agent and process results
|
|
35
|
+
- Handle Generator-Critic loops with max 2 iterations
|
|
36
|
+
- Maintain session state persistence (tasks.json)
|
|
37
|
+
- **Always proceed through full Phase 1-5 workflow, never skip to direct execution**
|
|
38
|
+
- Use `send_message` for supplementary context (non-interrupting) and `assign_task` for triggering new work
|
|
39
|
+
- Use `list_agents` for session resume health checks and cleanup verification
|
|
40
|
+
|
|
41
|
+
### MUST NOT
|
|
42
|
+
- Implement domain logic (auditing, planning, fixing) -- workers handle this
|
|
43
|
+
- Spawn workers without creating tasks first
|
|
44
|
+
- Skip sync points when configured
|
|
45
|
+
- Force-advance pipeline past failed audit
|
|
46
|
+
- Modify source code or design artifacts directly -- delegate to workers
|
|
47
|
+
- Omit `[coordinator]` identifier in any output
|
|
48
|
+
- Call CLI tools (ccw cli) -- only workers use CLI
|
|
49
|
+
|
|
50
|
+
## Command Execution Protocol
|
|
51
|
+
|
|
52
|
+
When coordinator needs to execute a command (analyze, dispatch, monitor):
|
|
53
|
+
|
|
54
|
+
1. Read `commands/<command>.md`
|
|
55
|
+
2. Follow the workflow defined in the command
|
|
56
|
+
3. Commands are inline execution guides, NOT separate agents
|
|
57
|
+
4. Execute synchronously, complete before proceeding
|
|
58
|
+
|
|
59
|
+
## Entry Router
|
|
60
|
+
|
|
61
|
+
| Detection | Condition | Handler |
|
|
62
|
+
|-----------|-----------|---------|
|
|
63
|
+
| Status check | Args contain "check" or "status" | -> handleCheck (monitor.md) |
|
|
64
|
+
| Manual resume | Args contain "resume" or "continue" | -> handleResume (monitor.md) |
|
|
65
|
+
| Capability gap | Message contains "capability_gap" | -> handleAdapt (monitor.md) |
|
|
66
|
+
| Pipeline complete | All tasks have status "completed" | -> handleComplete (monitor.md) |
|
|
67
|
+
| Interrupted session | Active/paused session exists in .workflow/.team/VA-* | -> Phase 0 |
|
|
68
|
+
| New session | None of above | -> Phase 1 |
|
|
69
|
+
|
|
70
|
+
For check/resume/adapt/complete: load `@commands/monitor.md`, execute matched handler, STOP.
|
|
71
|
+
|
|
72
|
+
## Phase 0: Session Resume Check
|
|
73
|
+
|
|
74
|
+
1. Scan `.workflow/.team/VA-*/tasks.json` for active/paused sessions
|
|
75
|
+
2. No sessions -> Phase 1
|
|
76
|
+
3. Single session -> reconcile (read tasks.json, reset in_progress->pending, kick first ready task)
|
|
77
|
+
4. Multiple -> request_user_input for selection
|
|
78
|
+
|
|
79
|
+
## Phase 1: Requirement Clarification
|
|
80
|
+
|
|
81
|
+
TEXT-LEVEL ONLY. No source code reading.
|
|
82
|
+
|
|
83
|
+
1. Parse task description from arguments
|
|
84
|
+
2. Detect audit scope:
|
|
85
|
+
|
|
86
|
+
| Signal | Pipeline Mode |
|
|
87
|
+
|--------|---------------|
|
|
88
|
+
| "audit only", "no fixes", "assessment" | audit-only |
|
|
89
|
+
| "full audit", "fix", "remediate", "full cycle" | full |
|
|
90
|
+
| Unclear | ask user |
|
|
91
|
+
|
|
92
|
+
3. Ask for missing parameters if scope unclear:
|
|
93
|
+
```
|
|
94
|
+
request_user_input({
|
|
95
|
+
questions: [
|
|
96
|
+
{ question: "Accessibility audit scope?", header: "Scope", options: [
|
|
97
|
+
{ label: "Audit only", description: "Color + typography + focus audit with remediation plan" },
|
|
98
|
+
{ label: "Full cycle", description: "Audit + fix + re-audit verification" }
|
|
99
|
+
]},
|
|
100
|
+
{ question: "Target?", header: "Target", options: [
|
|
101
|
+
{ label: "URL (rendered page)" },
|
|
102
|
+
{ label: "Component path (source)" },
|
|
103
|
+
{ label: "Full site" }
|
|
104
|
+
]}
|
|
105
|
+
]
|
|
106
|
+
})
|
|
107
|
+
```
|
|
108
|
+
4. Delegate to `@commands/analyze.md` -> output scope context
|
|
109
|
+
5. Record: pipeline_mode, target, wcag_level
|
|
110
|
+
|
|
111
|
+
## Phase 2: Create Session + Initialize
|
|
112
|
+
|
|
113
|
+
1. Resolve workspace paths (MUST do first):
|
|
114
|
+
- `project_root` = result of `Bash({ command: "pwd" })`
|
|
115
|
+
- `skill_root` = `<project_root>/.codex/skills/team-visual-a11y`
|
|
116
|
+
2. Generate session ID: `VA-<slug>-<YYYY-MM-DD>`
|
|
117
|
+
3. Create session folder structure:
|
|
118
|
+
```
|
|
119
|
+
.workflow/.team/VA-<slug>-<date>/audits/color/
|
|
120
|
+
.workflow/.team/VA-<slug>-<date>/audits/typography/
|
|
121
|
+
.workflow/.team/VA-<slug>-<date>/audits/focus/
|
|
122
|
+
.workflow/.team/VA-<slug>-<date>/remediation/
|
|
123
|
+
.workflow/.team/VA-<slug>-<date>/fixes/
|
|
124
|
+
.workflow/.team/VA-<slug>-<date>/re-audit/
|
|
125
|
+
.workflow/.team/VA-<slug>-<date>/evidence/
|
|
126
|
+
.workflow/.team/VA-<slug>-<date>/.msg/
|
|
127
|
+
```
|
|
128
|
+
4. Initialize `.msg/meta.json` via team_msg state_update with pipeline metadata
|
|
129
|
+
5. Write initial tasks.json:
|
|
130
|
+
```json
|
|
131
|
+
{
|
|
132
|
+
"session_id": "<id>",
|
|
133
|
+
"pipeline_mode": "<audit-only|full>",
|
|
134
|
+
"target": "<target>",
|
|
135
|
+
"wcag_level": "<AA|AAA>",
|
|
136
|
+
"created_at": "<ISO timestamp>",
|
|
137
|
+
"gc_rounds": 0,
|
|
138
|
+
"max_gc_rounds": 2,
|
|
139
|
+
"active_agents": {},
|
|
140
|
+
"tasks": {}
|
|
141
|
+
}
|
|
142
|
+
```
|
|
143
|
+
6. Do NOT spawn workers yet - deferred to Phase 4
|
|
144
|
+
|
|
145
|
+
## Phase 3: Create Task Chain
|
|
146
|
+
|
|
147
|
+
Delegate to `@commands/dispatch.md`. Task chains by mode:
|
|
148
|
+
|
|
149
|
+
| Mode | Task Chain |
|
|
150
|
+
|------|------------|
|
|
151
|
+
| audit-only | [COLOR-001 + TYPO-001 + FOCUS-001 parallel] -> REMED-001 |
|
|
152
|
+
| full | [COLOR-001 + TYPO-001 + FOCUS-001 parallel] -> REMED-001 -> FIX-001 -> [COLOR-002 + FOCUS-002 parallel] |
|
|
153
|
+
|
|
154
|
+
## Phase 4: Spawn-and-Wait
|
|
155
|
+
|
|
156
|
+
**CRITICAL**: Spawn COLOR-001, TYPO-001, FOCUS-001 in PARALLEL (all 3 have NO deps).
|
|
157
|
+
|
|
158
|
+
Delegate to `@commands/monitor.md#handleSpawnNext`:
|
|
159
|
+
1. Find ready tasks (pending + deps resolved)
|
|
160
|
+
2. Spawn team_worker agents via spawn_agent, wait_agent for results
|
|
161
|
+
3. Output status summary
|
|
162
|
+
4. STOP
|
|
163
|
+
|
|
164
|
+
## Phase 5: Report + Completion Action
|
|
165
|
+
|
|
166
|
+
1. Read session state -> collect all results
|
|
167
|
+
2. List deliverables:
|
|
168
|
+
|
|
169
|
+
| Deliverable | Path |
|
|
170
|
+
|-------------|------|
|
|
171
|
+
| Color Audit | <session>/audits/color/color-audit-001.md |
|
|
172
|
+
| Typography Audit | <session>/audits/typography/typo-audit-001.md |
|
|
173
|
+
| Focus Audit | <session>/audits/focus/focus-audit-001.md |
|
|
174
|
+
| Remediation Plan | <session>/remediation/remediation-plan.md |
|
|
175
|
+
| Fix Summary | <session>/fixes/fix-summary-001.md (full mode) |
|
|
176
|
+
| Re-audit Color | <session>/re-audit/color-audit-002.md (full mode) |
|
|
177
|
+
| Re-audit Focus | <session>/re-audit/focus-audit-002.md (full mode) |
|
|
178
|
+
| Evidence | <session>/evidence/*.png (if Chrome DevTools used) |
|
|
179
|
+
|
|
180
|
+
3. Calculate: completed_tasks, gc_rounds, issues_found, issues_fixed, wcag_compliance_level
|
|
181
|
+
4. Output pipeline summary with [coordinator] prefix
|
|
182
|
+
5. Execute completion action:
|
|
183
|
+
```
|
|
184
|
+
request_user_input({
|
|
185
|
+
questions: [{ question: "Pipeline complete. What next?", header: "Completion", options: [
|
|
186
|
+
{ label: "Archive & Clean", description: "Archive session and clean up resources" },
|
|
187
|
+
{ label: "Keep Active", description: "Keep session for follow-up work" },
|
|
188
|
+
{ label: "Export Results", description: "Export deliverables to specified location" }
|
|
189
|
+
]}]
|
|
190
|
+
})
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
## v4 Coordination Patterns
|
|
194
|
+
|
|
195
|
+
### Message Semantics
|
|
196
|
+
- **send_message**: Queue supplementary info to a running agent. Does NOT interrupt current processing. Use for: sharing upstream results, context enrichment, FYI notifications.
|
|
197
|
+
- **assign_task**: Assign new work and trigger processing. Use for: waking idle agents, redirecting work, requesting new output.
|
|
198
|
+
|
|
199
|
+
### Agent Lifecycle Management
|
|
200
|
+
- **list_agents({})**: Returns all running agents. Use in handleResume to reconcile session state with actual running agents. Use in handleComplete to verify clean shutdown.
|
|
201
|
+
- **Named targeting**: Workers spawned with `task_name: "<task-id>"` can be addressed by name in send_message, assign_task, and close_agent calls.
|
|
202
|
+
|
|
203
|
+
## Error Handling
|
|
204
|
+
|
|
205
|
+
| Error | Resolution |
|
|
206
|
+
|-------|------------|
|
|
207
|
+
| Task timeout | Log, mark failed, ask user to retry or skip |
|
|
208
|
+
| Worker crash | Reset task to pending, respawn worker |
|
|
209
|
+
| Dependency cycle | Detect, report to user, halt |
|
|
210
|
+
| Invalid scope | Reject with error, ask to clarify |
|
|
211
|
+
| Session corruption | Attempt recovery, fallback to manual reconciliation |
|
|
212
|
+
| GC loop stuck > 2 rounds | Escalate to user: accept / try one more / terminate |
|
|
213
|
+
| Chrome DevTools unavailable | Mark in meta.json, auditors degrade to static analysis |
|