@codemieai/code 0.15.2 → 0.15.4
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/dist/agents/core/AgentCLI.d.ts.map +1 -1
- package/dist/agents/core/AgentCLI.js +9 -0
- package/dist/agents/core/AgentCLI.js.map +1 -1
- package/dist/agents/core/BaseAgentAdapter.d.ts.map +1 -1
- package/dist/agents/core/BaseAgentAdapter.js +34 -9
- package/dist/agents/core/BaseAgentAdapter.js.map +1 -1
- package/dist/agents/plugins/claude/claude.models.d.ts +58 -0
- package/dist/agents/plugins/claude/claude.models.d.ts.map +1 -1
- package/dist/agents/plugins/claude/claude.models.js +196 -10
- package/dist/agents/plugins/claude/claude.models.js.map +1 -1
- package/dist/agents/plugins/claude/claude.plugin.d.ts +1 -1
- package/dist/agents/plugins/claude/claude.plugin.d.ts.map +1 -1
- package/dist/agents/plugins/claude/claude.plugin.js +149 -47
- package/dist/agents/plugins/claude/claude.plugin.js.map +1 -1
- package/dist/agents/plugins/claude/claude.session.d.ts +17 -1
- package/dist/agents/plugins/claude/claude.session.d.ts.map +1 -1
- package/dist/agents/plugins/claude/claude.session.js +4 -0
- package/dist/agents/plugins/claude/claude.session.js.map +1 -1
- package/dist/agents/plugins/claude/plugin/statusline.bundle.mjs +729 -0
- package/dist/agents/plugins/claude/statusline-installer.d.ts +1 -1
- package/dist/agents/plugins/claude/statusline-installer.d.ts.map +1 -1
- package/dist/agents/plugins/claude/statusline-installer.js +41 -3
- package/dist/agents/plugins/claude/statusline-installer.js.map +1 -1
- package/dist/agents/plugins/codex/codex-models.d.ts.map +1 -1
- package/dist/agents/plugins/codex/codex-models.js +109 -8
- package/dist/agents/plugins/codex/codex-models.js.map +1 -1
- package/dist/agents/plugins/codex/codex.correlation.d.ts +39 -0
- package/dist/agents/plugins/codex/codex.correlation.d.ts.map +1 -0
- package/dist/agents/plugins/codex/codex.correlation.js +150 -0
- package/dist/agents/plugins/codex/codex.correlation.js.map +1 -0
- package/dist/agents/plugins/codex/codex.plugin.d.ts.map +1 -1
- package/dist/agents/plugins/codex/codex.plugin.js +8 -40
- package/dist/agents/plugins/codex/codex.plugin.js.map +1 -1
- package/dist/agents/plugins/kimi/kimi.env-model.d.ts +27 -0
- package/dist/agents/plugins/kimi/kimi.env-model.d.ts.map +1 -0
- package/dist/agents/plugins/kimi/kimi.env-model.js +52 -0
- package/dist/agents/plugins/kimi/kimi.env-model.js.map +1 -0
- package/dist/agents/plugins/kimi/kimi.session.d.ts +6 -0
- package/dist/agents/plugins/kimi/kimi.session.d.ts.map +1 -1
- package/dist/agents/plugins/kimi/kimi.session.js +24 -2
- package/dist/agents/plugins/kimi/kimi.session.js.map +1 -1
- package/dist/agents/plugins/opencode/opencode-dynamic-models.d.ts.map +1 -1
- package/dist/agents/plugins/opencode/opencode-dynamic-models.js +4 -5
- package/dist/agents/plugins/opencode/opencode-dynamic-models.js.map +1 -1
- package/dist/agents/plugins/pi/pi.models.d.ts.map +1 -1
- package/dist/agents/plugins/pi/pi.models.js +3 -3
- package/dist/agents/plugins/pi/pi.models.js.map +1 -1
- package/dist/bin/proxy-daemon.js +8 -1
- package/dist/bin/proxy-daemon.js.map +1 -1
- package/dist/cli/commands/analytics/cost/cost-enricher.d.ts +19 -2
- package/dist/cli/commands/analytics/cost/cost-enricher.d.ts.map +1 -1
- package/dist/cli/commands/analytics/cost/cost-enricher.js +171 -14
- package/dist/cli/commands/analytics/cost/cost-enricher.js.map +1 -1
- package/dist/cli/commands/analytics/cost/local-models.d.ts +15 -0
- package/dist/cli/commands/analytics/cost/local-models.d.ts.map +1 -0
- package/dist/cli/commands/analytics/cost/local-models.js +21 -0
- package/dist/cli/commands/analytics/cost/local-models.js.map +1 -0
- package/dist/cli/commands/analytics/cost/types.d.ts +60 -0
- package/dist/cli/commands/analytics/cost/types.d.ts.map +1 -1
- package/dist/cli/commands/analytics/cost/types.js.map +1 -1
- package/dist/cli/commands/analytics/cost/usage-readers.d.ts +25 -2
- package/dist/cli/commands/analytics/cost/usage-readers.d.ts.map +1 -1
- package/dist/cli/commands/analytics/cost/usage-readers.js +61 -3
- package/dist/cli/commands/analytics/cost/usage-readers.js.map +1 -1
- package/dist/cli/commands/analytics/formatter.d.ts +11 -0
- package/dist/cli/commands/analytics/formatter.d.ts.map +1 -1
- package/dist/cli/commands/analytics/formatter.js +28 -0
- package/dist/cli/commands/analytics/formatter.js.map +1 -1
- package/dist/cli/commands/analytics/index.d.ts.map +1 -1
- package/dist/cli/commands/analytics/index.js +70 -73
- package/dist/cli/commands/analytics/index.js.map +1 -1
- package/dist/cli/commands/analytics/otel-loader.d.ts.map +1 -1
- package/dist/cli/commands/analytics/otel-loader.js +60 -14
- package/dist/cli/commands/analytics/otel-loader.js.map +1 -1
- package/dist/cli/commands/analytics/otel-pricing.d.ts +38 -0
- package/dist/cli/commands/analytics/otel-pricing.d.ts.map +1 -0
- package/dist/cli/commands/analytics/otel-pricing.js +33 -0
- package/dist/cli/commands/analytics/otel-pricing.js.map +1 -0
- package/dist/cli/commands/analytics/report/client/app.js +279 -18
- package/dist/cli/commands/analytics/report/output-target.d.ts +22 -0
- package/dist/cli/commands/analytics/report/output-target.d.ts.map +1 -0
- package/dist/cli/commands/analytics/report/output-target.js +56 -0
- package/dist/cli/commands/analytics/report/output-target.js.map +1 -0
- package/dist/cli/commands/analytics/report/payload-builder.d.ts.map +1 -1
- package/dist/cli/commands/analytics/report/payload-builder.js +6 -0
- package/dist/cli/commands/analytics/report/payload-builder.js.map +1 -1
- package/dist/cli/commands/analytics/report/report-generator.d.ts +1 -1
- package/dist/cli/commands/analytics/report/report-generator.js +1 -1
- package/dist/cli/commands/analytics/report/session-report.d.ts +1 -3
- package/dist/cli/commands/analytics/report/session-report.d.ts.map +1 -1
- package/dist/cli/commands/analytics/report/session-report.js +1 -3
- package/dist/cli/commands/analytics/report/session-report.js.map +1 -1
- package/dist/cli/commands/analytics/report/template.html +6 -6
- package/dist/cli/commands/analytics/report/types.d.ts +17 -1
- package/dist/cli/commands/analytics/report/types.d.ts.map +1 -1
- package/dist/cli/commands/analytics/sources/sessions-source.d.ts.map +1 -1
- package/dist/cli/commands/analytics/sources/sessions-source.js +9 -11
- package/dist/cli/commands/analytics/sources/sessions-source.js.map +1 -1
- package/dist/cli/commands/analytics/sources/types.d.ts +0 -2
- package/dist/cli/commands/analytics/sources/types.d.ts.map +1 -1
- package/dist/cli/commands/analytics/types.d.ts +8 -8
- package/dist/cli/commands/analytics/types.d.ts.map +1 -1
- package/dist/cli/commands/assistants/constants.d.ts +4 -0
- package/dist/cli/commands/assistants/constants.d.ts.map +1 -1
- package/dist/cli/commands/assistants/constants.js +4 -0
- package/dist/cli/commands/assistants/constants.js.map +1 -1
- package/dist/cli/commands/assistants/setup/data.d.ts +1 -0
- package/dist/cli/commands/assistants/setup/data.d.ts.map +1 -1
- package/dist/cli/commands/assistants/setup/data.js +55 -10
- package/dist/cli/commands/assistants/setup/data.js.map +1 -1
- package/dist/cli/commands/assistants/setup/helpers.d.ts +1 -1
- package/dist/cli/commands/assistants/setup/helpers.d.ts.map +1 -1
- package/dist/cli/commands/assistants/setup/helpers.js +2 -5
- package/dist/cli/commands/assistants/setup/helpers.js.map +1 -1
- package/dist/cli/commands/assistants/setup/index.d.ts +12 -0
- package/dist/cli/commands/assistants/setup/index.d.ts.map +1 -1
- package/dist/cli/commands/assistants/setup/index.js +148 -20
- package/dist/cli/commands/assistants/setup/index.js.map +1 -1
- package/dist/cli/commands/models.d.ts.map +1 -1
- package/dist/cli/commands/models.js +16 -3
- package/dist/cli/commands/models.js.map +1 -1
- package/dist/cli/commands/profile/display.d.ts +5 -1
- package/dist/cli/commands/profile/display.d.ts.map +1 -1
- package/dist/cli/commands/profile/display.js +5 -1
- package/dist/cli/commands/profile/display.js.map +1 -1
- package/dist/cli/commands/profile/index.d.ts.map +1 -1
- package/dist/cli/commands/profile/index.js +7 -4
- package/dist/cli/commands/profile/index.js.map +1 -1
- package/dist/cli/commands/proxy/connect-orchestrator.d.ts.map +1 -1
- package/dist/cli/commands/proxy/connect-orchestrator.js +3 -4
- package/dist/cli/commands/proxy/connect-orchestrator.js.map +1 -1
- package/dist/cli/commands/proxy/connectors/desktop.d.ts +2 -3
- package/dist/cli/commands/proxy/connectors/desktop.d.ts.map +1 -1
- package/dist/cli/commands/proxy/connectors/desktop.js +9 -25
- package/dist/cli/commands/proxy/connectors/desktop.js.map +1 -1
- package/dist/cli/commands/proxy/connectors/model-name-resolver.d.ts +19 -0
- package/dist/cli/commands/proxy/connectors/model-name-resolver.d.ts.map +1 -0
- package/dist/cli/commands/proxy/connectors/model-name-resolver.js +126 -0
- package/dist/cli/commands/proxy/connectors/model-name-resolver.js.map +1 -0
- package/dist/cli/commands/proxy/connectors/tenant-catalog.d.ts +23 -0
- package/dist/cli/commands/proxy/connectors/tenant-catalog.d.ts.map +1 -0
- package/dist/cli/commands/proxy/connectors/tenant-catalog.js +136 -0
- package/dist/cli/commands/proxy/connectors/tenant-catalog.js.map +1 -0
- package/dist/cli/commands/proxy/connectors/vscode-claude-code.d.ts.map +1 -1
- package/dist/cli/commands/proxy/connectors/vscode-claude-code.js +49 -19
- package/dist/cli/commands/proxy/connectors/vscode-claude-code.js.map +1 -1
- package/dist/cli/commands/proxy/connectors/vscode-models.d.ts +21 -3
- package/dist/cli/commands/proxy/connectors/vscode-models.d.ts.map +1 -1
- package/dist/cli/commands/proxy/connectors/vscode-models.js +86 -28
- package/dist/cli/commands/proxy/connectors/vscode-models.js.map +1 -1
- package/dist/cli/commands/proxy/connectors/vscode.d.ts +3 -2
- package/dist/cli/commands/proxy/connectors/vscode.d.ts.map +1 -1
- package/dist/cli/commands/proxy/connectors/vscode.js +67 -39
- package/dist/cli/commands/proxy/connectors/vscode.js.map +1 -1
- package/dist/cli/commands/shared/headless.d.ts +69 -0
- package/dist/cli/commands/shared/headless.d.ts.map +1 -0
- package/dist/cli/commands/shared/headless.js +83 -0
- package/dist/cli/commands/shared/headless.js.map +1 -0
- package/dist/cli/commands/shared/helpers.d.ts +21 -0
- package/dist/cli/commands/shared/helpers.d.ts.map +1 -1
- package/dist/cli/commands/shared/helpers.js +73 -1
- package/dist/cli/commands/shared/helpers.js.map +1 -1
- package/dist/cli/commands/shared/identifier-resolution.d.ts +23 -0
- package/dist/cli/commands/shared/identifier-resolution.d.ts.map +1 -0
- package/dist/cli/commands/shared/identifier-resolution.js +55 -0
- package/dist/cli/commands/shared/identifier-resolution.js.map +1 -0
- package/dist/cli/commands/skills/setup/data.d.ts +3 -2
- package/dist/cli/commands/skills/setup/data.d.ts.map +1 -1
- package/dist/cli/commands/skills/setup/data.js +75 -13
- package/dist/cli/commands/skills/setup/data.js.map +1 -1
- package/dist/cli/commands/skills/setup/helpers.d.ts +1 -1
- package/dist/cli/commands/skills/setup/helpers.d.ts.map +1 -1
- package/dist/cli/commands/skills/setup/helpers.js +2 -5
- package/dist/cli/commands/skills/setup/helpers.js.map +1 -1
- package/dist/cli/commands/skills/setup/index.d.ts +17 -1
- package/dist/cli/commands/skills/setup/index.d.ts.map +1 -1
- package/dist/cli/commands/skills/setup/index.js +190 -19
- package/dist/cli/commands/skills/setup/index.js.map +1 -1
- package/dist/providers/core/codemie-auth-helpers.d.ts.map +1 -1
- package/dist/providers/core/codemie-auth-helpers.js +6 -1
- package/dist/providers/core/codemie-auth-helpers.js.map +1 -1
- package/dist/providers/core/default-agent-hooks.d.ts.map +1 -1
- package/dist/providers/core/default-agent-hooks.js +9 -0
- package/dist/providers/core/default-agent-hooks.js.map +1 -1
- package/dist/providers/plugins/bedrock/bedrock.template.d.ts.map +1 -1
- package/dist/providers/plugins/bedrock/bedrock.template.js +5 -31
- package/dist/providers/plugins/bedrock/bedrock.template.js.map +1 -1
- package/dist/providers/plugins/sso/proxy/plugins/background-request-normalizer.plugin.d.ts +44 -0
- package/dist/providers/plugins/sso/proxy/plugins/background-request-normalizer.plugin.d.ts.map +1 -0
- package/dist/providers/plugins/sso/proxy/plugins/background-request-normalizer.plugin.js +106 -0
- package/dist/providers/plugins/sso/proxy/plugins/background-request-normalizer.plugin.js.map +1 -0
- package/dist/providers/plugins/sso/proxy/plugins/claude-model-resolver.d.ts +41 -0
- package/dist/providers/plugins/sso/proxy/plugins/claude-model-resolver.d.ts.map +1 -0
- package/dist/providers/plugins/sso/proxy/plugins/claude-model-resolver.js +115 -0
- package/dist/providers/plugins/sso/proxy/plugins/claude-model-resolver.js.map +1 -0
- package/dist/providers/plugins/sso/proxy/plugins/claude-request-normalizer.plugin.d.ts.map +1 -1
- package/dist/providers/plugins/sso/proxy/plugins/claude-request-normalizer.plugin.js +101 -7
- package/dist/providers/plugins/sso/proxy/plugins/claude-request-normalizer.plugin.js.map +1 -1
- package/dist/providers/plugins/sso/proxy/plugins/header-injection.plugin.d.ts +4 -0
- package/dist/providers/plugins/sso/proxy/plugins/header-injection.plugin.d.ts.map +1 -1
- package/dist/providers/plugins/sso/proxy/plugins/header-injection.plugin.js +28 -3
- package/dist/providers/plugins/sso/proxy/plugins/header-injection.plugin.js.map +1 -1
- package/dist/providers/plugins/sso/proxy/plugins/index.d.ts +3 -1
- package/dist/providers/plugins/sso/proxy/plugins/index.d.ts.map +1 -1
- package/dist/providers/plugins/sso/proxy/plugins/index.js +5 -1
- package/dist/providers/plugins/sso/proxy/plugins/index.js.map +1 -1
- package/dist/providers/plugins/sso/proxy/plugins/routing-header-injector.plugin.d.ts +67 -0
- package/dist/providers/plugins/sso/proxy/plugins/routing-header-injector.plugin.d.ts.map +1 -0
- package/dist/providers/plugins/sso/proxy/plugins/routing-header-injector.plugin.js +203 -0
- package/dist/providers/plugins/sso/proxy/plugins/routing-header-injector.plugin.js.map +1 -0
- package/dist/providers/plugins/sso/proxy/proxy-types.d.ts +5 -0
- package/dist/providers/plugins/sso/proxy/proxy-types.d.ts.map +1 -1
- package/dist/providers/plugins/sso/proxy/sso.proxy.d.ts.map +1 -1
- package/dist/providers/plugins/sso/proxy/sso.proxy.js +1 -0
- package/dist/providers/plugins/sso/proxy/sso.proxy.js.map +1 -1
- package/dist/providers/plugins/sso/session/processors/metrics/metrics-aggregator.d.ts.map +1 -1
- package/dist/providers/plugins/sso/session/processors/metrics/metrics-aggregator.js +11 -2
- package/dist/providers/plugins/sso/session/processors/metrics/metrics-aggregator.js.map +1 -1
- package/dist/providers/plugins/sso/session/processors/metrics/metrics-sync-processor.d.ts.map +1 -1
- package/dist/providers/plugins/sso/session/processors/metrics/metrics-sync-processor.js +2 -1
- package/dist/providers/plugins/sso/session/processors/metrics/metrics-sync-processor.js.map +1 -1
- package/dist/providers/plugins/sso/sso.http-client.d.ts +95 -0
- package/dist/providers/plugins/sso/sso.http-client.d.ts.map +1 -1
- package/dist/providers/plugins/sso/sso.http-client.js +79 -0
- package/dist/providers/plugins/sso/sso.http-client.js.map +1 -1
- package/dist/providers/plugins/sso/sso.models.d.ts +7 -0
- package/dist/providers/plugins/sso/sso.models.d.ts.map +1 -1
- package/dist/providers/plugins/sso/sso.models.js +22 -14
- package/dist/providers/plugins/sso/sso.models.js.map +1 -1
- package/dist/telemetry/clients/claude-desktop/claude-desktop.discovery.d.ts +1 -0
- package/dist/telemetry/clients/claude-desktop/claude-desktop.discovery.d.ts.map +1 -1
- package/dist/telemetry/clients/claude-desktop/claude-desktop.discovery.js +30 -6
- package/dist/telemetry/clients/claude-desktop/claude-desktop.discovery.js.map +1 -1
- package/dist/telemetry/clients/claude-desktop/claude-desktop.parser.d.ts.map +1 -1
- package/dist/telemetry/clients/claude-desktop/claude-desktop.parser.js +33 -3
- package/dist/telemetry/clients/claude-desktop/claude-desktop.parser.js.map +1 -1
- package/dist/telemetry/runtime/DesktopRepositoryResolver.d.ts +58 -0
- package/dist/telemetry/runtime/DesktopRepositoryResolver.d.ts.map +1 -0
- package/dist/telemetry/runtime/DesktopRepositoryResolver.js +370 -0
- package/dist/telemetry/runtime/DesktopRepositoryResolver.js.map +1 -0
- package/dist/telemetry/runtime/DesktopTelemetryRuntime.d.ts +1 -0
- package/dist/telemetry/runtime/DesktopTelemetryRuntime.d.ts.map +1 -1
- package/dist/telemetry/runtime/DesktopTelemetryRuntime.js +89 -6
- package/dist/telemetry/runtime/DesktopTelemetryRuntime.js.map +1 -1
- package/dist/telemetry/runtime/types.d.ts +2 -0
- package/dist/telemetry/runtime/types.d.ts.map +1 -1
- package/dist/utils/auth.d.ts +13 -2
- package/dist/utils/auth.d.ts.map +1 -1
- package/dist/utils/auth.js +7 -3
- package/dist/utils/auth.js.map +1 -1
- package/dist/utils/bedrock-pricing.mjs +111 -0
- package/dist/utils/cli-updater.d.ts.map +1 -1
- package/dist/utils/cli-updater.js +32 -7
- package/dist/utils/cli-updater.js.map +1 -1
- package/dist/utils/config.d.ts +21 -0
- package/dist/utils/config.d.ts.map +1 -1
- package/dist/utils/config.js +69 -7
- package/dist/utils/config.js.map +1 -1
- package/dist/utils/credential-crypto.d.ts +51 -0
- package/dist/utils/credential-crypto.d.ts.map +1 -0
- package/dist/utils/credential-crypto.js +96 -0
- package/dist/utils/credential-crypto.js.map +1 -0
- package/dist/utils/errors.d.ts +14 -0
- package/dist/utils/errors.d.ts.map +1 -1
- package/dist/utils/errors.js +25 -0
- package/dist/utils/errors.js.map +1 -1
- package/dist/utils/model-normalizer.d.ts +6 -0
- package/dist/utils/model-normalizer.d.ts.map +1 -1
- package/dist/utils/model-normalizer.js +37 -19
- package/dist/utils/model-normalizer.js.map +1 -1
- package/dist/utils/paths.d.ts +2 -2
- package/dist/utils/paths.d.ts.map +1 -1
- package/dist/utils/paths.js +11 -9
- package/dist/utils/paths.js.map +1 -1
- package/dist/utils/price-resolution.d.ts +42 -0
- package/dist/utils/price-resolution.d.ts.map +1 -0
- package/dist/utils/price-resolution.js +112 -0
- package/dist/utils/price-resolution.js.map +1 -0
- package/dist/utils/pricing.d.ts +65 -6
- package/dist/utils/pricing.d.ts.map +1 -1
- package/dist/utils/pricing.js +91 -117
- package/dist/utils/pricing.js.map +1 -1
- package/dist/utils/pricing.json +201 -20
- package/dist/utils/processes.d.ts +12 -0
- package/dist/utils/processes.d.ts.map +1 -1
- package/dist/utils/processes.js +15 -0
- package/dist/utils/processes.js.map +1 -1
- package/dist/utils/routing-headers.mjs +104 -0
- package/dist/utils/security.d.ts +0 -32
- package/dist/utils/security.d.ts.map +1 -1
- package/dist/utils/security.js +20 -102
- package/dist/utils/security.js.map +1 -1
- package/package.json +5 -2
- package/scripts/bundle-statusline.mjs +37 -0
- package/scripts/copy-plugins.js +19 -2
- package/src/utils/tips.json +9 -9
- package/dist/agents/plugins/claude/plugin/__tests__/statusline.test.ts +0 -323
- package/dist/agents/plugins/claude/plugin/statusline.mjs +0 -282
- package/dist/cli/commands/analytics/exporter.d.ts +0 -20
- package/dist/cli/commands/analytics/exporter.d.ts.map +0 -1
- package/dist/cli/commands/analytics/exporter.js +0 -91
- package/dist/cli/commands/analytics/exporter.js.map +0 -1
|
@@ -2,12 +2,23 @@
|
|
|
2
2
|
* Model name normalization utilities
|
|
3
3
|
* Handles various provider formats (AWS Bedrock, standard names, etc.)
|
|
4
4
|
*/
|
|
5
|
+
/**
|
|
6
|
+
* Vendor path prefixes some proxies/wire logs prepend ahead of the bare model id — `openai.`
|
|
7
|
+
* (dot form) or `openai/` (slash form), the slash-only `azure/`, `vertex_ai/` and `anthropic/`,
|
|
8
|
+
* and the dot-only `moonshotai.` (e.g. `moonshotai.kimi-k2.5`) and `qwen.` (e.g.
|
|
9
|
+
* `qwen.qwen3-coder-480b-a35b-v1`). Matched case-insensitively and stripped in
|
|
10
|
+
* {@link normalizeModelName}, before {@link canonicalizeModelId}'s later dots-to-dashes pass runs
|
|
11
|
+
* — stripping here first is what keeps `moonshotai.kimi-k2.5` resolving to `kimi-k2-5` rather than
|
|
12
|
+
* `moonshotai-kimi-k2-5`.
|
|
13
|
+
*/
|
|
14
|
+
const VENDOR_PREFIX_PATTERN = /^(?:openai[./]|azure\/|vertex_ai\/|anthropic\/|moonshotai\.|qwen\.)/i;
|
|
5
15
|
/**
|
|
6
16
|
* Normalize LLM model names from different provider formats
|
|
7
17
|
*
|
|
8
18
|
* Handles various model name formats:
|
|
9
19
|
* - AWS Bedrock Converse: converse/region.provider.model-v1:0 -> model
|
|
10
20
|
* - AWS Bedrock Direct: region.provider.model-v1:0 -> model
|
|
21
|
+
* - Switchyard Bedrock alias: bedrock/region.provider.model -> model (no version suffix)
|
|
11
22
|
* - Kimi Code: kimi-code/kimi-for-coding -> kimi-for-coding
|
|
12
23
|
* - Standard Claude: claude-sonnet-4-5-20250929 (unchanged)
|
|
13
24
|
* - OpenAI: gpt-4-turbo (unchanged)
|
|
@@ -16,29 +27,29 @@
|
|
|
16
27
|
* Examples:
|
|
17
28
|
* converse/global.anthropic.claude-haiku-4-5-20251001-v1:0 -> claude-haiku-4-5-20251001
|
|
18
29
|
* eu.anthropic.claude-haiku-4-5-20251001-v1:0 -> claude-haiku-4-5-20251001
|
|
30
|
+
* bedrock/us.anthropic.claude-sonnet-5 -> claude-sonnet-5
|
|
31
|
+
* bedrock/converse/us.anthropic.claude-haiku-4-5-20251001-v1:0 -> claude-haiku-4-5-20251001
|
|
19
32
|
* kimi-code/kimi-for-coding -> kimi-for-coding
|
|
33
|
+
* openai.gpt-4o -> gpt-4o
|
|
34
|
+
* azure/gpt-4o -> gpt-4o
|
|
35
|
+
* vertex_ai/gemini-3-pro -> gemini-3-pro
|
|
20
36
|
* claude-sonnet-4-5-20250929 -> claude-sonnet-4-5-20250929
|
|
21
37
|
*/
|
|
22
38
|
export function normalizeModelName(modelName) {
|
|
23
|
-
// Extract model from AWS Bedrock converse
|
|
24
|
-
//
|
|
25
|
-
//
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
//
|
|
33
|
-
//
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
if (modelName.includes('.anthropic.')) {
|
|
38
|
-
const match = modelName.match(/anthropic\.(claude-[a-z0-9-]+)-v\d+:/);
|
|
39
|
-
if (match) {
|
|
40
|
-
return match[1];
|
|
41
|
-
}
|
|
39
|
+
// Extract model from an AWS Bedrock id, with or without a `converse/`/`bedrock/` path
|
|
40
|
+
// prefix — including both stacked together as `bedrock/converse/` (observed on real usage
|
|
41
|
+
// data) — and with or without AWS's own `-v1:0` inference-profile version suffix. The
|
|
42
|
+
// suffix is optional because Switchyard's own Bedrock aliases (e.g.
|
|
43
|
+
// `bedrock/us.anthropic.claude-sonnet-5`, seen on a "capable"-tier routed turn) carry no
|
|
44
|
+
// version at all, unlike a native AWS SDK Bedrock id.
|
|
45
|
+
// Formats:
|
|
46
|
+
// - converse/region.provider.model-v1:0
|
|
47
|
+
// - region.provider.model-v1:0
|
|
48
|
+
// - bedrock/region.provider.model
|
|
49
|
+
// - bedrock/converse/region.provider.model-v1:0
|
|
50
|
+
const bedrockMatch = modelName.match(/^(?:bedrock\/)?(?:converse\/)?[a-z0-9-]+\.anthropic\.(claude-[a-z0-9-]+?)(?:-v\d+:\d+)?$/);
|
|
51
|
+
if (bedrockMatch) {
|
|
52
|
+
return bedrockMatch[1]; // Returns: claude-haiku-4-5-20251001
|
|
42
53
|
}
|
|
43
54
|
// Strip Kimi Code vendor prefix so wire-log model aliases resolve to the pricing table.
|
|
44
55
|
// Kimi emits aliases like "kimi-code/kimi-for-coding"; the canonical pricing key is
|
|
@@ -46,6 +57,13 @@ export function normalizeModelName(modelName) {
|
|
|
46
57
|
if (modelName.startsWith('kimi-code/')) {
|
|
47
58
|
return modelName.slice('kimi-code/'.length);
|
|
48
59
|
}
|
|
60
|
+
// Strip vendor path/proxy prefixes some gateways prepend ahead of the bare model id, so
|
|
61
|
+
// e.g. "openai.gpt-4o" and "azure/gpt-4o" both resolve to the same pricing-table key as a
|
|
62
|
+
// direct "gpt-4o" id.
|
|
63
|
+
const vendorPrefixMatch = modelName.match(VENDOR_PREFIX_PATTERN);
|
|
64
|
+
if (vendorPrefixMatch) {
|
|
65
|
+
return modelName.slice(vendorPrefixMatch[0].length);
|
|
66
|
+
}
|
|
49
67
|
// Return unchanged for standard formats
|
|
50
68
|
return modelName;
|
|
51
69
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model-normalizer.js","sourceRoot":"","sources":["../../src/utils/model-normalizer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH
|
|
1
|
+
{"version":3,"file":"model-normalizer.js","sourceRoot":"","sources":["../../src/utils/model-normalizer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;;GAQG;AACH,MAAM,qBAAqB,GAAG,sEAAsE,CAAC;AAErG;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,UAAU,kBAAkB,CAAC,SAAiB;IAClD,sFAAsF;IACtF,0FAA0F;IAC1F,sFAAsF;IACtF,oEAAoE;IACpE,yFAAyF;IACzF,sDAAsD;IACtD,WAAW;IACX,wCAAwC;IACxC,+BAA+B;IAC/B,kCAAkC;IAClC,gDAAgD;IAChD,MAAM,YAAY,GAAG,SAAS,CAAC,KAAK,CAAC,0FAA0F,CAAC,CAAC;IACjI,IAAI,YAAY,EAAE,CAAC;QACjB,OAAO,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,qCAAqC;IAC/D,CAAC;IAED,wFAAwF;IACxF,oFAAoF;IACpF,qBAAqB;IACrB,IAAI,SAAS,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QACvC,OAAO,SAAS,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;IAC9C,CAAC;IAED,wFAAwF;IACxF,0FAA0F;IAC1F,sBAAsB;IACtB,MAAM,iBAAiB,GAAG,SAAS,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;IACjE,IAAI,iBAAiB,EAAE,CAAC;QACtB,OAAO,SAAS,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IACtD,CAAC;IAED,wCAAwC;IACxC,OAAO,SAAS,CAAC;AACnB,CAAC"}
|
package/dist/utils/paths.d.ts
CHANGED
|
@@ -248,7 +248,7 @@ export declare function getCodemieHome(): string;
|
|
|
248
248
|
export declare function getCodemiePath(...paths: string[]): string;
|
|
249
249
|
/**
|
|
250
250
|
* Extract parent/repo format from a working directory path.
|
|
251
|
-
* Returns '
|
|
251
|
+
* Returns 'Cowork' for sandbox paths used by Claude Desktop sessions (Cowork tab / new task without a folder).
|
|
252
252
|
*
|
|
253
253
|
* @example
|
|
254
254
|
* extractRepository('/Users/john/projects/codemie-code')
|
|
@@ -256,7 +256,7 @@ export declare function getCodemiePath(...paths: string[]): string;
|
|
|
256
256
|
*
|
|
257
257
|
* @example
|
|
258
258
|
* extractRepository('/Users/john/Library/Application Support/Claude-3p/local-agent-mode-sessions/<s>/<u>/local_2d5f3a0f-6a50-4778-ac55-9ffbca0446da/outputs')
|
|
259
|
-
* // Returns: '
|
|
259
|
+
* // Returns: 'Cowork'
|
|
260
260
|
*/
|
|
261
261
|
export declare function extractRepository(workingDirectory: string): string;
|
|
262
262
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../src/utils/paths.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAWH;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEhE;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAGpD;AAED;;;;;;;;;GASG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAGpD;AAcD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,sBAAsB,CAAC,aAAa,GAAE,MAAmB,GAAG,MAAM,CAGjF;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EACnB,iBAAiB,EAAE,MAAM,EAAE,GAC1B,OAAO,CAiBT;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EACnB,aAAa,EAAE,MAAM,GACpB,OAAO,CAUT;AAMD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAIvF;AAaD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAEhD;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAMhF;AAMD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,cAAc,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAE3D;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,cAAc,IAAI,MAAM,CAMvC;AAED;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAAC,GAAG,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,CAEzD;
|
|
1
|
+
{"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../src/utils/paths.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAWH;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEhE;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAGpD;AAED;;;;;;;;;GASG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAGpD;AAcD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,sBAAsB,CAAC,aAAa,GAAE,MAAmB,GAAG,MAAM,CAGjF;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EACnB,iBAAiB,EAAE,MAAM,EAAE,GAC1B,OAAO,CAiBT;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EACnB,aAAa,EAAE,MAAM,GACpB,OAAO,CAUT;AAMD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAIvF;AAaD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAEhD;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAMhF;AAMD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,cAAc,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAE3D;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,cAAc,IAAI,MAAM,CAMvC;AAED;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAAC,GAAG,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,CAEzD;AAYD;;;;;;;;;;;GAWG;AACH,wBAAgB,iBAAiB,CAAC,gBAAgB,EAAE,MAAM,GAAG,MAAM,CAalE;AAMD;;;;;;;;;GASG;AACH,wBAAgB,UAAU,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,CAExD"}
|
package/dist/utils/paths.js
CHANGED
|
@@ -339,15 +339,17 @@ export function getCodemieHome() {
|
|
|
339
339
|
export function getCodemiePath(...paths) {
|
|
340
340
|
return path.join(getCodemieHome(), ...paths);
|
|
341
341
|
}
|
|
342
|
-
// Matches Claude Desktop sandbox session directories.
|
|
343
|
-
//
|
|
344
|
-
//
|
|
345
|
-
//
|
|
346
|
-
//
|
|
347
|
-
|
|
342
|
+
// Matches Claude Desktop sandbox session directories, which carry no user project.
|
|
343
|
+
// Two shapes are recognised:
|
|
344
|
+
// 1. Anything under the sandbox root `local-agent-mode-sessions/`. Desktop has renamed the
|
|
345
|
+
// per-session directory inside it (`local_<full-uuid>/` -> `<short-id>/`), so anchoring on
|
|
346
|
+
// the root keeps this stable across further renames.
|
|
347
|
+
// 2. A legacy `local_<full-uuid>` directory anywhere, for paths recorded without that root.
|
|
348
|
+
// The full UUID shape avoids false positives on user directories named `local_<8hex>`.
|
|
349
|
+
const CLAUDE_DESKTOP_SANDBOX_RE = /\/local-agent-mode-sessions\/|\/local_[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}(?:\/|$)/i;
|
|
348
350
|
/**
|
|
349
351
|
* Extract parent/repo format from a working directory path.
|
|
350
|
-
* Returns '
|
|
352
|
+
* Returns 'Cowork' for sandbox paths used by Claude Desktop sessions (Cowork tab / new task without a folder).
|
|
351
353
|
*
|
|
352
354
|
* @example
|
|
353
355
|
* extractRepository('/Users/john/projects/codemie-code')
|
|
@@ -355,11 +357,11 @@ const CLAUDE_DESKTOP_SANDBOX_RE = /\/local_[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[
|
|
|
355
357
|
*
|
|
356
358
|
* @example
|
|
357
359
|
* extractRepository('/Users/john/Library/Application Support/Claude-3p/local-agent-mode-sessions/<s>/<u>/local_2d5f3a0f-6a50-4778-ac55-9ffbca0446da/outputs')
|
|
358
|
-
* // Returns: '
|
|
360
|
+
* // Returns: 'Cowork'
|
|
359
361
|
*/
|
|
360
362
|
export function extractRepository(workingDirectory) {
|
|
361
363
|
if (CLAUDE_DESKTOP_SANDBOX_RE.test(normalizePathSeparators(workingDirectory))) {
|
|
362
|
-
return '
|
|
364
|
+
return 'Cowork';
|
|
363
365
|
}
|
|
364
366
|
const parts = splitPath(workingDirectory);
|
|
365
367
|
const filtered = parts.filter(p => p.length > 0);
|
package/dist/utils/paths.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/utils/paths.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/utils/paths.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Model-id → pricing-table-key resolution, shared by every consumer that prices a model id:
|
|
3
|
+
* src/utils/pricing.ts (the analytics report's resolvePrice()) and the standalone Claude
|
|
4
|
+
* statusline (src/agents/plugins/claude/plugin/statusline.ts, bundled into one self-contained file
|
|
5
|
+
* by scripts/bundle-statusline.mjs). Keeping one copy is what stops the live statusline cost and
|
|
6
|
+
* the analytics report from disagreeing on the same transcript.
|
|
7
|
+
*
|
|
8
|
+
* Deliberately free of I/O and of any import beyond model-normalizer.ts (itself dependency-free),
|
|
9
|
+
* so the statusline bundle stays small and never drags in fs/config/keytar-bearing modules. It
|
|
10
|
+
* knows nothing about the shape of a price row — callers pass a key lookup over their own table.
|
|
11
|
+
*/
|
|
12
|
+
/** How an observed model id was matched to a table key. */
|
|
13
|
+
export type PriceMatch = 'exact' | 'snapshot' | 'reordered';
|
|
14
|
+
/** A table key an observed id resolved to, the value found under it, and how it matched. */
|
|
15
|
+
export interface PriceKeyHit<T> {
|
|
16
|
+
key: string;
|
|
17
|
+
match: PriceMatch;
|
|
18
|
+
value: T;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* The table-key form of a raw pricing-data key: lowercased, dots turned to dashes, so `GLM-4.7`
|
|
22
|
+
* and `glm-4-7` land on the same entry. Both sides of a lookup must be folded the same way —
|
|
23
|
+
* observed ids go through {@link canonicalizeModelId}, which ends in this same folding.
|
|
24
|
+
*/
|
|
25
|
+
export declare function priceTableKey(rawKey: string): string;
|
|
26
|
+
/**
|
|
27
|
+
* Canonicalizes an observed model id into the form used as a pricing-table key. Extends
|
|
28
|
+
* {@link normalizeModelName} (which strips Bedrock/Kimi/vendor-path prefixes) with:
|
|
29
|
+
* 1. Lowercasing, dots turned to dashes, and `@` turned to `-` (so Vertex's `claude-x@20260205`
|
|
30
|
+
* folds to the same shape as a dated id).
|
|
31
|
+
* 2. Stripping a trailing `-vertex` suffix.
|
|
32
|
+
* Used by the pricing resolver, the statusline and cost reconciliation, so every consumer treats
|
|
33
|
+
* the same observed id the same way.
|
|
34
|
+
*/
|
|
35
|
+
export declare function canonicalizeModelId(model: string): string;
|
|
36
|
+
/**
|
|
37
|
+
* Resolves an observed model id against a pricing table through `lookup`, trying the keys of
|
|
38
|
+
* {@link priceKeyCandidates} in order and returning the first hit. Returns null when nothing
|
|
39
|
+
* matches — the model is unpriced, never a guessed price.
|
|
40
|
+
*/
|
|
41
|
+
export declare function resolvePriceKey<T>(model: string, lookup: (key: string) => T | undefined): PriceKeyHit<T> | null;
|
|
42
|
+
//# sourceMappingURL=price-resolution.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"price-resolution.d.ts","sourceRoot":"","sources":["../../src/utils/price-resolution.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAsBH,2DAA2D;AAC3D,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,UAAU,GAAG,WAAW,CAAC;AAE5D,4FAA4F;AAC5F,MAAM,WAAW,WAAW,CAAC,CAAC;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,UAAU,CAAC;IAClB,KAAK,EAAE,CAAC,CAAC;CACV;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAEpD;AAED;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAIzD;AAoDD;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,CAAC,GAAG,SAAS,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,IAAI,CAQ/G"}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Model-id → pricing-table-key resolution, shared by every consumer that prices a model id:
|
|
3
|
+
* src/utils/pricing.ts (the analytics report's resolvePrice()) and the standalone Claude
|
|
4
|
+
* statusline (src/agents/plugins/claude/plugin/statusline.ts, bundled into one self-contained file
|
|
5
|
+
* by scripts/bundle-statusline.mjs). Keeping one copy is what stops the live statusline cost and
|
|
6
|
+
* the analytics report from disagreeing on the same transcript.
|
|
7
|
+
*
|
|
8
|
+
* Deliberately free of I/O and of any import beyond model-normalizer.ts (itself dependency-free),
|
|
9
|
+
* so the statusline bundle stays small and never drags in fs/config/keytar-bearing modules. It
|
|
10
|
+
* knows nothing about the shape of a price row — callers pass a key lookup over their own table.
|
|
11
|
+
*/
|
|
12
|
+
import { normalizeModelName } from './model-normalizer.js';
|
|
13
|
+
/**
|
|
14
|
+
* A trailing snapshot/version suffix stripped once during lookup (never during canonicalization):
|
|
15
|
+
* an 8-digit date (`-20260205`), a dashed date (`-2026-02-05`), or the `-latest`/`-preview` tags.
|
|
16
|
+
* Applied at most once, so a key that is itself dated (`gpt-4o-2024-05-13`) is tried as an exact
|
|
17
|
+
* match first and never has a second suffix stripped from it.
|
|
18
|
+
*/
|
|
19
|
+
const SNAPSHOT_SUFFIX_PATTERN = /-(?:\d{8}|\d{4}-\d{2}-\d{2}|latest|preview)$/;
|
|
20
|
+
/**
|
|
21
|
+
* Matches a Claude id given in version-first order — `claude-<ver>-<family>[<rest>]`, where `ver`
|
|
22
|
+
* is one or more dash-separated numeric segments and `family` is `opus`/`sonnet`/`haiku` — so it
|
|
23
|
+
* can be reordered to the family-first form (`claude-<family>-<ver>[<rest>]`) the pricing table
|
|
24
|
+
* keys newer Claude generations under (e.g. `claude-sonnet-4-5`, `claude-opus-4-8`; see
|
|
25
|
+
* pricing.json's own rows). Never applied to a key that is already family-first, since that
|
|
26
|
+
* doesn't match this pattern in the first place.
|
|
27
|
+
*/
|
|
28
|
+
const CLAUDE_VERSION_FIRST_PATTERN = /^claude-(\d+(?:-\d+)*)-(opus|sonnet|haiku)(-.+)?$/;
|
|
29
|
+
/**
|
|
30
|
+
* The table-key form of a raw pricing-data key: lowercased, dots turned to dashes, so `GLM-4.7`
|
|
31
|
+
* and `glm-4-7` land on the same entry. Both sides of a lookup must be folded the same way —
|
|
32
|
+
* observed ids go through {@link canonicalizeModelId}, which ends in this same folding.
|
|
33
|
+
*/
|
|
34
|
+
export function priceTableKey(rawKey) {
|
|
35
|
+
return rawKey.toLowerCase().replace(/\./g, '-');
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Canonicalizes an observed model id into the form used as a pricing-table key. Extends
|
|
39
|
+
* {@link normalizeModelName} (which strips Bedrock/Kimi/vendor-path prefixes) with:
|
|
40
|
+
* 1. Lowercasing, dots turned to dashes, and `@` turned to `-` (so Vertex's `claude-x@20260205`
|
|
41
|
+
* folds to the same shape as a dated id).
|
|
42
|
+
* 2. Stripping a trailing `-vertex` suffix.
|
|
43
|
+
* Used by the pricing resolver, the statusline and cost reconciliation, so every consumer treats
|
|
44
|
+
* the same observed id the same way.
|
|
45
|
+
*/
|
|
46
|
+
export function canonicalizeModelId(model) {
|
|
47
|
+
return priceTableKey(normalizeModelName(model))
|
|
48
|
+
.replace(/@/g, '-')
|
|
49
|
+
.replace(/-vertex$/, '');
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Reorders a version-first Claude id (`claude-4-5-sonnet`) to the family-first form
|
|
53
|
+
* (`claude-sonnet-4-5`) the table keys such rows under, preserving any trailing suffix (a
|
|
54
|
+
* snapshot date, `-latest`, ...). Returns null when `id` isn't in that shape.
|
|
55
|
+
*/
|
|
56
|
+
function reorderClaudeVersionFamily(id) {
|
|
57
|
+
const match = id.match(CLAUDE_VERSION_FIRST_PATTERN);
|
|
58
|
+
if (!match) {
|
|
59
|
+
return null;
|
|
60
|
+
}
|
|
61
|
+
const [, version, family, rest = ''] = match;
|
|
62
|
+
return `claude-${family}-${version}${rest}`;
|
|
63
|
+
}
|
|
64
|
+
/** `key` with one trailing snapshot suffix stripped, or null when it carries none. */
|
|
65
|
+
function withoutSnapshot(key) {
|
|
66
|
+
const stripped = key.replace(SNAPSHOT_SUFFIX_PATTERN, '');
|
|
67
|
+
return stripped === key ? null : stripped;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* The ordered table keys tried for an observed id, against its {@link canonicalizeModelId} form:
|
|
71
|
+
* 1. Exact match — keeps distinct dated rows (e.g. `gpt-4o-2024-05-13`) authoritative.
|
|
72
|
+
* 2. Exact match after stripping one trailing snapshot suffix — e.g. `claude-opus-4-6-20260205`
|
|
73
|
+
* resolves to the `claude-opus-4-6` row.
|
|
74
|
+
* 3. A version-first Claude id (`claude-4-5-sonnet`) reordered to the table's family-first form
|
|
75
|
+
* (`claude-sonnet-4-5`), tried exact and then with a trailing snapshot suffix stripped — only
|
|
76
|
+
* once steps 1-2 have already failed on the as-is id. That ordering is what keeps every
|
|
77
|
+
* pre-existing version-first key (`claude-3-5-sonnet`, `claude-3-7-sonnet-20250219`, ...)
|
|
78
|
+
* resolving unchanged: those rows match as-is at step 1 and this fallback is never reached.
|
|
79
|
+
* There is no segment/family match and no same-tier fallback.
|
|
80
|
+
*/
|
|
81
|
+
function priceKeyCandidates(model) {
|
|
82
|
+
const canonical = canonicalizeModelId(model);
|
|
83
|
+
const candidates = [{ key: canonical, match: 'exact' }];
|
|
84
|
+
const snapshot = withoutSnapshot(canonical);
|
|
85
|
+
if (snapshot) {
|
|
86
|
+
candidates.push({ key: snapshot, match: 'snapshot' });
|
|
87
|
+
}
|
|
88
|
+
const reordered = reorderClaudeVersionFamily(canonical);
|
|
89
|
+
if (reordered) {
|
|
90
|
+
candidates.push({ key: reordered, match: 'reordered' });
|
|
91
|
+
const reorderedSnapshot = withoutSnapshot(reordered);
|
|
92
|
+
if (reorderedSnapshot) {
|
|
93
|
+
candidates.push({ key: reorderedSnapshot, match: 'reordered' });
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
return candidates;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Resolves an observed model id against a pricing table through `lookup`, trying the keys of
|
|
100
|
+
* {@link priceKeyCandidates} in order and returning the first hit. Returns null when nothing
|
|
101
|
+
* matches — the model is unpriced, never a guessed price.
|
|
102
|
+
*/
|
|
103
|
+
export function resolvePriceKey(model, lookup) {
|
|
104
|
+
for (const { key, match } of priceKeyCandidates(model)) {
|
|
105
|
+
const value = key ? lookup(key) : undefined;
|
|
106
|
+
if (value !== undefined) {
|
|
107
|
+
return { key, match, value };
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
return null;
|
|
111
|
+
}
|
|
112
|
+
//# sourceMappingURL=price-resolution.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"price-resolution.js","sourceRoot":"","sources":["../../src/utils/price-resolution.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/pricing.d.ts
CHANGED
|
@@ -5,6 +5,8 @@
|
|
|
5
5
|
* re-copy that file. Prices are USD per 1,000,000 tokens. The source uses
|
|
6
6
|
* `cacheWrite`; we expose it as `cacheCreation` to match Claude's terminology.
|
|
7
7
|
*/
|
|
8
|
+
import { type PriceMatch } from './price-resolution.js';
|
|
9
|
+
export { canonicalizeModelId } from './price-resolution.js';
|
|
8
10
|
/** USD per 1,000,000 tokens. */
|
|
9
11
|
export interface ModelPrice {
|
|
10
12
|
input: number;
|
|
@@ -12,14 +14,71 @@ export interface ModelPrice {
|
|
|
12
14
|
cacheRead: number;
|
|
13
15
|
cacheCreation: number;
|
|
14
16
|
cacheWrite1h?: number;
|
|
17
|
+
/**
|
|
18
|
+
* Amazon Bedrock's premium for a regional/multi-region endpoint over this model's global one
|
|
19
|
+
* — present only on rows where Anthropic documents the two-endpoint-type Bedrock pricing
|
|
20
|
+
* structure (Sonnet 4.5+, Haiku 4.5+, Opus 4.5+ and their dated snapshots). Absent (no premium)
|
|
21
|
+
* on every older row, since Anthropic does not document this structure applying there. See
|
|
22
|
+
* isBedrockRegionalPremium()'s own doc comment (bedrock-pricing.mjs) for the source.
|
|
23
|
+
*/
|
|
24
|
+
bedrockRegionalMultiplier?: number;
|
|
25
|
+
/**
|
|
26
|
+
* True when this row is not a directly published rate but an estimate (e.g. a tier-price
|
|
27
|
+
* carried forward for a model generation with no confirmed pricing yet). Every row's
|
|
28
|
+
* provenance should be cited in `pricing.json`'s `_meta.sources`/`note`; this flag is what
|
|
29
|
+
* callers use to surface "estimated" alongside the resolved price rather than presenting it
|
|
30
|
+
* as authoritative.
|
|
31
|
+
*/
|
|
32
|
+
estimated?: boolean;
|
|
15
33
|
}
|
|
34
|
+
export interface RawPrice {
|
|
35
|
+
input?: number;
|
|
36
|
+
output?: number;
|
|
37
|
+
cacheRead?: number;
|
|
38
|
+
cacheWrite?: number;
|
|
39
|
+
cacheWrite1h?: number;
|
|
40
|
+
bedrockRegionalMultiplier?: number;
|
|
41
|
+
estimated?: boolean;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Builds the rate card from a bag of raw rows (a parsed `pricing.json`, an injected fixture for
|
|
45
|
+
* tests, or any merge of the two): every key is lowercased and dots are turned to dashes, so
|
|
46
|
+
* `GLM-4.7` and `glm-4-7` land on the same table entry. When two distinct raw keys normalize to
|
|
47
|
+
* the same table key, they must carry identical prices — that is the only way the pricing data
|
|
48
|
+
* itself can declare two spellings of the same model (e.g. `gemini-3.7-flash` / `gemini-3-7-flash`)
|
|
49
|
+
* — otherwise the table is ambiguous and this throws rather than silently picking one.
|
|
50
|
+
*/
|
|
51
|
+
export declare function buildPriceTable(rows: Record<string, RawPrice>): Record<string, ModelPrice>;
|
|
52
|
+
/**
|
|
53
|
+
* The fully built rate card: the vendored table with {@link CODEMIE_PRICES} merged over it and every
|
|
54
|
+
* key lowercased. Exported so consumers that cannot import this module — the standalone Claude
|
|
55
|
+
* statusline, which runs as a detached `node <path>` process — can be handed the same rates rather
|
|
56
|
+
* than a copy of the raw `pricing.json`, which carries none of the CodeMie-only rows.
|
|
57
|
+
*/
|
|
58
|
+
export declare function priceTable(): Record<string, ModelPrice>;
|
|
59
|
+
/** How {@link resolvePrice} matched an observed model id to a table row. */
|
|
60
|
+
export interface PriceResolution {
|
|
61
|
+
price: ModelPrice;
|
|
62
|
+
key: string;
|
|
63
|
+
match: PriceMatch;
|
|
64
|
+
estimated: boolean;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Resolves pricing for a model, reporting how it was matched. Returns null when no entry
|
|
68
|
+
* matches (the caller marks the model `unpriced` — never a silent $0, and never a guessed
|
|
69
|
+
* family/tier price). The lookup order (exact, then one snapshot suffix stripped, then a
|
|
70
|
+
* version-first Claude id reordered to family-first) lives in {@link resolvePriceKey}, shared
|
|
71
|
+
* with the Claude statusline so the two can never price the same id differently.
|
|
72
|
+
*
|
|
73
|
+
* `model` is also checked, in its original unnormalized form, for a Bedrock region qualifier
|
|
74
|
+
* (see {@link applyBedrockRegionalPremium}) — pass the raw backend id straight through rather
|
|
75
|
+
* than pre-normalizing it, or the premium this exists to detect is invisible by the time it gets
|
|
76
|
+
* here.
|
|
77
|
+
*/
|
|
78
|
+
export declare function resolvePrice(model: string): PriceResolution | null;
|
|
16
79
|
/**
|
|
17
|
-
* Look up pricing for a model. Returns null when no entry matches
|
|
18
|
-
*
|
|
19
|
-
* 1. Exact (normalized) match — authoritative.
|
|
20
|
-
* 2. Longest key aligned to a segment boundary — a deliberate family fallback, logged as inexact.
|
|
21
|
-
* 3. Latest same-tier Claude price — for a model newer than every table entry, logged as inexact.
|
|
22
|
-
* Dots are folded to dashes first because the table keys use dashes (e.g. `gpt-4-1`, not `gpt-4.1`).
|
|
80
|
+
* Look up pricing for a model. Returns null when no entry matches. Thin wrapper over
|
|
81
|
+
* {@link resolvePrice} for callers that only need the price, not its provenance.
|
|
23
82
|
*/
|
|
24
83
|
export declare function lookupPrice(model: string): ModelPrice | null;
|
|
25
84
|
//# sourceMappingURL=pricing.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pricing.d.ts","sourceRoot":"","sources":["../../src/utils/pricing.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;
|
|
1
|
+
{"version":3,"file":"pricing.d.ts","sourceRoot":"","sources":["../../src/utils/pricing.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAOH,OAAO,EAAkC,KAAK,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAExF,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5D,gCAAgC;AAChC,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;;;OAMG;IACH,yBAAyB,CAAC,EAAE,MAAM,CAAC;IACnC;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,QAAQ;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,yBAAyB,CAAC,EAAE,MAAM,CAAC;IACnC,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AA4CD;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAiB1F;AAWD;;;;;GAKG;AACH,wBAAgB,UAAU,IAAI,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAEvD;AAED,4EAA4E;AAC5E,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,UAAU,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,UAAU,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;CACpB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI,CAYlE;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CAE5D"}
|