@ironbee-ai/cli 0.15.0 → 0.17.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 (494) hide show
  1. package/CHANGELOG.md +8 -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 +26 -4
  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 +20 -1
  100. package/dist/clients/claude/hooks/clear-verdict.js.map +1 -1
  101. package/dist/clients/claude/hooks/require-verdict.d.ts +8 -1
  102. package/dist/clients/claude/hooks/require-verdict.d.ts.map +1 -1
  103. package/dist/clients/claude/hooks/require-verdict.js +9 -2
  104. package/dist/clients/claude/hooks/require-verdict.js.map +1 -1
  105. package/dist/clients/claude/hooks/require-verification.d.ts +10 -1
  106. package/dist/clients/claude/hooks/require-verification.d.ts.map +1 -1
  107. package/dist/clients/claude/hooks/require-verification.js +34 -6
  108. package/dist/clients/claude/hooks/require-verification.js.map +1 -1
  109. package/dist/clients/claude/hooks/session-end.d.ts.map +1 -1
  110. package/dist/clients/claude/hooks/session-end.js +7 -1
  111. package/dist/clients/claude/hooks/session-end.js.map +1 -1
  112. package/dist/clients/claude/hooks/session-start.d.ts.map +1 -1
  113. package/dist/clients/claude/hooks/session-start.js +7 -1
  114. package/dist/clients/claude/hooks/session-start.js.map +1 -1
  115. package/dist/clients/claude/hooks/session-status.d.ts.map +1 -1
  116. package/dist/clients/claude/hooks/session-status.js +13 -9
  117. package/dist/clients/claude/hooks/session-status.js.map +1 -1
  118. package/dist/clients/claude/hooks/track-action.d.ts.map +1 -1
  119. package/dist/clients/claude/hooks/track-action.js +26 -1
  120. package/dist/clients/claude/hooks/track-action.js.map +1 -1
  121. package/dist/clients/claude/hooks/verify-gate.d.ts.map +1 -1
  122. package/dist/clients/claude/hooks/verify-gate.js +8 -1
  123. package/dist/clients/claude/hooks/verify-gate.js.map +1 -1
  124. package/dist/clients/claude/index.d.ts +7 -2
  125. package/dist/clients/claude/index.d.ts.map +1 -1
  126. package/dist/clients/claude/index.js +72 -32
  127. package/dist/clients/claude/index.js.map +1 -1
  128. package/dist/clients/claude/util.d.ts.map +1 -1
  129. package/dist/clients/claude/util.js +55 -0
  130. package/dist/clients/claude/util.js.map +1 -1
  131. package/dist/clients/codex/commands/ironbee-verify/SKILL.md +58 -0
  132. package/dist/clients/codex/hooks/activity-end.d.ts +9 -0
  133. package/dist/clients/codex/hooks/activity-end.d.ts.map +1 -0
  134. package/dist/clients/codex/hooks/activity-end.js +65 -0
  135. package/dist/clients/codex/hooks/activity-end.js.map +1 -0
  136. package/dist/clients/codex/hooks/activity-start.d.ts +17 -0
  137. package/dist/clients/codex/hooks/activity-start.d.ts.map +1 -0
  138. package/dist/clients/codex/hooks/activity-start.js +38 -0
  139. package/dist/clients/codex/hooks/activity-start.js.map +1 -0
  140. package/dist/clients/codex/hooks/clear-verdict.d.ts +55 -0
  141. package/dist/clients/codex/hooks/clear-verdict.d.ts.map +1 -0
  142. package/dist/clients/codex/hooks/clear-verdict.js +303 -0
  143. package/dist/clients/codex/hooks/clear-verdict.js.map +1 -0
  144. package/dist/clients/codex/hooks/require-verdict.d.ts +36 -0
  145. package/dist/clients/codex/hooks/require-verdict.d.ts.map +1 -0
  146. package/dist/clients/codex/hooks/require-verdict.js +115 -0
  147. package/dist/clients/codex/hooks/require-verdict.js.map +1 -0
  148. package/dist/clients/codex/hooks/require-verification.d.ts +20 -0
  149. package/dist/clients/codex/hooks/require-verification.d.ts.map +1 -0
  150. package/dist/clients/codex/hooks/require-verification.js +156 -0
  151. package/dist/clients/codex/hooks/require-verification.js.map +1 -0
  152. package/dist/clients/codex/hooks/session-start.d.ts +10 -0
  153. package/dist/clients/codex/hooks/session-start.d.ts.map +1 -0
  154. package/dist/clients/codex/hooks/session-start.js +94 -0
  155. package/dist/clients/codex/hooks/session-start.js.map +1 -0
  156. package/dist/clients/codex/hooks/track-action-monitor.d.ts +10 -0
  157. package/dist/clients/codex/hooks/track-action-monitor.d.ts.map +1 -0
  158. package/dist/clients/codex/hooks/track-action-monitor.js +168 -0
  159. package/dist/clients/codex/hooks/track-action-monitor.js.map +1 -0
  160. package/dist/clients/codex/hooks/track-action-pre.d.ts +18 -0
  161. package/dist/clients/codex/hooks/track-action-pre.d.ts.map +1 -0
  162. package/dist/clients/codex/hooks/track-action-pre.js +35 -0
  163. package/dist/clients/codex/hooks/track-action-pre.js.map +1 -0
  164. package/dist/clients/codex/hooks/track-action.d.ts +22 -0
  165. package/dist/clients/codex/hooks/track-action.d.ts.map +1 -0
  166. package/dist/clients/codex/hooks/track-action.js +350 -0
  167. package/dist/clients/codex/hooks/track-action.js.map +1 -0
  168. package/dist/clients/codex/hooks/verify-gate.d.ts +15 -0
  169. package/dist/clients/codex/hooks/verify-gate.d.ts.map +1 -0
  170. package/dist/clients/codex/hooks/verify-gate.js +105 -0
  171. package/dist/clients/codex/hooks/verify-gate.js.map +1 -0
  172. package/dist/clients/codex/index.d.ts +52 -0
  173. package/dist/clients/codex/index.d.ts.map +1 -0
  174. package/dist/clients/codex/index.js +463 -0
  175. package/dist/clients/codex/index.js.map +1 -0
  176. package/dist/clients/codex/platforms/command-verify.backend.md +108 -0
  177. package/dist/clients/codex/platforms/command-verify.browser.md +108 -0
  178. package/dist/clients/codex/platforms/command-verify.node.md +61 -0
  179. package/dist/clients/codex/platforms/rule.backend.md +32 -0
  180. package/dist/clients/codex/platforms/rule.browser.md +17 -0
  181. package/dist/clients/codex/platforms/rule.node.md +28 -0
  182. package/dist/clients/codex/platforms/skill.backend.md +95 -0
  183. package/dist/clients/codex/platforms/skill.browser.md +28 -0
  184. package/dist/clients/codex/platforms/skill.node.md +62 -0
  185. package/dist/clients/codex/rules/ironbee-verification.md +48 -0
  186. package/dist/clients/codex/skills/ironbee-verification.md +80 -0
  187. package/dist/clients/codex/util.d.ts +193 -0
  188. package/dist/clients/codex/util.d.ts.map +1 -0
  189. package/dist/clients/codex/util.js +784 -0
  190. package/dist/clients/codex/util.js.map +1 -0
  191. package/dist/clients/cursor/hooks/activity-end.js +1 -1
  192. package/dist/clients/cursor/hooks/activity-end.js.map +1 -1
  193. package/dist/clients/cursor/hooks/clear-verdict.d.ts +5 -2
  194. package/dist/clients/cursor/hooks/clear-verdict.d.ts.map +1 -1
  195. package/dist/clients/cursor/hooks/clear-verdict.js +16 -4
  196. package/dist/clients/cursor/hooks/clear-verdict.js.map +1 -1
  197. package/dist/clients/cursor/hooks/require-verdict.d.ts +7 -1
  198. package/dist/clients/cursor/hooks/require-verdict.d.ts.map +1 -1
  199. package/dist/clients/cursor/hooks/require-verdict.js +8 -2
  200. package/dist/clients/cursor/hooks/require-verdict.js.map +1 -1
  201. package/dist/clients/cursor/hooks/require-verification.d.ts +8 -1
  202. package/dist/clients/cursor/hooks/require-verification.d.ts.map +1 -1
  203. package/dist/clients/cursor/hooks/require-verification.js +27 -6
  204. package/dist/clients/cursor/hooks/require-verification.js.map +1 -1
  205. package/dist/clients/cursor/hooks/session-end.js +1 -1
  206. package/dist/clients/cursor/hooks/session-end.js.map +1 -1
  207. package/dist/clients/cursor/hooks/verify-gate.d.ts.map +1 -1
  208. package/dist/clients/cursor/hooks/verify-gate.js +6 -1
  209. package/dist/clients/cursor/hooks/verify-gate.js.map +1 -1
  210. package/dist/clients/cursor/index.d.ts +7 -2
  211. package/dist/clients/cursor/index.d.ts.map +1 -1
  212. package/dist/clients/cursor/index.js +69 -30
  213. package/dist/clients/cursor/index.js.map +1 -1
  214. package/dist/clients/registry.d.ts.map +1 -1
  215. package/dist/clients/registry.js +2 -1
  216. package/dist/clients/registry.js.map +1 -1
  217. package/dist/commands/{claude.d.ts → claude/index.d.ts} +1 -1
  218. package/dist/commands/claude/index.d.ts.map +1 -0
  219. package/dist/commands/{claude.js → claude/index.js} +12 -6
  220. package/dist/commands/claude/index.js.map +1 -0
  221. package/dist/commands/{otel.d.ts → claude/otel.d.ts} +5 -1
  222. package/dist/commands/claude/otel.d.ts.map +1 -0
  223. package/dist/commands/{otel.js → claude/otel.js} +9 -5
  224. package/dist/commands/claude/otel.js.map +1 -0
  225. package/dist/commands/claude/process-analytics.d.ts +19 -0
  226. package/dist/commands/claude/process-analytics.d.ts.map +1 -0
  227. package/dist/commands/{process-analytics.js → claude/process-analytics.js} +16 -15
  228. package/dist/commands/claude/process-analytics.js.map +1 -0
  229. package/dist/commands/{statusline-toggle.d.ts → claude/statusline-toggle.d.ts} +2 -2
  230. package/dist/commands/claude/statusline-toggle.d.ts.map +1 -0
  231. package/dist/commands/{statusline-toggle.js → claude/statusline-toggle.js} +8 -8
  232. package/dist/commands/claude/statusline-toggle.js.map +1 -0
  233. package/dist/commands/{statusline.d.ts → claude/statusline.d.ts} +1 -1
  234. package/dist/commands/claude/statusline.d.ts.map +1 -0
  235. package/dist/commands/{statusline.js → claude/statusline.js} +4 -4
  236. package/dist/commands/claude/statusline.js.map +1 -0
  237. package/dist/commands/codex/index.d.ts +11 -0
  238. package/dist/commands/codex/index.d.ts.map +1 -0
  239. package/dist/commands/codex/index.js +17 -0
  240. package/dist/commands/codex/index.js.map +1 -0
  241. package/dist/commands/codex/process-analytics.d.ts +14 -0
  242. package/dist/commands/codex/process-analytics.d.ts.map +1 -0
  243. package/dist/commands/codex/process-analytics.js +111 -0
  244. package/dist/commands/codex/process-analytics.js.map +1 -0
  245. package/dist/commands/hook.js +16 -2
  246. package/dist/commands/hook.js.map +1 -1
  247. package/dist/commands/import.js +3 -3
  248. package/dist/commands/import.js.map +1 -1
  249. package/dist/commands/queue.js +3 -1
  250. package/dist/commands/queue.js.map +1 -1
  251. package/dist/commands/verification-toggle.d.ts +19 -0
  252. package/dist/commands/verification-toggle.d.ts.map +1 -1
  253. package/dist/commands/verification-toggle.js +88 -5
  254. package/dist/commands/verification-toggle.js.map +1 -1
  255. package/dist/commands/verification.d.ts +3 -0
  256. package/dist/commands/verification.d.ts.map +1 -1
  257. package/dist/commands/verification.js +34 -3
  258. package/dist/commands/verification.js.map +1 -1
  259. package/dist/hooks/core/actions.d.ts +17 -1
  260. package/dist/hooks/core/actions.d.ts.map +1 -1
  261. package/dist/hooks/core/actions.js +13 -0
  262. package/dist/hooks/core/actions.js.map +1 -1
  263. package/dist/hooks/core/activity-end.d.ts +8 -0
  264. package/dist/hooks/core/activity-end.d.ts.map +1 -1
  265. package/dist/hooks/core/activity-end.js +19 -0
  266. package/dist/hooks/core/activity-end.js.map +1 -1
  267. package/dist/hooks/core/session-state.d.ts +15 -1
  268. package/dist/hooks/core/session-state.d.ts.map +1 -1
  269. package/dist/hooks/core/session-state.js +102 -7
  270. package/dist/hooks/core/session-state.js.map +1 -1
  271. package/dist/hooks/core/submit-verdict.d.ts.map +1 -1
  272. package/dist/hooks/core/submit-verdict.js +29 -17
  273. package/dist/hooks/core/submit-verdict.js.map +1 -1
  274. package/dist/hooks/core/verification-lifecycle.d.ts +20 -0
  275. package/dist/hooks/core/verification-lifecycle.d.ts.map +1 -1
  276. package/dist/hooks/core/verification-lifecycle.js +41 -0
  277. package/dist/hooks/core/verification-lifecycle.js.map +1 -1
  278. package/dist/hooks/core/verify-gate.d.ts.map +1 -1
  279. package/dist/hooks/core/verify-gate.js +11 -5
  280. package/dist/hooks/core/verify-gate.js.map +1 -1
  281. package/dist/import/claude/analytics-runner.d.ts +1 -1
  282. package/dist/import/claude/analytics-runner.d.ts.map +1 -1
  283. package/dist/import/claude/analytics-runner.js +5 -5
  284. package/dist/import/claude/analytics-runner.js.map +1 -1
  285. package/dist/import/claude/auth-mode.d.ts +1 -1
  286. package/dist/import/claude/auth-mode.d.ts.map +1 -1
  287. package/dist/import/claude/discovery.js +1 -1
  288. package/dist/import/claude/discovery.js.map +1 -1
  289. package/dist/import/claude/encoding.js +1 -1
  290. package/dist/import/claude/encoding.js.map +1 -1
  291. package/dist/import/claude/events/file-change.d.ts +10 -1
  292. package/dist/import/claude/events/file-change.d.ts.map +1 -1
  293. package/dist/import/claude/events/file-change.js +79 -5
  294. package/dist/import/claude/events/file-change.js.map +1 -1
  295. package/dist/import/claude/events/tool-call.d.ts +16 -1
  296. package/dist/import/claude/events/tool-call.d.ts.map +1 -1
  297. package/dist/import/claude/events/tool-call.js +122 -15
  298. package/dist/import/claude/events/tool-call.js.map +1 -1
  299. package/dist/import/claude/runner.d.ts.map +1 -1
  300. package/dist/import/claude/runner.js +45 -3
  301. package/dist/import/claude/runner.js.map +1 -1
  302. package/dist/import/claude/summary.js +1 -1
  303. package/dist/import/claude/summary.js.map +1 -1
  304. package/dist/import/claude/transcript-walk.d.ts +1 -1
  305. package/dist/import/claude/transcript-walk.d.ts.map +1 -1
  306. package/dist/import/claude/transcript-walk.js +11 -4
  307. package/dist/import/claude/transcript-walk.js.map +1 -1
  308. package/dist/import/codex/analytics-runner.d.ts +46 -0
  309. package/dist/import/codex/analytics-runner.d.ts.map +1 -0
  310. package/dist/import/codex/analytics-runner.js +116 -0
  311. package/dist/import/codex/analytics-runner.js.map +1 -0
  312. package/dist/import/codex/discovery.d.ts +33 -0
  313. package/dist/import/codex/discovery.d.ts.map +1 -0
  314. package/dist/import/codex/discovery.js +202 -0
  315. package/dist/import/codex/discovery.js.map +1 -0
  316. package/dist/import/codex/events/file-change.d.ts +42 -0
  317. package/dist/import/codex/events/file-change.d.ts.map +1 -0
  318. package/dist/import/codex/events/file-change.js +125 -0
  319. package/dist/import/codex/events/file-change.js.map +1 -0
  320. package/dist/import/codex/events/tool-call.d.ts +49 -0
  321. package/dist/import/codex/events/tool-call.d.ts.map +1 -0
  322. package/dist/import/codex/events/tool-call.js +151 -0
  323. package/dist/import/codex/events/tool-call.js.map +1 -0
  324. package/dist/import/codex/runner.d.ts +34 -0
  325. package/dist/import/codex/runner.d.ts.map +1 -0
  326. package/dist/import/codex/runner.js +456 -0
  327. package/dist/import/codex/runner.js.map +1 -0
  328. package/dist/import/codex/summary.d.ts +20 -0
  329. package/dist/import/codex/summary.d.ts.map +1 -0
  330. package/dist/import/codex/summary.js +206 -0
  331. package/dist/import/codex/summary.js.map +1 -0
  332. package/dist/import/events/activity.d.ts.map +1 -1
  333. package/dist/import/events/activity.js +17 -2
  334. package/dist/import/events/activity.js.map +1 -1
  335. package/dist/import/events/session.d.ts +11 -1
  336. package/dist/import/events/session.d.ts.map +1 -1
  337. package/dist/import/events/session.js +19 -1
  338. package/dist/import/events/session.js.map +1 -1
  339. package/dist/import/ids.js +3 -3
  340. package/dist/import/ids.js.map +1 -1
  341. package/dist/import/pipeline.d.ts +22 -15
  342. package/dist/import/pipeline.d.ts.map +1 -1
  343. package/dist/import/pipeline.js +99 -18
  344. package/dist/import/pipeline.js.map +1 -1
  345. package/dist/import/types.d.ts +4 -0
  346. package/dist/import/types.d.ts.map +1 -1
  347. package/dist/import/types.js.map +1 -1
  348. package/dist/index.js +9 -11
  349. package/dist/index.js.map +1 -1
  350. package/dist/lib/collector.d.ts +2 -1
  351. package/dist/lib/collector.d.ts.map +1 -1
  352. package/dist/lib/collector.js +28 -3
  353. package/dist/lib/collector.js.map +1 -1
  354. package/dist/lib/config.d.ts +40 -0
  355. package/dist/lib/config.d.ts.map +1 -1
  356. package/dist/lib/config.js +52 -1
  357. package/dist/lib/config.js.map +1 -1
  358. package/dist/lib/event.d.ts +18 -1
  359. package/dist/lib/event.d.ts.map +1 -1
  360. package/dist/lib/event.js +25 -1
  361. package/dist/lib/event.js.map +1 -1
  362. package/dist/lib/platform-section.d.ts.map +1 -1
  363. package/dist/lib/platform-section.js +8 -0
  364. package/dist/lib/platform-section.js.map +1 -1
  365. package/dist/otel/{context → claude/context}/build.d.ts +1 -1
  366. package/dist/otel/claude/context/build.d.ts.map +1 -0
  367. package/dist/otel/{context → claude/context}/build.js +3 -7
  368. package/dist/otel/claude/context/build.js.map +1 -0
  369. package/dist/otel/claude/context/classify.d.ts.map +1 -0
  370. package/dist/otel/claude/context/classify.js.map +1 -0
  371. package/dist/otel/{context → claude/context}/extract.d.ts +1 -1
  372. package/dist/otel/claude/context/extract.d.ts.map +1 -0
  373. package/dist/otel/claude/context/extract.js.map +1 -0
  374. package/dist/otel/claude/context/markers.d.ts.map +1 -0
  375. package/dist/otel/{context → claude/context}/markers.js +22 -3
  376. package/dist/otel/claude/context/markers.js.map +1 -0
  377. package/dist/otel/claude/context/util.d.ts.map +1 -0
  378. package/dist/otel/claude/context/util.js.map +1 -0
  379. package/dist/otel/{daemon → claude/daemon}/ensure.d.ts +1 -1
  380. package/dist/otel/claude/daemon/ensure.d.ts.map +1 -0
  381. package/dist/otel/{daemon → claude/daemon}/ensure.js +6 -6
  382. package/dist/otel/claude/daemon/ensure.js.map +1 -0
  383. package/dist/otel/{daemon → claude/daemon}/forward.d.ts +1 -1
  384. package/dist/otel/claude/daemon/forward.d.ts.map +1 -0
  385. package/dist/otel/{daemon → claude/daemon}/forward.js +0 -0
  386. package/dist/otel/claude/daemon/forward.js.map +1 -0
  387. package/dist/otel/claude/daemon/paths.d.ts.map +1 -0
  388. package/dist/otel/claude/daemon/paths.js.map +1 -0
  389. package/dist/otel/{daemon → claude/daemon}/process.d.ts +1 -1
  390. package/dist/otel/claude/daemon/process.d.ts.map +1 -0
  391. package/dist/otel/{daemon → claude/daemon}/process.js +1 -1
  392. package/dist/otel/claude/daemon/process.js.map +1 -0
  393. package/dist/otel/claude/daemon/reprocess.d.ts.map +1 -0
  394. package/dist/otel/{daemon → claude/daemon}/reprocess.js +2 -2
  395. package/dist/otel/claude/daemon/reprocess.js.map +1 -0
  396. package/dist/otel/claude/log-handler.d.ts.map +1 -0
  397. package/dist/otel/{log-handler.js → claude/log-handler.js} +1 -1
  398. package/dist/otel/claude/log-handler.js.map +1 -0
  399. package/dist/otel/collector.js +4 -4
  400. package/dist/otel/collector.js.map +1 -1
  401. package/dist/queue/flush.d.ts +23 -0
  402. package/dist/queue/flush.d.ts.map +1 -1
  403. package/dist/queue/flush.js +44 -0
  404. package/dist/queue/flush.js.map +1 -1
  405. package/dist/queue/handlers/send-event.d.ts.map +1 -1
  406. package/dist/queue/handlers/send-event.js +5 -4
  407. package/dist/queue/handlers/send-event.js.map +1 -1
  408. package/dist/queue/index.d.ts +2 -2
  409. package/dist/queue/index.d.ts.map +1 -1
  410. package/dist/queue/index.js +4 -1
  411. package/dist/queue/index.js.map +1 -1
  412. package/dist/queue/spawn.d.ts +20 -0
  413. package/dist/queue/spawn.d.ts.map +1 -1
  414. package/dist/queue/spawn.js +37 -0
  415. package/dist/queue/spawn.js.map +1 -1
  416. package/dist/tui/config/schema.d.ts.map +1 -1
  417. package/dist/tui/config/schema.js +8 -0
  418. package/dist/tui/config/schema.js.map +1 -1
  419. package/dist/tui/import/area.js +3 -3
  420. package/dist/tui/import/area.js.map +1 -1
  421. package/package.json +2 -1
  422. package/dist/analytics/classifier.d.ts.map +0 -1
  423. package/dist/analytics/classifier.js.map +0 -1
  424. package/dist/analytics/emit.d.ts.map +0 -1
  425. package/dist/analytics/emit.js.map +0 -1
  426. package/dist/analytics/errors.d.ts.map +0 -1
  427. package/dist/analytics/errors.js.map +0 -1
  428. package/dist/analytics/hook-trigger.d.ts.map +0 -1
  429. package/dist/analytics/hook-trigger.js.map +0 -1
  430. package/dist/analytics/log.d.ts.map +0 -1
  431. package/dist/analytics/log.js.map +0 -1
  432. package/dist/analytics/merge.d.ts.map +0 -1
  433. package/dist/analytics/merge.js.map +0 -1
  434. package/dist/analytics/pricing.d.ts.map +0 -1
  435. package/dist/analytics/pricing.js.map +0 -1
  436. package/dist/analytics/projection.d.ts.map +0 -1
  437. package/dist/analytics/projection.js.map +0 -1
  438. package/dist/analytics/spawn.d.ts.map +0 -1
  439. package/dist/analytics/spawn.js.map +0 -1
  440. package/dist/analytics/state.d.ts.map +0 -1
  441. package/dist/analytics/state.js.map +0 -1
  442. package/dist/analytics/transcript.d.ts.map +0 -1
  443. package/dist/analytics/transcript.js.map +0 -1
  444. package/dist/analytics/types.d.ts.map +0 -1
  445. package/dist/analytics/types.js.map +0 -1
  446. package/dist/commands/claude.d.ts.map +0 -1
  447. package/dist/commands/claude.js.map +0 -1
  448. package/dist/commands/otel.d.ts.map +0 -1
  449. package/dist/commands/otel.js.map +0 -1
  450. package/dist/commands/process-analytics.d.ts +0 -18
  451. package/dist/commands/process-analytics.d.ts.map +0 -1
  452. package/dist/commands/process-analytics.js.map +0 -1
  453. package/dist/commands/statusline-toggle.d.ts.map +0 -1
  454. package/dist/commands/statusline-toggle.js.map +0 -1
  455. package/dist/commands/statusline.d.ts.map +0 -1
  456. package/dist/commands/statusline.js.map +0 -1
  457. package/dist/otel/context/build.d.ts.map +0 -1
  458. package/dist/otel/context/build.js.map +0 -1
  459. package/dist/otel/context/classify.d.ts.map +0 -1
  460. package/dist/otel/context/classify.js.map +0 -1
  461. package/dist/otel/context/extract.d.ts.map +0 -1
  462. package/dist/otel/context/extract.js.map +0 -1
  463. package/dist/otel/context/markers.d.ts.map +0 -1
  464. package/dist/otel/context/markers.js.map +0 -1
  465. package/dist/otel/context/util.d.ts.map +0 -1
  466. package/dist/otel/context/util.js.map +0 -1
  467. package/dist/otel/daemon/ensure.d.ts.map +0 -1
  468. package/dist/otel/daemon/ensure.js.map +0 -1
  469. package/dist/otel/daemon/forward.d.ts.map +0 -1
  470. package/dist/otel/daemon/forward.js.map +0 -1
  471. package/dist/otel/daemon/paths.d.ts.map +0 -1
  472. package/dist/otel/daemon/paths.js.map +0 -1
  473. package/dist/otel/daemon/process.d.ts.map +0 -1
  474. package/dist/otel/daemon/process.js.map +0 -1
  475. package/dist/otel/daemon/reprocess.d.ts.map +0 -1
  476. package/dist/otel/daemon/reprocess.js.map +0 -1
  477. package/dist/otel/log-handler.d.ts.map +0 -1
  478. package/dist/otel/log-handler.js.map +0 -1
  479. /package/dist/analytics/{log.d.ts → claude/log.d.ts} +0 -0
  480. /package/dist/analytics/{transcript.d.ts → claude/transcript.d.ts} +0 -0
  481. /package/dist/analytics/{classifier.d.ts → shared/classifier.d.ts} +0 -0
  482. /package/dist/analytics/{errors.d.ts → shared/errors.d.ts} +0 -0
  483. /package/dist/analytics/{errors.js → shared/errors.js} +0 -0
  484. /package/dist/analytics/{types.js → shared/types.js} +0 -0
  485. /package/dist/otel/{context → claude/context}/classify.d.ts +0 -0
  486. /package/dist/otel/{context → claude/context}/classify.js +0 -0
  487. /package/dist/otel/{context → claude/context}/extract.js +0 -0
  488. /package/dist/otel/{context → claude/context}/markers.d.ts +0 -0
  489. /package/dist/otel/{context → claude/context}/util.d.ts +0 -0
  490. /package/dist/otel/{context → claude/context}/util.js +0 -0
  491. /package/dist/otel/{daemon → claude/daemon}/paths.d.ts +0 -0
  492. /package/dist/otel/{daemon → claude/daemon}/paths.js +0 -0
  493. /package/dist/otel/{daemon → claude/daemon}/reprocess.d.ts +0 -0
  494. /package/dist/otel/{log-handler.d.ts → claude/log-handler.d.ts} +0 -0
