@ironbee-ai/cli 0.14.1 → 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 (500) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/README.md +2 -95
  3. package/dist/analytics/{emit.d.ts → claude/emit.d.ts} +1 -1
  4. package/dist/analytics/claude/emit.d.ts.map +1 -0
  5. package/dist/analytics/{emit.js → claude/emit.js} +34 -7
  6. package/dist/analytics/claude/emit.js.map +1 -0
  7. package/dist/analytics/{hook-trigger.d.ts → claude/hook-trigger.d.ts} +1 -1
  8. package/dist/analytics/claude/hook-trigger.d.ts.map +1 -0
  9. package/dist/analytics/{hook-trigger.js → claude/hook-trigger.js} +2 -2
  10. package/dist/analytics/claude/hook-trigger.js.map +1 -0
  11. package/dist/analytics/claude/log.d.ts.map +1 -0
  12. package/dist/analytics/{log.js → claude/log.js} +1 -1
  13. package/dist/analytics/claude/log.js.map +1 -0
  14. package/dist/analytics/{merge.d.ts → claude/merge.d.ts} +2 -1
  15. package/dist/analytics/claude/merge.d.ts.map +1 -0
  16. package/dist/analytics/{merge.js → claude/merge.js} +13 -1
  17. package/dist/analytics/claude/merge.js.map +1 -0
  18. package/dist/analytics/{pricing.d.ts → claude/pricing.d.ts} +1 -13
  19. package/dist/analytics/claude/pricing.d.ts.map +1 -0
  20. package/dist/analytics/{pricing.js → claude/pricing.js} +6 -14
  21. package/dist/analytics/claude/pricing.js.map +1 -0
  22. package/dist/analytics/{projection.d.ts → claude/projection.d.ts} +31 -7
  23. package/dist/analytics/claude/projection.d.ts.map +1 -0
  24. package/dist/analytics/{projection.js → claude/projection.js} +631 -327
  25. package/dist/analytics/claude/projection.js.map +1 -0
  26. package/dist/analytics/{spawn.d.ts → claude/spawn.d.ts} +4 -4
  27. package/dist/analytics/claude/spawn.d.ts.map +1 -0
  28. package/dist/analytics/{spawn.js → claude/spawn.js} +4 -3
  29. package/dist/analytics/claude/spawn.js.map +1 -0
  30. package/dist/analytics/{state.d.ts → claude/state.d.ts} +1 -1
  31. package/dist/analytics/claude/state.d.ts.map +1 -0
  32. package/dist/analytics/{state.js → claude/state.js} +2 -2
  33. package/dist/analytics/claude/state.js.map +1 -0
  34. package/dist/analytics/claude/transcript.d.ts.map +1 -0
  35. package/dist/analytics/{transcript.js → claude/transcript.js} +1 -1
  36. package/dist/analytics/claude/transcript.js.map +1 -0
  37. package/dist/analytics/codex/api-request.d.ts +108 -0
  38. package/dist/analytics/codex/api-request.d.ts.map +1 -0
  39. package/dist/analytics/codex/api-request.js +155 -0
  40. package/dist/analytics/codex/api-request.js.map +1 -0
  41. package/dist/analytics/codex/apply-patch.d.ts +21 -0
  42. package/dist/analytics/codex/apply-patch.d.ts.map +1 -0
  43. package/dist/analytics/codex/apply-patch.js +49 -0
  44. package/dist/analytics/codex/apply-patch.js.map +1 -0
  45. package/dist/analytics/codex/classifier.d.ts +28 -0
  46. package/dist/analytics/codex/classifier.d.ts.map +1 -0
  47. package/dist/analytics/codex/classifier.js +111 -0
  48. package/dist/analytics/codex/classifier.js.map +1 -0
  49. package/dist/analytics/codex/emit.d.ts +47 -0
  50. package/dist/analytics/codex/emit.d.ts.map +1 -0
  51. package/dist/analytics/codex/emit.js +158 -0
  52. package/dist/analytics/codex/emit.js.map +1 -0
  53. package/dist/analytics/codex/events-emit.d.ts +62 -0
  54. package/dist/analytics/codex/events-emit.d.ts.map +1 -0
  55. package/dist/analytics/codex/events-emit.js +555 -0
  56. package/dist/analytics/codex/events-emit.js.map +1 -0
  57. package/dist/analytics/codex/pricing.d.ts +57 -0
  58. package/dist/analytics/codex/pricing.d.ts.map +1 -0
  59. package/dist/analytics/codex/pricing.js +125 -0
  60. package/dist/analytics/codex/pricing.js.map +1 -0
  61. package/dist/analytics/codex/projection.d.ts +51 -0
  62. package/dist/analytics/codex/projection.d.ts.map +1 -0
  63. package/dist/analytics/codex/projection.js +1477 -0
  64. package/dist/analytics/codex/projection.js.map +1 -0
  65. package/dist/analytics/codex/spawn.d.ts +27 -0
  66. package/dist/analytics/codex/spawn.d.ts.map +1 -0
  67. package/dist/analytics/codex/spawn.js +64 -0
  68. package/dist/analytics/codex/spawn.js.map +1 -0
  69. package/dist/analytics/codex/status-snapshot.d.ts +80 -0
  70. package/dist/analytics/codex/status-snapshot.d.ts.map +1 -0
  71. package/dist/analytics/codex/status-snapshot.js +206 -0
  72. package/dist/analytics/codex/status-snapshot.js.map +1 -0
  73. package/dist/analytics/codex/transcript.d.ts +51 -0
  74. package/dist/analytics/codex/transcript.d.ts.map +1 -0
  75. package/dist/analytics/codex/transcript.js +134 -0
  76. package/dist/analytics/codex/transcript.js.map +1 -0
  77. package/dist/analytics/codex/types.d.ts +253 -0
  78. package/dist/analytics/codex/types.d.ts.map +1 -0
  79. package/dist/analytics/codex/types.js +29 -0
  80. package/dist/analytics/codex/types.js.map +1 -0
  81. package/dist/analytics/shared/classifier.d.ts.map +1 -0
  82. package/dist/analytics/{classifier.js → shared/classifier.js} +9 -0
  83. package/dist/analytics/shared/classifier.js.map +1 -0
  84. package/dist/analytics/shared/errors.d.ts.map +1 -0
  85. package/dist/analytics/shared/errors.js.map +1 -0
  86. package/dist/analytics/shared/tokens.d.ts +14 -0
  87. package/dist/analytics/shared/tokens.d.ts.map +1 -0
  88. package/dist/analytics/shared/tokens.js +17 -0
  89. package/dist/analytics/shared/tokens.js.map +1 -0
  90. package/dist/analytics/{types.d.ts → shared/types.d.ts} +42 -9
  91. package/dist/analytics/shared/types.d.ts.map +1 -0
  92. package/dist/analytics/shared/types.js.map +1 -0
  93. package/dist/clients/base.d.ts +9 -0
  94. package/dist/clients/base.d.ts.map +1 -1
  95. package/dist/clients/claude/hooks/activity-end.js +1 -1
  96. package/dist/clients/claude/hooks/activity-end.js.map +1 -1
  97. package/dist/clients/claude/hooks/activity-start.js +1 -1
  98. package/dist/clients/claude/hooks/activity-start.js.map +1 -1
  99. package/dist/clients/claude/hooks/clear-verdict.d.ts.map +1 -1
  100. package/dist/clients/claude/hooks/clear-verdict.js +14 -0
  101. package/dist/clients/claude/hooks/clear-verdict.js.map +1 -1
  102. package/dist/clients/claude/hooks/session-end.d.ts.map +1 -1
  103. package/dist/clients/claude/hooks/session-end.js +7 -1
  104. package/dist/clients/claude/hooks/session-end.js.map +1 -1
  105. package/dist/clients/claude/hooks/session-start.d.ts.map +1 -1
  106. package/dist/clients/claude/hooks/session-start.js +7 -1
  107. package/dist/clients/claude/hooks/session-start.js.map +1 -1
  108. package/dist/clients/claude/hooks/session-status.d.ts.map +1 -1
  109. package/dist/clients/claude/hooks/session-status.js +13 -9
  110. package/dist/clients/claude/hooks/session-status.js.map +1 -1
  111. package/dist/clients/claude/hooks/track-action.d.ts.map +1 -1
  112. package/dist/clients/claude/hooks/track-action.js +26 -1
  113. package/dist/clients/claude/hooks/track-action.js.map +1 -1
  114. package/dist/clients/claude/hooks/verify-gate.d.ts.map +1 -1
  115. package/dist/clients/claude/hooks/verify-gate.js +8 -1
  116. package/dist/clients/claude/hooks/verify-gate.js.map +1 -1
  117. package/dist/clients/claude/index.d.ts +1 -0
  118. package/dist/clients/claude/index.d.ts.map +1 -1
  119. package/dist/clients/claude/index.js +18 -14
  120. package/dist/clients/claude/index.js.map +1 -1
  121. package/dist/clients/claude/util.d.ts.map +1 -1
  122. package/dist/clients/claude/util.js +55 -0
  123. package/dist/clients/claude/util.js.map +1 -1
  124. package/dist/clients/codex/commands/ironbee-verify/SKILL.md +58 -0
  125. package/dist/clients/codex/hooks/activity-end.d.ts +9 -0
  126. package/dist/clients/codex/hooks/activity-end.d.ts.map +1 -0
  127. package/dist/clients/codex/hooks/activity-end.js +65 -0
  128. package/dist/clients/codex/hooks/activity-end.js.map +1 -0
  129. package/dist/clients/codex/hooks/activity-start.d.ts +17 -0
  130. package/dist/clients/codex/hooks/activity-start.d.ts.map +1 -0
  131. package/dist/clients/codex/hooks/activity-start.js +38 -0
  132. package/dist/clients/codex/hooks/activity-start.js.map +1 -0
  133. package/dist/clients/codex/hooks/clear-verdict.d.ts +55 -0
  134. package/dist/clients/codex/hooks/clear-verdict.d.ts.map +1 -0
  135. package/dist/clients/codex/hooks/clear-verdict.js +299 -0
  136. package/dist/clients/codex/hooks/clear-verdict.js.map +1 -0
  137. package/dist/clients/codex/hooks/require-verdict.d.ts +30 -0
  138. package/dist/clients/codex/hooks/require-verdict.d.ts.map +1 -0
  139. package/dist/clients/codex/hooks/require-verdict.js +109 -0
  140. package/dist/clients/codex/hooks/require-verdict.js.map +1 -0
  141. package/dist/clients/codex/hooks/require-verification.d.ts +12 -0
  142. package/dist/clients/codex/hooks/require-verification.d.ts.map +1 -0
  143. package/dist/clients/codex/hooks/require-verification.js +136 -0
  144. package/dist/clients/codex/hooks/require-verification.js.map +1 -0
  145. package/dist/clients/codex/hooks/session-start.d.ts +10 -0
  146. package/dist/clients/codex/hooks/session-start.d.ts.map +1 -0
  147. package/dist/clients/codex/hooks/session-start.js +94 -0
  148. package/dist/clients/codex/hooks/session-start.js.map +1 -0
  149. package/dist/clients/codex/hooks/track-action-monitor.d.ts +10 -0
  150. package/dist/clients/codex/hooks/track-action-monitor.d.ts.map +1 -0
  151. package/dist/clients/codex/hooks/track-action-monitor.js +168 -0
  152. package/dist/clients/codex/hooks/track-action-monitor.js.map +1 -0
  153. package/dist/clients/codex/hooks/track-action-pre.d.ts +18 -0
  154. package/dist/clients/codex/hooks/track-action-pre.d.ts.map +1 -0
  155. package/dist/clients/codex/hooks/track-action-pre.js +35 -0
  156. package/dist/clients/codex/hooks/track-action-pre.js.map +1 -0
  157. package/dist/clients/codex/hooks/track-action.d.ts +22 -0
  158. package/dist/clients/codex/hooks/track-action.d.ts.map +1 -0
  159. package/dist/clients/codex/hooks/track-action.js +350 -0
  160. package/dist/clients/codex/hooks/track-action.js.map +1 -0
  161. package/dist/clients/codex/hooks/verify-gate.d.ts +15 -0
  162. package/dist/clients/codex/hooks/verify-gate.d.ts.map +1 -0
  163. package/dist/clients/codex/hooks/verify-gate.js +105 -0
  164. package/dist/clients/codex/hooks/verify-gate.js.map +1 -0
  165. package/dist/clients/codex/index.d.ts +42 -0
  166. package/dist/clients/codex/index.d.ts.map +1 -0
  167. package/dist/clients/codex/index.js +427 -0
  168. package/dist/clients/codex/index.js.map +1 -0
  169. package/dist/clients/codex/platforms/command-verify.backend.md +108 -0
  170. package/dist/clients/codex/platforms/command-verify.browser.md +108 -0
  171. package/dist/clients/codex/platforms/command-verify.node.md +61 -0
  172. package/dist/clients/codex/platforms/rule.backend.md +32 -0
  173. package/dist/clients/codex/platforms/rule.browser.md +17 -0
  174. package/dist/clients/codex/platforms/rule.node.md +28 -0
  175. package/dist/clients/codex/platforms/skill.backend.md +95 -0
  176. package/dist/clients/codex/platforms/skill.browser.md +28 -0
  177. package/dist/clients/codex/platforms/skill.node.md +62 -0
  178. package/dist/clients/codex/rules/ironbee-verification.md +48 -0
  179. package/dist/clients/codex/skills/ironbee-verification.md +80 -0
  180. package/dist/clients/codex/util.d.ts +193 -0
  181. package/dist/clients/codex/util.d.ts.map +1 -0
  182. package/dist/clients/codex/util.js +784 -0
  183. package/dist/clients/codex/util.js.map +1 -0
  184. package/dist/clients/cursor/hooks/activity-end.js +1 -1
  185. package/dist/clients/cursor/hooks/activity-end.js.map +1 -1
  186. package/dist/clients/cursor/hooks/clear-verdict.d.ts +5 -2
  187. package/dist/clients/cursor/hooks/clear-verdict.d.ts.map +1 -1
  188. package/dist/clients/cursor/hooks/clear-verdict.js +12 -3
  189. package/dist/clients/cursor/hooks/clear-verdict.js.map +1 -1
  190. package/dist/clients/cursor/hooks/session-end.js +1 -1
  191. package/dist/clients/cursor/hooks/session-end.js.map +1 -1
  192. package/dist/clients/cursor/hooks/session-start.js +1 -1
  193. package/dist/clients/cursor/hooks/session-start.js.map +1 -1
  194. package/dist/clients/cursor/hooks/verify-gate.d.ts.map +1 -1
  195. package/dist/clients/cursor/hooks/verify-gate.js +6 -1
  196. package/dist/clients/cursor/hooks/verify-gate.js.map +1 -1
  197. package/dist/clients/cursor/index.d.ts +1 -0
  198. package/dist/clients/cursor/index.d.ts.map +1 -1
  199. package/dist/clients/cursor/index.js +22 -13
  200. package/dist/clients/cursor/index.js.map +1 -1
  201. package/dist/clients/registry.d.ts.map +1 -1
  202. package/dist/clients/registry.js +2 -1
  203. package/dist/clients/registry.js.map +1 -1
  204. package/dist/commands/{claude.d.ts → claude/index.d.ts} +1 -1
  205. package/dist/commands/claude/index.d.ts.map +1 -0
  206. package/dist/commands/{claude.js → claude/index.js} +12 -6
  207. package/dist/commands/claude/index.js.map +1 -0
  208. package/dist/commands/{otel.d.ts → claude/otel.d.ts} +5 -1
  209. package/dist/commands/claude/otel.d.ts.map +1 -0
  210. package/dist/commands/{otel.js → claude/otel.js} +9 -5
  211. package/dist/commands/claude/otel.js.map +1 -0
  212. package/dist/commands/claude/process-analytics.d.ts +19 -0
  213. package/dist/commands/claude/process-analytics.d.ts.map +1 -0
  214. package/dist/commands/{process-analytics.js → claude/process-analytics.js} +16 -15
  215. package/dist/commands/claude/process-analytics.js.map +1 -0
  216. package/dist/commands/{statusline-toggle.d.ts → claude/statusline-toggle.d.ts} +2 -2
  217. package/dist/commands/claude/statusline-toggle.d.ts.map +1 -0
  218. package/dist/commands/{statusline-toggle.js → claude/statusline-toggle.js} +8 -8
  219. package/dist/commands/claude/statusline-toggle.js.map +1 -0
  220. package/dist/commands/{statusline.d.ts → claude/statusline.d.ts} +1 -1
  221. package/dist/commands/claude/statusline.d.ts.map +1 -0
  222. package/dist/commands/{statusline.js → claude/statusline.js} +4 -4
  223. package/dist/commands/claude/statusline.js.map +1 -0
  224. package/dist/commands/codex/index.d.ts +11 -0
  225. package/dist/commands/codex/index.d.ts.map +1 -0
  226. package/dist/commands/codex/index.js +17 -0
  227. package/dist/commands/codex/index.js.map +1 -0
  228. package/dist/commands/codex/process-analytics.d.ts +14 -0
  229. package/dist/commands/codex/process-analytics.d.ts.map +1 -0
  230. package/dist/commands/codex/process-analytics.js +111 -0
  231. package/dist/commands/codex/process-analytics.js.map +1 -0
  232. package/dist/commands/hook.js +12 -0
  233. package/dist/commands/hook.js.map +1 -1
  234. package/dist/commands/import.js +3 -3
  235. package/dist/commands/import.js.map +1 -1
  236. package/dist/commands/queue.js +3 -1
  237. package/dist/commands/queue.js.map +1 -1
  238. package/dist/commands/status.js +1 -1
  239. package/dist/commands/verify.d.ts.map +1 -1
  240. package/dist/commands/verify.js +1 -2
  241. package/dist/commands/verify.js.map +1 -1
  242. package/dist/hooks/core/actions.d.ts +17 -1
  243. package/dist/hooks/core/actions.d.ts.map +1 -1
  244. package/dist/hooks/core/actions.js +13 -0
  245. package/dist/hooks/core/actions.js.map +1 -1
  246. package/dist/hooks/core/activity-end.d.ts.map +1 -1
  247. package/dist/hooks/core/activity-end.js +4 -0
  248. package/dist/hooks/core/activity-end.js.map +1 -1
  249. package/dist/hooks/core/session-state.d.ts +15 -1
  250. package/dist/hooks/core/session-state.d.ts.map +1 -1
  251. package/dist/hooks/core/session-state.js +102 -7
  252. package/dist/hooks/core/session-state.js.map +1 -1
  253. package/dist/import/claude/analytics-runner.d.ts +1 -1
  254. package/dist/import/claude/analytics-runner.d.ts.map +1 -1
  255. package/dist/import/claude/analytics-runner.js +5 -5
  256. package/dist/import/claude/analytics-runner.js.map +1 -1
  257. package/dist/import/claude/auth-mode.d.ts +1 -1
  258. package/dist/import/claude/auth-mode.d.ts.map +1 -1
  259. package/dist/import/claude/discovery.js +1 -1
  260. package/dist/import/claude/discovery.js.map +1 -1
  261. package/dist/import/claude/encoding.js +1 -1
  262. package/dist/import/claude/encoding.js.map +1 -1
  263. package/dist/import/claude/events/file-change.d.ts +10 -1
  264. package/dist/import/claude/events/file-change.d.ts.map +1 -1
  265. package/dist/import/claude/events/file-change.js +79 -5
  266. package/dist/import/claude/events/file-change.js.map +1 -1
  267. package/dist/import/claude/events/tool-call.d.ts +16 -1
  268. package/dist/import/claude/events/tool-call.d.ts.map +1 -1
  269. package/dist/import/claude/events/tool-call.js +122 -15
  270. package/dist/import/claude/events/tool-call.js.map +1 -1
  271. package/dist/import/claude/runner.d.ts.map +1 -1
  272. package/dist/import/claude/runner.js +45 -3
  273. package/dist/import/claude/runner.js.map +1 -1
  274. package/dist/import/claude/summary.js +1 -1
  275. package/dist/import/claude/summary.js.map +1 -1
  276. package/dist/import/claude/transcript-walk.d.ts +1 -1
  277. package/dist/import/claude/transcript-walk.d.ts.map +1 -1
  278. package/dist/import/claude/transcript-walk.js +11 -4
  279. package/dist/import/claude/transcript-walk.js.map +1 -1
  280. package/dist/import/codex/analytics-runner.d.ts +46 -0
  281. package/dist/import/codex/analytics-runner.d.ts.map +1 -0
  282. package/dist/import/codex/analytics-runner.js +116 -0
  283. package/dist/import/codex/analytics-runner.js.map +1 -0
  284. package/dist/import/codex/discovery.d.ts +33 -0
  285. package/dist/import/codex/discovery.d.ts.map +1 -0
  286. package/dist/import/codex/discovery.js +202 -0
  287. package/dist/import/codex/discovery.js.map +1 -0
  288. package/dist/import/codex/events/file-change.d.ts +42 -0
  289. package/dist/import/codex/events/file-change.d.ts.map +1 -0
  290. package/dist/import/codex/events/file-change.js +125 -0
  291. package/dist/import/codex/events/file-change.js.map +1 -0
  292. package/dist/import/codex/events/tool-call.d.ts +49 -0
  293. package/dist/import/codex/events/tool-call.d.ts.map +1 -0
  294. package/dist/import/codex/events/tool-call.js +151 -0
  295. package/dist/import/codex/events/tool-call.js.map +1 -0
  296. package/dist/import/codex/runner.d.ts +34 -0
  297. package/dist/import/codex/runner.d.ts.map +1 -0
  298. package/dist/import/codex/runner.js +456 -0
  299. package/dist/import/codex/runner.js.map +1 -0
  300. package/dist/import/codex/summary.d.ts +20 -0
  301. package/dist/import/codex/summary.d.ts.map +1 -0
  302. package/dist/import/codex/summary.js +206 -0
  303. package/dist/import/codex/summary.js.map +1 -0
  304. package/dist/import/events/activity.d.ts.map +1 -1
  305. package/dist/import/events/activity.js +17 -2
  306. package/dist/import/events/activity.js.map +1 -1
  307. package/dist/import/events/session.d.ts +11 -1
  308. package/dist/import/events/session.d.ts.map +1 -1
  309. package/dist/import/events/session.js +19 -1
  310. package/dist/import/events/session.js.map +1 -1
  311. package/dist/import/ids.js +3 -3
  312. package/dist/import/ids.js.map +1 -1
  313. package/dist/import/pipeline.d.ts +22 -15
  314. package/dist/import/pipeline.d.ts.map +1 -1
  315. package/dist/import/pipeline.js +99 -18
  316. package/dist/import/pipeline.js.map +1 -1
  317. package/dist/import/types.d.ts +4 -0
  318. package/dist/import/types.d.ts.map +1 -1
  319. package/dist/import/types.js.map +1 -1
  320. package/dist/index.js +9 -14
  321. package/dist/index.js.map +1 -1
  322. package/dist/lib/collector.d.ts +2 -1
  323. package/dist/lib/collector.d.ts.map +1 -1
  324. package/dist/lib/collector.js +28 -3
  325. package/dist/lib/collector.js.map +1 -1
  326. package/dist/lib/config.d.ts.map +1 -1
  327. package/dist/lib/config.js.map +1 -1
  328. package/dist/lib/event.d.ts +18 -1
  329. package/dist/lib/event.d.ts.map +1 -1
  330. package/dist/lib/event.js +25 -1
  331. package/dist/lib/event.js.map +1 -1
  332. package/dist/lib/fs-prune.d.ts +1 -1
  333. package/dist/lib/fs-prune.js +1 -1
  334. package/dist/lib/platform-section.d.ts.map +1 -1
  335. package/dist/lib/platform-section.js +8 -0
  336. package/dist/lib/platform-section.js.map +1 -1
  337. package/dist/otel/{context → claude/context}/build.d.ts +1 -1
  338. package/dist/otel/claude/context/build.d.ts.map +1 -0
  339. package/dist/otel/{context → claude/context}/build.js +3 -7
  340. package/dist/otel/claude/context/build.js.map +1 -0
  341. package/dist/otel/claude/context/classify.d.ts.map +1 -0
  342. package/dist/otel/claude/context/classify.js.map +1 -0
  343. package/dist/otel/{context → claude/context}/extract.d.ts +1 -1
  344. package/dist/otel/claude/context/extract.d.ts.map +1 -0
  345. package/dist/otel/claude/context/extract.js.map +1 -0
  346. package/dist/otel/claude/context/markers.d.ts.map +1 -0
  347. package/dist/otel/{context → claude/context}/markers.js +22 -3
  348. package/dist/otel/claude/context/markers.js.map +1 -0
  349. package/dist/otel/claude/context/util.d.ts.map +1 -0
  350. package/dist/otel/claude/context/util.js.map +1 -0
  351. package/dist/otel/{daemon → claude/daemon}/ensure.d.ts +1 -1
  352. package/dist/otel/claude/daemon/ensure.d.ts.map +1 -0
  353. package/dist/otel/{daemon → claude/daemon}/ensure.js +6 -6
  354. package/dist/otel/claude/daemon/ensure.js.map +1 -0
  355. package/dist/otel/{daemon → claude/daemon}/forward.d.ts +1 -1
  356. package/dist/otel/claude/daemon/forward.d.ts.map +1 -0
  357. package/dist/otel/{daemon → claude/daemon}/forward.js +0 -0
  358. package/dist/otel/claude/daemon/forward.js.map +1 -0
  359. package/dist/otel/claude/daemon/paths.d.ts.map +1 -0
  360. package/dist/otel/claude/daemon/paths.js.map +1 -0
  361. package/dist/otel/{daemon → claude/daemon}/process.d.ts +1 -1
  362. package/dist/otel/claude/daemon/process.d.ts.map +1 -0
  363. package/dist/otel/{daemon → claude/daemon}/process.js +1 -1
  364. package/dist/otel/claude/daemon/process.js.map +1 -0
  365. package/dist/otel/claude/daemon/reprocess.d.ts.map +1 -0
  366. package/dist/otel/{daemon → claude/daemon}/reprocess.js +2 -2
  367. package/dist/otel/claude/daemon/reprocess.js.map +1 -0
  368. package/dist/otel/claude/log-handler.d.ts.map +1 -0
  369. package/dist/otel/{log-handler.js → claude/log-handler.js} +1 -1
  370. package/dist/otel/claude/log-handler.js.map +1 -0
  371. package/dist/otel/collector.js +4 -4
  372. package/dist/otel/collector.js.map +1 -1
  373. package/dist/queue/flush.d.ts +23 -0
  374. package/dist/queue/flush.d.ts.map +1 -1
  375. package/dist/queue/flush.js +44 -0
  376. package/dist/queue/flush.js.map +1 -1
  377. package/dist/queue/handlers/send-event.d.ts.map +1 -1
  378. package/dist/queue/handlers/send-event.js +5 -4
  379. package/dist/queue/handlers/send-event.js.map +1 -1
  380. package/dist/queue/index.d.ts +2 -2
  381. package/dist/queue/index.d.ts.map +1 -1
  382. package/dist/queue/index.js +4 -1
  383. package/dist/queue/index.js.map +1 -1
  384. package/dist/queue/spawn.d.ts +20 -0
  385. package/dist/queue/spawn.d.ts.map +1 -1
  386. package/dist/queue/spawn.js +37 -0
  387. package/dist/queue/spawn.js.map +1 -1
  388. package/dist/tui/import/area.js +3 -3
  389. package/dist/tui/import/area.js.map +1 -1
  390. package/dist/tui/sessions/area.d.ts.map +1 -1
  391. package/dist/tui/sessions/area.js +2 -45
  392. package/dist/tui/sessions/area.js.map +1 -1
  393. package/package.json +2 -1
  394. package/dist/analysis/code-changes.d.ts +0 -22
  395. package/dist/analysis/code-changes.d.ts.map +0 -1
  396. package/dist/analysis/code-changes.js +0 -141
  397. package/dist/analysis/code-changes.js.map +0 -1
  398. package/dist/analysis/cross-session.d.ts +0 -34
  399. package/dist/analysis/cross-session.d.ts.map +0 -1
  400. package/dist/analysis/cross-session.js +0 -230
  401. package/dist/analysis/cross-session.js.map +0 -1
  402. package/dist/analysis/fix-effectiveness.d.ts +0 -16
  403. package/dist/analysis/fix-effectiveness.d.ts.map +0 -1
  404. package/dist/analysis/fix-effectiveness.js +0 -99
  405. package/dist/analysis/fix-effectiveness.js.map +0 -1
  406. package/dist/analysis/scoring.d.ts +0 -15
  407. package/dist/analysis/scoring.d.ts.map +0 -1
  408. package/dist/analysis/scoring.js +0 -59
  409. package/dist/analysis/scoring.js.map +0 -1
  410. package/dist/analysis/time-analysis.d.ts +0 -22
  411. package/dist/analysis/time-analysis.d.ts.map +0 -1
  412. package/dist/analysis/time-analysis.js +0 -174
  413. package/dist/analysis/time-analysis.js.map +0 -1
  414. package/dist/analysis/verdict-details.d.ts +0 -23
  415. package/dist/analysis/verdict-details.d.ts.map +0 -1
  416. package/dist/analysis/verdict-details.js +0 -59
  417. package/dist/analysis/verdict-details.js.map +0 -1
  418. package/dist/analysis/verification-quality.d.ts +0 -20
  419. package/dist/analysis/verification-quality.d.ts.map +0 -1
  420. package/dist/analysis/verification-quality.js +0 -145
  421. package/dist/analysis/verification-quality.js.map +0 -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/clients/claude/commands/ironbee-analyze.md +0 -42
  447. package/dist/clients/cursor/commands/ironbee-analyze/SKILL.md +0 -48
  448. package/dist/commands/analyze.d.ts +0 -3
  449. package/dist/commands/analyze.d.ts.map +0 -1
  450. package/dist/commands/analyze.js +0 -329
  451. package/dist/commands/analyze.js.map +0 -1
  452. package/dist/commands/claude.d.ts.map +0 -1
  453. package/dist/commands/claude.js.map +0 -1
  454. package/dist/commands/otel.d.ts.map +0 -1
  455. package/dist/commands/otel.js.map +0 -1
  456. package/dist/commands/process-analytics.d.ts +0 -18
  457. package/dist/commands/process-analytics.d.ts.map +0 -1
  458. package/dist/commands/process-analytics.js.map +0 -1
  459. package/dist/commands/statusline-toggle.d.ts.map +0 -1
  460. package/dist/commands/statusline-toggle.js.map +0 -1
  461. package/dist/commands/statusline.d.ts.map +0 -1
  462. package/dist/commands/statusline.js.map +0 -1
  463. package/dist/otel/context/build.d.ts.map +0 -1
  464. package/dist/otel/context/build.js.map +0 -1
  465. package/dist/otel/context/classify.d.ts.map +0 -1
  466. package/dist/otel/context/classify.js.map +0 -1
  467. package/dist/otel/context/extract.d.ts.map +0 -1
  468. package/dist/otel/context/extract.js.map +0 -1
  469. package/dist/otel/context/markers.d.ts.map +0 -1
  470. package/dist/otel/context/markers.js.map +0 -1
  471. package/dist/otel/context/util.d.ts.map +0 -1
  472. package/dist/otel/context/util.js.map +0 -1
  473. package/dist/otel/daemon/ensure.d.ts.map +0 -1
  474. package/dist/otel/daemon/ensure.js.map +0 -1
  475. package/dist/otel/daemon/forward.d.ts.map +0 -1
  476. package/dist/otel/daemon/forward.js.map +0 -1
  477. package/dist/otel/daemon/paths.d.ts.map +0 -1
  478. package/dist/otel/daemon/paths.js.map +0 -1
  479. package/dist/otel/daemon/process.d.ts.map +0 -1
  480. package/dist/otel/daemon/process.js.map +0 -1
  481. package/dist/otel/daemon/reprocess.d.ts.map +0 -1
  482. package/dist/otel/daemon/reprocess.js.map +0 -1
  483. package/dist/otel/log-handler.d.ts.map +0 -1
  484. package/dist/otel/log-handler.js.map +0 -1
  485. /package/dist/analytics/{log.d.ts → claude/log.d.ts} +0 -0
  486. /package/dist/analytics/{transcript.d.ts → claude/transcript.d.ts} +0 -0
  487. /package/dist/analytics/{classifier.d.ts → shared/classifier.d.ts} +0 -0
  488. /package/dist/analytics/{errors.d.ts → shared/errors.d.ts} +0 -0
  489. /package/dist/analytics/{errors.js → shared/errors.js} +0 -0
  490. /package/dist/analytics/{types.js → shared/types.js} +0 -0
  491. /package/dist/otel/{context → claude/context}/classify.d.ts +0 -0
  492. /package/dist/otel/{context → claude/context}/classify.js +0 -0
  493. /package/dist/otel/{context → claude/context}/extract.js +0 -0
  494. /package/dist/otel/{context → claude/context}/markers.d.ts +0 -0
  495. /package/dist/otel/{context → claude/context}/util.d.ts +0 -0
  496. /package/dist/otel/{context → claude/context}/util.js +0 -0
  497. /package/dist/otel/{daemon → claude/daemon}/paths.d.ts +0 -0
  498. /package/dist/otel/{daemon → claude/daemon}/paths.js +0 -0
  499. /package/dist/otel/{daemon → claude/daemon}/reprocess.d.ts +0 -0
  500. /package/dist/otel/{log-handler.d.ts → claude/log-handler.d.ts} +0 -0
