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,102 @@
1
+ /**
2
+ * History Importer - Import Claude Code history into memory store
3
+ * Supports global history.jsonl and project session JSONL files
4
+ *
5
+ * Usage:
6
+ * ```typescript
7
+ * const importer = new HistoryImporter('path/to/database.db');
8
+ *
9
+ * // Import global history (incremental)
10
+ * const globalResult = await importer.importGlobalHistory();
11
+ * console.log(`Imported ${globalResult.imported} entries`);
12
+ *
13
+ * // Import all sessions for a project
14
+ * const projectResult = await importer.importProjectSessions('D--Claude-dms3');
15
+ * console.log(`Imported ${projectResult.imported} messages from project sessions`);
16
+ *
17
+ * // Import specific session
18
+ * const sessionResult = await importer.importSession('path/to/session.jsonl');
19
+ *
20
+ * // Get import status
21
+ * const status = importer.getImportStatus();
22
+ * console.log(`Total imported: ${status.totalImported}`);
23
+ *
24
+ * importer.close();
25
+ * ```
26
+ */
27
+ export interface ImportResult {
28
+ imported: number;
29
+ skipped: number;
30
+ errors: number;
31
+ }
32
+ export interface ImportStatus {
33
+ lastGlobalImport?: string;
34
+ lastSessionImport?: string;
35
+ totalImported: number;
36
+ sessions: Map<string, {
37
+ imported: number;
38
+ lastUpdate: string;
39
+ }>;
40
+ }
41
+ /**
42
+ * History Importer for Claude Code
43
+ */
44
+ export declare class HistoryImporter {
45
+ private db;
46
+ private status;
47
+ constructor(dbPath: string);
48
+ /**
49
+ * Initialize database schema for conversation history
50
+ * NOTE: Schema aligned with MemoryStore for seamless importing
51
+ */
52
+ private initSchema;
53
+ /**
54
+ * Import from global history.jsonl (incremental)
55
+ */
56
+ importGlobalHistory(historyPath?: string): Promise<ImportResult>;
57
+ /**
58
+ * Import full session from projects folder
59
+ */
60
+ importSession(sessionFilePath: string): Promise<ImportResult>;
61
+ /**
62
+ * Scan and import all sessions for a project
63
+ */
64
+ importProjectSessions(projectName: string): Promise<ImportResult>;
65
+ /**
66
+ * Get import status
67
+ */
68
+ getImportStatus(): ImportStatus;
69
+ /**
70
+ * Insert global history batch
71
+ */
72
+ private insertGlobalHistoryBatch;
73
+ /**
74
+ * Insert session messages
75
+ */
76
+ private insertSessionMessages;
77
+ /**
78
+ * Extract text content from message content
79
+ */
80
+ private extractTextContent;
81
+ /**
82
+ * Extract tool calls from content blocks
83
+ */
84
+ private extractToolCalls;
85
+ /**
86
+ * Generate SHA256 hash for deduplication
87
+ */
88
+ private generateHash;
89
+ /**
90
+ * Get last import time for a source
91
+ */
92
+ private getLastImportTime;
93
+ /**
94
+ * Update last import time
95
+ */
96
+ private updateLastImportTime;
97
+ /**
98
+ * Close database connection
99
+ */
100
+ close(): void;
101
+ }
102
+ //# sourceMappingURL=history-importer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"history-importer.d.ts","sourceRoot":"","sources":["../../src/core/history-importer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAiDH,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,YAAY;IAC3B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACjE;AAED;;GAEG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,EAAE,CAAoB;IAC9B,OAAO,CAAC,MAAM,CAAe;gBAEjB,MAAM,EAAE,MAAM;IAU1B;;;OAGG;IACH,OAAO,CAAC,UAAU;IA8DlB;;OAEG;IACG,mBAAmB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IA6DtE;;OAEG;IACG,aAAa,CAAC,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAuDnE;;OAEG;IACG,qBAAqB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAuBvE;;OAEG;IACH,eAAe,IAAI,YAAY;IAI/B;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAwEhC;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAmI7B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAW1B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAmCxB;;OAEG;IACH,OAAO,CAAC,YAAY;IAKpB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAKzB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAa5B;;OAEG;IACH,KAAK,IAAI,IAAI;CAGd"}
@@ -0,0 +1,493 @@
1
+ /**
2
+ * History Importer - Import Claude Code history into memory store
3
+ * Supports global history.jsonl and project session JSONL files
4
+ *
5
+ * Usage:
6
+ * ```typescript
7
+ * const importer = new HistoryImporter('path/to/database.db');
8
+ *
9
+ * // Import global history (incremental)
10
+ * const globalResult = await importer.importGlobalHistory();
11
+ * console.log(`Imported ${globalResult.imported} entries`);
12
+ *
13
+ * // Import all sessions for a project
14
+ * const projectResult = await importer.importProjectSessions('D--Claude-dms3');
15
+ * console.log(`Imported ${projectResult.imported} messages from project sessions`);
16
+ *
17
+ * // Import specific session
18
+ * const sessionResult = await importer.importSession('path/to/session.jsonl');
19
+ *
20
+ * // Get import status
21
+ * const status = importer.getImportStatus();
22
+ * console.log(`Total imported: ${status.totalImported}`);
23
+ *
24
+ * importer.close();
25
+ * ```
26
+ */
27
+ import { createReadStream, existsSync, readdirSync } from 'fs';
28
+ import { createInterface } from 'readline';
29
+ import { join, basename } from 'path';
30
+ import { createHash } from 'crypto';
31
+ import Database from 'better-sqlite3';
32
+ /**
33
+ * History Importer for Claude Code
34
+ */
35
+ export class HistoryImporter {
36
+ db;
37
+ status;
38
+ constructor(dbPath) {
39
+ this.db = new Database(dbPath);
40
+ this.db.pragma('journal_mode = WAL');
41
+ this.status = {
42
+ totalImported: 0,
43
+ sessions: new Map()
44
+ };
45
+ this.initSchema();
46
+ }
47
+ /**
48
+ * Initialize database schema for conversation history
49
+ * NOTE: Schema aligned with MemoryStore for seamless importing
50
+ */
51
+ initSchema() {
52
+ this.db.exec(`
53
+ -- Conversations table (aligned with MemoryStore schema)
54
+ CREATE TABLE IF NOT EXISTS conversations (
55
+ id TEXT PRIMARY KEY,
56
+ source TEXT DEFAULT 'ccw',
57
+ external_id TEXT,
58
+ project_name TEXT,
59
+ git_branch TEXT,
60
+ created_at TEXT NOT NULL,
61
+ updated_at TEXT NOT NULL,
62
+ quality_score INTEGER,
63
+ turn_count INTEGER DEFAULT 0,
64
+ prompt_preview TEXT
65
+ );
66
+
67
+ -- Messages table (aligned with MemoryStore schema)
68
+ CREATE TABLE IF NOT EXISTS messages (
69
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
70
+ conversation_id TEXT NOT NULL,
71
+ role TEXT NOT NULL CHECK(role IN ('user', 'assistant', 'system')),
72
+ content_text TEXT,
73
+ content_json TEXT,
74
+ timestamp TEXT NOT NULL,
75
+ token_count INTEGER,
76
+ FOREIGN KEY (conversation_id) REFERENCES conversations(id) ON DELETE CASCADE
77
+ );
78
+
79
+ -- Tool calls table (aligned with MemoryStore schema)
80
+ CREATE TABLE IF NOT EXISTS tool_calls (
81
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
82
+ message_id INTEGER NOT NULL,
83
+ tool_name TEXT NOT NULL,
84
+ tool_args TEXT,
85
+ tool_output TEXT,
86
+ status TEXT,
87
+ duration_ms INTEGER,
88
+ FOREIGN KEY (message_id) REFERENCES messages(id) ON DELETE CASCADE
89
+ );
90
+
91
+ -- Import tracking table
92
+ CREATE TABLE IF NOT EXISTS import_metadata (
93
+ key TEXT PRIMARY KEY,
94
+ value TEXT,
95
+ updated_at TEXT
96
+ );
97
+
98
+ -- Deduplication table (hash-based)
99
+ CREATE TABLE IF NOT EXISTS message_hashes (
100
+ hash TEXT PRIMARY KEY,
101
+ message_id TEXT NOT NULL,
102
+ created_at TEXT NOT NULL
103
+ );
104
+
105
+ -- Indexes (aligned with MemoryStore)
106
+ CREATE INDEX IF NOT EXISTS idx_conversations_created ON conversations(created_at DESC);
107
+ CREATE INDEX IF NOT EXISTS idx_conversations_updated ON conversations(updated_at DESC);
108
+ CREATE INDEX IF NOT EXISTS idx_messages_conversation ON messages(conversation_id);
109
+ CREATE INDEX IF NOT EXISTS idx_tool_calls_message ON tool_calls(message_id);
110
+ `);
111
+ }
112
+ /**
113
+ * Import from global history.jsonl (incremental)
114
+ */
115
+ async importGlobalHistory(historyPath) {
116
+ const path = historyPath || join(process.env.USERPROFILE || process.env.HOME || '', '.claude', 'history.jsonl');
117
+ if (!existsSync(path)) {
118
+ return { imported: 0, skipped: 0, errors: 0 };
119
+ }
120
+ const result = { imported: 0, skipped: 0, errors: 0 };
121
+ const lastImportTime = this.getLastImportTime('global_history');
122
+ const fileStream = createReadStream(path, { encoding: 'utf8' });
123
+ const rl = createInterface({ input: fileStream, crlfDelay: Infinity });
124
+ const batch = [];
125
+ const BATCH_SIZE = 100;
126
+ for await (const line of rl) {
127
+ if (!line.trim())
128
+ continue;
129
+ try {
130
+ const entry = JSON.parse(line);
131
+ // Skip if already imported
132
+ if (lastImportTime && entry.timestamp <= new Date(lastImportTime).getTime()) {
133
+ result.skipped++;
134
+ continue;
135
+ }
136
+ batch.push(entry);
137
+ if (batch.length >= BATCH_SIZE) {
138
+ const batchResult = this.insertGlobalHistoryBatch(batch);
139
+ result.imported += batchResult.imported;
140
+ result.skipped += batchResult.skipped;
141
+ result.errors += batchResult.errors;
142
+ batch.length = 0;
143
+ }
144
+ }
145
+ catch (err) {
146
+ result.errors++;
147
+ console.error(`Failed to parse line: ${err.message}`);
148
+ }
149
+ }
150
+ // Process remaining batch
151
+ if (batch.length > 0) {
152
+ const batchResult = this.insertGlobalHistoryBatch(batch);
153
+ result.imported += batchResult.imported;
154
+ result.skipped += batchResult.skipped;
155
+ result.errors += batchResult.errors;
156
+ }
157
+ if (result.imported > 0) {
158
+ this.updateLastImportTime('global_history');
159
+ }
160
+ this.status.lastGlobalImport = new Date().toISOString();
161
+ this.status.totalImported += result.imported;
162
+ return result;
163
+ }
164
+ /**
165
+ * Import full session from projects folder
166
+ */
167
+ async importSession(sessionFilePath) {
168
+ if (!existsSync(sessionFilePath)) {
169
+ return { imported: 0, skipped: 0, errors: 0 };
170
+ }
171
+ const result = { imported: 0, skipped: 0, errors: 0 };
172
+ const sessionId = basename(sessionFilePath, '.jsonl');
173
+ const fileStream = createReadStream(sessionFilePath, { encoding: 'utf8' });
174
+ const rl = createInterface({ input: fileStream, crlfDelay: Infinity });
175
+ const messages = [];
176
+ let conversationMetadata = {};
177
+ for await (const line of rl) {
178
+ if (!line.trim())
179
+ continue;
180
+ try {
181
+ const entry = JSON.parse(line);
182
+ if (entry.type === 'user' || entry.type === 'assistant') {
183
+ messages.push(entry);
184
+ // Extract metadata from first message
185
+ if (messages.length === 1) {
186
+ conversationMetadata = {
187
+ sessionId: entry.sessionId,
188
+ cwd: entry.cwd,
189
+ gitBranch: entry.gitBranch
190
+ };
191
+ }
192
+ }
193
+ }
194
+ catch (err) {
195
+ result.errors++;
196
+ console.error(`Failed to parse session line: ${err.message}`);
197
+ }
198
+ }
199
+ if (messages.length > 0) {
200
+ const importResult = this.insertSessionMessages(sessionId, messages, conversationMetadata);
201
+ result.imported = importResult.imported;
202
+ result.skipped = importResult.skipped;
203
+ result.errors += importResult.errors;
204
+ }
205
+ this.status.lastSessionImport = new Date().toISOString();
206
+ this.status.totalImported += result.imported;
207
+ this.status.sessions.set(sessionId, {
208
+ imported: result.imported,
209
+ lastUpdate: new Date().toISOString()
210
+ });
211
+ return result;
212
+ }
213
+ /**
214
+ * Scan and import all sessions for a project
215
+ */
216
+ async importProjectSessions(projectName) {
217
+ const projectsDir = join(process.env.USERPROFILE || process.env.HOME || '', '.claude', 'projects');
218
+ const projectDir = join(projectsDir, projectName);
219
+ if (!existsSync(projectDir)) {
220
+ return { imported: 0, skipped: 0, errors: 0 };
221
+ }
222
+ const result = { imported: 0, skipped: 0, errors: 0 };
223
+ const sessionFiles = readdirSync(projectDir).filter(f => f.endsWith('.jsonl'));
224
+ for (const sessionFile of sessionFiles) {
225
+ const sessionPath = join(projectDir, sessionFile);
226
+ const sessionResult = await this.importSession(sessionPath);
227
+ result.imported += sessionResult.imported;
228
+ result.skipped += sessionResult.skipped;
229
+ result.errors += sessionResult.errors;
230
+ }
231
+ return result;
232
+ }
233
+ /**
234
+ * Get import status
235
+ */
236
+ getImportStatus() {
237
+ return { ...this.status };
238
+ }
239
+ /**
240
+ * Insert global history batch
241
+ */
242
+ insertGlobalHistoryBatch(entries) {
243
+ const result = { imported: 0, skipped: 0, errors: 0 };
244
+ const upsertConversation = this.db.prepare(`
245
+ INSERT INTO conversations (id, source, external_id, project_name, created_at, updated_at, turn_count, prompt_preview)
246
+ VALUES (@id, @source, @external_id, @project_name, @created_at, @updated_at, 1, @prompt_preview)
247
+ ON CONFLICT(id) DO UPDATE SET
248
+ updated_at = @updated_at,
249
+ turn_count = turn_count + 1,
250
+ prompt_preview = @prompt_preview
251
+ `);
252
+ const upsertMessage = this.db.prepare(`
253
+ INSERT INTO messages (conversation_id, role, content_text, timestamp)
254
+ VALUES (@conversation_id, 'user', @content_text, @timestamp)
255
+ `);
256
+ const insertHash = this.db.prepare(`
257
+ INSERT OR IGNORE INTO message_hashes (hash, message_id, created_at)
258
+ VALUES (@hash, @message_id, @created_at)
259
+ `);
260
+ const transaction = this.db.transaction(() => {
261
+ for (const entry of entries) {
262
+ try {
263
+ const timestamp = new Date(entry.timestamp).toISOString();
264
+ const hash = this.generateHash(entry.sessionId, timestamp, entry.display);
265
+ // Check if hash exists
266
+ const existing = this.db.prepare('SELECT message_id FROM message_hashes WHERE hash = ?').get(hash);
267
+ if (existing) {
268
+ result.skipped++;
269
+ continue;
270
+ }
271
+ // Insert conversation (using MemoryStore-compatible fields)
272
+ upsertConversation.run({
273
+ id: entry.sessionId,
274
+ source: 'global_history',
275
+ external_id: entry.sessionId,
276
+ project_name: entry.project,
277
+ created_at: timestamp,
278
+ updated_at: timestamp,
279
+ prompt_preview: entry.display.substring(0, 100)
280
+ });
281
+ // Insert message (using MemoryStore-compatible fields)
282
+ const insertResult = upsertMessage.run({
283
+ conversation_id: entry.sessionId,
284
+ content_text: entry.display,
285
+ timestamp
286
+ });
287
+ // Insert hash (using actual message ID from insert)
288
+ insertHash.run({
289
+ hash,
290
+ message_id: String(insertResult.lastInsertRowid),
291
+ created_at: timestamp
292
+ });
293
+ result.imported++;
294
+ }
295
+ catch (err) {
296
+ result.errors++;
297
+ console.error(`Failed to insert entry: ${err.message}`);
298
+ }
299
+ }
300
+ });
301
+ transaction();
302
+ return result;
303
+ }
304
+ /**
305
+ * Insert session messages
306
+ */
307
+ insertSessionMessages(sessionId, messages, metadata) {
308
+ const result = { imported: 0, skipped: 0, errors: 0 };
309
+ const upsertConversation = this.db.prepare(`
310
+ INSERT INTO conversations (id, source, external_id, project_name, git_branch, created_at, updated_at, turn_count, prompt_preview)
311
+ VALUES (@id, @source, @external_id, @project_name, @git_branch, @created_at, @updated_at, @turn_count, @prompt_preview)
312
+ ON CONFLICT(id) DO UPDATE SET
313
+ updated_at = @updated_at,
314
+ turn_count = @turn_count,
315
+ prompt_preview = @prompt_preview
316
+ `);
317
+ const upsertMessage = this.db.prepare(`
318
+ INSERT INTO messages (conversation_id, role, content_text, content_json, timestamp, token_count)
319
+ VALUES (@conversation_id, @role, @content_text, @content_json, @timestamp, @token_count)
320
+ `);
321
+ const insertToolCall = this.db.prepare(`
322
+ INSERT INTO tool_calls (message_id, tool_name, tool_args, tool_output, status)
323
+ VALUES (@message_id, @tool_name, @tool_args, @tool_output, @status)
324
+ `);
325
+ const insertHash = this.db.prepare(`
326
+ INSERT OR IGNORE INTO message_hashes (hash, message_id, created_at)
327
+ VALUES (@hash, @message_id, @created_at)
328
+ `);
329
+ const transaction = this.db.transaction(() => {
330
+ const firstMessage = messages[0];
331
+ const lastMessage = messages[messages.length - 1];
332
+ const promptPreview = firstMessage?.message
333
+ ? this.extractTextContent(firstMessage.message.content).substring(0, 100)
334
+ : '';
335
+ // Insert conversation FIRST (before messages, for foreign key constraint)
336
+ upsertConversation.run({
337
+ id: sessionId,
338
+ source: 'session_file',
339
+ external_id: sessionId,
340
+ project_name: metadata.cwd || null,
341
+ git_branch: metadata.gitBranch || null,
342
+ created_at: firstMessage.timestamp,
343
+ updated_at: lastMessage.timestamp,
344
+ turn_count: 0,
345
+ prompt_preview: promptPreview
346
+ });
347
+ for (const msg of messages) {
348
+ if (!msg.message)
349
+ continue;
350
+ try {
351
+ const content = this.extractTextContent(msg.message.content);
352
+ const hash = this.generateHash(sessionId, msg.timestamp, content);
353
+ // Check if hash exists
354
+ const existing = this.db.prepare('SELECT message_id FROM message_hashes WHERE hash = ?').get(hash);
355
+ if (existing) {
356
+ result.skipped++;
357
+ continue;
358
+ }
359
+ // Calculate total tokens
360
+ const inputTokens = msg.message.usage?.input_tokens || 0;
361
+ const outputTokens = msg.message.usage?.output_tokens || 0;
362
+ const totalTokens = inputTokens + outputTokens;
363
+ // Store content as JSON if complex, otherwise as text
364
+ const contentJson = typeof msg.message.content === 'object'
365
+ ? JSON.stringify(msg.message.content)
366
+ : null;
367
+ // Insert message (using MemoryStore-compatible fields)
368
+ const insertResult = upsertMessage.run({
369
+ conversation_id: sessionId,
370
+ role: msg.message.role,
371
+ content_text: content,
372
+ content_json: contentJson,
373
+ timestamp: msg.timestamp,
374
+ token_count: totalTokens
375
+ });
376
+ const messageId = insertResult.lastInsertRowid;
377
+ // Extract and insert tool calls
378
+ const toolCalls = this.extractToolCalls(msg.message.content);
379
+ for (const tool of toolCalls) {
380
+ insertToolCall.run({
381
+ message_id: messageId,
382
+ tool_name: tool.name,
383
+ tool_args: JSON.stringify(tool.input),
384
+ tool_output: tool.result || null,
385
+ status: 'success'
386
+ });
387
+ }
388
+ // Insert hash (using actual message ID from insert)
389
+ insertHash.run({
390
+ hash,
391
+ message_id: String(messageId),
392
+ created_at: msg.timestamp
393
+ });
394
+ result.imported++;
395
+ }
396
+ catch (err) {
397
+ result.errors++;
398
+ console.error(`Failed to insert message: ${err.message}`);
399
+ }
400
+ }
401
+ // Update conversation with final counts
402
+ upsertConversation.run({
403
+ id: sessionId,
404
+ source: 'session_file',
405
+ external_id: sessionId,
406
+ project_name: metadata.cwd || null,
407
+ git_branch: metadata.gitBranch || null,
408
+ created_at: firstMessage.timestamp,
409
+ updated_at: lastMessage.timestamp,
410
+ turn_count: result.imported,
411
+ prompt_preview: promptPreview
412
+ });
413
+ });
414
+ transaction();
415
+ return result;
416
+ }
417
+ /**
418
+ * Extract text content from message content
419
+ */
420
+ extractTextContent(content) {
421
+ if (typeof content === 'string') {
422
+ return content;
423
+ }
424
+ return content
425
+ .filter(block => block.type === 'text' || block.type === 'thinking')
426
+ .map(block => block.text || block.thinking || '')
427
+ .join('\n\n');
428
+ }
429
+ /**
430
+ * Extract tool calls from content blocks
431
+ */
432
+ extractToolCalls(content) {
433
+ if (typeof content === 'string') {
434
+ return [];
435
+ }
436
+ const toolCalls = [];
437
+ const toolResultMap = new Map();
438
+ // First pass: collect tool results
439
+ for (const block of content) {
440
+ if (block.type === 'tool_result' && block.id) {
441
+ toolResultMap.set(block.id, block.content || '');
442
+ }
443
+ }
444
+ // Second pass: collect tool uses with their results
445
+ for (const block of content) {
446
+ if (block.type === 'tool_use' && block.name) {
447
+ toolCalls.push({
448
+ id: block.id,
449
+ name: block.name,
450
+ input: block.input,
451
+ result: block.id ? toolResultMap.get(block.id) : undefined
452
+ });
453
+ }
454
+ }
455
+ return toolCalls;
456
+ }
457
+ /**
458
+ * Generate SHA256 hash for deduplication
459
+ */
460
+ generateHash(sessionId, timestamp, content) {
461
+ const data = `${sessionId}:${timestamp}:${content}`;
462
+ return createHash('sha256').update(data).digest('hex');
463
+ }
464
+ /**
465
+ * Get last import time for a source
466
+ */
467
+ getLastImportTime(source) {
468
+ const result = this.db.prepare('SELECT value FROM import_metadata WHERE key = ?').get(source);
469
+ return result?.value || null;
470
+ }
471
+ /**
472
+ * Update last import time
473
+ */
474
+ updateLastImportTime(source) {
475
+ const now = new Date().toISOString();
476
+ this.db.prepare(`
477
+ INSERT INTO import_metadata (key, value, updated_at)
478
+ VALUES (@key, @value, @updated_at)
479
+ ON CONFLICT(key) DO UPDATE SET value = @value, updated_at = @updated_at
480
+ `).run({
481
+ key: source,
482
+ value: now,
483
+ updated_at: now
484
+ });
485
+ }
486
+ /**
487
+ * Close database connection
488
+ */
489
+ close() {
490
+ this.db.close();
491
+ }
492
+ }
493
+ //# sourceMappingURL=history-importer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"history-importer.js","sourceRoot":"","sources":["../../src/core/history-importer.ts"],"names":[],"mappings":"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"}