@@ -0,0 +1,456 @@
1
+ "use strict";
2
+ /**
3
+ * IronBee CLI — Codex Per-Session Import Runner
4
+ *
5
+ * Orchestrates the full import of one Codex rollout JSONL:
6
+ * 1. Skip check (`<projectDir>/.ironbee/sessions/<id>/`).
7
+ * 2. Parse rollout → extract session_meta + task_started boundaries +
8
+ * function_call + function_call_output + apply_patch + token_count.
9
+ * 3. Build events: session_start, session_end (Stop-as-checkpoint
10
+ * synthetic), activity_start/end per turn, tool_call per
11
+ * function_call (joined to its output via call_id), file_change per
12
+ * apply_patch file entry, api_request per token_count, session_analytics.
13
+ * 4. POST all events via the import emitter (transient retry).
14
+ * 5. Write the marker.
15
+ *
16
+ * Codex-specific because rollout shape diverges from Claude (RolloutItem
17
+ * enum, apply_patch body parser, no per-turn step granularity). Parallel
18
+ * to `src/import/claude/runner.ts` — never mixed in this file.
19
+ *
20
+ * Per-session atomicity: on any unrecoverable failure mid-emit, the
21
+ * marker is NOT written and the session re-attempts on the next
22
+ * `ironbee import` run. Deterministic event ids dedup re-emits at the
23
+ * backend.
24
+ */
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.importCodexSession = importCodexSession;
27
+ const fs_1 = require("fs");
28
+ const collector_1 = require("../../lib/collector");
29
+ const config_1 = require("../../lib/config");
30
+ const logger_1 = require("../../lib/logger");
31
+ const types_1 = require("../types");
32
+ const skip_1 = require("../skip");
33
+ const marker_1 = require("../marker");
34
+ const session_1 = require("../events/session");
35
+ const activity_1 = require("../events/activity");
36
+ const ids_1 = require("../ids");
37
+ const emitter_1 = require("../emitter");
38
+ const tool_call_1 = require("./events/tool-call");
39
+ const file_change_1 = require("./events/file-change");
40
+ const analytics_runner_1 = require("./analytics-runner");
41
+ const api_request_1 = require("../../analytics/codex/api-request");
42
+ const util_1 = require("../../clients/codex/util");
43
+ const apply_patch_1 = require("../../analytics/codex/apply-patch");
44
+ async function importCodexSession(opts) {
45
+ const { target, force } = opts;
46
+ const batchSize = opts.batchSize ?? null;
47
+ const { sessionId, transcriptPath, projectDir, projectName } = target;
48
+ if ((0, skip_1.shouldSkip)(projectDir, sessionId, force)) {
49
+ return { sessionId, status: "skipped", eventsSent: (0, types_1.emptyEventCounts)(), reason: "already tracked" };
50
+ }
51
+ try {
52
+ const collectorTarget = (0, collector_1.getCollectorTarget)(projectDir);
53
+ const analyticsEnabled = (0, config_1.isAnalyticsEnabled)(projectDir);
54
+ const apiRequestEventsEnabled = (0, config_1.isAnalyticsApiRequestEventsEnabled)(projectDir);
55
+ // Parse rollout once.
56
+ const raw = (0, fs_1.readFileSync)(transcriptPath);
57
+ const transcriptOffset = raw.length;
58
+ const lines = parseRolloutLines(raw.toString("utf-8"));
59
+ // Auth/billing best-effort: Codex rollouts don't carry user_email
60
+ // / plan tier (unlike the live SessionStart hook which reads
61
+ // ~/.codex/auth.json). Snapshot the current machine's auth as a
62
+ // heuristic — matches the Claude import auth-mode pattern. Caveat
63
+ // documented: if the importer changed plans between session and
64
+ // import date, events get current-tier label.
65
+ const usage = (0, util_1.resolveCodexUsage)();
66
+ const counts = (0, types_1.emptyEventCounts)();
67
+ const events = [];
68
+ // session_start (timestamp from rollout's session_meta line, surfaced
69
+ // on ImportTarget.sessionStartMs by discovery).
70
+ events.push((0, session_1.buildSessionStart)(target, "codex"));
71
+ counts.session_start = 1;
72
+ // Turn boundaries from task_started events. We close each turn at
73
+ // the NEXT task_started's timestamp, the next agent_message after
74
+ // the last token_count, or the last line timestamp (whichever comes
75
+ // first). Mirrors live "Stop-as-checkpoint" Codex closing.
76
+ const turnBoundaries = deriveTurnBoundaries(lines);
77
+ for (const tb of turnBoundaries) {
78
+ events.push((0, activity_1.buildActivityStart)(sessionId, projectName, tb));
79
+ events.push((0, activity_1.buildActivityEnd)(sessionId, projectName, tb));
80
+ counts.activity_start += 1;
81
+ counts.activity_end += 1;
82
+ }
83
+ // tool_call + file_change events. Walk lines; for each function_call
84
+ // find its matching function_call_output by call_id; attach to the
85
+ // turn whose [startTime, endTime] bracket contains the call's
86
+ // timestamp.
87
+ const outputByCallId = collectCallOutputs(lines);
88
+ for (const ln of lines) {
89
+ if (ln.type !== "response_item") {
90
+ continue;
91
+ }
92
+ const payload = ln.payload;
93
+ // Codex 0.135+ emits `apply_patch` as `custom_tool_call` (not
94
+ // `function_call`) — the input field is the RAW patch body, not
95
+ // JSON-wrapped. Without this branch, the import path drops EVERY
96
+ // apply_patch invocation → zero file_change + zero tool_call
97
+ // events for code edits on Codex 0.135+. Verified empirically:
98
+ // 0 function_call(apply_patch) vs N custom_tool_call(apply_patch)
99
+ // across all 2026/05+ rollouts.
100
+ const isFunctionCall = payload.type === "function_call";
101
+ const isCustomToolCall = payload.type === "custom_tool_call";
102
+ if (!isFunctionCall && !isCustomToolCall) {
103
+ continue;
104
+ }
105
+ const tb = findContainingTurn(turnBoundaries, ln.timestamp);
106
+ if (tb === null) {
107
+ continue; // orphan call outside any turn — drop
108
+ }
109
+ const activityId = (0, ids_1.deriveActivityId)(sessionId, tb.turnIndex, tb.startTime);
110
+ // Normalize the two shapes to (callId, name, args, rawBody) for
111
+ // shared downstream handling. function_call uses JSON-encoded
112
+ // `arguments`; custom_tool_call uses raw `input` (apply_patch
113
+ // body directly, no JSON wrapper).
114
+ let callId;
115
+ let name;
116
+ let args;
117
+ let rawApplyPatchBody;
118
+ if (isFunctionCall) {
119
+ const fc = ln.payload;
120
+ callId = fc.call_id;
121
+ name = fc.name;
122
+ args = safeParseArgs(fc.arguments);
123
+ rawApplyPatchBody = name === "apply_patch" ? (0, apply_patch_1.extractApplyPatchBody)(fc.arguments) : null;
124
+ }
125
+ else {
126
+ const ctc = ln.payload;
127
+ callId = ctc.call_id;
128
+ name = ctc.name;
129
+ // Wrap the raw body as `{ command: <raw> }` — mirrors Codex
130
+ // hook stdin's custom_tool_call shape, which uses "command"
131
+ // as the wrapper key (live `tool_input.command`). Without
132
+ // matching keys, `tool_input_size = safeStringifyBytes(toolInput)`
133
+ // diverges by 2 bytes per apply_patch between live ("command":...)
134
+ // and import ("input":...). `extractCodexToolInput` accepts
135
+ // either key for apply_patch, so wire `tool_input` is
136
+ // symmetric on either; the parity fix targets `tool_input_size`.
137
+ args = typeof ctc.input === "string" ? { command: ctc.input } : {};
138
+ rawApplyPatchBody = name === "apply_patch" && typeof ctc.input === "string"
139
+ ? ctc.input
140
+ : null;
141
+ }
142
+ const call = {
143
+ callId,
144
+ name,
145
+ args,
146
+ timestamp: ln.timestamp,
147
+ };
148
+ const out = outputByCallId.get(callId) ?? null;
149
+ // Skip calls that never produced a `function_call_output` /
150
+ // `custom_tool_call_output` — live Codex `track-action.ts` fires
151
+ // only on PostToolUse (after the tool returns), so a call that
152
+ // was interrupted (Esc cancel, session-end mid-tool, rollout
153
+ // truncated) emits NO live wire event. Without this skip, import
154
+ // would inject a phantom `tool_call` (and phantom `file_change`
155
+ // for apply_patch) per orphan call, with no live counterpart for
156
+ // backend `(session_id, id)` dedup to collapse. Mirror of the
157
+ // Claude-side round-97 fix at `import/claude/runner.ts:212-225`.
158
+ if (out === null) {
159
+ continue;
160
+ }
161
+ events.push((0, tool_call_1.buildCodexToolCall)({ sessionId, projectName, activityId, call, output: out }));
162
+ counts.tool_call += 1;
163
+ // apply_patch → file_change events
164
+ if (name === "apply_patch" && rawApplyPatchBody !== null) {
165
+ // Live emits file_change at PostToolUse (`Date.now()` end-of-
166
+ // tool). Prefer the function_call_output timestamp so live
167
+ // and import ship matching `timestamp` values for the same
168
+ // logical event — same divergence we fixed for tool_call
169
+ // (mean ~300ms, P95 ~1.3s on the real-rollout corpus).
170
+ const fcTimestamp = out !== null ? out.timestamp : ln.timestamp;
171
+ const fcEvents = (0, file_change_1.buildCodexFileChanges)({
172
+ sessionId,
173
+ projectName,
174
+ projectDir,
175
+ activityId,
176
+ callId,
177
+ timestamp: fcTimestamp,
178
+ patchBody: rawApplyPatchBody,
179
+ });
180
+ for (const ev of fcEvents) {
181
+ events.push(ev);
182
+ counts.file_change += 1;
183
+ }
184
+ }
185
+ }
186
+ // api_request events from token_count walk (reuse live deriver). Gate
187
+ // is the same flag the live emit-codex respects.
188
+ if (apiRequestEventsEnabled) {
189
+ const apiCtx = {
190
+ sessionId,
191
+ projectName,
192
+ userEmail: usage.userEmail,
193
+ usageType: usage.usageType,
194
+ usagePlan: usage.usagePlan,
195
+ defaultModel: (0, api_request_1.defaultModelFromSessionMeta)(firstSessionMeta(lines)),
196
+ };
197
+ const apiResult = (0, api_request_1.deriveCodexApiRequestEvents)(lines, apiCtx);
198
+ for (const ev of apiResult.events) {
199
+ events.push(ev);
200
+ counts.api_request += 1;
201
+ }
202
+ }
203
+ // session_analytics master event (master switch gate).
204
+ let analyticsOffset = transcriptOffset;
205
+ if (analyticsEnabled) {
206
+ // userEmail / usage_* are NOT passed here; applyUsageToEvents
207
+ // below stamps them on every event (this one included).
208
+ const analytics = (0, analytics_runner_1.runCodexImportAnalytics)({
209
+ sessionId,
210
+ projectName,
211
+ transcriptPath,
212
+ endReason: "import",
213
+ });
214
+ analyticsOffset = analytics.transcriptOffset;
215
+ if (analytics.sessionAnalytics !== null) {
216
+ events.push(analytics.sessionAnalytics);
217
+ counts.session_analytics = 1;
218
+ }
219
+ }
220
+ else {
221
+ logger_1.logger.debug(`codex import-runner: session ${sessionId} — analytics disabled, suppressing session_analytics emission`);
222
+ }
223
+ // session_end (Stop-as-checkpoint synthetic — Codex has no native
224
+ // SessionEnd event in the rollout, so we close at last-line
225
+ // timestamp with reason "checkpoint" to match live verify-gate.ts /
226
+ // activity-end.ts. Live and import share `deriveSessionEndEventId =
227
+ // deterministicSessionEndId` (sha256("session_end:" + sessionId)),
228
+ // so backend `(session_id, id)` dedups to one row — the reason field
229
+ // MUST match across the two paths so dedupe latest-wins doesn't flip
230
+ // the wire shape between runs.
231
+ const lastTsMs = lastLineTimestamp(lines, target.sessionStartMs);
232
+ events.push((0, session_1.buildSessionEnd)(target, lastTsMs, "checkpoint"));
233
+ counts.session_end = 1;
234
+ // Stamp user_email + usage_type + usage_plan on every event
235
+ // (mirror of Claude import's applyUsageToEvents helper).
236
+ applyUsageToEvents(events, usage);
237
+ await (0, emitter_1.postEvents)(events, {
238
+ sessionId,
239
+ projectDir,
240
+ target: collectorTarget,
241
+ ...(batchSize !== null ? { batchSize } : {}),
242
+ });
243
+ (0, marker_1.writeImportMarker)(projectDir, sessionId, transcriptPath, analyticsOffset, counts);
244
+ return { sessionId, status: "imported", eventsSent: counts };
245
+ }
246
+ catch (e) {
247
+ const reason = e instanceof Error ? e.message : String(e);
248
+ logger_1.logger.debug(`codex import-runner: session ${sessionId} failed: ${reason}`);
249
+ return { sessionId, status: "failed", eventsSent: (0, types_1.emptyEventCounts)(), reason };
250
+ }
251
+ }
252
+ function parseRolloutLines(text) {
253
+ const out = [];
254
+ for (const line of text.split("\n")) {
255
+ if (line.length === 0) {
256
+ continue;
257
+ }
258
+ try {
259
+ out.push(JSON.parse(line));
260
+ }
261
+ catch {
262
+ // malformed — skip
263
+ }
264
+ }
265
+ return out;
266
+ }
267
+ function safeParseArgs(args) {
268
+ try {
269
+ const parsed = JSON.parse(args);
270
+ if (parsed !== null && typeof parsed === "object" && !Array.isArray(parsed)) {
271
+ return parsed;
272
+ }
273
+ }
274
+ catch {
275
+ // ignore
276
+ }
277
+ return {};
278
+ }
279
+ function collectCallOutputs(lines) {
280
+ const out = new Map();
281
+ for (const ln of lines) {
282
+ if (ln.type !== "response_item") {
283
+ continue;
284
+ }
285
+ const payload = ln.payload;
286
+ // Codex 0.135+ emits `custom_tool_call_output` (paired with
287
+ // `custom_tool_call`) — same wire shape (call_id + output string).
288
+ // Without this dual match, apply_patch outputs are silently dropped
289
+ // → tool_call events for apply_patch get tool_response_size=0,
290
+ // duration=null, error=undefined despite real output being available.
291
+ if (payload.type !== "function_call_output" && payload.type !== "custom_tool_call_output") {
292
+ continue;
293
+ }
294
+ const fco = ln.payload;
295
+ const output = typeof fco.output === "string" ? fco.output : "";
296
+ out.set(fco.call_id, {
297
+ callId: fco.call_id,
298
+ output,
299
+ timestamp: ln.timestamp,
300
+ isError: looksLikeError(output),
301
+ });
302
+ }
303
+ return out;
304
+ }
305
+ /**
306
+ * Codex doesn't expose a structured is_error flag — heuristic from
307
+ * output text. Patterns are line-anchored or terminal-match so a
308
+ * successful tool's stdout that legitimately contains the substring
309
+ * (test logs, troubleshooting text) doesn't false-positive into a fake
310
+ * error attribution.
311
+ */
312
+ function looksLikeError(text) {
313
+ if (text.length === 0) {
314
+ return false;
315
+ }
316
+ // Codex appends "Process exited with code N" as the LAST line of
317
+ // exec output; require it to start a line so a test log mentioning
318
+ // the phrase doesn't trip the heuristic.
319
+ if (/(?:^|\n)Process exited with code [1-9]/.test(text)) {
320
+ return true;
321
+ }
322
+ // Codex 0.135+ uses `Exit code: N` (newer custom_tool_call_output +
323
+ // exec_command format). Without this branch, every failed apply_patch
324
+ // and exec_command on Codex 0.135+ ships `tool_call.error: undefined`
325
+ // → backend sees the call as success despite real failure. Mirror
326
+ // `classifyOutputError` (projection.ts) which already handles both.
327
+ if (/^Exit code:\s*[1-9]/m.test(text)) {
328
+ return true;
329
+ }
330
+ // apply_patch verification failures (Codex 0.135+ shape, NOT "Process
331
+ // exited" — atomic-patch rejection has its own text).
332
+ if (/apply_patch verification failed/i.test(text) || /failed to find expected lines/i.test(text)) {
333
+ return true;
334
+ }
335
+ if (/^\s*Error\b/.test(text)) {
336
+ return true;
337
+ }
338
+ // Three patterns the analytics-side classifier counts under
339
+ // `errors.tool_error_categories.{file_changed,file_too_large,file_not_found}`
340
+ // but `looksLikeError` previously missed. Without these, the live
341
+ // `tool_call.error` was `undefined` for `cat missing.txt` / stale-read
342
+ // / oversized-read scenarios while `session_analytics.errors.tool_errors_total`
343
+ // counted them — backend `Σ tool_call where error IS NOT NULL` then
344
+ // diverged from the session aggregate on every Codex session with a
345
+ // file-path typo. Mirror of `clients/codex/hooks/track-action.ts` +
346
+ // `clients/codex/hooks/track-action-monitor.ts`.
347
+ if (/modified since (?:last )?read|stale read/i.test(text)) {
348
+ return true;
349
+ }
350
+ if (/file (?:is )?too large|exceeds/i.test(text)) {
351
+ return true;
352
+ }
353
+ if (/file not found|No such file or directory|does not exist/i.test(text)) {
354
+ return true;
355
+ }
356
+ // User-interrupt sentinel from Codex — appears as the sole/last
357
+ // content of the output when the user pressed Esc.
358
+ if (/(?:^|\n)\[Request interrupted by user\]/.test(text)) {
359
+ return true;
360
+ }
361
+ return false;
362
+ }
363
+ /**
364
+ * Walk task_started events to define turn boundaries. Each turn's
365
+ * startTime = task_started.timestamp; endTime = next task_started's
366
+ * timestamp OR the last line's timestamp.
367
+ */
368
+ function deriveTurnBoundaries(lines) {
369
+ const taskStarts = [];
370
+ for (let i = 0; i < lines.length; i++) {
371
+ const ln = lines[i];
372
+ if (ln.type === "event_msg" && ln.payload.type === "task_started") {
373
+ taskStarts.push({ idx: i, ts: ln.timestamp });
374
+ }
375
+ }
376
+ if (taskStarts.length === 0) {
377
+ return [];
378
+ }
379
+ const lastTs = lines[lines.length - 1]?.timestamp ?? taskStarts[taskStarts.length - 1].ts;
380
+ const out = [];
381
+ for (let k = 0; k < taskStarts.length; k++) {
382
+ const startTime = taskStarts[k].ts;
383
+ const endTime = k + 1 < taskStarts.length ? taskStarts[k + 1].ts : lastTs;
384
+ out.push({ turnIndex: k + 1, startTime, endTime });
385
+ }
386
+ return out;
387
+ }
388
+ function findContainingTurn(turns, timestamp) {
389
+ const tsMs = Date.parse(timestamp);
390
+ if (!Number.isFinite(tsMs)) {
391
+ return null;
392
+ }
393
+ for (const tb of turns) {
394
+ const startMs = Date.parse(tb.startTime);
395
+ const endMs = Date.parse(tb.endTime);
396
+ if (!Number.isFinite(startMs) || !Number.isFinite(endMs)) {
397
+ continue;
398
+ }
399
+ if (tsMs >= startMs && tsMs <= endMs) {
400
+ return tb;
401
+ }
402
+ }
403
+ // No turn brackets this timestamp. We previously fell back to
404
+ // `turns[turns.length - 1]` for function_calls after the last
405
+ // token_count, but that also mis-attributed orphan pre-first-
406
+ // task_started calls (malformed/sliced rollouts) to the LAST turn.
407
+ // Return null and let the caller `continue` past them — runtime
408
+ // Codex always wraps tool calls in a turn, so dropped orphans
409
+ // signal malformed input, not user-relevant work.
410
+ return null;
411
+ }
412
+ function firstSessionMeta(lines) {
413
+ for (const ln of lines) {
414
+ if (ln.type === "session_meta") {
415
+ return ln.payload;
416
+ }
417
+ }
418
+ return null;
419
+ }
420
+ function lastLineTimestamp(lines, fallbackMs) {
421
+ for (let i = lines.length - 1; i >= 0; i--) {
422
+ const ts = Date.parse(lines[i].timestamp);
423
+ if (Number.isFinite(ts)) {
424
+ return ts;
425
+ }
426
+ }
427
+ return fallbackMs;
428
+ }
429
+ /**
430
+ * Stamp `user_email` + `usage_type` + `usage_plan` on every event. Mirror of
431
+ * Claude import's applyUsageToEvents — the wire schema declares these on
432
+ * the base Event, so we set them via Object.assign rather than per-type.
433
+ */
434
+ function applyUsageToEvents(events, usage) {
435
+ for (const ev of events) {
436
+ if (usage.userEmail !== undefined) {
437
+ ev.user_email = usage.userEmail;
438
+ // Live emit (analytics/codex/emit.ts:122 → projection.ts:1607)
439
+ // also writes user_email into the SessionAnalytics body. Mirror
440
+ // so backend consumers querying analytics.user_email (the nested
441
+ // JSON blob) see the same value as live-tracked sessions —
442
+ // backend latest-wins dedup on (session_id, id) would otherwise
443
+ // overwrite live's body field with undefined on re-import.
444
+ if (ev.type === "session_analytics") {
445
+ ev.analytics.user_email = usage.userEmail;
446
+ }
447
+ }
448
+ if (usage.usageType !== undefined) {
449
+ ev.usage_type = usage.usageType;
450
+ }
451
+ if (usage.usagePlan !== undefined) {
452
+ ev.usage_plan = usage.usagePlan;
453
+ }
454
+ }
455
+ }
456
+ //# sourceMappingURL=runner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runner.js","sourceRoot":"","sources":["../../../src/import/codex/runner.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * IronBee CLI — Codex Import Dry-Run Summary Estimator
3
+ *
4
+ * Pre-pass over each candidate Codex rollout to estimate event counts +
5
+ * cost + wire bytes. Uses the SAME projection primitives the live + import
6
+ * pipelines use (`projectCodexDelta` via `runCodexImportAnalytics`), so
7
+ * displayed numbers are exact (not a heuristic).
8
+ *
9
+ * Produces an `ImportSummary` rendered by `commands/import.ts` before the
10
+ * confirm prompt. Parallel to `src/import/claude/summary.ts`.
11
+ */
12
+ import { ImportSummary, ImportTarget, ImportTimeRange } from "../types";
13
+ export interface CodexSummaryOpts {
14
+ targets: ImportTarget[];
15
+ timeRange: ImportTimeRange | null;
16
+ concurrency: number;
17
+ force: boolean;
18
+ }
19
+ export declare function estimateCodexImport(opts: CodexSummaryOpts): ImportSummary;
20
+ //# sourceMappingURL=summary.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"summary.d.ts","sourceRoot":"","sources":["../../../src/import/codex/summary.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAYH,OAAO,EAIH,aAAa,EACb,YAAY,EACZ,eAAe,EAClB,MAAM,UAAU,CAAC;AAgBlB,MAAM,WAAW,gBAAgB;IAC7B,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,SAAS,EAAE,eAAe,GAAG,IAAI,CAAC;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,OAAO,CAAC;CAClB;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,gBAAgB,GAAG,aAAa,CA0DzE"}