@@ -0,0 +1,134 @@
1
+ "use strict";
2
+ /**
3
+ * IronBee CLI — Codex Rollout Transcript Locator + Parser
4
+ *
5
+ * Resolves the Codex rollout JSONL path for a session_id and tail-parses
6
+ * a slice of new bytes into RolloutItem records.
7
+ *
8
+ * Codex stores per-session transcripts at:
9
+ * ~/.codex/sessions/<YYYY>/<MM>/<DD>/rollout-<TS>-<UUID>.jsonl
10
+ *
11
+ * The session UUID is embedded in the filename (8 hex chars before the
12
+ * second `-`), so locating a transcript by session_id requires a directory
13
+ * walk. Codex hook stdin also carries `transcript_path` directly — when
14
+ * available it's preferred and the walk is a fallback.
15
+ *
16
+ * Reuses the generic JSONL parser primitives from `src/analytics/transcript.ts`
17
+ * (parseJsonl, readSlice, statTranscript, firstKbSha256) — only path
18
+ * resolution differs.
19
+ */
20
+ Object.defineProperty(exports, "__esModule", { value: true });
21
+ exports.codexSessionsRoot = codexSessionsRoot;
22
+ exports.findCodexRolloutPath = findCodexRolloutPath;
23
+ exports.walkAllCodexRollouts = walkAllCodexRollouts;
24
+ exports.sessionIdFromRolloutPath = sessionIdFromRolloutPath;
25
+ exports.rolloutMtimeMs = rolloutMtimeMs;
26
+ const fs_1 = require("fs");
27
+ const os_1 = require("os");
28
+ const path_1 = require("path");
29
+ const logger_1 = require("../../lib/logger");
30
+ /**
31
+ * Returns the root directory holding all Codex rollout files.
32
+ *
33
+ * Uses `process.env.HOME` (POSIX) / `USERPROFILE` (Windows) at call time
34
+ * rather than cached `os.homedir()` so HOME-isolated tests work without
35
+ * needing a process restart between fixtures.
36
+ */
37
+ function codexSessionsRoot() {
38
+ const home = process.env.HOME ?? process.env.USERPROFILE ?? (0, os_1.homedir)();
39
+ return (0, path_1.join)(home, ".codex", "sessions");
40
+ }
41
+ /**
42
+ * Resolve the rollout JSONL path for a Codex session_id by scanning
43
+ * `~/.codex/sessions/<YYYY>/<MM>/<DD>/rollout-*-<session_id>.jsonl`.
44
+ *
45
+ * Returns null if no matching file is found. The walk is bounded —
46
+ * scans newest dates first and stops on first match.
47
+ */
48
+ function findCodexRolloutPath(sessionId) {
49
+ const root = codexSessionsRoot();
50
+ if (!(0, fs_1.existsSync)(root)) {
51
+ return null;
52
+ }
53
+ try {
54
+ // Sessions root has YYYY/ subdirs. Walk newest-first.
55
+ const years = (0, fs_1.readdirSync)(root).filter((y) => /^\d{4}$/.test(y)).sort().reverse();
56
+ for (const year of years) {
57
+ const yearDir = (0, path_1.join)(root, year);
58
+ const months = (0, fs_1.readdirSync)(yearDir).filter((m) => /^\d{2}$/.test(m)).sort().reverse();
59
+ for (const month of months) {
60
+ const monthDir = (0, path_1.join)(yearDir, month);
61
+ const days = (0, fs_1.readdirSync)(monthDir).filter((d) => /^\d{2}$/.test(d)).sort().reverse();
62
+ for (const day of days) {
63
+ const dayDir = (0, path_1.join)(monthDir, day);
64
+ const files = (0, fs_1.readdirSync)(dayDir).filter((f) => f.endsWith(`-${sessionId}.jsonl`));
65
+ if (files.length > 0) {
66
+ return (0, path_1.join)(dayDir, files[0]);
67
+ }
68
+ }
69
+ }
70
+ }
71
+ }
72
+ catch (e) {
73
+ logger_1.logger.debug(`codex transcript: scan ${root} failed: ${e instanceof Error ? e.message : e}`);
74
+ }
75
+ return null;
76
+ }
77
+ /**
78
+ * Walk every rollout file under the sessions root (newest-first) and yield
79
+ * each path. Used by `ironbee import --codex` for discovery.
80
+ *
81
+ * Returns absolute paths.
82
+ */
83
+ function* walkAllCodexRollouts() {
84
+ const root = codexSessionsRoot();
85
+ if (!(0, fs_1.existsSync)(root)) {
86
+ return;
87
+ }
88
+ try {
89
+ const years = (0, fs_1.readdirSync)(root).filter((y) => /^\d{4}$/.test(y)).sort().reverse();
90
+ for (const year of years) {
91
+ const yearDir = (0, path_1.join)(root, year);
92
+ const months = (0, fs_1.readdirSync)(yearDir).filter((m) => /^\d{2}$/.test(m)).sort().reverse();
93
+ for (const month of months) {
94
+ const monthDir = (0, path_1.join)(yearDir, month);
95
+ const days = (0, fs_1.readdirSync)(monthDir).filter((d) => /^\d{2}$/.test(d)).sort().reverse();
96
+ for (const day of days) {
97
+ const dayDir = (0, path_1.join)(monthDir, day);
98
+ const files = (0, fs_1.readdirSync)(dayDir).filter((f) => f.startsWith("rollout-") && f.endsWith(".jsonl"));
99
+ for (const file of files) {
100
+ yield (0, path_1.join)(dayDir, file);
101
+ }
102
+ }
103
+ }
104
+ }
105
+ }
106
+ catch (e) {
107
+ logger_1.logger.debug(`codex transcript: walk ${root} failed: ${e instanceof Error ? e.message : e}`);
108
+ }
109
+ }
110
+ /**
111
+ * Extract the embedded session_id from a rollout file's name. Files are
112
+ * named `rollout-<ISO8601>-<UUID>.jsonl`; returns the UUID portion.
113
+ *
114
+ * Returns null on shape mismatch.
115
+ */
116
+ function sessionIdFromRolloutPath(rolloutPath) {
117
+ // path.basename handles both POSIX (`/`) and Windows (`\`) separators.
118
+ // The hand-rolled `lastIndexOf("/")` + single `.replace("\\", "/")`
119
+ // pattern returned the full path on Windows, so the regex below never
120
+ // matched — every Windows session_id lookup returned null.
121
+ const base = (0, path_1.basename)(rolloutPath);
122
+ const m = /^rollout-.+-([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})\.jsonl$/i.exec(base);
123
+ return m?.[1] ?? null;
124
+ }
125
+ /** Stat helper for rollout path — returns null if missing. */
126
+ function rolloutMtimeMs(rolloutPath) {
127
+ try {
128
+ return (0, fs_1.statSync)(rolloutPath).mtimeMs;
129
+ }
130
+ catch {
131
+ return null;
132
+ }
133
+ }
134
+ //# sourceMappingURL=transcript.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transcript.js","sourceRoot":"","sources":["../../../src/analytics/codex/transcript.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;GAiBG;;AAcH,8CAGC;AASD,oDA2BC;AAQD,oDAyBC;AAQD,4DAQC;AAGD,wCAMC;AA7GD,2BAAuD;AACvD,2BAA6B;AAC7B,+BAAsC;AACtC,6CAA0C;AAE1C;;;;;;GAMG;AACH,SAAgB,iBAAiB;IAC7B,MAAM,IAAI,GAAW,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,IAAA,YAAO,GAAE,CAAC;IAC9E,OAAO,IAAA,WAAI,EAAC,IAAI,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;AAC5C,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,oBAAoB,CAAC,SAAiB;IAClD,MAAM,IAAI,GAAW,iBAAiB,EAAE,CAAC;IACzC,IAAI,CAAC,IAAA,eAAU,EAAC,IAAI,CAAC,EAAE,CAAC;QACpB,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,IAAI,CAAC;QACD,sDAAsD;QACtD,MAAM,KAAK,GAAa,IAAA,gBAAW,EAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAS,EAAW,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;QAC7G,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACvB,MAAM,OAAO,GAAW,IAAA,WAAI,EAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACzC,MAAM,MAAM,GAAa,IAAA,gBAAW,EAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAS,EAAW,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;YACjH,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;gBACzB,MAAM,QAAQ,GAAW,IAAA,WAAI,EAAC,OAAO,EAAE,KAAK,CAAC,CAAC;gBAC9C,MAAM,IAAI,GAAa,IAAA,gBAAW,EAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAS,EAAW,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;gBAChH,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;oBACrB,MAAM,MAAM,GAAW,IAAA,WAAI,EAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;oBAC3C,MAAM,KAAK,GAAa,IAAA,gBAAW,EAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAS,EAAW,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,SAAS,QAAQ,CAAC,CAAC,CAAC;oBAC9G,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBACnB,OAAO,IAAA,WAAI,EAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;oBAClC,CAAC;gBACL,CAAC;YACL,CAAC;QACL,CAAC;IACL,CAAC;IAAC,OAAO,CAAU,EAAE,CAAC;QAClB,eAAM,CAAC,KAAK,CAAC,0BAA0B,IAAI,YAAY,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACjG,CAAC;IACD,OAAO,IAAI,CAAC;AAChB,CAAC;AAED;;;;;GAKG;AACH,QAAe,CAAC,CAAC,oBAAoB;IACjC,MAAM,IAAI,GAAW,iBAAiB,EAAE,CAAC;IACzC,IAAI,CAAC,IAAA,eAAU,EAAC,IAAI,CAAC,EAAE,CAAC;QACpB,OAAO;IACX,CAAC;IACD,IAAI,CAAC;QACD,MAAM,KAAK,GAAa,IAAA,gBAAW,EAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAS,EAAW,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;QAC7G,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACvB,MAAM,OAAO,GAAW,IAAA,WAAI,EAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACzC,MAAM,MAAM,GAAa,IAAA,gBAAW,EAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAS,EAAW,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;YACjH,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;gBACzB,MAAM,QAAQ,GAAW,IAAA,WAAI,EAAC,OAAO,EAAE,KAAK,CAAC,CAAC;gBAC9C,MAAM,IAAI,GAAa,IAAA,gBAAW,EAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAS,EAAW,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;gBAChH,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;oBACrB,MAAM,MAAM,GAAW,IAAA,WAAI,EAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;oBAC3C,MAAM,KAAK,GAAa,IAAA,gBAAW,EAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAS,EAAW,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;oBAC7H,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;wBACvB,MAAM,IAAA,WAAI,EAAC,MAAM,EAAE,IAAI,CAAC,CAAC;oBAC7B,CAAC;gBACL,CAAC;YACL,CAAC;QACL,CAAC;IACL,CAAC;IAAC,OAAO,CAAU,EAAE,CAAC;QAClB,eAAM,CAAC,KAAK,CAAC,0BAA0B,IAAI,YAAY,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACjG,CAAC;AACL,CAAC;AAED;;;;;GAKG;AACH,SAAgB,wBAAwB,CAAC,WAAmB;IACxD,uEAAuE;IACvE,oEAAoE;IACpE,sEAAsE;IACtE,2DAA2D;IAC3D,MAAM,IAAI,GAAW,IAAA,eAAQ,EAAC,WAAW,CAAC,CAAC;IAC3C,MAAM,CAAC,GAA2B,qFAAqF,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnI,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;AAC1B,CAAC;AAED,8DAA8D;AAC9D,SAAgB,cAAc,CAAC,WAAmB;IAC9C,IAAI,CAAC;QACD,OAAO,IAAA,aAAQ,EAAC,WAAW,CAAC,CAAC,OAAO,CAAC;IACzC,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,IAAI,CAAC;IAChB,CAAC;AACL,CAAC"}
@@ -0,0 +1,253 @@
1
+ /**
2
+ * Codex rollout JSONL — typed shapes.
3
+ *
4
+ * Codex writes one JSONL line per `RolloutItem` (defined in
5
+ * `codex-rs/protocol/src/protocol.rs:2779`). Each line has the wrapper
6
+ * shape `{ timestamp: ISO8601, type: TopType, payload: Payload }`.
7
+ *
8
+ * Only the fields IronBee analytics consumes are typed. Everything else
9
+ * stays `unknown` so we don't crash on harmless schema drift.
10
+ */
11
+ /** Top-level RolloutItem discriminator. */
12
+ export type CodexRolloutTopType = "session_meta" | "response_item" | "turn_context" | "event_msg" | "compacted";
13
+ export interface CodexRolloutLine<P = unknown> {
14
+ timestamp: string;
15
+ type: CodexRolloutTopType;
16
+ payload: P;
17
+ }
18
+ export interface CodexSessionMetaPayload {
19
+ id: string;
20
+ timestamp: string;
21
+ cwd: string;
22
+ originator: string;
23
+ cli_version: string;
24
+ source: string;
25
+ thread_source: string;
26
+ model_provider: string;
27
+ base_instructions?: {
28
+ text?: string;
29
+ };
30
+ }
31
+ export type CodexSessionMetaLine = CodexRolloutLine<CodexSessionMetaPayload>;
32
+ export interface CodexTurnContextPayload {
33
+ turn_id: string;
34
+ cwd: string;
35
+ current_date?: string;
36
+ timezone?: string;
37
+ approval_policy?: string;
38
+ sandbox_policy?: unknown;
39
+ model?: string;
40
+ reasoning_effort?: string;
41
+ }
42
+ export type CodexTurnContextLine = CodexRolloutLine<CodexTurnContextPayload>;
43
+ export type CodexResponseItemPayloadType = "message" | "function_call" | "function_call_output" | "custom_tool_call" | "custom_tool_call_output" | "web_search_call" | "reasoning";
44
+ export interface CodexFunctionCallPayload {
45
+ type: "function_call";
46
+ name: string;
47
+ arguments: string;
48
+ call_id: string;
49
+ status?: string;
50
+ /**
51
+ * Routing namespace. Empirical values across 69 rollouts:
52
+ * - `multi_agent_v1` — sub-agent orchestration tools (spawn_agent /
53
+ * wait_agent / close_agent)
54
+ * - `mcp__<server>` — MCP server invocations (e.g. `mcp__echo_user_level`,
55
+ * `mcp__browser_devtools`)
56
+ * - absent — Codex built-ins (exec_command / view_image / update_plan / ...)
57
+ *
58
+ * Read at projection time to disambiguate sub-agent detection from
59
+ * future third-party MCP servers that might collide with built-in tool
60
+ * names (e.g. a custom MCP server exposing its own `spawn_agent` tool).
61
+ */
62
+ namespace?: string;
63
+ }
64
+ export interface CodexFunctionCallOutputPayload {
65
+ type: "function_call_output";
66
+ call_id: string;
67
+ output?: string;
68
+ }
69
+ /**
70
+ * Codex emits `apply_patch` as a `custom_tool_call` (NOT `function_call`).
71
+ * Wire shape (verified 0.135.x):
72
+ * { type: "custom_tool_call", name: "apply_patch", input: "<raw patch text>", call_id }
73
+ * Note `input` is the RAW patch text, not JSON-encoded — unlike `function_call.arguments`.
74
+ */
75
+ export interface CodexCustomToolCallPayload {
76
+ type: "custom_tool_call";
77
+ name: string;
78
+ input: string;
79
+ call_id: string;
80
+ status?: string;
81
+ }
82
+ export interface CodexCustomToolCallOutputPayload {
83
+ type: "custom_tool_call_output";
84
+ call_id: string;
85
+ output?: string;
86
+ }
87
+ export interface CodexMessagePayload {
88
+ type: "message";
89
+ role?: string;
90
+ content?: unknown;
91
+ }
92
+ export interface CodexReasoningPayload {
93
+ type: "reasoning";
94
+ encrypted_content?: string;
95
+ summary?: unknown;
96
+ }
97
+ /**
98
+ * Codex emits web searches via this response_item shape, NOT as a
99
+ * `function_call` with `name === "web_search"`. Live-verified on Codex
100
+ * 0.131+ (80+ occurrences in real sessions). Shape:
101
+ * { type: "web_search_call", status, action: { type: "search" | "open_page", query?, queries?[], url? } }
102
+ * Note: no `name` field, no `call_id` field (web search doesn't produce a
103
+ * paired `*_output` event — results land in subsequent assistant message).
104
+ */
105
+ export interface CodexWebSearchCallPayload {
106
+ type: "web_search_call";
107
+ status?: string;
108
+ action?: {
109
+ type?: string;
110
+ query?: string;
111
+ queries?: string[];
112
+ url?: string;
113
+ };
114
+ }
115
+ export type CodexResponseItemPayload = CodexFunctionCallPayload | CodexFunctionCallOutputPayload | CodexCustomToolCallPayload | CodexCustomToolCallOutputPayload | CodexWebSearchCallPayload | CodexMessagePayload | CodexReasoningPayload;
116
+ export type CodexEventMsgType = "task_started" | "token_count" | "agent_message" | "user_message" | "turn_aborted" | "patch_apply_end" | "mcp_tool_call_end" | "task_complete";
117
+ export interface CodexTaskStartedPayload {
118
+ type: "task_started";
119
+ turn_id: string;
120
+ started_at: number;
121
+ model_context_window?: number;
122
+ collaboration_mode_kind?: string;
123
+ }
124
+ export interface CodexTokenUsage {
125
+ input_tokens: number;
126
+ cached_input_tokens: number;
127
+ output_tokens: number;
128
+ reasoning_output_tokens: number;
129
+ total_tokens: number;
130
+ }
131
+ export interface CodexRateLimitWindow {
132
+ used_percent: number;
133
+ window_minutes: number;
134
+ resets_at?: number;
135
+ }
136
+ export interface CodexRateLimits {
137
+ limit_id?: string;
138
+ limit_name?: string | null;
139
+ primary?: CodexRateLimitWindow | null;
140
+ secondary?: CodexRateLimitWindow | null;
141
+ credits?: unknown;
142
+ plan_type?: string | null;
143
+ }
144
+ export interface CodexTokenCountPayload {
145
+ type: "token_count";
146
+ info: {
147
+ total_token_usage: CodexTokenUsage;
148
+ last_token_usage: CodexTokenUsage;
149
+ model_context_window?: number;
150
+ };
151
+ rate_limits?: CodexRateLimits;
152
+ }
153
+ export interface CodexAgentMessagePayload {
154
+ type: "agent_message";
155
+ message: string;
156
+ phase?: string;
157
+ }
158
+ export interface CodexUserMessagePayload {
159
+ type: "user_message";
160
+ message?: string;
161
+ }
162
+ export interface CodexTurnAbortedPayload {
163
+ type: "turn_aborted";
164
+ reason?: string;
165
+ }
166
+ /**
167
+ * Codex's authoritative apply_patch outcome event. Paired with the
168
+ * `custom_tool_call.call_id` of the originating `apply_patch` request.
169
+ * `success: false` means the patch was REJECTED (e.g. "Failed to find
170
+ * expected lines") — analytics must NOT count its lines_added/removed
171
+ * toward `code_changes`. The `changes` map carries per-file authoritative
172
+ * `unified_diff` strings (currently unused by projection; future cleanup
173
+ * could derive lines_added/removed from THIS rather than parsing the
174
+ * request patch body).
175
+ */
176
+ /**
177
+ * Codex's turn-completion event — fires once per cleanly-completed turn
178
+ * (paired with `task_started`; ABSENT when the turn was aborted via
179
+ * `turn_aborted`). Carries Codex-host-measured `duration_ms` (wall-clock
180
+ * including tool execution) and `time_to_first_token_ms` (latency from
181
+ * task_started to first model token). Empirical: 65 events across 69
182
+ * rollouts; 19 sessions had task_started without task_complete (all paired
183
+ * with turn_aborted — confirms task_complete = success marker).
184
+ *
185
+ * Wire surface deferred: accumulator captures these for future emission
186
+ * (`time.average_turn_duration_ms` / `time.average_first_token_ms`) once
187
+ * the wire schema is extended.
188
+ */
189
+ export interface CodexTaskCompletePayload {
190
+ type: "task_complete";
191
+ turn_id?: string;
192
+ last_agent_message?: string;
193
+ completed_at?: number;
194
+ duration_ms?: number;
195
+ time_to_first_token_ms?: number;
196
+ }
197
+ /**
198
+ * Codex's MCP tool-call outcome event — fires per `function_call` with an
199
+ * `mcp__*` namespace (one per call, success OR failure). The `result` field
200
+ * is the Rust `Result<>` variant: `{Ok: {content: ...}}` on success,
201
+ * `{Err: "<message>"}` on failure. Critically: **cancelled MCP calls
202
+ * (`Err: "user cancelled MCP tool call"`) produce NO paired
203
+ * `function_call_output`** — without this handler, the cancellation is
204
+ * silently invisible to our text-based error classifier in
205
+ * `processToolCallOutput`. Live-verified: 417 events across 69 rollouts;
206
+ * cancellations observed for `echo_user_level` + `browser-devtools` MCP
207
+ * tools.
208
+ *
209
+ * The wire also carries `duration` (Codex-measured tool latency) which we
210
+ * don't yet aggregate; reserved for future per-tool latency analytics.
211
+ */
212
+ export interface CodexMcpToolCallEndPayload {
213
+ type: "mcp_tool_call_end";
214
+ call_id?: string;
215
+ invocation?: {
216
+ server?: string;
217
+ tool?: string;
218
+ arguments?: unknown;
219
+ };
220
+ duration?: {
221
+ secs?: number;
222
+ nanos?: number;
223
+ };
224
+ result?: {
225
+ Ok?: unknown;
226
+ Err?: string;
227
+ };
228
+ }
229
+ export interface CodexPatchApplyEndPayload {
230
+ type: "patch_apply_end";
231
+ call_id?: string;
232
+ turn_id?: string;
233
+ success: boolean;
234
+ stdout?: string;
235
+ stderr?: string;
236
+ changes?: Record<string, {
237
+ type?: string;
238
+ unified_diff?: string;
239
+ move_path?: string | null;
240
+ }>;
241
+ status?: string;
242
+ }
243
+ export type CodexEventMsgPayload = CodexTaskStartedPayload | CodexTokenCountPayload | CodexAgentMessagePayload | CodexUserMessagePayload | CodexTurnAbortedPayload | CodexPatchApplyEndPayload | CodexMcpToolCallEndPayload | CodexTaskCompletePayload;
244
+ export type CodexRolloutItem = CodexRolloutLine<CodexSessionMetaPayload> | CodexRolloutLine<CodexTurnContextPayload> | CodexRolloutLine<CodexResponseItemPayload> | CodexRolloutLine<CodexEventMsgPayload>;
245
+ /** Type guard: line is an event_msg with payload.type === `T`. */
246
+ export declare function isEventMsg<T extends CodexEventMsgType>(line: CodexRolloutLine, payloadType: T): line is CodexRolloutLine<Extract<CodexEventMsgPayload, {
247
+ type: T;
248
+ }>>;
249
+ /** Type guard: line is a response_item with payload.type === `T`. */
250
+ export declare function isResponseItem<T extends CodexResponseItemPayloadType>(line: CodexRolloutLine, payloadType: T): line is CodexRolloutLine<Extract<CodexResponseItemPayload, {
251
+ type: T;
252
+ }>>;
253
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/analytics/codex/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ /**
3
+ * Codex rollout JSONL — typed shapes.
4
+ *
5
+ * Codex writes one JSONL line per `RolloutItem` (defined in
6
+ * `codex-rs/protocol/src/protocol.rs:2779`). Each line has the wrapper
7
+ * shape `{ timestamp: ISO8601, type: TopType, payload: Payload }`.
8
+ *
9
+ * Only the fields IronBee analytics consumes are typed. Everything else
10
+ * stays `unknown` so we don't crash on harmless schema drift.
11
+ */
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.isEventMsg = isEventMsg;
14
+ exports.isResponseItem = isResponseItem;
15
+ /** Type guard: line is an event_msg with payload.type === `T`. */
16
+ function isEventMsg(line, payloadType) {
17
+ return (line.type === "event_msg" &&
18
+ typeof line.payload === "object" &&
19
+ line.payload !== null &&
20
+ line.payload.type === payloadType);
21
+ }
22
+ /** Type guard: line is a response_item with payload.type === `T`. */
23
+ function isResponseItem(line, payloadType) {
24
+ return (line.type === "response_item" &&
25
+ typeof line.payload === "object" &&
26
+ line.payload !== null &&
27
+ line.payload.type === payloadType);
28
+ }
29
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/analytics/codex/types.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;;AAqTH,gCAUC;AAGD,wCAUC;AAxBD,kEAAkE;AAClE,SAAgB,UAAU,CACtB,IAAsB,EACtB,WAAc;IAEd,OAAO,CACH,IAAI,CAAC,IAAI,KAAK,WAAW;QACzB,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ;QAChC,IAAI,CAAC,OAAO,KAAK,IAAI;QACpB,IAAI,CAAC,OAA6B,CAAC,IAAI,KAAK,WAAW,CAC3D,CAAC;AACN,CAAC;AAED,qEAAqE;AACrE,SAAgB,cAAc,CAC1B,IAAsB,EACtB,WAAc;IAEd,OAAO,CACH,IAAI,CAAC,IAAI,KAAK,eAAe;QAC7B,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ;QAChC,IAAI,CAAC,OAAO,KAAK,IAAI;QACpB,IAAI,CAAC,OAA6B,CAAC,IAAI,KAAK,WAAW,CAC3D,CAAC;AACN,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"classifier.d.ts","sourceRoot":"","sources":["../../../src/analytics/shared/classifier.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAMvC,eAAO,MAAM,cAAc,EAAE,MAAmO,CAAC;AAEjQ,eAAO,MAAM,gBAAgB,EAAE,MAAqK,CAAC;AAErM,eAAO,MAAM,iBAAiB,EAAE,MAAkK,CAAC;AAEnM,eAAO,MAAM,mBAAmB,EAAE,MAA4K,CAAC;AAE/M,eAAO,MAAM,iBAAiB,EAAE,MAA2K,CAAC;AAE5M,eAAO,MAAM,aAAa,EAAE,MAAoW,CAAC;AAEjY,eAAO,MAAM,eAAe,EAAE,MAAiJ,CAAC;AAEhL,eAAO,MAAM,WAAW,EAAE,MAA0B,CAAC;AAMrD,sEAAsE;AACtE,eAAO,MAAM,aAAa,EAAE,MAqC3B,CAAC;AAEF,2CAA2C;AAC3C,eAAO,MAAM,cAAc,EAAE,MA0D5B,CAAC;AAEF,0EAA0E;AAC1E,eAAO,MAAM,gBAAgB,EAAE,MAoC9B,CAAC;AAEF,sBAAsB;AACtB,eAAO,MAAM,YAAY,EAAE,MAA0M,CAAC;AA6CtO,MAAM,WAAW,mBAAmB;IAChC,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,EAAE,OAAO,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;IAClB,YAAY,EAAE,OAAO,CAAC;IACtB,cAAc,EAAE,OAAO,CAAC;IACxB,GAAG,EAAE,OAAO,CAAC;CAChB;AAED,wFAAwF;AACxF,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,mBAAmB,CAiBxE;AAMD,MAAM,WAAW,eAAe;IAC5B,IAAI,EAAE,OAAO,CAAC;IACd,IAAI,EAAE,OAAO,CAAC;IACd,IAAI,EAAE,OAAO,CAAC;IACd,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,OAAO,CAAC;IAChB,GAAG,EAAE,OAAO,CAAC;IACb,KAAK,EAAE,OAAO,CAAC;IACf,IAAI,EAAE,OAAO,CAAC;CACjB;AAED,8EAA8E;AAC9E,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CASnF;AAED,wBAAgB,oBAAoB,IAAI,eAAe,CAEtD;AAMD,MAAM,WAAW,YAAY;IACzB,IAAI,EAAE,OAAO,CAAC;IACd,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,EAAE,OAAO,CAAC;CAChB;AAED,wBAAgB,iBAAiB,IAAI,YAAY,CAEhD;AAED,6EAA6E;AAC7E,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAQ5E;AAMD,MAAM,WAAW,WAAW;IACxB,iBAAiB,EAAE,mBAAmB,CAAC;IACvC,YAAY,EAAE,eAAe,CAAC;IAC9B,cAAc,EAAE,YAAY,CAAC;CAChC;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,WAAW,GAAG,YAAY,CAsGzD"}
@@ -186,12 +186,21 @@ const BASH_TOOLS = new Set([
186
186
  ]);
