@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.
- package/CHANGELOG.md +12 -0
- package/README.md +2 -95
- package/dist/analytics/{emit.d.ts → claude/emit.d.ts} +1 -1
- package/dist/analytics/claude/emit.d.ts.map +1 -0
- package/dist/analytics/{emit.js → claude/emit.js} +34 -7
- package/dist/analytics/claude/emit.js.map +1 -0
- package/dist/analytics/{hook-trigger.d.ts → claude/hook-trigger.d.ts} +1 -1
- package/dist/analytics/claude/hook-trigger.d.ts.map +1 -0
- package/dist/analytics/{hook-trigger.js → claude/hook-trigger.js} +2 -2
- package/dist/analytics/claude/hook-trigger.js.map +1 -0
- package/dist/analytics/claude/log.d.ts.map +1 -0
- package/dist/analytics/{log.js → claude/log.js} +1 -1
- package/dist/analytics/claude/log.js.map +1 -0
- package/dist/analytics/{merge.d.ts → claude/merge.d.ts} +2 -1
- package/dist/analytics/claude/merge.d.ts.map +1 -0
- package/dist/analytics/{merge.js → claude/merge.js} +13 -1
- package/dist/analytics/claude/merge.js.map +1 -0
- package/dist/analytics/{pricing.d.ts → claude/pricing.d.ts} +1 -13
- package/dist/analytics/claude/pricing.d.ts.map +1 -0
- package/dist/analytics/{pricing.js → claude/pricing.js} +6 -14
- package/dist/analytics/claude/pricing.js.map +1 -0
- package/dist/analytics/{projection.d.ts → claude/projection.d.ts} +31 -7
- package/dist/analytics/claude/projection.d.ts.map +1 -0
- package/dist/analytics/{projection.js → claude/projection.js} +631 -327
- package/dist/analytics/claude/projection.js.map +1 -0
- package/dist/analytics/{spawn.d.ts → claude/spawn.d.ts} +4 -4
- package/dist/analytics/claude/spawn.d.ts.map +1 -0
- package/dist/analytics/{spawn.js → claude/spawn.js} +4 -3
- package/dist/analytics/claude/spawn.js.map +1 -0
- package/dist/analytics/{state.d.ts → claude/state.d.ts} +1 -1
- package/dist/analytics/claude/state.d.ts.map +1 -0
- package/dist/analytics/{state.js → claude/state.js} +2 -2
- package/dist/analytics/claude/state.js.map +1 -0
- package/dist/analytics/claude/transcript.d.ts.map +1 -0
- package/dist/analytics/{transcript.js → claude/transcript.js} +1 -1
- package/dist/analytics/claude/transcript.js.map +1 -0
- package/dist/analytics/codex/api-request.d.ts +108 -0
- package/dist/analytics/codex/api-request.d.ts.map +1 -0
- package/dist/analytics/codex/api-request.js +155 -0
- package/dist/analytics/codex/api-request.js.map +1 -0
- package/dist/analytics/codex/apply-patch.d.ts +21 -0
- package/dist/analytics/codex/apply-patch.d.ts.map +1 -0
- package/dist/analytics/codex/apply-patch.js +49 -0
- package/dist/analytics/codex/apply-patch.js.map +1 -0
- package/dist/analytics/codex/classifier.d.ts +28 -0
- package/dist/analytics/codex/classifier.d.ts.map +1 -0
- package/dist/analytics/codex/classifier.js +111 -0
- package/dist/analytics/codex/classifier.js.map +1 -0
- package/dist/analytics/codex/emit.d.ts +47 -0
- package/dist/analytics/codex/emit.d.ts.map +1 -0
- package/dist/analytics/codex/emit.js +158 -0
- package/dist/analytics/codex/emit.js.map +1 -0
- package/dist/analytics/codex/events-emit.d.ts +62 -0
- package/dist/analytics/codex/events-emit.d.ts.map +1 -0
- package/dist/analytics/codex/events-emit.js +555 -0
- package/dist/analytics/codex/events-emit.js.map +1 -0
- package/dist/analytics/codex/pricing.d.ts +57 -0
- package/dist/analytics/codex/pricing.d.ts.map +1 -0
- package/dist/analytics/codex/pricing.js +125 -0
- package/dist/analytics/codex/pricing.js.map +1 -0
- package/dist/analytics/codex/projection.d.ts +51 -0
- package/dist/analytics/codex/projection.d.ts.map +1 -0
- package/dist/analytics/codex/projection.js +1477 -0
- package/dist/analytics/codex/projection.js.map +1 -0
- package/dist/analytics/codex/spawn.d.ts +27 -0
- package/dist/analytics/codex/spawn.d.ts.map +1 -0
- package/dist/analytics/codex/spawn.js +64 -0
- package/dist/analytics/codex/spawn.js.map +1 -0
- package/dist/analytics/codex/status-snapshot.d.ts +80 -0
- package/dist/analytics/codex/status-snapshot.d.ts.map +1 -0
- package/dist/analytics/codex/status-snapshot.js +206 -0
- package/dist/analytics/codex/status-snapshot.js.map +1 -0
- package/dist/analytics/codex/transcript.d.ts +51 -0
- package/dist/analytics/codex/transcript.d.ts.map +1 -0
- package/dist/analytics/codex/transcript.js +134 -0
- package/dist/analytics/codex/transcript.js.map +1 -0
- package/dist/analytics/codex/types.d.ts +253 -0
- package/dist/analytics/codex/types.d.ts.map +1 -0
- package/dist/analytics/codex/types.js +29 -0
- package/dist/analytics/codex/types.js.map +1 -0
- package/dist/analytics/shared/classifier.d.ts.map +1 -0
- package/dist/analytics/{classifier.js → shared/classifier.js} +9 -0
- package/dist/analytics/shared/classifier.js.map +1 -0
- package/dist/analytics/shared/errors.d.ts.map +1 -0
- package/dist/analytics/shared/errors.js.map +1 -0
- package/dist/analytics/shared/tokens.d.ts +14 -0
- package/dist/analytics/shared/tokens.d.ts.map +1 -0
- package/dist/analytics/shared/tokens.js +17 -0
- package/dist/analytics/shared/tokens.js.map +1 -0
- package/dist/analytics/{types.d.ts → shared/types.d.ts} +42 -9
- package/dist/analytics/shared/types.d.ts.map +1 -0
- package/dist/analytics/shared/types.js.map +1 -0
- package/dist/clients/base.d.ts +9 -0
- package/dist/clients/base.d.ts.map +1 -1
- package/dist/clients/claude/hooks/activity-end.js +1 -1
- package/dist/clients/claude/hooks/activity-end.js.map +1 -1
- package/dist/clients/claude/hooks/activity-start.js +1 -1
- package/dist/clients/claude/hooks/activity-start.js.map +1 -1
- package/dist/clients/claude/hooks/clear-verdict.d.ts.map +1 -1
- package/dist/clients/claude/hooks/clear-verdict.js +14 -0
- package/dist/clients/claude/hooks/clear-verdict.js.map +1 -1
- package/dist/clients/claude/hooks/session-end.d.ts.map +1 -1
- package/dist/clients/claude/hooks/session-end.js +7 -1
- package/dist/clients/claude/hooks/session-end.js.map +1 -1
- package/dist/clients/claude/hooks/session-start.d.ts.map +1 -1
- package/dist/clients/claude/hooks/session-start.js +7 -1
- package/dist/clients/claude/hooks/session-start.js.map +1 -1
- package/dist/clients/claude/hooks/session-status.d.ts.map +1 -1
- package/dist/clients/claude/hooks/session-status.js +13 -9
- package/dist/clients/claude/hooks/session-status.js.map +1 -1
- package/dist/clients/claude/hooks/track-action.d.ts.map +1 -1
- package/dist/clients/claude/hooks/track-action.js +26 -1
- package/dist/clients/claude/hooks/track-action.js.map +1 -1
- package/dist/clients/claude/hooks/verify-gate.d.ts.map +1 -1
- package/dist/clients/claude/hooks/verify-gate.js +8 -1
- package/dist/clients/claude/hooks/verify-gate.js.map +1 -1
- package/dist/clients/claude/index.d.ts +1 -0
- package/dist/clients/claude/index.d.ts.map +1 -1
- package/dist/clients/claude/index.js +18 -14
- package/dist/clients/claude/index.js.map +1 -1
- package/dist/clients/claude/util.d.ts.map +1 -1
- package/dist/clients/claude/util.js +55 -0
- package/dist/clients/claude/util.js.map +1 -1
- package/dist/clients/codex/commands/ironbee-verify/SKILL.md +58 -0
- package/dist/clients/codex/hooks/activity-end.d.ts +9 -0
- package/dist/clients/codex/hooks/activity-end.d.ts.map +1 -0
- package/dist/clients/codex/hooks/activity-end.js +65 -0
- package/dist/clients/codex/hooks/activity-end.js.map +1 -0
- package/dist/clients/codex/hooks/activity-start.d.ts +17 -0
- package/dist/clients/codex/hooks/activity-start.d.ts.map +1 -0
- package/dist/clients/codex/hooks/activity-start.js +38 -0
- package/dist/clients/codex/hooks/activity-start.js.map +1 -0
- package/dist/clients/codex/hooks/clear-verdict.d.ts +55 -0
- package/dist/clients/codex/hooks/clear-verdict.d.ts.map +1 -0
- package/dist/clients/codex/hooks/clear-verdict.js +299 -0
- package/dist/clients/codex/hooks/clear-verdict.js.map +1 -0
- package/dist/clients/codex/hooks/require-verdict.d.ts +30 -0
- package/dist/clients/codex/hooks/require-verdict.d.ts.map +1 -0
- package/dist/clients/codex/hooks/require-verdict.js +109 -0
- package/dist/clients/codex/hooks/require-verdict.js.map +1 -0
- package/dist/clients/codex/hooks/require-verification.d.ts +12 -0
- package/dist/clients/codex/hooks/require-verification.d.ts.map +1 -0
- package/dist/clients/codex/hooks/require-verification.js +136 -0
- package/dist/clients/codex/hooks/require-verification.js.map +1 -0
- package/dist/clients/codex/hooks/session-start.d.ts +10 -0
- package/dist/clients/codex/hooks/session-start.d.ts.map +1 -0
- package/dist/clients/codex/hooks/session-start.js +94 -0
- package/dist/clients/codex/hooks/session-start.js.map +1 -0
- package/dist/clients/codex/hooks/track-action-monitor.d.ts +10 -0
- package/dist/clients/codex/hooks/track-action-monitor.d.ts.map +1 -0
- package/dist/clients/codex/hooks/track-action-monitor.js +168 -0
- package/dist/clients/codex/hooks/track-action-monitor.js.map +1 -0
- package/dist/clients/codex/hooks/track-action-pre.d.ts +18 -0
- package/dist/clients/codex/hooks/track-action-pre.d.ts.map +1 -0
- package/dist/clients/codex/hooks/track-action-pre.js +35 -0
- package/dist/clients/codex/hooks/track-action-pre.js.map +1 -0
- package/dist/clients/codex/hooks/track-action.d.ts +22 -0
- package/dist/clients/codex/hooks/track-action.d.ts.map +1 -0
- package/dist/clients/codex/hooks/track-action.js +350 -0
- package/dist/clients/codex/hooks/track-action.js.map +1 -0
- package/dist/clients/codex/hooks/verify-gate.d.ts +15 -0
- package/dist/clients/codex/hooks/verify-gate.d.ts.map +1 -0
- package/dist/clients/codex/hooks/verify-gate.js +105 -0
- package/dist/clients/codex/hooks/verify-gate.js.map +1 -0
- package/dist/clients/codex/index.d.ts +42 -0
- package/dist/clients/codex/index.d.ts.map +1 -0
- package/dist/clients/codex/index.js +427 -0
- package/dist/clients/codex/index.js.map +1 -0
- package/dist/clients/codex/platforms/command-verify.backend.md +108 -0
- package/dist/clients/codex/platforms/command-verify.browser.md +108 -0
- package/dist/clients/codex/platforms/command-verify.node.md +61 -0
- package/dist/clients/codex/platforms/rule.backend.md +32 -0
- package/dist/clients/codex/platforms/rule.browser.md +17 -0
- package/dist/clients/codex/platforms/rule.node.md +28 -0
- package/dist/clients/codex/platforms/skill.backend.md +95 -0
- package/dist/clients/codex/platforms/skill.browser.md +28 -0
- package/dist/clients/codex/platforms/skill.node.md +62 -0
- package/dist/clients/codex/rules/ironbee-verification.md +48 -0
- package/dist/clients/codex/skills/ironbee-verification.md +80 -0
- package/dist/clients/codex/util.d.ts +193 -0
- package/dist/clients/codex/util.d.ts.map +1 -0
- package/dist/clients/codex/util.js +784 -0
- package/dist/clients/codex/util.js.map +1 -0
- package/dist/clients/cursor/hooks/activity-end.js +1 -1
- package/dist/clients/cursor/hooks/activity-end.js.map +1 -1
- package/dist/clients/cursor/hooks/clear-verdict.d.ts +5 -2
- package/dist/clients/cursor/hooks/clear-verdict.d.ts.map +1 -1
- package/dist/clients/cursor/hooks/clear-verdict.js +12 -3
- package/dist/clients/cursor/hooks/clear-verdict.js.map +1 -1
- package/dist/clients/cursor/hooks/session-end.js +1 -1
- package/dist/clients/cursor/hooks/session-end.js.map +1 -1
- package/dist/clients/cursor/hooks/session-start.js +1 -1
- package/dist/clients/cursor/hooks/session-start.js.map +1 -1
- package/dist/clients/cursor/hooks/verify-gate.d.ts.map +1 -1
- package/dist/clients/cursor/hooks/verify-gate.js +6 -1
- package/dist/clients/cursor/hooks/verify-gate.js.map +1 -1
- package/dist/clients/cursor/index.d.ts +1 -0
- package/dist/clients/cursor/index.d.ts.map +1 -1
- package/dist/clients/cursor/index.js +22 -13
- package/dist/clients/cursor/index.js.map +1 -1
- package/dist/clients/registry.d.ts.map +1 -1
- package/dist/clients/registry.js +2 -1
- package/dist/clients/registry.js.map +1 -1
- package/dist/commands/{claude.d.ts → claude/index.d.ts} +1 -1
- package/dist/commands/claude/index.d.ts.map +1 -0
- package/dist/commands/{claude.js → claude/index.js} +12 -6
- package/dist/commands/claude/index.js.map +1 -0
- package/dist/commands/{otel.d.ts → claude/otel.d.ts} +5 -1
- package/dist/commands/claude/otel.d.ts.map +1 -0
- package/dist/commands/{otel.js → claude/otel.js} +9 -5
- package/dist/commands/claude/otel.js.map +1 -0
- package/dist/commands/claude/process-analytics.d.ts +19 -0
- package/dist/commands/claude/process-analytics.d.ts.map +1 -0
- package/dist/commands/{process-analytics.js → claude/process-analytics.js} +16 -15
- package/dist/commands/claude/process-analytics.js.map +1 -0
- package/dist/commands/{statusline-toggle.d.ts → claude/statusline-toggle.d.ts} +2 -2
- package/dist/commands/claude/statusline-toggle.d.ts.map +1 -0
- package/dist/commands/{statusline-toggle.js → claude/statusline-toggle.js} +8 -8
- package/dist/commands/claude/statusline-toggle.js.map +1 -0
- package/dist/commands/{statusline.d.ts → claude/statusline.d.ts} +1 -1
- package/dist/commands/claude/statusline.d.ts.map +1 -0
- package/dist/commands/{statusline.js → claude/statusline.js} +4 -4
- package/dist/commands/claude/statusline.js.map +1 -0
- package/dist/commands/codex/index.d.ts +11 -0
- package/dist/commands/codex/index.d.ts.map +1 -0
- package/dist/commands/codex/index.js +17 -0
- package/dist/commands/codex/index.js.map +1 -0
- package/dist/commands/codex/process-analytics.d.ts +14 -0
- package/dist/commands/codex/process-analytics.d.ts.map +1 -0
- package/dist/commands/codex/process-analytics.js +111 -0
- package/dist/commands/codex/process-analytics.js.map +1 -0
- package/dist/commands/hook.js +12 -0
- package/dist/commands/hook.js.map +1 -1
- package/dist/commands/import.js +3 -3
- package/dist/commands/import.js.map +1 -1
- package/dist/commands/queue.js +3 -1
- package/dist/commands/queue.js.map +1 -1
- package/dist/commands/status.js +1 -1
- package/dist/commands/verify.d.ts.map +1 -1
- package/dist/commands/verify.js +1 -2
- package/dist/commands/verify.js.map +1 -1
- package/dist/hooks/core/actions.d.ts +17 -1
- package/dist/hooks/core/actions.d.ts.map +1 -1
- package/dist/hooks/core/actions.js +13 -0
- package/dist/hooks/core/actions.js.map +1 -1
- package/dist/hooks/core/activity-end.d.ts.map +1 -1
- package/dist/hooks/core/activity-end.js +4 -0
- package/dist/hooks/core/activity-end.js.map +1 -1
- package/dist/hooks/core/session-state.d.ts +15 -1
- package/dist/hooks/core/session-state.d.ts.map +1 -1
- package/dist/hooks/core/session-state.js +102 -7
- package/dist/hooks/core/session-state.js.map +1 -1
- package/dist/import/claude/analytics-runner.d.ts +1 -1
- package/dist/import/claude/analytics-runner.d.ts.map +1 -1
- package/dist/import/claude/analytics-runner.js +5 -5
- package/dist/import/claude/analytics-runner.js.map +1 -1
- package/dist/import/claude/auth-mode.d.ts +1 -1
- package/dist/import/claude/auth-mode.d.ts.map +1 -1
- package/dist/import/claude/discovery.js +1 -1
- package/dist/import/claude/discovery.js.map +1 -1
- package/dist/import/claude/encoding.js +1 -1
- package/dist/import/claude/encoding.js.map +1 -1
- package/dist/import/claude/events/file-change.d.ts +10 -1
- package/dist/import/claude/events/file-change.d.ts.map +1 -1
- package/dist/import/claude/events/file-change.js +79 -5
- package/dist/import/claude/events/file-change.js.map +1 -1
- package/dist/import/claude/events/tool-call.d.ts +16 -1
- package/dist/import/claude/events/tool-call.d.ts.map +1 -1
- package/dist/import/claude/events/tool-call.js +122 -15
- package/dist/import/claude/events/tool-call.js.map +1 -1
- package/dist/import/claude/runner.d.ts.map +1 -1
- package/dist/import/claude/runner.js +45 -3
- package/dist/import/claude/runner.js.map +1 -1
- package/dist/import/claude/summary.js +1 -1
- package/dist/import/claude/summary.js.map +1 -1
- package/dist/import/claude/transcript-walk.d.ts +1 -1
- package/dist/import/claude/transcript-walk.d.ts.map +1 -1
- package/dist/import/claude/transcript-walk.js +11 -4
- package/dist/import/claude/transcript-walk.js.map +1 -1
- package/dist/import/codex/analytics-runner.d.ts +46 -0
- package/dist/import/codex/analytics-runner.d.ts.map +1 -0
- package/dist/import/codex/analytics-runner.js +116 -0
- package/dist/import/codex/analytics-runner.js.map +1 -0
- package/dist/import/codex/discovery.d.ts +33 -0
- package/dist/import/codex/discovery.d.ts.map +1 -0
- package/dist/import/codex/discovery.js +202 -0
- package/dist/import/codex/discovery.js.map +1 -0
- package/dist/import/codex/events/file-change.d.ts +42 -0
- package/dist/import/codex/events/file-change.d.ts.map +1 -0
- package/dist/import/codex/events/file-change.js +125 -0
- package/dist/import/codex/events/file-change.js.map +1 -0
- package/dist/import/codex/events/tool-call.d.ts +49 -0
- package/dist/import/codex/events/tool-call.d.ts.map +1 -0
- package/dist/import/codex/events/tool-call.js +151 -0
- package/dist/import/codex/events/tool-call.js.map +1 -0
- package/dist/import/codex/runner.d.ts +34 -0
- package/dist/import/codex/runner.d.ts.map +1 -0
- package/dist/import/codex/runner.js +456 -0
- package/dist/import/codex/runner.js.map +1 -0
- package/dist/import/codex/summary.d.ts +20 -0
- package/dist/import/codex/summary.d.ts.map +1 -0
- package/dist/import/codex/summary.js +206 -0
- package/dist/import/codex/summary.js.map +1 -0
- package/dist/import/events/activity.d.ts.map +1 -1
- package/dist/import/events/activity.js +17 -2
- package/dist/import/events/activity.js.map +1 -1
- package/dist/import/events/session.d.ts +11 -1
- package/dist/import/events/session.d.ts.map +1 -1
- package/dist/import/events/session.js +19 -1
- package/dist/import/events/session.js.map +1 -1
- package/dist/import/ids.js +3 -3
- package/dist/import/ids.js.map +1 -1
- package/dist/import/pipeline.d.ts +22 -15
- package/dist/import/pipeline.d.ts.map +1 -1
- package/dist/import/pipeline.js +99 -18
- package/dist/import/pipeline.js.map +1 -1
- package/dist/import/types.d.ts +4 -0
- package/dist/import/types.d.ts.map +1 -1
- package/dist/import/types.js.map +1 -1
- package/dist/index.js +9 -14
- package/dist/index.js.map +1 -1
- package/dist/lib/collector.d.ts +2 -1
- package/dist/lib/collector.d.ts.map +1 -1
- package/dist/lib/collector.js +28 -3
- package/dist/lib/collector.js.map +1 -1
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/event.d.ts +18 -1
- package/dist/lib/event.d.ts.map +1 -1
- package/dist/lib/event.js +25 -1
- package/dist/lib/event.js.map +1 -1
- package/dist/lib/fs-prune.d.ts +1 -1
- package/dist/lib/fs-prune.js +1 -1
- package/dist/lib/platform-section.d.ts.map +1 -1
- package/dist/lib/platform-section.js +8 -0
- package/dist/lib/platform-section.js.map +1 -1
- package/dist/otel/{context → claude/context}/build.d.ts +1 -1
- package/dist/otel/claude/context/build.d.ts.map +1 -0
- package/dist/otel/{context → claude/context}/build.js +3 -7
- package/dist/otel/claude/context/build.js.map +1 -0
- package/dist/otel/claude/context/classify.d.ts.map +1 -0
- package/dist/otel/claude/context/classify.js.map +1 -0
- package/dist/otel/{context → claude/context}/extract.d.ts +1 -1
- package/dist/otel/claude/context/extract.d.ts.map +1 -0
- package/dist/otel/claude/context/extract.js.map +1 -0
- package/dist/otel/claude/context/markers.d.ts.map +1 -0
- package/dist/otel/{context → claude/context}/markers.js +22 -3
- package/dist/otel/claude/context/markers.js.map +1 -0
- package/dist/otel/claude/context/util.d.ts.map +1 -0
- package/dist/otel/claude/context/util.js.map +1 -0
- package/dist/otel/{daemon → claude/daemon}/ensure.d.ts +1 -1
- package/dist/otel/claude/daemon/ensure.d.ts.map +1 -0
- package/dist/otel/{daemon → claude/daemon}/ensure.js +6 -6
- package/dist/otel/claude/daemon/ensure.js.map +1 -0
- package/dist/otel/{daemon → claude/daemon}/forward.d.ts +1 -1
- package/dist/otel/claude/daemon/forward.d.ts.map +1 -0
- package/dist/otel/{daemon → claude/daemon}/forward.js +0 -0
- package/dist/otel/claude/daemon/forward.js.map +1 -0
- package/dist/otel/claude/daemon/paths.d.ts.map +1 -0
- package/dist/otel/claude/daemon/paths.js.map +1 -0
- package/dist/otel/{daemon → claude/daemon}/process.d.ts +1 -1
- package/dist/otel/claude/daemon/process.d.ts.map +1 -0
- package/dist/otel/{daemon → claude/daemon}/process.js +1 -1
- package/dist/otel/claude/daemon/process.js.map +1 -0
- package/dist/otel/claude/daemon/reprocess.d.ts.map +1 -0
- package/dist/otel/{daemon → claude/daemon}/reprocess.js +2 -2
- package/dist/otel/claude/daemon/reprocess.js.map +1 -0
- package/dist/otel/claude/log-handler.d.ts.map +1 -0
- package/dist/otel/{log-handler.js → claude/log-handler.js} +1 -1
- package/dist/otel/claude/log-handler.js.map +1 -0
- package/dist/otel/collector.js +4 -4
- package/dist/otel/collector.js.map +1 -1
- package/dist/queue/flush.d.ts +23 -0
- package/dist/queue/flush.d.ts.map +1 -1
- package/dist/queue/flush.js +44 -0
- package/dist/queue/flush.js.map +1 -1
- package/dist/queue/handlers/send-event.d.ts.map +1 -1
- package/dist/queue/handlers/send-event.js +5 -4
- package/dist/queue/handlers/send-event.js.map +1 -1
- package/dist/queue/index.d.ts +2 -2
- package/dist/queue/index.d.ts.map +1 -1
- package/dist/queue/index.js +4 -1
- package/dist/queue/index.js.map +1 -1
- package/dist/queue/spawn.d.ts +20 -0
- package/dist/queue/spawn.d.ts.map +1 -1
- package/dist/queue/spawn.js +37 -0
- package/dist/queue/spawn.js.map +1 -1
- package/dist/tui/import/area.js +3 -3
- package/dist/tui/import/area.js.map +1 -1
- package/dist/tui/sessions/area.d.ts.map +1 -1
- package/dist/tui/sessions/area.js +2 -45
- package/dist/tui/sessions/area.js.map +1 -1
- package/package.json +2 -1
- package/dist/analysis/code-changes.d.ts +0 -22
- package/dist/analysis/code-changes.d.ts.map +0 -1
- package/dist/analysis/code-changes.js +0 -141
- package/dist/analysis/code-changes.js.map +0 -1
- package/dist/analysis/cross-session.d.ts +0 -34
- package/dist/analysis/cross-session.d.ts.map +0 -1
- package/dist/analysis/cross-session.js +0 -230
- package/dist/analysis/cross-session.js.map +0 -1
- package/dist/analysis/fix-effectiveness.d.ts +0 -16
- package/dist/analysis/fix-effectiveness.d.ts.map +0 -1
- package/dist/analysis/fix-effectiveness.js +0 -99
- package/dist/analysis/fix-effectiveness.js.map +0 -1
- package/dist/analysis/scoring.d.ts +0 -15
- package/dist/analysis/scoring.d.ts.map +0 -1
- package/dist/analysis/scoring.js +0 -59
- package/dist/analysis/scoring.js.map +0 -1
- package/dist/analysis/time-analysis.d.ts +0 -22
- package/dist/analysis/time-analysis.d.ts.map +0 -1
- package/dist/analysis/time-analysis.js +0 -174
- package/dist/analysis/time-analysis.js.map +0 -1
- package/dist/analysis/verdict-details.d.ts +0 -23
- package/dist/analysis/verdict-details.d.ts.map +0 -1
- package/dist/analysis/verdict-details.js +0 -59
- package/dist/analysis/verdict-details.js.map +0 -1
- package/dist/analysis/verification-quality.d.ts +0 -20
- package/dist/analysis/verification-quality.d.ts.map +0 -1
- package/dist/analysis/verification-quality.js +0 -145
- package/dist/analysis/verification-quality.js.map +0 -1
- package/dist/analytics/classifier.d.ts.map +0 -1
- package/dist/analytics/classifier.js.map +0 -1
- package/dist/analytics/emit.d.ts.map +0 -1
- package/dist/analytics/emit.js.map +0 -1
- package/dist/analytics/errors.d.ts.map +0 -1
- package/dist/analytics/errors.js.map +0 -1
- package/dist/analytics/hook-trigger.d.ts.map +0 -1
- package/dist/analytics/hook-trigger.js.map +0 -1
- package/dist/analytics/log.d.ts.map +0 -1
- package/dist/analytics/log.js.map +0 -1
- package/dist/analytics/merge.d.ts.map +0 -1
- package/dist/analytics/merge.js.map +0 -1
- package/dist/analytics/pricing.d.ts.map +0 -1
- package/dist/analytics/pricing.js.map +0 -1
- package/dist/analytics/projection.d.ts.map +0 -1
- package/dist/analytics/projection.js.map +0 -1
- package/dist/analytics/spawn.d.ts.map +0 -1
- package/dist/analytics/spawn.js.map +0 -1
- package/dist/analytics/state.d.ts.map +0 -1
- package/dist/analytics/state.js.map +0 -1
- package/dist/analytics/transcript.d.ts.map +0 -1
- package/dist/analytics/transcript.js.map +0 -1
- package/dist/analytics/types.d.ts.map +0 -1
- package/dist/analytics/types.js.map +0 -1
- package/dist/clients/claude/commands/ironbee-analyze.md +0 -42
- package/dist/clients/cursor/commands/ironbee-analyze/SKILL.md +0 -48
- package/dist/commands/analyze.d.ts +0 -3
- package/dist/commands/analyze.d.ts.map +0 -1
- package/dist/commands/analyze.js +0 -329
- package/dist/commands/analyze.js.map +0 -1
- package/dist/commands/claude.d.ts.map +0 -1
- package/dist/commands/claude.js.map +0 -1
- package/dist/commands/otel.d.ts.map +0 -1
- package/dist/commands/otel.js.map +0 -1
- package/dist/commands/process-analytics.d.ts +0 -18
- package/dist/commands/process-analytics.d.ts.map +0 -1
- package/dist/commands/process-analytics.js.map +0 -1
- package/dist/commands/statusline-toggle.d.ts.map +0 -1
- package/dist/commands/statusline-toggle.js.map +0 -1
- package/dist/commands/statusline.d.ts.map +0 -1
- package/dist/commands/statusline.js.map +0 -1
- package/dist/otel/context/build.d.ts.map +0 -1
- package/dist/otel/context/build.js.map +0 -1
- package/dist/otel/context/classify.d.ts.map +0 -1
- package/dist/otel/context/classify.js.map +0 -1
- package/dist/otel/context/extract.d.ts.map +0 -1
- package/dist/otel/context/extract.js.map +0 -1
- package/dist/otel/context/markers.d.ts.map +0 -1
- package/dist/otel/context/markers.js.map +0 -1
- package/dist/otel/context/util.d.ts.map +0 -1
- package/dist/otel/context/util.js.map +0 -1
- package/dist/otel/daemon/ensure.d.ts.map +0 -1
- package/dist/otel/daemon/ensure.js.map +0 -1
- package/dist/otel/daemon/forward.d.ts.map +0 -1
- package/dist/otel/daemon/forward.js.map +0 -1
- package/dist/otel/daemon/paths.d.ts.map +0 -1
- package/dist/otel/daemon/paths.js.map +0 -1
- package/dist/otel/daemon/process.d.ts.map +0 -1
- package/dist/otel/daemon/process.js.map +0 -1
- package/dist/otel/daemon/reprocess.d.ts.map +0 -1
- package/dist/otel/daemon/reprocess.js.map +0 -1
- package/dist/otel/log-handler.d.ts.map +0 -1
- package/dist/otel/log-handler.js.map +0 -1
- /package/dist/analytics/{log.d.ts → claude/log.d.ts} +0 -0
- /package/dist/analytics/{transcript.d.ts → claude/transcript.d.ts} +0 -0
- /package/dist/analytics/{classifier.d.ts → shared/classifier.d.ts} +0 -0
- /package/dist/analytics/{errors.d.ts → shared/errors.d.ts} +0 -0
- /package/dist/analytics/{errors.js → shared/errors.js} +0 -0
- /package/dist/analytics/{types.js → shared/types.js} +0 -0
- /package/dist/otel/{context → claude/context}/classify.d.ts +0 -0
- /package/dist/otel/{context → claude/context}/classify.js +0 -0
- /package/dist/otel/{context → claude/context}/extract.js +0 -0
- /package/dist/otel/{context → claude/context}/markers.d.ts +0 -0
- /package/dist/otel/{context → claude/context}/util.d.ts +0 -0
- /package/dist/otel/{context → claude/context}/util.js +0 -0
- /package/dist/otel/{daemon → claude/daemon}/paths.d.ts +0 -0
- /package/dist/otel/{daemon → claude/daemon}/paths.js +0 -0
- /package/dist/otel/{daemon → claude/daemon}/reprocess.d.ts +0 -0
- /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":";AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;;AA0DH,gDAkOC;AA1RD,2BAAkC;AAGlC,mDAA0E;AAC1E,6CAA0F;AAC1F,6CAA0C;AAC1C,oCAMkB;AAClB,kCAAqC;AACrC,sCAA8C;AAC9C,+CAG2B;AAC3B,iDAI4B;AAC5B,gCAA0C;AAC1C,wCAAwC;AACxC,kDAA0F;AAC1F,sDAA6D;AAC7D,yDAAyF;AAWzF,mEAK2C;AAC3C,mDAAyE;AACzE,mEAA0E;AAUnE,KAAK,UAAU,kBAAkB,CAAC,IAAqB;IAC1D,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;IAC/B,MAAM,SAAS,GAAkB,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC;IACxD,MAAM,EAAE,SAAS,EAAE,cAAc,EAAE,UAAU,EAAE,WAAW,EAAE,GAAG,MAAM,CAAC;IAEtE,IAAI,IAAA,iBAAU,EAAC,UAAU,EAAE,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC;QAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,IAAA,wBAAgB,GAAE,EAAE,MAAM,EAAE,iBAAiB,EAAE,CAAC;IACvG,CAAC;IAED,IAAI,CAAC;QACD,MAAM,eAAe,GAA2B,IAAA,8BAAkB,EAAC,UAAU,CAAC,CAAC;QAC/E,MAAM,gBAAgB,GAAY,IAAA,2BAAkB,EAAC,UAAU,CAAC,CAAC;QACjE,MAAM,uBAAuB,GAAY,IAAA,2CAAkC,EAAC,UAAU,CAAC,CAAC;QAExF,sBAAsB;QACtB,MAAM,GAAG,GAAW,IAAA,iBAAY,EAAC,cAAc,CAAC,CAAC;QACjD,MAAM,gBAAgB,GAAW,GAAG,CAAC,MAAM,CAAC;QAC5C,MAAM,KAAK,GAAuB,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;QAE3E,kEAAkE;QAClE,6DAA6D;QAC7D,gEAAgE;QAChE,kEAAkE;QAClE,gEAAgE;QAChE,8CAA8C;QAC9C,MAAM,KAAK,GAAe,IAAA,wBAAiB,GAAE,CAAC;QAE9C,MAAM,MAAM,GAAsB,IAAA,wBAAgB,GAAE,CAAC;QACrD,MAAM,MAAM,GAAmB,EAAE,CAAC;QAElC,sEAAsE;QACtE,gDAAgD;QAChD,MAAM,CAAC,IAAI,CAAC,IAAA,2BAAiB,EAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;QAChD,MAAM,CAAC,aAAa,GAAG,CAAC,CAAC;QAEzB,kEAAkE;QAClE,kEAAkE;QAClE,oEAAoE;QACpE,2DAA2D;QAC3D,MAAM,cAAc,GAAmB,oBAAoB,CAAC,KAAK,CAAC,CAAC;QAEnE,KAAK,MAAM,EAAE,IAAI,cAAc,EAAE,CAAC;YAC9B,MAAM,CAAC,IAAI,CAAC,IAAA,6BAAkB,EAAC,SAAS,EAAE,WAAW,EAAE,EAAE,CAAwB,CAAC,CAAC;YACnF,MAAM,CAAC,IAAI,CAAC,IAAA,2BAAgB,EAAC,SAAS,EAAE,WAAW,EAAE,EAAE,CAAsB,CAAC,CAAC;YAC/E,MAAM,CAAC,cAAc,IAAI,CAAC,CAAC;YAC3B,MAAM,CAAC,YAAY,IAAI,CAAC,CAAC;QAC7B,CAAC;QAED,qEAAqE;QACrE,mEAAmE;QACnE,8DAA8D;QAC9D,aAAa;QACb,MAAM,cAAc,GAAoC,kBAAkB,CAAC,KAAK,CAAC,CAAC;QAElF,KAAK,MAAM,EAAE,IAAI,KAAK,EAAE,CAAC;YACrB,IAAI,EAAE,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;gBAC9B,SAAS;YACb,CAAC;YACD,MAAM,OAAO,GAAsB,EAAE,CAAC,OAA4B,CAAC;YACnE,8DAA8D;YAC9D,gEAAgE;YAChE,iEAAiE;YACjE,6DAA6D;YAC7D,+DAA+D;YAC/D,kEAAkE;YAClE,gCAAgC;YAChC,MAAM,cAAc,GAAY,OAAO,CAAC,IAAI,KAAK,eAAe,CAAC;YACjE,MAAM,gBAAgB,GAAY,OAAO,CAAC,IAAI,KAAK,kBAAkB,CAAC;YACtE,IAAI,CAAC,cAAc,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBACvC,SAAS;YACb,CAAC;YACD,MAAM,EAAE,GAAwB,kBAAkB,CAAC,cAAc,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC;YACjF,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;gBACd,SAAS,CAAC,sCAAsC;YACpD,CAAC;YACD,MAAM,UAAU,GAAW,IAAA,sBAAgB,EAAC,SAAS,EAAE,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC;YAEnF,gEAAgE;YAChE,8DAA8D;YAC9D,8DAA8D;YAC9D,mCAAmC;YACnC,IAAI,MAAc,CAAC;YACnB,IAAI,IAAY,CAAC;YACjB,IAAI,IAA6B,CAAC;YAClC,IAAI,iBAAgC,CAAC;YACrC,IAAI,cAAc,EAAE,CAAC;gBACjB,MAAM,EAAE,GAA6B,EAAE,CAAC,OAAmC,CAAC;gBAC5E,MAAM,GAAG,EAAE,CAAC,OAAO,CAAC;gBACpB,IAAI,GAAG,EAAE,CAAC,IAAI,CAAC;gBACf,IAAI,GAAG,aAAa,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC;gBACnC,iBAAiB,GAAG,IAAI,KAAK,aAAa,CAAC,CAAC,CAAC,IAAA,mCAAqB,EAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YAC5F,CAAC;iBAAM,CAAC;gBACJ,MAAM,GAAG,GAAsD,EAAE,CAAC,OAA4D,CAAC;gBAC/H,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC;gBACrB,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;gBAChB,4DAA4D;gBAC5D,4DAA4D;gBAC5D,0DAA0D;gBAC1D,mEAAmE;gBACnE,mEAAmE;gBACnE,4DAA4D;gBAC5D,sDAAsD;gBACtD,iEAAiE;gBACjE,IAAI,GAAG,OAAO,GAAG,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACnE,iBAAiB,GAAG,IAAI,KAAK,aAAa,IAAI,OAAO,GAAG,CAAC,KAAK,KAAK,QAAQ;oBACvE,CAAC,CAAC,GAAG,CAAC,KAAK;oBACX,CAAC,CAAC,IAAI,CAAC;YACf,CAAC;YAED,MAAM,IAAI,GAAiB;gBACvB,MAAM;gBACN,IAAI;gBACJ,IAAI;gBACJ,SAAS,EAAE,EAAE,CAAC,SAAS;aAC1B,CAAC;YACF,MAAM,GAAG,GAA8B,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC;YAE1E,4DAA4D;YAC5D,iEAAiE;YACjE,+DAA+D;YAC/D,6DAA6D;YAC7D,iEAAiE;YACjE,gEAAgE;YAChE,iEAAiE;YACjE,8DAA8D;YAC9D,iEAAiE;YACjE,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;gBACf,SAAS;YACb,CAAC;YAED,MAAM,CAAC,IAAI,CAAC,IAAA,8BAAkB,EAAC,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;YAC3F,MAAM,CAAC,SAAS,IAAI,CAAC,CAAC;YAEtB,mCAAmC;YACnC,IAAI,IAAI,KAAK,aAAa,IAAI,iBAAiB,KAAK,IAAI,EAAE,CAAC;gBACvD,8DAA8D;gBAC9D,2DAA2D;gBAC3D,2DAA2D;gBAC3D,yDAAyD;gBACzD,uDAAuD;gBACvD,MAAM,WAAW,GAAW,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC;gBACxE,MAAM,QAAQ,GAA6C,IAAA,mCAAqB,EAAC;oBAC7E,SAAS;oBACT,WAAW;oBACX,UAAU;oBACV,UAAU;oBACV,MAAM;oBACN,SAAS,EAAE,WAAW;oBACtB,SAAS,EAAE,iBAAiB;iBAC/B,CAAC,CAAC;gBACH,KAAK,MAAM,EAAE,IAAI,QAAQ,EAAE,CAAC;oBACxB,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBAChB,MAAM,CAAC,WAAW,IAAI,CAAC,CAAC;gBAC5B,CAAC;YACL,CAAC;QACL,CAAC;QAED,sEAAsE;QACtE,iDAAiD;QACjD,IAAI,uBAAuB,EAAE,CAAC;YAC1B,MAAM,MAAM,GAA2B;gBACnC,SAAS;gBACT,WAAW;gBACX,SAAS,EAAE,KAAK,CAAC,SAAS;gBAC1B,SAAS,EAAE,KAAK,CAAC,SAAS;gBAC1B,SAAS,EAAE,KAAK,CAAC,SAAS;gBAC1B,YAAY,EAAE,IAAA,yCAA2B,EAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;aACrE,CAAC;YACF,MAAM,SAAS,GAAmD,IAAA,yCAA2B,EAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YAC7G,KAAK,MAAM,EAAE,IAAI,SAAS,CAAC,MAAoC,EAAE,CAAC;gBAC9D,MAAM,CAAC,IAAI,CAAC,EAAsB,CAAC,CAAC;gBACpC,MAAM,CAAC,WAAW,IAAI,CAAC,CAAC;YAC5B,CAAC;QACL,CAAC;QAED,uDAAuD;QACvD,IAAI,eAAe,GAAW,gBAAgB,CAAC;QAC/C,IAAI,gBAAgB,EAAE,CAAC;YACnB,8DAA8D;YAC9D,wDAAwD;YACxD,MAAM,SAAS,GAA+B,IAAA,0CAAuB,EAAC;gBAClE,SAAS;gBACT,WAAW;gBACX,cAAc;gBACd,SAAS,EAAE,QAAQ;aACtB,CAAC,CAAC;YACH,eAAe,GAAG,SAAS,CAAC,gBAAgB,CAAC;YAC7C,IAAI,SAAS,CAAC,gBAAgB,KAAK,IAAI,EAAE,CAAC;gBACtC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;gBACxC,MAAM,CAAC,iBAAiB,GAAG,CAAC,CAAC;YACjC,CAAC;QACL,CAAC;aAAM,CAAC;YACJ,eAAM,CAAC,KAAK,CAAC,gCAAgC,SAAS,+DAA+D,CAAC,CAAC;QAC3H,CAAC;QAED,kEAAkE;QAClE,4DAA4D;QAC5D,oEAAoE;QACpE,oEAAoE;QACpE,mEAAmE;QACnE,qEAAqE;QACrE,qEAAqE;QACrE,+BAA+B;QAC/B,MAAM,QAAQ,GAAW,iBAAiB,CAAC,KAAK,EAAE,MAAM,CAAC,cAAc,CAAC,CAAC;QACzE,MAAM,CAAC,IAAI,CAAC,IAAA,yBAAe,EAAC,MAAM,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC;QAC7D,MAAM,CAAC,WAAW,GAAG,CAAC,CAAC;QAEvB,4DAA4D;QAC5D,yDAAyD;QACzD,kBAAkB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAElC,MAAM,IAAA,oBAAU,EAAC,MAAiB,EAAE;YAChC,SAAS;YACT,UAAU;YACV,MAAM,EAAE,eAAe;YACvB,GAAG,CAAC,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC/C,CAAC,CAAC;QAEH,IAAA,0BAAiB,EAAC,UAAU,EAAE,SAAS,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,CAAC,CAAC;QAElF,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC;IACjE,CAAC;IAAC,OAAO,CAAU,EAAE,CAAC;QAClB,MAAM,MAAM,GAAW,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAClE,eAAM,CAAC,KAAK,CAAC,gCAAgC,SAAS,YAAY,MAAM,EAAE,CAAC,CAAC;QAC5E,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAA,wBAAgB,GAAE,EAAE,MAAM,EAAE,CAAC;IACnF,CAAC;AACL,CAAC;AAED,SAAS,iBAAiB,CAAC,IAAY;IACnC,MAAM,GAAG,GAAuB,EAAE,CAAC;IACnC,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QAClC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACpB,SAAS;QACb,CAAC;QACD,IAAI,CAAC;YACD,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAqB,CAAC,CAAC;QACnD,CAAC;QAAC,MAAM,CAAC;YACL,mBAAmB;QACvB,CAAC;IACL,CAAC;IACD,OAAO,GAAG,CAAC;AACf,CAAC;AAED,SAAS,aAAa,CAAC,IAAY;IAC/B,IAAI,CAAC;QACD,MAAM,MAAM,GAAY,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACzC,IAAI,MAAM,KAAK,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YAC1E,OAAO,MAAiC,CAAC;QAC7C,CAAC;IACL,CAAC;IAAC,MAAM,CAAC;QACL,SAAS;IACb,CAAC;IACD,OAAO,EAAE,CAAC;AACd,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAyB;IACjD,MAAM,GAAG,GAAoC,IAAI,GAAG,EAA8B,CAAC;IACnF,KAAK,MAAM,EAAE,IAAI,KAAK,EAAE,CAAC;QACrB,IAAI,EAAE,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;YAC9B,SAAS;QACb,CAAC;QACD,MAAM,OAAO,GAAsB,EAAE,CAAC,OAA4B,CAAC;QACnE,4DAA4D;QAC5D,mEAAmE;QACnE,oEAAoE;QACpE,+DAA+D;QAC/D,sEAAsE;QACtE,IAAI,OAAO,CAAC,IAAI,KAAK,sBAAsB,IAAI,OAAO,CAAC,IAAI,KAAK,yBAAyB,EAAE,CAAC;YACxF,SAAS;QACb,CAAC;QACD,MAAM,GAAG,GAAyC,EAAE,CAAC,OAA+C,CAAC;QACrG,MAAM,MAAM,GAAW,OAAO,GAAG,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;QACxE,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE;YACjB,MAAM,EAAE,GAAG,CAAC,OAAO;YACnB,MAAM;YACN,SAAS,EAAE,EAAE,CAAC,SAAS;YACvB,OAAO,EAAE,cAAc,CAAC,MAAM,CAAC;SAClC,CAAC,CAAC;IACP,CAAC;IACD,OAAO,GAAG,CAAC;AACf,CAAC;AAED;;;;;;GAMG;AACH,SAAS,cAAc,CAAC,IAAY;IAChC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACpB,OAAO,KAAK,CAAC;IACjB,CAAC;IACD,iEAAiE;IACjE,mEAAmE;IACnE,yCAAyC;IACzC,IAAI,wCAAwC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACtD,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,oEAAoE;IACpE,sEAAsE;IACtE,sEAAsE;IACtE,kEAAkE;IAClE,oEAAoE;IACpE,IAAI,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACpC,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,sEAAsE;IACtE,sDAAsD;IACtD,IAAI,kCAAkC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,gCAAgC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/F,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,IAAI,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC3B,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,4DAA4D;IAC5D,8EAA8E;IAC9E,kEAAkE;IAClE,uEAAuE;IACvE,gFAAgF;IAChF,oEAAoE;IACpE,oEAAoE;IACpE,oEAAoE;IACpE,iDAAiD;IACjD,IAAI,2CAA2C,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACzD,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,IAAI,iCAAiC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/C,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,IAAI,0DAA0D,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACxE,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,gEAAgE;IAChE,mDAAmD;IACnD,IAAI,yCAAyC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACvD,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,OAAO,KAAK,CAAC;AACjB,CAAC;AAED;;;;GAIG;AACH,SAAS,oBAAoB,CAAC,KAAyB;IACnD,MAAM,UAAU,GAAkC,EAAE,CAAC;IACrD,KAAK,IAAI,CAAC,GAAW,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5C,MAAM,EAAE,GAAqB,KAAK,CAAC,CAAC,CAAC,CAAC;QACtC,IAAI,EAAE,CAAC,IAAI,KAAK,WAAW,IAAK,EAAE,CAAC,OAA6B,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;YACvF,UAAU,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC;QAClD,CAAC;IACL,CAAC;IACD,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,EAAE,CAAC;IACd,CAAC;IACD,MAAM,MAAM,GAAW,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,SAAS,IAAI,UAAU,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IAClG,MAAM,GAAG,GAAmB,EAAE,CAAC;IAC/B,KAAK,IAAI,CAAC,GAAW,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACjD,MAAM,SAAS,GAAW,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3C,MAAM,OAAO,GAAW,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;QAClF,GAAG,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC;IACvD,CAAC;IACD,OAAO,GAAG,CAAC;AACf,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAqB,EAAE,SAAiB;IAChE,MAAM,IAAI,GAAW,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAC3C,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACzB,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,KAAK,MAAM,EAAE,IAAI,KAAK,EAAE,CAAC;QACrB,MAAM,OAAO,GAAW,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC;QACjD,MAAM,KAAK,GAAW,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;QAC7C,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YACvD,SAAS;QACb,CAAC;QACD,IAAI,IAAI,IAAI,OAAO,IAAI,IAAI,IAAI,KAAK,EAAE,CAAC;YACnC,OAAO,EAAE,CAAC;QACd,CAAC;IACL,CAAC;IACD,8DAA8D;IAC9D,8DAA8D;IAC9D,8DAA8D;IAC9D,mEAAmE;IACnE,gEAAgE;IAChE,8DAA8D;IAC9D,kDAAkD;IAClD,OAAO,IAAI,CAAC;AAChB,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAyB;IAC/C,KAAK,MAAM,EAAE,IAAI,KAAK,EAAE,CAAC;QACrB,IAAI,EAAE,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;YAC7B,OAAO,EAAE,CAAC,OAAkC,CAAC;QACjD,CAAC;IACL,CAAC;IACD,OAAO,IAAI,CAAC;AAChB,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAyB,EAAE,UAAkB;IACpE,KAAK,IAAI,CAAC,GAAW,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QACjD,MAAM,EAAE,GAAW,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAClD,IAAI,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;YACtB,OAAO,EAAE,CAAC;QACd,CAAC;IACL,CAAC;IACD,OAAO,UAAU,CAAC;AACtB,CAAC;AAED;;;;GAIG;AACH,SAAS,kBAAkB,CAAC,MAAe,EAAE,KAAiB;IAC1D,KAAK,MAAM,EAAE,IAAI,MAAM,EAAE,CAAC;QACtB,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YAC/B,EAAsC,CAAC,UAAU,GAAG,KAAK,CAAC,SAAS,CAAC;YACrE,+DAA+D;YAC/D,gEAAgE;YAChE,iEAAiE;YACjE,2DAA2D;YAC3D,gEAAgE;YAChE,2DAA2D;YAC3D,IAAI,EAAE,CAAC,IAAI,KAAK,mBAAmB,EAAE,CAAC;gBACjC,EAA4B,CAAC,SAAS,CAAC,UAAU,GAAG,KAAK,CAAC,SAAS,CAAC;YACzE,CAAC;QACL,CAAC;QACD,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YAC/B,EAAsC,CAAC,UAAU,GAAG,KAAK,CAAC,SAAS,CAAC;QACzE,CAAC;QACD,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YAC/B,EAAsC,CAAC,UAAU,GAAG,KAAK,CAAC,SAAS,CAAC;QACzE,CAAC;IACL,CAAC;AACL,CAAC"}
|
|
@@ -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"}
|