@ironbee-ai/cli 0.15.0 → 0.16.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 (454) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/dist/analytics/{emit.d.ts → claude/emit.d.ts} +1 -1
  3. package/dist/analytics/claude/emit.d.ts.map +1 -0
  4. package/dist/analytics/{emit.js → claude/emit.js} +34 -7
  5. package/dist/analytics/claude/emit.js.map +1 -0
  6. package/dist/analytics/{hook-trigger.d.ts → claude/hook-trigger.d.ts} +1 -1
  7. package/dist/analytics/claude/hook-trigger.d.ts.map +1 -0
  8. package/dist/analytics/{hook-trigger.js → claude/hook-trigger.js} +2 -2
  9. package/dist/analytics/claude/hook-trigger.js.map +1 -0
  10. package/dist/analytics/claude/log.d.ts.map +1 -0
  11. package/dist/analytics/{log.js → claude/log.js} +1 -1
  12. package/dist/analytics/claude/log.js.map +1 -0
  13. package/dist/analytics/{merge.d.ts → claude/merge.d.ts} +2 -1
  14. package/dist/analytics/claude/merge.d.ts.map +1 -0
  15. package/dist/analytics/{merge.js → claude/merge.js} +13 -1
  16. package/dist/analytics/claude/merge.js.map +1 -0
  17. package/dist/analytics/{pricing.d.ts → claude/pricing.d.ts} +1 -13
  18. package/dist/analytics/claude/pricing.d.ts.map +1 -0
  19. package/dist/analytics/{pricing.js → claude/pricing.js} +6 -14
  20. package/dist/analytics/claude/pricing.js.map +1 -0
  21. package/dist/analytics/{projection.d.ts → claude/projection.d.ts} +31 -7
  22. package/dist/analytics/claude/projection.d.ts.map +1 -0
  23. package/dist/analytics/{projection.js → claude/projection.js} +631 -327
  24. package/dist/analytics/claude/projection.js.map +1 -0
  25. package/dist/analytics/{spawn.d.ts → claude/spawn.d.ts} +4 -4
  26. package/dist/analytics/claude/spawn.d.ts.map +1 -0
  27. package/dist/analytics/{spawn.js → claude/spawn.js} +4 -3
  28. package/dist/analytics/claude/spawn.js.map +1 -0
  29. package/dist/analytics/{state.d.ts → claude/state.d.ts} +1 -1
  30. package/dist/analytics/claude/state.d.ts.map +1 -0
  31. package/dist/analytics/{state.js → claude/state.js} +2 -2
  32. package/dist/analytics/claude/state.js.map +1 -0
  33. package/dist/analytics/claude/transcript.d.ts.map +1 -0
  34. package/dist/analytics/{transcript.js → claude/transcript.js} +1 -1
  35. package/dist/analytics/claude/transcript.js.map +1 -0
  36. package/dist/analytics/codex/api-request.d.ts +108 -0
  37. package/dist/analytics/codex/api-request.d.ts.map +1 -0
  38. package/dist/analytics/codex/api-request.js +155 -0
  39. package/dist/analytics/codex/api-request.js.map +1 -0
  40. package/dist/analytics/codex/apply-patch.d.ts +21 -0
  41. package/dist/analytics/codex/apply-patch.d.ts.map +1 -0
  42. package/dist/analytics/codex/apply-patch.js +49 -0
  43. package/dist/analytics/codex/apply-patch.js.map +1 -0
  44. package/dist/analytics/codex/classifier.d.ts +28 -0
  45. package/dist/analytics/codex/classifier.d.ts.map +1 -0
  46. package/dist/analytics/codex/classifier.js +111 -0
  47. package/dist/analytics/codex/classifier.js.map +1 -0
  48. package/dist/analytics/codex/emit.d.ts +47 -0
  49. package/dist/analytics/codex/emit.d.ts.map +1 -0
  50. package/dist/analytics/codex/emit.js +158 -0
  51. package/dist/analytics/codex/emit.js.map +1 -0
  52. package/dist/analytics/codex/events-emit.d.ts +62 -0
  53. package/dist/analytics/codex/events-emit.d.ts.map +1 -0
  54. package/dist/analytics/codex/events-emit.js +555 -0
  55. package/dist/analytics/codex/events-emit.js.map +1 -0
  56. package/dist/analytics/codex/pricing.d.ts +57 -0
  57. package/dist/analytics/codex/pricing.d.ts.map +1 -0
  58. package/dist/analytics/codex/pricing.js +125 -0
  59. package/dist/analytics/codex/pricing.js.map +1 -0
  60. package/dist/analytics/codex/projection.d.ts +51 -0
  61. package/dist/analytics/codex/projection.d.ts.map +1 -0
  62. package/dist/analytics/codex/projection.js +1477 -0
  63. package/dist/analytics/codex/projection.js.map +1 -0
  64. package/dist/analytics/codex/spawn.d.ts +27 -0
  65. package/dist/analytics/codex/spawn.d.ts.map +1 -0
  66. package/dist/analytics/codex/spawn.js +64 -0
  67. package/dist/analytics/codex/spawn.js.map +1 -0
  68. package/dist/analytics/codex/status-snapshot.d.ts +80 -0
  69. package/dist/analytics/codex/status-snapshot.d.ts.map +1 -0
  70. package/dist/analytics/codex/status-snapshot.js +206 -0
  71. package/dist/analytics/codex/status-snapshot.js.map +1 -0
  72. package/dist/analytics/codex/transcript.d.ts +51 -0
  73. package/dist/analytics/codex/transcript.d.ts.map +1 -0
  74. package/dist/analytics/codex/transcript.js +134 -0
  75. package/dist/analytics/codex/transcript.js.map +1 -0
  76. package/dist/analytics/codex/types.d.ts +253 -0
  77. package/dist/analytics/codex/types.d.ts.map +1 -0
  78. package/dist/analytics/codex/types.js +29 -0
  79. package/dist/analytics/codex/types.js.map +1 -0
  80. package/dist/analytics/shared/classifier.d.ts.map +1 -0
  81. package/dist/analytics/{classifier.js → shared/classifier.js} +9 -0
  82. package/dist/analytics/shared/classifier.js.map +1 -0
  83. package/dist/analytics/shared/errors.d.ts.map +1 -0
  84. package/dist/analytics/shared/errors.js.map +1 -0
  85. package/dist/analytics/shared/tokens.d.ts +14 -0
  86. package/dist/analytics/shared/tokens.d.ts.map +1 -0
  87. package/dist/analytics/shared/tokens.js +17 -0
  88. package/dist/analytics/shared/tokens.js.map +1 -0
  89. package/dist/analytics/{types.d.ts → shared/types.d.ts} +42 -9
  90. package/dist/analytics/shared/types.d.ts.map +1 -0
  91. package/dist/analytics/shared/types.js.map +1 -0
  92. package/dist/clients/base.d.ts +9 -0
  93. package/dist/clients/base.d.ts.map +1 -1
  94. package/dist/clients/claude/hooks/activity-end.js +1 -1
  95. package/dist/clients/claude/hooks/activity-end.js.map +1 -1
  96. package/dist/clients/claude/hooks/activity-start.js +1 -1
  97. package/dist/clients/claude/hooks/activity-start.js.map +1 -1
  98. package/dist/clients/claude/hooks/clear-verdict.d.ts.map +1 -1
  99. package/dist/clients/claude/hooks/clear-verdict.js +14 -0
  100. package/dist/clients/claude/hooks/clear-verdict.js.map +1 -1
  101. package/dist/clients/claude/hooks/session-end.d.ts.map +1 -1
  102. package/dist/clients/claude/hooks/session-end.js +7 -1
  103. package/dist/clients/claude/hooks/session-end.js.map +1 -1
  104. package/dist/clients/claude/hooks/session-start.d.ts.map +1 -1
  105. package/dist/clients/claude/hooks/session-start.js +7 -1
  106. package/dist/clients/claude/hooks/session-start.js.map +1 -1
  107. package/dist/clients/claude/hooks/session-status.d.ts.map +1 -1
  108. package/dist/clients/claude/hooks/session-status.js +13 -9
  109. package/dist/clients/claude/hooks/session-status.js.map +1 -1
  110. package/dist/clients/claude/hooks/track-action.d.ts.map +1 -1
  111. package/dist/clients/claude/hooks/track-action.js +26 -1
  112. package/dist/clients/claude/hooks/track-action.js.map +1 -1
  113. package/dist/clients/claude/hooks/verify-gate.d.ts.map +1 -1
  114. package/dist/clients/claude/hooks/verify-gate.js +8 -1
  115. package/dist/clients/claude/hooks/verify-gate.js.map +1 -1
  116. package/dist/clients/claude/index.d.ts +1 -0
  117. package/dist/clients/claude/index.d.ts.map +1 -1
  118. package/dist/clients/claude/index.js +7 -0
  119. package/dist/clients/claude/index.js.map +1 -1
  120. package/dist/clients/claude/util.d.ts.map +1 -1
  121. package/dist/clients/claude/util.js +55 -0
  122. package/dist/clients/claude/util.js.map +1 -1
  123. package/dist/clients/codex/commands/ironbee-verify/SKILL.md +58 -0
  124. package/dist/clients/codex/hooks/activity-end.d.ts +9 -0
  125. package/dist/clients/codex/hooks/activity-end.d.ts.map +1 -0
  126. package/dist/clients/codex/hooks/activity-end.js +65 -0
  127. package/dist/clients/codex/hooks/activity-end.js.map +1 -0
  128. package/dist/clients/codex/hooks/activity-start.d.ts +17 -0
  129. package/dist/clients/codex/hooks/activity-start.d.ts.map +1 -0
  130. package/dist/clients/codex/hooks/activity-start.js +38 -0
  131. package/dist/clients/codex/hooks/activity-start.js.map +1 -0
  132. package/dist/clients/codex/hooks/clear-verdict.d.ts +55 -0
  133. package/dist/clients/codex/hooks/clear-verdict.d.ts.map +1 -0
  134. package/dist/clients/codex/hooks/clear-verdict.js +299 -0
  135. package/dist/clients/codex/hooks/clear-verdict.js.map +1 -0
  136. package/dist/clients/codex/hooks/require-verdict.d.ts +30 -0
  137. package/dist/clients/codex/hooks/require-verdict.d.ts.map +1 -0
  138. package/dist/clients/codex/hooks/require-verdict.js +109 -0
  139. package/dist/clients/codex/hooks/require-verdict.js.map +1 -0
  140. package/dist/clients/codex/hooks/require-verification.d.ts +12 -0
  141. package/dist/clients/codex/hooks/require-verification.d.ts.map +1 -0
  142. package/dist/clients/codex/hooks/require-verification.js +136 -0
  143. package/dist/clients/codex/hooks/require-verification.js.map +1 -0
  144. package/dist/clients/codex/hooks/session-start.d.ts +10 -0
  145. package/dist/clients/codex/hooks/session-start.d.ts.map +1 -0
  146. package/dist/clients/codex/hooks/session-start.js +94 -0
  147. package/dist/clients/codex/hooks/session-start.js.map +1 -0
  148. package/dist/clients/codex/hooks/track-action-monitor.d.ts +10 -0
  149. package/dist/clients/codex/hooks/track-action-monitor.d.ts.map +1 -0
  150. package/dist/clients/codex/hooks/track-action-monitor.js +168 -0
  151. package/dist/clients/codex/hooks/track-action-monitor.js.map +1 -0
  152. package/dist/clients/codex/hooks/track-action-pre.d.ts +18 -0
  153. package/dist/clients/codex/hooks/track-action-pre.d.ts.map +1 -0
  154. package/dist/clients/codex/hooks/track-action-pre.js +35 -0
  155. package/dist/clients/codex/hooks/track-action-pre.js.map +1 -0
  156. package/dist/clients/codex/hooks/track-action.d.ts +22 -0
  157. package/dist/clients/codex/hooks/track-action.d.ts.map +1 -0
  158. package/dist/clients/codex/hooks/track-action.js +350 -0
  159. package/dist/clients/codex/hooks/track-action.js.map +1 -0
  160. package/dist/clients/codex/hooks/verify-gate.d.ts +15 -0
  161. package/dist/clients/codex/hooks/verify-gate.d.ts.map +1 -0
  162. package/dist/clients/codex/hooks/verify-gate.js +105 -0
  163. package/dist/clients/codex/hooks/verify-gate.js.map +1 -0
  164. package/dist/clients/codex/index.d.ts +42 -0
  165. package/dist/clients/codex/index.d.ts.map +1 -0
  166. package/dist/clients/codex/index.js +427 -0
  167. package/dist/clients/codex/index.js.map +1 -0
  168. package/dist/clients/codex/platforms/command-verify.backend.md +108 -0
  169. package/dist/clients/codex/platforms/command-verify.browser.md +108 -0
  170. package/dist/clients/codex/platforms/command-verify.node.md +61 -0
  171. package/dist/clients/codex/platforms/rule.backend.md +32 -0
  172. package/dist/clients/codex/platforms/rule.browser.md +17 -0
  173. package/dist/clients/codex/platforms/rule.node.md +28 -0
  174. package/dist/clients/codex/platforms/skill.backend.md +95 -0
  175. package/dist/clients/codex/platforms/skill.browser.md +28 -0
  176. package/dist/clients/codex/platforms/skill.node.md +62 -0
  177. package/dist/clients/codex/rules/ironbee-verification.md +48 -0
  178. package/dist/clients/codex/skills/ironbee-verification.md +80 -0
  179. package/dist/clients/codex/util.d.ts +193 -0
  180. package/dist/clients/codex/util.d.ts.map +1 -0
  181. package/dist/clients/codex/util.js +784 -0
  182. package/dist/clients/codex/util.js.map +1 -0
  183. package/dist/clients/cursor/hooks/activity-end.js +1 -1
  184. package/dist/clients/cursor/hooks/activity-end.js.map +1 -1
  185. package/dist/clients/cursor/hooks/clear-verdict.d.ts +5 -2
  186. package/dist/clients/cursor/hooks/clear-verdict.d.ts.map +1 -1
  187. package/dist/clients/cursor/hooks/clear-verdict.js +12 -3
  188. package/dist/clients/cursor/hooks/clear-verdict.js.map +1 -1
  189. package/dist/clients/cursor/hooks/session-end.js +1 -1
  190. package/dist/clients/cursor/hooks/session-end.js.map +1 -1
  191. package/dist/clients/cursor/hooks/verify-gate.d.ts.map +1 -1
  192. package/dist/clients/cursor/hooks/verify-gate.js +6 -1
  193. package/dist/clients/cursor/hooks/verify-gate.js.map +1 -1
  194. package/dist/clients/cursor/index.d.ts +1 -0
  195. package/dist/clients/cursor/index.d.ts.map +1 -1
  196. package/dist/clients/cursor/index.js +13 -0
  197. package/dist/clients/cursor/index.js.map +1 -1
  198. package/dist/clients/registry.d.ts.map +1 -1
  199. package/dist/clients/registry.js +2 -1
  200. package/dist/clients/registry.js.map +1 -1
  201. package/dist/commands/{claude.d.ts → claude/index.d.ts} +1 -1
  202. package/dist/commands/claude/index.d.ts.map +1 -0
  203. package/dist/commands/{claude.js → claude/index.js} +12 -6
  204. package/dist/commands/claude/index.js.map +1 -0
  205. package/dist/commands/{otel.d.ts → claude/otel.d.ts} +5 -1
  206. package/dist/commands/claude/otel.d.ts.map +1 -0
  207. package/dist/commands/{otel.js → claude/otel.js} +9 -5
  208. package/dist/commands/claude/otel.js.map +1 -0
  209. package/dist/commands/claude/process-analytics.d.ts +19 -0
  210. package/dist/commands/claude/process-analytics.d.ts.map +1 -0
  211. package/dist/commands/{process-analytics.js → claude/process-analytics.js} +16 -15
  212. package/dist/commands/claude/process-analytics.js.map +1 -0
  213. package/dist/commands/{statusline-toggle.d.ts → claude/statusline-toggle.d.ts} +2 -2
  214. package/dist/commands/claude/statusline-toggle.d.ts.map +1 -0
  215. package/dist/commands/{statusline-toggle.js → claude/statusline-toggle.js} +8 -8
  216. package/dist/commands/claude/statusline-toggle.js.map +1 -0
  217. package/dist/commands/{statusline.d.ts → claude/statusline.d.ts} +1 -1
  218. package/dist/commands/claude/statusline.d.ts.map +1 -0
  219. package/dist/commands/{statusline.js → claude/statusline.js} +4 -4
  220. package/dist/commands/claude/statusline.js.map +1 -0
  221. package/dist/commands/codex/index.d.ts +11 -0
  222. package/dist/commands/codex/index.d.ts.map +1 -0
  223. package/dist/commands/codex/index.js +17 -0
  224. package/dist/commands/codex/index.js.map +1 -0
  225. package/dist/commands/codex/process-analytics.d.ts +14 -0
  226. package/dist/commands/codex/process-analytics.d.ts.map +1 -0
  227. package/dist/commands/codex/process-analytics.js +111 -0
  228. package/dist/commands/codex/process-analytics.js.map +1 -0
  229. package/dist/commands/hook.js +12 -0
  230. package/dist/commands/hook.js.map +1 -1
  231. package/dist/commands/import.js +3 -3
  232. package/dist/commands/import.js.map +1 -1
  233. package/dist/commands/queue.js +3 -1
  234. package/dist/commands/queue.js.map +1 -1
  235. package/dist/hooks/core/actions.d.ts +17 -1
  236. package/dist/hooks/core/actions.d.ts.map +1 -1
  237. package/dist/hooks/core/actions.js +13 -0
  238. package/dist/hooks/core/actions.js.map +1 -1
  239. package/dist/hooks/core/activity-end.d.ts.map +1 -1
  240. package/dist/hooks/core/activity-end.js +4 -0
  241. package/dist/hooks/core/activity-end.js.map +1 -1
  242. package/dist/hooks/core/session-state.d.ts +15 -1
  243. package/dist/hooks/core/session-state.d.ts.map +1 -1
  244. package/dist/hooks/core/session-state.js +102 -7
  245. package/dist/hooks/core/session-state.js.map +1 -1
  246. package/dist/import/claude/analytics-runner.d.ts +1 -1
  247. package/dist/import/claude/analytics-runner.d.ts.map +1 -1
  248. package/dist/import/claude/analytics-runner.js +5 -5
  249. package/dist/import/claude/analytics-runner.js.map +1 -1
  250. package/dist/import/claude/auth-mode.d.ts +1 -1
  251. package/dist/import/claude/auth-mode.d.ts.map +1 -1
  252. package/dist/import/claude/discovery.js +1 -1
  253. package/dist/import/claude/discovery.js.map +1 -1
  254. package/dist/import/claude/encoding.js +1 -1
  255. package/dist/import/claude/encoding.js.map +1 -1
  256. package/dist/import/claude/events/file-change.d.ts +10 -1
  257. package/dist/import/claude/events/file-change.d.ts.map +1 -1
  258. package/dist/import/claude/events/file-change.js +79 -5
  259. package/dist/import/claude/events/file-change.js.map +1 -1
  260. package/dist/import/claude/events/tool-call.d.ts +16 -1
  261. package/dist/import/claude/events/tool-call.d.ts.map +1 -1
  262. package/dist/import/claude/events/tool-call.js +122 -15
  263. package/dist/import/claude/events/tool-call.js.map +1 -1
  264. package/dist/import/claude/runner.d.ts.map +1 -1
  265. package/dist/import/claude/runner.js +45 -3
  266. package/dist/import/claude/runner.js.map +1 -1
  267. package/dist/import/claude/summary.js +1 -1
  268. package/dist/import/claude/summary.js.map +1 -1
  269. package/dist/import/claude/transcript-walk.d.ts +1 -1
  270. package/dist/import/claude/transcript-walk.d.ts.map +1 -1
  271. package/dist/import/claude/transcript-walk.js +11 -4
  272. package/dist/import/claude/transcript-walk.js.map +1 -1
  273. package/dist/import/codex/analytics-runner.d.ts +46 -0
  274. package/dist/import/codex/analytics-runner.d.ts.map +1 -0
  275. package/dist/import/codex/analytics-runner.js +116 -0
  276. package/dist/import/codex/analytics-runner.js.map +1 -0
  277. package/dist/import/codex/discovery.d.ts +33 -0
  278. package/dist/import/codex/discovery.d.ts.map +1 -0
  279. package/dist/import/codex/discovery.js +202 -0
  280. package/dist/import/codex/discovery.js.map +1 -0
  281. package/dist/import/codex/events/file-change.d.ts +42 -0
  282. package/dist/import/codex/events/file-change.d.ts.map +1 -0
  283. package/dist/import/codex/events/file-change.js +125 -0
  284. package/dist/import/codex/events/file-change.js.map +1 -0
  285. package/dist/import/codex/events/tool-call.d.ts +49 -0
  286. package/dist/import/codex/events/tool-call.d.ts.map +1 -0
  287. package/dist/import/codex/events/tool-call.js +151 -0
  288. package/dist/import/codex/events/tool-call.js.map +1 -0
  289. package/dist/import/codex/runner.d.ts +34 -0
  290. package/dist/import/codex/runner.d.ts.map +1 -0
  291. package/dist/import/codex/runner.js +456 -0
  292. package/dist/import/codex/runner.js.map +1 -0
  293. package/dist/import/codex/summary.d.ts +20 -0
  294. package/dist/import/codex/summary.d.ts.map +1 -0
  295. package/dist/import/codex/summary.js +206 -0
  296. package/dist/import/codex/summary.js.map +1 -0
  297. package/dist/import/events/activity.d.ts.map +1 -1
  298. package/dist/import/events/activity.js +17 -2
  299. package/dist/import/events/activity.js.map +1 -1
  300. package/dist/import/events/session.d.ts +11 -1
  301. package/dist/import/events/session.d.ts.map +1 -1
  302. package/dist/import/events/session.js +19 -1
  303. package/dist/import/events/session.js.map +1 -1
  304. package/dist/import/ids.js +3 -3
  305. package/dist/import/ids.js.map +1 -1
  306. package/dist/import/pipeline.d.ts +22 -15
  307. package/dist/import/pipeline.d.ts.map +1 -1
  308. package/dist/import/pipeline.js +99 -18
  309. package/dist/import/pipeline.js.map +1 -1
  310. package/dist/import/types.d.ts +4 -0
  311. package/dist/import/types.d.ts.map +1 -1
  312. package/dist/import/types.js.map +1 -1
  313. package/dist/index.js +9 -11
  314. package/dist/index.js.map +1 -1
  315. package/dist/lib/collector.d.ts +2 -1
  316. package/dist/lib/collector.d.ts.map +1 -1
  317. package/dist/lib/collector.js +28 -3
  318. package/dist/lib/collector.js.map +1 -1
  319. package/dist/lib/config.d.ts.map +1 -1
  320. package/dist/lib/config.js.map +1 -1
  321. package/dist/lib/event.d.ts +18 -1
  322. package/dist/lib/event.d.ts.map +1 -1
  323. package/dist/lib/event.js +25 -1
  324. package/dist/lib/event.js.map +1 -1
  325. package/dist/lib/platform-section.d.ts.map +1 -1
  326. package/dist/lib/platform-section.js +8 -0
  327. package/dist/lib/platform-section.js.map +1 -1
  328. package/dist/otel/{context → claude/context}/build.d.ts +1 -1
  329. package/dist/otel/claude/context/build.d.ts.map +1 -0
  330. package/dist/otel/{context → claude/context}/build.js +3 -7
  331. package/dist/otel/claude/context/build.js.map +1 -0
  332. package/dist/otel/claude/context/classify.d.ts.map +1 -0
  333. package/dist/otel/claude/context/classify.js.map +1 -0
  334. package/dist/otel/{context → claude/context}/extract.d.ts +1 -1
  335. package/dist/otel/claude/context/extract.d.ts.map +1 -0
  336. package/dist/otel/claude/context/extract.js.map +1 -0
  337. package/dist/otel/claude/context/markers.d.ts.map +1 -0
  338. package/dist/otel/{context → claude/context}/markers.js +22 -3
  339. package/dist/otel/claude/context/markers.js.map +1 -0
  340. package/dist/otel/claude/context/util.d.ts.map +1 -0
  341. package/dist/otel/claude/context/util.js.map +1 -0
  342. package/dist/otel/{daemon → claude/daemon}/ensure.d.ts +1 -1
  343. package/dist/otel/claude/daemon/ensure.d.ts.map +1 -0
  344. package/dist/otel/{daemon → claude/daemon}/ensure.js +6 -6
  345. package/dist/otel/claude/daemon/ensure.js.map +1 -0
  346. package/dist/otel/{daemon → claude/daemon}/forward.d.ts +1 -1
  347. package/dist/otel/claude/daemon/forward.d.ts.map +1 -0
  348. package/dist/otel/{daemon → claude/daemon}/forward.js +0 -0
  349. package/dist/otel/claude/daemon/forward.js.map +1 -0
  350. package/dist/otel/claude/daemon/paths.d.ts.map +1 -0
  351. package/dist/otel/claude/daemon/paths.js.map +1 -0
  352. package/dist/otel/{daemon → claude/daemon}/process.d.ts +1 -1
  353. package/dist/otel/claude/daemon/process.d.ts.map +1 -0
  354. package/dist/otel/{daemon → claude/daemon}/process.js +1 -1
  355. package/dist/otel/claude/daemon/process.js.map +1 -0
  356. package/dist/otel/claude/daemon/reprocess.d.ts.map +1 -0
  357. package/dist/otel/{daemon → claude/daemon}/reprocess.js +2 -2
  358. package/dist/otel/claude/daemon/reprocess.js.map +1 -0
  359. package/dist/otel/claude/log-handler.d.ts.map +1 -0
  360. package/dist/otel/{log-handler.js → claude/log-handler.js} +1 -1
  361. package/dist/otel/claude/log-handler.js.map +1 -0
  362. package/dist/otel/collector.js +4 -4
  363. package/dist/otel/collector.js.map +1 -1
  364. package/dist/queue/flush.d.ts +23 -0
  365. package/dist/queue/flush.d.ts.map +1 -1
  366. package/dist/queue/flush.js +44 -0
  367. package/dist/queue/flush.js.map +1 -1
  368. package/dist/queue/handlers/send-event.d.ts.map +1 -1
  369. package/dist/queue/handlers/send-event.js +5 -4
  370. package/dist/queue/handlers/send-event.js.map +1 -1
  371. package/dist/queue/index.d.ts +2 -2
  372. package/dist/queue/index.d.ts.map +1 -1
  373. package/dist/queue/index.js +4 -1
  374. package/dist/queue/index.js.map +1 -1
  375. package/dist/queue/spawn.d.ts +20 -0
  376. package/dist/queue/spawn.d.ts.map +1 -1
  377. package/dist/queue/spawn.js +37 -0
  378. package/dist/queue/spawn.js.map +1 -1
  379. package/dist/tui/import/area.js +3 -3
  380. package/dist/tui/import/area.js.map +1 -1
  381. package/package.json +2 -1
  382. package/dist/analytics/classifier.d.ts.map +0 -1
  383. package/dist/analytics/classifier.js.map +0 -1
  384. package/dist/analytics/emit.d.ts.map +0 -1
  385. package/dist/analytics/emit.js.map +0 -1
  386. package/dist/analytics/errors.d.ts.map +0 -1
  387. package/dist/analytics/errors.js.map +0 -1
  388. package/dist/analytics/hook-trigger.d.ts.map +0 -1
  389. package/dist/analytics/hook-trigger.js.map +0 -1
  390. package/dist/analytics/log.d.ts.map +0 -1
  391. package/dist/analytics/log.js.map +0 -1
  392. package/dist/analytics/merge.d.ts.map +0 -1
  393. package/dist/analytics/merge.js.map +0 -1
  394. package/dist/analytics/pricing.d.ts.map +0 -1
  395. package/dist/analytics/pricing.js.map +0 -1
  396. package/dist/analytics/projection.d.ts.map +0 -1
  397. package/dist/analytics/projection.js.map +0 -1
  398. package/dist/analytics/spawn.d.ts.map +0 -1
  399. package/dist/analytics/spawn.js.map +0 -1
  400. package/dist/analytics/state.d.ts.map +0 -1
  401. package/dist/analytics/state.js.map +0 -1
  402. package/dist/analytics/transcript.d.ts.map +0 -1
  403. package/dist/analytics/transcript.js.map +0 -1
  404. package/dist/analytics/types.d.ts.map +0 -1
  405. package/dist/analytics/types.js.map +0 -1
  406. package/dist/commands/claude.d.ts.map +0 -1
  407. package/dist/commands/claude.js.map +0 -1
  408. package/dist/commands/otel.d.ts.map +0 -1
  409. package/dist/commands/otel.js.map +0 -1
  410. package/dist/commands/process-analytics.d.ts +0 -18
  411. package/dist/commands/process-analytics.d.ts.map +0 -1
  412. package/dist/commands/process-analytics.js.map +0 -1
  413. package/dist/commands/statusline-toggle.d.ts.map +0 -1
  414. package/dist/commands/statusline-toggle.js.map +0 -1
  415. package/dist/commands/statusline.d.ts.map +0 -1
  416. package/dist/commands/statusline.js.map +0 -1
  417. package/dist/otel/context/build.d.ts.map +0 -1
  418. package/dist/otel/context/build.js.map +0 -1
  419. package/dist/otel/context/classify.d.ts.map +0 -1
  420. package/dist/otel/context/classify.js.map +0 -1
  421. package/dist/otel/context/extract.d.ts.map +0 -1
  422. package/dist/otel/context/extract.js.map +0 -1
  423. package/dist/otel/context/markers.d.ts.map +0 -1
  424. package/dist/otel/context/markers.js.map +0 -1
  425. package/dist/otel/context/util.d.ts.map +0 -1
  426. package/dist/otel/context/util.js.map +0 -1
  427. package/dist/otel/daemon/ensure.d.ts.map +0 -1
  428. package/dist/otel/daemon/ensure.js.map +0 -1
  429. package/dist/otel/daemon/forward.d.ts.map +0 -1
  430. package/dist/otel/daemon/forward.js.map +0 -1
  431. package/dist/otel/daemon/paths.d.ts.map +0 -1
  432. package/dist/otel/daemon/paths.js.map +0 -1
  433. package/dist/otel/daemon/process.d.ts.map +0 -1
  434. package/dist/otel/daemon/process.js.map +0 -1
  435. package/dist/otel/daemon/reprocess.d.ts.map +0 -1
  436. package/dist/otel/daemon/reprocess.js.map +0 -1
  437. package/dist/otel/log-handler.d.ts.map +0 -1
  438. package/dist/otel/log-handler.js.map +0 -1
  439. /package/dist/analytics/{log.d.ts → claude/log.d.ts} +0 -0
  440. /package/dist/analytics/{transcript.d.ts → claude/transcript.d.ts} +0 -0
  441. /package/dist/analytics/{classifier.d.ts → shared/classifier.d.ts} +0 -0
  442. /package/dist/analytics/{errors.d.ts → shared/errors.d.ts} +0 -0
  443. /package/dist/analytics/{errors.js → shared/errors.js} +0 -0
  444. /package/dist/analytics/{types.js → shared/types.js} +0 -0
  445. /package/dist/otel/{context → claude/context}/classify.d.ts +0 -0
  446. /package/dist/otel/{context → claude/context}/classify.js +0 -0
  447. /package/dist/otel/{context → claude/context}/extract.js +0 -0
  448. /package/dist/otel/{context → claude/context}/markers.d.ts +0 -0
  449. /package/dist/otel/{context → claude/context}/util.d.ts +0 -0
  450. /package/dist/otel/{context → claude/context}/util.js +0 -0
  451. /package/dist/otel/{daemon → claude/daemon}/paths.d.ts +0 -0
  452. /package/dist/otel/{daemon → claude/daemon}/paths.js +0 -0
  453. /package/dist/otel/{daemon → claude/daemon}/reprocess.d.ts +0 -0
  454. /package/dist/otel/{log-handler.d.ts → claude/log-handler.d.ts} +0 -0