187
187
  const TASK_TOOLS = new Set([
188
188
  "Task", "Agent", "AgentSpawn", "TodoWrite",
189
+ // Newer Claude Code durable-task tools — semantically task/plan
190
+ // operations. Without these the classifier's `task` flag doesn't
191
+ // light up for sessions that drive work via the durable task list
192
+ // (real corpus shows hundreds of TaskCreate / TaskUpdate per session).
193
+ "TaskCreate", "TaskUpdate", "TaskGet", "TaskList",
189
194
  ]);
190
195
  const SEARCH_TOOLS = new Set([
191
196
  "WebSearch", "WebFetch", "ToolSearch",
192
197
  ]);
193
198
  const PLAN_TOOLS = new Set([
194
199
  "TodoWrite", "ExitPlanMode", "Plan",
200
+ // Durable-task tools double as planning operations (each TaskCreate /
201
+ // TaskUpdate is an explicit plan-state mutation). Keeping them in
202
+ // both buckets is intentional — mirrors TodoWrite's dual membership.
203
+ "TaskCreate", "TaskUpdate",
195
204
  ]);
196
205
  /** Run all user-msg regexes on the prompt text — privacy-safe (only flags returned). */
197
206
  function extractUserMsgKeywords(text) {
@@ -0,0 +1 @@
1
+ {"version":3,"file":"classifier.js","sourceRoot":"","sources":["../../../src/analytics/shared/classifier.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;GAkBG;;;AAkOH,wDAiBC;AAkBD,oDASC;AAED,oDAEC;AAaD,8CAEC;AAGD,8CAQC;AAkCD,oCAsGC;AAhbD,4EAA4E;AAC5E,iDAAiD;AACjD,4EAA4E;AAE/D,QAAA,cAAc,GAAW,0NAA0N,CAAC;AAEpP,QAAA,gBAAgB,GAAW,4JAA4J,CAAC;AAExL,QAAA,iBAAiB,GAAW,yJAAyJ,CAAC;AAEtL,QAAA,mBAAmB,GAAW,mKAAmK,CAAC;AAElM,QAAA,iBAAiB,GAAW,kKAAkK,CAAC;AAE/L,QAAA,aAAa,GAAW,2VAA2V,CAAC;AAEpX,QAAA,eAAe,GAAW,wIAAwI,CAAC;AAEnK,QAAA,WAAW,GAAW,iBAAiB,CAAC;AAErD,4EAA4E;AAC5E,uEAAuE;AACvE,4EAA4E;AAE5E,sEAAsE;AACzD,QAAA,aAAa,GAAW,IAAI,MAAM,CAC3C,MAAM,GAAG;IACL,mDAAmD;IACnD,MAAM,EAAE,MAAM,EAAE,UAAU;IAC1B,kCAAkC;IAClC,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK;IAC7E,MAAM,EAAE,KAAK;IACb,aAAa,EAAE,cAAc,EAAE,cAAc,EAAE,aAAa;IAC5D,6DAA6D;IAC7D,SAAS;IACT,QAAQ,EAAE,YAAY,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,YAAY;IACrE,4CAA4C;IAC5C,eAAe;IACf,OAAO;IACP,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,cAAc,EAAE,cAAc;IAC/D,2CAA2C;IAC3C,KAAK;IACL,YAAY,EAAE,WAAW,EAAE,QAAQ;IACnC,OAAO;IACP,2BAA2B;IAC3B,0BAA0B;IAC1B,aAAa,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,aAAa;IACjE,OAAO,EAAE,QAAQ,EAAE,MAAM;IACzB,MAAM;IACN,SAAS,EAAE,MAAM,EAAE,kBAAkB;IACrC,OAAO;IACP,gBAAgB,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ;IAC5C,gBAAgB;IAChB,eAAe,EAAE,oBAAoB;IACrC,kBAAkB;IAClB,aAAa,EAAE,+BAA+B;IAC9C,6CAA6C;IAC7C,wBAAwB,EAAE,eAAe,EAAE,OAAO,EAAE,oCAAoC;IACxF,wBAAwB;IACxB,SAAS,EAAE,WAAW,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ;CAChD,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,EACpB,GAAG,CACN,CAAC;AAEF,2CAA2C;AAC9B,QAAA,cAAc,GAAW,IAAI,MAAM,CAC5C,MAAM,GAAG;IACL,8BAA8B;IAC9B,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,QAAQ;IAC5F,eAAe,EAAE,eAAe,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,gBAAgB;IACvF,eAAe;IACf,4BAA4B;IAC5B,2CAA2C,EAAE,0BAA0B;IACvE,qCAAqC;IACrC,qCAAqC;IACrC,mCAAmC,EAAE,cAAc;IACnD,SAAS;IACT,wBAAwB,EAAE,6CAA6C;IACvE,6BAA6B,EAAE,cAAc,EAAE,gBAAgB,EAAE,eAAe;IAChF,yBAAyB,EAAE,2BAA2B;IACtD,OAAO;IACP,eAAe,EAAE,cAAc,EAAE,aAAa;IAC9C,KAAK;IACL,6BAA6B;IAC7B,OAAO;IACP,wCAAwC;IACxC,MAAM;IACN,2CAA2C;IAC3C,sCAAsC,EAAE,6DAA6D;IACrG,qCAAqC;IACrC,MAAM;IACN,4CAA4C,EAAE,gBAAgB;IAC9D,OAAO;IACP,sCAAsC;IACtC,iBAAiB;IACjB,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAAE,4BAA4B;IACxE,6BAA6B;IAC7B,2CAA2C,EAAE,gBAAgB;IAC7D,8BAA8B;IAC9B,4CAA4C;IAC5C,uCAAuC;IACvC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;IACpC,kCAAkC;IAClC,QAAQ,EAAE,SAAS,EAAE,eAAe,EAAE,UAAU;IAChD,qCAAqC;IACrC,qEAAqE;IACrE,qCAAqC;IACrC,0CAA0C;IAC1C,kCAAkC;IAClC,iCAAiC;IACjC,kBAAkB,EAAE,aAAa,EAAE,MAAM;IACzC,sBAAsB,EAAE,eAAe;IACvC,mBAAmB;IACnB,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,WAAW;IAChD,SAAS;IACT,0BAA0B,EAAE,2BAA2B,EAAE,cAAc;IACvE,qBAAqB,EAAE,gBAAgB,EAAE,YAAY,EAAE,UAAU;IACjE,kBAAkB;IAClB,uCAAuC,EAAE,+BAA+B;IACxE,oBAAoB;IACpB,QAAQ;CACX,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,EACpB,GAAG,CACN,CAAC;AAEF,0EAA0E;AAC7D,QAAA,gBAAgB,GAAW,IAAI,MAAM,CAC9C,MAAM,GAAG;IACL,QAAQ;IACR,6BAA6B;IAC7B,yBAAyB;IACzB,8BAA8B;IAC9B,0BAA0B;IAC1B,SAAS;IACT,kBAAkB,EAAE,iBAAiB,EAAE,mBAAmB;IAC1D,2BAA2B,EAAE,wBAAwB;IACrD,kBAAkB,EAAE,kBAAkB;IACtC,mCAAmC;IACnC,OAAO;IACP,gBAAgB,EAAE,kCAAkC;IACpD,KAAK;IACL,uCAAuC;IACvC,OAAO;IACP,0BAA0B;IAC1B,MAAM;IACN,gBAAgB,EAAE,mBAAmB;IACrC,MAAM;IACN,+CAA+C;IAC/C,OAAO;IACP,sCAAsC,EAAE,8BAA8B;IACtE,+BAA+B;IAC/B,2CAA2C;IAC3C,yBAAyB,EAAE,YAAY;IACvC,gBAAgB,EAAE,gBAAgB;IAClC,mBAAmB;IACnB,mBAAmB,EAAE,gBAAgB,EAAE,YAAY;IACnD,iBAAiB;IACjB,kBAAkB,EAAE,kBAAkB,EAAE,mBAAmB;IAC3D,aAAa;IACb,gBAAgB;CACnB,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,EACpB,GAAG,CACN,CAAC;AAEF,sBAAsB;AACT,QAAA,YAAY,GAAW,iMAAiM,CAAC;AAEtO,4EAA4E;AAC5E,oDAAoD;AACpD,4EAA4E;AAE5E,MAAM,UAAU,GAAgB,IAAI,GAAG,CAAS;IAC5C,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,cAAc,EAAE,eAAe;IAC7E,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,aAAa,EAAE,aAAa;CAC5E,CAAC,CAAC;AAEH,MAAM,UAAU,GAAgB,IAAI,GAAG,CAAS;IAC5C,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,UAAU,EAAE,UAAU;IAC9D,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU;CAC1C,CAAC,CAAC;AAEH,MAAM,UAAU,GAAgB,IAAI,GAAG,CAAS;IAC5C,MAAM,EAAE,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,gBAAgB,EAAE,OAAO,EAAE,OAAO;CACpF,CAAC,CAAC;AAEH,MAAM,UAAU,GAAgB,IAAI,GAAG,CAAS;IAC5C,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,WAAW;IAC1C,gEAAgE;IAChE,iEAAiE;IACjE,kEAAkE;IAClE,uEAAuE;IACvE,YAAY,EAAE,YAAY,EAAE,SAAS,EAAE,UAAU;CACpD,CAAC,CAAC;AAEH,MAAM,YAAY,GAAgB,IAAI,GAAG,CAAS;IAC9C,WAAW,EAAE,UAAU,EAAE,YAAY;CACxC,CAAC,CAAC;AAEH,MAAM,UAAU,GAAgB,IAAI,GAAG,CAAS;IAC5C,WAAW,EAAE,cAAc,EAAE,MAAM;IACnC,sEAAsE;IACtE,kEAAkE;IAClE,qEAAqE;IACrE,YAAY,EAAE,YAAY;CAC7B,CAAC,CAAC;AAiBH,wFAAwF;AACxF,SAAgB,sBAAsB,CAAC,IAAY;IAC/C,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACpB,OAAO;YACH,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK;YAChE,QAAQ,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK;SAC1E,CAAC;IACN,CAAC;IACD,OAAO;QACH,KAAK,EAAE,sBAAc,CAAC,IAAI,CAAC,IAAI,CAAC;QAChC,OAAO,EAAE,wBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;QACpC,QAAQ,EAAE,yBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC;QACtC,UAAU,EAAE,2BAAmB,CAAC,IAAI,CAAC,IAAI,CAAC;QAC1C,QAAQ,EAAE,yBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC;QACtC,YAAY,EAAE,qBAAa,CAAC,IAAI,CAAC,IAAI,CAAC;QACtC,cAAc,EAAE,uBAAe,CAAC,IAAI,CAAC,IAAI,CAAC;QAC1C,GAAG,EAAE,mBAAW,CAAC,IAAI,CAAC,IAAI,CAAC;KAC9B,CAAC;AACN,CAAC;AAiBD,8EAA8E;AAC9E,SAAgB,oBAAoB,CAAC,KAAsB,EAAE,QAAgB;IACzE,IAAI,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;QAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC;IAAC,CAAC;IACpD,IAAI,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;QAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC;IAAC,CAAC;IACpD,IAAI,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;QAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC;IAAC,CAAC;IACpD,IAAI,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;QAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC;IAAC,CAAC;IACpD,IAAI,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;QAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC;IAAC,CAAC;IACxD,IAAI,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;QAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC;IAAC,CAAC;IACpD,IAAI,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QAAC,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC;IAAC,CAAC;IACvD,IAAI,QAAQ,KAAK,OAAO,IAAI,QAAQ,KAAK,cAAc,EAAE,CAAC;QAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC;IAAC,CAAC;AACpF,CAAC;AAED,SAAgB,oBAAoB;IAChC,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;AACxH,CAAC;AAaD,SAAgB,iBAAiB;IAC7B,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC;AACrE,CAAC;AAED,6EAA6E;AAC7E,SAAgB,iBAAiB,CAAC,KAAmB,EAAE,OAAe;IAClE,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO;IACX,CAAC;IACD,IAAI,qBAAa,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC;IAAC,CAAC;IACvD,IAAI,sBAAc,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC;IAAC,CAAC;IACzD,IAAI,wBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC;IAAC,CAAC;IAC7D,IAAI,oBAAY,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QAAC,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC;IAAC,CAAC;AACzD,CAAC;AAYD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,SAAgB,YAAY,CAAC,CAAc;IACvC,MAAM,CAAC,GAAoB,CAAC,CAAC,YAAY,CAAC;IAC1C,MAAM,CAAC,GAAwB,CAAC,CAAC,iBAAiB,CAAC;IACnD,MAAM,CAAC,GAAiB,CAAC,CAAC,cAAc,CAAC;IAEzC,MAAM,OAAO,GAAY,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC;IAExG,8DAA8D;IAC9D,IAAI,CAAC,OAAO,EAAE,CAAC;QACX,IAAI,CAAC,CAAC,UAAU,EAAE,CAAC;YACf,OAAO,eAAe,CAAC;QAC3B,CAAC;QACD,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;YACb,OAAO,aAAa,CAAC;QACzB,CAAC;QACD,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;YACV,OAAO,WAAW,CAAC;QACvB,CAAC;QACD,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;YACZ,OAAO,SAAS,CAAC;QACrB,CAAC;QACD,IAAI,CAAC,CAAC,YAAY,IAAI,CAAC,CAAC,cAAc,EAAE,CAAC;YACrC,OAAO,QAAQ,CAAC;QACpB,CAAC;QACD,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC;YACR,OAAO,aAAa,CAAC;QACzB,CAAC;QACD,OAAO,cAAc,CAAC;IAC1B,CAAC;IAED,gEAAgE;IAChE,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACpB,OAAO,UAAU,CAAC;IACtB,CAAC;IACD,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;QACT,OAAO,YAAY,CAAC;IACxB,CAAC;IAED,iEAAiE;IACjE,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACpB,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;YACT,OAAO,SAAS,CAAC;QACrB,CAAC;QACD,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC;YACR,OAAO,KAAK,CAAC;QACjB,CAAC;QACD,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;YACvB,OAAO,cAAc,CAAC;QAC1B,CAAC;QACD,8CAA8C;QAC9C,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;YACV,OAAO,WAAW,CAAC;QACvB,CAAC;QACD,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;YACb,OAAO,aAAa,CAAC;QACzB,CAAC;IACL,CAAC;IAED,kDAAkD;IAClD,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;QACT,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;YACV,OAAO,WAAW,CAAC;QACvB,CAAC;QACD,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;YACb,OAAO,aAAa,CAAC;QACzB,CAAC;QACD,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;YACZ,OAAO,SAAS,CAAC;QACrB,CAAC;QACD,OAAO,QAAQ,CAAC;IACpB,CAAC;IAED,yDAAyD;IACzD,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;QACnB,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;YACV,OAAO,WAAW,CAAC;QACvB,CAAC;QACD,OAAO,aAAa,CAAC;IACzB,CAAC;IAED,qEAAqE;IACrE,8CAA8C;IAC9C,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;QACT,OAAO,QAAQ,CAAC;IACpB,CAAC;IAED,sCAAsC;IACtC,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC;QACpB,OAAO,aAAa,CAAC;IACzB,CAAC;IAED,kCAAkC;IAClC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;QACT,OAAO,aAAa,CAAC;IACzB,CAAC;IAED,2BAA2B;IAC3B,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;QACV,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,OAAO,SAAS,CAAC;AACrB,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../src/analytics/shared/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AA6BvC;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAQnD;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAC9B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,EACpC,GAAG,EAAE,OAAO,EACZ,MAAM,EAAE,MAAM,EACd,aAAa,CAAC,EAAE,MAAM,GACvB,MAAM,CAwBR"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../src/analytics/shared/errors.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Heuristic conversion factor for estimating tokens from byte length when
3
+ * we don't have an authoritative `usage` field to read from. Used by the
4
+ * per-tool input-side attribution: a tool_result.content is part of the
5
+ * NEXT assistant message's `input_tokens`, but we can't easily compute
6
+ * "how many of those input_tokens are this tool's contribution" without
7
+ * tokenizing. Instead we estimate `bytes / BYTES_PER_TOKEN`.
8
+ *
9
+ * Anthropic / OpenAI BPE tokenizers both average ~3.5–4.5 bytes/token for
10
+ * typical tool_result content (mix of code, JSON, English). 4 is a
11
+ * defensible middle. Shared across Claude + Codex projection paths.
12
+ */
13
+ export declare const BYTES_PER_TOKEN: number;
14
+ //# sourceMappingURL=tokens.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokens.d.ts","sourceRoot":"","sources":["../../../src/analytics/shared/tokens.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,eAAe,EAAE,MAAU,CAAC"}
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BYTES_PER_TOKEN = void 0;
4
+ /**
5
+ * Heuristic conversion factor for estimating tokens from byte length when
6
+ * we don't have an authoritative `usage` field to read from. Used by the
7
+ * per-tool input-side attribution: a tool_result.content is part of the
8
+ * NEXT assistant message's `input_tokens`, but we can't easily compute
9
+ * "how many of those input_tokens are this tool's contribution" without
10
+ * tokenizing. Instead we estimate `bytes / BYTES_PER_TOKEN`.
11
+ *
12
+ * Anthropic / OpenAI BPE tokenizers both average ~3.5–4.5 bytes/token for
13
+ * typical tool_result content (mix of code, JSON, English). 4 is a
14
+ * defensible middle. Shared across Claude + Codex projection paths.
15
+ */
16
+ exports.BYTES_PER_TOKEN = 4;
17
+ //# sourceMappingURL=tokens.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokens.js","sourceRoot":"","sources":["../../../src/analytics/shared/tokens.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;;;;GAWG;AACU,QAAA,eAAe,GAAW,CAAC,CAAC"}
@@ -18,6 +18,7 @@
18
18
  * (`input_size`, `output_size`) plus a heuristic `approximated_*_tokens`;
19
19
  * there is no per-tool token attribution and no `unattributed_*` residual.
20
20
  */
21
+ import { Event } from "../../lib/event";
21
22
  /**
22
23
  * Current schema_version emitted on the wire. Kept at "1.0" by operator
23
24
  * choice — the internal refactor (logical groups + byte-based ToolUsage)
@@ -29,7 +30,7 @@ export declare const SCHEMA_VERSION: string;
29
30
  export type ContextTurnBucket = "1-3" | "4-10" | "11-25" | "26-50" | "51-100" | "100+";
30
31
  /** Closed list of error categories derived from tool_result.content keyword match. */
31
32
  export type ToolErrorCategory = "command_failed" | "user_rejected" | "edit_failed" | "file_changed" | "file_too_large" | "file_not_found" | "other";
32
- export type TranscriptSource = "claude-code" | "cursor" | "missing";
33
+ export type TranscriptSource = "claude-code" | "cursor" | "codex" | "missing";
33
34
  /**
34
35
  * Per-turn category label assigned by the heuristic classifier in
35
36
  * `src/analytics/classifier.ts`. Mirrors codeburn's taxonomy with extended
@@ -462,10 +463,28 @@ export interface AnalyticsSessionState {
462
463
  * Anthropic API message ids already counted across all prior slices.
463
464
  * Claude Code's transcript writer occasionally persists the same
464
465
  * assistant API response on multiple JSONL lines; projection skips
465
- * any assistant line whose `message.id` is in this set so a single
466
- * API call counts once toward tokens / cost.
466
+ * usage / cost / counter increments on any assistant line whose
467
+ * `message.id` is in this set so a single API call counts once
468
+ * toward tokens / cost. Content blocks (tool_use, text, thinking)
469
+ * are deduped separately by `seen_tool_use_ids` because Claude Code
470
+ * 2.1+ splits a single API response's content blocks across
471
+ * multiple JSONL lines that share the same msg_id but carry
472
+ * DIFFERENT tool_use blocks per chunk.
467
473
  */
468
474
  seen_assistant_message_ids?: string[];
475
+ /**
476
+ * Anthropic API tool_use ids already counted across all prior
477
+ * slices. Per-tool_use dedup necessary because Claude Code 2.1+
478
+ * splits a single API response's content blocks across multiple
479
+ * JSONL lines (each carrying the SAME message.id but DIFFERENT
480
+ * tool_use blocks). Projection walks content blocks on every
481
+ * chunk regardless of msg_id, but skips any tool_use block whose
482
+ * `id` is in this set so the legacy "true duplicate re-emit" case
483
+ * doesn't inflate counts. Together with `seen_assistant_message_ids`,
484
+ * this gives full coverage of both streaming-split and
485
+ * true-duplicate transcript shapes.
486
+ */
487
+ seen_tool_use_ids?: string[];
469
488
  };
470
489
  }
471
490
  /**
@@ -758,7 +777,6 @@ export interface SessionTurnStepAnalytics {
758
777
  /** Context tokens at this step's assistant message (single sample). */
759
778
  context_tokens?: number;
760
779
  }
