@codemieai/code 0.15.3 → 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.map +1 -1
- package/dist/agents/plugins/claude/claude.plugin.js +147 -45
- package/dist/agents/plugins/claude/claude.plugin.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.js +1 -1
- package/dist/agents/plugins/opencode/opencode-dynamic-models.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/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/proxy/connect-orchestrator.js +1 -1
- package/dist/cli/commands/proxy/connect-orchestrator.js.map +1 -1
- package/dist/cli/commands/proxy/connectors/tenant-catalog.d.ts +16 -4
- package/dist/cli/commands/proxy/connectors/tenant-catalog.d.ts.map +1 -1
- package/dist/cli/commands/proxy/connectors/tenant-catalog.js +42 -14
- package/dist/cli/commands/proxy/connectors/tenant-catalog.js.map +1 -1
- package/dist/cli/commands/proxy/connectors/vscode-models.d.ts +18 -0
- package/dist/cli/commands/proxy/connectors/vscode-models.d.ts.map +1 -1
- package/dist/cli/commands/proxy/connectors/vscode-models.js +58 -0
- package/dist/cli/commands/proxy/connectors/vscode-models.js.map +1 -1
- package/dist/cli/commands/proxy/connectors/vscode.d.ts +2 -2
- package/dist/cli/commands/proxy/connectors/vscode.d.ts.map +1 -1
- package/dist/cli/commands/proxy/connectors/vscode.js +27 -38
- package/dist/cli/commands/proxy/connectors/vscode.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/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/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/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/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/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/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/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 +4 -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
|
@@ -52,6 +52,13 @@ export declare class SSOModelProxy extends BaseModelProxy {
|
|
|
52
52
|
fetchIntegrations(codeMieUrl: string, projectName?: string): Promise<CodeMieIntegration[]>;
|
|
53
53
|
/**
|
|
54
54
|
* Fetch models from CodeMie API
|
|
55
|
+
*
|
|
56
|
+
* Uses fetchCodeMieLlmModels (the full descriptor, not the ID-only fetchCodeMieModels) so
|
|
57
|
+
* router entries surface their `is_router`/`litellm_router.is_router` flag as
|
|
58
|
+
* `metadata.isRouter` — the same signal claude.models.ts's `isRouterCatalogEntry` uses to gate
|
|
59
|
+
* the statusline's routing widget. Without this, `codemie models list` silently dropped every
|
|
60
|
+
* router alias a user could actually route through (Switchyard virtual routers and LiteLLM
|
|
61
|
+
* auto-router declarations alike), since fetchCodeMieModels never carried that flag through.
|
|
55
62
|
*/
|
|
56
63
|
private fetchModelsFromAPI;
|
|
57
64
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sso.models.d.ts","sourceRoot":"","sources":["../../../../src/providers/plugins/sso/sso.models.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,KAAK,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzE,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AAOnE;;;;GAIG;AACH,qBAAa,aAAc,SAAQ,cAAc;IAC/C,OAAO,CAAC,GAAG,CAAa;gBAEZ,OAAO,CAAC,EAAE,MAAM;IAM5B;;OAEG;IACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAInC;;OAEG;IACH,oBAAoB,IAAI,OAAO;IAI/B;;;OAGG;IACH,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAI7B;;;;;;OAMG;IACG,UAAU,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;IAcxC;;;;OAIG;IACG,WAAW,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IA0BrE;;;;;;OAMG;IACG,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC;IA+ChG
|
|
1
|
+
{"version":3,"file":"sso.models.d.ts","sourceRoot":"","sources":["../../../../src/providers/plugins/sso/sso.models.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,KAAK,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzE,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AAOnE;;;;GAIG;AACH,qBAAa,aAAc,SAAQ,cAAc;IAC/C,OAAO,CAAC,GAAG,CAAa;gBAEZ,OAAO,CAAC,EAAE,MAAM;IAM5B;;OAEG;IACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAInC;;OAEG;IACH,oBAAoB,IAAI,OAAO;IAI/B;;;OAGG;IACH,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAI7B;;;;;;OAMG;IACG,UAAU,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;IAcxC;;;;OAIG;IACG,WAAW,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IA0BrE;;;;;;OAMG;IACG,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC;IA+ChG;;;;;;;;;OASG;YACW,kBAAkB;CAyBjC"}
|
|
@@ -8,7 +8,7 @@ import { BaseModelProxy } from '../../core/base/BaseModelProxy.js';
|
|
|
8
8
|
import { ProviderRegistry } from '../../core/registry.js';
|
|
9
9
|
import { SSOTemplate } from './sso.template.js';
|
|
10
10
|
import { CodeMieSSO } from './sso.auth.js';
|
|
11
|
-
import {
|
|
11
|
+
import { fetchCodeMieLlmModels, fetchCodeMieIntegrations, CODEMIE_ENDPOINTS } from './sso.http-client.js';
|
|
12
12
|
import { logger } from '../../../utils/logger.js';
|
|
13
13
|
/**
|
|
14
14
|
* SSO Model Proxy
|
|
@@ -132,24 +132,32 @@ export class SSOModelProxy extends BaseModelProxy {
|
|
|
132
132
|
}
|
|
133
133
|
/**
|
|
134
134
|
* Fetch models from CodeMie API
|
|
135
|
+
*
|
|
136
|
+
* Uses fetchCodeMieLlmModels (the full descriptor, not the ID-only fetchCodeMieModels) so
|
|
137
|
+
* router entries surface their `is_router`/`litellm_router.is_router` flag as
|
|
138
|
+
* `metadata.isRouter` — the same signal claude.models.ts's `isRouterCatalogEntry` uses to gate
|
|
139
|
+
* the statusline's routing widget. Without this, `codemie models list` silently dropped every
|
|
140
|
+
* router alias a user could actually route through (Switchyard virtual routers and LiteLLM
|
|
141
|
+
* auto-router declarations alike), since fetchCodeMieModels never carried that flag through.
|
|
135
142
|
*/
|
|
136
143
|
async fetchModelsFromAPI(apiUrl, cookies) {
|
|
137
144
|
try {
|
|
138
|
-
|
|
139
|
-
const
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
const models = modelIds.map(id => {
|
|
145
|
+
const llmModels = await fetchCodeMieLlmModels(apiUrl, cookies);
|
|
146
|
+
const models = [];
|
|
147
|
+
for (const model of llmModels) {
|
|
148
|
+
const id = model.deployment_name || model.base_name || model.label;
|
|
149
|
+
if (!id)
|
|
150
|
+
continue;
|
|
151
|
+
const isRouter = model.is_router === true || model.litellm_router?.is_router === true;
|
|
146
152
|
const isRecommended = SSOTemplate.recommendedModels.includes(id);
|
|
147
|
-
|
|
153
|
+
models.push({
|
|
148
154
|
id,
|
|
149
|
-
name:
|
|
150
|
-
popular: isRecommended // Adds ⭐ to recommended models
|
|
151
|
-
|
|
152
|
-
|
|
155
|
+
name: model.label || id,
|
|
156
|
+
popular: isRecommended, // Adds ⭐ to recommended models
|
|
157
|
+
...(isRouter && { metadata: { isRouter: true } }),
|
|
158
|
+
});
|
|
159
|
+
}
|
|
160
|
+
models.sort((a, b) => a.id.localeCompare(b.id));
|
|
153
161
|
return models;
|
|
154
162
|
}
|
|
155
163
|
catch (error) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sso.models.js","sourceRoot":"","sources":["../../../../src/providers/plugins/sso/sso.models.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"sso.models.js","sourceRoot":"","sources":["../../../../src/providers/plugins/sso/sso.models.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
// Bedrock regional-endpoint pricing.
|
|
2
|
+
//
|
|
3
|
+
// Amazon Bedrock bills a regional or multi-region (cross-region inference profile) endpoint at a
|
|
4
|
+
// premium over its global one, for the models Anthropic documents this two-endpoint-type pricing
|
|
5
|
+
// structure for — see
|
|
6
|
+
// https://platform.claude.com/docs/en/build-with-claude/claude-in-amazon-bedrock#regions. This
|
|
7
|
+
// module resolves a raw backend model id to its Bedrock region and applies that premium to a
|
|
8
|
+
// price/rate object; it knows nothing about routing decisions (Switchyard/LiteLLM tier, classifier
|
|
9
|
+
// cost — see the separate routing-headers.mjs) and nothing about any particular agent. Any agent
|
|
10
|
+
// whose requests can land on Bedrock through this proxy (Claude, but potentially others too) needs
|
|
11
|
+
// the same detection, so it lives here rather than under a specific agent's plugin directory.
|
|
12
|
+
//
|
|
13
|
+
// Deliberately plain JS with zero imports, living under src/utils/ rather than beside a specific
|
|
14
|
+
// agent's plugin: this file is deployed as-is to two different runtimes —
|
|
15
|
+
// - Any agent's standalone statusline (e.g. the Claude one, plugin/statusline.mjs — no project
|
|
16
|
+
// imports, `node <path>` after the CLI process exits) imports it by relative path; its own
|
|
17
|
+
// installer deploys this file as a flat sibling (see statusline-installer.ts).
|
|
18
|
+
// - src/utils/pricing.ts (the analytics/report pricing table) and
|
|
19
|
+
// src/cli/commands/analytics/cost/usage-readers.ts import it as a normal TS import — see the
|
|
20
|
+
// companion bedrock-pricing.d.mts for its types, since this file itself is plain JS, not
|
|
21
|
+
// compiled.
|
|
22
|
+
// Because tsc does not compile `.mjs`, scripts/copy-plugins.js has an explicit copy entry for it
|
|
23
|
+
// (same pattern as pricing.json).
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* The literal backend model LiteLLM dispatched to, e.g. `bedrock/converse/eu.anthropic.claude-
|
|
27
|
+
* haiku-4-5-20251001-v1:0` or `bedrock/us.anthropic.claude-sonnet-5`. Present on every LiteLLM-
|
|
28
|
+
* proxied response regardless of whether a routing decision was made at all — unlike
|
|
29
|
+
* `parseRoutingHeaders()` (routing-headers.mjs), which returns `null` for an unrouted turn. Used
|
|
30
|
+
* for Bedrock regional-endpoint pricing detection (see {@link isBedrockRegionalPremium}) because
|
|
31
|
+
* the cleaned `routedModel`/`requestedModel` fields, and sometimes even the response's own
|
|
32
|
+
* `model` field (observed on a "capable"-tier Switchyard turn), have the region qualifier
|
|
33
|
+
* already stripped.
|
|
34
|
+
*
|
|
35
|
+
* @param {object | null | undefined} message
|
|
36
|
+
* @returns {string | null}
|
|
37
|
+
*/
|
|
38
|
+
export function parseBackendModelName(message) {
|
|
39
|
+
return message?.['x-litellm-model-name'] ?? null;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
// Matches the Bedrock region/endpoint qualifier that sits directly before `.anthropic.` in a
|
|
43
|
+
// fully-qualified backend model id — `global` (the no-premium default), a geography code (`us`,
|
|
44
|
+
// `eu`, `jp`, `au` — Bedrock's cross-region inference profiles), or a literal AWS region
|
|
45
|
+
// (`us-east-2`). Matches with or without a leading `bedrock/`/`converse/` path segment.
|
|
46
|
+
const BEDROCK_REGION_PATTERN = /(?:^|\/)([a-z0-9-]+)\.anthropic\./i;
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* The Bedrock region/endpoint qualifier embedded in a fully-qualified backend model id, or
|
|
50
|
+
* `null` when the id carries none (a direct Anthropic API id, or a non-Bedrock provider).
|
|
51
|
+
*
|
|
52
|
+
* @param {string | null | undefined} rawModelId
|
|
53
|
+
* @returns {string | null}
|
|
54
|
+
*/
|
|
55
|
+
export function bedrockEndpointRegion(rawModelId) {
|
|
56
|
+
if (!rawModelId) return null;
|
|
57
|
+
const match = BEDROCK_REGION_PATTERN.exec(String(rawModelId).toLowerCase());
|
|
58
|
+
return match ? match[1] : null;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* True when `rawModelId` names a Bedrock regional or multi-region (cross-region inference
|
|
63
|
+
* profile) endpoint rather than the global one. `global`, and any id with no Bedrock region
|
|
64
|
+
* qualifier at all, are never regional.
|
|
65
|
+
*
|
|
66
|
+
* Says nothing about whether a premium actually applies, or how big it is — that is
|
|
67
|
+
* model-specific (Anthropic documents it only for Sonnet 4.5+/Haiku 4.5+/Opus 4.5+) and lives as
|
|
68
|
+
* a `bedrockRegionalMultiplier` field on the model's own pricing row; see
|
|
69
|
+
* {@link applyBedrockRegionalPremium}.
|
|
70
|
+
*
|
|
71
|
+
* @param {string | null | undefined} rawModelId
|
|
72
|
+
* @returns {boolean}
|
|
73
|
+
*/
|
|
74
|
+
export function isBedrockRegionalPremium(rawModelId) {
|
|
75
|
+
const region = bedrockEndpointRegion(rawModelId);
|
|
76
|
+
return region != null && region !== 'global';
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* Applies a price/rate object's own `bedrockRegionalMultiplier` when `rawModelId` names a
|
|
81
|
+
* regional/multi-region Bedrock endpoint (see {@link isBedrockRegionalPremium}) — a no-op
|
|
82
|
+
* (returns `price` itself) otherwise, and when `price` carries no `bedrockRegionalMultiplier` at
|
|
83
|
+
* all (a pre-4.5 model, which Anthropic does not document this pricing structure for). Confirmed
|
|
84
|
+
* against a real LiteLLM billing breakdown: every priced component on a `us`-profile Sonnet 5
|
|
85
|
+
* turn, and separately on `eu`- and `jp`-profile Haiku 4.5 turns in the same session, matched
|
|
86
|
+
* exactly ×1.1 of the global rate, while a `global`-routed turn in the same session matched
|
|
87
|
+
* ×1.0 with no premium.
|
|
88
|
+
*
|
|
89
|
+
* Shared by both callers — pricing.ts's `ModelPrice` (`cacheCreation`) and statusline.mjs's
|
|
90
|
+
* deployed rate card (`cacheCreation`, or the raw `cacheWrite` spelling from an older install) —
|
|
91
|
+
* so multiplies whichever cache-write field is actually present rather than assuming one shape.
|
|
92
|
+
*
|
|
93
|
+
* @param {object | null | undefined} price
|
|
94
|
+
* @param {string | null | undefined} rawModelId
|
|
95
|
+
* @returns {object | null | undefined}
|
|
96
|
+
*/
|
|
97
|
+
export function applyBedrockRegionalPremium(price, rawModelId) {
|
|
98
|
+
if (price == null || price.bedrockRegionalMultiplier == null || !isBedrockRegionalPremium(rawModelId)) {
|
|
99
|
+
return price;
|
|
100
|
+
}
|
|
101
|
+
const multiplier = price.bedrockRegionalMultiplier;
|
|
102
|
+
return {
|
|
103
|
+
...price,
|
|
104
|
+
...(price.input != null && { input: price.input * multiplier }),
|
|
105
|
+
...(price.output != null && { output: price.output * multiplier }),
|
|
106
|
+
...(price.cacheRead != null && { cacheRead: price.cacheRead * multiplier }),
|
|
107
|
+
...(price.cacheCreation != null && { cacheCreation: price.cacheCreation * multiplier }),
|
|
108
|
+
...(price.cacheWrite != null && { cacheWrite: price.cacheWrite * multiplier }),
|
|
109
|
+
...(price.cacheWrite1h != null && { cacheWrite1h: price.cacheWrite1h * multiplier }),
|
|
110
|
+
};
|
|
111
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli-updater.d.ts","sourceRoot":"","sources":["../../src/utils/cli-updater.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;
|
|
1
|
+
{"version":3,"file":"cli-updater.d.ts","sourceRoot":"","sources":["../../src/utils/cli-updater.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AA2BH;;GAEG;AACH,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAcnE;AA0FD;;;;;GAKG;AACH,wBAAgB,mBAAmB,IAAI,OAAO,CAE7C;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,0BAA0B;IAC1B,cAAc,EAAE,MAAM,CAAC;IACvB,wCAAwC;IACxC,aAAa,EAAE,MAAM,CAAC;IACtB,+BAA+B;IAC/B,SAAS,EAAE,OAAO,CAAC;CACpB;AAED;;;;;GAKG;AACH,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC,CAyC9E;AAED;;;;;GAKG;AACH,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,OAAO,CAAC,CAmCvF;AAED;;;;;GAKG;AACH,wBAAsB,SAAS,CAAC,aAAa,EAAE,MAAM,EAAE,MAAM,UAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CA4CpF;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,uBAAuB,IAAI,OAAO,CAAC,IAAI,CAAC,CAkF7D"}
|
|
@@ -24,6 +24,9 @@ const CLI_PACKAGE_NAME = '@codemieai/code';
|
|
|
24
24
|
const UPDATE_CHECK_INTERVAL = parseInt(process.env.CODEMIE_UPDATE_CHECK_INTERVAL || '86400000', 10);
|
|
25
25
|
const LAST_CHECK_FILE = path.join(getCodemiePath(), '.last-update-check');
|
|
26
26
|
const UPDATE_LOCK_FILE = path.join(getCodemiePath(), '.update-lock');
|
|
27
|
+
// A lock older than this is considered orphaned (holder crashed or was killed
|
|
28
|
+
// mid-update) and is reclaimed. Generous vs. the 60s update install timeout.
|
|
29
|
+
const UPDATE_LOCK_STALE_MS = 10 * 60 * 1000;
|
|
27
30
|
/**
|
|
28
31
|
* Get the current CLI version from package.json
|
|
29
32
|
*/
|
|
@@ -75,21 +78,43 @@ async function recordUpdateCheck() {
|
|
|
75
78
|
}
|
|
76
79
|
/**
|
|
77
80
|
* Acquire lock file to prevent concurrent updates
|
|
81
|
+
* Reclaims the lock when it is stale (holder died before releasing it)
|
|
78
82
|
* @returns true if lock acquired, false if another process is updating
|
|
79
83
|
*/
|
|
80
84
|
async function acquireUpdateLock() {
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
+
const tryAcquire = async () => {
|
|
86
|
+
try {
|
|
87
|
+
// Try to create lock file with exclusive flag (fails if exists)
|
|
88
|
+
const fd = await fs.open(UPDATE_LOCK_FILE, 'wx');
|
|
89
|
+
await fd.close();
|
|
90
|
+
return true;
|
|
91
|
+
}
|
|
92
|
+
catch {
|
|
93
|
+
return false;
|
|
94
|
+
}
|
|
95
|
+
};
|
|
96
|
+
if (await tryAcquire()) {
|
|
85
97
|
logger.debug('Acquired update lock');
|
|
86
98
|
return true;
|
|
87
99
|
}
|
|
100
|
+
// Lock file exists - either another process is updating, or a previous
|
|
101
|
+
// process died before releasing it. Reclaim only when provably stale.
|
|
102
|
+
try {
|
|
103
|
+
const { mtimeMs } = await fs.stat(UPDATE_LOCK_FILE);
|
|
104
|
+
const ageMs = Date.now() - mtimeMs;
|
|
105
|
+
if (ageMs < UPDATE_LOCK_STALE_MS) {
|
|
106
|
+
logger.debug('Update lock already held by another process');
|
|
107
|
+
return false;
|
|
108
|
+
}
|
|
109
|
+
logger.debug(`Removing stale update lock (${Math.floor(ageMs / 60000)} min old)`);
|
|
110
|
+
await fs.unlink(UPDATE_LOCK_FILE);
|
|
111
|
+
}
|
|
88
112
|
catch {
|
|
89
|
-
// Lock
|
|
90
|
-
logger.debug('Update lock already held by another process');
|
|
91
|
-
return false;
|
|
113
|
+
// Lock vanished between attempts (holder released it) - retry below
|
|
92
114
|
}
|
|
115
|
+
const acquired = await tryAcquire();
|
|
116
|
+
logger.debug(acquired ? 'Acquired update lock after clearing stale lock' : 'Update lock already held by another process');
|
|
117
|
+
return acquired;
|
|
93
118
|
}
|
|
94
119
|
/**
|
|
95
120
|
* Release update lock file
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli-updater.js","sourceRoot":"","sources":["../../src/utils/cli-updater.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"cli-updater.js","sourceRoot":"","sources":["../../src/utils/cli-updater.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Credential-encryption primitives.
|
|
3
|
+
*
|
|
4
|
+
* Split out of security.ts (rather than kept there and re-exported) because the Claude Code
|
|
5
|
+
* statusline (src/agents/plugins/claude/plugin/statusline.ts) needs to decrypt the same
|
|
6
|
+
* credential files security.ts's CredentialStore writes, without hand-copying the derivation —
|
|
7
|
+
* but that file is bundled standalone by scripts/bundle-statusline.mjs into one self-contained
|
|
8
|
+
* artifact with no node_modules resolution at runtime. security.ts itself is NOT safe to import
|
|
9
|
+
* into that bundle: CredentialStore lazily loads the optional `keytar` native module (a `.node`
|
|
10
|
+
* binary esbuild has no loader for), and esbuild resolves an entire imported file's module graph
|
|
11
|
+
* even when only a few of its exports are actually used, so pulling in security.ts pulls in
|
|
12
|
+
* keytar too and the build fails outright (observed on CI, not just locally). This module has
|
|
13
|
+
* only Node builtin imports (crypto, os) — nothing esbuild can choke on — so statusline.ts
|
|
14
|
+
* imports it directly instead, and security.ts imports it right back for CredentialStore's own
|
|
15
|
+
* use. Keep it that way: importing anything else in here (fs, keytar, or security.ts itself)
|
|
16
|
+
* reintroduces the same bundling failure.
|
|
17
|
+
*/
|
|
18
|
+
/** Machine-specific AES-256 key, derived identically wherever a credential file is read or written. */
|
|
19
|
+
export declare function deriveMachineEncryptionKey(): Buffer;
|
|
20
|
+
export declare function encryptWithKey(text: string, key: Buffer): string;
|
|
21
|
+
/** Decrypts either the current AES-256-GCM format (`iv:authTag:encrypted`) or the legacy AES-256-CBC format (`iv:encrypted`). */
|
|
22
|
+
export declare function decryptWithKey(text: string, key: Buffer): string;
|
|
23
|
+
/**
|
|
24
|
+
* Reduce a URL to protocol+host, or return it unchanged if it is not an
|
|
25
|
+
* http(s) URL with a host.
|
|
26
|
+
*
|
|
27
|
+
* `new URL()` does not throw on `scheme:rest` strings — `new URL('localhost:8080')`
|
|
28
|
+
* parses as protocol `localhost:` with an *empty* host. Without the host and
|
|
29
|
+
* protocol guard every scheme-less `host:port` would normalize to the same
|
|
30
|
+
* `scheme://` and two different instances would share one credential entry.
|
|
31
|
+
*/
|
|
32
|
+
export declare function normalizeUrlForKey(baseUrl: string): string;
|
|
33
|
+
/**
|
|
34
|
+
* Generate a storage key for a given URL.
|
|
35
|
+
*
|
|
36
|
+
* Reduces the URL to protocol+host before hashing so storage and retrieval
|
|
37
|
+
* always agree on a key regardless of which path a caller passes in (e.g.
|
|
38
|
+
* a bare portal URL from `codemie setup` vs. a full API URL from
|
|
39
|
+
* `codemie profile login --url <api-url>`). Only stripping a trailing
|
|
40
|
+
* slash here (without dropping the path) would make the key sensitive to
|
|
41
|
+
* whichever URL variant happened to be passed at store time.
|
|
42
|
+
* @param baseUrl - The URL to hash (path/query/hash, if any, are discarded)
|
|
43
|
+
* @returns Storage key (e.g., "sso-abc123...")
|
|
44
|
+
*/
|
|
45
|
+
export declare function deriveUrlStorageKey(baseUrl: string): string;
|
|
46
|
+
/**
|
|
47
|
+
* Storage key as it was derived before the URL was normalized to protocol+host.
|
|
48
|
+
* Only used to find and clean up credentials written by an earlier version.
|
|
49
|
+
*/
|
|
50
|
+
export declare function deriveLegacyUrlStorageKey(baseUrl: string): string;
|
|
51
|
+
//# sourceMappingURL=credential-crypto.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"credential-crypto.d.ts","sourceRoot":"","sources":["../../src/utils/credential-crypto.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAMH,uGAAuG;AACvG,wBAAgB,0BAA0B,IAAI,MAAM,CAInD;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAOhE;AAED,iIAAiI;AACjI,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAahE;AAED;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAU1D;AAMD;;;;;;;;;;;GAWG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAE3D;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEjE"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Credential-encryption primitives.
|
|
3
|
+
*
|
|
4
|
+
* Split out of security.ts (rather than kept there and re-exported) because the Claude Code
|
|
5
|
+
* statusline (src/agents/plugins/claude/plugin/statusline.ts) needs to decrypt the same
|
|
6
|
+
* credential files security.ts's CredentialStore writes, without hand-copying the derivation —
|
|
7
|
+
* but that file is bundled standalone by scripts/bundle-statusline.mjs into one self-contained
|
|
8
|
+
* artifact with no node_modules resolution at runtime. security.ts itself is NOT safe to import
|
|
9
|
+
* into that bundle: CredentialStore lazily loads the optional `keytar` native module (a `.node`
|
|
10
|
+
* binary esbuild has no loader for), and esbuild resolves an entire imported file's module graph
|
|
11
|
+
* even when only a few of its exports are actually used, so pulling in security.ts pulls in
|
|
12
|
+
* keytar too and the build fails outright (observed on CI, not just locally). This module has
|
|
13
|
+
* only Node builtin imports (crypto, os) — nothing esbuild can choke on — so statusline.ts
|
|
14
|
+
* imports it directly instead, and security.ts imports it right back for CredentialStore's own
|
|
15
|
+
* use. Keep it that way: importing anything else in here (fs, keytar, or security.ts itself)
|
|
16
|
+
* reintroduces the same bundling failure.
|
|
17
|
+
*/
|
|
18
|
+
import * as crypto from 'crypto';
|
|
19
|
+
import * as os from 'os';
|
|
20
|
+
import { URL } from 'url';
|
|
21
|
+
/** Machine-specific AES-256 key, derived identically wherever a credential file is read or written. */
|
|
22
|
+
export function deriveMachineEncryptionKey() {
|
|
23
|
+
const machineId = os.hostname() + os.platform() + os.arch();
|
|
24
|
+
const hex = crypto.createHash('sha256').update(machineId).digest('hex');
|
|
25
|
+
return crypto.createHash('sha256').update(hex).digest();
|
|
26
|
+
}
|
|
27
|
+
export function encryptWithKey(text, key) {
|
|
28
|
+
const iv = crypto.randomBytes(12);
|
|
29
|
+
const cipher = crypto.createCipheriv('aes-256-gcm', key, iv);
|
|
30
|
+
let encrypted = cipher.update(text, 'utf8', 'hex');
|
|
31
|
+
encrypted += cipher.final('hex');
|
|
32
|
+
const authTag = cipher.getAuthTag();
|
|
33
|
+
return iv.toString('hex') + ':' + authTag.toString('hex') + ':' + encrypted;
|
|
34
|
+
}
|
|
35
|
+
/** Decrypts either the current AES-256-GCM format (`iv:authTag:encrypted`) or the legacy AES-256-CBC format (`iv:encrypted`). */
|
|
36
|
+
export function decryptWithKey(text, key) {
|
|
37
|
+
const parts = text.split(':');
|
|
38
|
+
if (parts.length === 3) {
|
|
39
|
+
const iv = Buffer.from(parts[0], 'hex');
|
|
40
|
+
const authTag = Buffer.from(parts[1], 'hex');
|
|
41
|
+
const decipher = crypto.createDecipheriv('aes-256-gcm', key, iv);
|
|
42
|
+
decipher.setAuthTag(authTag);
|
|
43
|
+
return decipher.update(parts[2], 'hex', 'utf8') + decipher.final('utf8');
|
|
44
|
+
}
|
|
45
|
+
// Legacy CBC format: iv:encrypted (backward compat for existing stored credentials)
|
|
46
|
+
const iv = Buffer.from(parts[0], 'hex');
|
|
47
|
+
const decipher = crypto.createDecipheriv('aes-256-cbc', key, iv);
|
|
48
|
+
return decipher.update(parts[1], 'hex', 'utf8') + decipher.final('utf8');
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Reduce a URL to protocol+host, or return it unchanged if it is not an
|
|
52
|
+
* http(s) URL with a host.
|
|
53
|
+
*
|
|
54
|
+
* `new URL()` does not throw on `scheme:rest` strings — `new URL('localhost:8080')`
|
|
55
|
+
* parses as protocol `localhost:` with an *empty* host. Without the host and
|
|
56
|
+
* protocol guard every scheme-less `host:port` would normalize to the same
|
|
57
|
+
* `scheme://` and two different instances would share one credential entry.
|
|
58
|
+
*/
|
|
59
|
+
export function normalizeUrlForKey(baseUrl) {
|
|
60
|
+
try {
|
|
61
|
+
const parsed = new URL(baseUrl);
|
|
62
|
+
if (parsed.host && (parsed.protocol === 'http:' || parsed.protocol === 'https:')) {
|
|
63
|
+
return `${parsed.protocol}//${parsed.host}`.toLowerCase();
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
catch {
|
|
67
|
+
// Not a parseable URL — fall through to the raw form.
|
|
68
|
+
}
|
|
69
|
+
return baseUrl.replace(/\/$/, '').toLowerCase();
|
|
70
|
+
}
|
|
71
|
+
function hashStorageKey(normalized) {
|
|
72
|
+
return `sso-${crypto.createHash('sha256').update(normalized).digest('hex')}`;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Generate a storage key for a given URL.
|
|
76
|
+
*
|
|
77
|
+
* Reduces the URL to protocol+host before hashing so storage and retrieval
|
|
78
|
+
* always agree on a key regardless of which path a caller passes in (e.g.
|
|
79
|
+
* a bare portal URL from `codemie setup` vs. a full API URL from
|
|
80
|
+
* `codemie profile login --url <api-url>`). Only stripping a trailing
|
|
81
|
+
* slash here (without dropping the path) would make the key sensitive to
|
|
82
|
+
* whichever URL variant happened to be passed at store time.
|
|
83
|
+
* @param baseUrl - The URL to hash (path/query/hash, if any, are discarded)
|
|
84
|
+
* @returns Storage key (e.g., "sso-abc123...")
|
|
85
|
+
*/
|
|
86
|
+
export function deriveUrlStorageKey(baseUrl) {
|
|
87
|
+
return hashStorageKey(normalizeUrlForKey(baseUrl));
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Storage key as it was derived before the URL was normalized to protocol+host.
|
|
91
|
+
* Only used to find and clean up credentials written by an earlier version.
|
|
92
|
+
*/
|
|
93
|
+
export function deriveLegacyUrlStorageKey(baseUrl) {
|
|
94
|
+
return hashStorageKey(baseUrl.replace(/\/$/, '').toLowerCase());
|
|
95
|
+
}
|
|
96
|
+
//# sourceMappingURL=credential-crypto.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"credential-crypto.js","sourceRoot":"","sources":["../../src/utils/credential-crypto.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
* Handles various model name formats:
|
|
9
9
|
* - AWS Bedrock Converse: converse/region.provider.model-v1:0 -> model
|
|
10
10
|
* - AWS Bedrock Direct: region.provider.model-v1:0 -> model
|
|
11
|
+
* - Switchyard Bedrock alias: bedrock/region.provider.model -> model (no version suffix)
|
|
11
12
|
* - Kimi Code: kimi-code/kimi-for-coding -> kimi-for-coding
|
|
12
13
|
* - Standard Claude: claude-sonnet-4-5-20250929 (unchanged)
|
|
13
14
|
* - OpenAI: gpt-4-turbo (unchanged)
|
|
@@ -16,7 +17,12 @@
|
|
|
16
17
|
* Examples:
|
|
17
18
|
* converse/global.anthropic.claude-haiku-4-5-20251001-v1:0 -> claude-haiku-4-5-20251001
|
|
18
19
|
* eu.anthropic.claude-haiku-4-5-20251001-v1:0 -> claude-haiku-4-5-20251001
|
|
20
|
+
* bedrock/us.anthropic.claude-sonnet-5 -> claude-sonnet-5
|
|
21
|
+
* bedrock/converse/us.anthropic.claude-haiku-4-5-20251001-v1:0 -> claude-haiku-4-5-20251001
|
|
19
22
|
* kimi-code/kimi-for-coding -> kimi-for-coding
|
|
23
|
+
* openai.gpt-4o -> gpt-4o
|
|
24
|
+
* azure/gpt-4o -> gpt-4o
|
|
25
|
+
* vertex_ai/gemini-3-pro -> gemini-3-pro
|
|
20
26
|
* claude-sonnet-4-5-20250929 -> claude-sonnet-4-5-20250929
|
|
21
27
|
*/
|
|
22
28
|
export declare function normalizeModelName(modelName: string): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model-normalizer.d.ts","sourceRoot":"","sources":["../../src/utils/model-normalizer.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"model-normalizer.d.ts","sourceRoot":"","sources":["../../src/utils/model-normalizer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAaH;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAkC5D"}
|
|
@@ -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"}
|