@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,52 @@
1
+ "use strict";
2
+ /**
3
+ * IronBee CLI — Import Module Public Barrel
4
+ *
5
+ * Exposes ONLY the client-agnostic API. Client-specific modules
6
+ * (`claude/**`, future `cursor/**`) are NOT re-exported here —
7
+ * `commands/import.ts` and any other consumer must go through the
8
+ * generic dispatcher in `pipeline.ts` so adding a new client never
9
+ * forces a CLI change.
10
+ *
11
+ * Public surface:
12
+ * - findTranscripts(scope) — discovery (dispatched per client)
13
+ * - estimateImport(opts) — dry-run estimator (dispatched per client)
14
+ * - importSession(opts) — per-session driver (dispatched per client)
15
+ * - applyTimeRange / parseSinceDuration / parseIsoDate / buildTimeRange — generic
16
+ * - shouldSkip — generic skip rule
17
+ * - writeImportMarker / readImportMarker — generic marker file R/W
18
+ * - postEvents — generic collector POST helper
19
+ * - ProgressReporter — generic progress UI
20
+ * - All `Import*` types
21
+ */
22
+ Object.defineProperty(exports, "__esModule", { value: true });
23
+ exports.emptyEventCounts = exports.ProgressReporter = exports.postEvents = exports.markerPath = exports.MARKER_SCHEMA_VERSION = exports.readImportMarker = exports.writeImportMarker = exports.shouldSkip = exports.buildTimeRange = exports.parseIsoDate = exports.parseSinceDuration = exports.applyTimeRange = exports.runConcurrentPool = exports.importSession = exports.estimateImport = exports.findTranscripts = void 0;
24
+ // Generic dispatcher (the one entry point that knows about clients).
25
+ var pipeline_1 = require("./pipeline");
26
+ Object.defineProperty(exports, "findTranscripts", { enumerable: true, get: function () { return pipeline_1.findTranscripts; } });
27
+ Object.defineProperty(exports, "estimateImport", { enumerable: true, get: function () { return pipeline_1.estimateImport; } });
28
+ Object.defineProperty(exports, "importSession", { enumerable: true, get: function () { return pipeline_1.importSession; } });
29
+ // Generic bounded-concurrency pool (used by the CLI command, exposed for testability).
30
+ var concurrent_pool_1 = require("./concurrent-pool");
31
+ Object.defineProperty(exports, "runConcurrentPool", { enumerable: true, get: function () { return concurrent_pool_1.runConcurrentPool; } });
32
+ // Generic helpers — no client-specific logic.
33
+ var filter_1 = require("./filter");
34
+ Object.defineProperty(exports, "applyTimeRange", { enumerable: true, get: function () { return filter_1.applyTimeRange; } });
35
+ Object.defineProperty(exports, "parseSinceDuration", { enumerable: true, get: function () { return filter_1.parseSinceDuration; } });
36
+ Object.defineProperty(exports, "parseIsoDate", { enumerable: true, get: function () { return filter_1.parseIsoDate; } });
37
+ Object.defineProperty(exports, "buildTimeRange", { enumerable: true, get: function () { return filter_1.buildTimeRange; } });
38
+ var skip_1 = require("./skip");
39
+ Object.defineProperty(exports, "shouldSkip", { enumerable: true, get: function () { return skip_1.shouldSkip; } });
40
+ var marker_1 = require("./marker");
41
+ Object.defineProperty(exports, "writeImportMarker", { enumerable: true, get: function () { return marker_1.writeImportMarker; } });
42
+ Object.defineProperty(exports, "readImportMarker", { enumerable: true, get: function () { return marker_1.readImportMarker; } });
43
+ Object.defineProperty(exports, "MARKER_SCHEMA_VERSION", { enumerable: true, get: function () { return marker_1.MARKER_SCHEMA_VERSION; } });
44
+ Object.defineProperty(exports, "markerPath", { enumerable: true, get: function () { return marker_1.markerPath; } });
45
+ var emitter_1 = require("./emitter");
46
+ Object.defineProperty(exports, "postEvents", { enumerable: true, get: function () { return emitter_1.postEvents; } });
47
+ var progress_1 = require("./progress");
48
+ Object.defineProperty(exports, "ProgressReporter", { enumerable: true, get: function () { return progress_1.ProgressReporter; } });
49
+ // Types.
50
+ var types_1 = require("./types");
51
+ Object.defineProperty(exports, "emptyEventCounts", { enumerable: true, get: function () { return types_1.emptyEventCounts; } });
52
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/import/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;GAmBG;;;AAEH,qEAAqE;AACrE,uCAA6G;AAApG,2GAAA,eAAe,OAAA;AAAE,0GAAA,cAAc,OAAA;AAAE,yGAAA,aAAa,OAAA;AAEvD,uFAAuF;AACvF,qDAA0E;AAAjE,oHAAA,iBAAiB,OAAA;AAE1B,8CAA8C;AAC9C,mCAA4F;AAAnF,wGAAA,cAAc,OAAA;AAAE,4GAAA,kBAAkB,OAAA;AAAE,sGAAA,YAAY,OAAA;AAAE,wGAAA,cAAc,OAAA;AACzE,+BAAoC;AAA3B,kGAAA,UAAU,OAAA;AACnB,mCAAkG;AAAzF,2GAAA,iBAAiB,OAAA;AAAE,0GAAA,gBAAgB,OAAA;AAAE,+GAAA,qBAAqB,OAAA;AAAE,oGAAA,UAAU,OAAA;AAC/E,qCAAoD;AAA3C,qGAAA,UAAU,OAAA;AACnB,uCAA8C;AAArC,4GAAA,gBAAgB,OAAA;AAEzB,SAAS;AACT,iCAYiB;AADb,yGAAA,gBAAgB,OAAA"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * IronBee CLI — Import Module Marker File
3
+ *
4
+ * Written to `<projectDir>/.ironbee/sessions/<session_id>/imported.json`
5
+ * after every event for the session has been POSTed successfully. Together
6
+ * with the skip rule, the marker is what makes import idempotent across
7
+ * re-runs ().
8
+ *
9
+ * If `projectDir` does not exist on disk (synthetic projectDir from
10
+ * undecoded `--all-projects` folder), the marker write is a no-op with a
11
+ * debug log — re-runs would re-emit, accepted trade-off.
12
+ */
13
+ import { ImportEventCounts, ImportMarker } from "./types";
14
+ export declare const MARKER_SCHEMA_VERSION: string;
15
+ export declare function markerPath(projectDir: string, sessionId: string): string;
16
+ /** Persist the marker. Returns `false` when the parent project doesn't exist. */
17
+ export declare function writeImportMarker(projectDir: string, sessionId: string, transcriptPath: string, transcriptOffset: number, eventsSent: ImportEventCounts): boolean;
18
+ /** Read an existing marker. Returns `null` when missing or unreadable. */
19
+ export declare function readImportMarker(projectDir: string, sessionId: string): ImportMarker | null;
20
+ //# sourceMappingURL=marker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"marker.d.ts","sourceRoot":"","sources":["../../src/import/marker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAMH,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE1D,eAAO,MAAM,qBAAqB,EAAE,MAAc,CAAC;AAEnD,wBAAgB,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAExE;AAED,iFAAiF;AACjF,wBAAgB,iBAAiB,CAC7B,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,cAAc,EAAE,MAAM,EACtB,gBAAgB,EAAE,MAAM,EACxB,UAAU,EAAE,iBAAiB,GAC9B,OAAO,CA0BT;AAED,0EAA0E;AAC1E,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CAY3F"}
@@ -0,0 +1,71 @@
1
+ "use strict";
2
+ /**
3
+ * IronBee CLI — Import Module Marker File
4
+ *
5
+ * Written to `<projectDir>/.ironbee/sessions/<session_id>/imported.json`
6
+ * after every event for the session has been POSTed successfully. Together
7
+ * with the skip rule, the marker is what makes import idempotent across
8
+ * re-runs ().
9
+ *
10
+ * If `projectDir` does not exist on disk (synthetic projectDir from
11
+ * undecoded `--all-projects` folder), the marker write is a no-op with a
12
+ * debug log — re-runs would re-emit, accepted trade-off.
13
+ */
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.MARKER_SCHEMA_VERSION = void 0;
16
+ exports.markerPath = markerPath;
17
+ exports.writeImportMarker = writeImportMarker;
18
+ exports.readImportMarker = readImportMarker;
19
+ const fs_1 = require("fs");
20
+ const path_1 = require("path");
21
+ const logger_1 = require("../lib/logger");
22
+ const gitignore_1 = require("../lib/gitignore");
23
+ exports.MARKER_SCHEMA_VERSION = "1.0";
24
+ function markerPath(projectDir, sessionId) {
25
+ return (0, path_1.join)(projectDir, ".ironbee", "sessions", sessionId, "imported.json");
26
+ }
27
+ /** Persist the marker. Returns `false` when the parent project doesn't exist. */
28
+ function writeImportMarker(projectDir, sessionId, transcriptPath, transcriptOffset, eventsSent) {
29
+ if (!(0, fs_1.existsSync)(projectDir)) {
30
+ logger_1.logger.debug(`import marker: projectDir ${projectDir} does not exist — skipping marker write`);
31
+ return false;
32
+ }
33
+ // Idempotently ensure `.ironbee/sessions/` is gitignored. Operators
34
+ // who skip `ironbee install` (import-only flows) wouldn't otherwise
35
+ // get the gitignore entry, and the marker file we're about to write
36
+ // would surface in `git status`. No-op when already present.
37
+ (0, gitignore_1.ensureIronBeeGitignored)(projectDir);
38
+ const target = markerPath(projectDir, sessionId);
39
+ const marker = {
40
+ imported_at: new Date().toISOString(),
41
+ transcript_path: transcriptPath,
42
+ transcript_offset: transcriptOffset,
43
+ events_sent: eventsSent,
44
+ schema_version: exports.MARKER_SCHEMA_VERSION,
45
+ };
46
+ try {
47
+ (0, fs_1.mkdirSync)((0, path_1.dirname)(target), { recursive: true });
48
+ (0, fs_1.writeFileSync)(target, JSON.stringify(marker, null, 2) + "\n");
49
+ return true;
50
+ }
51
+ catch (e) {
52
+ logger_1.logger.debug(`import marker: write ${target} failed: ${e instanceof Error ? e.message : e}`);
53
+ return false;
54
+ }
55
+ }
56
+ /** Read an existing marker. Returns `null` when missing or unreadable. */
57
+ function readImportMarker(projectDir, sessionId) {
58
+ const target = markerPath(projectDir, sessionId);
59
+ if (!(0, fs_1.existsSync)(target)) {
60
+ return null;
61
+ }
62
+ try {
63
+ const text = (0, fs_1.readFileSync)(target, "utf-8");
64
+ return JSON.parse(text);
65
+ }
66
+ catch (e) {
67
+ logger_1.logger.debug(`import marker: read ${target} failed: ${e instanceof Error ? e.message : e}`);
68
+ return null;
69
+ }
70
+ }
71
+ //# sourceMappingURL=marker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"marker.js","sourceRoot":"","sources":["../../src/import/marker.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;GAWG;;;AAUH,gCAEC;AAGD,8CAgCC;AAGD,4CAYC;AA5DD,2BAAwE;AACxE,+BAAqC;AACrC,0CAAuC;AACvC,gDAA2D;AAG9C,QAAA,qBAAqB,GAAW,KAAK,CAAC;AAEnD,SAAgB,UAAU,CAAC,UAAkB,EAAE,SAAiB;IAC5D,OAAO,IAAA,WAAI,EAAC,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,eAAe,CAAC,CAAC;AAChF,CAAC;AAED,iFAAiF;AACjF,SAAgB,iBAAiB,CAC7B,UAAkB,EAClB,SAAiB,EACjB,cAAsB,EACtB,gBAAwB,EACxB,UAA6B;IAE7B,IAAI,CAAC,IAAA,eAAU,EAAC,UAAU,CAAC,EAAE,CAAC;QAC1B,eAAM,CAAC,KAAK,CAAC,6BAA6B,UAAU,yCAAyC,CAAC,CAAC;QAC/F,OAAO,KAAK,CAAC;IACjB,CAAC;IACD,oEAAoE;IACpE,oEAAoE;IACpE,oEAAoE;IACpE,6DAA6D;IAC7D,IAAA,mCAAuB,EAAC,UAAU,CAAC,CAAC;IACpC,MAAM,MAAM,GAAW,UAAU,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;IACzD,MAAM,MAAM,GAAiB;QACzB,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACrC,eAAe,EAAE,cAAc;QAC/B,iBAAiB,EAAE,gBAAgB;QACnC,WAAW,EAAE,UAAU;QACvB,cAAc,EAAE,6BAAqB;KACxC,CAAC;IACF,IAAI,CAAC;QACD,IAAA,cAAS,EAAC,IAAA,cAAO,EAAC,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAChD,IAAA,kBAAa,EAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;QAC9D,OAAO,IAAI,CAAC;IAChB,CAAC;IAAC,OAAO,CAAU,EAAE,CAAC;QAClB,eAAM,CAAC,KAAK,CAAC,wBAAwB,MAAM,YAAY,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC7F,OAAO,KAAK,CAAC;IACjB,CAAC;AACL,CAAC;AAED,0EAA0E;AAC1E,SAAgB,gBAAgB,CAAC,UAAkB,EAAE,SAAiB;IAClE,MAAM,MAAM,GAAW,UAAU,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;IACzD,IAAI,CAAC,IAAA,eAAU,EAAC,MAAM,CAAC,EAAE,CAAC;QACtB,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,IAAI,CAAC;QACD,MAAM,IAAI,GAAW,IAAA,iBAAY,EAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACnD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAiB,CAAC;IAC5C,CAAC;IAAC,OAAO,CAAU,EAAE,CAAC;QAClB,eAAM,CAAC,KAAK,CAAC,uBAAuB,MAAM,YAAY,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC5F,OAAO,IAAI,CAAC;IAChB,CAAC;AACL,CAAC"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * IronBee CLI — Import Module Generic Pipeline Dispatcher
3
+ *
4
+ * The single point that knows about client-specific runners. v1 only
5
+ * ships Claude; when Cursor support lands, every function here gains a
6
+ * branch on `scope.client` (or per-target discriminator) that dispatches
7
+ * to `cursor/{discovery,summary,runner}` — but no other file in the
8
+ * import tree changes. This is the contract that lets `commands/import.ts`
9
+ * stay client-agnostic.
10
+ *
11
+ * Isolation principle: Claude/Cursor logic stays separated
12
+ * by file. The CLI command depends on this dispatcher, NOT on any
13
+ * `claude/*` module directly.
14
+ */
15
+ import { ImportResult, ImportScope, ImportSummary, ImportTarget, ImportTimeRange } from "./types";
16
+ export interface ImportSessionOpts {
17
+ target: ImportTarget;
18
+ force: boolean;
19
+ /** Events per collector POST; null = use target/default. */
20
+ batchSize?: number | null;
21
+ }
22
+ export interface EstimateOpts {
23
+ targets: ImportTarget[];
24
+ timeRange: ImportTimeRange | null;
25
+ concurrency: number;
26
+ force: boolean;
27
+ }
28
+ /**
29
+ * Discover candidate transcripts on disk. v1 always routes through Claude;
30
+ * when Cursor lands, this branches on `scope` (or a separate `--client`
31
+ * flag) and dispatches to `cursor/discovery`.
32
+ */
33
+ export declare function findTranscripts(scope: ImportScope): ImportTarget[];
34
+ /**
35
+ * Pre-pass estimate for the dry-run summary. Same dispatch shape as
36
+ * `findTranscripts` — currently Claude-only.
37
+ */
38
+ export declare function estimateImport(opts: EstimateOpts): ImportSummary;
39
+ /** Per-session entry point. */
40
+ export declare function importSession(opts: ImportSessionOpts): Promise<ImportResult>;
41
+ //# sourceMappingURL=pipeline.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../../src/import/pipeline.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAKlG,MAAM,WAAW,iBAAiB;IAC9B,MAAM,EAAE,YAAY,CAAC;IACrB,KAAK,EAAE,OAAO,CAAC;IACf,4DAA4D;IAC5D,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAED,MAAM,WAAW,YAAY;IACzB,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,SAAS,EAAE,eAAe,GAAG,IAAI,CAAC;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,OAAO,CAAC;CAClB;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,WAAW,GAAG,YAAY,EAAE,CAElE;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,YAAY,GAAG,aAAa,CAOhE;AAED,+BAA+B;AAC/B,wBAAsB,aAAa,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,YAAY,CAAC,CAElF"}
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ /**
3
+ * IronBee CLI — Import Module Generic Pipeline Dispatcher
4
+ *
5
+ * The single point that knows about client-specific runners. v1 only
6
+ * ships Claude; when Cursor support lands, every function here gains a
7
+ * branch on `scope.client` (or per-target discriminator) that dispatches
8
+ * to `cursor/{discovery,summary,runner}` — but no other file in the
9
+ * import tree changes. This is the contract that lets `commands/import.ts`
10
+ * stay client-agnostic.
11
+ *
12
+ * Isolation principle: Claude/Cursor logic stays separated
13
+ * by file. The CLI command depends on this dispatcher, NOT on any
14
+ * `claude/*` module directly.
15
+ */
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.findTranscripts = findTranscripts;
18
+ exports.estimateImport = estimateImport;
19
+ exports.importSession = importSession;
20
+ const discovery_1 = require("./claude/discovery");
21
+ const summary_1 = require("./claude/summary");
22
+ const runner_1 = require("./claude/runner");
23
+ /**
24
+ * Discover candidate transcripts on disk. v1 always routes through Claude;
25
+ * when Cursor lands, this branches on `scope` (or a separate `--client`
26
+ * flag) and dispatches to `cursor/discovery`.
27
+ */
28
+ function findTranscripts(scope) {
29
+ return (0, discovery_1.findClaudeTranscripts)(scope);
30
+ }
31
+ /**
32
+ * Pre-pass estimate for the dry-run summary. Same dispatch shape as
33
+ * `findTranscripts` — currently Claude-only.
34
+ */
35
+ function estimateImport(opts) {
36
+ return (0, summary_1.estimateClaudeImport)({
37
+ targets: opts.targets,
38
+ timeRange: opts.timeRange,
39
+ concurrency: opts.concurrency,
40
+ force: opts.force,
41
+ });
42
+ }
43
+ /** Per-session entry point. */
44
+ async function importSession(opts) {
45
+ return (0, runner_1.importClaudeSession)({ target: opts.target, force: opts.force, batchSize: opts.batchSize ?? null });
46
+ }
47
+ //# sourceMappingURL=pipeline.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../../src/import/pipeline.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;GAaG;;AA0BH,0CAEC;AAMD,wCAOC;AAGD,sCAEC;AA3CD,kDAA6E;AAC7E,8CAAwD;AACxD,4CAAsD;AAgBtD;;;;GAIG;AACH,SAAgB,eAAe,CAAC,KAAkB;IAC9C,OAAO,IAAA,iCAAc,EAAC,KAAK,CAAC,CAAC;AACjC,CAAC;AAED;;;GAGG;AACH,SAAgB,cAAc,CAAC,IAAkB;IAC7C,OAAO,IAAA,8BAAoB,EAAC;QACxB,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,KAAK,EAAE,IAAI,CAAC,KAAK;KACpB,CAAC,CAAC;AACP,CAAC;AAED,+BAA+B;AACxB,KAAK,UAAU,aAAa,CAAC,IAAuB;IACvD,OAAO,IAAA,4BAAmB,EAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,IAAI,EAAE,CAAC,CAAC;AAC9G,CAAC"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * IronBee CLI — Import Module Progress Reporter
3
+ *
4
+ * Thin stdout-write helper for per-session progress lines + final summary.
5
+ * Stays out of `pipeline.ts` so the pipeline core is free of formatting
6
+ * concerns and easy to unit-test.
7
+ */
8
+ import { ImportResult } from "./types";
9
+ export declare class ProgressReporter {
10
+ private importedCount;
11
+ private skippedCount;
12
+ private failedCount;
13
+ private startedAtMs;
14
+ private totalSessions;
15
+ constructor(totalSessions: number);
16
+ onSessionStart(sessionId: string, idx: number): void;
17
+ onSessionComplete(result: ImportResult, idx: number): void;
18
+ finalSummary(): void;
19
+ }
20
+ //# sourceMappingURL=progress.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"progress.d.ts","sourceRoot":"","sources":["../../src/import/progress.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvC,qBAAa,gBAAgB;IACzB,OAAO,CAAC,aAAa,CAAa;IAClC,OAAO,CAAC,YAAY,CAAa;IACjC,OAAO,CAAC,WAAW,CAAa;IAChC,OAAO,CAAC,WAAW,CAAsB;IACzC,OAAO,CAAC,aAAa,CAAa;gBAEtB,aAAa,EAAE,MAAM;IAIjC,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI;IAKpD,iBAAiB,CAAC,MAAM,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI;IAgB1D,YAAY,IAAI,IAAI;CAavB"}
@@ -0,0 +1,69 @@
1
+ "use strict";
2
+ /**
3
+ * IronBee CLI — Import Module Progress Reporter
4
+ *
5
+ * Thin stdout-write helper for per-session progress lines + final summary.
6
+ * Stays out of `pipeline.ts` so the pipeline core is free of formatting
7
+ * concerns and easy to unit-test.
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.ProgressReporter = void 0;
11
+ const output_1 = require("../lib/output");
12
+ class ProgressReporter {
13
+ constructor(totalSessions) {
14
+ this.importedCount = 0;
15
+ this.skippedCount = 0;
16
+ this.failedCount = 0;
17
+ this.startedAtMs = Date.now();
18
+ this.totalSessions = 0;
19
+ this.totalSessions = totalSessions;
20
+ }
21
+ onSessionStart(sessionId, idx) {
22
+ const idxStr = `[${idx}/${this.totalSessions}]`;
23
+ process.stdout.write(`${output_1.pc.dim(idxStr)} ${output_1.pc.cyan("→")} ${shortenSession(sessionId)} ...\n`);
24
+ }
25
+ onSessionComplete(result, idx) {
26
+ const idxStr = `[${idx}/${this.totalSessions}]`;
27
+ const session = shortenSession(result.sessionId);
28
+ if (result.status === "imported") {
29
+ this.importedCount += 1;
30
+ const totalEvents = sumEventCounts(result);
31
+ process.stdout.write(`${output_1.pc.dim(idxStr)} ${output_1.pc.green("✓")} ${session} ${output_1.pc.dim(`(${totalEvents} events)`)}\n`);
32
+ }
33
+ else if (result.status === "skipped") {
34
+ this.skippedCount += 1;
35
+ process.stdout.write(`${output_1.pc.dim(idxStr)} ${output_1.pc.dim("○")} ${session} ${output_1.pc.dim(`(skipped: ${result.reason ?? "already tracked"})`)}\n`);
36
+ }
37
+ else {
38
+ this.failedCount += 1;
39
+ process.stdout.write(`${output_1.pc.dim(idxStr)} ${output_1.pc.red("✗")} ${session} ${output_1.pc.red(`(${result.reason ?? "failed"})`)}\n`);
40
+ }
41
+ }
42
+ finalSummary() {
43
+ const elapsedSec = Math.max(0.1, (Date.now() - this.startedAtMs) / 1000);
44
+ process.stdout.write("\n");
45
+ process.stdout.write(output_1.pc.bold("Import complete\n"));
46
+ process.stdout.write(` ${output_1.pc.green(`✓ ${this.importedCount} imported`)}`);
47
+ if (this.skippedCount > 0) {
48
+ process.stdout.write(` ${output_1.pc.dim(`○ ${this.skippedCount} skipped`)}`);
49
+ }
50
+ if (this.failedCount > 0) {
51
+ process.stdout.write(` ${output_1.pc.red(`✗ ${this.failedCount} failed`)}`);
52
+ }
53
+ process.stdout.write(` ${output_1.pc.dim(`${elapsedSec.toFixed(1)}s`)}\n`);
54
+ }
55
+ }
56
+ exports.ProgressReporter = ProgressReporter;
57
+ function shortenSession(sessionId) {
58
+ if (sessionId.length <= 36) {
59
+ return sessionId;
60
+ }
61
+ return sessionId.slice(0, 8) + "…";
62
+ }
63
+ function sumEventCounts(result) {
64
+ const c = result.eventsSent;
65
+ return c.session_start + c.session_end + c.activity_start + c.activity_end
66
+ + c.tool_call + c.file_change + c.session_analytics + c.session_turn_analytics
67
+ + c.session_turn_step_analytics + c.api_request;
68
+ }
69
+ //# sourceMappingURL=progress.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"progress.js","sourceRoot":"","sources":["../../src/import/progress.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * IronBee CLI — Import Module Skip Rule
3
+ *
4
+ * `<projectDir>/.ironbee/sessions/<session_id>/` exists → already tracked.
5
+ * Covers both live-tracked sessions (have `actions.jsonl` etc.) and
6
+ * previously-imported sessions (have `imported.json` marker).
7
+ *
8
+ * `--force` bypasses the rule.
9
+ *
10
+ *
11
+ */
12
+ export declare function shouldSkip(projectDir: string, sessionId: string, force: boolean): boolean;
13
+ //# sourceMappingURL=skip.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skip.d.ts","sourceRoot":"","sources":["../../src/import/skip.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAKH,wBAAgB,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAMzF"}
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ /**
3
+ * IronBee CLI — Import Module Skip Rule
4
+ *
5
+ * `<projectDir>/.ironbee/sessions/<session_id>/` exists → already tracked.
6
+ * Covers both live-tracked sessions (have `actions.jsonl` etc.) and
7
+ * previously-imported sessions (have `imported.json` marker).
8
+ *
9
+ * `--force` bypasses the rule.
10
+ *
11
+ *
12
+ */
13
+ Object.defineProperty(exports, "__esModule", { value: true });
14
+ exports.shouldSkip = shouldSkip;
15
+ const fs_1 = require("fs");
16
+ const path_1 = require("path");
17
+ function shouldSkip(projectDir, sessionId, force) {
18
+ if (force) {
19
+ return false;
20
+ }
21
+ const sessionDir = (0, path_1.join)(projectDir, ".ironbee", "sessions", sessionId);
22
+ return (0, fs_1.existsSync)(sessionDir);
23
+ }
24
+ //# sourceMappingURL=skip.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skip.js","sourceRoot":"","sources":["../../src/import/skip.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;GAUG;;AAKH,gCAMC;AATD,2BAAgC;AAChC,+BAA4B;AAE5B,SAAgB,UAAU,CAAC,UAAkB,EAAE,SAAiB,EAAE,KAAc;IAC5E,IAAI,KAAK,EAAE,CAAC;QACR,OAAO,KAAK,CAAC;IACjB,CAAC;IACD,MAAM,UAAU,GAAW,IAAA,WAAI,EAAC,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;IAC/E,OAAO,IAAA,eAAU,EAAC,UAAU,CAAC,CAAC;AAClC,CAAC"}
@@ -0,0 +1,125 @@
1
+ /**
2
+ * IronBee CLI — Import Module Types
3
+ *
4
+ * Wire types and option/result shapes used across the import pipeline.
5
+ * Pure types — no runtime imports — kept here so every other import-module
6
+ * file can depend on this without dependency cycles.
7
+ *
8
+ *
9
+ */
10
+ import { Event } from "../lib/event";
11
+ /** Scope flag selection. Mutually exclusive */
12
+ export type ImportScope = {
13
+ kind: "current-project";
14
+ } | {
15
+ kind: "projects";
16
+ paths: string[];
17
+ } | {
18
+ kind: "all-projects";
19
+ } | {
20
+ kind: "transcript";
21
+ path: string;
22
+ };
23
+ /** Time-range selection. Both bounds are inclusive epoch-ms. */
24
+ export interface ImportTimeRange {
25
+ fromMs: number;
26
+ toMs: number;
27
+ }
28
+ /** Parsed CLI options after argv resolution. */
29
+ export interface ImportOptions {
30
+ scope: ImportScope;
31
+ /** `null` means no time-range filtering (every session). */
32
+ timeRange: ImportTimeRange | null;
33
+ /** Renders summary, skips POSTs, exits 0. */
34
+ dryRun: boolean;
35
+ /** Skips the interactive `Proceed? [y/N]` prompt. */
36
+ yes: boolean;
37
+ /** Bypasses the skip rule for already-tracked sessions. */
38
+ force: boolean;
39
+ /** How many sessions to import in parallel. */
40
+ concurrency: number;
41
+ /**
42
+ * Events per collector POST. `null` defers to `target.batchSize` (from
43
+ * `collector.batchSize` config) or the built-in default (100). Set
44
+ * explicitly via `--batch-size <n>`. Useful for: low-bandwidth links
45
+ * (smaller batches), gentler backend pressure on large backfills, or
46
+ * diagnostic isolation (set to 1 so a 400 error names a single event).
47
+ */
48
+ batchSize: number | null;
49
+ }
50
+ /** A single session that survived discovery + filtering, ready for import. */
51
+ export interface ImportTarget {
52
+ sessionId: string;
53
+ transcriptPath: string;
54
+ /** Best-effort decoded project directory. May not exist on disk. */
55
+ projectDir: string;
56
+ /** Best-effort decoded project name (basename of `projectDir`). */
57
+ projectName: string;
58
+ /** First-line `timestamp` parsed from the transcript (epoch ms). */
59
+ sessionStartMs: number;
60
+ /** `fs.statSync(transcriptPath).mtimeMs` — transcript size at discovery. */
61
+ mtimeMs: number;
62
+ /** `fs.statSync(transcriptPath).size`. */
63
+ sizeBytes: number;
64
+ }
65
+ /** Per-event-type counts written to the marker on success. */
66
+ export interface ImportEventCounts {
67
+ session_start: number;
68
+ session_end: number;
69
+ activity_start: number;
70
+ activity_end: number;
71
+ tool_call: number;
72
+ file_change: number;
73
+ session_analytics: number;
74
+ session_turn_analytics: number;
75
+ session_turn_step_analytics: number;
76
+ api_request: number;
77
+ }
78
+ /** Result of importing a single session. */
79
+ export interface ImportResult {
80
+ sessionId: string;
81
+ status: "imported" | "skipped" | "failed";
82
+ /** Empty when skipped or failed pre-emit. */
83
+ eventsSent: ImportEventCounts;
84
+ /** Reason string for skipped / failed sessions. */
85
+ reason?: string;
86
+ }
87
+ /** Marker file shape — written under `<projectDir>/.ironbee/sessions/<id>/imported.json`. */
88
+ export interface ImportMarker {
89
+ imported_at: string;
90
+ transcript_path: string;
91
+ transcript_offset: number;
92
+ events_sent: ImportEventCounts;
93
+ schema_version: string;
94
+ }
95
+ /** Aggregated dry-run / live-run summary handed to the progress reporter. */
96
+ export interface ImportSummary {
97
+ /** Per-project breakdown row. */
98
+ projects: ImportProjectSummary[];
99
+ timeRange: ImportTimeRange | null;
100
+ /** Sum of `to_import` across projects — the number of sessions that will be POSTed. */
101
+ toImportCount: number;
102
+ /** Sum of `skipped` across projects — sessions covered by the skip rule. */
103
+ skippedCount: number;
104
+ /** Per-event-type estimated emit counts. */
105
+ estimatedEvents: ImportEventCounts;
106
+ /** USD — sum of analytics `cost_usd` across the to-import set. */
107
+ estimatedCostUsd: number;
108
+ /** Bytes — sum of stringified event payloads across the to-import set. */
109
+ estimatedWireBytes: number;
110
+ /** Configured concurrency (post-resolution). */
111
+ concurrency: number;
112
+ /** Resolved collector endpoint, or `null` when collector is not configured. */
113
+ collectorUrl: string | null;
114
+ }
115
+ export interface ImportProjectSummary {
116
+ projectDir: string;
117
+ found: number;
118
+ skipped: number;
119
+ toImport: number;
120
+ }
121
+ /** Empty event-counts initializer. */
122
+ export declare function emptyEventCounts(): ImportEventCounts;
123
+ /** A single derived event ready to POST to the collector. */
124
+ export type DerivedEvent = Event;
125
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/import/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAErC,+CAA+C;AAC/C,MAAM,MAAM,WAAW,GACjB;IAAE,IAAI,EAAE,iBAAiB,CAAA;CAAE,GAC3B;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAA;CAAE,GACrC;IAAE,IAAI,EAAE,cAAc,CAAA;CAAE,GACxB;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAE3C,gEAAgE;AAChE,MAAM,WAAW,eAAe;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CAChB;AAED,gDAAgD;AAChD,MAAM,WAAW,aAAa;IAC1B,KAAK,EAAE,WAAW,CAAC;IACnB,4DAA4D;IAC5D,SAAS,EAAE,eAAe,GAAG,IAAI,CAAC;IAClC,6CAA6C;IAC7C,MAAM,EAAE,OAAO,CAAC;IAChB,qDAAqD;IACrD,GAAG,EAAE,OAAO,CAAC;IACb,2DAA2D;IAC3D,KAAK,EAAE,OAAO,CAAC;IACf,+CAA+C;IAC/C,WAAW,EAAE,MAAM,CAAC;IACpB;;;;;;OAMG;IACH,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAED,8EAA8E;AAC9E,MAAM,WAAW,YAAY;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,oEAAoE;IACpE,UAAU,EAAE,MAAM,CAAC;IACnB,mEAAmE;IACnE,WAAW,EAAE,MAAM,CAAC;IACpB,oEAAoE;IACpE,cAAc,EAAE,MAAM,CAAC;IACvB,4EAA4E;IAC5E,OAAO,EAAE,MAAM,CAAC;IAChB,0CAA0C;IAC1C,SAAS,EAAE,MAAM,CAAC;CACrB;AAED,8DAA8D;AAC9D,MAAM,WAAW,iBAAiB;IAC9B,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,sBAAsB,EAAE,MAAM,CAAC;IAC/B,2BAA2B,EAAE,MAAM,CAAC;IACpC,WAAW,EAAE,MAAM,CAAC;CACvB;AAED,4CAA4C;AAC5C,MAAM,WAAW,YAAY;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,UAAU,GAAG,SAAS,GAAG,QAAQ,CAAC;IAC1C,6CAA6C;IAC7C,UAAU,EAAE,iBAAiB,CAAC;IAC9B,mDAAmD;IACnD,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,6FAA6F;AAC7F,MAAM,WAAW,YAAY;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,WAAW,EAAE,iBAAiB,CAAC;IAC/B,cAAc,EAAE,MAAM,CAAC;CAC1B;AAED,6EAA6E;AAC7E,MAAM,WAAW,aAAa;IAC1B,iCAAiC;IACjC,QAAQ,EAAE,oBAAoB,EAAE,CAAC;IACjC,SAAS,EAAE,eAAe,GAAG,IAAI,CAAC;IAClC,uFAAuF;IACvF,aAAa,EAAE,MAAM,CAAC;IACtB,4EAA4E;IAC5E,YAAY,EAAE,MAAM,CAAC;IACrB,4CAA4C;IAC5C,eAAe,EAAE,iBAAiB,CAAC;IACnC,kEAAkE;IAClE,gBAAgB,EAAE,MAAM,CAAC;IACzB,0EAA0E;IAC1E,kBAAkB,EAAE,MAAM,CAAC;IAC3B,gDAAgD;IAChD,WAAW,EAAE,MAAM,CAAC;IACpB,+EAA+E;IAC/E,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B;AAED,MAAM,WAAW,oBAAoB;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;CACpB;AAED,sCAAsC;AACtC,wBAAgB,gBAAgB,IAAI,iBAAiB,CAapD;AAED,6DAA6D;AAC7D,MAAM,MAAM,YAAY,GAAG,KAAK,CAAC"}
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ /**
3
+ * IronBee CLI — Import Module Types
4
+ *
5
+ * Wire types and option/result shapes used across the import pipeline.
6
+ * Pure types — no runtime imports — kept here so every other import-module
7
+ * file can depend on this without dependency cycles.
8
+ *
9
+ *
10
+ */
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.emptyEventCounts = emptyEventCounts;
13
+ /** Empty event-counts initializer. */
14
+ function emptyEventCounts() {
15
+ return {
16
+ session_start: 0,
17
+ session_end: 0,
18
+ activity_start: 0,
19
+ activity_end: 0,
20
+ tool_call: 0,
21
+ file_change: 0,
22
+ session_analytics: 0,
23
+ session_turn_analytics: 0,
24
+ session_turn_step_analytics: 0,
25
+ api_request: 0,
26
+ };
27
+ }
28
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/import/types.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;AAsHH,4CAaC;AAdD,sCAAsC;AACtC,SAAgB,gBAAgB;IAC5B,OAAO;QACH,aAAa,EAAE,CAAC;QAChB,WAAW,EAAE,CAAC;QACd,cAAc,EAAE,CAAC;QACjB,YAAY,EAAE,CAAC;QACf,SAAS,EAAE,CAAC;QACZ,WAAW,EAAE,CAAC;QACd,iBAAiB,EAAE,CAAC;QACpB,sBAAsB,EAAE,CAAC;QACzB,2BAA2B,EAAE,CAAC;QAC9B,WAAW,EAAE,CAAC;KACjB,CAAC;AACN,CAAC"}
package/dist/index.js CHANGED
@@ -13,6 +13,12 @@ const verify_1 = require("./commands/verify");
13
13
  const analyze_1 = require("./commands/analyze");