761
- import { Event } from "../lib/event";
762
780
  /**
763
781
  * Wire event format. Extends the generic `Event` base (see
764
782
  * `src/lib/event.ts`) so the collector envelope shape stays uniform
@@ -777,8 +795,8 @@ export interface SessionTurnStepEvent extends Event {
777
795
  step: SessionTurnStepAnalytics;
778
796
  }
779
797
  /**
780
- * Per-API-request body. Mirrors the Java `APIRequestEvent` shape (one
781
- * record per assistant message line in the transcript). Stored in
798
+ * Per-API-request body. Mirrors the collector's `api_request` envelope
799
+ * (one record per assistant message line in the transcript). Stored in
782
800
  * `internal.pending_api_request_events` as the body-only struct; emit
783
801
  * wraps with the {@link Event} envelope at drain time.
784
802
  *
@@ -802,7 +820,7 @@ export interface SessionTurnStepEvent extends Event {
802
820
  * (synthetic placeholder messages).
803
821
  * - `duration`: NEVER populated from transcript — Claude Code's transcript
804
822
  * does not carry per-API-call latency. Always null in transcript-derived
805
- * events. (Java consumers writing their own APIRequestEvents fill this.)
823
+ * events. (Producers wiring their own server-side timing fill this.)
806
824
  */
