@ironbee-ai/cli 0.6.1 → 0.7.0

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 (381) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/README.md +167 -39
  3. package/dist/analysis/code-changes.js +3 -3
  4. package/dist/analysis/code-changes.js.map +1 -1
  5. package/dist/analysis/cross-session.js.map +1 -1
  6. package/dist/analysis/fix-effectiveness.js.map +1 -1
  7. package/dist/analysis/time-analysis.js.map +1 -1
  8. package/dist/analysis/verdict-details.js.map +1 -1
  9. package/dist/analysis/verification-quality.js.map +1 -1
  10. package/dist/analytics/classifier.d.ts +99 -0
  11. package/dist/analytics/classifier.d.ts.map +1 -0
  12. package/dist/analytics/classifier.js +380 -0
  13. package/dist/analytics/classifier.js.map +1 -0
  14. package/dist/analytics/emit.d.ts +67 -0
  15. package/dist/analytics/emit.d.ts.map +1 -0
  16. package/dist/analytics/emit.js +901 -0
  17. package/dist/analytics/emit.js.map +1 -0
  18. package/dist/analytics/errors.d.ts +33 -0
  19. package/dist/analytics/errors.d.ts.map +1 -0
  20. package/dist/analytics/errors.js +93 -0
  21. package/dist/analytics/errors.js.map +1 -0
  22. package/dist/analytics/hook-trigger.d.ts +39 -0
  23. package/dist/analytics/hook-trigger.d.ts.map +1 -0
  24. package/dist/analytics/hook-trigger.js +127 -0
  25. package/dist/analytics/hook-trigger.js.map +1 -0
  26. package/dist/analytics/log.d.ts +44 -0
  27. package/dist/analytics/log.d.ts.map +1 -0
  28. package/dist/analytics/log.js +158 -0
  29. package/dist/analytics/log.js.map +1 -0
  30. package/dist/analytics/merge.d.ts +40 -0
  31. package/dist/analytics/merge.d.ts.map +1 -0
  32. package/dist/analytics/merge.js +527 -0
  33. package/dist/analytics/merge.js.map +1 -0
  34. package/dist/analytics/pricing.d.ts +149 -0
  35. package/dist/analytics/pricing.d.ts.map +1 -0
  36. package/dist/analytics/pricing.js +179 -0
  37. package/dist/analytics/pricing.js.map +1 -0
  38. package/dist/analytics/projection.d.ts +356 -0
  39. package/dist/analytics/projection.d.ts.map +1 -0
  40. package/dist/analytics/projection.js +2281 -0
  41. package/dist/analytics/projection.js.map +1 -0
  42. package/dist/analytics/spawn.d.ts +28 -0
  43. package/dist/analytics/spawn.d.ts.map +1 -0
  44. package/dist/analytics/spawn.js +57 -0
  45. package/dist/analytics/spawn.js.map +1 -0
  46. package/dist/analytics/state.d.ts +58 -0
  47. package/dist/analytics/state.d.ts.map +1 -0
  48. package/dist/analytics/state.js +329 -0
  49. package/dist/analytics/state.js.map +1 -0
  50. package/dist/analytics/transcript.d.ts +150 -0
  51. package/dist/analytics/transcript.d.ts.map +1 -0
  52. package/dist/analytics/transcript.js +276 -0
  53. package/dist/analytics/transcript.js.map +1 -0
  54. package/dist/analytics/types.d.ts +875 -0
  55. package/dist/analytics/types.d.ts.map +1 -0
  56. package/dist/analytics/types.js +31 -0
  57. package/dist/analytics/types.js.map +1 -0
  58. package/dist/clients/base.d.ts +21 -2
  59. package/dist/clients/base.d.ts.map +1 -1
  60. package/dist/clients/claude/commands/ironbee-verify.md +15 -7
  61. package/dist/clients/claude/fragments/command-verify.node.md +33 -0
  62. package/dist/clients/claude/fragments/rule.node.md +29 -0
  63. package/dist/clients/claude/fragments/skill.node.md +77 -0
  64. package/dist/clients/claude/hooks/activity-end.d.ts +13 -0
  65. package/dist/clients/claude/hooks/activity-end.d.ts.map +1 -0
  66. package/dist/clients/claude/hooks/activity-end.js +42 -0
  67. package/dist/clients/claude/hooks/activity-end.js.map +1 -0
  68. package/dist/clients/claude/hooks/clear-verdict.d.ts +9 -4
  69. package/dist/clients/claude/hooks/clear-verdict.d.ts.map +1 -1
  70. package/dist/clients/claude/hooks/clear-verdict.js +50 -12
  71. package/dist/clients/claude/hooks/clear-verdict.js.map +1 -1
  72. package/dist/clients/claude/hooks/require-verdict.d.ts +8 -3
  73. package/dist/clients/claude/hooks/require-verdict.d.ts.map +1 -1
  74. package/dist/clients/claude/hooks/require-verdict.js +17 -6
  75. package/dist/clients/claude/hooks/require-verdict.js.map +1 -1
  76. package/dist/clients/claude/hooks/require-verification.d.ts +7 -4
  77. package/dist/clients/claude/hooks/require-verification.d.ts.map +1 -1
  78. package/dist/clients/claude/hooks/require-verification.js +44 -22
  79. package/dist/clients/claude/hooks/require-verification.js.map +1 -1
  80. package/dist/clients/claude/hooks/session-end.d.ts.map +1 -1
  81. package/dist/clients/claude/hooks/session-end.js +17 -2
  82. package/dist/clients/claude/hooks/session-end.js.map +1 -1
  83. package/dist/clients/claude/hooks/session-start.d.ts.map +1 -1
  84. package/dist/clients/claude/hooks/session-start.js +2 -1
  85. package/dist/clients/claude/hooks/session-start.js.map +1 -1
  86. package/dist/clients/claude/hooks/track-action-monitor.d.ts +27 -0
  87. package/dist/clients/claude/hooks/track-action-monitor.d.ts.map +1 -0
  88. package/dist/clients/claude/hooks/track-action-monitor.js +126 -0
  89. package/dist/clients/claude/hooks/track-action-monitor.js.map +1 -0
  90. package/dist/clients/claude/hooks/track-action.d.ts.map +1 -1
  91. package/dist/clients/claude/hooks/track-action.js +29 -20
  92. package/dist/clients/claude/hooks/track-action.js.map +1 -1
  93. package/dist/clients/claude/hooks/verify-gate.d.ts.map +1 -1
  94. package/dist/clients/claude/hooks/verify-gate.js +18 -1
  95. package/dist/clients/claude/hooks/verify-gate.js.map +1 -1
  96. package/dist/clients/claude/index.d.ts +4 -1
  97. package/dist/clients/claude/index.d.ts.map +1 -1
  98. package/dist/clients/claude/index.js +185 -94
  99. package/dist/clients/claude/index.js.map +1 -1
  100. package/dist/clients/claude/rules/ironbee-verification.md +41 -33
  101. package/dist/clients/claude/skills/ironbee-verification.md +93 -76
  102. package/dist/clients/cursor/commands/ironbee-verify/SKILL.md +18 -10
  103. package/dist/clients/cursor/fragments/command-verify.node.md +33 -0
  104. package/dist/clients/cursor/fragments/rule.node.md +29 -0
  105. package/dist/clients/cursor/fragments/skill.node.md +77 -0
  106. package/dist/clients/cursor/hooks/activity-end.d.ts +14 -0
  107. package/dist/clients/cursor/hooks/activity-end.d.ts.map +1 -0
  108. package/dist/clients/cursor/hooks/activity-end.js +45 -0
  109. package/dist/clients/cursor/hooks/activity-end.js.map +1 -0
  110. package/dist/clients/cursor/hooks/clear-verdict.d.ts +13 -4
  111. package/dist/clients/cursor/hooks/clear-verdict.d.ts.map +1 -1
  112. package/dist/clients/cursor/hooks/clear-verdict.js +59 -14
  113. package/dist/clients/cursor/hooks/clear-verdict.js.map +1 -1
  114. package/dist/clients/cursor/hooks/require-verdict.d.ts +8 -3
  115. package/dist/clients/cursor/hooks/require-verdict.d.ts.map +1 -1
  116. package/dist/clients/cursor/hooks/require-verdict.js +17 -6
  117. package/dist/clients/cursor/hooks/require-verdict.js.map +1 -1
  118. package/dist/clients/cursor/hooks/require-verification.d.ts.map +1 -1
  119. package/dist/clients/cursor/hooks/require-verification.js +42 -16
  120. package/dist/clients/cursor/hooks/require-verification.js.map +1 -1
  121. package/dist/clients/cursor/hooks/session-end.d.ts.map +1 -1
  122. package/dist/clients/cursor/hooks/session-end.js +18 -2
  123. package/dist/clients/cursor/hooks/session-end.js.map +1 -1
  124. package/dist/clients/cursor/hooks/session-start.d.ts.map +1 -1
  125. package/dist/clients/cursor/hooks/session-start.js +2 -1
  126. package/dist/clients/cursor/hooks/session-start.js.map +1 -1
  127. package/dist/clients/cursor/hooks/track-action-monitor.d.ts +27 -0
  128. package/dist/clients/cursor/hooks/track-action-monitor.d.ts.map +1 -0
  129. package/dist/clients/cursor/hooks/track-action-monitor.js +133 -0
  130. package/dist/clients/cursor/hooks/track-action-monitor.js.map +1 -0
  131. package/dist/clients/cursor/hooks/track-action.d.ts.map +1 -1
  132. package/dist/clients/cursor/hooks/track-action.js +51 -23
  133. package/dist/clients/cursor/hooks/track-action.js.map +1 -1
  134. package/dist/clients/cursor/hooks/verify-gate.d.ts.map +1 -1
  135. package/dist/clients/cursor/hooks/verify-gate.js +14 -1
  136. package/dist/clients/cursor/hooks/verify-gate.js.map +1 -1
  137. package/dist/clients/cursor/index.d.ts +4 -1
  138. package/dist/clients/cursor/index.d.ts.map +1 -1
  139. package/dist/clients/cursor/index.js +131 -65
  140. package/dist/clients/cursor/index.js.map +1 -1
  141. package/dist/clients/cursor/rules/ironbee-verification.mdc +37 -29
  142. package/dist/clients/cursor/skills/ironbee-verification.md +93 -76
  143. package/dist/clients/registry.d.ts +14 -0
  144. package/dist/clients/registry.d.ts.map +1 -1
  145. package/dist/clients/registry.js +34 -0
  146. package/dist/clients/registry.js.map +1 -1
  147. package/dist/commands/analyze.d.ts.map +1 -1
  148. package/dist/commands/analyze.js +40 -0
  149. package/dist/commands/analyze.js.map +1 -1
  150. package/dist/commands/backend-toggle.d.ts +45 -0
  151. package/dist/commands/backend-toggle.d.ts.map +1 -0
  152. package/dist/commands/backend-toggle.js +192 -0
  153. package/dist/commands/backend-toggle.js.map +1 -0
  154. package/dist/commands/disable-backend.d.ts +14 -0
  155. package/dist/commands/disable-backend.d.ts.map +1 -0
  156. package/dist/commands/disable-backend.js +34 -0
  157. package/dist/commands/disable-backend.js.map +1 -0
  158. package/dist/commands/disable-verification.d.ts +16 -0
  159. package/dist/commands/disable-verification.d.ts.map +1 -0
  160. package/dist/commands/disable-verification.js +36 -0
  161. package/dist/commands/disable-verification.js.map +1 -0
  162. package/dist/commands/enable-backend.d.ts +15 -0
  163. package/dist/commands/enable-backend.d.ts.map +1 -0
  164. package/dist/commands/enable-backend.js +35 -0
  165. package/dist/commands/enable-backend.js.map +1 -0
  166. package/dist/commands/enable-verification.d.ts +14 -0
  167. package/dist/commands/enable-verification.d.ts.map +1 -0
  168. package/dist/commands/enable-verification.js +34 -0
  169. package/dist/commands/enable-verification.js.map +1 -0
  170. package/dist/commands/hook.d.ts.map +1 -1
  171. package/dist/commands/hook.js +60 -0
  172. package/dist/commands/hook.js.map +1 -1
  173. package/dist/commands/import.d.ts +39 -0
  174. package/dist/commands/import.d.ts.map +1 -0
  175. package/dist/commands/import.js +369 -0
  176. package/dist/commands/import.js.map +1 -0
  177. package/dist/commands/install.d.ts.map +1 -1
  178. package/dist/commands/install.js +15 -20
  179. package/dist/commands/install.js.map +1 -1
  180. package/dist/commands/process-analytics.d.ts +18 -0
  181. package/dist/commands/process-analytics.d.ts.map +1 -0
  182. package/dist/commands/process-analytics.js +57 -0
  183. package/dist/commands/process-analytics.js.map +1 -0
  184. package/dist/commands/queue.d.ts +2 -3
  185. package/dist/commands/queue.d.ts.map +1 -1
  186. package/dist/commands/queue.js +2 -3
  187. package/dist/commands/queue.js.map +1 -1
  188. package/dist/commands/status.d.ts.map +1 -1
  189. package/dist/commands/status.js +29 -1
  190. package/dist/commands/status.js.map +1 -1
  191. package/dist/commands/verification-toggle.d.ts +47 -0
  192. package/dist/commands/verification-toggle.d.ts.map +1 -0
  193. package/dist/commands/verification-toggle.js +113 -0
  194. package/dist/commands/verification-toggle.js.map +1 -0
  195. package/dist/commands/verify.d.ts.map +1 -1
  196. package/dist/commands/verify.js +28 -0
  197. package/dist/commands/verify.js.map +1 -1
  198. package/dist/hooks/core/actions.d.ts +77 -70
  199. package/dist/hooks/core/actions.d.ts.map +1 -1
  200. package/dist/hooks/core/actions.js +45 -30
  201. package/dist/hooks/core/actions.js.map +1 -1
  202. package/dist/hooks/core/activity-end.d.ts +20 -0
  203. package/dist/hooks/core/activity-end.d.ts.map +1 -0
  204. package/dist/hooks/core/activity-end.js +23 -0
  205. package/dist/hooks/core/activity-end.js.map +1 -0
  206. package/dist/hooks/core/file-diff.d.ts +19 -0
  207. package/dist/hooks/core/file-diff.d.ts.map +1 -0
  208. package/dist/hooks/core/file-diff.js +39 -0
  209. package/dist/hooks/core/file-diff.js.map +1 -0
  210. package/dist/hooks/core/required-tools.d.ts +30 -0
  211. package/dist/hooks/core/required-tools.d.ts.map +1 -0
  212. package/dist/hooks/core/required-tools.js +70 -0
  213. package/dist/hooks/core/required-tools.js.map +1 -0
  214. package/dist/hooks/core/session-state.d.ts +12 -3
  215. package/dist/hooks/core/session-state.d.ts.map +1 -1
  216. package/dist/hooks/core/session-state.js +59 -0
  217. package/dist/hooks/core/session-state.js.map +1 -1
  218. package/dist/hooks/core/submit-verdict.d.ts.map +1 -1
  219. package/dist/hooks/core/submit-verdict.js +16 -12
  220. package/dist/hooks/core/submit-verdict.js.map +1 -1
  221. package/dist/hooks/core/tool-use-stash.d.ts +41 -0
  222. package/dist/hooks/core/tool-use-stash.d.ts.map +1 -0
  223. package/dist/hooks/core/tool-use-stash.js +82 -0
  224. package/dist/hooks/core/tool-use-stash.js.map +1 -0
  225. package/dist/hooks/core/verify-gate.d.ts +17 -3
  226. package/dist/hooks/core/verify-gate.d.ts.map +1 -1
  227. package/dist/hooks/core/verify-gate.js +315 -119
  228. package/dist/hooks/core/verify-gate.js.map +1 -1
  229. package/dist/import/claude/analytics-runner.d.ts +42 -0
  230. package/dist/import/claude/analytics-runner.d.ts.map +1 -0
  231. package/dist/import/claude/analytics-runner.js +213 -0
  232. package/dist/import/claude/analytics-runner.js.map +1 -0
  233. package/dist/import/claude/discovery.d.ts +22 -0
  234. package/dist/import/claude/discovery.d.ts.map +1 -0
  235. package/dist/import/claude/discovery.js +197 -0
  236. package/dist/import/claude/discovery.js.map +1 -0
  237. package/dist/import/claude/encoding.d.ts +50 -0
  238. package/dist/import/claude/encoding.d.ts.map +1 -0
  239. package/dist/import/claude/encoding.js +110 -0
  240. package/dist/import/claude/encoding.js.map +1 -0
  241. package/dist/import/claude/events/file-change.d.ts +28 -0
  242. package/dist/import/claude/events/file-change.d.ts.map +1 -0
  243. package/dist/import/claude/events/file-change.js +112 -0
  244. package/dist/import/claude/events/file-change.js.map +1 -0
  245. package/dist/import/claude/events/tool-call.d.ts +61 -0
  246. package/dist/import/claude/events/tool-call.d.ts.map +1 -0
  247. package/dist/import/claude/events/tool-call.js +119 -0
  248. package/dist/import/claude/events/tool-call.js.map +1 -0
  249. package/dist/import/claude/runner.d.ts +31 -0
  250. package/dist/import/claude/runner.d.ts.map +1 -0
  251. package/dist/import/claude/runner.js +280 -0
  252. package/dist/import/claude/runner.js.map +1 -0
  253. package/dist/import/claude/summary.d.ts +23 -0
  254. package/dist/import/claude/summary.d.ts.map +1 -0
  255. package/dist/import/claude/summary.js +186 -0
  256. package/dist/import/claude/summary.js.map +1 -0
  257. package/dist/import/claude/transcript-walk.d.ts +52 -0
  258. package/dist/import/claude/transcript-walk.d.ts.map +1 -0
  259. package/dist/import/claude/transcript-walk.js +187 -0
  260. package/dist/import/claude/transcript-walk.js.map +1 -0
  261. package/dist/import/concurrent-pool.d.ts +45 -0
  262. package/dist/import/concurrent-pool.d.ts.map +1 -0
  263. package/dist/import/concurrent-pool.js +95 -0
  264. package/dist/import/concurrent-pool.js.map +1 -0
  265. package/dist/import/emitter.d.ts +29 -0
  266. package/dist/import/emitter.d.ts.map +1 -0
  267. package/dist/import/emitter.js +66 -0
  268. package/dist/import/emitter.js.map +1 -0
  269. package/dist/import/events/activity.d.ts +23 -0
  270. package/dist/import/events/activity.d.ts.map +1 -0
  271. package/dist/import/events/activity.js +45 -0
  272. package/dist/import/events/activity.js.map +1 -0
  273. package/dist/import/events/session.d.ts +24 -0
  274. package/dist/import/events/session.d.ts.map +1 -0
  275. package/dist/import/events/session.js +47 -0
  276. package/dist/import/events/session.js.map +1 -0
  277. package/dist/import/filter.d.ts +47 -0
  278. package/dist/import/filter.d.ts.map +1 -0
  279. package/dist/import/filter.js +90 -0
  280. package/dist/import/filter.js.map +1 -0
  281. package/dist/import/ids.d.ts +56 -0
  282. package/dist/import/ids.d.ts.map +1 -0
  283. package/dist/import/ids.js +87 -0
  284. package/dist/import/ids.js.map +1 -0
  285. package/dist/import/index.d.ts +29 -0
  286. package/dist/import/index.d.ts.map +1 -0
  287. package/dist/import/index.js +52 -0
  288. package/dist/import/index.js.map +1 -0
  289. package/dist/import/marker.d.ts +20 -0
  290. package/dist/import/marker.d.ts.map +1 -0
  291. package/dist/import/marker.js +71 -0
  292. package/dist/import/marker.js.map +1 -0
  293. package/dist/import/pipeline.d.ts +41 -0
  294. package/dist/import/pipeline.d.ts.map +1 -0
  295. package/dist/import/pipeline.js +47 -0
  296. package/dist/import/pipeline.js.map +1 -0
  297. package/dist/import/progress.d.ts +20 -0
  298. package/dist/import/progress.d.ts.map +1 -0
  299. package/dist/import/progress.js +69 -0
  300. package/dist/import/progress.js.map +1 -0
  301. package/dist/import/skip.d.ts +13 -0
  302. package/dist/import/skip.d.ts.map +1 -0
  303. package/dist/import/skip.js +24 -0
  304. package/dist/import/skip.js.map +1 -0
  305. package/dist/import/types.d.ts +125 -0
  306. package/dist/import/types.d.ts.map +1 -0
  307. package/dist/import/types.js +28 -0
  308. package/dist/import/types.js.map +1 -0
  309. package/dist/index.js +21 -2
  310. package/dist/index.js.map +1 -1
  311. package/dist/lib/collector.d.ts +29 -3
  312. package/dist/lib/collector.d.ts.map +1 -1
  313. package/dist/lib/collector.js +118 -8
  314. package/dist/lib/collector.js.map +1 -1
  315. package/dist/lib/config.d.ts +240 -83
  316. package/dist/lib/config.d.ts.map +1 -1
  317. package/dist/lib/config.js +482 -89
  318. package/dist/lib/config.js.map +1 -1
  319. package/dist/lib/event.d.ts +72 -0
  320. package/dist/lib/event.d.ts.map +1 -0
  321. package/dist/lib/event.js +42 -0
  322. package/dist/lib/event.js.map +1 -0
  323. package/dist/lib/gitignore.d.ts +21 -0
  324. package/dist/lib/gitignore.d.ts.map +1 -0
  325. package/dist/lib/gitignore.js +54 -0
  326. package/dist/lib/gitignore.js.map +1 -0
  327. package/dist/lib/runtime-section.d.ts +118 -0
  328. package/dist/lib/runtime-section.d.ts.map +1 -0
  329. package/dist/lib/runtime-section.js +256 -0
  330. package/dist/lib/runtime-section.js.map +1 -0
  331. package/dist/lib/telemetry.d.ts +1 -1
  332. package/dist/lib/telemetry.d.ts.map +1 -1
  333. package/dist/lib/telemetry.js +4 -1
  334. package/dist/lib/telemetry.js.map +1 -1
  335. package/dist/queue/dead-letter.d.ts +5 -1
  336. package/dist/queue/dead-letter.d.ts.map +1 -1
  337. package/dist/queue/dead-letter.js +5 -1
  338. package/dist/queue/dead-letter.js.map +1 -1
  339. package/dist/queue/drain.d.ts +3 -2
  340. package/dist/queue/drain.d.ts.map +1 -1
  341. package/dist/queue/drain.js +3 -2
  342. package/dist/queue/drain.js.map +1 -1
  343. package/dist/queue/flush.d.ts +28 -12
  344. package/dist/queue/flush.d.ts.map +1 -1
  345. package/dist/queue/flush.js +43 -18
  346. package/dist/queue/flush.js.map +1 -1
  347. package/dist/queue/handlers/send-event.d.ts.map +1 -1
  348. package/dist/queue/handlers/send-event.js.map +1 -1
  349. package/dist/queue/index.d.ts +1 -2
  350. package/dist/queue/index.d.ts.map +1 -1
  351. package/dist/queue/index.js +2 -2
  352. package/dist/queue/index.js.map +1 -1
  353. package/dist/queue/paths.d.ts +4 -2
  354. package/dist/queue/paths.d.ts.map +1 -1
  355. package/dist/queue/paths.js +4 -2
  356. package/dist/queue/paths.js.map +1 -1
  357. package/dist/queue/process-file.d.ts +5 -1
  358. package/dist/queue/process-file.d.ts.map +1 -1
  359. package/dist/queue/process-file.js +5 -1
  360. package/dist/queue/process-file.js.map +1 -1
  361. package/dist/queue/snapshot.d.ts +4 -1
  362. package/dist/queue/snapshot.d.ts.map +1 -1
  363. package/dist/queue/snapshot.js +4 -1
  364. package/dist/queue/snapshot.js.map +1 -1
  365. package/dist/queue/spawn.d.ts +1 -3
  366. package/dist/queue/spawn.d.ts.map +1 -1
  367. package/dist/queue/spawn.js +1 -3
  368. package/dist/queue/spawn.js.map +1 -1
  369. package/dist/queue/submit.d.ts +6 -1
  370. package/dist/queue/submit.d.ts.map +1 -1
  371. package/dist/queue/submit.js +6 -1
  372. package/dist/queue/submit.js.map +1 -1
  373. package/dist/queue/types.d.ts +5 -1
  374. package/dist/queue/types.d.ts.map +1 -1
  375. package/dist/queue/types.js +5 -1
  376. package/dist/queue/types.js.map +1 -1
  377. package/dist/queue/worker-log.d.ts +3 -1
  378. package/dist/queue/worker-log.d.ts.map +1 -1
  379. package/dist/queue/worker-log.js +3 -1
  380. package/dist/queue/worker-log.js.map +1 -1
  381. package/package.json +3 -1