@@ -0,0 +1,206 @@
1
+ "use strict";
2
+ /**
3
+ * IronBee CLI — Codex Import Dry-Run Summary Estimator
4
+ *
5
+ * Pre-pass over each candidate Codex rollout to estimate event counts +
6
+ * cost + wire bytes. Uses the SAME projection primitives the live + import
7
+ * pipelines use (`projectCodexDelta` via `runCodexImportAnalytics`), so
8
+ * displayed numbers are exact (not a heuristic).
9
+ *
10
+ * Produces an `ImportSummary` rendered by `commands/import.ts` before the
11
+ * confirm prompt. Parallel to `src/import/claude/summary.ts`.
12
+ */
13
+ Object.defineProperty(exports, "__esModule", { value: true });
14
+ exports.estimateCodexImport = estimateCodexImport;
15
+ const fs_1 = require("fs");
16
+ const collector_1 = require("../../lib/collector");
17
+ const config_1 = require("../../lib/config");
18
+ const logger_1 = require("../../lib/logger");
19
+ const types_1 = require("../types");
20
+ const skip_1 = require("../skip");
21
+ const analytics_runner_1 = require("./analytics-runner");
22
+ const api_request_1 = require("../../analytics/codex/api-request");
23
+ const apply_patch_1 = require("../../analytics/codex/apply-patch");
24
+ const clear_verdict_1 = require("../../clients/codex/hooks/clear-verdict");
25
+ function estimateCodexImport(opts) {
26
+ const counts = (0, types_1.emptyEventCounts)();
27
+ let costUsdSum = 0;
28
+ let wireBytesSum = 0;
29
+ let toImport = 0;
30
+ let skipped = 0;
31
+ const perProject = new Map();
32
+ for (const target of opts.targets) {
33
+ const key = target.projectDir;
34
+ let row = perProject.get(key);
35
+ if (row === undefined) {
36
+ row = { projectDir: key, found: 0, skipped: 0, toImport: 0 };
37
+ perProject.set(key, row);
38
+ }
39
+ row.found += 1;
40
+ if ((0, skip_1.shouldSkip)(target.projectDir, target.sessionId, opts.force)) {
41
+ row.skipped += 1;
42
+ skipped += 1;
43
+ continue;
44
+ }
45
+ row.toImport += 1;
46
+ toImport += 1;
47
+ try {
48
+ const analyticsEnabled = (0, config_1.isAnalyticsEnabled)(target.projectDir);
49
+ const per = estimateOne(target, !analyticsEnabled);
50
+ counts.session_start += per.counts.session_start;
51
+ counts.session_end += per.counts.session_end;
52
+ counts.activity_start += per.counts.activity_start;
53
+ counts.activity_end += per.counts.activity_end;
54
+ counts.tool_call += per.counts.tool_call;
55
+ counts.file_change += per.counts.file_change;
56
+ counts.session_analytics += per.counts.session_analytics;
57
+ counts.api_request += per.counts.api_request;
58
+ costUsdSum += per.costUsd;
59
+ wireBytesSum += per.wireBytes;
60
+ }
61
+ catch (e) {
62
+ logger_1.logger.debug(`codex import summary: estimate failed for ${target.sessionId}: ${e instanceof Error ? e.message : e}`);
63
+ }
64
+ }
65
+ const collectorTarget = opts.targets.length > 0
66
+ ? (0, collector_1.getCollectorTarget)(opts.targets[0].projectDir)
67
+ : null;
68
+ return {
69
+ projects: Array.from(perProject.values()),
70
+ timeRange: opts.timeRange,
71
+ toImportCount: toImport,
72
+ skippedCount: skipped,
73
+ estimatedEvents: counts,
74
+ estimatedCostUsd: costUsdSum,
75
+ estimatedWireBytes: wireBytesSum,
76
+ concurrency: opts.concurrency,
77
+ collectorUrl: collectorTarget !== null ? collectorTarget.url : null,
78
+ };
79
+ }
80
+ function estimateOne(target, skipAnalytics) {
81
+ const counts = (0, types_1.emptyEventCounts)();
82
+ counts.session_start = 1;
83
+ counts.session_end = 1;
84
+ const raw = (0, fs_1.readFileSync)(target.transcriptPath);
85
+ const lines = parseLines(raw.toString("utf-8"));
86
+ // Turn count: one activity per task_started.
87
+ let turnCount = 0;
88
+ for (const ln of lines) {
89
+ if (ln.type === "event_msg" && ln.payload.type === "task_started") {
90
+ turnCount += 1;
91
+ }
92
+ }
93
+ counts.activity_start = turnCount;
94
+ counts.activity_end = turnCount;
95
+ // tool_call + file_change
96
+ const config = (0, config_1.loadConfig)(target.projectDir);
97
+ let toolCalls = 0;
98
+ let fileChanges = 0;
99
+ for (const ln of lines) {
100
+ if (ln.type !== "response_item") {
101
+ continue;
102
+ }
103
+ const payload = ln.payload;
104
+ // Mirror runner.ts: count BOTH function_call and custom_tool_call.
105
+ // Codex 0.135+ emits apply_patch as custom_tool_call (raw `input`),
106
+ // not function_call (JSON `arguments`). Without this dual match,
107
+ // dry-run summary under-counts tool_call + file_change on every
108
+ // Codex 0.135+ rollout, telling operators the import is smaller
109
+ // than it actually is.
110
+ const isFunctionCall = payload.type === "function_call";
111
+ const isCustomToolCall = payload.type === "custom_tool_call";
112
+ if (!isFunctionCall && !isCustomToolCall) {
113
+ continue;
114
+ }
115
+ toolCalls += 1;
116
+ let name;
117
+ let patchBody;
118
+ if (isFunctionCall) {
119
+ const fc = ln.payload;
120
+ name = fc.name;
121
+ patchBody = name === "apply_patch" ? (0, apply_patch_1.extractApplyPatchBody)(fc.arguments) : null;
122
+ }
123
+ else {
124
+ const ctc = ln.payload;
125
+ name = ctc.name;
126
+ patchBody = name === "apply_patch" && typeof ctc.input === "string" ? ctc.input : null;
127
+ }
128
+ if (name === "apply_patch" && patchBody !== null) {
129
+ let entries = [];
130
+ try {
131
+ entries = (0, clear_verdict_1.parseApplyPatchBody)(patchBody);
132
+ }
133
+ catch {
134
+ entries = [];
135
+ }
136
+ for (const e of entries) {
137
+ if ((0, config_1.requiresVerification)(e.path, config)) {
138
+ fileChanges += 1;
139
+ }
140
+ }
141
+ }
142
+ }
143
+ counts.tool_call = toolCalls;
144
+ counts.file_change = fileChanges;
145
+ // api_request (gated)
146
+ if (!skipAnalytics && (0, config_1.isAnalyticsApiRequestEventsEnabled)(target.projectDir)) {
147
+ const meta = firstSessionMeta(lines);
148
+ const ctx = {
149
+ sessionId: target.sessionId,
150
+ projectName: target.projectName,
151
+ defaultModel: (0, api_request_1.defaultModelFromSessionMeta)(meta),
152
+ };
153
+ const apiResult = (0, api_request_1.deriveCodexApiRequestEvents)(lines, ctx);
154
+ counts.api_request = apiResult.events.length;
155
+ }
156
+ // session_analytics
157
+ let costUsd = 0;
158
+ let analyticsWireBytes = 0;
159
+ if (!skipAnalytics) {
160
+ const analytics = (0, analytics_runner_1.runCodexImportAnalytics)({
161
+ sessionId: target.sessionId,
162
+ projectName: target.projectName,
163
+ transcriptPath: target.transcriptPath,
164
+ });
165
+ if (analytics.sessionAnalytics !== null) {
166
+ counts.session_analytics = 1;
167
+ // analytics is now NESTED under the event (see analytics-runner.ts
168
+ // shape fix); reach into the body for cost_usd.
169
+ costUsd = analytics.sessionAnalytics.analytics?.usage?.cost_usd ?? 0;
170
+ analyticsWireBytes = Buffer.byteLength(JSON.stringify(analytics.sessionAnalytics), "utf-8");
171
+ }
172
+ }
173
+ // Wire-byte rough estimate — non-analytics events average ~256 B each
174
+ // (same heuristic Claude summary uses).
175
+ const ESTIMATED_NON_ANALYTICS_EVENT_BYTES = 256;
176
+ const nonAnalyticsCount = counts.session_start + counts.session_end
177
+ + counts.activity_start + counts.activity_end
178
+ + counts.tool_call + counts.file_change
179
+ + counts.api_request;
180
+ const wireBytes = analyticsWireBytes + nonAnalyticsCount * ESTIMATED_NON_ANALYTICS_EVENT_BYTES;
181
+ return { counts, costUsd, wireBytes };
182
+ }
183
+ function parseLines(text) {
184
+ const out = [];
185
+ for (const line of text.split("\n")) {
186
+ if (line.length === 0) {
187
+ continue;
188
+ }
189
+ try {
190
+ out.push(JSON.parse(line));
191
+ }
192
+ catch {
193
+ // skip
194
+ }
195
+ }
196
+ return out;
197
+ }
198
+ function firstSessionMeta(lines) {
199
+ for (const ln of lines) {
200
+ if (ln.type === "session_meta") {
201
+ return ln.payload;
202
+ }
203
+ }
204
+ return null;
205
+ }
206
+ //# sourceMappingURL=summary.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"summary.js","sourceRoot":"","sources":["../../../src/import/codex/summary.ts"],"names":[],"mappings":"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"}
@@ -1 +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"}
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,CAmBrB;AAED,wBAAgB,gBAAgB,CAC5B,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,YAAY,GACvB,iBAAiB,CAsBnB"}
@@ -16,10 +16,18 @@ exports.buildActivityEnd = buildActivityEnd;
16
16
  const ids_1 = require("../ids");
