claude-code-workflow 6.1.4 → 6.2.2

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 (437) hide show
  1. package/.claude/CLAUDE.md +10 -0
  2. package/.claude/agents/action-planning-agent.md +857 -778
  3. package/.claude/agents/cli-execution-agent.md +266 -269
  4. package/.claude/agents/cli-explore-agent.md +2 -2
  5. package/.claude/agents/cli-lite-planning-agent.md +142 -92
  6. package/.claude/agents/cli-planning-agent.md +4 -4
  7. package/.claude/agents/code-developer.md +7 -6
  8. package/.claude/agents/conceptual-planning-agent.md +2 -2
  9. package/.claude/agents/context-search-agent.md +31 -32
  10. package/.claude/agents/doc-generator.md +4 -4
  11. package/.claude/agents/memory-bridge.md +93 -93
  12. package/.claude/agents/test-context-search-agent.md +8 -7
  13. package/.claude/agents/test-fix-agent.md +7 -6
  14. package/.claude/commands/clean.md +516 -0
  15. package/.claude/commands/memory/compact.md +383 -0
  16. package/.claude/commands/memory/docs-full-cli.md +471 -471
  17. package/.claude/commands/memory/docs-related-cli.md +386 -386
  18. package/.claude/commands/memory/docs.md +615 -615
  19. package/.claude/commands/memory/load.md +5 -5
  20. package/.claude/commands/memory/tech-research-rules.md +310 -0
  21. package/.claude/commands/memory/update-full.md +332 -332
  22. package/.claude/commands/memory/workflow-skill-memory.md +4 -4
  23. package/.claude/commands/task/create.md +151 -151
  24. package/.claude/commands/version.md +254 -254
  25. package/.claude/commands/workflow/brainstorm/api-designer.md +587 -585
  26. package/.claude/commands/workflow/brainstorm/artifacts.md +1 -0
  27. package/.claude/commands/workflow/brainstorm/auto-parallel.md +443 -443
  28. package/.claude/commands/workflow/brainstorm/data-architect.md +220 -220
  29. package/.claude/commands/workflow/brainstorm/product-manager.md +200 -200
  30. package/.claude/commands/workflow/brainstorm/product-owner.md +200 -200
  31. package/.claude/commands/workflow/brainstorm/scrum-master.md +200 -200
  32. package/.claude/commands/workflow/brainstorm/subject-matter-expert.md +200 -200
  33. package/.claude/commands/workflow/brainstorm/system-architect.md +389 -387
  34. package/.claude/commands/workflow/brainstorm/ui-designer.md +221 -221
  35. package/.claude/commands/workflow/brainstorm/ux-expert.md +221 -221
  36. package/.claude/commands/workflow/debug.md +321 -0
  37. package/.claude/commands/workflow/execute.md +13 -0
  38. package/.claude/commands/workflow/init.md +165 -164
  39. package/.claude/commands/workflow/lite-execute.md +119 -13
  40. package/.claude/commands/workflow/lite-fix.md +623 -621
  41. package/.claude/commands/workflow/lite-plan.md +610 -592
  42. package/.claude/commands/workflow/plan.md +5 -5
  43. package/.claude/commands/workflow/review-module-cycle.md +2 -0
  44. package/.claude/commands/workflow/review-session-cycle.md +2 -0
  45. package/.claude/commands/workflow/review.md +297 -291
  46. package/.claude/commands/workflow/session/complete.md +153 -500
  47. package/.claude/commands/workflow/session/list.md +95 -95
  48. package/.claude/commands/workflow/session/resume.md +60 -60
  49. package/.claude/commands/workflow/session/start.md +199 -199
  50. package/.claude/commands/workflow/tdd-plan.md +3 -3
  51. package/.claude/commands/workflow/tdd-verify.md +23 -9
  52. package/.claude/commands/workflow/test-cycle-execute.md +2 -0
  53. package/.claude/commands/workflow/test-fix-gen.md +699 -699
  54. package/.claude/commands/workflow/tools/conflict-resolution.md +104 -18
  55. package/.claude/commands/workflow/tools/context-gather.md +436 -434
  56. package/.claude/commands/workflow/tools/task-generate-agent.md +490 -291
  57. package/.claude/commands/workflow/tools/task-generate-tdd.md +18 -10
  58. package/.claude/commands/workflow/tools/test-concept-enhanced.md +2 -1
  59. package/.claude/commands/workflow/tools/test-context-gather.md +1 -0
  60. package/.claude/commands/workflow/tools/test-task-generate.md +1 -0
  61. package/.claude/commands/workflow/ui-design/import-from-code.md +9 -6
  62. package/.claude/skills/command-guide/SKILL.md +5 -5
  63. package/.claude/skills/command-guide/index/all-commands.json +1 -1
  64. package/.claude/skills/command-guide/index/by-category.json +1 -1
  65. package/.claude/skills/command-guide/index/by-use-case.json +1 -1
  66. package/.claude/skills/command-guide/reference/agents/action-planning-agent.md +857 -778
  67. package/.claude/skills/command-guide/reference/agents/cli-execution-agent.md +266 -269
  68. package/.claude/skills/command-guide/reference/agents/cli-explore-agent.md +2 -2
  69. package/.claude/skills/command-guide/reference/agents/cli-lite-planning-agent.md +142 -92
  70. package/.claude/skills/command-guide/reference/agents/cli-planning-agent.md +4 -4
  71. package/.claude/skills/command-guide/reference/agents/code-developer.md +7 -6
  72. package/.claude/skills/command-guide/reference/agents/conceptual-planning-agent.md +2 -2
  73. package/.claude/skills/command-guide/reference/agents/context-search-agent.md +31 -32
  74. package/.claude/skills/command-guide/reference/agents/doc-generator.md +4 -4
  75. package/.claude/skills/command-guide/reference/agents/memory-bridge.md +93 -93
  76. package/.claude/skills/command-guide/reference/agents/test-context-search-agent.md +8 -7
  77. package/.claude/skills/command-guide/reference/agents/test-fix-agent.md +7 -6
  78. package/.claude/skills/command-guide/reference/commands/memory/docs-full-cli.md +471 -471
  79. package/.claude/skills/command-guide/reference/commands/memory/docs-related-cli.md +386 -386
  80. package/.claude/skills/command-guide/reference/commands/memory/docs.md +17 -16
  81. package/.claude/skills/command-guide/reference/commands/memory/load.md +5 -5
  82. package/.claude/skills/command-guide/reference/commands/memory/tech-research.md +194 -357
  83. package/.claude/skills/command-guide/reference/commands/memory/update-full.md +332 -332
  84. package/.claude/skills/command-guide/reference/commands/memory/workflow-skill-memory.md +4 -4
  85. package/.claude/skills/command-guide/reference/commands/task/create.md +151 -151
  86. package/.claude/skills/command-guide/reference/commands/version.md +254 -254
  87. package/.claude/skills/command-guide/reference/commands/workflow/brainstorm/api-designer.md +585 -585
  88. package/.claude/skills/command-guide/reference/commands/workflow/brainstorm/auto-parallel.md +443 -443
  89. package/.claude/skills/command-guide/reference/commands/workflow/brainstorm/data-architect.md +220 -220
  90. package/.claude/skills/command-guide/reference/commands/workflow/brainstorm/product-manager.md +200 -200
  91. package/.claude/skills/command-guide/reference/commands/workflow/brainstorm/product-owner.md +200 -200
  92. package/.claude/skills/command-guide/reference/commands/workflow/brainstorm/scrum-master.md +200 -200
  93. package/.claude/skills/command-guide/reference/commands/workflow/brainstorm/subject-matter-expert.md +200 -200
  94. package/.claude/skills/command-guide/reference/commands/workflow/brainstorm/system-architect.md +387 -387
  95. package/.claude/skills/command-guide/reference/commands/workflow/brainstorm/ui-designer.md +221 -221
  96. package/.claude/skills/command-guide/reference/commands/workflow/brainstorm/ux-expert.md +221 -221
  97. package/.claude/skills/command-guide/reference/commands/workflow/execute.md +25 -20
  98. package/.claude/skills/command-guide/reference/commands/workflow/init.md +164 -164
  99. package/.claude/skills/command-guide/reference/commands/workflow/lite-execute.md +748 -686
  100. package/.claude/skills/command-guide/reference/commands/workflow/lite-fix.md +664 -621
  101. package/.claude/skills/command-guide/reference/commands/workflow/lite-plan.md +645 -592
  102. package/.claude/skills/command-guide/reference/commands/workflow/plan.md +5 -5
  103. package/.claude/skills/command-guide/reference/commands/workflow/review.md +25 -18
  104. package/.claude/skills/command-guide/reference/commands/workflow/session/complete.md +547 -500
  105. package/.claude/skills/command-guide/reference/commands/workflow/session/list.md +45 -27
  106. package/.claude/skills/command-guide/reference/commands/workflow/session/resume.md +35 -19
  107. package/.claude/skills/command-guide/reference/commands/workflow/session/start.md +90 -33
  108. package/.claude/skills/command-guide/reference/commands/workflow/tdd-plan.md +3 -3
  109. package/.claude/skills/command-guide/reference/commands/workflow/tdd-verify.md +23 -9
  110. package/.claude/skills/command-guide/reference/commands/workflow/test-fix-gen.md +699 -699
  111. package/.claude/skills/command-guide/reference/commands/workflow/tools/conflict-resolution.md +103 -17
  112. package/.claude/skills/command-guide/reference/commands/workflow/tools/context-gather.md +434 -434
  113. package/.claude/skills/command-guide/reference/commands/workflow/tools/task-generate-agent.md +487 -291
  114. package/.claude/skills/command-guide/reference/commands/workflow/tools/task-generate-tdd.md +17 -10
  115. package/.claude/skills/command-guide/reference/commands/workflow/tools/test-concept-enhanced.md +1 -1
  116. package/.claude/skills/command-guide/reference/commands/workflow/ui-design/import-from-code.md +6 -6
  117. package/.claude/workflows/chinese-response.md +38 -0
  118. package/.claude/workflows/cli-templates/prompts/rules/rule-api.txt +122 -0
  119. package/.claude/workflows/cli-templates/prompts/rules/rule-components.txt +122 -0
  120. package/.claude/workflows/cli-templates/prompts/rules/rule-config.txt +89 -0
  121. package/.claude/workflows/cli-templates/prompts/rules/rule-core.txt +60 -0
  122. package/.claude/workflows/cli-templates/prompts/rules/rule-patterns.txt +70 -0
  123. package/.claude/workflows/cli-templates/prompts/rules/rule-testing.txt +81 -0
  124. package/.claude/workflows/cli-templates/prompts/rules/tech-rules-agent-prompt.txt +89 -0
  125. package/.claude/workflows/cli-templates/prompts/workflow/gemini-solution-design.txt +131 -131
  126. package/.claude/workflows/cli-templates/prompts/workflow/skill-conflict-patterns.txt +5 -9
  127. package/.claude/workflows/cli-templates/prompts/workflow/skill-lessons-learned.txt +5 -9
  128. package/.claude/workflows/cli-templates/protocols/analysis-protocol.md +112 -0
  129. package/.claude/workflows/cli-templates/protocols/write-protocol.md +201 -0
  130. package/.claude/workflows/cli-templates/schemas/conflict-resolution-schema.json +137 -0
  131. package/.claude/workflows/cli-templates/schemas/debug-log-json-schema.json +127 -0
  132. package/.claude/workflows/cli-templates/schemas/fix-plan-json-schema.json +25 -0
  133. package/.claude/workflows/cli-templates/schemas/plan-json-schema.json +25 -0
  134. package/.claude/workflows/cli-tools-usage.md +526 -0
  135. package/{CLAUDE.md → .claude/workflows/coding-philosophy.md} +24 -45
  136. package/.claude/workflows/context-tools.md +84 -0
  137. package/.claude/workflows/file-modification.md +64 -0
  138. package/.claude/workflows/tool-strategy.md +216 -79
  139. package/.claude/workflows/windows-platform.md +16 -0
  140. package/.claude/workflows/workflow-architecture.md +942 -942
  141. package/.codex/AGENTS.md +63 -330
  142. package/.codex/prompts/debug.md +318 -0
  143. package/.codex/prompts/execute.md +273 -0
  144. package/.codex/prompts/lite-execute.md +164 -0
  145. package/.codex/prompts/lite-plan.md +469 -0
  146. package/.codex/prompts.zip +0 -0
  147. package/.gemini/GEMINI.md +25 -164
  148. package/.qwen/QWEN.md +0 -139
  149. package/README.md +29 -9
  150. package/ccw/README.md +30 -6
  151. package/ccw/bin/ccw-mcp.js +7 -0
  152. package/ccw/bin/ccw.js +9 -9
  153. package/ccw/package.json +65 -47
  154. package/ccw/src/.workflow/.cli-history/history.db +0 -0
  155. package/ccw/src/.workflow/.cli-history/history.db-shm +0 -0
  156. package/ccw/src/.workflow/.cli-history/history.db-wal +0 -0
  157. package/ccw/src/cli.ts +244 -0
  158. package/ccw/src/commands/cli.ts +740 -0
  159. package/ccw/src/commands/core-memory.ts +770 -0
  160. package/ccw/src/commands/hook.ts +315 -0
  161. package/ccw/src/commands/install.ts +519 -0
  162. package/ccw/src/commands/{list.js → list.ts} +1 -1
  163. package/ccw/src/commands/memory.ts +1090 -0
  164. package/ccw/src/commands/{serve.js → serve.ts} +14 -5
  165. package/ccw/src/commands/session-path-resolver.ts +372 -0
  166. package/ccw/src/commands/session.ts +1141 -0
  167. package/ccw/src/commands/{stop.js → stop.ts} +16 -6
  168. package/ccw/src/commands/tool.ts +201 -0
  169. package/ccw/src/commands/{uninstall.js → uninstall.ts} +89 -40
  170. package/ccw/src/commands/{upgrade.js → upgrade.ts} +68 -23
  171. package/ccw/src/commands/{view.js → view.ts} +22 -8
  172. package/ccw/src/config/storage-paths.ts +670 -0
  173. package/ccw/src/core/cache-manager.ts +294 -0
  174. package/ccw/src/core/claude-freshness.ts +319 -0
  175. package/ccw/src/core/core-memory-store.ts +1528 -0
  176. package/ccw/src/core/{dashboard-generator-patch.js → dashboard-generator-patch.ts} +18 -0
  177. package/ccw/src/core/{dashboard-generator.js → dashboard-generator.ts} +69 -12
  178. package/ccw/src/core/data-aggregator.ts +584 -0
  179. package/ccw/src/core/history-importer.ts +625 -0
  180. package/ccw/src/core/{lite-scanner.js → lite-scanner-complete.ts} +162 -66
  181. package/ccw/src/core/lite-scanner.ts +469 -0
  182. package/ccw/src/core/{manifest.js → manifest.ts} +104 -34
  183. package/ccw/src/core/memory-embedder-bridge.ts +262 -0
  184. package/ccw/src/core/memory-store.ts +978 -0
  185. package/ccw/src/core/routes/ccw-routes.ts +96 -0
  186. package/ccw/src/core/routes/claude-routes.ts +1183 -0
  187. package/ccw/src/core/routes/cli-routes.ts +561 -0
  188. package/ccw/src/core/routes/codexlens-routes.ts +806 -0
  189. package/ccw/src/core/routes/core-memory-routes.ts +605 -0
  190. package/ccw/src/core/routes/files-routes.ts +428 -0
  191. package/ccw/src/core/routes/graph-routes.md +164 -0
  192. package/ccw/src/core/routes/graph-routes.ts +626 -0
  193. package/ccw/src/core/routes/help-routes.ts +308 -0
  194. package/ccw/src/core/routes/hooks-routes.ts +405 -0
  195. package/ccw/src/core/routes/mcp-routes.ts +1271 -0
  196. package/ccw/src/core/routes/mcp-routes.ts.backup +550 -0
  197. package/ccw/src/core/routes/mcp-templates-db.ts +268 -0
  198. package/ccw/src/core/routes/memory-routes.ts +1206 -0
  199. package/ccw/src/core/routes/rules-routes.ts +526 -0
  200. package/ccw/src/core/routes/session-routes.ts +467 -0
  201. package/ccw/src/core/routes/skills-routes.ts +599 -0
  202. package/ccw/src/core/routes/status-routes.ts +57 -0
  203. package/ccw/src/core/routes/system-routes.ts +427 -0
  204. package/ccw/src/core/server.ts +431 -0
  205. package/ccw/src/core/session-clustering-service.ts +1258 -0
  206. package/ccw/src/core/session-scanner.ts +283 -0
  207. package/ccw/src/core/websocket.ts +190 -0
  208. package/ccw/src/{index.js → index.ts} +1 -0
  209. package/ccw/src/mcp-server/index.ts +186 -0
  210. package/ccw/src/templates/assets/css/github-dark.min.css +10 -0
  211. package/ccw/src/templates/assets/css/github.min.css +10 -0
  212. package/ccw/src/templates/assets/js/cytoscape.min.js +32 -0
  213. package/ccw/src/templates/assets/js/d3.min.js +2 -0
  214. package/ccw/src/templates/assets/js/highlight.min.js +1244 -0
  215. package/ccw/src/templates/assets/js/lucide.min.js +12 -0
  216. package/ccw/src/templates/assets/js/marked.min.js +69 -0
  217. package/ccw/src/templates/assets/js/tailwind.js +83 -0
  218. package/ccw/src/templates/dashboard-css/01-base.css +11 -0
  219. package/ccw/src/templates/dashboard-css/02-session.css +22 -0
  220. package/ccw/src/templates/dashboard-css/04-lite-tasks.css +10 -0
  221. package/ccw/src/templates/dashboard-css/06-cards.css +10 -4
  222. package/ccw/src/templates/dashboard-css/07-managers.css +1178 -7
  223. package/ccw/src/templates/dashboard-css/09-explorer.css +23 -12
  224. package/ccw/src/templates/dashboard-css/10-cli-status.css +337 -0
  225. package/ccw/src/templates/dashboard-css/11-cli-history.css +271 -0
  226. package/ccw/src/templates/dashboard-css/12-cli-legacy.css +796 -0
  227. package/ccw/src/templates/dashboard-css/13-cli-ccw.css +199 -0
  228. package/ccw/src/templates/dashboard-css/14-cli-modals.css +258 -0
  229. package/ccw/src/templates/dashboard-css/15-cli-endpoints.css +305 -0
  230. package/ccw/src/templates/dashboard-css/16-cli-session.css +241 -0
  231. package/ccw/src/templates/dashboard-css/17-cli-conversation.css +283 -0
  232. package/ccw/src/templates/dashboard-css/18-cli-settings.css +160 -0
  233. package/ccw/src/templates/dashboard-css/19-cli-native-session.css +496 -0
  234. package/ccw/src/templates/dashboard-css/20-cli-taskqueue.css +188 -0
  235. package/ccw/src/templates/dashboard-css/21-cli-toolmgmt.css +310 -0
  236. package/ccw/src/templates/dashboard-css/22-cli-semantic.css +240 -0
  237. package/ccw/src/templates/dashboard-css/23-memory.css +2390 -0
  238. package/ccw/src/templates/dashboard-css/24-prompt-history.css +1089 -0
  239. package/ccw/src/templates/dashboard-css/25-skills-rules.css +326 -0
  240. package/ccw/src/templates/dashboard-css/26-claude-manager.css +908 -0
  241. package/ccw/src/templates/dashboard-css/27-graph-explorer.css +1678 -0
  242. package/ccw/src/templates/dashboard-css/28-mcp-manager.css +748 -0
  243. package/ccw/src/templates/dashboard-css/29-help.css +264 -0
  244. package/ccw/src/templates/dashboard-css/30-core-memory.css +1700 -0
  245. package/ccw/src/templates/dashboard-js/api.js +162 -142
  246. package/ccw/src/templates/dashboard-js/components/carousel.js +4 -4
  247. package/ccw/src/templates/dashboard-js/components/cli-history.js +876 -0
  248. package/ccw/src/templates/dashboard-js/components/cli-status.js +978 -0
  249. package/ccw/src/templates/dashboard-js/components/global-notifications.js +508 -219
  250. package/ccw/src/templates/dashboard-js/components/hook-manager.js +1277 -282
  251. package/ccw/src/templates/dashboard-js/components/index-manager.js +302 -0
  252. package/ccw/src/templates/dashboard-js/components/mcp-manager.js +718 -27
  253. package/ccw/src/templates/dashboard-js/components/modals.js +66 -0
  254. package/ccw/src/templates/dashboard-js/components/navigation.js +80 -12
  255. package/ccw/src/templates/dashboard-js/components/notifications.js +758 -194
  256. package/ccw/src/templates/dashboard-js/components/storage-manager.js +478 -0
  257. package/ccw/src/templates/dashboard-js/components/tabs-other.js +157 -6
  258. package/ccw/src/templates/dashboard-js/components/task-queue-sidebar.js +716 -0
  259. package/ccw/src/templates/dashboard-js/help-i18n.js +272 -0
  260. package/ccw/src/templates/dashboard-js/i18n.js +2807 -0
  261. package/ccw/src/templates/dashboard-js/main.js +15 -0
  262. package/ccw/src/templates/dashboard-js/state.js +243 -42
  263. package/ccw/src/templates/dashboard-js/utils.js +47 -1
  264. package/ccw/src/templates/dashboard-js/views/claude-manager.js +912 -0
  265. package/ccw/src/templates/dashboard-js/views/cli-manager.js +2272 -0
  266. package/ccw/src/templates/dashboard-js/views/codexlens-manager.js +964 -0
  267. package/ccw/src/templates/dashboard-js/views/core-memory-clusters.js +503 -0
  268. package/ccw/src/templates/dashboard-js/views/core-memory.js +782 -0
  269. package/ccw/src/templates/dashboard-js/views/explorer.js +888 -852
  270. package/ccw/src/templates/dashboard-js/views/graph-explorer.js +1157 -0
  271. package/ccw/src/templates/dashboard-js/views/help.js +856 -0
  272. package/ccw/src/templates/dashboard-js/views/history.js +337 -0
  273. package/ccw/src/templates/dashboard-js/views/home.js +61 -15
  274. package/ccw/src/templates/dashboard-js/views/hook-manager.js +311 -43
  275. package/ccw/src/templates/dashboard-js/views/lite-tasks.js +204 -28
  276. package/ccw/src/templates/dashboard-js/views/mcp-manager.js +2187 -411
  277. package/ccw/src/templates/dashboard-js/views/mcp-manager.js.backup +1729 -0
  278. package/ccw/src/templates/dashboard-js/views/mcp-manager.js.new +928 -0
  279. package/ccw/src/templates/dashboard-js/views/memory.js +1221 -0
  280. package/ccw/src/templates/dashboard-js/views/prompt-history.js +713 -0
  281. package/ccw/src/templates/dashboard-js/views/rules-manager.js +828 -0
  282. package/ccw/src/templates/dashboard-js/views/session-detail.js +54 -53
  283. package/ccw/src/templates/dashboard-js/views/skills-manager.js +819 -0
  284. package/ccw/src/templates/dashboard.html +185 -85
  285. package/ccw/src/templates/hooks-config-example.json +60 -0
  286. package/ccw/src/tools/classify-folders.ts +245 -0
  287. package/ccw/src/tools/cli-config-manager.ts +268 -0
  288. package/ccw/src/tools/cli-executor.ts +2014 -0
  289. package/ccw/src/tools/cli-history-store.ts +1195 -0
  290. package/ccw/src/tools/codex-lens.ts +1141 -0
  291. package/ccw/src/tools/{convert-tokens-to-css.js → convert-tokens-to-css.ts} +73 -23
  292. package/ccw/src/tools/core-memory.ts +444 -0
  293. package/ccw/src/tools/detect-changed-modules.ts +325 -0
  294. package/ccw/src/tools/{discover-design-files.js → discover-design-files.ts} +74 -24
  295. package/ccw/src/tools/edit-file.ts +568 -0
  296. package/ccw/src/tools/{generate-module-docs.js → generate-module-docs.ts} +207 -185
  297. package/ccw/src/tools/{get-modules-by-depth.js → get-modules-by-depth.ts} +120 -79
  298. package/ccw/src/tools/index.ts +370 -0
  299. package/ccw/src/tools/native-session-discovery.ts +795 -0
  300. package/ccw/src/tools/notifier.ts +129 -0
  301. package/ccw/src/tools/read-file.ts +410 -0
  302. package/ccw/src/tools/resume-strategy.ts +345 -0
  303. package/ccw/src/tools/session-content-parser.ts +619 -0
  304. package/ccw/src/tools/session-manager.ts +1026 -0
  305. package/ccw/src/tools/smart-context.ts +228 -0
  306. package/ccw/src/tools/smart-search.ts +2065 -0
  307. package/ccw/src/tools/smart-search.ts.backup +1233 -0
  308. package/ccw/src/tools/storage-manager.ts +455 -0
  309. package/ccw/src/tools/write-file.ts +222 -0
  310. package/ccw/src/types/config.ts +11 -0
  311. package/ccw/src/types/index.ts +3 -0
  312. package/ccw/src/types/session.ts +25 -0
  313. package/ccw/src/types/tool.ts +41 -0
  314. package/ccw/src/utils/{browser-launcher.js → browser-launcher.ts} +10 -8
  315. package/ccw/src/utils/file-utils.ts +48 -0
  316. package/ccw/src/utils/{path-resolver.js → path-resolver.ts} +114 -78
  317. package/ccw/src/utils/path-validator.ts +153 -0
  318. package/ccw/src/utils/{ui.js → ui.ts} +32 -25
  319. package/codex-lens/pyproject.toml +48 -0
  320. package/codex-lens/src/codexlens/.workflow/.cli-history/history.db +0 -0
  321. package/codex-lens/src/codexlens/__init__.py +28 -0
  322. package/codex-lens/src/codexlens/__main__.py +14 -0
  323. package/codex-lens/src/codexlens/__pycache__/__init__.cpython-313.pyc +0 -0
  324. package/codex-lens/src/codexlens/__pycache__/__main__.cpython-313.pyc +0 -0
  325. package/codex-lens/src/codexlens/__pycache__/config.cpython-313.pyc +0 -0
  326. package/codex-lens/src/codexlens/__pycache__/entities.cpython-313.pyc +0 -0
  327. package/codex-lens/src/codexlens/__pycache__/errors.cpython-313.pyc +0 -0
  328. package/codex-lens/src/codexlens/cli/__init__.py +27 -0
  329. package/codex-lens/src/codexlens/cli/__pycache__/__init__.cpython-313.pyc +0 -0
  330. package/codex-lens/src/codexlens/cli/__pycache__/commands.cpython-313.pyc +0 -0
  331. package/codex-lens/src/codexlens/cli/__pycache__/embedding_manager.cpython-313.pyc +0 -0
  332. package/codex-lens/src/codexlens/cli/__pycache__/model_manager.cpython-313.pyc +0 -0
  333. package/codex-lens/src/codexlens/cli/__pycache__/output.cpython-313.pyc +0 -0
  334. package/codex-lens/src/codexlens/cli/commands.py +1931 -0
  335. package/codex-lens/src/codexlens/cli/embedding_manager.py +620 -0
  336. package/codex-lens/src/codexlens/cli/model_manager.py +289 -0
  337. package/codex-lens/src/codexlens/cli/output.py +124 -0
  338. package/codex-lens/src/codexlens/config.py +201 -0
  339. package/codex-lens/src/codexlens/entities.py +121 -0
  340. package/codex-lens/src/codexlens/errors.py +55 -0
  341. package/codex-lens/src/codexlens/indexing/README.md +77 -0
  342. package/codex-lens/src/codexlens/indexing/__init__.py +4 -0
  343. package/codex-lens/src/codexlens/indexing/__pycache__/__init__.cpython-313.pyc +0 -0
  344. package/codex-lens/src/codexlens/indexing/__pycache__/symbol_extractor.cpython-313.pyc +0 -0
  345. package/codex-lens/src/codexlens/indexing/symbol_extractor.py +243 -0
  346. package/codex-lens/src/codexlens/parsers/__init__.py +8 -0
  347. package/codex-lens/src/codexlens/parsers/__pycache__/__init__.cpython-313.pyc +0 -0
  348. package/codex-lens/src/codexlens/parsers/__pycache__/encoding.cpython-313.pyc +0 -0
  349. package/codex-lens/src/codexlens/parsers/__pycache__/factory.cpython-313.pyc +0 -0
  350. package/codex-lens/src/codexlens/parsers/__pycache__/tokenizer.cpython-313.pyc +0 -0
  351. package/codex-lens/src/codexlens/parsers/__pycache__/treesitter_parser.cpython-313.pyc +0 -0
  352. package/codex-lens/src/codexlens/parsers/encoding.py +202 -0
  353. package/codex-lens/src/codexlens/parsers/factory.py +256 -0
  354. package/codex-lens/src/codexlens/parsers/tokenizer.py +98 -0
  355. package/codex-lens/src/codexlens/parsers/treesitter_parser.py +335 -0
  356. package/codex-lens/src/codexlens/search/__init__.py +15 -0
  357. package/codex-lens/src/codexlens/search/__pycache__/__init__.cpython-313.pyc +0 -0
  358. package/codex-lens/src/codexlens/search/__pycache__/chain_search.cpython-313.pyc +0 -0
  359. package/codex-lens/src/codexlens/search/__pycache__/enrichment.cpython-313.pyc +0 -0
  360. package/codex-lens/src/codexlens/search/__pycache__/hybrid_search.cpython-313.pyc +0 -0
  361. package/codex-lens/src/codexlens/search/__pycache__/query_parser.cpython-313.pyc +0 -0
  362. package/codex-lens/src/codexlens/search/__pycache__/ranking.cpython-313.pyc +0 -0
  363. package/codex-lens/src/codexlens/search/chain_search.py +647 -0
  364. package/codex-lens/src/codexlens/search/enrichment.py +150 -0
  365. package/codex-lens/src/codexlens/search/hybrid_search.py +313 -0
  366. package/codex-lens/src/codexlens/search/query_parser.py +242 -0
  367. package/codex-lens/src/codexlens/search/ranking.py +274 -0
  368. package/codex-lens/src/codexlens/semantic/__init__.py +39 -0
  369. package/codex-lens/src/codexlens/semantic/__pycache__/__init__.cpython-313.pyc +0 -0
  370. package/codex-lens/src/codexlens/semantic/__pycache__/ann_index.cpython-313.pyc +0 -0
  371. package/codex-lens/src/codexlens/semantic/__pycache__/chunker.cpython-313.pyc +0 -0
  372. package/codex-lens/src/codexlens/semantic/__pycache__/code_extractor.cpython-313.pyc +0 -0
  373. package/codex-lens/src/codexlens/semantic/__pycache__/embedder.cpython-313.pyc +0 -0
  374. package/codex-lens/src/codexlens/semantic/__pycache__/graph_analyzer.cpython-313.pyc +0 -0
  375. package/codex-lens/src/codexlens/semantic/__pycache__/llm_enhancer.cpython-313.pyc +0 -0
  376. package/codex-lens/src/codexlens/semantic/__pycache__/vector_store.cpython-313.pyc +0 -0
  377. package/codex-lens/src/codexlens/semantic/ann_index.py +414 -0
  378. package/codex-lens/src/codexlens/semantic/chunker.py +448 -0
  379. package/codex-lens/src/codexlens/semantic/code_extractor.py +274 -0
  380. package/codex-lens/src/codexlens/semantic/embedder.py +185 -0
  381. package/codex-lens/src/codexlens/semantic/vector_store.py +955 -0
  382. package/codex-lens/src/codexlens/storage/__init__.py +29 -0
  383. package/codex-lens/src/codexlens/storage/__pycache__/__init__.cpython-313.pyc +0 -0
  384. package/codex-lens/src/codexlens/storage/__pycache__/dir_index.cpython-313.pyc +0 -0
  385. package/codex-lens/src/codexlens/storage/__pycache__/file_cache.cpython-313.pyc +0 -0
  386. package/codex-lens/src/codexlens/storage/__pycache__/index_tree.cpython-313.pyc +0 -0
  387. package/codex-lens/src/codexlens/storage/__pycache__/migration_manager.cpython-313.pyc +0 -0
  388. package/codex-lens/src/codexlens/storage/__pycache__/path_mapper.cpython-313.pyc +0 -0
  389. package/codex-lens/src/codexlens/storage/__pycache__/registry.cpython-313.pyc +0 -0
  390. package/codex-lens/src/codexlens/storage/__pycache__/sqlite_store.cpython-313.pyc +0 -0
  391. package/codex-lens/src/codexlens/storage/__pycache__/sqlite_utils.cpython-313.pyc +0 -0
  392. package/codex-lens/src/codexlens/storage/dir_index.py +1850 -0
  393. package/codex-lens/src/codexlens/storage/file_cache.py +32 -0
  394. package/codex-lens/src/codexlens/storage/index_tree.py +776 -0
  395. package/codex-lens/src/codexlens/storage/migration_manager.py +154 -0
  396. package/codex-lens/src/codexlens/storage/migrations/__init__.py +1 -0
  397. package/codex-lens/src/codexlens/storage/migrations/__pycache__/__init__.cpython-313.pyc +0 -0
  398. package/codex-lens/src/codexlens/storage/migrations/__pycache__/migration_001_normalize_keywords.cpython-313.pyc +0 -0
  399. package/codex-lens/src/codexlens/storage/migrations/__pycache__/migration_002_add_token_metadata.cpython-313.pyc +0 -0
  400. package/codex-lens/src/codexlens/storage/migrations/__pycache__/migration_003_code_relationships.cpython-313.pyc +0 -0
  401. package/codex-lens/src/codexlens/storage/migrations/__pycache__/migration_004_dual_fts.cpython-313.pyc +0 -0
  402. package/codex-lens/src/codexlens/storage/migrations/__pycache__/migration_005_cleanup_unused_fields.cpython-313.pyc +0 -0
  403. package/codex-lens/src/codexlens/storage/migrations/migration_001_normalize_keywords.py +123 -0
  404. package/codex-lens/src/codexlens/storage/migrations/migration_002_add_token_metadata.py +48 -0
  405. package/codex-lens/src/codexlens/storage/migrations/migration_004_dual_fts.py +232 -0
  406. package/codex-lens/src/codexlens/storage/migrations/migration_005_cleanup_unused_fields.py +196 -0
  407. package/codex-lens/src/codexlens/storage/path_mapper.py +274 -0
  408. package/codex-lens/src/codexlens/storage/registry.py +670 -0
  409. package/codex-lens/src/codexlens/storage/sqlite_store.py +576 -0
  410. package/codex-lens/src/codexlens/storage/sqlite_utils.py +64 -0
  411. package/package.json +4 -1
  412. package/.claude/commands/memory/tech-research.md +0 -477
  413. package/.claude/scripts/classify-folders.sh +0 -39
  414. package/.claude/scripts/convert_tokens_to_css.sh +0 -229
  415. package/.claude/scripts/detect_changed_modules.sh +0 -161
  416. package/.claude/scripts/discover-design-files.sh +0 -87
  417. package/.claude/scripts/extract-animations.js +0 -243
  418. package/.claude/scripts/extract-computed-styles.js +0 -118
  419. package/.claude/scripts/extract-layout-structure.js +0 -411
  420. package/.claude/scripts/generate_module_docs.sh +0 -717
  421. package/.claude/scripts/get_modules_by_depth.sh +0 -170
  422. package/.claude/scripts/ui-generate-preview.sh +0 -395
  423. package/.claude/scripts/ui-instantiate-prototypes.sh +0 -815
  424. package/.claude/scripts/update_module_claude.sh +0 -337
  425. package/.claude/workflows/context-search-strategy.md +0 -77
  426. package/.claude/workflows/intelligent-tools-strategy.md +0 -662
  427. package/ccw/src/cli.js +0 -119
  428. package/ccw/src/commands/install.js +0 -324
  429. package/ccw/src/commands/tool.js +0 -138
  430. package/ccw/src/core/data-aggregator.js +0 -409
  431. package/ccw/src/core/server.js +0 -2063
  432. package/ccw/src/core/session-scanner.js +0 -235
  433. package/ccw/src/tools/classify-folders.js +0 -204
  434. package/ccw/src/tools/detect-changed-modules.js +0 -288
  435. package/ccw/src/tools/edit-file.js +0 -266
  436. package/ccw/src/tools/index.js +0 -176
  437. package/ccw/src/utils/file-utils.js +0 -48
