@newrelic/preflight 0.0.1-pre.1 → 1.0.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/LICENSE +183 -0
- package/README.md +498 -0
- package/dist/alerts/alert-log.d.ts +24 -0
- package/dist/alerts/alert-log.d.ts.map +1 -0
- package/dist/alerts/alert-log.js +159 -0
- package/dist/alerts/alert-log.js.map +1 -0
- package/dist/alerts/alert-snapshot-collector.d.ts +168 -0
- package/dist/alerts/alert-snapshot-collector.d.ts.map +1 -0
- package/dist/alerts/alert-snapshot-collector.js +243 -0
- package/dist/alerts/alert-snapshot-collector.js.map +1 -0
- package/dist/alerts/local-alert-engine.d.ts +86 -0
- package/dist/alerts/local-alert-engine.d.ts.map +1 -0
- package/dist/alerts/local-alert-engine.js +466 -0
- package/dist/alerts/local-alert-engine.js.map +1 -0
- package/dist/alerts/local-alert-rule.d.ts +439 -0
- package/dist/alerts/local-alert-rule.d.ts.map +1 -0
- package/dist/alerts/local-alert-rule.js +139 -0
- package/dist/alerts/local-alert-rule.js.map +1 -0
- package/dist/alerts/os-notifier.d.ts +39 -0
- package/dist/alerts/os-notifier.d.ts.map +1 -0
- package/dist/alerts/os-notifier.js +170 -0
- package/dist/alerts/os-notifier.js.map +1 -0
- package/dist/alerts/types.d.ts +35 -0
- package/dist/alerts/types.d.ts.map +1 -0
- package/dist/alerts/types.js +8 -0
- package/dist/alerts/types.js.map +1 -0
- package/dist/config.d.ts +169 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +860 -0
- package/dist/config.js.map +1 -0
- package/dist/dashboard/dashboard-server.d.ts +38 -0
- package/dist/dashboard/dashboard-server.d.ts.map +1 -0
- package/dist/dashboard/dashboard-server.js +207 -0
- package/dist/dashboard/dashboard-server.js.map +1 -0
- package/dist/dashboard/index.d.ts +3 -0
- package/dist/dashboard/index.d.ts.map +1 -0
- package/dist/dashboard/index.js +2 -0
- package/dist/dashboard/index.js.map +1 -0
- package/dist/dashboard/live-event-bus.d.ts +99 -0
- package/dist/dashboard/live-event-bus.d.ts.map +1 -0
- package/dist/dashboard/live-event-bus.js +56 -0
- package/dist/dashboard/live-event-bus.js.map +1 -0
- package/dist/dashboard/routes/api-handler.d.ts +122 -0
- package/dist/dashboard/routes/api-handler.d.ts.map +1 -0
- package/dist/dashboard/routes/api-handler.js +1414 -0
- package/dist/dashboard/routes/api-handler.js.map +1 -0
- package/dist/dashboard/routes/replay-analyzer.d.ts +15 -0
- package/dist/dashboard/routes/replay-analyzer.d.ts.map +1 -0
- package/dist/dashboard/routes/replay-analyzer.js +227 -0
- package/dist/dashboard/routes/replay-analyzer.js.map +1 -0
- package/dist/dashboard/routes/sse-handler.d.ts +4 -0
- package/dist/dashboard/routes/sse-handler.d.ts.map +1 -0
- package/dist/dashboard/routes/sse-handler.js +122 -0
- package/dist/dashboard/routes/sse-handler.js.map +1 -0
- package/dist/dashboard/routes/static-handler.d.ts +3 -0
- package/dist/dashboard/routes/static-handler.d.ts.map +1 -0
- package/dist/dashboard/routes/static-handler.js +103 -0
- package/dist/dashboard/routes/static-handler.js.map +1 -0
- package/dist/data/alerts/conditions/01-daily-cost-spike.json +16 -0
- package/dist/data/alerts/conditions/02-low-efficiency-score.json +16 -0
- package/dist/data/alerts/conditions/03-stuck-loop-rate.json +16 -0
- package/dist/data/alerts/conditions/04-anti-pattern-rate.json +16 -0
- package/dist/data/alerts/conditions/05-session-cost-budget.json +16 -0
- package/dist/data/alerts/conditions-personal/01-personal-daily-cost.json +16 -0
- package/dist/data/alerts/conditions-personal/02-personal-session-cost.json +16 -0
- package/dist/data/alerts/conditions-personal/03-personal-low-efficiency.json +16 -0
- package/dist/data/alerts/conditions-personal/04-personal-anti-pattern-rate.json +16 -0
- package/dist/data/alerts/conditions-personal/05-personal-stuck-loop.json +16 -0
- package/dist/data/alerts/policy.json +4 -0
- package/dist/data/dashboards/ai-coding-assistant-manager-view.json +103 -0
- package/dist/data/dashboards/ai-coding-assistant-overview.json +239 -0
- package/dist/data/dashboards/ai-coding-assistant-personal.json +442 -0
- package/dist/data/dashboards/ai-coding-assistant-platform-comparison.json +320 -0
- package/dist/data/dashboards/ai-coding-assistant-security.json +275 -0
- package/dist/data/dashboards/ai-coding-assistant-session-detail.json +296 -0
- package/dist/data/dashboards/ai-coding-assistant-team-view.json +345 -0
- package/dist/deploy/data-paths.d.ts +22 -0
- package/dist/deploy/data-paths.d.ts.map +1 -0
- package/dist/deploy/data-paths.js +69 -0
- package/dist/deploy/data-paths.js.map +1 -0
- package/dist/deploy/deploy-alerts.d.ts +58 -0
- package/dist/deploy/deploy-alerts.d.ts.map +1 -0
- package/dist/deploy/deploy-alerts.js +371 -0
- package/dist/deploy/deploy-alerts.js.map +1 -0
- package/dist/deploy/deploy-dashboards.d.ts +92 -0
- package/dist/deploy/deploy-dashboards.d.ts.map +1 -0
- package/dist/deploy/deploy-dashboards.js +282 -0
- package/dist/deploy/deploy-dashboards.js.map +1 -0
- package/dist/digest/digest-formatter.d.ts +3 -0
- package/dist/digest/digest-formatter.d.ts.map +1 -0
- package/dist/digest/digest-formatter.js +37 -0
- package/dist/digest/digest-formatter.js.map +1 -0
- package/dist/digest/digest-sender.d.ts +2 -0
- package/dist/digest/digest-sender.d.ts.map +1 -0
- package/dist/digest/digest-sender.js +29 -0
- package/dist/digest/digest-sender.js.map +1 -0
- package/dist/hooks/bash-classifier.d.ts +26 -0
- package/dist/hooks/bash-classifier.d.ts.map +1 -0
- package/dist/hooks/bash-classifier.js +409 -0
- package/dist/hooks/bash-classifier.js.map +1 -0
- package/dist/hooks/collector-script.d.ts +47 -0
- package/dist/hooks/collector-script.d.ts.map +1 -0
- package/dist/hooks/collector-script.js +662 -0
- package/dist/hooks/collector-script.js.map +1 -0
- package/dist/hooks/event-processor.d.ts +65 -0
- package/dist/hooks/event-processor.d.ts.map +1 -0
- package/dist/hooks/event-processor.js +342 -0
- package/dist/hooks/event-processor.js.map +1 -0
- package/dist/hooks/index.d.ts +7 -0
- package/dist/hooks/index.d.ts.map +1 -0
- package/dist/hooks/index.js +5 -0
- package/dist/hooks/index.js.map +1 -0
- package/dist/hooks/session-resolver.d.ts +66 -0
- package/dist/hooks/session-resolver.d.ts.map +1 -0
- package/dist/hooks/session-resolver.js +196 -0
- package/dist/hooks/session-resolver.js.map +1 -0
- package/dist/hooks/tool-parsers.d.ts +19 -0
- package/dist/hooks/tool-parsers.d.ts.map +1 -0
- package/dist/hooks/tool-parsers.js +260 -0
- package/dist/hooks/tool-parsers.js.map +1 -0
- package/dist/index.d.ts +107 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +1505 -0
- package/dist/index.js.map +1 -0
- package/dist/install/cli.d.ts +11 -0
- package/dist/install/cli.d.ts.map +1 -0
- package/dist/install/cli.js +365 -0
- package/dist/install/cli.js.map +1 -0
- package/dist/install/index.d.ts +4 -0
- package/dist/install/index.d.ts.map +1 -0
- package/dist/install/index.js +3 -0
- package/dist/install/index.js.map +1 -0
- package/dist/install/install-helper.d.ts +35 -0
- package/dist/install/install-helper.d.ts.map +1 -0
- package/dist/install/install-helper.js +227 -0
- package/dist/install/install-helper.js.map +1 -0
- package/dist/install/key-validator.d.ts +19 -0
- package/dist/install/key-validator.d.ts.map +1 -0
- package/dist/install/key-validator.js +122 -0
- package/dist/install/key-validator.js.map +1 -0
- package/dist/install/migrate.d.ts +12 -0
- package/dist/install/migrate.d.ts.map +1 -0
- package/dist/install/migrate.js +115 -0
- package/dist/install/migrate.js.map +1 -0
- package/dist/install/schedule.d.ts +11 -0
- package/dist/install/schedule.d.ts.map +1 -0
- package/dist/install/schedule.js +114 -0
- package/dist/install/schedule.js.map +1 -0
- package/dist/install/setup-wizard.d.ts +40 -0
- package/dist/install/setup-wizard.d.ts.map +1 -0
- package/dist/install/setup-wizard.js +489 -0
- package/dist/install/setup-wizard.js.map +1 -0
- package/dist/lib/date.d.ts +54 -0
- package/dist/lib/date.d.ts.map +1 -0
- package/dist/lib/date.js +85 -0
- package/dist/lib/date.js.map +1 -0
- package/dist/metrics/anti-patterns.d.ts +62 -0
- package/dist/metrics/anti-patterns.d.ts.map +1 -0
- package/dist/metrics/anti-patterns.js +301 -0
- package/dist/metrics/anti-patterns.js.map +1 -0
- package/dist/metrics/api-failure-tracker.d.ts +82 -0
- package/dist/metrics/api-failure-tracker.d.ts.map +1 -0
- package/dist/metrics/api-failure-tracker.js +202 -0
- package/dist/metrics/api-failure-tracker.js.map +1 -0
- package/dist/metrics/budget-tracker.d.ts +60 -0
- package/dist/metrics/budget-tracker.d.ts.map +1 -0
- package/dist/metrics/budget-tracker.js +130 -0
- package/dist/metrics/budget-tracker.js.map +1 -0
- package/dist/metrics/claudemd-tracker.d.ts +108 -0
- package/dist/metrics/claudemd-tracker.d.ts.map +1 -0
- package/dist/metrics/claudemd-tracker.js +337 -0
- package/dist/metrics/claudemd-tracker.js.map +1 -0
- package/dist/metrics/collaboration-profile.d.ts +65 -0
- package/dist/metrics/collaboration-profile.d.ts.map +1 -0
- package/dist/metrics/collaboration-profile.js +231 -0
- package/dist/metrics/collaboration-profile.js.map +1 -0
- package/dist/metrics/context-composition-tracker.d.ts +74 -0
- package/dist/metrics/context-composition-tracker.d.ts.map +1 -0
- package/dist/metrics/context-composition-tracker.js +202 -0
- package/dist/metrics/context-composition-tracker.js.map +1 -0
- package/dist/metrics/context-tracker.d.ts +78 -0
- package/dist/metrics/context-tracker.d.ts.map +1 -0
- package/dist/metrics/context-tracker.js +222 -0
- package/dist/metrics/context-tracker.js.map +1 -0
- package/dist/metrics/context-window-tracker.d.ts +18 -0
- package/dist/metrics/context-window-tracker.d.ts.map +1 -0
- package/dist/metrics/context-window-tracker.js +35 -0
- package/dist/metrics/context-window-tracker.js.map +1 -0
- package/dist/metrics/cost-forecast.d.ts +36 -0
- package/dist/metrics/cost-forecast.d.ts.map +1 -0
- package/dist/metrics/cost-forecast.js +91 -0
- package/dist/metrics/cost-forecast.js.map +1 -0
- package/dist/metrics/cost-per-outcome.d.ts +102 -0
- package/dist/metrics/cost-per-outcome.d.ts.map +1 -0
- package/dist/metrics/cost-per-outcome.js +266 -0
- package/dist/metrics/cost-per-outcome.js.map +1 -0
- package/dist/metrics/cost-tracker.d.ts +78 -0
- package/dist/metrics/cost-tracker.d.ts.map +1 -0
- package/dist/metrics/cost-tracker.js +169 -0
- package/dist/metrics/cost-tracker.js.map +1 -0
- package/dist/metrics/decision-tracker.d.ts +49 -0
- package/dist/metrics/decision-tracker.d.ts.map +1 -0
- package/dist/metrics/decision-tracker.js +161 -0
- package/dist/metrics/decision-tracker.js.map +1 -0
- package/dist/metrics/efficiency-score.d.ts +80 -0
- package/dist/metrics/efficiency-score.d.ts.map +1 -0
- package/dist/metrics/efficiency-score.js +219 -0
- package/dist/metrics/efficiency-score.js.map +1 -0
- package/dist/metrics/git-efficiency-tracker.d.ts +165 -0
- package/dist/metrics/git-efficiency-tracker.d.ts.map +1 -0
- package/dist/metrics/git-efficiency-tracker.js +1056 -0
- package/dist/metrics/git-efficiency-tracker.js.map +1 -0
- package/dist/metrics/index.d.ts +26 -0
- package/dist/metrics/index.d.ts.map +1 -0
- package/dist/metrics/index.js +14 -0
- package/dist/metrics/index.js.map +1 -0
- package/dist/metrics/instruction-drift-tracker.d.ts +69 -0
- package/dist/metrics/instruction-drift-tracker.d.ts.map +1 -0
- package/dist/metrics/instruction-drift-tracker.js +213 -0
- package/dist/metrics/instruction-drift-tracker.js.map +1 -0
- package/dist/metrics/latency-decomposition.d.ts +50 -0
- package/dist/metrics/latency-decomposition.d.ts.map +1 -0
- package/dist/metrics/latency-decomposition.js +112 -0
- package/dist/metrics/latency-decomposition.js.map +1 -0
- package/dist/metrics/latency-tracker.d.ts +33 -0
- package/dist/metrics/latency-tracker.d.ts.map +1 -0
- package/dist/metrics/latency-tracker.js +93 -0
- package/dist/metrics/latency-tracker.js.map +1 -0
- package/dist/metrics/live-session-registry.d.ts +29 -0
- package/dist/metrics/live-session-registry.d.ts.map +1 -0
- package/dist/metrics/live-session-registry.js +103 -0
- package/dist/metrics/live-session-registry.js.map +1 -0
- package/dist/metrics/model-usage-tracker.d.ts +21 -0
- package/dist/metrics/model-usage-tracker.d.ts.map +1 -0
- package/dist/metrics/model-usage-tracker.js +53 -0
- package/dist/metrics/model-usage-tracker.js.map +1 -0
- package/dist/metrics/percentile.d.ts +5 -0
- package/dist/metrics/percentile.d.ts.map +1 -0
- package/dist/metrics/percentile.js +10 -0
- package/dist/metrics/percentile.js.map +1 -0
- package/dist/metrics/personal-coach.d.ts +47 -0
- package/dist/metrics/personal-coach.d.ts.map +1 -0
- package/dist/metrics/personal-coach.js +241 -0
- package/dist/metrics/personal-coach.js.map +1 -0
- package/dist/metrics/prompt-feedback.d.ts +75 -0
- package/dist/metrics/prompt-feedback.d.ts.map +1 -0
- package/dist/metrics/prompt-feedback.js +286 -0
- package/dist/metrics/prompt-feedback.js.map +1 -0
- package/dist/metrics/proxy-metrics.d.ts +54 -0
- package/dist/metrics/proxy-metrics.d.ts.map +1 -0
- package/dist/metrics/proxy-metrics.js +228 -0
- package/dist/metrics/proxy-metrics.js.map +1 -0
- package/dist/metrics/quality-proxy-tracker.d.ts +51 -0
- package/dist/metrics/quality-proxy-tracker.d.ts.map +1 -0
- package/dist/metrics/quality-proxy-tracker.js +162 -0
- package/dist/metrics/quality-proxy-tracker.js.map +1 -0
- package/dist/metrics/recommendation-engine.d.ts +72 -0
- package/dist/metrics/recommendation-engine.d.ts.map +1 -0
- package/dist/metrics/recommendation-engine.js +207 -0
- package/dist/metrics/recommendation-engine.js.map +1 -0
- package/dist/metrics/retry-detector.d.ts +43 -0
- package/dist/metrics/retry-detector.d.ts.map +1 -0
- package/dist/metrics/retry-detector.js +179 -0
- package/dist/metrics/retry-detector.js.map +1 -0
- package/dist/metrics/session-tracker.d.ts +75 -0
- package/dist/metrics/session-tracker.d.ts.map +1 -0
- package/dist/metrics/session-tracker.js +249 -0
- package/dist/metrics/session-tracker.js.map +1 -0
- package/dist/metrics/task-completion-tracker.d.ts +15 -0
- package/dist/metrics/task-completion-tracker.d.ts.map +1 -0
- package/dist/metrics/task-completion-tracker.js +27 -0
- package/dist/metrics/task-completion-tracker.js.map +1 -0
- package/dist/metrics/task-detector.d.ts +84 -0
- package/dist/metrics/task-detector.d.ts.map +1 -0
- package/dist/metrics/task-detector.js +302 -0
- package/dist/metrics/task-detector.js.map +1 -0
- package/dist/metrics/tool-selection-scorer.d.ts +39 -0
- package/dist/metrics/tool-selection-scorer.d.ts.map +1 -0
- package/dist/metrics/tool-selection-scorer.js +193 -0
- package/dist/metrics/tool-selection-scorer.js.map +1 -0
- package/dist/metrics/trend-analyzer.d.ts +92 -0
- package/dist/metrics/trend-analyzer.d.ts.map +1 -0
- package/dist/metrics/trend-analyzer.js +293 -0
- package/dist/metrics/trend-analyzer.js.map +1 -0
- package/dist/metrics/turn-cost-attributor.d.ts +41 -0
- package/dist/metrics/turn-cost-attributor.d.ts.map +1 -0
- package/dist/metrics/turn-cost-attributor.js +118 -0
- package/dist/metrics/turn-cost-attributor.js.map +1 -0
- package/dist/metrics/turn-tracker.d.ts +49 -0
- package/dist/metrics/turn-tracker.d.ts.map +1 -0
- package/dist/metrics/turn-tracker.js +192 -0
- package/dist/metrics/turn-tracker.js.map +1 -0
- package/dist/platforms/amazon-q-adapter.d.ts +10 -0
- package/dist/platforms/amazon-q-adapter.d.ts.map +1 -0
- package/dist/platforms/amazon-q-adapter.js +75 -0
- package/dist/platforms/amazon-q-adapter.js.map +1 -0
- package/dist/platforms/claude-code-adapter.d.ts +10 -0
- package/dist/platforms/claude-code-adapter.d.ts.map +1 -0
- package/dist/platforms/claude-code-adapter.js +48 -0
- package/dist/platforms/claude-code-adapter.js.map +1 -0
- package/dist/platforms/continue-adapter.d.ts +10 -0
- package/dist/platforms/continue-adapter.d.ts.map +1 -0
- package/dist/platforms/continue-adapter.js +73 -0
- package/dist/platforms/continue-adapter.js.map +1 -0
- package/dist/platforms/copilot-adapter.d.ts +37 -0
- package/dist/platforms/copilot-adapter.d.ts.map +1 -0
- package/dist/platforms/copilot-adapter.js +66 -0
- package/dist/platforms/copilot-adapter.js.map +1 -0
- package/dist/platforms/cursor-adapter.d.ts +10 -0
- package/dist/platforms/cursor-adapter.d.ts.map +1 -0
- package/dist/platforms/cursor-adapter.js +60 -0
- package/dist/platforms/cursor-adapter.js.map +1 -0
- package/dist/platforms/generic-mcp-adapter.d.ts +113 -0
- package/dist/platforms/generic-mcp-adapter.d.ts.map +1 -0
- package/dist/platforms/generic-mcp-adapter.js +139 -0
- package/dist/platforms/generic-mcp-adapter.js.map +1 -0
- package/dist/platforms/index.d.ts +15 -0
- package/dist/platforms/index.d.ts.map +1 -0
- package/dist/platforms/index.js +12 -0
- package/dist/platforms/index.js.map +1 -0
- package/dist/platforms/platform-registry.d.ts +11 -0
- package/dist/platforms/platform-registry.d.ts.map +1 -0
- package/dist/platforms/platform-registry.js +54 -0
- package/dist/platforms/platform-registry.js.map +1 -0
- package/dist/platforms/types.d.ts +36 -0
- package/dist/platforms/types.d.ts.map +1 -0
- package/dist/platforms/types.js +2 -0
- package/dist/platforms/types.js.map +1 -0
- package/dist/platforms/windsurf-adapter.d.ts +10 -0
- package/dist/platforms/windsurf-adapter.d.ts.map +1 -0
- package/dist/platforms/windsurf-adapter.js +63 -0
- package/dist/platforms/windsurf-adapter.js.map +1 -0
- package/dist/platforms/zed-adapter.d.ts +10 -0
- package/dist/platforms/zed-adapter.d.ts.map +1 -0
- package/dist/platforms/zed-adapter.js +72 -0
- package/dist/platforms/zed-adapter.js.map +1 -0
- package/dist/proxy/index.d.ts +7 -0
- package/dist/proxy/index.d.ts.map +1 -0
- package/dist/proxy/index.js +5 -0
- package/dist/proxy/index.js.map +1 -0
- package/dist/proxy/otlp-receiver.d.ts +28 -0
- package/dist/proxy/otlp-receiver.d.ts.map +1 -0
- package/dist/proxy/otlp-receiver.js +319 -0
- package/dist/proxy/otlp-receiver.js.map +1 -0
- package/dist/proxy/proxy-manager.d.ts +47 -0
- package/dist/proxy/proxy-manager.d.ts.map +1 -0
- package/dist/proxy/proxy-manager.js +338 -0
- package/dist/proxy/proxy-manager.js.map +1 -0
- package/dist/proxy/types.d.ts +72 -0
- package/dist/proxy/types.d.ts.map +1 -0
- package/dist/proxy/types.js +33 -0
- package/dist/proxy/types.js.map +1 -0
- package/dist/proxy/upstream-http.d.ts +26 -0
- package/dist/proxy/upstream-http.d.ts.map +1 -0
- package/dist/proxy/upstream-http.js +209 -0
- package/dist/proxy/upstream-http.js.map +1 -0
- package/dist/proxy/upstream-stdio.d.ts +25 -0
- package/dist/proxy/upstream-stdio.d.ts.map +1 -0
- package/dist/proxy/upstream-stdio.js +256 -0
- package/dist/proxy/upstream-stdio.js.map +1 -0
- package/dist/security/audit-trail.d.ts +74 -0
- package/dist/security/audit-trail.d.ts.map +1 -0
- package/dist/security/audit-trail.js +338 -0
- package/dist/security/audit-trail.js.map +1 -0
- package/dist/security/index.d.ts +5 -0
- package/dist/security/index.d.ts.map +1 -0
- package/dist/security/index.js +4 -0
- package/dist/security/index.js.map +1 -0
- package/dist/security/ssrf.d.ts +2 -0
- package/dist/security/ssrf.d.ts.map +1 -0
- package/dist/security/ssrf.js +126 -0
- package/dist/security/ssrf.js.map +1 -0
- package/dist/server.d.ts +14 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +117 -0
- package/dist/server.js.map +1 -0
- package/dist/shared/__test-utils__/log-output.d.ts +49 -0
- package/dist/shared/__test-utils__/log-output.d.ts.map +1 -0
- package/dist/shared/__test-utils__/log-output.js +38 -0
- package/dist/shared/__test-utils__/log-output.js.map +1 -0
- package/dist/shared/config.d.ts +56 -0
- package/dist/shared/config.d.ts.map +1 -0
- package/dist/shared/config.js +290 -0
- package/dist/shared/config.js.map +1 -0
- package/dist/shared/errors.d.ts +139 -0
- package/dist/shared/errors.d.ts.map +1 -0
- package/dist/shared/errors.js +406 -0
- package/dist/shared/errors.js.map +1 -0
- package/dist/shared/events/factory.d.ts +143 -0
- package/dist/shared/events/factory.d.ts.map +1 -0
- package/dist/shared/events/factory.js +351 -0
- package/dist/shared/events/factory.js.map +1 -0
- package/dist/shared/events/index.d.ts +6 -0
- package/dist/shared/events/index.d.ts.map +1 -0
- package/dist/shared/events/index.js +3 -0
- package/dist/shared/events/index.js.map +1 -0
- package/dist/shared/events/serialize.d.ts +87 -0
- package/dist/shared/events/serialize.d.ts.map +1 -0
- package/dist/shared/events/serialize.js +510 -0
- package/dist/shared/events/serialize.js.map +1 -0
- package/dist/shared/events/types.d.ts +139 -0
- package/dist/shared/events/types.d.ts.map +1 -0
- package/dist/shared/events/types.js +2 -0
- package/dist/shared/events/types.js.map +1 -0
- package/dist/shared/harvest/event-buffer.d.ts +59 -0
- package/dist/shared/harvest/event-buffer.d.ts.map +1 -0
- package/dist/shared/harvest/event-buffer.js +100 -0
- package/dist/shared/harvest/event-buffer.js.map +1 -0
- package/dist/shared/harvest/harvest-scheduler.d.ts +200 -0
- package/dist/shared/harvest/harvest-scheduler.d.ts.map +1 -0
- package/dist/shared/harvest/harvest-scheduler.js +647 -0
- package/dist/shared/harvest/harvest-scheduler.js.map +1 -0
- package/dist/shared/harvest/index.d.ts +7 -0
- package/dist/shared/harvest/index.d.ts.map +1 -0
- package/dist/shared/harvest/index.js +4 -0
- package/dist/shared/harvest/index.js.map +1 -0
- package/dist/shared/harvest/metric-aggregator.d.ts +115 -0
- package/dist/shared/harvest/metric-aggregator.d.ts.map +1 -0
- package/dist/shared/harvest/metric-aggregator.js +247 -0
- package/dist/shared/harvest/metric-aggregator.js.map +1 -0
- package/dist/shared/index.d.ts +22 -0
- package/dist/shared/index.d.ts.map +1 -0
- package/dist/shared/index.js +13 -0
- package/dist/shared/index.js.map +1 -0
- package/dist/shared/logger.d.ts +57 -0
- package/dist/shared/logger.d.ts.map +1 -0
- package/dist/shared/logger.js +166 -0
- package/dist/shared/logger.js.map +1 -0
- package/dist/shared/pricing-data.d.ts +4 -0
- package/dist/shared/pricing-data.d.ts.map +1 -0
- package/dist/shared/pricing-data.js +473 -0
- package/dist/shared/pricing-data.js.map +1 -0
- package/dist/shared/pricing.d.ts +148 -0
- package/dist/shared/pricing.d.ts.map +1 -0
- package/dist/shared/pricing.js +528 -0
- package/dist/shared/pricing.js.map +1 -0
- package/dist/shared/redact.d.ts +33 -0
- package/dist/shared/redact.d.ts.map +1 -0
- package/dist/shared/redact.js +110 -0
- package/dist/shared/redact.js.map +1 -0
- package/dist/shared/timing.d.ts +96 -0
- package/dist/shared/timing.d.ts.map +1 -0
- package/dist/shared/timing.js +173 -0
- package/dist/shared/timing.js.map +1 -0
- package/dist/shared/tokens.d.ts +145 -0
- package/dist/shared/tokens.d.ts.map +1 -0
- package/dist/shared/tokens.js +492 -0
- package/dist/shared/tokens.js.map +1 -0
- package/dist/shared/transport/events-api.d.ts +14 -0
- package/dist/shared/transport/events-api.d.ts.map +1 -0
- package/dist/shared/transport/events-api.js +29 -0
- package/dist/shared/transport/events-api.js.map +1 -0
- package/dist/shared/transport/http-client.d.ts +49 -0
- package/dist/shared/transport/http-client.d.ts.map +1 -0
- package/dist/shared/transport/http-client.js +381 -0
- package/dist/shared/transport/http-client.js.map +1 -0
- package/dist/shared/transport/index.d.ts +10 -0
- package/dist/shared/transport/index.d.ts.map +1 -0
- package/dist/shared/transport/index.js +6 -0
- package/dist/shared/transport/index.js.map +1 -0
- package/dist/shared/transport/logs-api.d.ts +29 -0
- package/dist/shared/transport/logs-api.d.ts.map +1 -0
- package/dist/shared/transport/logs-api.js +40 -0
- package/dist/shared/transport/logs-api.js.map +1 -0
- package/dist/shared/transport/metric-api.d.ts +9 -0
- package/dist/shared/transport/metric-api.d.ts.map +1 -0
- package/dist/shared/transport/metric-api.js +39 -0
- package/dist/shared/transport/metric-api.js.map +1 -0
- package/dist/shared/transport/otlp-event-bridge.d.ts +22 -0
- package/dist/shared/transport/otlp-event-bridge.d.ts.map +1 -0
- package/dist/shared/transport/otlp-event-bridge.js +50 -0
- package/dist/shared/transport/otlp-event-bridge.js.map +1 -0
- package/dist/shared/transport/otlp-shared.d.ts +14 -0
- package/dist/shared/transport/otlp-shared.d.ts.map +1 -0
- package/dist/shared/transport/otlp-shared.js +49 -0
- package/dist/shared/transport/otlp-shared.js.map +1 -0
- package/dist/shared/transport/otlp-transport.d.ts +58 -0
- package/dist/shared/transport/otlp-transport.d.ts.map +1 -0
- package/dist/shared/transport/otlp-transport.js +236 -0
- package/dist/shared/transport/otlp-transport.js.map +1 -0
- package/dist/shared/transport/types.d.ts +129 -0
- package/dist/shared/transport/types.d.ts.map +1 -0
- package/dist/shared/transport/types.js +2 -0
- package/dist/shared/transport/types.js.map +1 -0
- package/dist/shared/version.d.ts +2 -0
- package/dist/shared/version.d.ts.map +1 -0
- package/dist/shared/version.js +2 -0
- package/dist/shared/version.js.map +1 -0
- package/dist/storage/index.d.ts +7 -0
- package/dist/storage/index.d.ts.map +1 -0
- package/dist/storage/index.js +4 -0
- package/dist/storage/index.js.map +1 -0
- package/dist/storage/local-store.d.ts +153 -0
- package/dist/storage/local-store.d.ts.map +1 -0
- package/dist/storage/local-store.js +719 -0
- package/dist/storage/local-store.js.map +1 -0
- package/dist/storage/retention.d.ts +2 -0
- package/dist/storage/retention.d.ts.map +1 -0
- package/dist/storage/retention.js +53 -0
- package/dist/storage/retention.js.map +1 -0
- package/dist/storage/session-store.d.ts +97 -0
- package/dist/storage/session-store.d.ts.map +1 -0
- package/dist/storage/session-store.js +391 -0
- package/dist/storage/session-store.js.map +1 -0
- package/dist/storage/types.d.ts +64 -0
- package/dist/storage/types.d.ts.map +1 -0
- package/dist/storage/types.js +2 -0
- package/dist/storage/types.js.map +1 -0
- package/dist/storage/weekly-summary.d.ts +61 -0
- package/dist/storage/weekly-summary.d.ts.map +1 -0
- package/dist/storage/weekly-summary.js +243 -0
- package/dist/storage/weekly-summary.js.map +1 -0
- package/dist/tools/analytics-tools.d.ts +101 -0
- package/dist/tools/analytics-tools.d.ts.map +1 -0
- package/dist/tools/analytics-tools.js +71 -0
- package/dist/tools/analytics-tools.js.map +1 -0
- package/dist/tools/cost-tools.d.ts +121 -0
- package/dist/tools/cost-tools.d.ts.map +1 -0
- package/dist/tools/cost-tools.js +174 -0
- package/dist/tools/cost-tools.js.map +1 -0
- package/dist/tools/cross-session-tools.d.ts +376 -0
- package/dist/tools/cross-session-tools.d.ts.map +1 -0
- package/dist/tools/cross-session-tools.js +820 -0
- package/dist/tools/cross-session-tools.js.map +1 -0
- package/dist/tools/extended-analytics-tools.d.ts +164 -0
- package/dist/tools/extended-analytics-tools.d.ts.map +1 -0
- package/dist/tools/extended-analytics-tools.js +121 -0
- package/dist/tools/extended-analytics-tools.js.map +1 -0
- package/dist/tools/index.d.ts +7 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +4 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/session-stats.d.ts +162 -0
- package/dist/tools/session-stats.d.ts.map +1 -0
- package/dist/tools/session-stats.js +1054 -0
- package/dist/tools/session-stats.js.map +1 -0
- package/dist/tools/workflow-tools.d.ts +126 -0
- package/dist/tools/workflow-tools.d.ts.map +1 -0
- package/dist/tools/workflow-tools.js +274 -0
- package/dist/tools/workflow-tools.js.map +1 -0
- package/dist/tracing/mcp-tracer.d.ts +4 -0
- package/dist/tracing/mcp-tracer.d.ts.map +1 -0
- package/dist/tracing/mcp-tracer.js +14 -0
- package/dist/tracing/mcp-tracer.js.map +1 -0
- package/dist/tracing/session-span.d.ts +14 -0
- package/dist/tracing/session-span.d.ts.map +1 -0
- package/dist/tracing/session-span.js +53 -0
- package/dist/tracing/session-span.js.map +1 -0
- package/dist/tracing/task-span-tracker.d.ts +11 -0
- package/dist/tracing/task-span-tracker.d.ts.map +1 -0
- package/dist/tracing/task-span-tracker.js +59 -0
- package/dist/tracing/task-span-tracker.js.map +1 -0
- package/dist/tracing/tool-call-span.d.ts +4 -0
- package/dist/tracing/tool-call-span.d.ts.map +1 -0
- package/dist/tracing/tool-call-span.js +60 -0
- package/dist/tracing/tool-call-span.js.map +1 -0
- package/dist/transport/index.d.ts +3 -0
- package/dist/transport/index.d.ts.map +1 -0
- package/dist/transport/index.js +2 -0
- package/dist/transport/index.js.map +1 -0
- package/dist/transport/log-ingest.d.ts +42 -0
- package/dist/transport/log-ingest.d.ts.map +1 -0
- package/dist/transport/log-ingest.js +151 -0
- package/dist/transport/log-ingest.js.map +1 -0
- package/dist/transport/nr-ingest.d.ts +171 -0
- package/dist/transport/nr-ingest.d.ts.map +1 -0
- package/dist/transport/nr-ingest.js +659 -0
- package/dist/transport/nr-ingest.js.map +1 -0
- package/dist/types.d.ts +45 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/web/assets/index-BrL281N-.css +2 -0
- package/dist/web/assets/index-CcaYZzXm.js +42 -0
- package/dist/web/favicon.svg +15 -0
- package/dist/web/index.html +15 -0
- package/examples/local-alert-rules.json +106 -0
- package/package.json +125 -1
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
import { redact } from './redact.js';
|
|
2
|
+
const LOG_LEVEL_ORDER = {
|
|
3
|
+
debug: 0,
|
|
4
|
+
info: 1,
|
|
5
|
+
warn: 2,
|
|
6
|
+
error: 3,
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* type-safe narrowing helper. The previous
|
|
10
|
+
* `envLevel in LOG_LEVEL_ORDER` check + `as LogLevel` cast was sound at
|
|
11
|
+
* runtime today but the cast hid the gap: TS can't narrow `string` to a
|
|
12
|
+
* literal union via `in`, so a refactor that broadened `LOG_LEVEL_ORDER`
|
|
13
|
+
* (e.g. added `trace`) would silently let `envLevel` flow through with
|
|
14
|
+
* the wrong type. Explicit type guard removes the cast and makes the
|
|
15
|
+
* literal-union membership check the single source of truth.
|
|
16
|
+
*/
|
|
17
|
+
const LOG_LEVELS = ['debug', 'info', 'warn', 'error'];
|
|
18
|
+
function isLogLevel(value) {
|
|
19
|
+
return LOG_LEVELS.includes(value);
|
|
20
|
+
}
|
|
21
|
+
function resolveLogLevel() {
|
|
22
|
+
const envLevel = process.env.NEW_RELIC_AI_LOG_LEVEL?.toLowerCase();
|
|
23
|
+
if (envLevel !== undefined && isLogLevel(envLevel)) {
|
|
24
|
+
return envLevel;
|
|
25
|
+
}
|
|
26
|
+
return 'info';
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Cached resolved log level.
|
|
30
|
+
*
|
|
31
|
+
* Pre-§7.5, every `createLogger()` call re-read `NEW_RELIC_AI_LOG_LEVEL`
|
|
32
|
+
* from the env. If a process changed the env between two calls — common
|
|
33
|
+
* in tests that flip it per-block — the two loggers ended up with
|
|
34
|
+
* different levels, producing flapping behavior that was hard to debug.
|
|
35
|
+
*
|
|
36
|
+
* Now: resolve once on first use and reuse the cached value. Production
|
|
37
|
+
* code is unaffected (the env is set once at startup); tests that need to
|
|
38
|
+
* exercise different levels at runtime call `__resetLogLevelCache()` after
|
|
39
|
+
* mutating the env, or pass an explicit `levelOverride` to `createLogger`.
|
|
40
|
+
*/
|
|
41
|
+
let cachedMinLevel = null;
|
|
42
|
+
function getMinLevel() {
|
|
43
|
+
if (cachedMinLevel === null) {
|
|
44
|
+
cachedMinLevel = resolveLogLevel();
|
|
45
|
+
}
|
|
46
|
+
return cachedMinLevel;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Re-arm the env-resolved log level cache so the next `createLogger()`
|
|
50
|
+
* call reads `NEW_RELIC_AI_LOG_LEVEL` again.
|
|
51
|
+
*
|
|
52
|
+
* @internal Test-only. The double-underscore prefix signals that this is NOT
|
|
53
|
+
* part of the public API and MUST NOT be called in production code — calling it
|
|
54
|
+
* in a running agent would cause all loggers to re-read the log level env var
|
|
55
|
+
* on the next emit, defeating the intentional caching behaviour.
|
|
56
|
+
*/
|
|
57
|
+
export function __resetLogLevelCache() {
|
|
58
|
+
cachedMinLevel = null;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Create a logger.
|
|
62
|
+
*
|
|
63
|
+
* @param component Identifier emitted as `component` on every log entry.
|
|
64
|
+
* Convention: kebab-case module name (e.g. `'harvest-scheduler'`).
|
|
65
|
+
* @param levelOverride
|
|
66
|
+
* Optional per-component minimum level. Pins this
|
|
67
|
+
* logger to the specified level for its lifetime, ignoring the
|
|
68
|
+
* process-wide `NEW_RELIC_AI_LOG_LEVEL` env var. Use this when one
|
|
69
|
+
* noisy module needs to be quieter (or louder) than the rest of the
|
|
70
|
+
* library — e.g.:
|
|
71
|
+
*
|
|
72
|
+
* const logger = createLogger('http-client', 'error');
|
|
73
|
+
*
|
|
74
|
+
* makes the http-client module emit only errors regardless of how the
|
|
75
|
+
* rest of the process is configured. Without an override, the level
|
|
76
|
+
* resolves from the env (cached, see 5) and tracks
|
|
77
|
+
* process-wide changes via `__resetLogLevelCache()`.
|
|
78
|
+
*/
|
|
79
|
+
export function createLogger(component, levelOverride) {
|
|
80
|
+
return createLoggerInternal(component, levelOverride, undefined);
|
|
81
|
+
}
|
|
82
|
+
function createLoggerInternal(component, levelOverride, boundContext) {
|
|
83
|
+
// 5: when no override is supplied, the minimum level is
|
|
84
|
+
// resolved per-log-call via the cached `getMinLevel()` so a process-wide
|
|
85
|
+
// log-level change (env mutation + cache reset) takes effect immediately
|
|
86
|
+
// for already-constructed loggers — without a Map lookup penalty in the
|
|
87
|
+
// common case (cached read after first call). When `levelOverride` is
|
|
88
|
+
// explicit, it pins the level for this logger's lifetime.
|
|
89
|
+
const fixedLevelOrder = levelOverride !== undefined ? LOG_LEVEL_ORDER[levelOverride] : null;
|
|
90
|
+
function log(level, message, data) {
|
|
91
|
+
const minLevelOrder = fixedLevelOrder ?? LOG_LEVEL_ORDER[getMinLevel()];
|
|
92
|
+
if (LOG_LEVEL_ORDER[level] < minLevelOrder)
|
|
93
|
+
return;
|
|
94
|
+
// §7.2: defensively redact secret-shaped keys from caller-supplied `data`
|
|
95
|
+
// before merging into the log entry. Callers occasionally pass through
|
|
96
|
+
// config objects (`{ ...config }`) or response payloads that contain
|
|
97
|
+
// licenseKey / authorization headers; without this guard those fields
|
|
98
|
+
// would land in stderr verbatim.
|
|
99
|
+
const safeData = data === undefined ? undefined : redact(data);
|
|
100
|
+
const now = new Date();
|
|
101
|
+
const entry = {
|
|
102
|
+
// §7.6: bound context first, per-call data wins on key collision.
|
|
103
|
+
// Canonical fields come last so callers cannot accidentally overwrite
|
|
104
|
+
// level, message, component, timestamp, or epoch_ms.
|
|
105
|
+
...(boundContext ?? {}),
|
|
106
|
+
...safeData,
|
|
107
|
+
timestamp: now.toISOString(),
|
|
108
|
+
// §7.7: epoch_ms alongside ISO timestamp for NR Logs API ingestion.
|
|
109
|
+
epoch_ms: now.getTime(),
|
|
110
|
+
level,
|
|
111
|
+
component,
|
|
112
|
+
message,
|
|
113
|
+
};
|
|
114
|
+
let serialized;
|
|
115
|
+
try {
|
|
116
|
+
serialized = JSON.stringify(entry);
|
|
117
|
+
}
|
|
118
|
+
catch {
|
|
119
|
+
// §7.3: per-field fallback. JSON.stringify on the whole entry threw,
|
|
120
|
+
// but most fields are probably fine — only one or two values are bad
|
|
121
|
+
// (e.g. a BigInt buried in caller data). Walk top-level keys and
|
|
122
|
+
// replace ONLY the offending ones with '[unserializable]', so
|
|
123
|
+
// operator-useful siblings (timestamp, level, component, message,
|
|
124
|
+
// and any well-formed data fields) still surface. `data` is spread
|
|
125
|
+
// into entry via `...safeData` above, so its keys are already
|
|
126
|
+
// top-level here.
|
|
127
|
+
// NOTE (§LG1): this walk operates on top-level entry keys only. If a
|
|
128
|
+
// data field is a nested object containing an unserializable value
|
|
129
|
+
// (e.g. `data = { outer: { amount: 1n } }`), the entire `outer` key is
|
|
130
|
+
// replaced with '[unserializable]' — not just the `amount` sub-key.
|
|
131
|
+
// Per-field precision applies only at depth 1 (the entry level).
|
|
132
|
+
const safeEntry = {};
|
|
133
|
+
for (const [k, v] of Object.entries(entry)) {
|
|
134
|
+
try {
|
|
135
|
+
JSON.stringify(v);
|
|
136
|
+
safeEntry[k] = v;
|
|
137
|
+
}
|
|
138
|
+
catch {
|
|
139
|
+
safeEntry[k] = '[unserializable]';
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
serialized = JSON.stringify(safeEntry);
|
|
143
|
+
}
|
|
144
|
+
// §7.4: prefer console.error over a raw process.stderr.write. Both go to
|
|
145
|
+
// the same underlying stream, but console.error uses Node's Console
|
|
146
|
+
// implementation which handles formatting and any future buffering
|
|
147
|
+
// changes — and it keeps log output cooperative with consumer code that
|
|
148
|
+
// intercepts console.* (Jest, debugger UIs, log forwarders).
|
|
149
|
+
console.error(serialized);
|
|
150
|
+
}
|
|
151
|
+
return {
|
|
152
|
+
debug: (message, data) => log('debug', message, data),
|
|
153
|
+
info: (message, data) => log('info', message, data),
|
|
154
|
+
warn: (message, data) => log('warn', message, data),
|
|
155
|
+
error: (message, data) => log('error', message, data),
|
|
156
|
+
child: (context) => createLoggerInternal(component, levelOverride, {
|
|
157
|
+
...(boundContext ?? {}),
|
|
158
|
+
// Redacting at child-creation time avoids re-running redact() on the
|
|
159
|
+
// bound context per log call (§LG2). Note: per-call data is still
|
|
160
|
+
// redacted on every emit (line 141) — only bound context gets the
|
|
161
|
+
// creation-time optimization.
|
|
162
|
+
...redact(context),
|
|
163
|
+
}),
|
|
164
|
+
};
|
|
165
|
+
}
|
|
166
|
+
//# sourceMappingURL=logger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/shared/logger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAIrC,MAAM,eAAe,GAA6B;IAChD,KAAK,EAAE,CAAC;IACR,IAAI,EAAE,CAAC;IACP,IAAI,EAAE,CAAC;IACP,KAAK,EAAE,CAAC;CACT,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,UAAU,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAU,CAAC;AAE/D,SAAS,UAAU,CAAC,KAAa;IAC/B,OAAQ,UAAgC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC3D,CAAC;AAED,SAAS,eAAe;IACtB,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,sBAAsB,EAAE,WAAW,EAAE,CAAC;IACnE,IAAI,QAAQ,KAAK,SAAS,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QACnD,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,IAAI,cAAc,GAAoB,IAAI,CAAC;AAE3C,SAAS,WAAW;IAClB,IAAI,cAAc,KAAK,IAAI,EAAE,CAAC;QAC5B,cAAc,GAAG,eAAe,EAAE,CAAC;IACrC,CAAC;IACD,OAAO,cAAc,CAAC;AACxB,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,oBAAoB;IAClC,cAAc,GAAG,IAAI,CAAC;AACxB,CAAC;AA4BD;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,YAAY,CAAC,SAAiB,EAAE,aAAwB;IACtE,OAAO,oBAAoB,CAAC,SAAS,EAAE,aAAa,EAAE,SAAS,CAAC,CAAC;AACnE,CAAC;AAED,SAAS,oBAAoB,CAC3B,SAAiB,EACjB,aAAmC,EACnC,YAAiD;IAEjD,wDAAwD;IACxD,yEAAyE;IACzE,yEAAyE;IACzE,wEAAwE;IACxE,sEAAsE;IACtE,0DAA0D;IAC1D,MAAM,eAAe,GAAG,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAE5F,SAAS,GAAG,CAAC,KAAe,EAAE,OAAe,EAAE,IAA8B;QAC3E,MAAM,aAAa,GAAG,eAAe,IAAI,eAAe,CAAC,WAAW,EAAE,CAAC,CAAC;QACxE,IAAI,eAAe,CAAC,KAAK,CAAC,GAAG,aAAa;YAAE,OAAO;QAEnD,0EAA0E;QAC1E,uEAAuE;QACvE,qEAAqE;QACrE,sEAAsE;QACtE,iCAAiC;QACjC,MAAM,QAAQ,GAAG,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAE/D,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,KAAK,GAAG;YACZ,kEAAkE;YAClE,sEAAsE;YACtE,qDAAqD;YACrD,GAAG,CAAC,YAAY,IAAI,EAAE,CAAC;YACvB,GAAG,QAAQ;YACX,SAAS,EAAE,GAAG,CAAC,WAAW,EAAE;YAC5B,oEAAoE;YACpE,QAAQ,EAAE,GAAG,CAAC,OAAO,EAAE;YACvB,KAAK;YACL,SAAS;YACT,OAAO;SACR,CAAC;QAEF,IAAI,UAAkB,CAAC;QACvB,IAAI,CAAC;YACH,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACrC,CAAC;QAAC,MAAM,CAAC;YACP,qEAAqE;YACrE,qEAAqE;YACrE,iEAAiE;YACjE,8DAA8D;YAC9D,kEAAkE;YAClE,mEAAmE;YACnE,8DAA8D;YAC9D,kBAAkB;YAClB,qEAAqE;YACrE,mEAAmE;YACnE,uEAAuE;YACvE,oEAAoE;YACpE,iEAAiE;YACjE,MAAM,SAAS,GAA4B,EAAE,CAAC;YAC9C,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC3C,IAAI,CAAC;oBACH,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;oBAClB,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;gBACnB,CAAC;gBAAC,MAAM,CAAC;oBACP,SAAS,CAAC,CAAC,CAAC,GAAG,kBAAkB,CAAC;gBACpC,CAAC;YACH,CAAC;YACD,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QACzC,CAAC;QACD,yEAAyE;QACzE,oEAAoE;QACpE,mEAAmE;QACnE,wEAAwE;QACxE,6DAA6D;QAC7D,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IAC5B,CAAC;IAED,OAAO;QACL,KAAK,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC;QACrD,IAAI,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC;QACnD,IAAI,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC;QACnD,KAAK,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC;QACrD,KAAK,EAAE,CAAC,OAAO,EAAE,EAAE,CACjB,oBAAoB,CAAC,SAAS,EAAE,aAAa,EAAE;YAC7C,GAAG,CAAC,YAAY,IAAI,EAAE,CAAC;YACvB,qEAAqE;YACrE,kEAAkE;YAClE,kEAAkE;YAClE,8BAA8B;YAC9B,GAAI,MAAM,CAAC,OAAO,CAA6B;SAChD,CAAC;KACL,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pricing-data.d.ts","sourceRoot":"","sources":["../../src/shared/pricing-data.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAejD,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAoBhD,CAAC;AAmBF,eAAO,MAAM,qBAAqB,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAib9D,CAAC"}
|
|
@@ -0,0 +1,473 @@
|
|
|
1
|
+
// ---------------------------------------------------------------------------
|
|
2
|
+
// Family-name aliases → current-generation key
|
|
3
|
+
//
|
|
4
|
+
// When a caller passes a family name (e.g. "claude-opus-4"), they almost
|
|
5
|
+
// always mean "the current generation of that family". Without an explicit
|
|
6
|
+
// alias, the prefix-match heuristic in resolveModelPricing() prefers longer
|
|
7
|
+
// keys (dated suffixes like "-20250514") and silently returns LEGACY pricing,
|
|
8
|
+
// e.g. claude-opus-4 → claude-opus-4-20250514 ($15/$75) instead of the
|
|
9
|
+
// current claude-opus-4-7 ($5/$25). That's a 3× cost overestimate.
|
|
10
|
+
//
|
|
11
|
+
// Resolution order in resolveModelPricing(): exact → alias → forward-prefix
|
|
12
|
+
// → reverse-prefix → null.
|
|
13
|
+
// ---------------------------------------------------------------------------
|
|
14
|
+
export const MODEL_ALIASES = {
|
|
15
|
+
// Anthropic Claude families
|
|
16
|
+
'claude-opus-4': 'claude-opus-4-7',
|
|
17
|
+
'claude-sonnet-4': 'claude-sonnet-4-6',
|
|
18
|
+
'claude-haiku-4': 'claude-haiku-4-5',
|
|
19
|
+
'claude-haiku-3-5': 'claude-haiku-3-5-20241022',
|
|
20
|
+
// Google Gemini current-gen shortcuts
|
|
21
|
+
'gemini-3.1-pro': 'gemini-3.1-pro-preview',
|
|
22
|
+
'gemini-3.1-flash-lite': 'gemini-3.1-flash-lite-preview',
|
|
23
|
+
'gemini-3-flash': 'gemini-3-flash-preview',
|
|
24
|
+
// Gemini family shortcuts (§PD4): without these, bare family queries like
|
|
25
|
+
// 'gemini-2.5' return null (gpt-style .x suffixes don't match -\d prefix
|
|
26
|
+
// heuristic) or non-deterministically pick between pro/flash.
|
|
27
|
+
'gemini-2.5': 'gemini-2.5-pro',
|
|
28
|
+
'gemini-2.0': 'gemini-2.0-flash',
|
|
29
|
+
// OpenAI family shortcuts (§PD4): 'gpt-5' has no exact key and the .x
|
|
30
|
+
// suffix prevents the forward-prefix heuristic from matching.
|
|
31
|
+
'gpt-5': 'gpt-5.5',
|
|
32
|
+
};
|
|
33
|
+
// ---------------------------------------------------------------------------
|
|
34
|
+
// Built-in pricing table — USD per million tokens
|
|
35
|
+
//
|
|
36
|
+
// Rates last verified against vendor public pricing pages on 2026-05-20:
|
|
37
|
+
// - Anthropic https://www.anthropic.com/pricing
|
|
38
|
+
// - Google https://cloud.google.com/vertex-ai/generative-ai/pricing
|
|
39
|
+
// - OpenAI https://openai.com/api/pricing/
|
|
40
|
+
// - Cohere https://cohere.com/pricing
|
|
41
|
+
// - Mistral https://mistral.ai/pricing
|
|
42
|
+
// - Bedrock https://aws.amazon.com/bedrock/pricing/
|
|
43
|
+
//
|
|
44
|
+
// When updating rates, bump the date above so consumers can tell at a glance
|
|
45
|
+
// how stale the built-in table is. Pricing changes on these pages are usually
|
|
46
|
+
// announced; the date is the verification timestamp, not a guarantee that
|
|
47
|
+
// the rate hasn't shifted since.
|
|
48
|
+
// ---------------------------------------------------------------------------
|
|
49
|
+
export const DEFAULT_PRICING_TABLE = {
|
|
50
|
+
// ---- Anthropic (current generation) ----
|
|
51
|
+
'claude-opus-4-7': {
|
|
52
|
+
inputPerMTok: 5,
|
|
53
|
+
outputPerMTok: 25,
|
|
54
|
+
thinkingPerMTok: 25,
|
|
55
|
+
cacheReadPerMTok: 0.5,
|
|
56
|
+
cacheCreationPerMTok: 6.25,
|
|
57
|
+
contextWindow: 1_000_000,
|
|
58
|
+
},
|
|
59
|
+
'claude-sonnet-4-6': {
|
|
60
|
+
inputPerMTok: 3,
|
|
61
|
+
outputPerMTok: 15,
|
|
62
|
+
thinkingPerMTok: 15,
|
|
63
|
+
cacheReadPerMTok: 0.3,
|
|
64
|
+
cacheCreationPerMTok: 3.75,
|
|
65
|
+
contextWindow: 1_000_000,
|
|
66
|
+
},
|
|
67
|
+
// Dateless current-gen entry — MODEL_ALIASES['claude-haiku-4'] routes here.
|
|
68
|
+
// Matches the opus/sonnet convention: alias → dateless key → dated legacy key.
|
|
69
|
+
// Update this entry when Haiku 4.x rates change; the dated entry below is
|
|
70
|
+
// retained only for historical-cost backfill (§PD3).
|
|
71
|
+
'claude-haiku-4-5': {
|
|
72
|
+
inputPerMTok: 1,
|
|
73
|
+
outputPerMTok: 5,
|
|
74
|
+
thinkingPerMTok: 5,
|
|
75
|
+
cacheReadPerMTok: 0.1,
|
|
76
|
+
cacheCreationPerMTok: 1.25,
|
|
77
|
+
contextWindow: 200_000,
|
|
78
|
+
},
|
|
79
|
+
'claude-haiku-4-5-20251001': {
|
|
80
|
+
inputPerMTok: 1,
|
|
81
|
+
outputPerMTok: 5,
|
|
82
|
+
thinkingPerMTok: 5,
|
|
83
|
+
cacheReadPerMTok: 0.1,
|
|
84
|
+
cacheCreationPerMTok: 1.25,
|
|
85
|
+
contextWindow: 200_000,
|
|
86
|
+
},
|
|
87
|
+
// ---- Anthropic (legacy Claude 4 generation) ----
|
|
88
|
+
// these legacy entries share input/output/cache rates
|
|
89
|
+
// with their current-generation counterparts, but `contextWindow` differs
|
|
90
|
+
// (200K legacy vs 1M current). They are NOT alias candidates: the cost
|
|
91
|
+
// calculations downstream don't use contextWindow, but downstream tooling
|
|
92
|
+
// (e.g. context-fit checks, dashboard filters by window size) does. Keep
|
|
93
|
+
// the entries explicit. Family-name routing (e.g. `claude-opus-4` →
|
|
94
|
+
// current generation) is handled by MODEL_ALIASES above.
|
|
95
|
+
'claude-opus-4-6': {
|
|
96
|
+
inputPerMTok: 5,
|
|
97
|
+
outputPerMTok: 25,
|
|
98
|
+
thinkingPerMTok: 25,
|
|
99
|
+
cacheReadPerMTok: 0.5,
|
|
100
|
+
cacheCreationPerMTok: 6.25,
|
|
101
|
+
contextWindow: 200_000,
|
|
102
|
+
},
|
|
103
|
+
'claude-sonnet-4-5': {
|
|
104
|
+
inputPerMTok: 3,
|
|
105
|
+
outputPerMTok: 15,
|
|
106
|
+
thinkingPerMTok: 15,
|
|
107
|
+
cacheReadPerMTok: 0.3,
|
|
108
|
+
cacheCreationPerMTok: 3.75,
|
|
109
|
+
contextWindow: 200_000,
|
|
110
|
+
},
|
|
111
|
+
'claude-opus-4-5': {
|
|
112
|
+
inputPerMTok: 5,
|
|
113
|
+
outputPerMTok: 25,
|
|
114
|
+
thinkingPerMTok: 25,
|
|
115
|
+
cacheReadPerMTok: 0.5,
|
|
116
|
+
cacheCreationPerMTok: 6.25,
|
|
117
|
+
contextWindow: 200_000,
|
|
118
|
+
},
|
|
119
|
+
// WARNING: this key uses a version-number suffix (-1) not a date suffix.
|
|
120
|
+
// The reverse-prefix algorithm strips only 8-digit date suffixes, so a
|
|
121
|
+
// future model named 'claude-opus-4-10' (or 'claude-opus-4-100') would
|
|
122
|
+
// match this entry via reverse-prefix because
|
|
123
|
+
// 'claude-opus-4-10'.startsWith('claude-opus-4-1') is true (§PD5).
|
|
124
|
+
// If Anthropic releases a claude-opus-4-10 model, add an explicit alias
|
|
125
|
+
// before that model key appears in the table.
|
|
126
|
+
'claude-opus-4-1': {
|
|
127
|
+
inputPerMTok: 15,
|
|
128
|
+
outputPerMTok: 75,
|
|
129
|
+
thinkingPerMTok: 75,
|
|
130
|
+
cacheReadPerMTok: 1.5,
|
|
131
|
+
cacheCreationPerMTok: 18.75,
|
|
132
|
+
contextWindow: 200_000,
|
|
133
|
+
},
|
|
134
|
+
'claude-sonnet-4-20250514': {
|
|
135
|
+
inputPerMTok: 3,
|
|
136
|
+
outputPerMTok: 15,
|
|
137
|
+
thinkingPerMTok: 15,
|
|
138
|
+
cacheReadPerMTok: 0.3,
|
|
139
|
+
cacheCreationPerMTok: 3.75,
|
|
140
|
+
contextWindow: 200_000,
|
|
141
|
+
},
|
|
142
|
+
'claude-opus-4-20250514': {
|
|
143
|
+
inputPerMTok: 15,
|
|
144
|
+
outputPerMTok: 75,
|
|
145
|
+
thinkingPerMTok: 75,
|
|
146
|
+
cacheReadPerMTok: 1.5,
|
|
147
|
+
cacheCreationPerMTok: 18.75,
|
|
148
|
+
contextWindow: 200_000,
|
|
149
|
+
},
|
|
150
|
+
'claude-haiku-3-5-20241022': {
|
|
151
|
+
inputPerMTok: 0.8,
|
|
152
|
+
outputPerMTok: 4,
|
|
153
|
+
cacheReadPerMTok: 0.08,
|
|
154
|
+
cacheCreationPerMTok: 1,
|
|
155
|
+
contextWindow: 200_000,
|
|
156
|
+
},
|
|
157
|
+
// ---- Google Gemini (current generation) ----
|
|
158
|
+
'gemini-3.1-pro-preview': {
|
|
159
|
+
inputPerMTok: 2,
|
|
160
|
+
outputPerMTok: 12,
|
|
161
|
+
thinkingPerMTok: 12,
|
|
162
|
+
contextWindow: 1_000_000,
|
|
163
|
+
tierThreshold: 200_000,
|
|
164
|
+
tierInputPerMTok: 4,
|
|
165
|
+
tierOutputPerMTok: 18,
|
|
166
|
+
tierThinkingPerMTok: 18,
|
|
167
|
+
},
|
|
168
|
+
'gemini-3.1-flash-lite-preview': {
|
|
169
|
+
inputPerMTok: 0.25,
|
|
170
|
+
outputPerMTok: 1.5,
|
|
171
|
+
contextWindow: 1_000_000,
|
|
172
|
+
},
|
|
173
|
+
'gemini-3-flash-preview': {
|
|
174
|
+
inputPerMTok: 0.5,
|
|
175
|
+
outputPerMTok: 3,
|
|
176
|
+
contextWindow: 1_000_000,
|
|
177
|
+
},
|
|
178
|
+
// ---- Google Gemini 2.5 ----
|
|
179
|
+
'gemini-2.5-pro': {
|
|
180
|
+
inputPerMTok: 1.25,
|
|
181
|
+
outputPerMTok: 10,
|
|
182
|
+
thinkingPerMTok: 10,
|
|
183
|
+
contextWindow: 1_000_000,
|
|
184
|
+
tierThreshold: 200_000,
|
|
185
|
+
tierInputPerMTok: 2.5,
|
|
186
|
+
tierOutputPerMTok: 15,
|
|
187
|
+
tierThinkingPerMTok: 15,
|
|
188
|
+
},
|
|
189
|
+
'gemini-2.5-flash': {
|
|
190
|
+
inputPerMTok: 0.3,
|
|
191
|
+
outputPerMTok: 2.5,
|
|
192
|
+
thinkingPerMTok: 2.5,
|
|
193
|
+
contextWindow: 1_000_000,
|
|
194
|
+
},
|
|
195
|
+
'gemini-2.5-flash-lite': {
|
|
196
|
+
inputPerMTok: 0.1,
|
|
197
|
+
outputPerMTok: 0.4,
|
|
198
|
+
contextWindow: 1_000_000,
|
|
199
|
+
},
|
|
200
|
+
// ---- Google Gemini 2.0 ----
|
|
201
|
+
// Retained past Google's published 2026-06-01 deprecation date for
|
|
202
|
+
// historical-cost backfill: events recorded against `gemini-2.0-flash`
|
|
203
|
+
// before the cutover may still flow through the harvest scheduler from
|
|
204
|
+
// long-running consumer apps that haven't migrated yet, and we'd rather
|
|
205
|
+
// they get a correct cost figure than fall through to the unknown-model
|
|
206
|
+
// zero rate. Rate values are the last published Google pricing as of
|
|
207
|
+
// that date and will be removed in a future release after the migration
|
|
208
|
+
// window closes.
|
|
209
|
+
'gemini-2.0-flash': {
|
|
210
|
+
inputPerMTok: 0.1,
|
|
211
|
+
outputPerMTok: 0.4,
|
|
212
|
+
contextWindow: 1_000_000,
|
|
213
|
+
},
|
|
214
|
+
// ---- Google Gemini 1.5 (legacy) ----
|
|
215
|
+
'gemini-1.5-pro': {
|
|
216
|
+
inputPerMTok: 1.25,
|
|
217
|
+
outputPerMTok: 5,
|
|
218
|
+
contextWindow: 2_000_000,
|
|
219
|
+
tierThreshold: 128_000,
|
|
220
|
+
tierInputPerMTok: 2.5,
|
|
221
|
+
tierOutputPerMTok: 10,
|
|
222
|
+
},
|
|
223
|
+
'gemini-1.5-flash': {
|
|
224
|
+
inputPerMTok: 0.075,
|
|
225
|
+
outputPerMTok: 0.3,
|
|
226
|
+
contextWindow: 1_000_000,
|
|
227
|
+
tierThreshold: 128_000,
|
|
228
|
+
tierInputPerMTok: 0.15,
|
|
229
|
+
tierOutputPerMTok: 0.6,
|
|
230
|
+
},
|
|
231
|
+
// ---- OpenAI (current generation) ----
|
|
232
|
+
'gpt-5.5': {
|
|
233
|
+
inputPerMTok: 5,
|
|
234
|
+
outputPerMTok: 30,
|
|
235
|
+
cacheReadPerMTok: 0.5,
|
|
236
|
+
contextWindow: 1_000_000,
|
|
237
|
+
// OpenAI long-context pricing is marginal: only tokens above 270k are
|
|
238
|
+
// billed at the tier rate — not the entire request (§PD2).
|
|
239
|
+
tierThreshold: 270_000,
|
|
240
|
+
tierMode: 'marginal',
|
|
241
|
+
tierInputPerMTok: 10,
|
|
242
|
+
tierOutputPerMTok: 45,
|
|
243
|
+
},
|
|
244
|
+
'gpt-5.4': {
|
|
245
|
+
inputPerMTok: 2.5,
|
|
246
|
+
outputPerMTok: 15,
|
|
247
|
+
cacheReadPerMTok: 0.25,
|
|
248
|
+
contextWindow: 1_000_000,
|
|
249
|
+
tierThreshold: 270_000,
|
|
250
|
+
tierMode: 'marginal',
|
|
251
|
+
tierInputPerMTok: 5,
|
|
252
|
+
tierOutputPerMTok: 22.5,
|
|
253
|
+
},
|
|
254
|
+
'gpt-5.4-mini': {
|
|
255
|
+
inputPerMTok: 0.75,
|
|
256
|
+
outputPerMTok: 4.5,
|
|
257
|
+
cacheReadPerMTok: 0.075,
|
|
258
|
+
contextWindow: 128_000,
|
|
259
|
+
},
|
|
260
|
+
'gpt-5.4-nano': {
|
|
261
|
+
inputPerMTok: 0.2,
|
|
262
|
+
outputPerMTok: 1.25,
|
|
263
|
+
cacheReadPerMTok: 0.02,
|
|
264
|
+
contextWindow: 128_000,
|
|
265
|
+
},
|
|
266
|
+
// ---- OpenAI (legacy) ----
|
|
267
|
+
'gpt-4o': {
|
|
268
|
+
inputPerMTok: 2.5,
|
|
269
|
+
outputPerMTok: 10,
|
|
270
|
+
contextWindow: 128_000,
|
|
271
|
+
},
|
|
272
|
+
'gpt-4o-mini': {
|
|
273
|
+
inputPerMTok: 0.15,
|
|
274
|
+
outputPerMTok: 0.6,
|
|
275
|
+
contextWindow: 128_000,
|
|
276
|
+
},
|
|
277
|
+
'gpt-4o-2024-11-20': {
|
|
278
|
+
inputPerMTok: 2.5,
|
|
279
|
+
outputPerMTok: 10,
|
|
280
|
+
contextWindow: 128_000,
|
|
281
|
+
},
|
|
282
|
+
'gpt-4o-2024-08-06': {
|
|
283
|
+
inputPerMTok: 2.5,
|
|
284
|
+
outputPerMTok: 10,
|
|
285
|
+
contextWindow: 128_000,
|
|
286
|
+
},
|
|
287
|
+
'gpt-4o-mini-2024-07-18': {
|
|
288
|
+
inputPerMTok: 0.15,
|
|
289
|
+
outputPerMTok: 0.6,
|
|
290
|
+
contextWindow: 128_000,
|
|
291
|
+
},
|
|
292
|
+
o1: {
|
|
293
|
+
inputPerMTok: 15,
|
|
294
|
+
outputPerMTok: 60,
|
|
295
|
+
// No thinkingPerMTok: OpenAI bills reasoning tokens as part of
|
|
296
|
+
// completion_tokens at outputPerMTok. The extractor sets thinkingTokens
|
|
297
|
+
// from completion_tokens_details.reasoning_tokens as an informational
|
|
298
|
+
// breakdown, but those tokens are already counted in outputTokens, so
|
|
299
|
+
// a separate thinkingPerMTok rate would double-bill (§PD1).
|
|
300
|
+
contextWindow: 200_000,
|
|
301
|
+
},
|
|
302
|
+
'o1-mini': {
|
|
303
|
+
inputPerMTok: 1.1,
|
|
304
|
+
outputPerMTok: 4.4,
|
|
305
|
+
contextWindow: 128_000,
|
|
306
|
+
},
|
|
307
|
+
'o1-preview': {
|
|
308
|
+
inputPerMTok: 15,
|
|
309
|
+
outputPerMTok: 60,
|
|
310
|
+
contextWindow: 128_000,
|
|
311
|
+
},
|
|
312
|
+
o3: {
|
|
313
|
+
inputPerMTok: 10,
|
|
314
|
+
outputPerMTok: 40,
|
|
315
|
+
// No thinkingPerMTok — see 'o1' comment above (§PD1).
|
|
316
|
+
contextWindow: 200_000,
|
|
317
|
+
},
|
|
318
|
+
'o3-mini': {
|
|
319
|
+
inputPerMTok: 1.1,
|
|
320
|
+
outputPerMTok: 4.4,
|
|
321
|
+
contextWindow: 200_000,
|
|
322
|
+
},
|
|
323
|
+
'o4-mini': {
|
|
324
|
+
inputPerMTok: 1.1,
|
|
325
|
+
outputPerMTok: 4.4,
|
|
326
|
+
contextWindow: 200_000,
|
|
327
|
+
},
|
|
328
|
+
'gpt-4-turbo': {
|
|
329
|
+
inputPerMTok: 10,
|
|
330
|
+
outputPerMTok: 30,
|
|
331
|
+
contextWindow: 128_000,
|
|
332
|
+
},
|
|
333
|
+
'gpt-3.5-turbo': {
|
|
334
|
+
inputPerMTok: 0.5,
|
|
335
|
+
outputPerMTok: 1.5,
|
|
336
|
+
contextWindow: 16_385,
|
|
337
|
+
},
|
|
338
|
+
// ---- AWS Bedrock (Converse API pricing for on-demand) ----
|
|
339
|
+
// Current Claude generation via Bedrock
|
|
340
|
+
// NOTE (§PR2): cache pricing for claude-opus-4-7 and claude-sonnet-4-6 on
|
|
341
|
+
// Bedrock has not been publicly documented as of 2026-06-03. Rates below are
|
|
342
|
+
// omitted until verified against the AWS Bedrock pricing page.
|
|
343
|
+
'anthropic.claude-opus-4-7': {
|
|
344
|
+
inputPerMTok: 5,
|
|
345
|
+
outputPerMTok: 25,
|
|
346
|
+
contextWindow: 1_000_000,
|
|
347
|
+
},
|
|
348
|
+
'anthropic.claude-sonnet-4-6': {
|
|
349
|
+
inputPerMTok: 3,
|
|
350
|
+
outputPerMTok: 15,
|
|
351
|
+
contextWindow: 1_000_000,
|
|
352
|
+
},
|
|
353
|
+
'anthropic.claude-haiku-4-5-20251001-v1:0': {
|
|
354
|
+
inputPerMTok: 1,
|
|
355
|
+
outputPerMTok: 5,
|
|
356
|
+
contextWindow: 200_000,
|
|
357
|
+
},
|
|
358
|
+
// Legacy Claude models via Bedrock cross-region inference
|
|
359
|
+
// Cache rates verified against AWS Bedrock pricing page (2026-06-03) (§PR2).
|
|
360
|
+
'anthropic.claude-3-5-sonnet-20241022-v2:0': {
|
|
361
|
+
inputPerMTok: 3,
|
|
362
|
+
outputPerMTok: 15,
|
|
363
|
+
cacheReadPerMTok: 0.6,
|
|
364
|
+
cacheCreationPerMTok: 7.5,
|
|
365
|
+
contextWindow: 200_000,
|
|
366
|
+
},
|
|
367
|
+
'anthropic.claude-3-5-haiku-20241022-v1:0': {
|
|
368
|
+
inputPerMTok: 0.8,
|
|
369
|
+
outputPerMTok: 4,
|
|
370
|
+
contextWindow: 200_000,
|
|
371
|
+
},
|
|
372
|
+
'anthropic.claude-3-opus-20240229-v1:0': {
|
|
373
|
+
inputPerMTok: 15,
|
|
374
|
+
outputPerMTok: 75,
|
|
375
|
+
contextWindow: 200_000,
|
|
376
|
+
},
|
|
377
|
+
// Meta Llama via Bedrock
|
|
378
|
+
'meta.llama3-70b-instruct-v1:0': {
|
|
379
|
+
inputPerMTok: 0.99,
|
|
380
|
+
outputPerMTok: 0.99,
|
|
381
|
+
contextWindow: 128_000,
|
|
382
|
+
},
|
|
383
|
+
'meta.llama3-8b-instruct-v1:0': {
|
|
384
|
+
inputPerMTok: 0.3,
|
|
385
|
+
outputPerMTok: 0.6,
|
|
386
|
+
contextWindow: 128_000,
|
|
387
|
+
},
|
|
388
|
+
// Mistral via Bedrock
|
|
389
|
+
'mistral.mistral-large-2402-v1:0': {
|
|
390
|
+
inputPerMTok: 4,
|
|
391
|
+
outputPerMTok: 12,
|
|
392
|
+
contextWindow: 32_000,
|
|
393
|
+
},
|
|
394
|
+
'mistral.mistral-small-2402-v1:0': {
|
|
395
|
+
inputPerMTok: 1,
|
|
396
|
+
outputPerMTok: 3,
|
|
397
|
+
contextWindow: 32_000,
|
|
398
|
+
},
|
|
399
|
+
// Amazon Nova
|
|
400
|
+
'amazon.nova-pro-v1:0': {
|
|
401
|
+
inputPerMTok: 0.8,
|
|
402
|
+
outputPerMTok: 3.2,
|
|
403
|
+
contextWindow: 300_000,
|
|
404
|
+
},
|
|
405
|
+
'amazon.nova-lite-v1:0': {
|
|
406
|
+
inputPerMTok: 0.06,
|
|
407
|
+
outputPerMTok: 0.24,
|
|
408
|
+
contextWindow: 300_000,
|
|
409
|
+
},
|
|
410
|
+
'amazon.nova-micro-v1:0': {
|
|
411
|
+
inputPerMTok: 0.035,
|
|
412
|
+
outputPerMTok: 0.14,
|
|
413
|
+
contextWindow: 128_000,
|
|
414
|
+
},
|
|
415
|
+
// ---- Mistral ----
|
|
416
|
+
'mistral-large-latest': {
|
|
417
|
+
inputPerMTok: 2,
|
|
418
|
+
outputPerMTok: 6,
|
|
419
|
+
contextWindow: 131_072,
|
|
420
|
+
},
|
|
421
|
+
'mistral-small-latest': {
|
|
422
|
+
inputPerMTok: 0.1,
|
|
423
|
+
outputPerMTok: 0.3,
|
|
424
|
+
contextWindow: 131_072,
|
|
425
|
+
},
|
|
426
|
+
'mistral-nemo': {
|
|
427
|
+
inputPerMTok: 0.15,
|
|
428
|
+
outputPerMTok: 0.15,
|
|
429
|
+
contextWindow: 131_072,
|
|
430
|
+
},
|
|
431
|
+
// ---- Mistral (legacy — deprecated March 2025) ----
|
|
432
|
+
'open-mistral-7b': {
|
|
433
|
+
inputPerMTok: 0.25,
|
|
434
|
+
outputPerMTok: 0.25,
|
|
435
|
+
contextWindow: 32_000,
|
|
436
|
+
},
|
|
437
|
+
'open-mixtral-8x7b': {
|
|
438
|
+
inputPerMTok: 0.7,
|
|
439
|
+
outputPerMTok: 0.7,
|
|
440
|
+
contextWindow: 32_000,
|
|
441
|
+
},
|
|
442
|
+
'codestral-latest': {
|
|
443
|
+
inputPerMTok: 0.2,
|
|
444
|
+
outputPerMTok: 0.6,
|
|
445
|
+
contextWindow: 256_000,
|
|
446
|
+
},
|
|
447
|
+
// ---- Cohere ----
|
|
448
|
+
'command-r-plus': {
|
|
449
|
+
inputPerMTok: 2.5,
|
|
450
|
+
outputPerMTok: 10,
|
|
451
|
+
contextWindow: 128_000,
|
|
452
|
+
},
|
|
453
|
+
'command-r': {
|
|
454
|
+
inputPerMTok: 0.15,
|
|
455
|
+
outputPerMTok: 0.6,
|
|
456
|
+
contextWindow: 128_000,
|
|
457
|
+
},
|
|
458
|
+
// `command` and `command-light` are deprecated (2024)
|
|
459
|
+
// but retained for historical-cost backfill of consumer apps that haven't
|
|
460
|
+
// migrated. Context window is 4096 tokens, not 4000 — the round-number
|
|
461
|
+
// approximation in the original entry was off by 96 tokens.
|
|
462
|
+
command: {
|
|
463
|
+
inputPerMTok: 1,
|
|
464
|
+
outputPerMTok: 2,
|
|
465
|
+
contextWindow: 4_096,
|
|
466
|
+
},
|
|
467
|
+
'command-light': {
|
|
468
|
+
inputPerMTok: 0.3,
|
|
469
|
+
outputPerMTok: 0.6,
|
|
470
|
+
contextWindow: 4_096,
|
|
471
|
+
},
|
|
472
|
+
};
|
|
473
|
+
//# sourceMappingURL=pricing-data.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pricing-data.js","sourceRoot":"","sources":["../../src/shared/pricing-data.ts"],"names":[],"mappings":"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"}
|