@@ -0,0 +1,29 @@
1
+ /**
2
+ * IronBee CLI — Import Module Direct Collector POST
3
+ *
4
+ * Thin wrapper around `lib/collector.ts:sendEventsBatchToCollector` with
5
+ * transient-failure retry (1s/4s/16s backoff ).
6
+ * Never touches `actions.jsonl`, the queue, or any session state writers.
7
+ *
8
+ * Per-event-type batching: events of mixed types are POSTed in a single
9
+ * batch (the collector contract is a flat `Event[]`). Caller chunks by
10
+ * size if desired.
11
+ */
12
+ import { Event } from "../lib/event";
13
+ import { CollectorTarget } from "../lib/collector";
14
+ export interface EmitterOpts {
15
+ sessionId: string;
16
+ projectDir: string;
17
+ target: CollectorTarget | null;
18
+ /** Override per-batch cap. Defaults to `target.batchSize` or 100. */
19
+ batchSize?: number;
20
+ }
21
+ /**
22
+ * POST a batch of events with retry. Returns when every batch has either
23
+ * succeeded or exhausted retries. On exhaustion, throws the last error so
24
+ * the pipeline can mark the session `failed` (per-session atomicity).
25
+ *
26
+ * Silent no-op when `target === null` (collector disabled).
27
+ */
28
+ export declare function postEvents(events: Event[], opts: EmitterOpts): Promise<void>;
29
+ //# sourceMappingURL=emitter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"emitter.d.ts","sourceRoot":"","sources":["../../src/import/emitter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AACrC,OAAO,EAAE,eAAe,EAA8B,MAAM,kBAAkB,CAAC;AAG/E,MAAM,WAAW,WAAW;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,eAAe,GAAG,IAAI,CAAC;IAC/B,qEAAqE;IACrE,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB;AAKD;;;;;;GAMG;AACH,wBAAsB,UAAU,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAiBlF"}
@@ -0,0 +1,66 @@
1
+ "use strict";
2
+ /**
3
+ * IronBee CLI — Import Module Direct Collector POST
4
+ *
5
+ * Thin wrapper around `lib/collector.ts:sendEventsBatchToCollector` with
6
+ * transient-failure retry (1s/4s/16s backoff ).
7
+ * Never touches `actions.jsonl`, the queue, or any session state writers.
8
+ *
9
+ * Per-event-type batching: events of mixed types are POSTed in a single
10
+ * batch (the collector contract is a flat `Event[]`). Caller chunks by
11
+ * size if desired.
12
+ */
13
+ Object.defineProperty(exports, "__esModule", { value: true });
14
+ exports.postEvents = postEvents;
15
+ const collector_1 = require("../lib/collector");
16
+ const logger_1 = require("../lib/logger");
17
+ const DEFAULT_BATCH_SIZE = 100;
18
+ const RETRY_DELAYS_MS = [1000, 4000, 16000];
19
+ /**
20
+ * POST a batch of events with retry. Returns when every batch has either
21
+ * succeeded or exhausted retries. On exhaustion, throws the last error so
22
+ * the pipeline can mark the session `failed` (per-session atomicity).
23
+ *
24
+ * Silent no-op when `target === null` (collector disabled).
25
+ */
26
+ async function postEvents(events, opts) {
27
+ if (events.length === 0) {
28
+ return;
29
+ }
30
+ if (opts.target === null) {
31
+ logger_1.logger.debug(`import emitter: collector disabled — dropping ${events.length} events`);
32
+ return;
33
+ }
34
+ const batchSize = opts.batchSize
35
+ ?? (typeof opts.target.batchSize === "number" && opts.target.batchSize >= 1
36
+ ? opts.target.batchSize
37
+ : DEFAULT_BATCH_SIZE);
38
+ for (let i = 0; i < events.length; i += batchSize) {
39
+ const batch = events.slice(i, Math.min(i + batchSize, events.length));
40
+ await postOneBatchWithRetry(batch, opts);
41
+ }
42
+ }
43
+ async function postOneBatchWithRetry(batch, opts) {
44
+ let lastErr = null;
45
+ for (let attempt = 0; attempt <= RETRY_DELAYS_MS.length; attempt++) {
46
+ try {
47
+ await (0, collector_1.sendEventsBatchToCollector)(batch, opts.sessionId, opts.projectDir, opts.target);
48
+ return;
49
+ }
50
+ catch (e) {
51
+ lastErr = e instanceof Error ? e : new Error(String(e));
52
+ if (attempt < RETRY_DELAYS_MS.length) {
53
+ const delay = RETRY_DELAYS_MS[attempt];
54
+ logger_1.logger.debug(`import emitter: batch send failed (attempt ${attempt + 1}): ${lastErr.message} — retry in ${delay}ms`);
55
+ await sleep(delay);
56
+ }
57
+ }
58
+ }
59
+ throw lastErr ?? new Error("import emitter: send failed after retries");
60
+ }
61
+ function sleep(ms) {
62
+ return new Promise((resolve) => {
63
+ setTimeout(resolve, ms);
64
+ });
65
+ }
66
+ //# sourceMappingURL=emitter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"emitter.js","sourceRoot":"","sources":["../../src/import/emitter.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;GAUG;;AAwBH,gCAiBC;AAtCD,gDAA+E;AAC/E,0CAAuC;AAUvC,MAAM,kBAAkB,GAAW,GAAG,CAAC;AACvC,MAAM,eAAe,GAAa,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;AAEtD;;;;;;GAMG;AACI,KAAK,UAAU,UAAU,CAAC,MAAe,EAAE,IAAiB;IAC/D,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO;IACX,CAAC;IACD,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;QACvB,eAAM,CAAC,KAAK,CAAC,iDAAiD,MAAM,CAAC,MAAM,SAAS,CAAC,CAAC;QACtF,OAAO;IACX,CAAC;IACD,MAAM,SAAS,GAAW,IAAI,CAAC,SAAS;WACjC,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,CAAC;YACvE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS;YACvB,CAAC,CAAC,kBAAkB,CAAC,CAAC;IAE9B,KAAK,IAAI,CAAC,GAAW,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,SAAS,EAAE,CAAC;QACxD,MAAM,KAAK,GAAY,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;QAC/E,MAAM,qBAAqB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAC7C,CAAC;AACL,CAAC;AAED,KAAK,UAAU,qBAAqB,CAAC,KAAc,EAAE,IAAiB;IAClE,IAAI,OAAO,GAAiB,IAAI,CAAC;IACjC,KAAK,IAAI,OAAO,GAAW,CAAC,EAAE,OAAO,IAAI,eAAe,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,CAAC;QACzE,IAAI,CAAC;YACD,MAAM,IAAA,sCAA0B,EAAC,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YACtF,OAAO;QACX,CAAC;QAAC,OAAO,CAAU,EAAE,CAAC;YAClB,OAAO,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YACxD,IAAI,OAAO,GAAG,eAAe,CAAC,MAAM,EAAE,CAAC;gBACnC,MAAM,KAAK,GAAW,eAAe,CAAC,OAAO,CAAC,CAAC;gBAC/C,eAAM,CAAC,KAAK,CAAC,8CAA8C,OAAO,GAAG,CAAC,MAAM,OAAO,CAAC,OAAO,eAAe,KAAK,IAAI,CAAC,CAAC;gBACrH,MAAM,KAAK,CAAC,KAAK,CAAC,CAAC;YACvB,CAAC;QACL,CAAC;IACL,CAAC;IACD,MAAM,OAAO,IAAI,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;AAC5E,CAAC;AAED,SAAS,KAAK,CAAC,EAAU;IACrB,OAAO,IAAI,OAAO,CAAO,CAAC,OAAmB,EAAQ,EAAE;QACnD,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IAC5B,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * IronBee CLI — Import activity_start / activity_end derivation.
3
+ *
4
+ * Behavior:
5
+ * - one activity_start + one activity_end per turn (host_inject continuations
6
+ * are filtered upstream — by the analytics-runner caller)
7
+ * - source: "user_prompt" (we cannot recover the original `pre_tool_use`
8
+ * fallback signal from transcript alone)
9
+ * - duration_ms on end = end_time - start_time
10
+ * - activity_id matches the analytics turn_id (parent foreign key)
11
+ */
12
+ import { ActivityStartAction, ActivityEndAction } from "../../hooks/core/actions";
13
+ export interface TurnBoundary {
14
+ /** 1-based positional turn index from the analytics projection. */
15
+ turnIndex: number;
16
+ /** ISO-8601 string from the transcript. */
17
+ startTime: string;
18
+ /** ISO-8601 string. Falls back to startTime when transcript truncates mid-turn. */
19
+ endTime: string;
20
+ }
21
+ export declare function buildActivityStart(sessionId: string, projectName: string, boundary: TurnBoundary): ActivityStartAction;
22
+ export declare function buildActivityEnd(sessionId: string, projectName: string, boundary: TurnBoundary): ActivityEndAction;
23
+ //# sourceMappingURL=activity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"activity.d.ts","sourceRoot":"","sources":["../../../src/import/events/activity.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAGlF,MAAM,WAAW,YAAY;IACzB,mEAAmE;IACnE,SAAS,EAAE,MAAM,CAAC;IAClB,2CAA2C;IAC3C,SAAS,EAAE,MAAM,CAAC;IAClB,mFAAmF;IACnF,OAAO,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,kBAAkB,CAC9B,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,YAAY,GACvB,mBAAmB,CAWrB;AAED,wBAAgB,gBAAgB,CAC5B,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,YAAY,GACvB,iBAAiB,CAenB"}
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+ /**
3
+ * IronBee CLI — Import activity_start / activity_end derivation.
4
+ *
5
+ * Behavior:
6
+ * - one activity_start + one activity_end per turn (host_inject continuations
7
+ * are filtered upstream — by the analytics-runner caller)
8
+ * - source: "user_prompt" (we cannot recover the original `pre_tool_use`
9
+ * fallback signal from transcript alone)
10
+ * - duration_ms on end = end_time - start_time
11
+ * - activity_id matches the analytics turn_id (parent foreign key)
12
+ */
13
+ Object.defineProperty(exports, "__esModule", { value: true });
14
+ exports.buildActivityStart = buildActivityStart;
15
+ exports.buildActivityEnd = buildActivityEnd;
16
+ const ids_1 = require("../ids");
17
+ function buildActivityStart(sessionId, projectName, boundary) {
18
+ const activityId = (0, ids_1.deriveActivityId)(sessionId, boundary.turnIndex, boundary.startTime);
19
+ return {
20
+ id: (0, ids_1.deriveActivityStartEventId)(sessionId, boundary.turnIndex),
21
+ type: "activity_start",
22
+ timestamp: Date.parse(boundary.startTime),
23
+ session_id: sessionId,
24
+ project_name: projectName,
25
+ activity_id: activityId,
26
+ source: "user_prompt",
27
+ };
28
+ }
29
+ function buildActivityEnd(sessionId, projectName, boundary) {
30
+ const activityId = (0, ids_1.deriveActivityId)(sessionId, boundary.turnIndex, boundary.startTime);
31
+ const startMs = Date.parse(boundary.startTime);
32
+ const endMs = Date.parse(boundary.endTime);
33
+ const durationMs = Number.isFinite(endMs) && Number.isFinite(startMs) ? endMs - startMs : 0;
34
+ return {
35
+ id: (0, ids_1.deriveActivityEndEventId)(sessionId, boundary.turnIndex),
36
+ type: "activity_end",
37
+ timestamp: Number.isFinite(endMs) ? endMs : startMs,
38
+ session_id: sessionId,
39
+ project_name: projectName,
40
+ activity_id: activityId,
41
+ duration: durationMs,
42
+ reason: "import",
43
+ };
44
+ }
45
+ //# sourceMappingURL=activity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"activity.js","sourceRoot":"","sources":["../../../src/import/events/activity.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;GAUG;;AAcH,gDAeC;AAED,4CAmBC;AA/CD,gCAAgG;AAWhG,SAAgB,kBAAkB,CAC9B,SAAiB,EACjB,WAAmB,EACnB,QAAsB;IAEtB,MAAM,UAAU,GAAW,IAAA,sBAAgB,EAAC,SAAS,EAAE,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC;IAC/F,OAAO;QACH,EAAE,EAAE,IAAA,gCAA0B,EAAC,SAAS,EAAE,QAAQ,CAAC,SAAS,CAAC;QAC7D,IAAI,EAAE,gBAAgB;QACtB,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC;QACzC,UAAU,EAAE,SAAS;QACrB,YAAY,EAAE,WAAW;QACzB,WAAW,EAAE,UAAU;QACvB,MAAM,EAAE,aAAa;KACxB,CAAC;AACN,CAAC;AAED,SAAgB,gBAAgB,CAC5B,SAAiB,EACjB,WAAmB,EACnB,QAAsB;IAEtB,MAAM,UAAU,GAAW,IAAA,sBAAgB,EAAC,SAAS,EAAE,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC;IAC/F,MAAM,OAAO,GAAW,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IACvD,MAAM,KAAK,GAAW,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IACnD,MAAM,UAAU,GAAW,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IACpG,OAAO;QACH,EAAE,EAAE,IAAA,8BAAwB,EAAC,SAAS,EAAE,QAAQ,CAAC,SAAS,CAAC;QAC3D,IAAI,EAAE,cAAc;QACpB,SAAS,EAAE,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO;QACnD,UAAU,EAAE,SAAS;QACrB,YAAY,EAAE,WAAW;QACzB,WAAW,EAAE,UAAU;QACvB,QAAQ,EAAE,UAAU;QACpB,MAAM,EAAE,QAAQ;KACnB,CAAC;AACN,CAAC"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * IronBee CLI — Import session_start / session_end derivation.
3
+ *
4
+ * Behavior:
5
+ * - timestamp from first/last transcript line
6
+ * - id from sha256("session_*:" + session_id)
7
+ * - one of each per transcript
8
+ */
9
+ import { SessionStartAction, SessionEndAction } from "../../hooks/core/actions";
10
+ import { ImportTarget } from "../types";
11
+ /**
12
+ * Build a `session_start` event from import metadata. `client` is the
13
+ * upstream agent that produced the transcript ("claude", "cursor", …) —
14
+ * matches live mode where session-start hooks set the same field. Caller
15
+ * is the per-client runner (`claude/runner.ts`, `cursor/runner.ts`), so
16
+ * this stays generic.
17
+ */
18
+ export declare function buildSessionStart(target: ImportTarget, client: string): SessionStartAction;
19
+ /**
20
+ * Build a `session_end` event. `endTimestampMs` and `endReason` come from
21
+ * the transcript tail (last-line timestamp and summary line if present).
22
+ */
23
+ export declare function buildSessionEnd(target: ImportTarget, endTimestampMs: number, endReason: string): SessionEndAction;
24
+ //# sourceMappingURL=session.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../../src/import/events/session.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAChF,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAGxC;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,GAAG,kBAAkB,CAU1F;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAC3B,MAAM,EAAE,YAAY,EACpB,cAAc,EAAE,MAAM,EACtB,SAAS,EAAE,MAAM,GAClB,gBAAgB,CAUlB"}
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ /**
3
+ * IronBee CLI — Import session_start / session_end derivation.
4
+ *
5
+ * Behavior:
6
+ * - timestamp from first/last transcript line
7
+ * - id from sha256("session_*:" + session_id)
8
+ * - one of each per transcript
9
+ */
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ exports.buildSessionStart = buildSessionStart;
12
+ exports.buildSessionEnd = buildSessionEnd;
13
+ const ids_1 = require("../ids");
14
+ /**
15
+ * Build a `session_start` event from import metadata. `client` is the
16
+ * upstream agent that produced the transcript ("claude", "cursor", …) —
17
+ * matches live mode where session-start hooks set the same field. Caller
18
+ * is the per-client runner (`claude/runner.ts`, `cursor/runner.ts`), so
19
+ * this stays generic.
20
+ */
21
+ function buildSessionStart(target, client) {
22
+ return {
23
+ id: (0, ids_1.deriveSessionStartEventId)(target.sessionId),
24
+ type: "session_start",
25
+ timestamp: target.sessionStartMs,
26
+ session_id: target.sessionId,
27
+ project_name: target.projectName,
28
+ client,
29
+ source: "import",
30
+ };
31
+ }
32
+ /**
33
+ * Build a `session_end` event. `endTimestampMs` and `endReason` come from
34
+ * the transcript tail (last-line timestamp and summary line if present).
35
+ */
36
+ function buildSessionEnd(target, endTimestampMs, endReason) {
37
+ return {
38
+ id: (0, ids_1.deriveSessionEndEventId)(target.sessionId),
39
+ type: "session_end",
40
+ timestamp: endTimestampMs,
41
+ session_id: target.sessionId,
42
+ project_name: target.projectName,
43
+ reason: endReason,
44
+ duration: endTimestampMs - target.sessionStartMs,
45
+ };
46
+ }
47
+ //# sourceMappingURL=session.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session.js","sourceRoot":"","sources":["../../../src/import/events/session.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;AAaH,8CAUC;AAMD,0CAcC;AAvCD,gCAA4E;AAE5E;;;;;;GAMG;AACH,SAAgB,iBAAiB,CAAC,MAAoB,EAAE,MAAc;IAClE,OAAO;QACH,EAAE,EAAE,IAAA,+BAAyB,EAAC,MAAM,CAAC,SAAS,CAAC;QAC/C,IAAI,EAAE,eAAe;QACrB,SAAS,EAAE,MAAM,CAAC,cAAc;QAChC,UAAU,EAAE,MAAM,CAAC,SAAS;QAC5B,YAAY,EAAE,MAAM,CAAC,WAAW;QAChC,MAAM;QACN,MAAM,EAAE,QAAQ;KACnB,CAAC;AACN,CAAC;AAED;;;GAGG;AACH,SAAgB,eAAe,CAC3B,MAAoB,EACpB,cAAsB,EACtB,SAAiB;IAEjB,OAAO;QACH,EAAE,EAAE,IAAA,6BAAuB,EAAC,MAAM,CAAC,SAAS,CAAC;QAC7C,IAAI,EAAE,aAAa;QACnB,SAAS,EAAE,cAAc;QACzB,UAAU,EAAE,MAAM,CAAC,SAAS;QAC5B,YAAY,EAAE,MAAM,CAAC,WAAW;QAChC,MAAM,EAAE,SAAS;QACjB,QAAQ,EAAE,cAAc,GAAG,MAAM,CAAC,cAAc;KACnD,CAAC;AACN,CAAC"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * IronBee CLI — Import Module Time-Range Filter
3
+ *
4
+ * Two-pass filter:
5
+ * 1. mtime — drop transcripts whose `mtimeMs` falls outside [from, to].
6
+ * Already filtered at discovery time (statSync), so no extra I/O here.
7
+ * 2. session-start timestamp — drop transcripts whose first-line
8
+ * `timestamp` is outside the window. Already on the target (read at
9
+ * discovery time), so this step is also pure logic.
10
+ *
11
+ * Also exports `parseSinceDuration` for `--since 30d` / `2w` / `6m` style
12
+ * inputs, and `parseIsoDate` for `--from` / `--to`.
13
+ *
14
+ *
15
+ */
16
+ import { ImportTarget, ImportTimeRange } from "./types";
17
+ /**
18
+ * Apply both passes. Targets whose mtime AND first-line timestamp both fall
19
+ * inside the window survive. Empty range (`null`) → no filter, all pass.
20
+ *
21
+ * The mtime check is the **outer** gate (we'd discover sessions whose mtime
22
+ * is in-range but whose start is out-of-range — those still pass mtime, fail
23
+ * start-timestamp). The start-timestamp check is the **inner** gate that
24
+ * makes `--from / --to` strict.
25
+ */
26
+ export declare function applyTimeRange(targets: ImportTarget[], range: ImportTimeRange | null): ImportTarget[];
27
+ /**
28
+ * Parse `--since 30d` / `2w` / `6m` / `12h` into ms. Returns `null` when the
29
+ * input is malformed or zero/negative.
30
+ *
31
+ * Suffixes: `h` (hour), `d` (day), `w` (7-day week), `m` (30-day month).
32
+ */
33
+ export declare function parseSinceDuration(input: string): number | null;
34
+ /**
35
+ * Parse an ISO date string (`2025-04-15` or `2025-04-15T12:00:00Z`).
36
+ * Returns `null` when unparseable. Date-only inputs resolve to local
37
+ * midnight (matches the analytics `messages_by_date` convention).
38
+ */
39
+ export declare function parseIsoDate(input: string): number | null;
40
+ /** Build an `ImportTimeRange` from `--since` / `--from / --to` flags. */
41
+ export declare function buildTimeRange(opts: {
42
+ sinceMs?: number;
43
+ fromMs?: number;
44
+ toMs?: number;
45
+ nowMs: number;
46
+ }): ImportTimeRange | null;
47
+ //# sourceMappingURL=filter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filter.d.ts","sourceRoot":"","sources":["../../src/import/filter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAExD;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,eAAe,GAAG,IAAI,GAAG,YAAY,EAAE,CAarG;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAmB/D;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAGzD;AAED,yEAAyE;AACzE,wBAAgB,cAAc,CAAC,IAAI,EAAE;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACjB,GAAG,eAAe,GAAG,IAAI,CAQzB"}
@@ -0,0 +1,90 @@
1
+ "use strict";
2
+ /**
3
+ * IronBee CLI — Import Module Time-Range Filter
4
+ *
5
+ * Two-pass filter:
6
+ * 1. mtime — drop transcripts whose `mtimeMs` falls outside [from, to].
7
+ * Already filtered at discovery time (statSync), so no extra I/O here.
8
+ * 2. session-start timestamp — drop transcripts whose first-line
9
+ * `timestamp` is outside the window. Already on the target (read at
10
+ * discovery time), so this step is also pure logic.
11
+ *
12
+ * Also exports `parseSinceDuration` for `--since 30d` / `2w` / `6m` style
13
+ * inputs, and `parseIsoDate` for `--from` / `--to`.
14
+ *
15
+ *
16
+ */
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ exports.applyTimeRange = applyTimeRange;
19
+ exports.parseSinceDuration = parseSinceDuration;
20
+ exports.parseIsoDate = parseIsoDate;
21
+ exports.buildTimeRange = buildTimeRange;
22
+ /**
23
+ * Apply both passes. Targets whose mtime AND first-line timestamp both fall
24
+ * inside the window survive. Empty range (`null`) → no filter, all pass.
25
+ *
26
+ * The mtime check is the **outer** gate (we'd discover sessions whose mtime
27
+ * is in-range but whose start is out-of-range — those still pass mtime, fail
28
+ * start-timestamp). The start-timestamp check is the **inner** gate that
29
+ * makes `--from / --to` strict.
30
+ */
31
+ function applyTimeRange(targets, range) {
32
+ if (range === null) {
33
+ return targets;
34
+ }
35
+ return targets.filter((t) => {
36
+ if (t.mtimeMs < range.fromMs || t.mtimeMs > range.toMs) {
37
+ return false;
38
+ }
39
+ if (t.sessionStartMs < range.fromMs || t.sessionStartMs > range.toMs) {
40
+ return false;
41
+ }
42
+ return true;
43
+ });
44
+ }
45
+ /**
46
+ * Parse `--since 30d` / `2w` / `6m` / `12h` into ms. Returns `null` when the
47
+ * input is malformed or zero/negative.
48
+ *
49
+ * Suffixes: `h` (hour), `d` (day), `w` (7-day week), `m` (30-day month).
50
+ */
51
+ function parseSinceDuration(input) {
52
+ const m = input.match(/^(\d+)([hdwm])$/);
53
+ if (m === null) {
54
+ return null;
55
+ }
56
+ const value = parseInt(m[1], 10);
57
+ if (!Number.isFinite(value) || value <= 0) {
58
+ return null;
59
+ }
60
+ const unit = m[2];
61
+ const HOUR_MS = 60 * 60 * 1000;
62
+ const DAY_MS = 24 * HOUR_MS;
63
+ switch (unit) {
64
+ case "h": return value * HOUR_MS;
65
+ case "d": return value * DAY_MS;
66
+ case "w": return value * 7 * DAY_MS;
67
+ case "m": return value * 30 * DAY_MS;
68
+ default: return null;
69
+ }
70
+ }
71
+ /**
72
+ * Parse an ISO date string (`2025-04-15` or `2025-04-15T12:00:00Z`).
73
+ * Returns `null` when unparseable. Date-only inputs resolve to local
74
+ * midnight (matches the analytics `messages_by_date` convention).
75
+ */
76
+ function parseIsoDate(input) {
77
+ const ts = Date.parse(input);
78
+ return Number.isFinite(ts) ? ts : null;
79
+ }
80
+ /** Build an `ImportTimeRange` from `--since` / `--from / --to` flags. */
81
+ function buildTimeRange(opts) {
82
+ if (opts.sinceMs !== undefined) {
83
+ return { fromMs: opts.nowMs - opts.sinceMs, toMs: opts.nowMs };
84
+ }
85
+ if (opts.fromMs !== undefined) {
86
+ return { fromMs: opts.fromMs, toMs: opts.toMs ?? opts.nowMs };
87
+ }
88
+ return null;
89
+ }
90
+ //# sourceMappingURL=filter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filter.js","sourceRoot":"","sources":["../../src/import/filter.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;AAaH,wCAaC;AAQD,gDAmBC;AAOD,oCAGC;AAGD,wCAaC;AA3ED;;;;;;;;GAQG;AACH,SAAgB,cAAc,CAAC,OAAuB,EAAE,KAA6B;IACjF,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QACjB,OAAO,OAAO,CAAC;IACnB,CAAC;IACD,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,CAAe,EAAW,EAAE;QAC/C,IAAI,CAAC,CAAC,OAAO,GAAG,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;YACrD,OAAO,KAAK,CAAC;QACjB,CAAC;QACD,IAAI,CAAC,CAAC,cAAc,GAAG,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC,cAAc,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;YACnE,OAAO,KAAK,CAAC;QACjB,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC,CAAC,CAAC;AACP,CAAC;AAED;;;;;GAKG;AACH,SAAgB,kBAAkB,CAAC,KAAa;IAC5C,MAAM,CAAC,GAA4B,KAAK,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;IAClE,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;QACb,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,MAAM,KAAK,GAAW,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACzC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;QACxC,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,MAAM,IAAI,GAAW,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1B,MAAM,OAAO,GAAW,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;IACvC,MAAM,MAAM,GAAW,EAAE,GAAG,OAAO,CAAC;IACpC,QAAQ,IAAI,EAAE,CAAC;QACX,KAAK,GAAG,CAAC,CAAC,OAAO,KAAK,GAAG,OAAO,CAAC;QACjC,KAAK,GAAG,CAAC,CAAC,OAAO,KAAK,GAAG,MAAM,CAAC;QAChC,KAAK,GAAG,CAAC,CAAC,OAAO,KAAK,GAAG,CAAC,GAAG,MAAM,CAAC;QACpC,KAAK,GAAG,CAAC,CAAC,OAAO,KAAK,GAAG,EAAE,GAAG,MAAM,CAAC;QACrC,OAAO,CAAC,CAAC,OAAO,IAAI,CAAC;IACzB,CAAC;AACL,CAAC;AAED;;;;GAIG;AACH,SAAgB,YAAY,CAAC,KAAa;IACtC,MAAM,EAAE,GAAW,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACrC,OAAO,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AAC3C,CAAC;AAED,yEAAyE;AACzE,SAAgB,cAAc,CAAC,IAK9B;IACG,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QAC7B,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;IACnE,CAAC;IACD,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAC5B,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;IAClE,CAAC;IACD,OAAO,IAAI,CAAC;AAChB,CAAC"}
@@ -0,0 +1,56 @@
1
+ /**
2
+ * IronBee CLI — Import Module Deterministic UUID Derivers
3
+ *
4
+ * Every event emitted by `ironbee import` carries a UUID-shaped `id` derived
5
+ * deterministically from the transcript content (session_id + per-event
6
+ * positional key). Re-running import on the same transcript produces the
7
+ * same ids, so collector-side dedup on `(session_id, id)` collapses
8
+ * duplicates without coordination.
9
+ *
10
+ * Analytics events have their own deriver in `src/analytics/projection.ts`
11
+ * (`deriveSessionAnalyticsEventId`, `deriveTurnEventId`, `deriveStepEventId`).
12
+ * This module covers the non-analytics import-emitted events: session,
13
+ * activity, tool_call, file_change.
14
+ *
15
+ * All formulas: `formatHexAsUuid(sha256("<event_type>:" + session_id + ":"
16
+ * + <positional_key>))` — positional key is `turn_index` for activity ids
17
+ * and `tool_use.id` for tool_call / file_change. Same `(transcript content,
18
+ * session_id)` always produces the same UUID.
19
+ */
20
+ export declare function deriveSessionStartEventId(sessionId: string): string;
21
+ export declare function deriveSessionEndEventId(sessionId: string): string;
22
+ /**
23
+ * Activity (turn) ids. `turnIndex` is the analytics-side `turn_index` (1-based,
24
+ * positional in the transcript). Activity is one-per-user-turn: host_inject
25
+ * continuation turns are filtered out before we ever derive an id, so there
26
+ * are no gaps from the import emitter's perspective.
27
+ */
28
+ export declare function deriveActivityStartEventId(sessionId: string, turnIndex: number): string;
29
+ export declare function deriveActivityEndEventId(sessionId: string, turnIndex: number): string;
30
+ /**
31
+ /**
32
+ * Activity-id (the `activity_id` foreign key carried by child events).
33
+ *
34
+ * Format: UUID-shaped (8-4-4-4-12) — matches what live mode emits (live
35
+ * uses `randomUUID()` at the SessionStart hook, baked into `state.json`,
36
+ * then read by every PreToolUse). Backends that store `activity_id` as a
37
+ * UUID column accept both live and import values uniformly.
38
+ *
39
+ * Determinism: same `(session_id, turn_index, start_time)` tuple always
40
+ * produces the same UUID, so re-imports collide cleanly. Independent of
41
+ * `session_turn_analytics.turn_id` (which keeps its 16-char hex form per
42
+ * analytics spec) — they're separate identifiers for related-but-distinct
43
+ * concepts (hook-runtime activity vs. analytics-projection turn).
44
+ */
45
+ export declare function deriveActivityId(sessionId: string, turnIndex: number, startTime: string): string;
46
+ /**
47
+ * Default tool_call event id when `_metadata.toolCallId` is absent (transcript
48
+ * predates the `_metadata.toolCallId` convention). Falls back to a
49
+ * deterministic derivation from the host's `tool_use.id`. For transcripts
50
+ * that DO carry `_metadata.toolCallId`, the import emitter uses that
51
+ * UUID verbatim instead — collapses cleanly with the live MCP-shipped
52
+ * event id on the collector.
53
+ */
54
+ export declare function deriveToolCallEventIdFromToolUseId(sessionId: string, toolUseId: string): string;
55
+ export declare function deriveFileChangeEventId(sessionId: string, toolUseId: string): string;
56
+ //# sourceMappingURL=ids.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ids.d.ts","sourceRoot":"","sources":["../../src/import/ids.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAWH,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAEnE;AAED,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAEjE;AAED;;;;;GAKG;AACH,wBAAgB,0BAA0B,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAEvF;AAED,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAErF;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAGhG;AAED;;;;;;;GAOG;AACH,wBAAgB,kCAAkC,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAE/F;AAED,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAEpF"}
@@ -0,0 +1,87 @@
1
+ "use strict";
2
+ /**
3
+ * IronBee CLI — Import Module Deterministic UUID Derivers
4
+ *
5
+ * Every event emitted by `ironbee import` carries a UUID-shaped `id` derived
6
+ * deterministically from the transcript content (session_id + per-event
7
+ * positional key). Re-running import on the same transcript produces the
8
+ * same ids, so collector-side dedup on `(session_id, id)` collapses
9
+ * duplicates without coordination.
10
+ *
11
+ * Analytics events have their own deriver in `src/analytics/projection.ts`
12
+ * (`deriveSessionAnalyticsEventId`, `deriveTurnEventId`, `deriveStepEventId`).
13
+ * This module covers the non-analytics import-emitted events: session,
14
+ * activity, tool_call, file_change.
15
+ *
16
+ * All formulas: `formatHexAsUuid(sha256("<event_type>:" + session_id + ":"
17
+ * + <positional_key>))` — positional key is `turn_index` for activity ids
18
+ * and `tool_use.id` for tool_call / file_change. Same `(transcript content,
19
+ * session_id)` always produces the same UUID.
20
+ */
21
+ Object.defineProperty(exports, "__esModule", { value: true });
22
+ exports.deriveSessionStartEventId = deriveSessionStartEventId;
23
+ exports.deriveSessionEndEventId = deriveSessionEndEventId;
24
+ exports.deriveActivityStartEventId = deriveActivityStartEventId;
25
+ exports.deriveActivityEndEventId = deriveActivityEndEventId;
26
+ exports.deriveActivityId = deriveActivityId;
27
+ exports.deriveToolCallEventIdFromToolUseId = deriveToolCallEventIdFromToolUseId;
28
+ exports.deriveFileChangeEventId = deriveFileChangeEventId;
29
+ const crypto_1 = require("crypto");
30
+ const projection_1 = require("../analytics/projection");
31
+ /** SHA-256 the input and format the first 32 hex chars as a UUID. */
32
+ function sha256Uuid(input) {
33
+ const hex32 = (0, crypto_1.createHash)("sha256").update(input).digest("hex").slice(0, 32);
34
+ return (0, projection_1.formatHexAsUuid)(hex32);
35
+ }
36
+ function deriveSessionStartEventId(sessionId) {
37
+ return sha256Uuid(`session_start:${sessionId}`);
38
+ }
39
+ function deriveSessionEndEventId(sessionId) {
40
+ return sha256Uuid(`session_end:${sessionId}`);
41
+ }
42
+ /**
43
+ * Activity (turn) ids. `turnIndex` is the analytics-side `turn_index` (1-based,
44
+ * positional in the transcript). Activity is one-per-user-turn: host_inject
45
+ * continuation turns are filtered out before we ever derive an id, so there
46
+ * are no gaps from the import emitter's perspective.
47
+ */
48
+ function deriveActivityStartEventId(sessionId, turnIndex) {
49
+ return sha256Uuid(`activity_start:${sessionId}:${turnIndex}`);
50
+ }
51
+ function deriveActivityEndEventId(sessionId, turnIndex) {
52
+ return sha256Uuid(`activity_end:${sessionId}:${turnIndex}`);
53
+ }
54
+ /**
55
+ /**
56
+ * Activity-id (the `activity_id` foreign key carried by child events).
57
+ *
58
+ * Format: UUID-shaped (8-4-4-4-12) — matches what live mode emits (live
59
+ * uses `randomUUID()` at the SessionStart hook, baked into `state.json`,
60
+ * then read by every PreToolUse). Backends that store `activity_id` as a
61
+ * UUID column accept both live and import values uniformly.
62
+ *
63
+ * Determinism: same `(session_id, turn_index, start_time)` tuple always
64
+ * produces the same UUID, so re-imports collide cleanly. Independent of
65
+ * `session_turn_analytics.turn_id` (which keeps its 16-char hex form per
66
+ * analytics spec) — they're separate identifiers for related-but-distinct
67
+ * concepts (hook-runtime activity vs. analytics-projection turn).
68
+ */
69
+ function deriveActivityId(sessionId, turnIndex, startTime) {
70
+ const hex32 = (0, crypto_1.createHash)("sha256").update(`${sessionId}|${turnIndex}|${startTime}`).digest("hex").slice(0, 32);
71
+ return (0, projection_1.formatHexAsUuid)(hex32);
72
+ }
73
+ /**
74
+ * Default tool_call event id when `_metadata.toolCallId` is absent (transcript
75
+ * predates the `_metadata.toolCallId` convention). Falls back to a
76
+ * deterministic derivation from the host's `tool_use.id`. For transcripts
77
+ * that DO carry `_metadata.toolCallId`, the import emitter uses that
78
+ * UUID verbatim instead — collapses cleanly with the live MCP-shipped
79
+ * event id on the collector.
80
+ */
81
+ function deriveToolCallEventIdFromToolUseId(sessionId, toolUseId) {
82
+ return sha256Uuid(`tool_call:${sessionId}:${toolUseId}`);
83
+ }
84
+ function deriveFileChangeEventId(sessionId, toolUseId) {
85
+ return sha256Uuid(`file_change:${sessionId}:${toolUseId}`);
86
+ }
87
+ //# sourceMappingURL=ids.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ids.js","sourceRoot":"","sources":["../../src/import/ids.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;GAkBG;;AAWH,8DAEC;AAED,0DAEC;AAQD,gEAEC;AAED,4DAEC;AAiBD,4CAGC;AAUD,gFAEC;AAED,0DAEC;AAjED,mCAAoC;AACpC,wDAA0D;AAE1D,qEAAqE;AACrE,SAAS,UAAU,CAAC,KAAa;IAC7B,MAAM,KAAK,GAAW,IAAA,mBAAU,EAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACpF,OAAO,IAAA,4BAAe,EAAC,KAAK,CAAC,CAAC;AAClC,CAAC;AAED,SAAgB,yBAAyB,CAAC,SAAiB;IACvD,OAAO,UAAU,CAAC,iBAAiB,SAAS,EAAE,CAAC,CAAC;AACpD,CAAC;AAED,SAAgB,uBAAuB,CAAC,SAAiB;IACrD,OAAO,UAAU,CAAC,eAAe,SAAS,EAAE,CAAC,CAAC;AAClD,CAAC;AAED;;;;;GAKG;AACH,SAAgB,0BAA0B,CAAC,SAAiB,EAAE,SAAiB;IAC3E,OAAO,UAAU,CAAC,kBAAkB,SAAS,IAAI,SAAS,EAAE,CAAC,CAAC;AAClE,CAAC;AAED,SAAgB,wBAAwB,CAAC,SAAiB,EAAE,SAAiB;IACzE,OAAO,UAAU,CAAC,gBAAgB,SAAS,IAAI,SAAS,EAAE,CAAC,CAAC;AAChE,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,SAAgB,gBAAgB,CAAC,SAAiB,EAAE,SAAiB,EAAE,SAAiB;IACpF,MAAM,KAAK,GAAW,IAAA,mBAAU,EAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,GAAG,SAAS,IAAI,SAAS,IAAI,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACvH,OAAO,IAAA,4BAAe,EAAC,KAAK,CAAC,CAAC;AAClC,CAAC;AAED;;;;;;;GAOG;AACH,SAAgB,kCAAkC,CAAC,SAAiB,EAAE,SAAiB;IACnF,OAAO,UAAU,CAAC,aAAa,SAAS,IAAI,SAAS,EAAE,CAAC,CAAC;AAC7D,CAAC;AAED,SAAgB,uBAAuB,CAAC,SAAiB,EAAE,SAAiB;IACxE,OAAO,UAAU,CAAC,eAAe,SAAS,IAAI,SAAS,EAAE,CAAC,CAAC;AAC/D,CAAC"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * IronBee CLI — Import Module Public Barrel
3
+ *
4
+ * Exposes ONLY the client-agnostic API. Client-specific modules
5
+ * (`claude/**`, future `cursor/**`) are NOT re-exported here —
6
+ * `commands/import.ts` and any other consumer must go through the
7
+ * generic dispatcher in `pipeline.ts` so adding a new client never
8
+ * forces a CLI change.
9
+ *
10
+ * Public surface:
11
+ * - findTranscripts(scope) — discovery (dispatched per client)
12
+ * - estimateImport(opts) — dry-run estimator (dispatched per client)
13
+ * - importSession(opts) — per-session driver (dispatched per client)
14
+ * - applyTimeRange / parseSinceDuration / parseIsoDate / buildTimeRange — generic
15
+ * - shouldSkip — generic skip rule
16
+ * - writeImportMarker / readImportMarker — generic marker file R/W
17
+ * - postEvents — generic collector POST helper
18
+ * - ProgressReporter — generic progress UI
19
+ * - All `Import*` types
20
+ */
21
+ export { findTranscripts, estimateImport, importSession, ImportSessionOpts, EstimateOpts } from "./pipeline";
22
+ export { runConcurrentPool, ConcurrentPoolOpts } from "./concurrent-pool";
23
+ export { applyTimeRange, parseSinceDuration, parseIsoDate, buildTimeRange } from "./filter";
24
+ export { shouldSkip } from "./skip";
25
+ export { writeImportMarker, readImportMarker, MARKER_SCHEMA_VERSION, markerPath } from "./marker";
26
+ export { postEvents, EmitterOpts } from "./emitter";
27
+ export { ProgressReporter } from "./progress";
28
+ export { ImportEventCounts, ImportMarker, ImportOptions, ImportProjectSummary, ImportResult, ImportScope, ImportSummary, ImportTarget, ImportTimeRange, DerivedEvent, emptyEventCounts, } from "./types";
29
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/import/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAGH,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,aAAa,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG7G,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAG1E,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC5F,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AACpC,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAClG,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAG9C,OAAO,EACH,iBAAiB,EACjB,YAAY,EACZ,aAAa,EACb,oBAAoB,EACpB,YAAY,EACZ,WAAW,EACX,aAAa,EACb,YAAY,EACZ,eAAe,EACf,YAAY,EACZ,gBAAgB,GACnB,MAAM,SAAS,CAAC"}