claude-code-workflow 7.2.28 → 7.2.30

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.
Files changed (348) hide show
  1. package/.ccw/workflows/cli-templates/schemas/plan-overview-base-schema.json +2 -2
  2. package/.ccw/workflows/cli-templates/schemas/task-schema.json +14 -7
  3. package/.claude/agents/action-planning-agent.md +7 -4
  4. package/.claude/agents/cli-explore-agent.md +77 -63
  5. package/.claude/agents/cli-lite-planning-agent.md +11 -10
  6. package/.claude/agents/issue-plan-agent.md +421 -426
  7. package/.claude/commands/workflow/spec/setup.md +1 -1
  8. package/.claude/skills/ccw-chain/SKILL.md +119 -0
  9. package/.claude/skills/ccw-chain/chains/ccw-cycle.json +21 -0
  10. package/.claude/skills/ccw-chain/chains/ccw-exploration.json +47 -0
  11. package/.claude/skills/ccw-chain/chains/ccw-issue.json +33 -0
  12. package/.claude/skills/ccw-chain/chains/ccw-lightweight.json +57 -0
  13. package/.claude/skills/ccw-chain/chains/ccw-main.json +52 -0
  14. package/.claude/skills/ccw-chain/chains/ccw-standard.json +39 -0
  15. package/.claude/skills/ccw-chain/chains/ccw-team.json +10 -0
  16. package/.claude/skills/ccw-chain/chains/ccw-with-file.json +31 -0
  17. package/.claude/skills/ccw-chain/phases/analyze-with-file.md +788 -0
  18. package/.claude/skills/ccw-chain/phases/brainstorm/SKILL.md +408 -0
  19. package/.claude/skills/ccw-chain/phases/brainstorm/phases/01-mode-routing.md +207 -0
  20. package/.claude/skills/ccw-chain/phases/brainstorm/phases/02-artifacts.md +567 -0
  21. package/.claude/skills/ccw-chain/phases/brainstorm/phases/03-role-analysis.md +748 -0
  22. package/.claude/skills/ccw-chain/phases/brainstorm/phases/04-synthesis.md +827 -0
  23. package/.claude/skills/ccw-chain/phases/brainstorm-with-file.md +482 -0
  24. package/.claude/skills/ccw-chain/phases/collaborative-plan-with-file.md +639 -0
  25. package/.claude/skills/ccw-chain/phases/debug-with-file.md +656 -0
  26. package/.claude/skills/ccw-chain/phases/integration-test-cycle.md +936 -0
  27. package/.claude/skills/ccw-chain/phases/issue-convert-to-plan.md +720 -0
  28. package/.claude/skills/ccw-chain/phases/issue-discover.md +483 -0
  29. package/.claude/skills/ccw-chain/phases/issue-execute.md +629 -0
  30. package/.claude/skills/ccw-chain/phases/issue-from-brainstorm.md +382 -0
  31. package/.claude/skills/ccw-chain/phases/issue-plan.md +343 -0
  32. package/.claude/skills/ccw-chain/phases/issue-queue.md +464 -0
  33. package/.claude/skills/ccw-chain/phases/refactor-cycle.md +852 -0
  34. package/.claude/skills/ccw-chain/phases/review-cycle/SKILL.md +132 -0
  35. package/.claude/skills/ccw-chain/phases/review-cycle/phases/review-fix.md +760 -0
  36. package/.claude/skills/ccw-chain/phases/review-cycle/phases/review-module.md +764 -0
  37. package/.claude/skills/ccw-chain/phases/review-cycle/phases/review-session.md +775 -0
  38. package/.claude/skills/ccw-chain/phases/roadmap-with-file.md +544 -0
  39. package/.claude/skills/ccw-chain/phases/spec-generator/SKILL.md +338 -0
  40. package/.claude/skills/ccw-chain/phases/spec-generator/phases/01-5-requirement-clarification.md +404 -0
  41. package/.claude/skills/ccw-chain/phases/spec-generator/phases/01-discovery.md +257 -0
  42. package/.claude/skills/ccw-chain/phases/spec-generator/phases/02-product-brief.md +274 -0
  43. package/.claude/skills/ccw-chain/phases/spec-generator/phases/03-requirements.md +184 -0
  44. package/.claude/skills/ccw-chain/phases/spec-generator/phases/04-architecture.md +248 -0
  45. package/.claude/skills/ccw-chain/phases/spec-generator/phases/05-epics-stories.md +178 -0
  46. package/.claude/skills/ccw-chain/phases/spec-generator/phases/06-5-auto-fix.md +144 -0
  47. package/.claude/skills/ccw-chain/phases/spec-generator/phases/06-readiness-check.md +480 -0
  48. package/.claude/skills/ccw-chain/phases/team-planex.md +123 -0
  49. package/.claude/skills/ccw-chain/phases/ui-design-explore-auto.md +678 -0
  50. package/.claude/skills/ccw-chain/phases/unified-execute-with-file.md +870 -0
  51. package/.claude/skills/ccw-chain/phases/workflow-execute/SKILL.md +625 -0
  52. package/.claude/skills/ccw-chain/phases/workflow-execute/phases/06-review.md +215 -0
  53. package/.claude/skills/ccw-chain/phases/workflow-lite-plan.md +616 -0
  54. package/.claude/skills/ccw-chain/phases/workflow-multi-cli-plan.md +424 -0
  55. package/.claude/skills/ccw-chain/phases/workflow-plan/SKILL.md +466 -0
  56. package/.claude/skills/ccw-chain/phases/workflow-plan/phases/01-session-discovery.md +99 -0
  57. package/.claude/skills/ccw-chain/phases/workflow-plan/phases/02-context-gathering.md +338 -0
  58. package/.claude/skills/ccw-chain/phases/workflow-plan/phases/03-conflict-resolution.md +422 -0
  59. package/.claude/skills/ccw-chain/phases/workflow-plan/phases/04-task-generation.md +440 -0
  60. package/.claude/skills/ccw-chain/phases/workflow-plan/phases/05-plan-verify.md +395 -0
  61. package/.claude/skills/ccw-chain/phases/workflow-plan/phases/06-replan.md +594 -0
  62. package/.claude/skills/ccw-chain/phases/workflow-tdd-plan/SKILL.md +527 -0
  63. package/.claude/skills/ccw-chain/phases/workflow-tdd-plan/phases/01-session-discovery.md +57 -0
  64. package/.claude/skills/ccw-chain/phases/workflow-tdd-plan/phases/02-context-gathering.md +407 -0
  65. package/.claude/skills/ccw-chain/phases/workflow-tdd-plan/phases/03-test-coverage-analysis.md +172 -0
  66. package/.claude/skills/ccw-chain/phases/workflow-tdd-plan/phases/04-conflict-resolution.md +426 -0
  67. package/.claude/skills/ccw-chain/phases/workflow-tdd-plan/phases/05-tdd-task-generation.md +473 -0
  68. package/.claude/skills/ccw-chain/phases/workflow-tdd-plan/phases/06-tdd-structure-validation.md +189 -0
  69. package/.claude/skills/ccw-chain/phases/workflow-tdd-plan/phases/07-tdd-verify.md +635 -0
  70. package/.claude/skills/ccw-chain/phases/workflow-test-fix/SKILL.md +482 -0
  71. package/.claude/skills/ccw-chain/phases/workflow-test-fix/phases/01-session-start.md +60 -0
  72. package/.claude/skills/ccw-chain/phases/workflow-test-fix/phases/02-test-context-gather.md +493 -0
  73. package/.claude/skills/ccw-chain/phases/workflow-test-fix/phases/03-test-concept-enhanced.md +150 -0
  74. package/.claude/skills/ccw-chain/phases/workflow-test-fix/phases/04-test-task-generate.md +346 -0
  75. package/.claude/skills/ccw-chain/phases/workflow-test-fix/phases/05-test-cycle-execute.md +538 -0
  76. package/.claude/skills/ccw-chain/specs/auto-mode.md +47 -0
  77. package/.claude/skills/ccw-chain/specs/intent-patterns.md +60 -0
  78. package/.claude/skills/chain-loader/SKILL.md +78 -0
  79. package/.claude/skills/chain-loader/phases/01-analyze-skill.md +53 -0
  80. package/.claude/skills/chain-loader/phases/02-design-graph.md +73 -0
  81. package/.claude/skills/chain-loader/phases/03-generate-validate.md +75 -0
  82. package/.claude/skills/chain-loader/specs/chain-schema.md +99 -0
  83. package/.claude/skills/chain-loader/specs/design-patterns.md +99 -0
  84. package/.claude/skills/chain-loader/templates/chain-json.md +63 -0
  85. package/.claude/skills/review-cycle/phases/review-module.md +764 -764
  86. package/.claude/skills/review-cycle/phases/review-session.md +775 -775
  87. package/.claude/skills/workflow-multi-cli-plan/SKILL.md +2 -2
  88. package/.claude/skills/workflow-plan/phases/03-conflict-resolution.md +422 -422
  89. package/.claude/skills/workflow-plan/phases/05-plan-verify.md +395 -395
  90. package/.claude/skills/workflow-tdd-plan/phases/02-context-gathering.md +407 -407
  91. package/.claude/skills/workflow-tdd-plan/phases/04-conflict-resolution.md +426 -426
  92. package/.claude/skills/workflow-test-fix/phases/02-test-context-gather.md +493 -493
  93. package/.codex/skills/brainstorm/SKILL.md +3 -3
  94. package/.codex/skills/clean/SKILL.md +3 -3
  95. package/.codex/skills/issue-discover/SKILL.md +13 -13
  96. package/.codex/skills/issue-discover/phases/02-discover.md +4 -4
  97. package/.codex/skills/issue-discover/phases/03-discover-by-prompt.md +3 -3
  98. package/.codex/skills/parallel-dev-cycle/SKILL.md +4 -4
  99. package/.codex/skills/parallel-dev-cycle/phases/02-agent-execution.md +6 -6
  100. package/.codex/skills/parallel-dev-cycle/phases/03-result-aggregation.md +10 -10
  101. package/.codex/skills/review-cycle/SKILL.md +10 -10
  102. package/.codex/skills/review-cycle/phases/02-parallel-review.md +6 -6
  103. package/.codex/skills/review-cycle/phases/04-iterative-deep-dive.md +4 -4
  104. package/.codex/skills/review-cycle/phases/07-fix-parallel-planning.md +4 -4
  105. package/.codex/skills/review-cycle/phases/08-fix-execution.md +2 -2
  106. package/.codex/skills/roadmap-with-file/SKILL.md +14 -14
  107. package/.codex/skills/spec-generator/README.md +1 -1
  108. package/.codex/skills/spec-generator/SKILL.md +184 -88
  109. package/.codex/skills/spec-generator/phases/01-5-requirement-clarification.md +4 -7
  110. package/.codex/skills/spec-generator/phases/01-discovery.md +30 -11
  111. package/.codex/skills/spec-generator/phases/02-product-brief.md +2 -5
  112. package/.codex/skills/spec-generator/phases/03-requirements.md +4 -6
  113. package/.codex/skills/spec-generator/phases/04-architecture.md +4 -6
  114. package/.codex/skills/spec-generator/phases/05-epics-stories.md +4 -6
  115. package/.codex/skills/spec-generator/phases/06-5-auto-fix.md +4 -5
  116. package/.codex/skills/spec-generator/phases/06-readiness-check.md +8 -8
  117. package/.codex/skills/spec-generator/phases/07-issue-export.md +2 -2
  118. package/.codex/skills/spec-setup/SKILL.md +4 -4
  119. package/.codex/skills/workflow-plan/SKILL.md +6 -6
  120. package/.codex/skills/workflow-tdd-plan/SKILL.md +5 -5
  121. package/.codex/skills/workflow-test-fix-cycle/SKILL.md +19 -19
  122. package/.codex/skills/workflow-test-fix-cycle/phases/01-test-fix-gen.md +5 -5
  123. package/.codex/skills/workflow-test-fix-cycle/phases/02-test-cycle-execute.md +5 -5
  124. package/README.md +14 -0
  125. package/ccw/dist/core/routes/litellm-api-routes.d.ts.map +1 -1
  126. package/ccw/dist/core/routes/litellm-api-routes.js +0 -23
  127. package/ccw/dist/core/routes/litellm-api-routes.js.map +1 -1
  128. package/ccw/dist/tools/chain-loader.d.ts +10 -0
  129. package/ccw/dist/tools/chain-loader.d.ts.map +1 -0
  130. package/ccw/dist/tools/chain-loader.js +642 -0
  131. package/ccw/dist/tools/chain-loader.js.map +1 -0
  132. package/ccw/dist/tools/index.d.ts.map +1 -1
  133. package/ccw/dist/tools/index.js +2 -0
  134. package/ccw/dist/tools/index.js.map +1 -1
  135. package/ccw/dist/tools/json-builder.js +20 -0
  136. package/ccw/dist/tools/json-builder.js.map +1 -1
  137. package/ccw/dist/types/chain-types.d.ts +72 -0
  138. package/ccw/dist/types/chain-types.d.ts.map +1 -0
  139. package/ccw/dist/types/chain-types.js +5 -0
  140. package/ccw/dist/types/chain-types.js.map +1 -0
  141. package/ccw/frontend/dist/assets/{AlertDialog-BjP1ydDR.js → AlertDialog-exlTDW81.js} +3 -3
  142. package/ccw/frontend/dist/assets/{AlertDialog-BjP1ydDR.js.map → AlertDialog-exlTDW81.js.map} +1 -1
  143. package/ccw/frontend/dist/assets/{AnalysisPage-CAX3xqMf.js → AnalysisPage-cgV9LfAI.js} +2 -2
  144. package/ccw/frontend/dist/assets/{AnalysisPage-CAX3xqMf.js.map → AnalysisPage-cgV9LfAI.js.map} +1 -1
  145. package/ccw/frontend/dist/assets/{ApiSettingsPage-CtWlmztq.js → ApiSettingsPage-Dk5jJdWt.js} +2 -2
  146. package/ccw/frontend/dist/assets/{ApiSettingsPage-CtWlmztq.js.map → ApiSettingsPage-Dk5jJdWt.js.map} +1 -1
  147. package/ccw/frontend/dist/assets/{CliModeToggle-hR4a-eLX.js → CliModeToggle-Be9xsPiv.js} +2 -2
  148. package/ccw/frontend/dist/assets/{CliModeToggle-hR4a-eLX.js.map → CliModeToggle-Be9xsPiv.js.map} +1 -1
  149. package/ccw/frontend/dist/assets/{CliSessionSharePage-DzNPkFN9.js → CliSessionSharePage-Bh9jBtPI.js} +2 -2
  150. package/ccw/frontend/dist/assets/{CliSessionSharePage-DzNPkFN9.js.map → CliSessionSharePage-Bh9jBtPI.js.map} +1 -1
  151. package/ccw/frontend/dist/assets/{CliViewerPage-BPEGN4TT.js → CliViewerPage-BrE-oyEq.js} +2 -2
  152. package/ccw/frontend/dist/assets/{CliViewerPage-BPEGN4TT.js.map → CliViewerPage-BrE-oyEq.js.map} +1 -1
  153. package/ccw/frontend/dist/assets/{CodexLensPage-Cf0r2RHY.js → CodexLensPage-Cd3nrC93.js} +2 -2
  154. package/ccw/frontend/dist/assets/{CodexLensPage-Cf0r2RHY.js.map → CodexLensPage-Cd3nrC93.js.map} +1 -1
  155. package/ccw/frontend/dist/assets/{Collapsible-DEm1rJ4h.js → Collapsible-DXFl3VKF.js} +2 -2
  156. package/ccw/frontend/dist/assets/{Collapsible-DEm1rJ4h.js.map → Collapsible-DXFl3VKF.js.map} +1 -1
  157. package/ccw/frontend/dist/assets/{CommandsManagerPage-BpeWw8HO.js → CommandsManagerPage-IV8zpjgX.js} +2 -2
  158. package/ccw/frontend/dist/assets/{CommandsManagerPage-BpeWw8HO.js.map → CommandsManagerPage-IV8zpjgX.js.map} +1 -1
  159. package/ccw/frontend/dist/assets/{DeepWikiPage-BEsmh2vF.js → DeepWikiPage-CpDxtmRX.js} +2 -2
  160. package/ccw/frontend/dist/assets/{DeepWikiPage-BEsmh2vF.js.map → DeepWikiPage-CpDxtmRX.js.map} +1 -1
  161. package/ccw/frontend/dist/assets/{EndpointsPage-B30SFdtU.js → EndpointsPage-BchjWe7s.js} +2 -2
  162. package/ccw/frontend/dist/assets/{EndpointsPage-B30SFdtU.js.map → EndpointsPage-BchjWe7s.js.map} +1 -1
  163. package/ccw/frontend/dist/assets/{ExplorerPage-BVvMpg1O.js → ExplorerPage-CbWvaJ0y.js} +2 -2
  164. package/ccw/frontend/dist/assets/{ExplorerPage-BVvMpg1O.js.map → ExplorerPage-CbWvaJ0y.js.map} +1 -1
  165. package/ccw/frontend/dist/assets/{FixSessionPage-CL73dHbh.js → FixSessionPage-YMjVRiCk.js} +2 -2
  166. package/ccw/frontend/dist/assets/{FixSessionPage-CL73dHbh.js.map → FixSessionPage-YMjVRiCk.js.map} +1 -1
  167. package/ccw/frontend/dist/assets/{FloatingFileBrowser-BL-28lMZ.js → FloatingFileBrowser-JW2ehYY_.js} +2 -2
  168. package/ccw/frontend/dist/assets/{FloatingFileBrowser-BL-28lMZ.js.map → FloatingFileBrowser-JW2ehYY_.js.map} +1 -1
  169. package/ccw/frontend/dist/assets/{FloatingPanel-BzZDciHZ.js → FloatingPanel-BtqzqDVq.js} +2 -2
  170. package/ccw/frontend/dist/assets/{FloatingPanel-BzZDciHZ.js.map → FloatingPanel-BtqzqDVq.js.map} +1 -1
  171. package/ccw/frontend/dist/assets/{GraphExplorerPage-CDp6-d8P.js → GraphExplorerPage-BsJL_W4d.js} +3 -3
  172. package/ccw/frontend/dist/assets/{GraphExplorerPage-CDp6-d8P.js.map → GraphExplorerPage-BsJL_W4d.js.map} +1 -1
  173. package/ccw/frontend/dist/assets/{HistoryPage-fZY_7O9n.js → HistoryPage-BuWpQ7k5.js} +2 -2
  174. package/ccw/frontend/dist/assets/{HistoryPage-fZY_7O9n.js.map → HistoryPage-BuWpQ7k5.js.map} +1 -1
  175. package/ccw/frontend/dist/assets/{HookManagerPage-4LJeC9bq.js → HookManagerPage-D0BtMIWy.js} +2 -2
  176. package/ccw/frontend/dist/assets/{HookManagerPage-4LJeC9bq.js.map → HookManagerPage-D0BtMIWy.js.map} +1 -1
  177. package/ccw/frontend/dist/assets/{InstallationsPage-Bpigrbhw.js → InstallationsPage-C7dwsAKG.js} +2 -2
  178. package/ccw/frontend/dist/assets/{InstallationsPage-Bpigrbhw.js.map → InstallationsPage-C7dwsAKG.js.map} +1 -1
  179. package/ccw/frontend/dist/assets/{IssueHubPage-BP0zJc1R.js → IssueHubPage-D0nCNaeB.js} +2 -2
  180. package/ccw/frontend/dist/assets/{IssueHubPage-BP0zJc1R.js.map → IssueHubPage-D0nCNaeB.js.map} +1 -1
  181. package/ccw/frontend/dist/assets/{LiteTasksPage-CSt2oVKQ.js → LiteTasksPage-B5c2Kb9r.js} +3 -3
  182. package/ccw/frontend/dist/assets/{LiteTasksPage-CSt2oVKQ.js.map → LiteTasksPage-B5c2Kb9r.js.map} +1 -1
  183. package/ccw/frontend/dist/assets/{McpManagerPage-B-xaMA0w.js → McpManagerPage-C-S5CehM.js} +2 -2
  184. package/ccw/frontend/dist/assets/{McpManagerPage-B-xaMA0w.js.map → McpManagerPage-C-S5CehM.js.map} +1 -1
  185. package/ccw/frontend/dist/assets/{MemoryPage-CJqo_7DY.js → MemoryPage-P_B0JVUQ.js} +2 -2
  186. package/ccw/frontend/dist/assets/{MemoryPage-CJqo_7DY.js.map → MemoryPage-P_B0JVUQ.js.map} +1 -1
  187. package/ccw/frontend/dist/assets/{NotFoundPage-ibZeQA-Y.js → NotFoundPage-S4Jn9LUE.js} +2 -2
  188. package/ccw/frontend/dist/assets/{NotFoundPage-ibZeQA-Y.js.map → NotFoundPage-S4Jn9LUE.js.map} +1 -1
  189. package/ccw/frontend/dist/assets/{OrchestratorPage-DgJ4ctPQ.js → OrchestratorPage-C2Zlr7AC.js} +2 -2
  190. package/ccw/frontend/dist/assets/{OrchestratorPage-DgJ4ctPQ.js.map → OrchestratorPage-C2Zlr7AC.js.map} +1 -1
  191. package/ccw/frontend/dist/assets/{ProjectOverviewPage-Cit0Yq0D.js → ProjectOverviewPage-CMVfz8s5.js} +2 -2
  192. package/ccw/frontend/dist/assets/{ProjectOverviewPage-Cit0Yq0D.js.map → ProjectOverviewPage-CMVfz8s5.js.map} +1 -1
  193. package/ccw/frontend/dist/assets/{PromptHistoryPage-Ce1HDIK0.js → PromptHistoryPage-YEMjFARX.js} +3 -3
  194. package/ccw/frontend/dist/assets/{PromptHistoryPage-Ce1HDIK0.js.map → PromptHistoryPage-YEMjFARX.js.map} +1 -1
  195. package/ccw/frontend/dist/assets/{ReviewSessionPage-J1KikNrk.js → ReviewSessionPage-DnTm55nG.js} +2 -2
  196. package/ccw/frontend/dist/assets/{ReviewSessionPage-J1KikNrk.js.map → ReviewSessionPage-DnTm55nG.js.map} +1 -1
  197. package/ccw/frontend/dist/assets/{RulesManagerPage-CdBjTmth.js → RulesManagerPage-CUwebtO2.js} +2 -2
  198. package/ccw/frontend/dist/assets/{RulesManagerPage-CdBjTmth.js.map → RulesManagerPage-CUwebtO2.js.map} +1 -1
  199. package/ccw/frontend/dist/assets/{SessionDetailPage-B9ZK7LvX.js → SessionDetailPage-0qyH1Z5P.js} +2 -2
  200. package/ccw/frontend/dist/assets/{SessionDetailPage-B9ZK7LvX.js.map → SessionDetailPage-0qyH1Z5P.js.map} +1 -1
  201. package/ccw/frontend/dist/assets/{SessionsPage-CW_nS5UR.js → SessionsPage-BpgP4087.js} +2 -2
  202. package/ccw/frontend/dist/assets/{SessionsPage-CW_nS5UR.js.map → SessionsPage-BpgP4087.js.map} +1 -1
  203. package/ccw/frontend/dist/assets/SettingsPage-C3SJajeT.js +150 -0
  204. package/ccw/frontend/dist/assets/SettingsPage-C3SJajeT.js.map +1 -0
  205. package/ccw/frontend/dist/assets/SkillsManagerPage-vD9PTsmy.js +7 -0
  206. package/ccw/frontend/dist/assets/SkillsManagerPage-vD9PTsmy.js.map +1 -0
  207. package/ccw/frontend/dist/assets/{SpecsSettingsPage-DJpi9XQL.js → SpecsSettingsPage-DT-yTVkD.js} +4 -4
  208. package/ccw/frontend/dist/assets/{SpecsSettingsPage-DJpi9XQL.js.map → SpecsSettingsPage-DT-yTVkD.js.map} +1 -1
  209. package/ccw/frontend/dist/assets/{Switch-Ac6Ov7uy.js → Switch-CYSPdqWk.js} +2 -2
  210. package/ccw/frontend/dist/assets/{Switch-Ac6Ov7uy.js.map → Switch-CYSPdqWk.js.map} +1 -1
  211. package/ccw/frontend/dist/assets/{TabsNavigation-DZAAspqR.js → TabsNavigation-CPh6Zor1.js} +2 -2
  212. package/ccw/frontend/dist/assets/{TabsNavigation-DZAAspqR.js.map → TabsNavigation-CPh6Zor1.js.map} +1 -1
  213. package/ccw/frontend/dist/assets/{TaskDrawer-BJkwfhIZ.js → TaskDrawer-Ds-8830B.js} +2 -2
  214. package/ccw/frontend/dist/assets/{TaskDrawer-BJkwfhIZ.js.map → TaskDrawer-Ds-8830B.js.map} +1 -1
  215. package/ccw/frontend/dist/assets/{TeamPage-BJgjxBgb.js → TeamPage-CJODUxBk.js} +2 -2
  216. package/ccw/frontend/dist/assets/{TeamPage-BJgjxBgb.js.map → TeamPage-CJODUxBk.js.map} +1 -1
  217. package/ccw/frontend/dist/assets/{TerminalDashboardPage-D1WekoOy.js → TerminalDashboardPage-Cn3fGUuO.js} +3 -3
  218. package/ccw/frontend/dist/assets/{TerminalDashboardPage-D1WekoOy.js.map → TerminalDashboardPage-Cn3fGUuO.js.map} +1 -1
  219. package/ccw/frontend/dist/assets/{archive-DxemgIhF.js → archive-CjwVpw6k.js} +2 -2
  220. package/ccw/frontend/dist/assets/{archive-DxemgIhF.js.map → archive-CjwVpw6k.js.map} +1 -1
  221. package/ccw/frontend/dist/assets/{archive-restore-CjS83f1V.js → archive-restore-2vZa9Ic3.js} +2 -2
  222. package/ccw/frontend/dist/assets/{archive-restore-CjS83f1V.js.map → archive-restore-2vZa9Ic3.js.map} +1 -1
  223. package/ccw/frontend/dist/assets/{arrow-right-B5PUcn8I.js → arrow-right-CUU5XDgT.js} +2 -2
  224. package/ccw/frontend/dist/assets/{arrow-right-B5PUcn8I.js.map → arrow-right-CUU5XDgT.js.map} +1 -1
  225. package/ccw/frontend/dist/assets/{bookmark-plus-DCc9aPbb.js → bookmark-plus-Cc3nKRZ5.js} +2 -2
  226. package/ccw/frontend/dist/assets/{bookmark-plus-DCc9aPbb.js.map → bookmark-plus-Cc3nKRZ5.js.map} +1 -1
  227. package/ccw/frontend/dist/assets/{bot-DOwFtzak.js → bot-BwpSRDUa.js} +2 -2
  228. package/ccw/frontend/dist/assets/{bot-DOwFtzak.js.map → bot-BwpSRDUa.js.map} +1 -1
  229. package/ccw/frontend/dist/assets/{braces-96qH3aFh.js → braces-DBzUW1XC.js} +2 -2
  230. package/ccw/frontend/dist/assets/{braces-96qH3aFh.js.map → braces-DBzUW1XC.js.map} +1 -1
  231. package/ccw/frontend/dist/assets/{circle-stop-CCxSuil1.js → circle-stop-CGNNsjvE.js} +2 -2
  232. package/ccw/frontend/dist/assets/{circle-stop-CCxSuil1.js.map → circle-stop-CGNNsjvE.js.map} +1 -1
  233. package/ccw/frontend/dist/assets/{cpu-CZNSJFdq.js → cpu-D27G86Ul.js} +2 -2
  234. package/ccw/frontend/dist/assets/{cpu-CZNSJFdq.js.map → cpu-D27G86Ul.js.map} +1 -1
  235. package/ccw/frontend/dist/assets/{ellipsis-vertical-h8xtvw2_.js → ellipsis-vertical-C1Ij47Yz.js} +2 -2
  236. package/ccw/frontend/dist/assets/{ellipsis-vertical-h8xtvw2_.js.map → ellipsis-vertical-C1Ij47Yz.js.map} +1 -1
  237. package/ccw/frontend/dist/assets/{eye-D3NY0bm6.js → eye-C6MOB7Au.js} +2 -2
  238. package/ccw/frontend/dist/assets/{eye-D3NY0bm6.js.map → eye-C6MOB7Au.js.map} +1 -1
  239. package/ccw/frontend/dist/assets/{eye-off-Cy2vkc8p.js → eye-off-BxfBlZ26.js} +2 -2
  240. package/ccw/frontend/dist/assets/{eye-off-Cy2vkc8p.js.map → eye-off-BxfBlZ26.js.map} +1 -1
  241. package/ccw/frontend/dist/assets/{file-json-Bzq3U1Mx.js → file-json-NI237wA-.js} +2 -2
  242. package/ccw/frontend/dist/assets/{file-json-Bzq3U1Mx.js.map → file-json-NI237wA-.js.map} +1 -1
  243. package/ccw/frontend/dist/assets/{file-text-DwuwPDPi.js → file-text-Byn2_2v6.js} +2 -2
  244. package/ccw/frontend/dist/assets/{file-text-DwuwPDPi.js.map → file-text-Byn2_2v6.js.map} +1 -1
  245. package/ccw/frontend/dist/assets/{filter-q9g-bknU.js → filter-D-7PhZjx.js} +2 -2
  246. package/ccw/frontend/dist/assets/{filter-q9g-bknU.js.map → filter-D-7PhZjx.js.map} +1 -1
  247. package/ccw/frontend/dist/assets/{folder-CL6vb42J.js → folder-BoAsK_FL.js} +2 -2
  248. package/ccw/frontend/dist/assets/{folder-CL6vb42J.js.map → folder-BoAsK_FL.js.map} +1 -1
  249. package/ccw/frontend/dist/assets/{gauge-BkrcQBly.js → gauge-DCSxJIS4.js} +2 -2
  250. package/ccw/frontend/dist/assets/{gauge-BkrcQBly.js.map → gauge-DCSxJIS4.js.map} +1 -1
  251. package/ccw/frontend/dist/assets/{globe-BQbwyNeV.js → globe-CHS3prza.js} +2 -2
  252. package/ccw/frontend/dist/assets/{globe-BQbwyNeV.js.map → globe-CHS3prza.js.map} +1 -1
  253. package/ccw/frontend/dist/assets/{grid-3x3-x5_7DrN7.js → grid-3x3-D7K35U7S.js} +2 -2
  254. package/ccw/frontend/dist/assets/{grid-3x3-x5_7DrN7.js.map → grid-3x3-D7K35U7S.js.map} +1 -1
  255. package/ccw/frontend/dist/assets/{hard-drive-DTyWXwzf.js → hard-drive-eq9xE07G.js} +2 -2
  256. package/ccw/frontend/dist/assets/{hard-drive-DTyWXwzf.js.map → hard-drive-eq9xE07G.js.map} +1 -1
  257. package/ccw/frontend/dist/assets/{hash-80O0kJO7.js → hash-C1DMpBua.js} +2 -2
  258. package/ccw/frontend/dist/assets/{hash-80O0kJO7.js.map → hash-C1DMpBua.js.map} +1 -1
  259. package/ccw/frontend/dist/assets/{history-DDlN2Bwa.js → history-Di5SBCY-.js} +2 -2
  260. package/ccw/frontend/dist/assets/{history-DDlN2Bwa.js.map → history-Di5SBCY-.js.map} +1 -1
  261. package/ccw/frontend/dist/assets/{index-mbeo62f8.js → index--_R7COnA.js} +2 -2
  262. package/ccw/frontend/dist/assets/{index-mbeo62f8.js.map → index--_R7COnA.js.map} +1 -1
  263. package/ccw/frontend/dist/assets/{index-rLgoBCfV.js → index-BUol9HDD.js} +3 -3
  264. package/ccw/frontend/dist/assets/{index-rLgoBCfV.js.map → index-BUol9HDD.js.map} +1 -1
  265. package/ccw/frontend/dist/assets/{index-Bs80iCX0.js → index-CT9oykfw.js} +2 -2
  266. package/ccw/frontend/dist/assets/{index-Bs80iCX0.js.map → index-CT9oykfw.js.map} +1 -1
  267. package/ccw/frontend/dist/assets/{index-B9A3Hnrk.js → index-Ddwvf87H.js} +2 -2
  268. package/ccw/frontend/dist/assets/{index-B9A3Hnrk.js.map → index-Ddwvf87H.js.map} +1 -1
  269. package/ccw/frontend/dist/assets/{layout-grid-C1niOWJx.js → layout-grid-LiX0qZbN.js} +2 -2
  270. package/ccw/frontend/dist/assets/{layout-grid-C1niOWJx.js.map → layout-grid-LiX0qZbN.js.map} +1 -1
  271. package/ccw/frontend/dist/assets/{lightbulb-BTmI7SUg.js → lightbulb-CL3DVEwb.js} +2 -2
  272. package/ccw/frontend/dist/assets/{lightbulb-BTmI7SUg.js.map → lightbulb-CL3DVEwb.js.map} +1 -1
  273. package/ccw/frontend/dist/assets/{link-2-CB9HKeuZ.js → link-2-CC5cFeq6.js} +2 -2
  274. package/ccw/frontend/dist/assets/{link-2-CB9HKeuZ.js.map → link-2-CC5cFeq6.js.map} +1 -1
  275. package/ccw/frontend/dist/assets/{link-koEYiemK.js → link-ngFQ9bs0.js} +2 -2
  276. package/ccw/frontend/dist/assets/{link-koEYiemK.js.map → link-ngFQ9bs0.js.map} +1 -1
  277. package/ccw/frontend/dist/assets/{list-v2_GaLdC.js → list-BEU6I0KK.js} +2 -2
  278. package/ccw/frontend/dist/assets/{list-v2_GaLdC.js.map → list-BEU6I0KK.js.map} +1 -1
  279. package/ccw/frontend/dist/assets/{map-pin-BQNfAqG_.js → map-pin-BWZdLA6y.js} +2 -2
  280. package/ccw/frontend/dist/assets/{map-pin-BQNfAqG_.js.map → map-pin-BWZdLA6y.js.map} +1 -1
  281. package/ccw/frontend/dist/assets/{messages-square-Dzq5LGg9.js → messages-square-K6_Chm7n.js} +2 -2
  282. package/ccw/frontend/dist/assets/{messages-square-Dzq5LGg9.js.map → messages-square-K6_Chm7n.js.map} +1 -1
  283. package/ccw/frontend/dist/assets/{minimize-2-CtkoJXcz.js → minimize-2-CWkphauf.js} +2 -2
  284. package/ccw/frontend/dist/assets/{minimize-2-CtkoJXcz.js.map → minimize-2-CWkphauf.js.map} +1 -1
  285. package/ccw/frontend/dist/assets/{package-CH3smL37.js → package-DrNgkamn.js} +2 -2
  286. package/ccw/frontend/dist/assets/{package-CH3smL37.js.map → package-DrNgkamn.js.map} +1 -1
  287. package/ccw/frontend/dist/assets/{plug-CZ0aL_yF.js → plug-CMo3sw5_.js} +2 -2
  288. package/ccw/frontend/dist/assets/{plug-CZ0aL_yF.js.map → plug-CMo3sw5_.js.map} +1 -1
  289. package/ccw/frontend/dist/assets/{power-F2A_J4l6.js → power-DppNTW5e.js} +2 -2
  290. package/ccw/frontend/dist/assets/{power-F2A_J4l6.js.map → power-DppNTW5e.js.map} +1 -1
  291. package/ccw/frontend/dist/assets/{save-Byxot0YU.js → save-CD8aPMbZ.js} +2 -2
  292. package/ccw/frontend/dist/assets/{save-Byxot0YU.js.map → save-CD8aPMbZ.js.map} +1 -1
  293. package/ccw/frontend/dist/assets/{send-JjqhUkpw.js → send-B4z90fQD.js} +2 -2
  294. package/ccw/frontend/dist/assets/{send-JjqhUkpw.js.map → send-B4z90fQD.js.map} +1 -1
  295. package/ccw/frontend/dist/assets/{settings-2--SuN9rAt.js → settings-2-CAKRU_QC.js} +2 -2
  296. package/ccw/frontend/dist/assets/{settings-2--SuN9rAt.js.map → settings-2-CAKRU_QC.js.map} +1 -1
  297. package/ccw/frontend/dist/assets/{square-check-big-BbngGB2h.js → square-check-big-KhI3HrzX.js} +2 -2
  298. package/ccw/frontend/dist/assets/{square-check-big-BbngGB2h.js.map → square-check-big-KhI3HrzX.js.map} +1 -1
  299. package/ccw/frontend/dist/assets/{square-pen-CgrHgZSl.js → square-pen-BtdGIpuq.js} +2 -2
  300. package/ccw/frontend/dist/assets/{square-pen-CgrHgZSl.js.map → square-pen-BtdGIpuq.js.map} +1 -1
  301. package/ccw/frontend/dist/assets/{star-BU3TQr7Z.js → star-ZoBUkXoD.js} +2 -2
  302. package/ccw/frontend/dist/assets/{star-BU3TQr7Z.js.map → star-ZoBUkXoD.js.map} +1 -1
  303. package/ccw/frontend/dist/assets/{style-CKs7nnn3.js → style-CltxQP-P.js} +2 -2
  304. package/ccw/frontend/dist/assets/{style-CKs7nnn3.js.map → style-CltxQP-P.js.map} +1 -1
  305. package/ccw/frontend/dist/assets/{target-DW5tsDW6.js → target-C32OUSGf.js} +2 -2
  306. package/ccw/frontend/dist/assets/{target-DW5tsDW6.js.map → target-C32OUSGf.js.map} +1 -1
  307. package/ccw/frontend/dist/assets/{test-tube-BHm7w3ON.js → test-tube-0IxoyAVZ.js} +2 -2
  308. package/ccw/frontend/dist/assets/{test-tube-BHm7w3ON.js.map → test-tube-0IxoyAVZ.js.map} +1 -1
  309. package/ccw/frontend/dist/assets/{upload-DYR7PWwt.js → upload-4eKCkyBn.js} +2 -2
  310. package/ccw/frontend/dist/assets/{upload-DYR7PWwt.js.map → upload-4eKCkyBn.js.map} +1 -1
  311. package/ccw/frontend/dist/assets/{useApiSettings-D0TVgQD_.js → useApiSettings-zLTUWqhi.js} +2 -2
  312. package/ccw/frontend/dist/assets/{useApiSettings-D0TVgQD_.js.map → useApiSettings-zLTUWqhi.js.map} +1 -1
  313. package/ccw/frontend/dist/assets/{useCli-DfY8mAP8.js → useCli-BtN2vpOX.js} +2 -2
  314. package/ccw/frontend/dist/assets/{useCli-DfY8mAP8.js.map → useCli-BtN2vpOX.js.map} +1 -1
  315. package/ccw/frontend/dist/assets/{useCommands-CGusDp0F.js → useCommands-_spj49qL.js} +2 -2
  316. package/ccw/frontend/dist/assets/{useCommands-CGusDp0F.js.map → useCommands-_spj49qL.js.map} +1 -1
  317. package/ccw/frontend/dist/assets/{useDebounce-CIwh0fF1.js → useDebounce-Bm9KFZvd.js} +2 -2
  318. package/ccw/frontend/dist/assets/{useDebounce-CIwh0fF1.js.map → useDebounce-Bm9KFZvd.js.map} +1 -1
  319. package/ccw/frontend/dist/assets/{useFileExplorer-FMyFv39K.js → useFileExplorer-DOmpm6v9.js} +2 -2
  320. package/ccw/frontend/dist/assets/{useFileExplorer-FMyFv39K.js.map → useFileExplorer-DOmpm6v9.js.map} +1 -1
  321. package/ccw/frontend/dist/assets/{useLocale-B2qhsoTb.js → useLocale-D2rj4rea.js} +2 -2
  322. package/ccw/frontend/dist/assets/{useLocale-B2qhsoTb.js.map → useLocale-D2rj4rea.js.map} +1 -1
  323. package/ccw/frontend/dist/assets/{useSkills-cxKXMBm3.js → useSkills-OskEpomF.js} +3 -3
  324. package/ccw/frontend/dist/assets/{useSkills-cxKXMBm3.js.map → useSkills-OskEpomF.js.map} +1 -1
  325. package/ccw/frontend/dist/assets/{useSystemSettings-B-xUT_z-.js → useSystemSettings-BjMgsNSF.js} +2 -2
  326. package/ccw/frontend/dist/assets/{useSystemSettings-B-xUT_z-.js.map → useSystemSettings-BjMgsNSF.js.map} +1 -1
  327. package/ccw/frontend/dist/assets/{wand-sparkles-DZV_3lPr.js → wand-sparkles-CLhyYWa7.js} +2 -2
  328. package/ccw/frontend/dist/assets/{wand-sparkles-DZV_3lPr.js.map → wand-sparkles-CLhyYWa7.js.map} +1 -1
  329. package/ccw/frontend/dist/index.html +1 -1
  330. package/ccw/scripts/prepublish-clean.mjs +0 -1
  331. package/package.json +1 -3
  332. package/ccw/frontend/dist/assets/SettingsPage-B2PYzSoO.js +0 -150
  333. package/ccw/frontend/dist/assets/SettingsPage-B2PYzSoO.js.map +0 -1
  334. package/ccw/frontend/dist/assets/SkillsManagerPage-CTnWrrwp.js +0 -7
  335. package/ccw/frontend/dist/assets/SkillsManagerPage-CTnWrrwp.js.map +0 -1
  336. package/ccw-litellm/README.md +0 -180
  337. package/ccw-litellm/pyproject.toml +0 -35
  338. package/ccw-litellm/src/ccw_litellm/__init__.py +0 -47
  339. package/ccw-litellm/src/ccw_litellm/cli.py +0 -108
  340. package/ccw-litellm/src/ccw_litellm/clients/__init__.py +0 -12
  341. package/ccw-litellm/src/ccw_litellm/clients/litellm_embedder.py +0 -270
  342. package/ccw-litellm/src/ccw_litellm/clients/litellm_llm.py +0 -198
  343. package/ccw-litellm/src/ccw_litellm/config/__init__.py +0 -22
  344. package/ccw-litellm/src/ccw_litellm/config/loader.py +0 -343
  345. package/ccw-litellm/src/ccw_litellm/config/models.py +0 -162
  346. package/ccw-litellm/src/ccw_litellm/interfaces/__init__.py +0 -14
  347. package/ccw-litellm/src/ccw_litellm/interfaces/embedder.py +0 -52
  348. package/ccw-litellm/src/ccw_litellm/interfaces/llm.py +0 -45