17
17
  function buildActivityStart(sessionId, projectName, boundary) {
18
18
  const activityId = (0, ids_1.deriveActivityId)(sessionId, boundary.turnIndex, boundary.startTime);
19
+ // Guard the timestamp parse — Claude transcript-walk defaults a missing
20
+ // turn-start line timestamp to "" (transcript-walk.ts:145); Codex
21
+ // task_started timestamps come straight from the rollout with no
22
+ // validation. Without this guard, Date.parse returns NaN which
23
+ // JSON.stringify serializes as wire `null`, while the matching
24
+ // `buildActivityEnd` already falls back to startMs (line ~62) — the
25
+ // start/end pair shipped asymmetric values for the same logical turn.
26
+ const startMs = Date.parse(boundary.startTime);
19
27
  return {
20
28
  id: (0, ids_1.deriveActivityStartEventId)(sessionId, boundary.turnIndex),
21
29
  type: "activity_start",
22
- timestamp: Date.parse(boundary.startTime),
30
+ timestamp: Number.isFinite(startMs) ? startMs : 0,
23
31
  session_id: sessionId,
24
32
  project_name: projectName,
25
33
  activity_id: activityId,
@@ -31,6 +39,14 @@ function buildActivityEnd(sessionId, projectName, boundary) {
31
39
  const startMs = Date.parse(boundary.startTime);
32
40
  const endMs = Date.parse(boundary.endTime);
33
41
  const durationMs = Number.isFinite(endMs) && Number.isFinite(startMs) ? endMs - startMs : 0;
42
+ // Omit `reason` — live `endActivity` (hooks/core/activity.ts:60-66)
43
+ // does NOT set this field, so the import-side `"import"` value used
44
+ // to OVERWRITE live's omitted/absent field via backend
45
+ // (session_id, id) latest-wins dedup. Cross-pipeline divergence:
46
+ // Claude live = omitted, Codex live verify-gate = omitted, Codex live
47
+ // monitoring = "checkpoint", import = "import" — same wire field
48
+ // flipping per emit source. Dropping `reason` here aligns import with
49
+ // the dominant live behavior (omitted) and stops the flip.
34
50
  return {
35
51
  id: (0, ids_1.deriveActivityEndEventId)(sessionId, boundary.turnIndex),
36
52
  type: "activity_end",
@@ -39,7 +55,6 @@ function buildActivityEnd(sessionId, projectName, boundary) {
39
55
  project_name: projectName,
40
56
  activity_id: activityId,
41
57
  duration: durationMs,
42
- reason: "import",
43
58
  };
44
59
  }
45
60
  //# sourceMappingURL=activity.js.map
@@ -1 +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"}
1
+ {"version":3,"file":"activity.js","sourceRoot":"","sources":["../../../src/import/events/activity.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;GAUG;;AAcH,gDAuBC;AAED,4CA0BC;AA9DD,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,wEAAwE;IACxE,kEAAkE;IAClE,iEAAiE;IACjE,+DAA+D;IAC/D,+DAA+D;IAC/D,oEAAoE;IACpE,sEAAsE;IACtE,MAAM,OAAO,GAAW,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IACvD,OAAO;QACH,EAAE,EAAE,IAAA,gCAA0B,EAAC,SAAS,EAAE,QAAQ,CAAC,SAAS,CAAC;QAC7D,IAAI,EAAE,gBAAgB;QACtB,SAAS,EAAE,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACjD,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,oEAAoE;IACpE,oEAAoE;IACpE,uDAAuD;IACvD,iEAAiE;IACjE,sEAAsE;IACtE,iEAAiE;IACjE,sEAAsE;IACtE,2DAA2D;IAC3D,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;KACvB,CAAC;AACN,CAAC"}
@@ -19,6 +19,16 @@ export declare function buildSessionStart(target: ImportTarget, client: string):
19
19
  /**
20
20
  * Build a `session_end` event. `endTimestampMs` and `endReason` come from
21
21
  * the transcript tail (last-line timestamp and summary line if present).
22
+ *
23
+ * `endReason` is OPTIONAL — when the transcript carries no derivable
24
+ * end-reason (no `summary` tail line on Claude), pass `undefined` so the
25
+ * field is OMITTED from the wire payload via JSON.stringify. Don't fall
26
+ * back to a placeholder string like `"unknown"` — `session_end.id` is
27
+ * deterministic per session, so the backend dedups live ↔ import on
28
+ * `(session_id, id)` and a placeholder would overwrite live's real
29
+ * reason (`"clear"` / `"logout"` / `"prompt_input_exit"` / …) with junk.
30
+ * JSON.stringify drops `undefined` keys; live's value wins via
31
+ * latest-wins UPSERT.
22
32
  */
23
- export declare function buildSessionEnd(target: ImportTarget, endTimestampMs: number, endReason: string): SessionEndAction;
33
+ export declare function buildSessionEnd(target: ImportTarget, endTimestampMs: number, endReason: string | undefined): SessionEndAction;
24
34
  //# sourceMappingURL=session.d.ts.map
@@ -1 +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"}
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,CAkB1F;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,eAAe,CAC3B,MAAM,EAAE,YAAY,EACpB,cAAc,EAAE,MAAM,EACtB,SAAS,EAAE,MAAM,GAAG,SAAS,GAC9B,gBAAgB,CAUlB"}
@@ -19,6 +19,15 @@ const ids_1 = require("../ids");
19
19
  * this stays generic.
20
20
  */
21
21
  function buildSessionStart(target, client) {
22
+ // Omit `source`. Live mode emits a meaningful host value
23
+ // (`"startup"` / `"resume"` / `"clear"` on Claude; `"startup"` /
24
+ // `"resume"` on Codex) which downstream analytics use to distinguish
25
+ // a real session resume from a fresh boot. `session_start.id` is
26
+ // deterministic per session, so backend `(session_id, id)` latest-wins
27
+ // dedup would otherwise overwrite live's real `source` with the
28
+ // import-time literal `"import"` on every re-import. JSON.stringify
29
+ // drops undefined keys → live's value survives. Mirror of the
30
+ // `session_end.reason` precedent below.
22
31
  return {
23
32
  id: (0, ids_1.deriveSessionStartEventId)(target.sessionId),
24
33
  type: "session_start",
@@ -26,12 +35,21 @@ function buildSessionStart(target, client) {
26
35
  session_id: target.sessionId,
27
36
  project_name: target.projectName,
28
37
  client,
29
- source: "import",
30
38
  };
31
39
  }
32
40
  /**
33
41
  * Build a `session_end` event. `endTimestampMs` and `endReason` come from
34
42
  * the transcript tail (last-line timestamp and summary line if present).
43
+ *
44
+ * `endReason` is OPTIONAL — when the transcript carries no derivable
45
+ * end-reason (no `summary` tail line on Claude), pass `undefined` so the
46
+ * field is OMITTED from the wire payload via JSON.stringify. Don't fall
47
+ * back to a placeholder string like `"unknown"` — `session_end.id` is
48
+ * deterministic per session, so the backend dedups live ↔ import on
49
+ * `(session_id, id)` and a placeholder would overwrite live's real
50
+ * reason (`"clear"` / `"logout"` / `"prompt_input_exit"` / …) with junk.
51
+ * JSON.stringify drops `undefined` keys; live's value wins via
52
+ * latest-wins UPSERT.
35
53
  */
36
54
  function buildSessionEnd(target, endTimestampMs, endReason) {
37
55
  return {
@@ -1 +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"}
1
+ {"version":3,"file":"session.js","sourceRoot":"","sources":["../../../src/import/events/session.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;AAaH,8CAkBC;AAgBD,0CAcC;AAzDD,gCAA4E;AAE5E;;;;;;GAMG;AACH,SAAgB,iBAAiB,CAAC,MAAoB,EAAE,MAAc;IAClE,yDAAyD;IACzD,iEAAiE;IACjE,qEAAqE;IACrE,iEAAiE;IACjE,uEAAuE;IACvE,gEAAgE;IAChE,oEAAoE;IACpE,8DAA8D;IAC9D,wCAAwC;IACxC,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;KACT,CAAC;AACN,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,SAAgB,eAAe,CAC3B,MAAoB,EACpB,cAAsB,EACtB,SAA6B;IAE7B,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"}
@@ -27,11 +27,11 @@ exports.deriveActivityId = deriveActivityId;
27
27
  exports.deriveToolCallEventIdFromToolUseId = deriveToolCallEventIdFromToolUseId;
28
28
  exports.deriveFileChangeEventId = deriveFileChangeEventId;
29
29
  const crypto_1 = require("crypto");
30
- const projection_1 = require("../analytics/projection");
30
+ const event_1 = require("../lib/event");
31
31
  /** SHA-256 the input and format the first 32 hex chars as a UUID. */
32
32
  function sha256Uuid(input) {
33
33
  const hex32 = (0, crypto_1.createHash)("sha256").update(input).digest("hex").slice(0, 32);
34
- return (0, projection_1.formatHexAsUuid)(hex32);
34
+ return (0, event_1.formatHexAsUuid)(hex32);
35
35
  }
36
36
  function deriveSessionStartEventId(sessionId) {
37
37
  return sha256Uuid(`session_start:${sessionId}`);
@@ -68,7 +68,7 @@ function deriveActivityEndEventId(sessionId, turnIndex) {
68
68
  */
69
69
  function deriveActivityId(sessionId, turnIndex, startTime) {
70
70
  const hex32 = (0, crypto_1.createHash)("sha256").update(`${sessionId}|${turnIndex}|${startTime}`).digest("hex").slice(0, 32);
71
- return (0, projection_1.formatHexAsUuid)(hex32);
71
+ return (0, event_1.formatHexAsUuid)(hex32);
72
72
  }
73
73
  /**
74
74
  * Default tool_call event id when `_metadata.toolCallId` is absent (transcript
@@ -1 +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"}
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,wCAA+C;AAE/C,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,uBAAe,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,uBAAe,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"}
@@ -1,16 +1,16 @@
1
1
  /**
2
2
  * IronBee CLI — Import Module Generic Pipeline Dispatcher
3
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.
4
+ * The single point that knows about client-specific runners. Dispatches
5
+ * across Claude AND Codex by default: discovery scans both stores +
6
+ * unions the results; each `ImportTarget` carries a `client`
7
+ * discriminator so per-session runner / estimator routing is automatic.
8
+ * New clients plug in by adding a `discovery` / `summary` / `runner`
9
+ * triple here and one branch in each dispatch function.
10
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.
11
+ * Isolation principle: per-client logic stays separated by file. The CLI
12
+ * command depends on this dispatcher, NOT on any `<client>/*` module
13
+ * directly.
14
14
  */
15
15
  import { ImportResult, ImportScope, ImportSummary, ImportTarget, ImportTimeRange } from "./types";
16
16
  export interface ImportSessionOpts {
@@ -26,16 +26,23 @@ export interface EstimateOpts {
26
26
  force: boolean;
27
27
  }
28
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`.
29
+ * Discover candidate transcripts on disk across every supported client.
30
+ * Each `ImportTarget` carries its own `client` field so downstream
31
+ * dispatch (estimateImport / importSession) routes automatically.
32
+ *
33
+ * `transcript` scope is single-file. Routing is filename-based: Codex
34
+ * rollouts match `rollout-<ISO>-<UUID>.jsonl`, everything else goes to
35
+ * Claude. Without this guard, Claude's `singleTranscriptToTarget` would
36
+ * accept any `.jsonl` with a top-level `timestamp` field — which Codex
37
+ * rollouts happen to have — producing a spurious mis-typed Claude target
38
+ * alongside the correct Codex one.
32
39
  */
33
40
  export declare function findTranscripts(scope: ImportScope): ImportTarget[];
34
41
  /**
35
- * Pre-pass estimate for the dry-run summary. Same dispatch shape as
36
- * `findTranscripts` currently Claude-only.
42
+ * Pre-pass estimate for the dry-run summary. Splits the target list by
43
+ * client, calls each client's estimator, then merges the summaries.
37
44
  */
38
45
  export declare function estimateImport(opts: EstimateOpts): ImportSummary;
39
- /** Per-session entry point. */
46
+ /** Per-session entry point — dispatches on `target.client`. */
40
47
  export declare function importSession(opts: ImportSessionOpts): Promise<ImportResult>;
41
48
  //# sourceMappingURL=pipeline.d.ts.map
@@ -1 +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"}
1
+ {"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../../src/import/pipeline.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAGH,OAAO,EAAyD,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,YAAY,EAAE,eAAe,EAAoB,MAAM,SAAS,CAAC;AAW3K,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;;;;;;;;;;;GAWG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,WAAW,GAAG,YAAY,EAAE,CAWlE;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,YAAY,GAAG,aAAa,CAehE;AAED,+DAA+D;AAC/D,wBAAsB,aAAa,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,YAAY,CAAC,CAKlF"}
@@ -2,46 +2,127 @@
2
2
  /**
3
3
  * IronBee CLI — Import Module Generic Pipeline Dispatcher
4
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.
5
+ * The single point that knows about client-specific runners. Dispatches
6
+ * across Claude AND Codex by default: discovery scans both stores +
7
+ * unions the results; each `ImportTarget` carries a `client`
8
+ * discriminator so per-session runner / estimator routing is automatic.
9
+ * New clients plug in by adding a `discovery` / `summary` / `runner`
10
+ * triple here and one branch in each dispatch function.
11
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.
12
+ * Isolation principle: per-client logic stays separated by file. The CLI
13
+ * command depends on this dispatcher, NOT on any `<client>/*` module
14
+ * directly.
15
15
  */
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  exports.findTranscripts = findTranscripts;
18
18
  exports.estimateImport = estimateImport;
19
19
  exports.importSession = importSession;
20
+ const path_1 = require("path");
21
+ const types_1 = require("./types");
20
22
  const discovery_1 = require("./claude/discovery");
21
23
  const summary_1 = require("./claude/summary");
22
24
  const runner_1 = require("./claude/runner");
25
+ const discovery_2 = require("./codex/discovery");
26
+ const summary_2 = require("./codex/summary");
27
+ const runner_2 = require("./codex/runner");
28
+ /** Codex rollout filenames: `rollout-<ISO>-<UUID>.jsonl`. Mirror of the regex in `analytics/codex/transcript.ts:sessionIdFromRolloutPath`. */
29
+ const CODEX_ROLLOUT_FILENAME = /^rollout-.+-[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\.jsonl$/i;
23
30
  /**
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`.
31
+ * Discover candidate transcripts on disk across every supported client.
32
+ * Each `ImportTarget` carries its own `client` field so downstream
33
+ * dispatch (estimateImport / importSession) routes automatically.
34
+ *
35
+ * `transcript` scope is single-file. Routing is filename-based: Codex
36
+ * rollouts match `rollout-<ISO>-<UUID>.jsonl`, everything else goes to
37
+ * Claude. Without this guard, Claude's `singleTranscriptToTarget` would
38
+ * accept any `.jsonl` with a top-level `timestamp` field — which Codex
39
+ * rollouts happen to have — producing a spurious mis-typed Claude target
40
+ * alongside the correct Codex one.
27
41
  */
28
42
  function findTranscripts(scope) {
29
- return (0, discovery_1.findClaudeTranscripts)(scope);
43
+ if (scope.kind === "transcript") {
44
+ if (CODEX_ROLLOUT_FILENAME.test((0, path_1.basename)(scope.path))) {
45
+ return (0, discovery_2.findCodexTranscripts)(scope);
46
+ }
47
+ return (0, discovery_1.findClaudeTranscripts)(scope);
48
+ }
49
+ const out = [];
50
+ out.push(...(0, discovery_1.findClaudeTranscripts)(scope));
51
+ out.push(...(0, discovery_2.findCodexTranscripts)(scope));
52
+ return out;
30
53
  }
31
54
  /**
32
- * Pre-pass estimate for the dry-run summary. Same dispatch shape as
33
- * `findTranscripts` currently Claude-only.
55
+ * Pre-pass estimate for the dry-run summary. Splits the target list by
56
+ * client, calls each client's estimator, then merges the summaries.
34
57
  */
35
58
  function estimateImport(opts) {
36
- return (0, summary_1.estimateClaudeImport)({
37
- targets: opts.targets,
59
+ const split = partitionByClient(opts.targets);
60
+ const claudeSummary = (0, summary_1.estimateClaudeImport)({
61
+ targets: split.claude,
62
+ timeRange: opts.timeRange,
63
+ concurrency: opts.concurrency,
64
+ force: opts.force,
65
+ });
66
+ const codexSummary = (0, summary_2.estimateCodexImport)({
67
+ targets: split.codex,
38
68
  timeRange: opts.timeRange,
39
69
  concurrency: opts.concurrency,
40
70
  force: opts.force,
41
71
  });
72
+ return mergeSummaries(claudeSummary, codexSummary, opts);
42
73
  }
43
- /** Per-session entry point. */
74
+ /** Per-session entry point — dispatches on `target.client`. */
44
75
  async function importSession(opts) {
76
+ if (opts.target.client === "codex") {
77
+ return (0, runner_2.importCodexSession)({ target: opts.target, force: opts.force, batchSize: opts.batchSize ?? null });
78
+ }
45
79
  return (0, runner_1.importClaudeSession)({ target: opts.target, force: opts.force, batchSize: opts.batchSize ?? null });
46
80
  }
81
+ function partitionByClient(targets) {
82
+ const out = { claude: [], codex: [] };
83
+ for (const t of targets) {
84
+ out[t.client].push(t);
85
+ }
86
+ return out;
87
+ }
88
+ function mergeSummaries(a, b, opts) {
89
+ const counts = (0, types_1.emptyEventCounts)();
90
+ for (const key of Object.keys(counts)) {
91
+ counts[key] = a.estimatedEvents[key] + b.estimatedEvents[key];
92
+ }
93
+ return {
94
+ // Dedupe per-projectDir. Without this, a project with sessions
95
+ // from BOTH Claude AND Codex shows up TWICE in the dry-run table
96
+ // (one row from each per-client summary's own per-project Map),
97
+ // inflating "N project(s) found" and confusing the operator.
98
+ projects: dedupeProjectsByDir([...a.projects, ...b.projects]),
99
+ timeRange: opts.timeRange,
100
+ toImportCount: a.toImportCount + b.toImportCount,
101
+ skippedCount: a.skippedCount + b.skippedCount,
102
+ estimatedEvents: counts,
103
+ estimatedCostUsd: a.estimatedCostUsd + b.estimatedCostUsd,
104
+ estimatedWireBytes: a.estimatedWireBytes + b.estimatedWireBytes,
105
+ concurrency: opts.concurrency,
106
+ // Both summaries' collectorUrl is derived from the FIRST target's
107
+ // project config; when both are present they should be the same
108
+ // (a single collector per machine is the common case). Prefer the
109
+ // non-null one if they diverge — claude first.
110
+ collectorUrl: a.collectorUrl ?? b.collectorUrl,
111
+ };
112
+ }
113
+ /** Merge rows that share a `projectDir`, summing their counts. */
114
+ function dedupeProjectsByDir(rows) {
115
+ const merged = new Map();
116
+ for (const row of rows) {
117
+ const existing = merged.get(row.projectDir);
118
+ if (existing === undefined) {
119
+ merged.set(row.projectDir, { ...row });
120
+ continue;
121
+ }
122
+ existing.found += row.found;
123
+ existing.skipped += row.skipped;
124
+ existing.toImport += row.toImport;
125
+ }
126
+ return Array.from(merged.values());
127
+ }
47
128
  //# sourceMappingURL=pipeline.js.map
@@ -1 +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"}
1
+ {"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../../src/import/pipeline.ts"],"names":[],"mappings":"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"}
@@ -48,7 +48,11 @@ export interface ImportOptions {
48
48
  batchSize: number | null;
49
49
  }
50
50
  /** A single session that survived discovery + filtering, ready for import. */
51
+ /** Which agent produced the transcript — drives per-client runner dispatch. */
52
+ export type ImportClient = "claude" | "codex";
51
53
  export interface ImportTarget {
54
+ /** Source agent — picks the runner / event-builder pipeline. */
55
+ client: ImportClient;
52
56
  sessionId: string;
53
57
  transcriptPath: string;
54
58
  /** Best-effort decoded project directory. May not exist on disk. */