14
14
  const queue_1 = require("./commands/queue");
15
15
  const process_job_file_1 = require("./commands/process-job-file");
16
+ const process_analytics_1 = require("./commands/process-analytics");
17
+ const enable_backend_1 = require("./commands/enable-backend");
18
+ const disable_backend_1 = require("./commands/disable-backend");
19
+ const enable_verification_1 = require("./commands/enable-verification");
20
+ const disable_verification_1 = require("./commands/disable-verification");
21
+ const import_1 = require("./commands/import");
16
22
  const queue_2 = require("./queue");
17
23
  const icon_1 = require("./lib/icon");
18
24
  const version_1 = require("./lib/version");
@@ -34,10 +40,18 @@ program.addCommand(status_1.statusCommand);
34
40
  program.addCommand(verify_1.verifyCommand);
35
41
  program.addCommand(analyze_1.analyzeCommand);
36
42
  program.addCommand(queue_1.queueCommand);
43
+ program.addCommand(enable_backend_1.enableBackendCommand);
44
+ program.addCommand(disable_backend_1.disableBackendCommand);
45
+ program.addCommand(enable_verification_1.enableVerificationCommand);
46
+ program.addCommand(disable_verification_1.disableVerificationCommand);
47
+ program.addCommand(import_1.importCommand);
37
48
  program.addCommand(process_job_file_1.processJobFileCommand);
