claude-code-workflow 6.2.2 → 6.2.3

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 (346) hide show
  1. package/ccw/dist/cli.d.ts +2 -0
  2. package/ccw/dist/cli.d.ts.map +1 -0
  3. package/ccw/dist/cli.js +219 -0
  4. package/ccw/dist/cli.js.map +1 -0
  5. package/ccw/dist/commands/cli.d.ts +32 -0
  6. package/ccw/dist/commands/cli.d.ts.map +1 -0
  7. package/ccw/dist/commands/cli.js +619 -0
  8. package/ccw/dist/commands/cli.js.map +1 -0
  9. package/ccw/dist/commands/core-memory.d.ts +32 -0
  10. package/ccw/dist/commands/core-memory.d.ts.map +1 -0
  11. package/ccw/dist/commands/core-memory.js +640 -0
  12. package/ccw/dist/commands/core-memory.js.map +1 -0
  13. package/ccw/dist/commands/hook.d.ts +16 -0
  14. package/ccw/dist/commands/hook.d.ts.map +1 -0
  15. package/ccw/dist/commands/hook.js +276 -0
  16. package/ccw/dist/commands/hook.js.map +1 -0
  17. package/ccw/dist/commands/install.d.ts +12 -0
  18. package/ccw/dist/commands/install.d.ts.map +1 -0
  19. package/ccw/dist/commands/install.js +443 -0
  20. package/ccw/dist/commands/install.js.map +1 -0
  21. package/ccw/dist/commands/list.d.ts +5 -0
  22. package/ccw/dist/commands/list.d.ts.map +1 -0
  23. package/ccw/dist/commands/list.js +32 -0
  24. package/ccw/dist/commands/list.js.map +1 -0
  25. package/ccw/dist/commands/memory.d.ts +57 -0
  26. package/ccw/dist/commands/memory.d.ts.map +1 -0
  27. package/ccw/dist/commands/memory.js +890 -0
  28. package/ccw/dist/commands/memory.js.map +1 -0
  29. package/ccw/dist/commands/serve.d.ts +12 -0
  30. package/ccw/dist/commands/serve.d.ts.map +1 -0
  31. package/ccw/dist/commands/serve.js +63 -0
  32. package/ccw/dist/commands/serve.js.map +1 -0
  33. package/ccw/dist/commands/session-path-resolver.d.ts +45 -0
  34. package/ccw/dist/commands/session-path-resolver.d.ts.map +1 -0
  35. package/ccw/dist/commands/session-path-resolver.js +302 -0
  36. package/ccw/dist/commands/session-path-resolver.js.map +1 -0
  37. package/ccw/dist/commands/session.d.ts +12 -0
  38. package/ccw/dist/commands/session.d.ts.map +1 -0
  39. package/ccw/dist/commands/session.js +954 -0
  40. package/ccw/dist/commands/session.js.map +1 -0
  41. package/ccw/dist/commands/stop.d.ts +11 -0
  42. package/ccw/dist/commands/stop.d.ts.map +1 -0
  43. package/ccw/dist/commands/stop.js +96 -0
  44. package/ccw/dist/commands/stop.js.map +1 -0
  45. package/ccw/dist/commands/tool.d.ts +29 -0
  46. package/ccw/dist/commands/tool.d.ts.map +1 -0
  47. package/ccw/dist/commands/tool.js +173 -0
  48. package/ccw/dist/commands/tool.js.map +1 -0
  49. package/ccw/dist/commands/uninstall.d.ts +9 -0
  50. package/ccw/dist/commands/uninstall.d.ts.map +1 -0
  51. package/ccw/dist/commands/uninstall.js +239 -0
  52. package/ccw/dist/commands/uninstall.js.map +1 -0
  53. package/ccw/dist/commands/upgrade.d.ts +10 -0
  54. package/ccw/dist/commands/upgrade.d.ts.map +1 -0
  55. package/ccw/dist/commands/upgrade.js +288 -0
  56. package/ccw/dist/commands/upgrade.js.map +1 -0
  57. package/ccw/dist/commands/view.d.ts +14 -0
  58. package/ccw/dist/commands/view.d.ts.map +1 -0
  59. package/ccw/dist/commands/view.js +100 -0
  60. package/ccw/dist/commands/view.js.map +1 -0
  61. package/ccw/dist/config/storage-paths.d.ts +184 -0
  62. package/ccw/dist/config/storage-paths.d.ts.map +1 -0
  63. package/ccw/dist/config/storage-paths.js +536 -0
  64. package/ccw/dist/config/storage-paths.js.map +1 -0
  65. package/ccw/dist/core/cache-manager.d.ts +80 -0
  66. package/ccw/dist/core/cache-manager.d.ts.map +1 -0
  67. package/ccw/dist/core/cache-manager.js +260 -0
  68. package/ccw/dist/core/cache-manager.js.map +1 -0
  69. package/ccw/dist/core/claude-freshness.d.ts +53 -0
  70. package/ccw/dist/core/claude-freshness.d.ts.map +1 -0
  71. package/ccw/dist/core/claude-freshness.js +232 -0
  72. package/ccw/dist/core/claude-freshness.js.map +1 -0
  73. package/ccw/dist/core/core-memory-store.d.ts +320 -0
  74. package/ccw/dist/core/core-memory-store.d.ts.map +1 -0
  75. package/ccw/dist/core/core-memory-store.js +1177 -0
  76. package/ccw/dist/core/core-memory-store.js.map +1 -0
  77. package/ccw/dist/core/dashboard-generator-patch.d.ts +2 -0
  78. package/ccw/dist/core/dashboard-generator-patch.d.ts.map +1 -0
  79. package/ccw/dist/core/dashboard-generator-patch.js +48 -0
  80. package/ccw/dist/core/dashboard-generator-patch.js.map +1 -0
  81. package/ccw/dist/core/dashboard-generator.d.ts +8 -0
  82. package/ccw/dist/core/dashboard-generator.d.ts.map +1 -0
  83. package/ccw/dist/core/dashboard-generator.js +695 -0
  84. package/ccw/dist/core/dashboard-generator.js.map +1 -0
  85. package/ccw/dist/core/data-aggregator.d.ts +145 -0
  86. package/ccw/dist/core/data-aggregator.d.ts.map +1 -0
  87. package/ccw/dist/core/data-aggregator.js +416 -0
  88. package/ccw/dist/core/data-aggregator.js.map +1 -0
  89. package/ccw/dist/core/history-importer.d.ts +102 -0
  90. package/ccw/dist/core/history-importer.d.ts.map +1 -0
  91. package/ccw/dist/core/history-importer.js +493 -0
  92. package/ccw/dist/core/history-importer.js.map +1 -0
  93. package/ccw/dist/core/lite-scanner-complete.d.ts +81 -0
  94. package/ccw/dist/core/lite-scanner-complete.d.ts.map +1 -0
  95. package/ccw/dist/core/lite-scanner-complete.js +368 -0
  96. package/ccw/dist/core/lite-scanner-complete.js.map +1 -0
  97. package/ccw/dist/core/lite-scanner.d.ts +81 -0
  98. package/ccw/dist/core/lite-scanner.d.ts.map +1 -0
  99. package/ccw/dist/core/lite-scanner.js +368 -0
  100. package/ccw/dist/core/lite-scanner.js.map +1 -0
  101. package/ccw/dist/core/manifest.d.ts +88 -0
  102. package/ccw/dist/core/manifest.d.ts.map +1 -0
  103. package/ccw/dist/core/manifest.js +214 -0
  104. package/ccw/dist/core/manifest.js.map +1 -0
  105. package/ccw/dist/core/memory-embedder-bridge.d.ts +83 -0
  106. package/ccw/dist/core/memory-embedder-bridge.d.ts.map +1 -0
  107. package/ccw/dist/core/memory-embedder-bridge.js +181 -0
  108. package/ccw/dist/core/memory-embedder-bridge.js.map +1 -0
  109. package/ccw/dist/core/memory-store.d.ts +249 -0
  110. package/ccw/dist/core/memory-store.d.ts.map +1 -0
  111. package/ccw/dist/core/memory-store.js +781 -0
  112. package/ccw/dist/core/memory-store.js.map +1 -0
  113. package/ccw/dist/core/routes/ccw-routes.d.ts +20 -0
  114. package/ccw/dist/core/routes/ccw-routes.d.ts.map +1 -0
  115. package/ccw/dist/core/routes/ccw-routes.js +70 -0
  116. package/ccw/dist/core/routes/ccw-routes.js.map +1 -0
  117. package/ccw/dist/core/routes/claude-routes.d.ts +19 -0
  118. package/ccw/dist/core/routes/claude-routes.d.ts.map +1 -0
  119. package/ccw/dist/core/routes/claude-routes.js +1017 -0
  120. package/ccw/dist/core/routes/claude-routes.js.map +1 -0
  121. package/ccw/dist/core/routes/cli-routes.d.ts +20 -0
  122. package/ccw/dist/core/routes/cli-routes.d.ts.map +1 -0
  123. package/ccw/dist/core/routes/cli-routes.js +468 -0
  124. package/ccw/dist/core/routes/cli-routes.js.map +1 -0
  125. package/ccw/dist/core/routes/codexlens-routes.d.ts +20 -0
  126. package/ccw/dist/core/routes/codexlens-routes.d.ts.map +1 -0
  127. package/ccw/dist/core/routes/codexlens-routes.js +754 -0
  128. package/ccw/dist/core/routes/codexlens-routes.js.map +1 -0
  129. package/ccw/dist/core/routes/core-memory-routes.d.ts +21 -0
  130. package/ccw/dist/core/routes/core-memory-routes.d.ts.map +1 -0
  131. package/ccw/dist/core/routes/core-memory-routes.js +520 -0
  132. package/ccw/dist/core/routes/core-memory-routes.js.map +1 -0
  133. package/ccw/dist/core/routes/files-routes.d.ts +20 -0
  134. package/ccw/dist/core/routes/files-routes.d.ts.map +1 -0
  135. package/ccw/dist/core/routes/files-routes.js +374 -0
  136. package/ccw/dist/core/routes/files-routes.js.map +1 -0
  137. package/ccw/dist/core/routes/graph-routes.d.ts +20 -0
  138. package/ccw/dist/core/routes/graph-routes.d.ts.map +1 -0
  139. package/ccw/dist/core/routes/graph-routes.js +517 -0
  140. package/ccw/dist/core/routes/graph-routes.js.map +1 -0
  141. package/ccw/dist/core/routes/help-routes.d.ts +20 -0
  142. package/ccw/dist/core/routes/help-routes.d.ts.map +1 -0
  143. package/ccw/dist/core/routes/help-routes.js +250 -0
  144. package/ccw/dist/core/routes/help-routes.js.map +1 -0
  145. package/ccw/dist/core/routes/hooks-routes.d.ts +21 -0
  146. package/ccw/dist/core/routes/hooks-routes.d.ts.map +1 -0
  147. package/ccw/dist/core/routes/hooks-routes.js +346 -0
  148. package/ccw/dist/core/routes/hooks-routes.js.map +1 -0
  149. package/ccw/dist/core/routes/mcp-routes.d.ts +20 -0
  150. package/ccw/dist/core/routes/mcp-routes.d.ts.map +1 -0
  151. package/ccw/dist/core/routes/mcp-routes.js +1129 -0
  152. package/ccw/dist/core/routes/mcp-routes.js.map +1 -0
  153. package/ccw/dist/core/routes/mcp-templates-db.d.ts +54 -0
  154. package/ccw/dist/core/routes/mcp-templates-db.d.ts.map +1 -0
  155. package/ccw/dist/core/routes/mcp-templates-db.js +226 -0
  156. package/ccw/dist/core/routes/mcp-templates-db.js.map +1 -0
  157. package/ccw/dist/core/routes/memory-routes.d.ts +21 -0
  158. package/ccw/dist/core/routes/memory-routes.d.ts.map +1 -0
  159. package/ccw/dist/core/routes/memory-routes.js +1095 -0
  160. package/ccw/dist/core/routes/memory-routes.js.map +1 -0
  161. package/ccw/dist/core/routes/rules-routes.d.ts +20 -0
  162. package/ccw/dist/core/routes/rules-routes.d.ts.map +1 -0
  163. package/ccw/dist/core/routes/rules-routes.js +442 -0
  164. package/ccw/dist/core/routes/rules-routes.js.map +1 -0
  165. package/ccw/dist/core/routes/session-routes.d.ts +20 -0
  166. package/ccw/dist/core/routes/session-routes.d.ts.map +1 -0
  167. package/ccw/dist/core/routes/session-routes.js +423 -0
  168. package/ccw/dist/core/routes/session-routes.js.map +1 -0
  169. package/ccw/dist/core/routes/skills-routes.d.ts +20 -0
  170. package/ccw/dist/core/routes/skills-routes.d.ts.map +1 -0
  171. package/ccw/dist/core/routes/skills-routes.js +533 -0
  172. package/ccw/dist/core/routes/skills-routes.js.map +1 -0
  173. package/ccw/dist/core/routes/status-routes.d.ts +20 -0
  174. package/ccw/dist/core/routes/status-routes.d.ts.map +1 -0
  175. package/ccw/dist/core/routes/status-routes.js +38 -0
  176. package/ccw/dist/core/routes/status-routes.js.map +1 -0
  177. package/ccw/dist/core/routes/system-routes.d.ts +22 -0
  178. package/ccw/dist/core/routes/system-routes.d.ts.map +1 -0
  179. package/ccw/dist/core/routes/system-routes.js +354 -0
  180. package/ccw/dist/core/routes/system-routes.js.map +1 -0
  181. package/ccw/dist/core/server.d.ts +17 -0
  182. package/ccw/dist/core/server.d.ts.map +1 -0
  183. package/ccw/dist/core/server.js +386 -0
  184. package/ccw/dist/core/server.js.map +1 -0
  185. package/ccw/dist/core/session-clustering-service.d.ts +153 -0
  186. package/ccw/dist/core/session-clustering-service.d.ts.map +1 -0
  187. package/ccw/dist/core/session-clustering-service.js +1065 -0
  188. package/ccw/dist/core/session-clustering-service.js.map +1 -0
  189. package/ccw/dist/core/session-scanner.d.ts +32 -0
  190. package/ccw/dist/core/session-scanner.d.ts.map +1 -0
  191. package/ccw/dist/core/session-scanner.js +253 -0
  192. package/ccw/dist/core/session-scanner.js.map +1 -0
  193. package/ccw/dist/core/websocket.d.ts +23 -0
  194. package/ccw/dist/core/websocket.d.ts.map +1 -0
  195. package/ccw/dist/core/websocket.js +168 -0
  196. package/ccw/dist/core/websocket.js.map +1 -0
  197. package/ccw/dist/index.d.ts +10 -0
  198. package/ccw/dist/index.d.ts.map +1 -0
  199. package/ccw/dist/index.js +10 -0
  200. package/ccw/dist/index.js.map +1 -0
  201. package/ccw/dist/mcp-server/index.d.ts +7 -0
  202. package/ccw/dist/mcp-server/index.d.ts.map +1 -0
  203. package/ccw/dist/mcp-server/index.js +157 -0
  204. package/ccw/dist/mcp-server/index.js.map +1 -0
  205. package/ccw/dist/tools/classify-folders.d.ts +26 -0
  206. package/ccw/dist/tools/classify-folders.d.ts.map +1 -0
  207. package/ccw/dist/tools/classify-folders.js +201 -0
  208. package/ccw/dist/tools/classify-folders.js.map +1 -0
  209. package/ccw/dist/tools/cli-config-manager.d.ts +62 -0
  210. package/ccw/dist/tools/cli-config-manager.d.ts.map +1 -0
  211. package/ccw/dist/tools/cli-config-manager.js +221 -0
  212. package/ccw/dist/tools/cli-config-manager.js.map +1 -0
  213. package/ccw/dist/tools/cli-executor.d.ts +373 -0
  214. package/ccw/dist/tools/cli-executor.d.ts.map +1 -0
  215. package/ccw/dist/tools/cli-executor.js +1625 -0
  216. package/ccw/dist/tools/cli-executor.js.map +1 -0
  217. package/ccw/dist/tools/cli-history-store.d.ts +330 -0
  218. package/ccw/dist/tools/cli-history-store.d.ts.map +1 -0
  219. package/ccw/dist/tools/cli-history-store.js +916 -0
  220. package/ccw/dist/tools/cli-history-store.js.map +1 -0
  221. package/ccw/dist/tools/codex-lens.d.ts +118 -0
  222. package/ccw/dist/tools/codex-lens.d.ts.map +1 -0
  223. package/ccw/dist/tools/codex-lens.js +962 -0
  224. package/ccw/dist/tools/codex-lens.js.map +1 -0
  225. package/ccw/dist/tools/convert-tokens-to-css.d.ts +14 -0
  226. package/ccw/dist/tools/convert-tokens-to-css.d.ts.map +1 -0
  227. package/ccw/dist/tools/convert-tokens-to-css.js +244 -0
  228. package/ccw/dist/tools/convert-tokens-to-css.js.map +1 -0
  229. package/ccw/dist/tools/core-memory.d.ts +66 -0
  230. package/ccw/dist/tools/core-memory.d.ts.map +1 -0
  231. package/ccw/dist/tools/core-memory.js +324 -0
  232. package/ccw/dist/tools/core-memory.js.map +1 -0
  233. package/ccw/dist/tools/detect-changed-modules.d.ts +24 -0
  234. package/ccw/dist/tools/detect-changed-modules.d.ts.map +1 -0
  235. package/ccw/dist/tools/detect-changed-modules.js +277 -0
  236. package/ccw/dist/tools/detect-changed-modules.js.map +1 -0
  237. package/ccw/dist/tools/discover-design-files.d.ts +36 -0
  238. package/ccw/dist/tools/discover-design-files.d.ts.map +1 -0
  239. package/ccw/dist/tools/discover-design-files.js +147 -0
  240. package/ccw/dist/tools/discover-design-files.js.map +1 -0
  241. package/ccw/dist/tools/edit-file.d.ts +28 -0
  242. package/ccw/dist/tools/edit-file.d.ts.map +1 -0
  243. package/ccw/dist/tools/edit-file.js +479 -0
  244. package/ccw/dist/tools/edit-file.js.map +1 -0
  245. package/ccw/dist/tools/generate-module-docs.d.ts +22 -0
  246. package/ccw/dist/tools/generate-module-docs.d.ts.map +1 -0
  247. package/ccw/dist/tools/generate-module-docs.js +379 -0
  248. package/ccw/dist/tools/generate-module-docs.js.map +1 -0
  249. package/ccw/dist/tools/get-modules-by-depth.d.ts +15 -0
  250. package/ccw/dist/tools/get-modules-by-depth.d.ts.map +1 -0
  251. package/ccw/dist/tools/get-modules-by-depth.js +296 -0
  252. package/ccw/dist/tools/get-modules-by-depth.js.map +1 -0
  253. package/ccw/dist/tools/index.d.ts +55 -0
  254. package/ccw/dist/tools/index.d.ts.map +1 -0
  255. package/ccw/dist/tools/index.js +304 -0
  256. package/ccw/dist/tools/index.js.map +1 -0
  257. package/ccw/dist/tools/native-session-discovery.d.ts +97 -0
  258. package/ccw/dist/tools/native-session-discovery.d.ts.map +1 -0
  259. package/ccw/dist/tools/native-session-discovery.js +700 -0
  260. package/ccw/dist/tools/native-session-discovery.js.map +1 -0
  261. package/ccw/dist/tools/notifier.d.ts +50 -0
  262. package/ccw/dist/tools/notifier.d.ts.map +1 -0
  263. package/ccw/dist/tools/notifier.js +90 -0
  264. package/ccw/dist/tools/notifier.js.map +1 -0
  265. package/ccw/dist/tools/read-file.d.ts +32 -0
  266. package/ccw/dist/tools/read-file.d.ts.map +1 -0
  267. package/ccw/dist/tools/read-file.js +329 -0
  268. package/ccw/dist/tools/read-file.js.map +1 -0
  269. package/ccw/dist/tools/resume-strategy.d.ts +48 -0
  270. package/ccw/dist/tools/resume-strategy.d.ts.map +1 -0
  271. package/ccw/dist/tools/resume-strategy.js +248 -0
  272. package/ccw/dist/tools/resume-strategy.js.map +1 -0
  273. package/ccw/dist/tools/session-content-parser.d.ts +58 -0
  274. package/ccw/dist/tools/session-content-parser.d.ts.map +1 -0
  275. package/ccw/dist/tools/session-content-parser.js +420 -0
  276. package/ccw/dist/tools/session-content-parser.js.map +1 -0
  277. package/ccw/dist/tools/session-manager.d.ts +9 -0
  278. package/ccw/dist/tools/session-manager.d.ts.map +1 -0
  279. package/ccw/dist/tools/session-manager.js +834 -0
  280. package/ccw/dist/tools/session-manager.js.map +1 -0
  281. package/ccw/dist/tools/smart-context.d.ts +35 -0
  282. package/ccw/dist/tools/smart-context.d.ts.map +1 -0
  283. package/ccw/dist/tools/smart-context.js +182 -0
  284. package/ccw/dist/tools/smart-context.js.map +1 -0
  285. package/ccw/dist/tools/smart-search.d.ts +105 -0
  286. package/ccw/dist/tools/smart-search.d.ts.map +1 -0
  287. package/ccw/dist/tools/smart-search.js +1753 -0
  288. package/ccw/dist/tools/smart-search.js.map +1 -0
  289. package/ccw/dist/tools/storage-manager.d.ts +114 -0
  290. package/ccw/dist/tools/storage-manager.d.ts.map +1 -0
  291. package/ccw/dist/tools/storage-manager.js +392 -0
  292. package/ccw/dist/tools/storage-manager.js.map +1 -0
  293. package/ccw/dist/tools/ui-generate-preview.d.ts +39 -0
  294. package/ccw/dist/tools/ui-generate-preview.d.ts.map +1 -0
  295. package/ccw/dist/tools/ui-generate-preview.js +300 -0
  296. package/ccw/dist/tools/ui-generate-preview.js.map +1 -0
  297. package/ccw/dist/tools/ui-instantiate-prototypes.d.ts +75 -0
  298. package/ccw/dist/tools/ui-instantiate-prototypes.d.ts.map +1 -0
  299. package/ccw/dist/tools/ui-instantiate-prototypes.js +256 -0
  300. package/ccw/dist/tools/ui-instantiate-prototypes.js.map +1 -0
  301. package/ccw/dist/tools/update-module-claude.d.ts +80 -0
  302. package/ccw/dist/tools/update-module-claude.d.ts.map +1 -0
  303. package/ccw/dist/tools/update-module-claude.js +351 -0
  304. package/ccw/dist/tools/update-module-claude.js.map +1 -0
  305. package/ccw/dist/tools/write-file.d.ts +19 -0
  306. package/ccw/dist/tools/write-file.d.ts.map +1 -0
  307. package/ccw/dist/tools/write-file.js +193 -0
  308. package/ccw/dist/tools/write-file.js.map +1 -0
  309. package/ccw/dist/types/config.d.ts +11 -0
  310. package/ccw/dist/types/config.d.ts.map +1 -0
  311. package/ccw/dist/types/config.js +2 -0
  312. package/ccw/dist/types/config.js.map +1 -0
  313. package/ccw/dist/types/index.d.ts +4 -0
  314. package/ccw/dist/types/index.d.ts.map +1 -0
  315. package/ccw/dist/types/index.js +4 -0
  316. package/ccw/dist/types/index.js.map +1 -0
  317. package/ccw/dist/types/session.d.ts +20 -0
  318. package/ccw/dist/types/session.d.ts.map +1 -0
  319. package/ccw/dist/types/session.js +2 -0
  320. package/ccw/dist/types/session.js.map +1 -0
  321. package/ccw/dist/types/tool.d.ts +36 -0
  322. package/ccw/dist/types/tool.d.ts.map +1 -0
  323. package/ccw/dist/types/tool.js +11 -0
  324. package/ccw/dist/types/tool.js.map +1 -0
  325. package/ccw/dist/utils/browser-launcher.d.ts +13 -0
  326. package/ccw/dist/utils/browser-launcher.d.ts.map +1 -0
  327. package/ccw/dist/utils/browser-launcher.js +60 -0
  328. package/ccw/dist/utils/browser-launcher.js.map +1 -0
  329. package/ccw/dist/utils/file-utils.d.ts +25 -0
  330. package/ccw/dist/utils/file-utils.d.ts.map +1 -0
  331. package/ccw/dist/utils/file-utils.js +48 -0
  332. package/ccw/dist/utils/file-utils.js.map +1 -0
  333. package/ccw/dist/utils/path-resolver.d.ts +80 -0
  334. package/ccw/dist/utils/path-resolver.d.ts.map +1 -0
  335. package/ccw/dist/utils/path-resolver.js +260 -0
  336. package/ccw/dist/utils/path-resolver.js.map +1 -0
  337. package/ccw/dist/utils/path-validator.d.ts +49 -0
  338. package/ccw/dist/utils/path-validator.d.ts.map +1 -0
  339. package/ccw/dist/utils/path-validator.js +123 -0
  340. package/ccw/dist/utils/path-validator.js.map +1 -0
  341. package/ccw/dist/utils/ui.d.ts +62 -0
  342. package/ccw/dist/utils/ui.d.ts.map +1 -0
  343. package/ccw/dist/utils/ui.js +129 -0
  344. package/ccw/dist/utils/ui.js.map +1 -0
  345. package/ccw/package.json +1 -1
  346. package/package.json +1 -1
