@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,206 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* IronBee CLI — Codex Import Dry-Run Summary Estimator
|
|
4
|
+
*
|
|
5
|
+
* Pre-pass over each candidate Codex rollout to estimate event counts +
|
|
6
|
+
* cost + wire bytes. Uses the SAME projection primitives the live + import
|
|
7
|
+
* pipelines use (`projectCodexDelta` via `runCodexImportAnalytics`), so
|
|
8
|
+
* displayed numbers are exact (not a heuristic).
|
|
9
|
+
*
|
|
10
|
+
* Produces an `ImportSummary` rendered by `commands/import.ts` before the
|
|
11
|
+
* confirm prompt. Parallel to `src/import/claude/summary.ts`.
|
|
12
|
+
*/
|
|
13
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
|
+
exports.estimateCodexImport = estimateCodexImport;
|
|
15
|
+
const fs_1 = require("fs");
|
|
16
|
+
const collector_1 = require("../../lib/collector");
|
|
17
|
+
const config_1 = require("../../lib/config");
|
|
18
|
+
const logger_1 = require("../../lib/logger");
|
|
19
|
+
const types_1 = require("../types");
|
|
20
|
+
const skip_1 = require("../skip");
|
|
21
|
+
const analytics_runner_1 = require("./analytics-runner");
|
|
22
|
+
const api_request_1 = require("../../analytics/codex/api-request");
|
|
23
|
+
const apply_patch_1 = require("../../analytics/codex/apply-patch");
|
|
24
|
+
const clear_verdict_1 = require("../../clients/codex/hooks/clear-verdict");
|
|
25
|
+
function estimateCodexImport(opts) {
|
|
26
|
+
const counts = (0, types_1.emptyEventCounts)();
|
|
27
|
+
let costUsdSum = 0;
|
|
28
|
+
let wireBytesSum = 0;
|
|
29
|
+
let toImport = 0;
|
|
30
|
+
let skipped = 0;
|
|
31
|
+
const perProject = new Map();
|
|
32
|
+
for (const target of opts.targets) {
|
|
33
|
+
const key = target.projectDir;
|
|
34
|
+
let row = perProject.get(key);
|
|
35
|
+
if (row === undefined) {
|
|
36
|
+
row = { projectDir: key, found: 0, skipped: 0, toImport: 0 };
|
|
37
|
+
perProject.set(key, row);
|
|
38
|
+
}
|
|
39
|
+
row.found += 1;
|
|
40
|
+
if ((0, skip_1.shouldSkip)(target.projectDir, target.sessionId, opts.force)) {
|
|
41
|
+
row.skipped += 1;
|
|
42
|
+
skipped += 1;
|
|
43
|
+
continue;
|
|
44
|
+
}
|
|
45
|
+
row.toImport += 1;
|
|
46
|
+
toImport += 1;
|
|
47
|
+
try {
|
|
48
|
+
const analyticsEnabled = (0, config_1.isAnalyticsEnabled)(target.projectDir);
|
|
49
|
+
const per = estimateOne(target, !analyticsEnabled);
|
|
50
|
+
counts.session_start += per.counts.session_start;
|
|
51
|
+
counts.session_end += per.counts.session_end;
|
|
52
|
+
counts.activity_start += per.counts.activity_start;
|
|
53
|
+
counts.activity_end += per.counts.activity_end;
|
|
54
|
+
counts.tool_call += per.counts.tool_call;
|
|
55
|
+
counts.file_change += per.counts.file_change;
|
|
56
|
+
counts.session_analytics += per.counts.session_analytics;
|
|
57
|
+
counts.api_request += per.counts.api_request;
|
|
58
|
+
costUsdSum += per.costUsd;
|
|
59
|
+
wireBytesSum += per.wireBytes;
|
|
60
|
+
}
|
|
61
|
+
catch (e) {
|
|
62
|
+
logger_1.logger.debug(`codex import summary: estimate failed for ${target.sessionId}: ${e instanceof Error ? e.message : e}`);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
const collectorTarget = opts.targets.length > 0
|
|
66
|
+
? (0, collector_1.getCollectorTarget)(opts.targets[0].projectDir)
|
|
67
|
+
: null;
|
|
68
|
+
return {
|
|
69
|
+
projects: Array.from(perProject.values()),
|
|
70
|
+
timeRange: opts.timeRange,
|
|
71
|
+
toImportCount: toImport,
|
|
72
|
+
skippedCount: skipped,
|
|
73
|
+
estimatedEvents: counts,
|
|
74
|
+
estimatedCostUsd: costUsdSum,
|
|
75
|
+
estimatedWireBytes: wireBytesSum,
|
|
76
|
+
concurrency: opts.concurrency,
|
|
77
|
+
collectorUrl: collectorTarget !== null ? collectorTarget.url : null,
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
function estimateOne(target, skipAnalytics) {
|
|
81
|
+
const counts = (0, types_1.emptyEventCounts)();
|
|
82
|
+
counts.session_start = 1;
|
|
83
|
+
counts.session_end = 1;
|
|
84
|
+
const raw = (0, fs_1.readFileSync)(target.transcriptPath);
|
|
85
|
+
const lines = parseLines(raw.toString("utf-8"));
|
|
86
|
+
// Turn count: one activity per task_started.
|
|
87
|
+
let turnCount = 0;
|
|
88
|
+
for (const ln of lines) {
|
|
89
|
+
if (ln.type === "event_msg" && ln.payload.type === "task_started") {
|
|
90
|
+
turnCount += 1;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
counts.activity_start = turnCount;
|
|
94
|
+
counts.activity_end = turnCount;
|
|
95
|
+
// tool_call + file_change
|
|
96
|
+
const config = (0, config_1.loadConfig)(target.projectDir);
|
|
97
|
+
let toolCalls = 0;
|
|
98
|
+
let fileChanges = 0;
|
|
99
|
+
for (const ln of lines) {
|
|
100
|
+
if (ln.type !== "response_item") {
|
|
101
|
+
continue;
|
|
102
|
+
}
|
|
103
|
+
const payload = ln.payload;
|
|
104
|
+
// Mirror runner.ts: count BOTH function_call and custom_tool_call.
|
|
105
|
+
// Codex 0.135+ emits apply_patch as custom_tool_call (raw `input`),
|
|
106
|
+
// not function_call (JSON `arguments`). Without this dual match,
|
|
107
|
+
// dry-run summary under-counts tool_call + file_change on every
|
|
108
|
+
// Codex 0.135+ rollout, telling operators the import is smaller
|
|
109
|
+
// than it actually is.
|
|
110
|
+
const isFunctionCall = payload.type === "function_call";
|
|
111
|
+
const isCustomToolCall = payload.type === "custom_tool_call";
|
|
112
|
+
if (!isFunctionCall && !isCustomToolCall) {
|
|
113
|
+
continue;
|
|
114
|
+
}
|
|
115
|
+
toolCalls += 1;
|
|
116
|
+
let name;
|
|
117
|
+
let patchBody;
|
|
118
|
+
if (isFunctionCall) {
|
|
119
|
+
const fc = ln.payload;
|
|
120
|
+
name = fc.name;
|
|
121
|
+
patchBody = name === "apply_patch" ? (0, apply_patch_1.extractApplyPatchBody)(fc.arguments) : null;
|
|
122
|
+
}
|
|
123
|
+
else {
|
|
124
|
+
const ctc = ln.payload;
|
|
125
|
+
name = ctc.name;
|
|
126
|
+
patchBody = name === "apply_patch" && typeof ctc.input === "string" ? ctc.input : null;
|
|
127
|
+
}
|
|
128
|
+
if (name === "apply_patch" && patchBody !== null) {
|
|
129
|
+
let entries = [];
|
|
130
|
+
try {
|
|
131
|
+
entries = (0, clear_verdict_1.parseApplyPatchBody)(patchBody);
|
|
132
|
+
}
|
|
133
|
+
catch {
|
|
134
|
+
entries = [];
|
|
135
|
+
}
|
|
136
|
+
for (const e of entries) {
|
|
137
|
+
if ((0, config_1.requiresVerification)(e.path, config)) {
|
|
138
|
+
fileChanges += 1;
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
counts.tool_call = toolCalls;
|
|
144
|
+
counts.file_change = fileChanges;
|
|
145
|
+
// api_request (gated)
|
|
146
|
+
if (!skipAnalytics && (0, config_1.isAnalyticsApiRequestEventsEnabled)(target.projectDir)) {
|
|
147
|
+
const meta = firstSessionMeta(lines);
|
|
148
|
+
const ctx = {
|
|
149
|
+
sessionId: target.sessionId,
|
|
150
|
+
projectName: target.projectName,
|
|
151
|
+
defaultModel: (0, api_request_1.defaultModelFromSessionMeta)(meta),
|
|
152
|
+
};
|
|
153
|
+
const apiResult = (0, api_request_1.deriveCodexApiRequestEvents)(lines, ctx);
|
|
154
|
+
counts.api_request = apiResult.events.length;
|
|
155
|
+
}
|
|
156
|
+
// session_analytics
|
|
157
|
+
let costUsd = 0;
|
|
158
|
+
let analyticsWireBytes = 0;
|
|
159
|
+
if (!skipAnalytics) {
|
|
160
|
+
const analytics = (0, analytics_runner_1.runCodexImportAnalytics)({
|
|
161
|
+
sessionId: target.sessionId,
|
|
162
|
+
projectName: target.projectName,
|
|
163
|
+
transcriptPath: target.transcriptPath,
|
|
164
|
+
});
|
|
165
|
+
if (analytics.sessionAnalytics !== null) {
|
|
166
|
+
counts.session_analytics = 1;
|
|
167
|
+
// analytics is now NESTED under the event (see analytics-runner.ts
|
|
168
|
+
// shape fix); reach into the body for cost_usd.
|
|
169
|
+
costUsd = analytics.sessionAnalytics.analytics?.usage?.cost_usd ?? 0;
|
|
170
|
+
analyticsWireBytes = Buffer.byteLength(JSON.stringify(analytics.sessionAnalytics), "utf-8");
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
// Wire-byte rough estimate — non-analytics events average ~256 B each
|
|
174
|
+
// (same heuristic Claude summary uses).
|
|
175
|
+
const ESTIMATED_NON_ANALYTICS_EVENT_BYTES = 256;
|
|
176
|
+
const nonAnalyticsCount = counts.session_start + counts.session_end
|
|
177
|
+
+ counts.activity_start + counts.activity_end
|
|
178
|
+
+ counts.tool_call + counts.file_change
|
|
179
|
+
+ counts.api_request;
|
|
180
|
+
const wireBytes = analyticsWireBytes + nonAnalyticsCount * ESTIMATED_NON_ANALYTICS_EVENT_BYTES;
|
|
181
|
+
return { counts, costUsd, wireBytes };
|
|
182
|
+
}
|
|
183
|
+
function parseLines(text) {
|
|
184
|
+
const out = [];
|
|
185
|
+
for (const line of text.split("\n")) {
|
|
186
|
+
if (line.length === 0) {
|
|
187
|
+
continue;
|
|
188
|
+
}
|
|
189
|
+
try {
|
|
190
|
+
out.push(JSON.parse(line));
|
|
191
|
+
}
|
|
192
|
+
catch {
|
|
193
|
+
// skip
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
return out;
|
|
197
|
+
}
|
|
198
|
+
function firstSessionMeta(lines) {
|
|
199
|
+
for (const ln of lines) {
|
|
200
|
+
if (ln.type === "session_meta") {
|
|
201
|
+
return ln.payload;
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
return null;
|
|
205
|
+
}
|
|
206
|
+
//# sourceMappingURL=summary.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"summary.js","sourceRoot":"","sources":["../../../src/import/codex/summary.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"activity.d.ts","sourceRoot":"","sources":["../../../src/import/events/activity.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAGlF,MAAM,WAAW,YAAY;IACzB,mEAAmE;IACnE,SAAS,EAAE,MAAM,CAAC;IAClB,2CAA2C;IAC3C,SAAS,EAAE,MAAM,CAAC;IAClB,mFAAmF;IACnF,OAAO,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,kBAAkB,CAC9B,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,YAAY,GACvB,mBAAmB,
|
|
1
|
+
{"version":3,"file":"activity.d.ts","sourceRoot":"","sources":["../../../src/import/events/activity.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAGlF,MAAM,WAAW,YAAY;IACzB,mEAAmE;IACnE,SAAS,EAAE,MAAM,CAAC;IAClB,2CAA2C;IAC3C,SAAS,EAAE,MAAM,CAAC;IAClB,mFAAmF;IACnF,OAAO,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,kBAAkB,CAC9B,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,YAAY,GACvB,mBAAmB,CAmBrB;AAED,wBAAgB,gBAAgB,CAC5B,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,YAAY,GACvB,iBAAiB,CAsBnB"}
|
|
@@ -16,10 +16,18 @@ exports.buildActivityEnd = buildActivityEnd;
|
|
|
16
16
|
const ids_1 = require("../ids");
|
|
17
17
|
function buildActivityStart(sessionId, projectName, boundary) {
|
|
18
18
|
const activityId = (0, ids_1.deriveActivityId)(sessionId, boundary.turnIndex, boundary.startTime);
|
|
19
|
+
// Guard the timestamp parse — Claude transcript-walk defaults a missing
|
|
20
|
+
// turn-start line timestamp to "" (transcript-walk.ts:145); Codex
|
|
21
|
+
// task_started timestamps come straight from the rollout with no
|
|
22
|
+
// validation. Without this guard, Date.parse returns NaN which
|
|
23
|
+
// JSON.stringify serializes as wire `null`, while the matching
|
|
24
|
+
// `buildActivityEnd` already falls back to startMs (line ~62) — the
|
|
25
|
+
// start/end pair shipped asymmetric values for the same logical turn.
|
|
26
|
+
const startMs = Date.parse(boundary.startTime);
|
|
19
27
|
return {
|
|
20
28
|
id: (0, ids_1.deriveActivityStartEventId)(sessionId, boundary.turnIndex),
|
|
21
29
|
type: "activity_start",
|
|
22
|
-
timestamp:
|
|
30
|
+
timestamp: Number.isFinite(startMs) ? startMs : 0,
|
|
23
31
|
session_id: sessionId,
|
|
24
32
|
project_name: projectName,
|
|
25
33
|
activity_id: activityId,
|
|
@@ -31,6 +39,14 @@ function buildActivityEnd(sessionId, projectName, boundary) {
|
|
|
31
39
|
const startMs = Date.parse(boundary.startTime);
|
|
32
40
|
const endMs = Date.parse(boundary.endTime);
|
|
33
41
|
const durationMs = Number.isFinite(endMs) && Number.isFinite(startMs) ? endMs - startMs : 0;
|
|
42
|
+
// Omit `reason` — live `endActivity` (hooks/core/activity.ts:60-66)
|
|
43
|
+
// does NOT set this field, so the import-side `"import"` value used
|
|
44
|
+
// to OVERWRITE live's omitted/absent field via backend
|
|
45
|
+
// (session_id, id) latest-wins dedup. Cross-pipeline divergence:
|
|
46
|
+
// Claude live = omitted, Codex live verify-gate = omitted, Codex live
|
|
47
|
+
// monitoring = "checkpoint", import = "import" — same wire field
|
|
48
|
+
// flipping per emit source. Dropping `reason` here aligns import with
|
|
49
|
+
// the dominant live behavior (omitted) and stops the flip.
|
|
34
50
|
return {
|
|
35
51
|
id: (0, ids_1.deriveActivityEndEventId)(sessionId, boundary.turnIndex),
|
|
36
52
|
type: "activity_end",
|
|
@@ -39,7 +55,6 @@ function buildActivityEnd(sessionId, projectName, boundary) {
|
|
|
39
55
|
project_name: projectName,
|
|
40
56
|
activity_id: activityId,
|
|
41
57
|
duration: durationMs,
|
|
42
|
-
reason: "import",
|
|
43
58
|
};
|
|
44
59
|
}
|
|
45
60
|
//# sourceMappingURL=activity.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"activity.js","sourceRoot":"","sources":["../../../src/import/events/activity.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;GAUG;;AAcH,
|
|
1
|
+
{"version":3,"file":"activity.js","sourceRoot":"","sources":["../../../src/import/events/activity.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;GAUG;;AAcH,gDAuBC;AAED,4CA0BC;AA9DD,gCAAgG;AAWhG,SAAgB,kBAAkB,CAC9B,SAAiB,EACjB,WAAmB,EACnB,QAAsB;IAEtB,MAAM,UAAU,GAAW,IAAA,sBAAgB,EAAC,SAAS,EAAE,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC;IAC/F,wEAAwE;IACxE,kEAAkE;IAClE,iEAAiE;IACjE,+DAA+D;IAC/D,+DAA+D;IAC/D,oEAAoE;IACpE,sEAAsE;IACtE,MAAM,OAAO,GAAW,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IACvD,OAAO;QACH,EAAE,EAAE,IAAA,gCAA0B,EAAC,SAAS,EAAE,QAAQ,CAAC,SAAS,CAAC;QAC7D,IAAI,EAAE,gBAAgB;QACtB,SAAS,EAAE,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACjD,UAAU,EAAE,SAAS;QACrB,YAAY,EAAE,WAAW;QACzB,WAAW,EAAE,UAAU;QACvB,MAAM,EAAE,aAAa;KACxB,CAAC;AACN,CAAC;AAED,SAAgB,gBAAgB,CAC5B,SAAiB,EACjB,WAAmB,EACnB,QAAsB;IAEtB,MAAM,UAAU,GAAW,IAAA,sBAAgB,EAAC,SAAS,EAAE,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC;IAC/F,MAAM,OAAO,GAAW,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IACvD,MAAM,KAAK,GAAW,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IACnD,MAAM,UAAU,GAAW,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IACpG,oEAAoE;IACpE,oEAAoE;IACpE,uDAAuD;IACvD,iEAAiE;IACjE,sEAAsE;IACtE,iEAAiE;IACjE,sEAAsE;IACtE,2DAA2D;IAC3D,OAAO;QACH,EAAE,EAAE,IAAA,8BAAwB,EAAC,SAAS,EAAE,QAAQ,CAAC,SAAS,CAAC;QAC3D,IAAI,EAAE,cAAc;QACpB,SAAS,EAAE,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO;QACnD,UAAU,EAAE,SAAS;QACrB,YAAY,EAAE,WAAW;QACzB,WAAW,EAAE,UAAU;QACvB,QAAQ,EAAE,UAAU;KACvB,CAAC;AACN,CAAC"}
|
|
@@ -19,6 +19,16 @@ export declare function buildSessionStart(target: ImportTarget, client: string):
|
|
|
19
19
|
/**
|
|
20
20
|
* Build a `session_end` event. `endTimestampMs` and `endReason` come from
|
|
21
21
|
* the transcript tail (last-line timestamp and summary line if present).
|
|
22
|
+
*
|
|
23
|
+
* `endReason` is OPTIONAL — when the transcript carries no derivable
|
|
24
|
+
* end-reason (no `summary` tail line on Claude), pass `undefined` so the
|
|
25
|
+
* field is OMITTED from the wire payload via JSON.stringify. Don't fall
|
|
26
|
+
* back to a placeholder string like `"unknown"` — `session_end.id` is
|
|
27
|
+
* deterministic per session, so the backend dedups live ↔ import on
|
|
28
|
+
* `(session_id, id)` and a placeholder would overwrite live's real
|
|
29
|
+
* reason (`"clear"` / `"logout"` / `"prompt_input_exit"` / …) with junk.
|
|
30
|
+
* JSON.stringify drops `undefined` keys; live's value wins via
|
|
31
|
+
* latest-wins UPSERT.
|
|
22
32
|
*/
|
|
23
|
-
export declare function buildSessionEnd(target: ImportTarget, endTimestampMs: number, endReason: string): SessionEndAction;
|
|
33
|
+
export declare function buildSessionEnd(target: ImportTarget, endTimestampMs: number, endReason: string | undefined): SessionEndAction;
|
|
24
34
|
//# sourceMappingURL=session.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../../src/import/events/session.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAChF,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAGxC;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,GAAG,kBAAkB,
|
|
1
|
+
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../../src/import/events/session.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAChF,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAGxC;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,GAAG,kBAAkB,CAkB1F;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,eAAe,CAC3B,MAAM,EAAE,YAAY,EACpB,cAAc,EAAE,MAAM,EACtB,SAAS,EAAE,MAAM,GAAG,SAAS,GAC9B,gBAAgB,CAUlB"}
|
|
@@ -19,6 +19,15 @@ const ids_1 = require("../ids");
|
|
|
19
19
|
* this stays generic.
|
|
20
20
|
*/
|
|
21
21
|
function buildSessionStart(target, client) {
|
|
22
|
+
// Omit `source`. Live mode emits a meaningful host value
|
|
23
|
+
// (`"startup"` / `"resume"` / `"clear"` on Claude; `"startup"` /
|
|
24
|
+
// `"resume"` on Codex) which downstream analytics use to distinguish
|
|
25
|
+
// a real session resume from a fresh boot. `session_start.id` is
|
|
26
|
+
// deterministic per session, so backend `(session_id, id)` latest-wins
|
|
27
|
+
// dedup would otherwise overwrite live's real `source` with the
|
|
28
|
+
// import-time literal `"import"` on every re-import. JSON.stringify
|
|
29
|
+
// drops undefined keys → live's value survives. Mirror of the
|
|
30
|
+
// `session_end.reason` precedent below.
|
|
22
31
|
return {
|
|
23
32
|
id: (0, ids_1.deriveSessionStartEventId)(target.sessionId),
|
|
24
33
|
type: "session_start",
|
|
@@ -26,12 +35,21 @@ function buildSessionStart(target, client) {
|
|
|
26
35
|
session_id: target.sessionId,
|
|
27
36
|
project_name: target.projectName,
|
|
28
37
|
client,
|
|
29
|
-
source: "import",
|
|
30
38
|
};
|
|
31
39
|
}
|
|
32
40
|
/**
|
|
33
41
|
* Build a `session_end` event. `endTimestampMs` and `endReason` come from
|
|
34
42
|
* the transcript tail (last-line timestamp and summary line if present).
|
|
43
|
+
*
|
|
44
|
+
* `endReason` is OPTIONAL — when the transcript carries no derivable
|
|
45
|
+
* end-reason (no `summary` tail line on Claude), pass `undefined` so the
|
|
46
|
+
* field is OMITTED from the wire payload via JSON.stringify. Don't fall
|
|
47
|
+
* back to a placeholder string like `"unknown"` — `session_end.id` is
|
|
48
|
+
* deterministic per session, so the backend dedups live ↔ import on
|
|
49
|
+
* `(session_id, id)` and a placeholder would overwrite live's real
|
|
50
|
+
* reason (`"clear"` / `"logout"` / `"prompt_input_exit"` / …) with junk.
|
|
51
|
+
* JSON.stringify drops `undefined` keys; live's value wins via
|
|
52
|
+
* latest-wins UPSERT.
|
|
35
53
|
*/
|
|
36
54
|
function buildSessionEnd(target, endTimestampMs, endReason) {
|
|
37
55
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../../src/import/events/session.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;AAaH,
|
|
1
|
+
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../../src/import/events/session.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;AAaH,8CAkBC;AAgBD,0CAcC;AAzDD,gCAA4E;AAE5E;;;;;;GAMG;AACH,SAAgB,iBAAiB,CAAC,MAAoB,EAAE,MAAc;IAClE,yDAAyD;IACzD,iEAAiE;IACjE,qEAAqE;IACrE,iEAAiE;IACjE,uEAAuE;IACvE,gEAAgE;IAChE,oEAAoE;IACpE,8DAA8D;IAC9D,wCAAwC;IACxC,OAAO;QACH,EAAE,EAAE,IAAA,+BAAyB,EAAC,MAAM,CAAC,SAAS,CAAC;QAC/C,IAAI,EAAE,eAAe;QACrB,SAAS,EAAE,MAAM,CAAC,cAAc;QAChC,UAAU,EAAE,MAAM,CAAC,SAAS;QAC5B,YAAY,EAAE,MAAM,CAAC,WAAW;QAChC,MAAM;KACT,CAAC;AACN,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,SAAgB,eAAe,CAC3B,MAAoB,EACpB,cAAsB,EACtB,SAA6B;IAE7B,OAAO;QACH,EAAE,EAAE,IAAA,6BAAuB,EAAC,MAAM,CAAC,SAAS,CAAC;QAC7C,IAAI,EAAE,aAAa;QACnB,SAAS,EAAE,cAAc;QACzB,UAAU,EAAE,MAAM,CAAC,SAAS;QAC5B,YAAY,EAAE,MAAM,CAAC,WAAW;QAChC,MAAM,EAAE,SAAS;QACjB,QAAQ,EAAE,cAAc,GAAG,MAAM,CAAC,cAAc;KACnD,CAAC;AACN,CAAC"}
|
package/dist/import/ids.js
CHANGED
|
@@ -27,11 +27,11 @@ exports.deriveActivityId = deriveActivityId;
|
|
|
27
27
|
exports.deriveToolCallEventIdFromToolUseId = deriveToolCallEventIdFromToolUseId;
|
|
28
28
|
exports.deriveFileChangeEventId = deriveFileChangeEventId;
|
|
29
29
|
const crypto_1 = require("crypto");
|
|
30
|
-
const
|
|
30
|
+
const event_1 = require("../lib/event");
|
|
31
31
|
/** SHA-256 the input and format the first 32 hex chars as a UUID. */
|
|
32
32
|
function sha256Uuid(input) {
|
|
33
33
|
const hex32 = (0, crypto_1.createHash)("sha256").update(input).digest("hex").slice(0, 32);
|
|
34
|
-
return (0,
|
|
34
|
+
return (0, event_1.formatHexAsUuid)(hex32);
|
|
35
35
|
}
|
|
36
36
|
function deriveSessionStartEventId(sessionId) {
|
|
37
37
|
return sha256Uuid(`session_start:${sessionId}`);
|
|
@@ -68,7 +68,7 @@ function deriveActivityEndEventId(sessionId, turnIndex) {
|
|
|
68
68
|
*/
|
|
69
69
|
function deriveActivityId(sessionId, turnIndex, startTime) {
|
|
70
70
|
const hex32 = (0, crypto_1.createHash)("sha256").update(`${sessionId}|${turnIndex}|${startTime}`).digest("hex").slice(0, 32);
|
|
71
|
-
return (0,
|
|
71
|
+
return (0, event_1.formatHexAsUuid)(hex32);
|
|
72
72
|
}
|
|
73
73
|
/**
|
|
74
74
|
* Default tool_call event id when `_metadata.toolCallId` is absent (transcript
|
package/dist/import/ids.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ids.js","sourceRoot":"","sources":["../../src/import/ids.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;GAkBG;;AAWH,8DAEC;AAED,0DAEC;AAQD,gEAEC;AAED,4DAEC;AAiBD,4CAGC;AAUD,gFAEC;AAED,0DAEC;AAjED,mCAAoC;AACpC,
|
|
1
|
+
{"version":3,"file":"ids.js","sourceRoot":"","sources":["../../src/import/ids.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;GAkBG;;AAWH,8DAEC;AAED,0DAEC;AAQD,gEAEC;AAED,4DAEC;AAiBD,4CAGC;AAUD,gFAEC;AAED,0DAEC;AAjED,mCAAoC;AACpC,wCAA+C;AAE/C,qEAAqE;AACrE,SAAS,UAAU,CAAC,KAAa;IAC7B,MAAM,KAAK,GAAW,IAAA,mBAAU,EAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACpF,OAAO,IAAA,uBAAe,EAAC,KAAK,CAAC,CAAC;AAClC,CAAC;AAED,SAAgB,yBAAyB,CAAC,SAAiB;IACvD,OAAO,UAAU,CAAC,iBAAiB,SAAS,EAAE,CAAC,CAAC;AACpD,CAAC;AAED,SAAgB,uBAAuB,CAAC,SAAiB;IACrD,OAAO,UAAU,CAAC,eAAe,SAAS,EAAE,CAAC,CAAC;AAClD,CAAC;AAED;;;;;GAKG;AACH,SAAgB,0BAA0B,CAAC,SAAiB,EAAE,SAAiB;IAC3E,OAAO,UAAU,CAAC,kBAAkB,SAAS,IAAI,SAAS,EAAE,CAAC,CAAC;AAClE,CAAC;AAED,SAAgB,wBAAwB,CAAC,SAAiB,EAAE,SAAiB;IACzE,OAAO,UAAU,CAAC,gBAAgB,SAAS,IAAI,SAAS,EAAE,CAAC,CAAC;AAChE,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,SAAgB,gBAAgB,CAAC,SAAiB,EAAE,SAAiB,EAAE,SAAiB;IACpF,MAAM,KAAK,GAAW,IAAA,mBAAU,EAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,GAAG,SAAS,IAAI,SAAS,IAAI,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACvH,OAAO,IAAA,uBAAe,EAAC,KAAK,CAAC,CAAC;AAClC,CAAC;AAED;;;;;;;GAOG;AACH,SAAgB,kCAAkC,CAAC,SAAiB,EAAE,SAAiB;IACnF,OAAO,UAAU,CAAC,aAAa,SAAS,IAAI,SAAS,EAAE,CAAC,CAAC;AAC7D,CAAC;AAED,SAAgB,uBAAuB,CAAC,SAAiB,EAAE,SAAiB;IACxE,OAAO,UAAU,CAAC,eAAe,SAAS,IAAI,SAAS,EAAE,CAAC,CAAC;AAC/D,CAAC"}
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* IronBee CLI — Import Module Generic Pipeline Dispatcher
|
|
3
3
|
*
|
|
4
|
-
* The single point that knows about client-specific runners.
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
4
|
+
* The single point that knows about client-specific runners. Dispatches
|
|
5
|
+
* across Claude AND Codex by default: discovery scans both stores +
|
|
6
|
+
* unions the results; each `ImportTarget` carries a `client`
|
|
7
|
+
* discriminator so per-session runner / estimator routing is automatic.
|
|
8
|
+
* New clients plug in by adding a `discovery` / `summary` / `runner`
|
|
9
|
+
* triple here and one branch in each dispatch function.
|
|
10
10
|
*
|
|
11
|
-
* Isolation principle:
|
|
12
|
-
*
|
|
13
|
-
*
|
|
11
|
+
* Isolation principle: per-client logic stays separated by file. The CLI
|
|
12
|
+
* command depends on this dispatcher, NOT on any `<client>/*` module
|
|
13
|
+
* directly.
|
|
14
14
|
*/
|
|
15
15
|
import { ImportResult, ImportScope, ImportSummary, ImportTarget, ImportTimeRange } from "./types";
|
|
16
16
|
export interface ImportSessionOpts {
|
|
@@ -26,16 +26,23 @@ export interface EstimateOpts {
|
|
|
26
26
|
force: boolean;
|
|
27
27
|
}
|
|
28
28
|
/**
|
|
29
|
-
* Discover candidate transcripts on disk
|
|
30
|
-
*
|
|
31
|
-
*
|
|
29
|
+
* Discover candidate transcripts on disk across every supported client.
|
|
30
|
+
* Each `ImportTarget` carries its own `client` field so downstream
|
|
31
|
+
* dispatch (estimateImport / importSession) routes automatically.
|
|
32
|
+
*
|
|
33
|
+
* `transcript` scope is single-file. Routing is filename-based: Codex
|
|
34
|
+
* rollouts match `rollout-<ISO>-<UUID>.jsonl`, everything else goes to
|
|
35
|
+
* Claude. Without this guard, Claude's `singleTranscriptToTarget` would
|
|
36
|
+
* accept any `.jsonl` with a top-level `timestamp` field — which Codex
|
|
37
|
+
* rollouts happen to have — producing a spurious mis-typed Claude target
|
|
38
|
+
* alongside the correct Codex one.
|
|
32
39
|
*/
|
|
33
40
|
export declare function findTranscripts(scope: ImportScope): ImportTarget[];
|
|
34
41
|
/**
|
|
35
|
-
* Pre-pass estimate for the dry-run summary.
|
|
36
|
-
*
|
|
42
|
+
* Pre-pass estimate for the dry-run summary. Splits the target list by
|
|
43
|
+
* client, calls each client's estimator, then merges the summaries.
|
|
37
44
|
*/
|
|
38
45
|
export declare function estimateImport(opts: EstimateOpts): ImportSummary;
|
|
39
|
-
/** Per-session entry point. */
|
|
46
|
+
/** Per-session entry point — dispatches on `target.client`. */
|
|
40
47
|
export declare function importSession(opts: ImportSessionOpts): Promise<ImportResult>;
|
|
41
48
|
//# sourceMappingURL=pipeline.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../../src/import/pipeline.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;
|
|
1
|
+
{"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../../src/import/pipeline.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAGH,OAAO,EAAyD,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,YAAY,EAAE,eAAe,EAAoB,MAAM,SAAS,CAAC;AAW3K,MAAM,WAAW,iBAAiB;IAC9B,MAAM,EAAE,YAAY,CAAC;IACrB,KAAK,EAAE,OAAO,CAAC;IACf,4DAA4D;IAC5D,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAED,MAAM,WAAW,YAAY;IACzB,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,SAAS,EAAE,eAAe,GAAG,IAAI,CAAC;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,OAAO,CAAC;CAClB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,WAAW,GAAG,YAAY,EAAE,CAWlE;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,YAAY,GAAG,aAAa,CAehE;AAED,+DAA+D;AAC/D,wBAAsB,aAAa,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,YAAY,CAAC,CAKlF"}
|
package/dist/import/pipeline.js
CHANGED
|
@@ -2,46 +2,127 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* IronBee CLI — Import Module Generic Pipeline Dispatcher
|
|
4
4
|
*
|
|
5
|
-
* The single point that knows about client-specific runners.
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
5
|
+
* The single point that knows about client-specific runners. Dispatches
|
|
6
|
+
* across Claude AND Codex by default: discovery scans both stores +
|
|
7
|
+
* unions the results; each `ImportTarget` carries a `client`
|
|
8
|
+
* discriminator so per-session runner / estimator routing is automatic.
|
|
9
|
+
* New clients plug in by adding a `discovery` / `summary` / `runner`
|
|
10
|
+
* triple here and one branch in each dispatch function.
|
|
11
11
|
*
|
|
12
|
-
* Isolation principle:
|
|
13
|
-
*
|
|
14
|
-
*
|
|
12
|
+
* Isolation principle: per-client logic stays separated by file. The CLI
|
|
13
|
+
* command depends on this dispatcher, NOT on any `<client>/*` module
|
|
14
|
+
* directly.
|
|
15
15
|
*/
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
17
|
exports.findTranscripts = findTranscripts;
|
|
18
18
|
exports.estimateImport = estimateImport;
|
|
19
19
|
exports.importSession = importSession;
|
|
20
|
+
const path_1 = require("path");
|
|
21
|
+
const types_1 = require("./types");
|
|
20
22
|
const discovery_1 = require("./claude/discovery");
|
|
21
23
|
const summary_1 = require("./claude/summary");
|
|
22
24
|
const runner_1 = require("./claude/runner");
|
|
25
|
+
const discovery_2 = require("./codex/discovery");
|
|
26
|
+
const summary_2 = require("./codex/summary");
|
|
27
|
+
const runner_2 = require("./codex/runner");
|
|
28
|
+
/** Codex rollout filenames: `rollout-<ISO>-<UUID>.jsonl`. Mirror of the regex in `analytics/codex/transcript.ts:sessionIdFromRolloutPath`. */
|
|
29
|
+
const CODEX_ROLLOUT_FILENAME = /^rollout-.+-[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\.jsonl$/i;
|
|
23
30
|
/**
|
|
24
|
-
* Discover candidate transcripts on disk
|
|
25
|
-
*
|
|
26
|
-
*
|
|
31
|
+
* Discover candidate transcripts on disk across every supported client.
|
|
32
|
+
* Each `ImportTarget` carries its own `client` field so downstream
|
|
33
|
+
* dispatch (estimateImport / importSession) routes automatically.
|
|
34
|
+
*
|
|
35
|
+
* `transcript` scope is single-file. Routing is filename-based: Codex
|
|
36
|
+
* rollouts match `rollout-<ISO>-<UUID>.jsonl`, everything else goes to
|
|
37
|
+
* Claude. Without this guard, Claude's `singleTranscriptToTarget` would
|
|
38
|
+
* accept any `.jsonl` with a top-level `timestamp` field — which Codex
|
|
39
|
+
* rollouts happen to have — producing a spurious mis-typed Claude target
|
|
40
|
+
* alongside the correct Codex one.
|
|
27
41
|
*/
|
|
28
42
|
function findTranscripts(scope) {
|
|
29
|
-
|
|
43
|
+
if (scope.kind === "transcript") {
|
|
44
|
+
if (CODEX_ROLLOUT_FILENAME.test((0, path_1.basename)(scope.path))) {
|
|
45
|
+
return (0, discovery_2.findCodexTranscripts)(scope);
|
|
46
|
+
}
|
|
47
|
+
return (0, discovery_1.findClaudeTranscripts)(scope);
|
|
48
|
+
}
|
|
49
|
+
const out = [];
|
|
50
|
+
out.push(...(0, discovery_1.findClaudeTranscripts)(scope));
|
|
51
|
+
out.push(...(0, discovery_2.findCodexTranscripts)(scope));
|
|
52
|
+
return out;
|
|
30
53
|
}
|
|
31
54
|
/**
|
|
32
|
-
* Pre-pass estimate for the dry-run summary.
|
|
33
|
-
*
|
|
55
|
+
* Pre-pass estimate for the dry-run summary. Splits the target list by
|
|
56
|
+
* client, calls each client's estimator, then merges the summaries.
|
|
34
57
|
*/
|
|
35
58
|
function estimateImport(opts) {
|
|
36
|
-
|
|
37
|
-
|
|
59
|
+
const split = partitionByClient(opts.targets);
|
|
60
|
+
const claudeSummary = (0, summary_1.estimateClaudeImport)({
|
|
61
|
+
targets: split.claude,
|
|
62
|
+
timeRange: opts.timeRange,
|
|
63
|
+
concurrency: opts.concurrency,
|
|
64
|
+
force: opts.force,
|
|
65
|
+
});
|
|
66
|
+
const codexSummary = (0, summary_2.estimateCodexImport)({
|
|
67
|
+
targets: split.codex,
|
|
38
68
|
timeRange: opts.timeRange,
|
|
39
69
|
concurrency: opts.concurrency,
|
|
40
70
|
force: opts.force,
|
|
41
71
|
});
|
|
72
|
+
return mergeSummaries(claudeSummary, codexSummary, opts);
|
|
42
73
|
}
|
|
43
|
-
/** Per-session entry point. */
|
|
74
|
+
/** Per-session entry point — dispatches on `target.client`. */
|
|
44
75
|
async function importSession(opts) {
|
|
76
|
+
if (opts.target.client === "codex") {
|
|
77
|
+
return (0, runner_2.importCodexSession)({ target: opts.target, force: opts.force, batchSize: opts.batchSize ?? null });
|
|
78
|
+
}
|
|
45
79
|
return (0, runner_1.importClaudeSession)({ target: opts.target, force: opts.force, batchSize: opts.batchSize ?? null });
|
|
46
80
|
}
|
|
81
|
+
function partitionByClient(targets) {
|
|
82
|
+
const out = { claude: [], codex: [] };
|
|
83
|
+
for (const t of targets) {
|
|
84
|
+
out[t.client].push(t);
|
|
85
|
+
}
|
|
86
|
+
return out;
|
|
87
|
+
}
|
|
88
|
+
function mergeSummaries(a, b, opts) {
|
|
89
|
+
const counts = (0, types_1.emptyEventCounts)();
|
|
90
|
+
for (const key of Object.keys(counts)) {
|
|
91
|
+
counts[key] = a.estimatedEvents[key] + b.estimatedEvents[key];
|
|
92
|
+
}
|
|
93
|
+
return {
|
|
94
|
+
// Dedupe per-projectDir. Without this, a project with sessions
|
|
95
|
+
// from BOTH Claude AND Codex shows up TWICE in the dry-run table
|
|
96
|
+
// (one row from each per-client summary's own per-project Map),
|
|
97
|
+
// inflating "N project(s) found" and confusing the operator.
|
|
98
|
+
projects: dedupeProjectsByDir([...a.projects, ...b.projects]),
|
|
99
|
+
timeRange: opts.timeRange,
|
|
100
|
+
toImportCount: a.toImportCount + b.toImportCount,
|
|
101
|
+
skippedCount: a.skippedCount + b.skippedCount,
|
|
102
|
+
estimatedEvents: counts,
|
|
103
|
+
estimatedCostUsd: a.estimatedCostUsd + b.estimatedCostUsd,
|
|
104
|
+
estimatedWireBytes: a.estimatedWireBytes + b.estimatedWireBytes,
|
|
105
|
+
concurrency: opts.concurrency,
|
|
106
|
+
// Both summaries' collectorUrl is derived from the FIRST target's
|
|
107
|
+
// project config; when both are present they should be the same
|
|
108
|
+
// (a single collector per machine is the common case). Prefer the
|
|
109
|
+
// non-null one if they diverge — claude first.
|
|
110
|
+
collectorUrl: a.collectorUrl ?? b.collectorUrl,
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
/** Merge rows that share a `projectDir`, summing their counts. */
|
|
114
|
+
function dedupeProjectsByDir(rows) {
|
|
115
|
+
const merged = new Map();
|
|
116
|
+
for (const row of rows) {
|
|
117
|
+
const existing = merged.get(row.projectDir);
|
|
118
|
+
if (existing === undefined) {
|
|
119
|
+
merged.set(row.projectDir, { ...row });
|
|
120
|
+
continue;
|
|
121
|
+
}
|
|
122
|
+
existing.found += row.found;
|
|
123
|
+
existing.skipped += row.skipped;
|
|
124
|
+
existing.toImport += row.toImport;
|
|
125
|
+
}
|
|
126
|
+
return Array.from(merged.values());
|
|
127
|
+
}
|
|
47
128
|
//# sourceMappingURL=pipeline.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../../src/import/pipeline.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;GAaG;;
|
|
1
|
+
{"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../../src/import/pipeline.ts"],"names":[],"mappings":"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"}
|
package/dist/import/types.d.ts
CHANGED
|
@@ -48,7 +48,11 @@ export interface ImportOptions {
|
|
|
48
48
|
batchSize: number | null;
|
|
49
49
|
}
|
|
50
50
|
/** A single session that survived discovery + filtering, ready for import. */
|
|
51
|
+
/** Which agent produced the transcript — drives per-client runner dispatch. */
|
|
52
|
+
export type ImportClient = "claude" | "codex";
|
|
51
53
|
export interface ImportTarget {
|
|
54
|
+
/** Source agent — picks the runner / event-builder pipeline. */
|
|
55
|
+
client: ImportClient;
|
|
52
56
|
sessionId: string;
|
|
53
57
|
transcriptPath: string;
|
|
54
58
|
/** Best-effort decoded project directory. May not exist on disk. */
|