@@ -3,10 +3,13 @@
3
3
  * Generate documentation for modules and projects with multiple strategies
4
4
  */
5
5
 
6
+ import { z } from 'zod';
7
+ import type { ToolSchema, ToolResult } from '../types/tool.js';
6
8
  import { readdirSync, statSync, existsSync, readFileSync, mkdirSync, writeFileSync, unlinkSync } from 'fs';
7
9
  import { join, resolve, basename, extname, relative } from 'path';
8
10
  import { execSync } from 'child_process';
9
11
  import { tmpdir } from 'os';
12
+ import { getSecondaryModel } from './cli-config-manager.js';
10
13
 
11
14
  // Directories to exclude
12
15
  const EXCLUDE_DIRS = [
@@ -21,7 +24,7 @@ const CODE_EXTENSIONS = [
21
24
  ];
22
25
 
23
26
  // Default models for each tool
24
- const DEFAULT_MODELS = {
27
+ const DEFAULT_MODELS: Record<string, string> = {
25
28
  gemini: 'gemini-2.5-flash',
26
29
  qwen: 'coder-model',
27
30
  codex: 'gpt5-codex'
@@ -30,10 +33,35 @@ const DEFAULT_MODELS = {
30
33
  // Template paths (relative to user home directory)
31
34
  const TEMPLATE_BASE = '.claude/workflows/cli-templates/prompts/documentation';
32
35
 
36
+ // Define Zod schema for validation
37
+ const ParamsSchema = z.object({
38
+ strategy: z.enum(['full', 'single', 'project-readme', 'project-architecture', 'http-api']),
39
+ sourcePath: z.string().min(1, 'Source path is required'),
40
+ projectName: z.string().min(1, 'Project name is required'),
41
+ tool: z.enum(['gemini', 'qwen', 'codex']).default('gemini'),
42
+ model: z.string().optional(),
43
+ });
44
+
45
+ type Params = z.infer<typeof ParamsSchema>;
46
+
47
+ interface ToolOutput {
48
+ success: boolean;
49
+ strategy: string;
50
+ source_path: string;
51
+ project_name: string;
52
+ output_path?: string;
53
+ folder_type?: 'code' | 'navigation';
54
+ tool: string;
55
+ model?: string;
56
+ duration_seconds?: number;
57
+ message?: string;
58
+ error?: string;
59
+ }
60
+
33
61
  /**
34
62
  * Detect folder type (code vs navigation)
35
63
  */
36
- function detectFolderType(dirPath) {
64
+ function detectFolderType(dirPath: string): 'code' | 'navigation' {
37
65
  try {
38
66
  const entries = readdirSync(dirPath, { withFileTypes: true });
39
67
  const codeFiles = entries.filter(e => {
@@ -47,22 +75,10 @@ function detectFolderType(dirPath) {
47
75
  }
48
76
  }
49
77
 
50
- /**
51
- * Count files in directory
52
- */
53
- function countFiles(dirPath) {
54
- try {
55
- const entries = readdirSync(dirPath, { withFileTypes: true });
56
- return entries.filter(e => e.isFile() && !e.name.startsWith('.')).length;
57
- } catch (e) {
58
- return 0;
59
- }
60
- }
61
-
62
78
  /**
63
79
  * Calculate output path
64
80
  */
65
- function calculateOutputPath(sourcePath, projectName, projectRoot) {
81
+ function calculateOutputPath(sourcePath: string, projectName: string, projectRoot: string): string {
66
82
  const absSource = resolve(sourcePath);
67
83
  const normRoot = resolve(projectRoot);
68
84
  let relPath = relative(normRoot, absSource);
@@ -74,16 +90,26 @@ function calculateOutputPath(sourcePath, projectName, projectRoot) {
74
90
  /**
75
91
  * Load template content
76
92
  */
77
- function loadTemplate(templateName) {
93
+ function loadTemplate(templateName: string): string {
78
94
  const homePath = process.env.HOME || process.env.USERPROFILE;
95
+ if (!homePath) {
96
+ return getDefaultTemplate(templateName);
97
+ }
98
+
79
99
  const templatePath = join(homePath, TEMPLATE_BASE, `${templateName}.txt`);
80
100
 
81
101
  if (existsSync(templatePath)) {
82
102
  return readFileSync(templatePath, 'utf8');
83
103
  }
84
104
 
85
- // Fallback templates
86
- const fallbacks = {
105
+ return getDefaultTemplate(templateName);
106
+ }
107
+
108
+ /**
109
+ * Get default template content
110
+ */
111
+ function getDefaultTemplate(templateName: string): string {
112
+ const fallbacks: Record<string, string> = {
87
113
  'api': 'Generate API documentation with function signatures, parameters, return values, and usage examples.',
88
114
  'module-readme': 'Generate README documentation with purpose, usage, configuration, and examples.',
89
115
  'folder-navigation': 'Generate navigation README with overview of subdirectories and their purposes.',
@@ -97,7 +123,7 @@ function loadTemplate(templateName) {
97
123
  /**
98
124
  * Create temporary prompt file and return path
99
125
  */
100
- function createPromptFile(prompt) {
126
+ function createPromptFile(prompt: string): string {
101
127
  const timestamp = Date.now();
102
128
  const randomSuffix = Math.random().toString(36).substring(2, 8);
103
129
  const promptFile = join(tmpdir(), `docs-prompt-${timestamp}-${randomSuffix}.txt`);
@@ -108,13 +134,13 @@ function createPromptFile(prompt) {
108
134
  /**
109
135
  * Build CLI command using stdin piping (avoids shell escaping issues)
110
136
  */
111
- function buildCliCommand(tool, promptFile, model) {
137
+ function buildCliCommand(tool: string, promptFile: string, model: string): string {
112
138
  const normalizedPath = promptFile.replace(/\\/g, '/');
113
139
  const isWindows = process.platform === 'win32';
114
-
140
+
115
141
  // Build the cat/read command based on platform
116
142
  const catCmd = isWindows ? `Get-Content -Raw "${normalizedPath}" | ` : `cat "${normalizedPath}" | `;
117
-
143
+
118
144
  switch (tool) {
119
145
  case 'qwen':
120
146
  return model === 'coder-model'
@@ -135,14 +161,17 @@ function buildCliCommand(tool, promptFile, model) {
135
161
  /**
136
162
  * Scan directory structure
137
163
  */
138
- function scanDirectoryStructure(targetPath, strategy) {
139
- const lines = [];
164
+ function scanDirectoryStructure(targetPath: string): {
165
+ info: string;
166
+ folderType: 'code' | 'navigation';
167
+ } {
168
+ const lines: string[] = [];
140
169
  const dirName = basename(targetPath);
141
170
 
142
171
  let totalFiles = 0;
143
172
  let totalDirs = 0;
144
173
 
145
- function countRecursive(dir) {
174
+ function countRecursive(dir: string): void {
146
175
  try {
147
176
  const entries = readdirSync(dir, { withFileTypes: true });
148
177
  entries.forEach(e => {
@@ -172,63 +201,101 @@ function scanDirectoryStructure(targetPath, strategy) {
172
201
  };
173
202
  }
174
203
 
175
- /**
176
- * Main execute function
177
- */
178
- async function execute(params) {
179
- const { strategy, sourcePath, projectName, tool = 'gemini', model } = params;
204
+ // Tool schema for MCP
205
+ export const schema: ToolSchema = {
206
+ name: 'generate_module_docs',
207
+ description: `Generate documentation for modules and projects.
180
208
 
181
- // Validate parameters
182
- const validStrategies = ['full', 'single', 'project-readme', 'project-architecture', 'http-api'];
209
+ Module-Level Strategies:
210
+ - full: Full documentation (API.md + README.md for all directories)
211
+ - single: Single-layer documentation (current directory only)
183
212
 
184
- if (!strategy) {
185
- throw new Error(`Parameter "strategy" is required. Valid: ${validStrategies.join(', ')}`);
186
- }
213
+ Project-Level Strategies:
214
+ - project-readme: Project overview from module docs
215
+ - project-architecture: System design documentation
216
+ - http-api: HTTP API documentation
187
217
 
188
- if (!validStrategies.includes(strategy)) {
189
- throw new Error(`Invalid strategy '${strategy}'. Valid: ${validStrategies.join(', ')}`);
218
+ Output: .workflow/docs/{projectName}/...`,
219
+ inputSchema: {
220
+ type: 'object',
221
+ properties: {
222
+ strategy: {
223
+ type: 'string',
224
+ enum: ['full', 'single', 'project-readme', 'project-architecture', 'http-api'],
225
+ description: 'Documentation strategy'
226
+ },
227
+ sourcePath: {
228
+ type: 'string',
229
+ description: 'Source module directory path'
230
+ },
231
+ projectName: {
232
+ type: 'string',
233
+ description: 'Project name for output path'
234
+ },
235
+ tool: {
236
+ type: 'string',
237
+ enum: ['gemini', 'qwen', 'codex'],
238
+ description: 'CLI tool to use (default: gemini)',
239
+ default: 'gemini'
240
+ },
241
+ model: {
242
+ type: 'string',
243
+ description: 'Model name (optional, uses tool defaults)'
244
+ }
245
+ },
246
+ required: ['strategy', 'sourcePath', 'projectName']
190
247
  }
248
+ };
191
249
 
192
- if (!sourcePath) {
193
- throw new Error('Parameter "sourcePath" is required');
250
+ // Handler function
251
+ export async function handler(params: Record<string, unknown>): Promise<ToolResult<ToolOutput>> {
252
+ const parsed = ParamsSchema.safeParse(params);
253
+ if (!parsed.success) {
254
+ return { success: false, error: `Invalid params: ${parsed.error.message}` };
194
255
  }
195
256
 
196
- if (!projectName) {
197
- throw new Error('Parameter "projectName" is required');
198
- }
257
+ const { strategy, sourcePath, projectName, tool, model } = parsed.data;
199
258
 
200
- const targetPath = resolve(process.cwd(), sourcePath);
259
+ try {
260
+ const targetPath = resolve(process.cwd(), sourcePath);
201
261
 
202
- if (!existsSync(targetPath)) {
203
- throw new Error(`Directory not found: ${targetPath}`);
204
- }
262
+ if (!existsSync(targetPath)) {
263
+ return { success: false, error: `Directory not found: ${targetPath}` };
264
+ }
205
265
 
206
- if (!statSync(targetPath).isDirectory()) {
207
- throw new Error(`Not a directory: ${targetPath}`);
208
- }
266
+ if (!statSync(targetPath).isDirectory()) {
267
+ return { success: false, error: `Not a directory: ${targetPath}` };
268
+ }
209
269
 
210
- // Set model
211
- const actualModel = model || DEFAULT_MODELS[tool] || DEFAULT_MODELS.gemini;
270
+ // Set model (use secondaryModel from config for internal calls)
271
+ let actualModel = model;
272
+ if (!actualModel) {
273
+ try {
274
+ actualModel = getSecondaryModel(process.cwd(), tool);
275
+ } catch {
276
+ actualModel = DEFAULT_MODELS[tool] || DEFAULT_MODELS.gemini;
277
+ }
278
+ }
212
279
 
213
- // Scan directory
214
- const { info: structureInfo, folderType } = scanDirectoryStructure(targetPath, strategy);
280
+ // Scan directory
281
+ const { info: structureInfo, folderType } = scanDirectoryStructure(targetPath);
215
282
 
216
- // Calculate output path
217
- const outputPath = calculateOutputPath(targetPath, projectName, process.cwd());
283
+ // Calculate output path
284
+ const outputPath = calculateOutputPath(targetPath, projectName, process.cwd());
218
285
 
219
- // Ensure output directory exists
220
- mkdirSync(outputPath, { recursive: true });
286
+ // Ensure output directory exists
287
+ mkdirSync(outputPath, { recursive: true });
221
288
 
222
- // Build prompt based on strategy
223
- let prompt;
224
- let templateContent;
289
+ // Build prompt based on strategy
290
+ let prompt: string;
291
+ let templateContent: string;
225
292
 
226
- switch (strategy) {
227
- case 'full':
228
- case 'single':
229
- if (folderType === 'code') {
230
- templateContent = loadTemplate('api');
231
- prompt = `Directory Structure Analysis:
293
+ switch (strategy) {
294
+ case 'full':
295
+ case 'single':
296
+ if (folderType === 'code') {
297
+ templateContent = loadTemplate('api');
298
+ prompt = `Directory Structure Analysis:
232
299
  ${structureInfo}
233
300
 
234
301
  Read: ${strategy === 'full' ? '@**/*' : '@*.ts @*.tsx @*.js @*.jsx @*.py @*.sh @*.md @*.json'}
@@ -241,9 +308,9 @@ Output directory: ${outputPath}
241
308
 
242
309
  Template Guidelines:
243
310
  ${templateContent}`;
244
- } else {
245
- templateContent = loadTemplate('folder-navigation');
246
- prompt = `Directory Structure Analysis:
311
+ } else {
312
+ templateContent = loadTemplate('folder-navigation');
313
+ prompt = `Directory Structure Analysis:
247
314
  ${structureInfo}
248
315
 
249
316
  Read: @*/API.md @*/README.md
@@ -255,12 +322,12 @@ Output directory: ${outputPath}
255
322
 
256
323
  Template Guidelines:
257
324
  ${templateContent}`;
258
- }
259
- break;
325
+ }
326
+ break;
260
327
 
261
- case 'project-readme':
262
- templateContent = loadTemplate('project-readme');
263
- prompt = `Read all module documentation:
328
+ case 'project-readme':
329
+ templateContent = loadTemplate('project-readme');
330
+ prompt = `Read all module documentation:
264
331
  @.workflow/docs/${projectName}/**/API.md
265
332
  @.workflow/docs/${projectName}/**/README.md
266
333
 
@@ -269,11 +336,11 @@ Generate project-level documentation:
269
336
 
270
337
  Template Guidelines:
271
338
  ${templateContent}`;
272
- break;
339
+ break;
273
340
 
274
- case 'project-architecture':
275
- templateContent = loadTemplate('project-architecture');
276
- prompt = `Read project documentation:
341
+ case 'project-architecture':
342
+ templateContent = loadTemplate('project-architecture');
343
+ prompt = `Read project documentation:
277
344
  @.workflow/docs/${projectName}/README.md
278
345
  @.workflow/docs/${projectName}/**/API.md
279
346
 
@@ -285,10 +352,10 @@ Output directory: .workflow/docs/${projectName}/
285
352
 
286
353
  Template Guidelines:
287
354
  ${templateContent}`;
288
- break;
355
+ break;
289
356
 
290
- case 'http-api':
291
- prompt = `Read API route files:
357
+ case 'http-api':
358
+ prompt = `Read API route files:
292
359
  @**/routes/**/*.ts @**/routes/**/*.js
293
360
  @**/api/**/*.ts @**/api/**/*.js
294
361
 
@@ -296,121 +363,76 @@ Generate HTTP API documentation:
296
363
  - api/README.md: REST API endpoints documentation
297
364
 
298
365
  Output directory: .workflow/docs/${projectName}/api/`;
299
- break;
300
- }
366
+ break;
367
+ }
301
368
 
302
- // Create temporary prompt file (avoids shell escaping issues)
303
- const promptFile = createPromptFile(prompt);
304
-
305
- // Build command using file-based prompt
306
- const command = buildCliCommand(tool, promptFile, actualModel);
369
+ // Create temporary prompt file (avoids shell escaping issues)
370
+ const promptFile = createPromptFile(prompt);
307
371
 
308
- // Log execution info
309
- console.log(`📚 Generating docs: ${sourcePath}`);
310
- console.log(` Strategy: ${strategy} | Tool: ${tool} | Model: ${actualModel}`);
311
- console.log(` Output: ${outputPath}`);
312
- console.log(` Prompt file: ${promptFile}`);
372
+ // Build command using file-based prompt
373
+ const command = buildCliCommand(tool, promptFile, actualModel);
313
374
 
314
- try {
315
- const startTime = Date.now();
316
-
317
- execSync(command, {
318
- cwd: targetPath,
319
- encoding: 'utf8',
320
- stdio: 'inherit',
321
- timeout: 600000, // 10 minutes
322
- shell: process.platform === 'win32' ? 'powershell.exe' : '/bin/bash'
323
- });
324
-
325
- const duration = Math.round((Date.now() - startTime) / 1000);
375
+ // Log execution info
376
+ console.log(`📚 Generating docs: ${sourcePath}`);
377
+ console.log(` Strategy: ${strategy} | Tool: ${tool} | Model: ${actualModel}`);
378
+ console.log(` Output: ${outputPath}`);
326
379
 
327
- // Cleanup prompt file
328
380
  try {
329
- unlinkSync(promptFile);
330
- } catch (e) {
331
- // Ignore cleanup errors
332
- }
381
+ const startTime = Date.now();
382
+
383
+ execSync(command, {
384
+ cwd: targetPath,
385
+ encoding: 'utf8',
386
+ stdio: 'inherit',
387
+ timeout: 600000, // 10 minutes
388
+ shell: process.platform === 'win32' ? 'powershell.exe' : '/bin/bash'
389
+ });
333
390
 
334
- console.log(` ✅ Completed in ${duration}s`);
391
+ const duration = Math.round((Date.now() - startTime) / 1000);
335
392
 
336
- return {
337
- success: true,
338
- strategy,
339
- source_path: sourcePath,
340
- project_name: projectName,
341
- output_path: outputPath,
342
- folder_type: folderType,
343
- tool,
344
- model: actualModel,
345
- duration_seconds: duration,
346
- message: `Documentation generated successfully in ${duration}s`
347
- };
348
- } catch (error) {
349
- // Cleanup prompt file on error
350
- try {
351
- unlinkSync(promptFile);
352
- } catch (e) {
353
- // Ignore cleanup errors
354
- }
393
+ // Cleanup prompt file
394
+ try {
395
+ unlinkSync(promptFile);
396
+ } catch (e) {
397
+ // Ignore cleanup errors
398
+ }
355
399
 
356
- console.log(` Generation failed: ${error.message}`);
400
+ console.log(` Completed in ${duration}s`);
401
+
402
+ return {
403
+ success: true,
404
+ result: {
405
+ success: true,
406
+ strategy,
407
+ source_path: sourcePath,
408
+ project_name: projectName,
409
+ output_path: outputPath,
410
+ folder_type: folderType,
411
+ tool,
412
+ model: actualModel,
413
+ duration_seconds: duration,
414
+ message: `Documentation generated successfully in ${duration}s`
415
+ }
416
+ };
417
+ } catch (error) {
418
+ // Cleanup prompt file on error
419
+ try {
420
+ unlinkSync(promptFile);
421
+ } catch (e) {
422
+ // Ignore cleanup errors
423
+ }
357
424
 
425
+ console.log(` ❌ Generation failed: ${(error as Error).message}`);
426
+
427
+ return {
428
+ success: false,
429
+ error: `Documentation generation failed: ${(error as Error).message}`
430
+ };
431
+ }
432
+ } catch (error) {
358
433
  return {
359
434
  success: false,
360
- strategy,
361
- source_path: sourcePath,
362
- project_name: projectName,
363
- tool,
364
- error: error.message
435
+ error: `Tool execution failed: ${(error as Error).message}`
365
436
  };
366
437
  }
367
438
  }
368
-
369
- /**
370
- * Tool Definition
371
- */
372
- export const generateModuleDocsTool = {
373
- name: 'generate_module_docs',
374
- description: `Generate documentation for modules and projects.
375
-
376
- Module-Level Strategies:
377
- - full: Full documentation (API.md + README.md for all directories)
378
- - single: Single-layer documentation (current directory only)
379
-
380
- Project-Level Strategies:
381
- - project-readme: Project overview from module docs
382
- - project-architecture: System design documentation
383
- - http-api: HTTP API documentation
384
-
385
- Output: .workflow/docs/{projectName}/...`,
386
- parameters: {
387
- type: 'object',
388
- properties: {
389
- strategy: {
390
- type: 'string',
391
- enum: ['full', 'single', 'project-readme', 'project-architecture', 'http-api'],
392
- description: 'Documentation strategy'
393
- },
394
- sourcePath: {
395
- type: 'string',
396
- description: 'Source module directory path'
397
- },
398
- projectName: {
399
- type: 'string',
400
- description: 'Project name for output path'
401
- },
402
- tool: {
403
- type: 'string',
404
- enum: ['gemini', 'qwen', 'codex'],
405
- description: 'CLI tool to use (default: gemini)',
406
- default: 'gemini'
407
- },
408
- model: {
409
- type: 'string',
410
- description: 'Model name (optional, uses tool defaults)'
411
- }
412
- },
413
- required: ['strategy', 'sourcePath', 'projectName']
414
- },
415
- execute
416
- };