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,324 @@
1
+ /**
2
+ * Core Memory Tool - MCP tool for core memory management
3
+ * Operations: list, import, export, summary, embed, search, embed_status
4
+ */
5
+ import { z } from 'zod';
6
+ import { getCoreMemoryStore, findMemoryAcrossProjects } from '../core/core-memory-store.js';
7
+ import * as MemoryEmbedder from '../core/memory-embedder-bridge.js';
8
+ import { StoragePaths } from '../config/storage-paths.js';
9
+ import { join } from 'path';
10
+ import { getProjectRoot } from '../utils/path-validator.js';
11
+ // Zod schemas
12
+ const OperationEnum = z.enum(['list', 'import', 'export', 'summary', 'embed', 'search', 'embed_status']);
13
+ const ParamsSchema = z.object({
14
+ operation: OperationEnum,
15
+ text: z.string().optional(),
16
+ id: z.string().optional(),
17
+ tool: z.enum(['gemini', 'qwen']).optional().default('gemini'),
18
+ limit: z.number().optional().default(100),
19
+ // Search parameters
20
+ query: z.string().optional(),
21
+ top_k: z.number().optional().default(10),
22
+ min_score: z.number().optional().default(0.3),
23
+ source_type: z.enum(['core_memory', 'workflow', 'cli_history']).optional(),
24
+ // Embed parameters
25
+ source_id: z.string().optional(),
26
+ batch_size: z.number().optional().default(8),
27
+ force: z.boolean().optional().default(false),
28
+ });
29
+ /**
30
+ * Get project path from current working directory
31
+ */
32
+ function getProjectPath() {
33
+ return getProjectRoot();
34
+ }
35
+ /**
36
+ * Get database path for current project
37
+ */
38
+ function getDatabasePath() {
39
+ const projectPath = getProjectPath();
40
+ const paths = StoragePaths.project(projectPath);
41
+ return join(paths.root, 'core-memory', 'core_memory.db');
42
+ }
43
+ /** Max preview length for list operation */
44
+ const PREVIEW_MAX_LENGTH = 100;
45
+ /**
46
+ * Operation: list
47
+ * List all memories with compact output
48
+ */
49
+ function executeList(params) {
50
+ const { limit } = params;
51
+ const store = getCoreMemoryStore(getProjectPath());
52
+ const memories = store.getMemories({ limit });
53
+ // Convert to compact format with truncated preview
54
+ const compactMemories = memories.map((m) => {
55
+ const source = m.summary || m.content;
56
+ const preview = source.length > PREVIEW_MAX_LENGTH
57
+ ? source.substring(0, PREVIEW_MAX_LENGTH) + '...'
58
+ : source;
59
+ return {
60
+ id: m.id,
61
+ preview,
62
+ archived: m.archived,
63
+ updated_at: m.updated_at,
64
+ };
65
+ });
66
+ return {
67
+ operation: 'list',
68
+ memories: compactMemories,
69
+ total: memories.length,
70
+ };
71
+ }
72
+ /**
73
+ * Operation: import
74
+ * Import text as a new memory
75
+ */
76
+ function executeImport(params) {
77
+ const { text } = params;
78
+ if (!text || text.trim() === '') {
79
+ throw new Error('Parameter "text" is required for import operation');
80
+ }
81
+ const store = getCoreMemoryStore(getProjectPath());
82
+ const memory = store.upsertMemory({
83
+ content: text.trim(),
84
+ });
85
+ return {
86
+ operation: 'import',
87
+ id: memory.id,
88
+ message: `Created memory: ${memory.id}`,
89
+ };
90
+ }
91
+ /**
92
+ * Operation: export
93
+ * Export a memory as plain text
94
+ * Searches current project first, then all projects if not found
95
+ */
96
+ function executeExport(params) {
97
+ const { id } = params;
98
+ if (!id) {
99
+ throw new Error('Parameter "id" is required for export operation');
100
+ }
101
+ // Try current project first
102
+ const store = getCoreMemoryStore(getProjectPath());
103
+ let memory = store.getMemory(id);
104
+ // If not found, search across all projects
105
+ if (!memory) {
106
+ const result = findMemoryAcrossProjects(id);
107
+ if (result) {
108
+ memory = result.memory;
109
+ }
110
+ }
111
+ if (!memory) {
112
+ throw new Error(`Memory "${id}" not found in any project`);
113
+ }
114
+ return {
115
+ operation: 'export',
116
+ id,
117
+ content: memory.content,
118
+ };
119
+ }
120
+ /**
121
+ * Operation: summary
122
+ * Generate AI summary for a memory
123
+ */
124
+ async function executeSummary(params) {
125
+ const { id, tool = 'gemini' } = params;
126
+ if (!id) {
127
+ throw new Error('Parameter "id" is required for summary operation');
128
+ }
129
+ const store = getCoreMemoryStore(getProjectPath());
130
+ const memory = store.getMemory(id);
131
+ if (!memory) {
132
+ throw new Error(`Memory "${id}" not found`);
133
+ }
134
+ const summary = await store.generateSummary(id, tool);
135
+ return {
136
+ operation: 'summary',
137
+ id,
138
+ summary,
139
+ };
140
+ }
141
+ /**
142
+ * Operation: embed
143
+ * Generate embeddings for memory chunks
144
+ */
145
+ async function executeEmbed(params) {
146
+ const { source_id, batch_size = 8, force = false } = params;
147
+ const dbPath = getDatabasePath();
148
+ const result = await MemoryEmbedder.generateEmbeddings(dbPath, {
149
+ sourceId: source_id,
150
+ batchSize: batch_size,
151
+ force,
152
+ });
153
+ if (!result.success) {
154
+ throw new Error(result.error || 'Embedding generation failed');
155
+ }
156
+ return {
157
+ operation: 'embed',
158
+ chunks_processed: result.chunks_processed,
159
+ chunks_failed: result.chunks_failed,
160
+ elapsed_time: result.elapsed_time,
161
+ message: `Successfully processed ${result.chunks_processed} chunks in ${result.elapsed_time.toFixed(2)}s`,
162
+ };
163
+ }
164
+ /**
165
+ * Operation: search
166
+ * Search memory chunks using semantic search
167
+ */
168
+ async function executeSearch(params) {
169
+ const { query, top_k = 10, min_score = 0.3, source_type } = params;
170
+ if (!query) {
171
+ throw new Error('Parameter "query" is required for search operation');
172
+ }
173
+ const dbPath = getDatabasePath();
174
+ const result = await MemoryEmbedder.searchMemories(dbPath, query, {
175
+ topK: top_k,
176
+ minScore: min_score,
177
+ sourceType: source_type,
178
+ });
179
+ if (!result.success) {
180
+ throw new Error(result.error || 'Search failed');
181
+ }
182
+ return {
183
+ operation: 'search',
184
+ query,
185
+ matches: result.matches.map((match) => ({
186
+ source_id: match.source_id,
187
+ source_type: match.source_type,
188
+ score: match.score,
189
+ excerpt: match.content.substring(0, 200) + (match.content.length > 200 ? '...' : ''),
190
+ restore_command: match.restore_command,
191
+ })),
192
+ total_matches: result.matches.length,
193
+ };
194
+ }
195
+ /**
196
+ * Operation: embed_status
197
+ * Get embedding status statistics
198
+ */
199
+ async function executeEmbedStatus(params) {
200
+ const dbPath = getDatabasePath();
201
+ const result = await MemoryEmbedder.getEmbeddingStatus(dbPath);
202
+ if (!result.success) {
203
+ throw new Error(result.error || 'Failed to get embedding status');
204
+ }
205
+ return {
206
+ operation: 'embed_status',
207
+ total_chunks: result.total_chunks,
208
+ embedded_chunks: result.embedded_chunks,
209
+ pending_chunks: result.pending_chunks,
210
+ by_type: result.by_type,
211
+ };
212
+ }
213
+ /**
214
+ * Route to appropriate operation handler
215
+ */
216
+ async function execute(params) {
217
+ const { operation } = params;
218
+ switch (operation) {
219
+ case 'list':
220
+ return executeList(params);
221
+ case 'import':
222
+ return executeImport(params);
223
+ case 'export':
224
+ return executeExport(params);
225
+ case 'summary':
226
+ return executeSummary(params);
227
+ case 'embed':
228
+ return executeEmbed(params);
229
+ case 'search':
230
+ return executeSearch(params);
231
+ case 'embed_status':
232
+ return executeEmbedStatus(params);
233
+ default:
234
+ throw new Error(`Unknown operation: ${operation}. Valid operations: list, import, export, summary, embed, search, embed_status`);
235
+ }
236
+ }
237
+ // Tool schema for MCP
238
+ export const schema = {
239
+ name: 'core_memory',
240
+ description: `Core memory management for strategic context.
241
+
242
+ Usage:
243
+ core_memory(operation="list") # List all memories
244
+ core_memory(operation="import", text="important context") # Import text as new memory
245
+ core_memory(operation="export", id="CMEM-xxx") # Export memory as plain text
246
+ core_memory(operation="summary", id="CMEM-xxx") # Generate AI summary
247
+ core_memory(operation="embed", source_id="CMEM-xxx") # Generate embeddings for memory
248
+ core_memory(operation="search", query="authentication") # Search memories semantically
249
+ core_memory(operation="embed_status") # Check embedding status
250
+
251
+ Memory IDs use format: CMEM-YYYYMMDD-HHMMSS`,
252
+ inputSchema: {
253
+ type: 'object',
254
+ properties: {
255
+ operation: {
256
+ type: 'string',
257
+ enum: ['list', 'import', 'export', 'summary', 'embed', 'search', 'embed_status'],
258
+ description: 'Operation to perform',
259
+ },
260
+ text: {
261
+ type: 'string',
262
+ description: 'Text content to import (required for import operation)',
263
+ },
264
+ id: {
265
+ type: 'string',
266
+ description: 'Memory ID (required for export/summary operations)',
267
+ },
268
+ tool: {
269
+ type: 'string',
270
+ enum: ['gemini', 'qwen'],
271
+ description: 'AI tool for summary generation (default: gemini)',
272
+ },
273
+ limit: {
274
+ type: 'number',
275
+ description: 'Max number of memories to list (default: 100)',
276
+ },
277
+ query: {
278
+ type: 'string',
279
+ description: 'Search query text (required for search operation)',
280
+ },
281
+ top_k: {
282
+ type: 'number',
283
+ description: 'Number of search results to return (default: 10)',
284
+ },
285
+ min_score: {
286
+ type: 'number',
287
+ description: 'Minimum similarity score threshold (default: 0.3)',
288
+ },
289
+ source_type: {
290
+ type: 'string',
291
+ enum: ['core_memory', 'workflow', 'cli_history'],
292
+ description: 'Filter search by source type',
293
+ },
294
+ source_id: {
295
+ type: 'string',
296
+ description: 'Source ID to embed (optional for embed operation)',
297
+ },
298
+ batch_size: {
299
+ type: 'number',
300
+ description: 'Batch size for embedding generation (default: 8)',
301
+ },
302
+ force: {
303
+ type: 'boolean',
304
+ description: 'Force re-embedding even if embeddings exist (default: false)',
305
+ },
306
+ },
307
+ required: ['operation'],
308
+ },
309
+ };
310
+ // Handler function
311
+ export async function handler(params) {
312
+ const parsed = ParamsSchema.safeParse(params);
313
+ if (!parsed.success) {
314
+ return { success: false, error: `Invalid params: ${parsed.error.message}` };
315
+ }
316
+ try {
317
+ const result = await execute(parsed.data);
318
+ return { success: true, result };
319
+ }
320
+ catch (error) {
321
+ return { success: false, error: error.message };
322
+ }
323
+ }
324
+ //# sourceMappingURL=core-memory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core-memory.js","sourceRoot":"","sources":["../../src/tools/core-memory.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Detect Changed Modules Tool
3
+ * Find modules affected by git changes or recent modifications
4
+ */
5
+ import type { ToolSchema, ToolResult } from '../types/tool.js';
6
+ interface ModuleResult {
7
+ depth: number;
8
+ path: string;
9
+ files: number;
10
+ types: string[];
11
+ has_claude: boolean;
12
+ }
13
+ interface ToolOutput {
14
+ format: string;
15
+ change_source: 'git' | 'mtime' | 'none';
16
+ changed_files_count: number;
17
+ affected_modules_count: number;
18
+ results: ModuleResult[];
19
+ output: string;
20
+ }
21
+ export declare const schema: ToolSchema;
22
+ export declare function handler(params: Record<string, unknown>): Promise<ToolResult<ToolOutput>>;
23
+ export {};
24
+ //# sourceMappingURL=detect-changed-modules.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"detect-changed-modules.d.ts","sourceRoot":"","sources":["../../src/tools/detect-changed-modules.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AA2B/D,UAAU,YAAY;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,UAAU,EAAE,OAAO,CAAC;CACrB;AAED,UAAU,UAAU;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,KAAK,GAAG,OAAO,GAAG,MAAM,CAAC;IACxC,mBAAmB,EAAE,MAAM,CAAC;IAC5B,sBAAsB,EAAE,MAAM,CAAC;IAC/B,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;CAChB;AA4ID,eAAO,MAAM,MAAM,EAAE,UA0BpB,CAAC;AAGF,wBAAsB,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CA2G9F"}
@@ -0,0 +1,277 @@
1
+ /**
2
+ * Detect Changed Modules Tool
3
+ * Find modules affected by git changes or recent modifications
4
+ */
5
+ import { z } from 'zod';
6
+ import { readdirSync, statSync, existsSync } from 'fs';
7
+ import { join, resolve, dirname, extname, relative } from 'path';
8
+ import { execSync } from 'child_process';
9
+ // Source file extensions to track
10
+ const SOURCE_EXTENSIONS = [
11
+ '.md', '.js', '.ts', '.jsx', '.tsx',
12
+ '.py', '.go', '.rs', '.java', '.cpp', '.c', '.h',
13
+ '.sh', '.ps1', '.json', '.yaml', '.yml'
14
+ ];
15
+ // Directories to exclude
16
+ const EXCLUDE_DIRS = [
17
+ '.git', '__pycache__', 'node_modules', '.venv', 'venv', 'env',
18
+ 'dist', 'build', '.cache', '.pytest_cache', '.mypy_cache',
19
+ 'coverage', '.nyc_output', 'logs', 'tmp', 'temp'
20
+ ];
21
+ // Define Zod schema for validation
22
+ const ParamsSchema = z.object({
23
+ format: z.enum(['list', 'grouped', 'paths']).default('paths'),
24
+ path: z.string().default('.'),
25
+ });
26
+ /**
27
+ * Check if git is available and we're in a repo
28
+ */
29
+ function isGitRepo(basePath) {
30
+ try {
31
+ execSync('git rev-parse --git-dir', { cwd: basePath, stdio: 'pipe' });
32
+ return true;
33
+ }
34
+ catch (e) {
35
+ return false;
36
+ }
37
+ }
38
+ /**
39
+ * Get changed files from git
40
+ */
41
+ function getGitChangedFiles(basePath) {
42
+ try {
43
+ // Get staged + unstaged changes
44
+ let output = execSync('git diff --name-only HEAD 2>/dev/null', {
45
+ cwd: basePath,
46
+ encoding: 'utf8',
47
+ stdio: ['pipe', 'pipe', 'pipe']
48
+ }).trim();
49
+ const cachedOutput = execSync('git diff --name-only --cached 2>/dev/null', {
50
+ cwd: basePath,
51
+ encoding: 'utf8',
52
+ stdio: ['pipe', 'pipe', 'pipe']
53
+ }).trim();
54
+ if (cachedOutput) {
55
+ output = output ? `${output}\n${cachedOutput}` : cachedOutput;
56
+ }
57
+ // If no working changes, check last commit
58
+ if (!output) {
59
+ output = execSync('git diff --name-only HEAD~1 HEAD 2>/dev/null', {
60
+ cwd: basePath,
61
+ encoding: 'utf8',
62
+ stdio: ['pipe', 'pipe', 'pipe']
63
+ }).trim();
64
+ }
65
+ return output ? output.split('\n').filter(f => f.trim()) : [];
66
+ }
67
+ catch (e) {
68
+ return [];
69
+ }
70
+ }
71
+ /**
72
+ * Find recently modified files (fallback when no git changes)
73
+ */
74
+ function findRecentlyModified(basePath, hoursAgo = 24) {
75
+ const results = [];
76
+ const cutoffTime = Date.now() - (hoursAgo * 60 * 60 * 1000);
77
+ function scan(dirPath) {
78
+ try {
79
+ const entries = readdirSync(dirPath, { withFileTypes: true });
80
+ for (const entry of entries) {
81
+ if (entry.isDirectory()) {
82
+ if (EXCLUDE_DIRS.includes(entry.name))
83
+ continue;
84
+ scan(join(dirPath, entry.name));
85
+ }
86
+ else if (entry.isFile()) {
87
+ const ext = extname(entry.name).toLowerCase();
88
+ if (!SOURCE_EXTENSIONS.includes(ext))
89
+ continue;
90
+ const fullPath = join(dirPath, entry.name);
91
+ try {
92
+ const stat = statSync(fullPath);
93
+ if (stat.mtimeMs > cutoffTime) {
94
+ results.push(relative(basePath, fullPath));
95
+ }
96
+ }
97
+ catch (e) {
98
+ // Skip files we can't stat
99
+ }
100
+ }
101
+ }
102
+ }
103
+ catch (e) {
104
+ // Ignore permission errors
105
+ }
106
+ }
107
+ scan(basePath);
108
+ return results;
109
+ }
110
+ /**
111
+ * Extract unique parent directories from file list
112
+ */
113
+ function extractDirectories(files, basePath) {
114
+ const dirs = new Set();
115
+ for (const file of files) {
116
+ const dir = dirname(file);
117
+ if (dir === '.' || dir === '') {
118
+ dirs.add('.');
119
+ }
120
+ else {
121
+ dirs.add('./' + dir.replace(/\\/g, '/'));
122
+ }
123
+ }
124
+ return Array.from(dirs).sort();
125
+ }
126
+ /**
127
+ * Count files in directory
128
+ */
129
+ function countFiles(dirPath) {
130
+ try {
131
+ const entries = readdirSync(dirPath, { withFileTypes: true });
132
+ return entries.filter(e => e.isFile()).length;
133
+ }
134
+ catch (e) {
135
+ return 0;
136
+ }
137
+ }
138
+ /**
139
+ * Get file types in directory
140
+ */
141
+ function getFileTypes(dirPath) {
142
+ const types = new Set();
143
+ try {
144
+ const entries = readdirSync(dirPath, { withFileTypes: true });
145
+ entries.forEach(entry => {
146
+ if (entry.isFile()) {
147
+ const ext = extname(entry.name).slice(1);
148
+ if (ext)
149
+ types.add(ext);
150
+ }
151
+ });
152
+ }
153
+ catch (e) {
154
+ // Ignore
155
+ }
156
+ return Array.from(types);
157
+ }
158
+ // Tool schema for MCP
159
+ export const schema = {
160
+ name: 'detect_changed_modules',
161
+ description: `Detect modules affected by git changes or recent file modifications.
162
+ Features:
163
+ - Git-aware: detects staged, unstaged, or last commit changes
164
+ - Fallback: finds files modified in last 24 hours
165
+ - Respects .gitignore patterns
166
+
167
+ Output formats: list, grouped, paths (default)`,
168
+ inputSchema: {
169
+ type: 'object',
170
+ properties: {
171
+ format: {
172
+ type: 'string',
173
+ enum: ['list', 'grouped', 'paths'],
174
+ description: 'Output format (default: paths)',
175
+ default: 'paths'
176
+ },
177
+ path: {
178
+ type: 'string',
179
+ description: 'Target directory path (default: current directory)',
180
+ default: '.'
181
+ }
182
+ },
183
+ required: []
184
+ }
185
+ };
186
+ // Handler function
187
+ export async function handler(params) {
188
+ const parsed = ParamsSchema.safeParse(params);
189
+ if (!parsed.success) {
190
+ return { success: false, error: `Invalid params: ${parsed.error.message}` };
191
+ }
192
+ const { format, path: targetPath } = parsed.data;
193
+ try {
194
+ const basePath = resolve(process.cwd(), targetPath);
195
+ if (!existsSync(basePath)) {
196
+ return { success: false, error: `Directory not found: ${basePath}` };
197
+ }
198
+ // Get changed files
199
+ let changedFiles = [];
200
+ let changeSource = 'none';
201
+ if (isGitRepo(basePath)) {
202
+ changedFiles = getGitChangedFiles(basePath);
203
+ changeSource = changedFiles.length > 0 ? 'git' : 'none';
204
+ }
205
+ // Fallback to recently modified files
206
+ if (changedFiles.length === 0) {
207
+ changedFiles = findRecentlyModified(basePath);
208
+ changeSource = changedFiles.length > 0 ? 'mtime' : 'none';
209
+ }
210
+ // Extract affected directories
211
+ const affectedDirs = extractDirectories(changedFiles, basePath);
212
+ // Format output
213
+ let output;
214
+ const results = [];
215
+ for (const dir of affectedDirs) {
216
+ const fullPath = dir === '.' ? basePath : resolve(basePath, dir);
217
+ if (!existsSync(fullPath) || !statSync(fullPath).isDirectory())
218
+ continue;
219
+ const fileCount = countFiles(fullPath);
220
+ const types = getFileTypes(fullPath);
221
+ const depth = dir === '.' ? 0 : (dir.match(/\//g) || []).length;
222
+ const hasClaude = existsSync(join(fullPath, 'CLAUDE.md'));
223
+ results.push({
224
+ depth,
225
+ path: dir,
226
+ files: fileCount,
227
+ types,
228
+ has_claude: hasClaude
229
+ });
230
+ }
231
+ switch (format) {
232
+ case 'list':
233
+ output = results.map(r => `depth:${r.depth}|path:${r.path}|files:${r.files}|types:[${r.types.join(',')}]|has_claude:${r.has_claude ? 'yes' : 'no'}|status:changed`).join('\n');
234
+ break;
235
+ case 'grouped':
236
+ const maxDepth = results.length > 0 ? Math.max(...results.map(r => r.depth)) : 0;
237
+ const lines = ['Affected modules by changes:'];
238
+ for (let d = 0; d <= maxDepth; d++) {
239
+ const atDepth = results.filter(r => r.depth === d);
240
+ if (atDepth.length > 0) {
241
+ lines.push(` Depth ${d}:`);
242
+ atDepth.forEach(r => {
243
+ const claudeIndicator = r.has_claude ? ' [OK]' : '';
244
+ lines.push(` - ${r.path}${claudeIndicator} (changed)`);
245
+ });
246
+ }
247
+ }
248
+ if (results.length === 0) {
249
+ lines.push(' No recent changes detected');
250
+ }
251
+ output = lines.join('\n');
252
+ break;
253
+ case 'paths':
254
+ default:
255
+ output = affectedDirs.join('\n');
256
+ break;
257
+ }
258
+ return {
259
+ success: true,
260
+ result: {
261
+ format,
262
+ change_source: changeSource,
263
+ changed_files_count: changedFiles.length,
264
+ affected_modules_count: results.length,
265
+ results,
266
+ output
267
+ }
268
+ };
269
+ }
270
+ catch (error) {
271
+ return {
272
+ success: false,
273
+ error: `Failed to detect changed modules: ${error.message}`
274
+ };
275
+ }
276
+ }
277
+ //# sourceMappingURL=detect-changed-modules.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"detect-changed-modules.js","sourceRoot":"","sources":["../../src/tools/detect-changed-modules.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AACvD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AACjE,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,kCAAkC;AAClC,MAAM,iBAAiB,GAAG;IACxB,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM;IACnC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI;IAChD,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM;CACxC,CAAC;AAEF,yBAAyB;AACzB,MAAM,YAAY,GAAG;IACnB,MAAM,EAAE,aAAa,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK;IAC7D,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,aAAa;IACzD,UAAU,EAAE,aAAa,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;CACjD,CAAC;AAEF,mCAAmC;AACnC,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5B,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;IAC7D,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC;CAC9B,CAAC,CAAC;AAqBH;;GAEG;AACH,SAAS,SAAS,CAAC,QAAgB;IACjC,IAAI,CAAC;QACH,QAAQ,CAAC,yBAAyB,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;QACtE,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,kBAAkB,CAAC,QAAgB;IAC1C,IAAI,CAAC;QACH,gCAAgC;QAChC,IAAI,MAAM,GAAG,QAAQ,CAAC,uCAAuC,EAAE;YAC7D,GAAG,EAAE,QAAQ;YACb,QAAQ,EAAE,MAAM;YAChB,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;SAChC,CAAC,CAAC,IAAI,EAAE,CAAC;QAEV,MAAM,YAAY,GAAG,QAAQ,CAAC,2CAA2C,EAAE;YACzE,GAAG,EAAE,QAAQ;YACb,QAAQ,EAAE,MAAM;YAChB,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;SAChC,CAAC,CAAC,IAAI,EAAE,CAAC;QAEV,IAAI,YAAY,EAAE,CAAC;YACjB,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,KAAK,YAAY,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC;QAChE,CAAC;QAED,2CAA2C;QAC3C,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,GAAG,QAAQ,CAAC,8CAA8C,EAAE;gBAChE,GAAG,EAAE,QAAQ;gBACb,QAAQ,EAAE,MAAM;gBAChB,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;aAChC,CAAC,CAAC,IAAI,EAAE,CAAC;QACZ,CAAC;QAED,OAAO,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAChE,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,oBAAoB,CAAC,QAAgB,EAAE,WAAmB,EAAE;IACnE,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,QAAQ,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;IAE5D,SAAS,IAAI,CAAC,OAAe;QAC3B,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;YAE9D,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;gBAC5B,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;oBACxB,IAAI,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC;wBAAE,SAAS;oBAChD,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;gBAClC,CAAC;qBAAM,IAAI,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;oBAC1B,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;oBAC9C,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,GAAG,CAAC;wBAAE,SAAS;oBAE/C,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;oBAC3C,IAAI,CAAC;wBACH,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;wBAChC,IAAI,IAAI,CAAC,OAAO,GAAG,UAAU,EAAE,CAAC;4BAC9B,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;wBAC7C,CAAC;oBACH,CAAC;oBAAC,OAAO,CAAC,EAAE,CAAC;wBACX,2BAA2B;oBAC7B,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,2BAA2B;QAC7B,CAAC;IACH,CAAC;IAED,IAAI,CAAC,QAAQ,CAAC,CAAC;IACf,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;GAEG;AACH,SAAS,kBAAkB,CAAC,KAAe,EAAE,QAAgB;IAC3D,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAE/B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QAC1B,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,EAAE,EAAE,CAAC;YAC9B,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAChB,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;AACjC,CAAC;AAED;;GAEG;AACH,SAAS,UAAU,CAAC,OAAe;IACjC,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QAC9D,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;IAChD,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,CAAC,CAAC;IACX,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,YAAY,CAAC,OAAe;IACnC,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;IAChC,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QAC9D,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YACtB,IAAI,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;gBACnB,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBACzC,IAAI,GAAG;oBAAE,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAC1B,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,SAAS;IACX,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC3B,CAAC;AAED,sBAAsB;AACtB,MAAM,CAAC,MAAM,MAAM,GAAe;IAChC,IAAI,EAAE,wBAAwB;IAC9B,WAAW,EAAE;;;;;;+CAMgC;IAC7C,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,MAAM,EAAE;gBACN,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC;gBAClC,WAAW,EAAE,gCAAgC;gBAC7C,OAAO,EAAE,OAAO;aACjB;YACD,IAAI,EAAE;gBACJ,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,oDAAoD;gBACjE,OAAO,EAAE,GAAG;aACb;SACF;QACD,QAAQ,EAAE,EAAE;KACb;CACF,CAAC;AAEF,mBAAmB;AACnB,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,MAA+B;IAC3D,MAAM,MAAM,GAAG,YAAY,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAC9C,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,mBAAmB,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;IAC9E,CAAC;IAED,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC;IAEjD,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,UAAU,CAAC,CAAC;QAEpD,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC1B,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,wBAAwB,QAAQ,EAAE,EAAE,CAAC;QACvE,CAAC;QAED,oBAAoB;QACpB,IAAI,YAAY,GAAa,EAAE,CAAC;QAChC,IAAI,YAAY,GAA6B,MAAM,CAAC;QAEpD,IAAI,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC;YACxB,YAAY,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;YAC5C,YAAY,GAAG,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;QAC1D,CAAC;QAED,sCAAsC;QACtC,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9B,YAAY,GAAG,oBAAoB,CAAC,QAAQ,CAAC,CAAC;YAC9C,YAAY,GAAG,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;QAC5D,CAAC;QAED,+BAA+B;QAC/B,MAAM,YAAY,GAAG,kBAAkB,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;QAEhE,gBAAgB;QAChB,IAAI,MAAc,CAAC;QACnB,MAAM,OAAO,GAAmB,EAAE,CAAC;QAEnC,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;YAC/B,MAAM,QAAQ,GAAG,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;YACjE,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE;gBAAE,SAAS;YAEzE,MAAM,SAAS,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;YACvC,MAAM,KAAK,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;YACrC,MAAM,KAAK,GAAG,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;YAChE,MAAM,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC;YAE1D,OAAO,CAAC,IAAI,CAAC;gBACX,KAAK;gBACL,IAAI,EAAE,GAAG;gBACT,KAAK,EAAE,SAAS;gBAChB,KAAK;gBACL,UAAU,EAAE,SAAS;aACtB,CAAC,CAAC;QACL,CAAC;QAED,QAAQ,MAAM,EAAE,CAAC;YACf,KAAK,MAAM;gBACT,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CACvB,SAAS,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,KAAK,WAAW,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,iBAAiB,CACzI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACb,MAAM;YAER,KAAK,SAAS;gBACZ,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACjF,MAAM,KAAK,GAAG,CAAC,8BAA8B,CAAC,CAAC;gBAE/C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC;oBACnC,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC;oBACnD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBACvB,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;wBAC5B,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;4BAClB,MAAM,eAAe,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;4BACpD,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,GAAG,eAAe,YAAY,CAAC,CAAC;wBAC5D,CAAC,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;gBAED,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACzB,KAAK,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;gBAC7C,CAAC;gBAED,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC1B,MAAM;YAER,KAAK,OAAO,CAAC;YACb;gBACE,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACjC,MAAM;QACV,CAAC;QAED,OAAO;YACL,OAAO,EAAE,IAAI;YACb,MAAM,EAAE;gBACN,MAAM;gBACN,aAAa,EAAE,YAAY;gBAC3B,mBAAmB,EAAE,YAAY,CAAC,MAAM;gBACxC,sBAAsB,EAAE,OAAO,CAAC,MAAM;gBACtC,OAAO;gBACP,MAAM;aACP;SACF,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,qCAAsC,KAAe,CAAC,OAAO,EAAE;SACvE,CAAC;IACJ,CAAC;AACH,CAAC"}