807
825
  export interface APIRequestAnalytics {
808
826
  id: string;
@@ -822,8 +840,8 @@ export interface APIRequestAnalytics {
822
840
  }
823
841
  /**
824
842
  * Wire event for a single API request. Flat field layout (no nested body
825
- * object) — matches the Java `APIRequestEvent` shape exactly so the
826
- * collector schema stays uniform across producers.
843
+ * object) — matches the collector's `api_request` envelope exactly so
844
+ * the schema stays uniform across producers.
827
845
  */
828
846
  export interface APIRequestEvent extends Event {
829
847
  type: "api_request";
@@ -839,6 +857,21 @@ export interface APIRequestEvent extends Event {
839
857
  cache_creation_tokens: number;
840
858
  cost_usd: number;
841
859
  duration: number | null;
860
+ /**
861
+ * Codex-only bonus signal: reasoning tokens billed at output rate.
862
+ * Already INCLUDED in `output_tokens` (subset, not additive). Omitted
863
+ * from Claude api_request events (Anthropic transcripts don't carry
864
+ * a separate reasoning bucket). Optional so Claude side drops it
865
+ * naturally via JSON.stringify undefined-omission.
866
+ */
867
+ reasoning_tokens?: number;
868
+ /**
869
+ * Codex-only correlation: the parent `task_started.turn_id` this
870
+ * api_request belongs to. Optional so Claude api_request shapes stay
871
+ * unchanged (Claude uses a separate `activity_id` envelope field for
872
+ * turn correlation).
873
+ */
874
+ turn_id?: string | null;
842
875
  }
843
876
  /**
844
877
  * Delta produced by projecting a single slice of new transcript bytes.