@@ -0,0 +1,423 @@
1
+ import { readFileSync, writeFileSync, existsSync, readdirSync } from 'fs';
2
+ import { join } from 'path';
3
+ /**
4
+ * Get session detail data (context, summaries, impl-plan, review)
5
+ * @param {string} sessionPath - Path to session directory
6
+ * @param {string} dataType - Type of data to load ('all', 'context', 'tasks', 'summary', 'plan', 'explorations', 'conflict', 'impl-plan', 'review')
7
+ * @returns {Promise<Object>}
8
+ */
9
+ async function getSessionDetailData(sessionPath, dataType) {
10
+ const result = {};
11
+ // Normalize path
12
+ const normalizedPath = sessionPath.replace(/\\/g, '/');
13
+ try {
14
+ // Load context-package.json (in .process/ subfolder)
15
+ if (dataType === 'context' || dataType === 'all') {
16
+ // Try .process/context-package.json first (common location)
17
+ let contextFile = join(normalizedPath, '.process', 'context-package.json');
18
+ if (!existsSync(contextFile)) {
19
+ // Fallback to session root
20
+ contextFile = join(normalizedPath, 'context-package.json');
21
+ }
22
+ if (existsSync(contextFile)) {
23
+ try {
24
+ result.context = JSON.parse(readFileSync(contextFile, 'utf8'));
25
+ }
26
+ catch (e) {
27
+ result.context = null;
28
+ }
29
+ }
30
+ }
31
+ // Load task JSONs from .task/ folder
32
+ if (dataType === 'tasks' || dataType === 'all') {
33
+ const taskDir = join(normalizedPath, '.task');
34
+ result.tasks = [];
35
+ if (existsSync(taskDir)) {
36
+ const files = readdirSync(taskDir).filter(f => f.endsWith('.json') && f.startsWith('IMPL-'));
37
+ for (const file of files) {
38
+ try {
39
+ const content = JSON.parse(readFileSync(join(taskDir, file), 'utf8'));
40
+ result.tasks.push({
41
+ filename: file,
42
+ task_id: file.replace('.json', ''),
43
+ ...content
44
+ });
45
+ }
46
+ catch (e) {
47
+ // Skip unreadable files
48
+ }
49
+ }
50
+ // Sort by task ID
51
+ result.tasks.sort((a, b) => a.task_id.localeCompare(b.task_id));
52
+ }
53
+ }
54
+ // Load summaries from .summaries/
55
+ if (dataType === 'summary' || dataType === 'all') {
56
+ const summariesDir = join(normalizedPath, '.summaries');
57
+ result.summaries = [];
58
+ if (existsSync(summariesDir)) {
59
+ const files = readdirSync(summariesDir).filter(f => f.endsWith('.md'));
60
+ for (const file of files) {
61
+ try {
62
+ const content = readFileSync(join(summariesDir, file), 'utf8');
63
+ result.summaries.push({ name: file.replace('.md', ''), content });
64
+ }
65
+ catch (e) {
66
+ // Skip unreadable files
67
+ }
68
+ }
69
+ }
70
+ }
71
+ // Load plan.json (for lite tasks)
72
+ if (dataType === 'plan' || dataType === 'all') {
73
+ const planFile = join(normalizedPath, 'plan.json');
74
+ if (existsSync(planFile)) {
75
+ try {
76
+ result.plan = JSON.parse(readFileSync(planFile, 'utf8'));
77
+ }
78
+ catch (e) {
79
+ result.plan = null;
80
+ }
81
+ }
82
+ }
83
+ // Load explorations (exploration-*.json files) and diagnoses (diagnosis-*.json files) - check .process/ first, then session root
84
+ if (dataType === 'context' || dataType === 'explorations' || dataType === 'all') {
85
+ result.explorations = { manifest: null, data: {} };
86
+ result.diagnoses = { manifest: null, data: {} };
87
+ // Try .process/ first (standard workflow sessions), then session root (lite tasks)
88
+ const searchDirs = [
89
+ join(normalizedPath, '.process'),
90
+ normalizedPath
91
+ ];
92
+ for (const searchDir of searchDirs) {
93
+ if (!existsSync(searchDir))
94
+ continue;
95
+ // Look for explorations-manifest.json
96
+ const manifestFile = join(searchDir, 'explorations-manifest.json');
97
+ if (existsSync(manifestFile)) {
98
+ try {
99
+ result.explorations.manifest = JSON.parse(readFileSync(manifestFile, 'utf8'));
100
+ // Load each exploration file based on manifest
101
+ const explorations = result.explorations.manifest.explorations || [];
102
+ for (const exp of explorations) {
103
+ const expFile = join(searchDir, exp.file);
104
+ if (existsSync(expFile)) {
105
+ try {
106
+ result.explorations.data[exp.angle] = JSON.parse(readFileSync(expFile, 'utf8'));
107
+ }
108
+ catch (e) {
109
+ // Skip unreadable exploration files
110
+ }
111
+ }
112
+ }
113
+ break; // Found manifest, stop searching
114
+ }
115
+ catch (e) {
116
+ result.explorations.manifest = null;
117
+ }
118
+ }
119
+ // Look for diagnoses-manifest.json
120
+ const diagManifestFile = join(searchDir, 'diagnoses-manifest.json');
121
+ if (existsSync(diagManifestFile)) {
122
+ try {
123
+ result.diagnoses.manifest = JSON.parse(readFileSync(diagManifestFile, 'utf8'));
124
+ // Load each diagnosis file based on manifest
125
+ const diagnoses = result.diagnoses.manifest.diagnoses || [];
126
+ for (const diag of diagnoses) {
127
+ const diagFile = join(searchDir, diag.file);
128
+ if (existsSync(diagFile)) {
129
+ try {
130
+ result.diagnoses.data[diag.angle] = JSON.parse(readFileSync(diagFile, 'utf8'));
131
+ }
132
+ catch (e) {
133
+ // Skip unreadable diagnosis files
134
+ }
135
+ }
136
+ }
137
+ break; // Found manifest, stop searching
138
+ }
139
+ catch (e) {
140
+ result.diagnoses.manifest = null;
141
+ }
142
+ }
143
+ // Fallback: scan for exploration-*.json and diagnosis-*.json files directly
144
+ if (!result.explorations.manifest) {
145
+ try {
146
+ const expFiles = readdirSync(searchDir).filter(f => f.startsWith('exploration-') && f.endsWith('.json') && f !== 'explorations-manifest.json');
147
+ if (expFiles.length > 0) {
148
+ // Create synthetic manifest
149
+ result.explorations.manifest = {
150
+ exploration_count: expFiles.length,
151
+ explorations: expFiles.map((f, i) => ({
152
+ angle: f.replace('exploration-', '').replace('.json', ''),
153
+ file: f,
154
+ index: i + 1
155
+ }))
156
+ };
157
+ // Load each file
158
+ for (const file of expFiles) {
159
+ const angle = file.replace('exploration-', '').replace('.json', '');
160
+ try {
161
+ result.explorations.data[angle] = JSON.parse(readFileSync(join(searchDir, file), 'utf8'));
162
+ }
163
+ catch (e) {
164
+ // Skip unreadable files
165
+ }
166
+ }
167
+ }
168
+ }
169
+ catch (e) {
170
+ // Directory read failed
171
+ }
172
+ }
173
+ // Fallback: scan for diagnosis-*.json files directly
174
+ if (!result.diagnoses.manifest) {
175
+ try {
176
+ const diagFiles = readdirSync(searchDir).filter(f => f.startsWith('diagnosis-') && f.endsWith('.json') && f !== 'diagnoses-manifest.json');
177
+ if (diagFiles.length > 0) {
178
+ // Create synthetic manifest
179
+ result.diagnoses.manifest = {
180
+ diagnosis_count: diagFiles.length,
181
+ diagnoses: diagFiles.map((f, i) => ({
182
+ angle: f.replace('diagnosis-', '').replace('.json', ''),
183
+ file: f,
184
+ index: i + 1
185
+ }))
186
+ };
187
+ // Load each file
188
+ for (const file of diagFiles) {
189
+ const angle = file.replace('diagnosis-', '').replace('.json', '');
190
+ try {
191
+ result.diagnoses.data[angle] = JSON.parse(readFileSync(join(searchDir, file), 'utf8'));
192
+ }
193
+ catch (e) {
194
+ // Skip unreadable files
195
+ }
196
+ }
197
+ }
198
+ }
199
+ catch (e) {
200
+ // Directory read failed
201
+ }
202
+ }
203
+ // If we found either explorations or diagnoses, break out of the loop
204
+ if (result.explorations.manifest || result.diagnoses.manifest) {
205
+ break;
206
+ }
207
+ }
208
+ }
209
+ // Load conflict resolution decisions (conflict-resolution-decisions.json)
210
+ if (dataType === 'context' || dataType === 'conflict' || dataType === 'all') {
211
+ result.conflictResolution = null;
212
+ // Try .process/ first (standard workflow sessions)
213
+ const conflictFiles = [
214
+ join(normalizedPath, '.process', 'conflict-resolution-decisions.json'),
215
+ join(normalizedPath, 'conflict-resolution-decisions.json')
216
+ ];
217
+ for (const conflictFile of conflictFiles) {
218
+ if (existsSync(conflictFile)) {
219
+ try {
220
+ result.conflictResolution = JSON.parse(readFileSync(conflictFile, 'utf8'));
221
+ break; // Found file, stop searching
222
+ }
223
+ catch (e) {
224
+ // Skip unreadable file
225
+ }
226
+ }
227
+ }
228
+ }
229
+ // Load IMPL_PLAN.md
230
+ if (dataType === 'impl-plan' || dataType === 'all') {
231
+ const implPlanFile = join(normalizedPath, 'IMPL_PLAN.md');
232
+ if (existsSync(implPlanFile)) {
233
+ try {
234
+ result.implPlan = readFileSync(implPlanFile, 'utf8');
235
+ }
236
+ catch (e) {
237
+ result.implPlan = null;
238
+ }
239
+ }
240
+ }
241
+ // Load review data from .review/
242
+ if (dataType === 'review' || dataType === 'all') {
243
+ const reviewDir = join(normalizedPath, '.review');
244
+ result.review = {
245
+ state: null,
246
+ dimensions: [],
247
+ severityDistribution: null,
248
+ totalFindings: 0
249
+ };
250
+ if (existsSync(reviewDir)) {
251
+ // Load review-state.json
252
+ const stateFile = join(reviewDir, 'review-state.json');
253
+ if (existsSync(stateFile)) {
254
+ try {
255
+ const state = JSON.parse(readFileSync(stateFile, 'utf8'));
256
+ result.review.state = state;
257
+ result.review.severityDistribution = state.severity_distribution || {};
258
+ result.review.totalFindings = state.total_findings || 0;
259
+ result.review.phase = state.phase || 'unknown';
260
+ result.review.dimensionSummaries = state.dimension_summaries || {};
261
+ result.review.crossCuttingConcerns = state.cross_cutting_concerns || [];
262
+ result.review.criticalFiles = state.critical_files || [];
263
+ }
264
+ catch (e) {
265
+ // Skip unreadable state
266
+ }
267
+ }
268
+ // Load dimension findings
269
+ const dimensionsDir = join(reviewDir, 'dimensions');
270
+ if (existsSync(dimensionsDir)) {
271
+ const files = readdirSync(dimensionsDir).filter(f => f.endsWith('.json'));
272
+ for (const file of files) {
273
+ try {
274
+ const dimName = file.replace('.json', '');
275
+ const data = JSON.parse(readFileSync(join(dimensionsDir, file), 'utf8'));
276
+ // Handle array structure: [ { findings: [...] } ]
277
+ let findings = [];
278
+ let summary = null;
279
+ if (Array.isArray(data) && data.length > 0) {
280
+ const dimData = data[0];
281
+ findings = dimData.findings || [];
282
+ summary = dimData.summary || null;
283
+ }
284
+ else if (data.findings) {
285
+ findings = data.findings;
286
+ summary = data.summary || null;
287
+ }
288
+ result.review.dimensions.push({
289
+ name: dimName,
290
+ findings: findings,
291
+ summary: summary,
292
+ count: findings.length
293
+ });
294
+ }
295
+ catch (e) {
296
+ // Skip unreadable files
297
+ }
298
+ }
299
+ }
300
+ }
301
+ }
302
+ }
303
+ catch (error) {
304
+ console.error('Error loading session detail:', error);
305
+ result.error = error.message;
306
+ }
307
+ return result;
308
+ }
309
+ /**
310
+ * Update task status in a task JSON file
311
+ * @param {string} sessionPath - Path to session directory
312
+ * @param {string} taskId - Task ID (e.g., IMPL-001)
313
+ * @param {string} newStatus - New status (pending, in_progress, completed)
314
+ * @returns {Promise<Object>}
315
+ */
316
+ async function updateTaskStatus(sessionPath, taskId, newStatus) {
317
+ // Normalize path (handle both forward and back slashes)
318
+ let normalizedPath = sessionPath.replace(/\\/g, '/');
319
+ // Handle Windows drive letter format
320
+ if (normalizedPath.match(/^[a-zA-Z]:\//)) {
321
+ // Already in correct format
322
+ }
323
+ else if (normalizedPath.match(/^\/[a-zA-Z]\//)) {
324
+ // Convert /D/path to D:/path
325
+ normalizedPath = normalizedPath.charAt(1).toUpperCase() + ':' + normalizedPath.slice(2);
326
+ }
327
+ const taskDir = join(normalizedPath, '.task');
328
+ // Check if task directory exists
329
+ if (!existsSync(taskDir)) {
330
+ throw new Error(`Task directory not found: ${taskDir}`);
331
+ }
332
+ // Try to find the task file
333
+ let taskFile = join(taskDir, `${taskId}.json`);
334
+ if (!existsSync(taskFile)) {
335
+ // Try without .json if taskId already has it
336
+ if (taskId.endsWith('.json')) {
337
+ taskFile = join(taskDir, taskId);
338
+ }
339
+ if (!existsSync(taskFile)) {
340
+ throw new Error(`Task file not found: ${taskId}.json in ${taskDir}`);
341
+ }
342
+ }
343
+ try {
344
+ const content = JSON.parse(readFileSync(taskFile, 'utf8'));
345
+ const oldStatus = content.status || 'pending';
346
+ content.status = newStatus;
347
+ // Add status change timestamp
348
+ if (!content.status_history) {
349
+ content.status_history = [];
350
+ }
351
+ content.status_history.push({
352
+ from: oldStatus,
353
+ to: newStatus,
354
+ changed_at: new Date().toISOString()
355
+ });
356
+ writeFileSync(taskFile, JSON.stringify(content, null, 2), 'utf8');
357
+ return {
358
+ success: true,
359
+ taskId,
360
+ oldStatus,
361
+ newStatus,
362
+ file: taskFile
363
+ };
364
+ }
365
+ catch (error) {
366
+ throw new Error(`Failed to update task ${taskId}: ${error.message}`);
367
+ }
368
+ }
369
+ /**
370
+ * Handle Session routes
371
+ * @returns true if route was handled, false otherwise
372
+ */
373
+ export async function handleSessionRoutes(ctx) {
374
+ const { pathname, url, req, res, handlePostRequest } = ctx;
375
+ // API: Get session detail data (context, summaries, impl-plan, review)
376
+ if (pathname === '/api/session-detail') {
377
+ const sessionPath = url.searchParams.get('path');
378
+ const dataType = url.searchParams.get('type') || 'all';
379
+ if (!sessionPath) {
380
+ res.writeHead(400, { 'Content-Type': 'application/json' });
381
+ res.end(JSON.stringify({ error: 'Session path is required' }));
382
+ return true;
383
+ }
384
+ const detail = await getSessionDetailData(sessionPath, dataType);
385
+ res.writeHead(200, { 'Content-Type': 'application/json' });
386
+ res.end(JSON.stringify(detail));
387
+ return true;
388
+ }
389
+ // API: Update task status
390
+ if (pathname === '/api/update-task-status' && req.method === 'POST') {
391
+ handlePostRequest(req, res, async (body) => {
392
+ const { sessionPath, taskId, newStatus } = body;
393
+ if (!sessionPath || !taskId || !newStatus) {
394
+ return { error: 'sessionPath, taskId, and newStatus are required', status: 400 };
395
+ }
396
+ return await updateTaskStatus(sessionPath, taskId, newStatus);
397
+ });
398
+ return true;
399
+ }
400
+ // API: Bulk update task status
401
+ if (pathname === '/api/bulk-update-task-status' && req.method === 'POST') {
402
+ handlePostRequest(req, res, async (body) => {
403
+ const { sessionPath, taskIds, newStatus } = body;
404
+ if (!sessionPath || !taskIds || !newStatus) {
405
+ return { error: 'sessionPath, taskIds, and newStatus are required', status: 400 };
406
+ }
407
+ const results = [];
408
+ for (const taskId of taskIds) {
409
+ try {
410
+ const result = await updateTaskStatus(sessionPath, taskId, newStatus);
411
+ results.push(result);
412
+ }
413
+ catch (err) {
414
+ results.push({ taskId, error: err.message });
415
+ }
416
+ }
417
+ return { success: true, results };
418
+ });
419
+ return true;
420
+ }
421
+ return false;
422
+ }
423
+ //# sourceMappingURL=session-routes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-routes.js","sourceRoot":"","sources":["../../../src/core/routes/session-routes.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Skills Routes Module
3
+ * Handles all Skills-related API endpoints
4
+ */
5
+ import type { IncomingMessage, ServerResponse } from 'http';
6
+ export interface RouteContext {
7
+ pathname: string;
8
+ url: URL;
9
+ req: IncomingMessage;
10
+ res: ServerResponse;
11
+ initialPath: string;
12
+ handlePostRequest: (req: IncomingMessage, res: ServerResponse, handler: (body: unknown) => Promise<any>) => void;
13
+ broadcastToClients: (data: unknown) => void;
14
+ }
15
+ /**
16
+ * Handle Skills routes
17
+ * @returns true if route was handled, false otherwise
18
+ */
19
+ export declare function handleSkillsRoutes(ctx: RouteContext): Promise<boolean>;
20
+ //# sourceMappingURL=skills-routes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skills-routes.d.ts","sourceRoot":"","sources":["../../../src/core/routes/skills-routes.ts"],"names":[],"mappings":"AACA;;;GAGG;AACH,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,MAAM,CAAC;AAM5D,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,GAAG,CAAC;IACT,GAAG,EAAE,eAAe,CAAC;IACrB,GAAG,EAAE,cAAc,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,iBAAiB,EAAE,CAAC,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,cAAc,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC;IACjH,kBAAkB,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;CAC7C;AAkeD;;;GAGG;AACH,wBAAsB,kBAAkB,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,CA6F5E"}