49
+ program.addCommand(process_analytics_1.processAnalyticsCommand);
38
50
  program.addCommand(hook_1.hookCommand);
39
- // hook subcommands and the queue worker run in the background — skip banner and update check
40
- const isBackgroundCommand = process.argv[2] === "hook" || process.argv[2] === "process-job-file";
51
+ // hook subcommands and detached workers run in the background — skip banner and update check
52
+ const isBackgroundCommand = process.argv[2] === "hook"
53
+ || process.argv[2] === "process-job-file"
54
+ || process.argv[2] === "process-analytics";
41
55
  if (process.argv.length === 2) {
42
56
  (0, icon_1.printBanner)();
43
57
  console.log();
@@ -53,6 +67,11 @@ if (process.argv.length === 2) {
53
67
  console.log(` ${output_1.pc.green("status")} ${output_1.pc.dim("[project-dir]")} Show verification status for sessions`);
54
68
  console.log(` ${output_1.pc.green("verify")} ${output_1.pc.dim("[session-id]")} Dry-run verdict validation`);
55
69
  console.log(` ${output_1.pc.green("analyze")} ${output_1.pc.dim("[session-id]")} Analyze session metrics (or all sessions)`);
70
+ console.log(` ${output_1.pc.green("enable-backend")} ${output_1.pc.dim("<runtime>")} Enable backend verification (e.g. node)`);
71
+ console.log(` ${output_1.pc.green("disable-backend")} ${output_1.pc.dim("<runtime>")} Disable backend verification (preserves customizations)`);
72
+ console.log(` ${output_1.pc.green("enable-verification")} Turn enforcement on (default state)`);
73
+ console.log(` ${output_1.pc.green("disable-verification")} Monitoring-only mode (sessions/tools shipped, no enforcement)`);
74
+ console.log(` ${output_1.pc.green("import")} Import historical Claude sessions to the IronBee Collector`);
56
75
  console.log();
57
76
  console.log(` ${output_1.pc.dim("Run")} ${output_1.pc.cyan("ironbee <command> --help")} ${output_1.pc.dim("for more info on a command.")}`);
58
77
  console.log();
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}