@@ -0,0 +1,493 @@
1
+ # Phase 2: Test Context Gather (test-context-gather)
2
+
3
+ Gather test context via coverage analysis or codebase scan.
4
+
5
+ ## Objective
6
+
7
+ - Gather test context (coverage analysis or codebase scan)
8
+ - Generate context package for downstream analysis
9
+
10
+ ## Execution
11
+
12
+ ### Step 1.2: Gather Test Context
13
+
14
+ Two modes are available depending on whether a source session exists:
15
+
16
+ ---
17
+
18
+ ### Mode A: Session Mode (gather from source session)
19
+
20
+ Collect test coverage context using test-context-search-agent and package into standardized test-context JSON.
21
+
22
+ #### Core Philosophy
23
+
24
+ - **Agent Delegation**: Delegate all test coverage analysis to `test-context-search-agent` for autonomous execution
25
+ - **Detection-First**: Check for existing test-context-package before executing
26
+ - **Coverage-First**: Analyze existing test coverage before planning new tests
27
+ - **Source Context Loading**: Import implementation summaries from source session
28
+ - **Standardized Output**: Generate `.workflow/active/{test_session_id}/.process/test-context-package.json`
29
+
30
+ #### Step A.1: Test-Context-Package Detection
31
+
32
+ **Execute First** - Check if valid package already exists:
33
+
34
+ ```javascript
35
+ const testContextPath = `.workflow/${test_session_id}/.process/test-context-package.json`;
36
+
37
+ if (file_exists(testContextPath)) {
38
+ const existing = Read(testContextPath);
39
+
40
+ // Validate package belongs to current test session
41
+ if (existing?.metadata?.test_session_id === test_session_id) {
42
+ console.log("Valid test-context-package found for session:", test_session_id);
43
+ console.log("Coverage Stats:", existing.test_coverage.coverage_stats);
44
+ console.log("Framework:", existing.test_framework.framework);
45
+ console.log("Missing Tests:", existing.test_coverage.missing_tests.length);
46
+ return existing; // Skip execution, return existing
47
+ } else {
48
+ console.warn("Invalid test_session_id in existing package, re-generating...");
49
+ }
50
+ }
51
+ ```
52
+
53
+ #### Step A.2: Invoke Test-Context-Search Agent
54
+
55
+ **Only execute if Step A.1 finds no valid package**
56
+
57
+ ```javascript
58
+ Task(
59
+ subagent_type="test-context-search-agent",
60
+ run_in_background=false,
61
+ description="Gather test coverage context",
62
+ prompt=`
63
+
64
+ ## Execution Mode
65
+ **PLAN MODE** (Comprehensive) - Full Phase 1-3 execution
66
+
67
+ ## Session Information
68
+ - **Test Session ID**: ${test_session_id}
69
+ - **Output Path**: .workflow/${test_session_id}/.process/test-context-package.json
70
+
71
+ ## Mission
72
+ Execute complete test-context-search-agent workflow for test generation planning:
73
+
74
+ ### Phase 1: Session Validation & Source Context Loading
75
+ 1. **Detection**: Check for existing test-context-package (early exit if valid)
76
+ 2. **Test Session Validation**: Load test session metadata, extract source_session reference
77
+ 3. **Source Context Loading**: Load source session implementation summaries, changed files, tech stack
78
+
79
+ ### Phase 2: Test Coverage Analysis
80
+ Execute coverage discovery:
81
+ - **Track 1**: Existing test discovery (find *.test.*, *.spec.* files)
82
+ - **Track 2**: Coverage gap analysis (match implementation files to test files)
83
+ - **Track 3**: Coverage statistics (calculate percentages, identify gaps by module)
84
+
85
+ ### Phase 3: Framework Detection & Packaging
86
+ 1. Framework identification from package.json/requirements.txt
87
+ 2. Convention analysis from existing test patterns
88
+ 3. Generate and validate test-context-package.json
89
+
90
+ ## Output Requirements
91
+ Complete test-context-package.json with:
92
+ - **metadata**: test_session_id, source_session_id, task_type, complexity
93
+ - **source_context**: implementation_summaries, tech_stack, project_patterns
94
+ - **test_coverage**: existing_tests[], missing_tests[], coverage_stats
95
+ - **test_framework**: framework, version, test_pattern, conventions
96
+ - **assets**: implementation_summary[], existing_test[], source_code[] with priorities
97
+ - **focus_areas**: Test generation guidance based on coverage gaps
98
+
99
+ ## Quality Validation
100
+ Before completion verify:
101
+ - [ ] Valid JSON format with all required fields
102
+ - [ ] Source session context loaded successfully
103
+ - [ ] Test coverage gaps identified
104
+ - [ ] Test framework detected (or marked as 'unknown')
105
+ - [ ] Coverage percentage calculated correctly
106
+ - [ ] Missing tests catalogued with priority
107
+ - [ ] Execution time < 30 seconds (< 60s for large codebases)
108
+
109
+ Execute autonomously following agent documentation.
110
+ Report completion with coverage statistics.
111
+ `
112
+ )
113
+ ```
114
+
115
+ #### Step A.3: Output Verification
116
+
117
+ After agent completes, verify output:
118
+
119
+ ```javascript
120
+ // Verify file was created
121
+ const outputPath = `.workflow/${test_session_id}/.process/test-context-package.json`;
122
+ if (!file_exists(outputPath)) {
123
+ throw new Error("Agent failed to generate test-context-package.json");
124
+ }
125
+
126
+ // Load and display summary
127
+ const testContext = Read(outputPath);
128
+ console.log("Test context package generated successfully");
129
+ console.log("Coverage:", testContext.test_coverage.coverage_stats.coverage_percentage + "%");
130
+ console.log("Tests to generate:", testContext.test_coverage.missing_tests.length);
131
+ ```
132
+
133
+ ---
134
+
135
+ ### Mode B: Prompt Mode (gather from codebase)
136
+
137
+ Intelligently collect project context using context-search-agent based on task description, packages into standardized JSON.
138
+
139
+ #### Core Philosophy
140
+
141
+ - **Agent Delegation**: Delegate all discovery to `context-search-agent` for autonomous execution
142
+ - **Detection-First**: Check for existing context-package before executing
143
+ - **Plan Mode**: Full comprehensive analysis (vs lightweight brainstorm mode)
144
+ - **Standardized Output**: Generate `.workflow/active/{session}/.process/context-package.json`
145
+
146
+ #### Step B.1: Context-Package Detection
147
+
148
+ **Execute First** - Check if valid package already exists:
149
+
150
+ ```javascript
151
+ const contextPackagePath = `.workflow/${session_id}/.process/context-package.json`;
152
+
153
+ if (file_exists(contextPackagePath)) {
154
+ const existing = Read(contextPackagePath);
155
+
156
+ // Validate package belongs to current session
157
+ if (existing?.metadata?.session_id === session_id) {
158
+ console.log("Valid context-package found for session:", session_id);
159
+ console.log("Stats:", existing.statistics);
160
+ console.log("Conflict Risk:", existing.conflict_detection.risk_level);
161
+ return existing; // Skip execution, return existing
162
+ } else {
163
+ console.warn("Invalid session_id in existing package, re-generating...");
164
+ }
165
+ }
166
+ ```
167
+
168
+ #### Step B.2: Complexity Assessment & Parallel Explore
169
+
170
+ **Only execute if Step B.1 finds no valid package**
171
+
172
+ ```javascript
173
+ // B.2.1 Complexity Assessment
174
+ function analyzeTaskComplexity(taskDescription) {
175
+ const text = taskDescription.toLowerCase();
176
+ if (/architect|refactor|restructure|modular|cross-module/.test(text)) return 'High';
177
+ if (/multiple|several|integrate|migrate|extend/.test(text)) return 'Medium';
178
+ return 'Low';
179
+ }
180
+
181
+ const ANGLE_PRESETS = {
182
+ architecture: ['architecture', 'dependencies', 'modularity', 'integration-points'],
183
+ security: ['security', 'auth-patterns', 'dataflow', 'validation'],
184
+ performance: ['performance', 'bottlenecks', 'caching', 'data-access'],
185
+ bugfix: ['error-handling', 'dataflow', 'state-management', 'edge-cases'],
186
+ feature: ['patterns', 'integration-points', 'testing', 'dependencies'],
187
+ refactor: ['architecture', 'patterns', 'dependencies', 'testing']
188
+ };
189
+
190
+ function selectAngles(taskDescription, complexity) {
191
+ const text = taskDescription.toLowerCase();
192
+ let preset = 'feature';
193
+ if (/refactor|architect|restructure/.test(text)) preset = 'architecture';
194
+ else if (/security|auth|permission/.test(text)) preset = 'security';
195
+ else if (/performance|slow|optimi/.test(text)) preset = 'performance';
196
+ else if (/fix|bug|error|issue/.test(text)) preset = 'bugfix';
197
+
198
+ const count = complexity === 'High' ? 4 : (complexity === 'Medium' ? 3 : 1);
199
+ return ANGLE_PRESETS[preset].slice(0, count);
200
+ }
201
+
202
+ const complexity = analyzeTaskComplexity(task_description);
203
+ const selectedAngles = selectAngles(task_description, complexity);
204
+ const sessionFolder = `.workflow/active/${session_id}/.process`;
205
+
206
+ // B.2.2 Launch Parallel Explore Agents
207
+ const explorationTasks = selectedAngles.map((angle, index) =>
208
+ Task(
209
+ subagent_type="cli-explore-agent",
210
+ run_in_background=false,
211
+ description=`Explore: ${angle}`,
212
+ prompt=`
213
+ ## Task Objective
214
+ Execute **${angle}** exploration for task planning context. Analyze codebase from this specific angle to discover relevant structure, patterns, and constraints.
215
+
216
+ ## Assigned Context
217
+ - **Exploration Angle**: ${angle}
218
+ - **Task Description**: ${task_description}
219
+ - **Session ID**: ${session_id}
220
+ - **Exploration Index**: ${index + 1} of ${selectedAngles.length}
221
+ - **Output File**: ${sessionFolder}/exploration-${angle}.json
222
+
223
+ ## MANDATORY FIRST STEPS (Execute by Agent)
224
+ 1. Run: ccw tool exec get_modules_by_depth '{}' (project structure)
225
+ 2. Run: rg -l "{keyword_from_task}" --type ts (locate relevant files)
226
+ 3. Execute: ccw tool exec json_builder '{"cmd":"init","schema":"explore","output":"${sessionFolder}/exploration-${angle}.json"}' (init output + get schema info)
227
+
228
+ ## Exploration Strategy (${angle} focus)
229
+
230
+ **Step 1: Structural Scan** (Bash)
231
+ - get_modules_by_depth.sh -> identify modules related to ${angle}
232
+ - find/rg -> locate files relevant to ${angle} aspect
233
+ - Analyze imports/dependencies from ${angle} perspective
234
+
235
+ **Step 2: Semantic Analysis** (Gemini CLI)
236
+ - How does existing code handle ${angle} concerns?
237
+ - What patterns are used for ${angle}?
238
+ - Where would new code integrate from ${angle} viewpoint?
239
+
240
+ **Step 3: Write Output**
241
+ - Consolidate ${angle} findings into JSON
242
+ - Identify ${angle}-specific clarification needs
243
+
244
+ ## Expected Output
245
+
246
+ **File**: ${sessionFolder}/exploration-${angle}.json
247
+
248
+ **Schema Reference**: Schema obtained in MANDATORY FIRST STEPS step 3, follow schema exactly
249
+
250
+ **Required Fields** (all ${angle} focused):
251
+ - project_structure: Modules/architecture relevant to ${angle}
252
+ - relevant_files: Files affected from ${angle} perspective
253
+ **MANDATORY**: Every file MUST use structured object format with ALL required fields:
254
+ [{path: "src/file.ts", relevance: 0.85, rationale: "Contains AuthService.login() - entry point for JWT token generation", role: "modify_target", discovery_source: "bash-scan", key_symbols: ["AuthService", "login"]}]
255
+ - **rationale** (required): Specific selection basis tied to ${angle} topic (>10 chars, not generic)
256
+ - **role** (required): modify_target|dependency|pattern_reference|test_target|type_definition|integration_point|config|context_only
257
+ - **discovery_source** (recommended): bash-scan|cli-analysis|ace-search|dependency-trace|manual
258
+ - **key_symbols** (recommended): Key functions/classes/types in the file relevant to the task
259
+ - Scores: 0.7+ high priority, 0.5-0.7 medium, <0.5 low
260
+ - patterns: ${angle}-related patterns to follow
261
+ - dependencies: Dependencies relevant to ${angle}
262
+ - integration_points: Where to integrate from ${angle} viewpoint (include file:line locations)
263
+ - constraints: ${angle}-specific limitations/conventions
264
+ - clarification_needs: ${angle}-related ambiguities (options array + recommended index)
265
+ - _metadata.exploration_angle: "${angle}"
266
+
267
+ ## Success Criteria
268
+ - [ ] Schema initialized via json_builder init
269
+ - [ ] get_modules_by_depth.sh executed
270
+ - [ ] At least 3 relevant files identified with ${angle} rationale
271
+ - [ ] Patterns are actionable (code examples, not generic advice)
272
+ - [ ] Integration points include file:line locations
273
+ - [ ] Constraints are project-specific to ${angle}
274
+ - [ ] JSON output follows schema exactly
275
+ - [ ] clarification_needs includes options + recommended
276
+
277
+ ## Output
278
+ Write: ${sessionFolder}/exploration-${angle}.json
279
+ Return: 2-3 sentence summary of ${angle} findings
280
+ `
281
+ )
282
+ );
283
+
284
+ // B.2.3 Generate Manifest after all complete
285
+ const explorationFiles = bash(`find ${sessionFolder} -name "exploration-*.json" -type f`).split('\n').filter(f => f.trim());
286
+ const explorationManifest = {
287
+ session_id,
288
+ task_description,
289
+ timestamp: new Date().toISOString(),
290
+ complexity,
291
+ exploration_count: selectedAngles.length,
292
+ angles_explored: selectedAngles,
293
+ explorations: explorationFiles.map(file => {
294
+ const data = JSON.parse(Read(file));
295
+ return { angle: data._metadata.exploration_angle, file: file.split('/').pop(), path: file, index: data._metadata.exploration_index };
296
+ })
297
+ };
298
+ Write(`${sessionFolder}/explorations-manifest.json`, JSON.stringify(explorationManifest, null, 2));
299
+ ```
300
+
301
+ #### Step B.3: Invoke Context-Search Agent
302
+
303
+ **Only execute after Step B.2 completes**
304
+
305
+ ```javascript
306
+ // Load user intent from planning-notes.md (from Phase 1)
307
+ const planningNotesPath = `.workflow/active/${session_id}/planning-notes.md`;
308
+ let userIntent = { goal: task_description, key_constraints: "None specified" };
309
+
310
+ if (file_exists(planningNotesPath)) {
311
+ const notesContent = Read(planningNotesPath);
312
+ const goalMatch = notesContent.match(/\*\*GOAL\*\*:\s*(.+)/);
313
+ const constraintsMatch = notesContent.match(/\*\*KEY_CONSTRAINTS\*\*:\s*(.+)/);
314
+ if (goalMatch) userIntent.goal = goalMatch[1].trim();
315
+ if (constraintsMatch) userIntent.key_constraints = constraintsMatch[1].trim();
316
+ }
317
+
318
+ Task(
319
+ subagent_type="context-search-agent",
320
+ run_in_background=false,
321
+ description="Gather comprehensive context for plan",
322
+ prompt=`
323
+ ## Execution Mode
324
+ **PLAN MODE** (Comprehensive) - Full Phase 1-3 execution with priority sorting
325
+
326
+ ## Session Information
327
+ - **Session ID**: ${session_id}
328
+ - **Task Description**: ${task_description}
329
+ - **Output Path**: .workflow/${session_id}/.process/context-package.json
330
+
331
+ ## User Intent (from Phase 1 - Planning Notes)
332
+ **GOAL**: ${userIntent.goal}
333
+ **KEY_CONSTRAINTS**: ${userIntent.key_constraints}
334
+
335
+ This is the PRIMARY context source - all subsequent analysis must align with user intent.
336
+
337
+ ## Exploration Input (from Step B.2)
338
+ - **Manifest**: ${sessionFolder}/explorations-manifest.json
339
+ - **Exploration Count**: ${explorationManifest.exploration_count}
340
+ - **Angles**: ${explorationManifest.angles_explored.join(', ')}
341
+ - **Complexity**: ${complexity}
342
+
343
+ ## Mission
344
+ Execute complete context-search-agent workflow for implementation planning:
345
+
346
+ ### Phase 1: Initialization & Pre-Analysis
347
+ 1. **Project State Loading**:
348
+ - Run: \`ccw spec load --category execution\` to load project context, tech stack, and guidelines.
349
+ - Run: \`ccw spec load --category test\` to load test framework conventions, coverage targets, and fixtures.
350
+ - If files don't exist, proceed with fresh analysis.
351
+ 2. **Detection**: Check for existing context-package (early exit if valid)
352
+ 3. **Foundation**: Initialize CodexLens, get project structure, load docs
353
+ 4. **Analysis**: Extract keywords, determine scope, classify complexity based on task description and project state
354
+
355
+ ### Phase 2: Multi-Source Context Discovery
356
+ Execute all discovery tracks (WITH USER INTENT INTEGRATION):
357
+ - **Track -1**: User Intent & Priority Foundation (EXECUTE FIRST)
358
+ - Load user intent (GOAL, KEY_CONSTRAINTS) from session input
359
+ - Map user requirements to codebase entities (files, modules, patterns)
360
+ - Establish baseline priority scores based on user goal alignment
361
+ - Output: user_intent_mapping.json with preliminary priority scores
362
+
363
+ - **Track 0**: Exploration Synthesis (load explorations-manifest.json, prioritize critical_files, deduplicate patterns/integration_points)
364
+ - **Track 1**: Historical archive analysis (query manifest.json for lessons learned)
365
+ - **Track 2**: Reference documentation (CLAUDE.md, architecture docs)
366
+ - **Track 3**: Web examples (use Exa MCP for unfamiliar tech/APIs)
367
+ - **Track 4**: Codebase analysis (5-layer discovery: files, content, patterns, deps, config/tests)
368
+
369
+ ### Phase 3: Synthesis, Assessment & Packaging
370
+ 1. Apply relevance scoring and build dependency graph
371
+ 2. **Synthesize 5-source data** (including Track -1): Merge findings from all sources
372
+ - Priority order: User Intent > Archive > Docs > Exploration > Code > Web
373
+ - **Prioritize the context from project-tech.json** for architecture and tech stack unless code analysis reveals it's outdated
374
+ 3. **Context Priority Sorting**:
375
+ a. Combine scores from Track -1 (user intent alignment) + relevance scores + exploration critical_files
376
+ b. Classify files into priority tiers:
377
+ - **Critical** (score >= 0.85): Directly mentioned in user goal OR exploration critical_files
378
+ - **High** (0.70-0.84): Key dependencies, patterns required for goal
379
+ - **Medium** (0.50-0.69): Supporting files, indirect dependencies
380
+ - **Low** (< 0.50): Contextual awareness only
381
+ c. Generate dependency_order: Based on dependency graph + user goal sequence
382
+ d. Document sorting_rationale: Explain prioritization logic
383
+ 4. **Populate project_context**: Directly use the overview from project-tech.json
384
+ 5. **Populate project_guidelines**: Load from specs/*.md
385
+ 6. Integrate brainstorm artifacts (if .brainstorming/ exists, read content)
386
+ 7. Perform conflict detection with risk assessment
387
+ 8. **Inject historical conflicts** from archive analysis into conflict_detection
388
+ 9. **Generate prioritized_context section**:
389
+ {
390
+ "prioritized_context": {
391
+ "user_intent": { "goal": "...", "scope": "...", "key_constraints": ["..."] },
392
+ "priority_tiers": {
393
+ "critical": [{ "path": "...", "relevance": 0.95, "rationale": "..." }],
394
+ "high": [...], "medium": [...], "low": [...]
395
+ },
396
+ "dependency_order": ["module1", "module2", "module3"],
397
+ "sorting_rationale": "Based on user goal alignment, exploration critical files, and dependency graph"
398
+ }
399
+ }
400
+ 10. Generate and validate context-package.json with prioritized_context field
401
+
402
+ ## Output Requirements
403
+ Complete context-package.json with:
404
+ - **metadata**: task_description, keywords, complexity, tech_stack, session_id
405
+ - **project_context**: description, technology_stack, architecture, key_components (from project-tech.json)
406
+ - **project_guidelines**: {conventions, constraints, quality_rules, learnings} (from specs/*.md)
407
+ - **assets**: {documentation[], source_code[], config[], tests[]} with relevance scores
408
+ - **dependencies**: {internal[], external[]} with dependency graph
409
+ - **brainstorm_artifacts**: {guidance_specification, role_analyses[], synthesis_output} with content
410
+ - **conflict_detection**: {risk_level, risk_factors, affected_modules[], mitigation_strategy, historical_conflicts[]}
411
+ - **exploration_results**: {manifest_path, exploration_count, angles, explorations[], aggregated_insights}
412
+ - **prioritized_context**: {user_intent, priority_tiers{critical, high, medium, low}, dependency_order[], sorting_rationale}
413
+
414
+ ## Quality Validation
415
+ Before completion verify:
416
+ - [ ] Valid JSON format with all required fields
417
+ - [ ] File relevance accuracy >80%
418
+ - [ ] Dependency graph complete (max 2 transitive levels)
419
+ - [ ] Conflict risk level calculated correctly
420
+ - [ ] No sensitive data exposed
421
+ - [ ] Total files <= 50 (prioritize high-relevance)
422
+
423
+ Execute autonomously following agent documentation.
424
+ Report completion with statistics.
425
+ `
426
+ )
427
+ ```
428
+
429
+ #### Step B.4: Output Verification
430
+
431
+ After agent completes, verify output:
432
+
433
+ ```javascript
434
+ // Verify file was created
435
+ const outputPath = `.workflow/${session_id}/.process/context-package.json`;
436
+ if (!file_exists(outputPath)) {
437
+ throw new Error("Agent failed to generate context-package.json");
438
+ }
439
+
440
+ // Verify exploration_results included
441
+ const pkg = JSON.parse(Read(outputPath));
442
+ if (pkg.exploration_results?.exploration_count > 0) {
443
+ console.log(`Exploration results aggregated: ${pkg.exploration_results.exploration_count} angles`);
444
+ }
445
+ ```
446
+
447
+ ---
448
+
449
+ **Input**: `testSessionId` from Phase 1
450
+
451
+ **Parse Output**:
452
+ - Extract: context package path (store as `contextPath`)
453
+ - Pattern: `.workflow/active/[testSessionId]/.process/[test-]context-package.json`
454
+
455
+ **Validation**:
456
+ - Context package file exists and is valid JSON
457
+ - Contains coverage analysis (session mode) or codebase analysis (prompt mode)
458
+ - Test framework detected
459
+
460
+ **TodoWrite Update (tasks attached)**:
461
+ ```json
462
+ [
463
+ {"content": "Phase 1: Test Generation", "status": "in_progress"},
464
+ {"content": " -> Create test session", "status": "completed"},
465
+ {"content": " -> Gather test context", "status": "in_progress"},
466
+ {"content": " -> Load source/codebase context", "status": "in_progress"},
467
+ {"content": " -> Analyze test coverage", "status": "pending"},
468
+ {"content": " -> Generate context package", "status": "pending"},
469
+ {"content": " -> Test analysis (Gemini)", "status": "pending"},
470
+ {"content": " -> Generate test tasks", "status": "pending"},
471
+ {"content": "Phase 2: Test Cycle Execution", "status": "pending"}
472
+ ]
473
+ ```
474
+
475
+ **TodoWrite Update (tasks collapsed)**:
476
+ ```json
477
+ [
478
+ {"content": "Phase 1: Test Generation", "status": "in_progress"},
479
+ {"content": " -> Create test session", "status": "completed"},
480
+ {"content": " -> Gather test context", "status": "completed"},
481
+ {"content": " -> Test analysis (Gemini)", "status": "pending"},
482
+ {"content": " -> Generate test tasks", "status": "pending"},
483
+ {"content": "Phase 2: Test Cycle Execution", "status": "pending"}
484
+ ]
485
+ ```
486
+
487
+ ## Output
488
+
489
+ - **Variable**: `contextPath` (context-package.json path)
490
+
491
+ ## Next Phase
492
+
493
+ Continue to [Phase 3: Test Concept Enhanced](03-test-concept-enhanced.md).
@@ -0,0 +1,150 @@
1
+ # Phase 3: Test Concept Enhanced (test-concept-enhanced)
2
+
3
+ Analyze test requirements with Gemini using progressive L0-L3 test layers.
4
+
5
+ ## Objective
6
+
7
+ - Use Gemini to analyze coverage gaps
8
+ - Detect project type and apply appropriate test templates
9
+ - Generate multi-layered test requirements (L0-L3)
10
+ - Scan for AI code issues
11
+
12
+ ## Core Philosophy
13
+
14
+ - **Coverage-Driven**: Focus on identified test gaps from context analysis
15
+ - **Pattern-Based**: Learn from existing tests and project conventions
16
+ - **Gemini-Powered**: Use Gemini for test requirement analysis and strategy design
17
+ - **Single-Round Analysis**: Comprehensive test analysis in one execution
18
+ - **No Code Generation**: Strategy and planning only, actual test generation happens in task execution
19
+
20
+ ## Core Responsibilities
21
+
22
+ - Coordinate test analysis workflow using cli-execution-agent
23
+ - Validate test-context-package.json prerequisites
24
+ - Execute Gemini analysis via agent for test strategy generation
25
+ - Validate agent outputs (gemini-test-analysis.md, TEST_ANALYSIS_RESULTS.md)
26
+
27
+ ## Execution
28
+
29
+ ### Step 1.3: Test Generation Analysis
30
+
31
+ #### Phase 1: Context Preparation
32
+
33
+ **Command prepares session context and validates prerequisites.**
34
+
35
+ 1. **Session Validation**
36
+ - Load `.workflow/active/{test_session_id}/workflow-session.json`
37
+ - Verify test session type is "test-gen"
38
+ - Extract source session reference
39
+
40
+ 2. **Context Package Validation**
41
+ - Read `test-context-package.json`
42
+ - Validate required sections: metadata, source_context, test_coverage, test_framework
43
+ - Extract coverage gaps and framework details
44
+
45
+ 3. **Strategy Determination**
46
+ - **Simple** (1-3 files): Single Gemini analysis
47
+ - **Medium** (4-6 files): Comprehensive analysis
48
+ - **Complex** (>6 files): Modular analysis approach
49
+
50
+ #### Phase 2: Test Analysis Execution
51
+
52
+ **Purpose**: Analyze test coverage gaps and generate comprehensive test strategy.
53
+
54
+ ```javascript
55
+ Task(
56
+ subagent_type="cli-execution-agent",
57
+ run_in_background=false,
58
+ description="Analyze test coverage gaps and generate test strategy",
59
+ prompt=`
60
+ ## TASK OBJECTIVE
61
+ Analyze test requirements and generate comprehensive test generation strategy using Gemini CLI
62
+
63
+ ## EXECUTION CONTEXT
64
+ Session: {test_session_id}
65
+ Source Session: {source_session_id}
66
+ Working Dir: .workflow/active/{test_session_id}/.process
67
+ Template: ~/.ccw/workflows/cli-templates/prompts/test/test-concept-analysis.txt
68
+
69
+ ## EXECUTION STEPS
70
+ 1. Execute Gemini analysis:
71
+ ccw cli -p "..." --tool gemini --mode write --rule test-test-concept-analysis --cd .workflow/active/{test_session_id}/.process
72
+
73
+ 2. Generate TEST_ANALYSIS_RESULTS.md:
74
+ Synthesize gemini-test-analysis.md into standardized format for task generation
75
+ Include: coverage assessment, test framework, test requirements, generation strategy, implementation targets
76
+
77
+ ## EXPECTED OUTPUTS
78
+ 1. gemini-test-analysis.md - Raw Gemini analysis
79
+ 2. TEST_ANALYSIS_RESULTS.md - Standardized test requirements document
80
+
81
+ ## QUALITY VALIDATION
82
+ - Both output files exist and are complete
83
+ - All required sections present in TEST_ANALYSIS_RESULTS.md
84
+ - Test requirements are actionable and quantified
85
+ - Test scenarios cover happy path, errors, edge cases
86
+ - Dependencies and mocks clearly identified
87
+ `
88
+ )
89
+ ```
90
+
91
+ **Output Files**:
92
+ - `.workflow/active/{test_session_id}/.process/gemini-test-analysis.md`
93
+ - `.workflow/active/{test_session_id}/.process/TEST_ANALYSIS_RESULTS.md`
94
+
95
+ #### Phase 3: Output Validation
96
+
97
+ - Verify `gemini-test-analysis.md` exists and is complete
98
+ - Validate `TEST_ANALYSIS_RESULTS.md` generated by agent
99
+ - Check required sections present
100
+ - Confirm test requirements are actionable
101
+
102
+ **Input**:
103
+ - `testSessionId` from Phase 1
104
+ - `contextPath` from Phase 2
105
+
106
+ **Expected Behavior**:
107
+ - Use Gemini to analyze coverage gaps
108
+ - Detect project type and apply appropriate test templates
109
+ - Generate **multi-layered test requirements** (L0-L3)
110
+ - Scan for AI code issues
111
+ - Generate `TEST_ANALYSIS_RESULTS.md`
112
+
113
+ **Output**: `.workflow/[testSessionId]/.process/TEST_ANALYSIS_RESULTS.md`
114
+
115
+ **Validation** - TEST_ANALYSIS_RESULTS.md must include:
116
+ - Project Type Detection (with confidence)
117
+ - Coverage Assessment (current vs target)
118
+ - Test Framework & Conventions
119
+ - Multi-Layered Test Plan (L0-L3)
120
+ - AI Issue Scan Results
121
+ - Test Requirements by File (with layer annotations)
122
+ - Quality Assurance Criteria
123
+ - Success Criteria
124
+
125
+ ## Error Handling
126
+
127
+ ### Validation Errors
128
+ | Error | Resolution |
129
+ |-------|------------|
130
+ | Missing context package | Run test-context-gather first |
131
+ | No coverage gaps | Skip test generation, proceed to execution |
132
+ | No test framework detected | Configure test framework |
133
+ | Invalid source session | Complete implementation first |
134
+
135
+ ### Execution Errors
136
+ | Error | Recovery |
137
+ |-------|----------|
138
+ | Gemini timeout | Reduce scope, analyze by module |
139
+ | Output incomplete | Retry with focused analysis |
140
+ | No output file | Check directory permissions |
141
+
142
+ **Fallback Strategy**: Generate basic TEST_ANALYSIS_RESULTS.md from context package if Gemini fails
143
+
144
+ ## Output
145
+
146
+ - **File**: `.workflow/[testSessionId]/.process/TEST_ANALYSIS_RESULTS.md`
147
+
148
+ ## Next Phase
149
+
150
+ Continue to [Phase 4: Test Task Generate](04-test-task-generate.md).