@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.
Files changed (173) hide show
  1. package/dist/agents/core/AgentCLI.d.ts.map +1 -1
  2. package/dist/agents/core/AgentCLI.js +9 -0
  3. package/dist/agents/core/AgentCLI.js.map +1 -1
  4. package/dist/agents/core/BaseAgentAdapter.d.ts.map +1 -1
  5. package/dist/agents/core/BaseAgentAdapter.js +34 -9
  6. package/dist/agents/core/BaseAgentAdapter.js.map +1 -1
  7. package/dist/agents/plugins/claude/claude.models.d.ts +58 -0
  8. package/dist/agents/plugins/claude/claude.models.d.ts.map +1 -1
  9. package/dist/agents/plugins/claude/claude.models.js +196 -10
  10. package/dist/agents/plugins/claude/claude.models.js.map +1 -1
  11. package/dist/agents/plugins/claude/claude.plugin.d.ts.map +1 -1
  12. package/dist/agents/plugins/claude/claude.plugin.js +147 -45
  13. package/dist/agents/plugins/claude/claude.plugin.js.map +1 -1
  14. package/dist/agents/plugins/claude/plugin/statusline.bundle.mjs +729 -0
  15. package/dist/agents/plugins/claude/statusline-installer.d.ts +1 -1
  16. package/dist/agents/plugins/claude/statusline-installer.d.ts.map +1 -1
  17. package/dist/agents/plugins/claude/statusline-installer.js +41 -3
  18. package/dist/agents/plugins/claude/statusline-installer.js.map +1 -1
  19. package/dist/agents/plugins/codex/codex-models.d.ts.map +1 -1
  20. package/dist/agents/plugins/codex/codex-models.js +109 -8
  21. package/dist/agents/plugins/codex/codex-models.js.map +1 -1
  22. package/dist/agents/plugins/codex/codex.correlation.d.ts +39 -0
  23. package/dist/agents/plugins/codex/codex.correlation.d.ts.map +1 -0
  24. package/dist/agents/plugins/codex/codex.correlation.js +150 -0
  25. package/dist/agents/plugins/codex/codex.correlation.js.map +1 -0
  26. package/dist/agents/plugins/codex/codex.plugin.d.ts.map +1 -1
  27. package/dist/agents/plugins/codex/codex.plugin.js +8 -40
  28. package/dist/agents/plugins/codex/codex.plugin.js.map +1 -1
  29. package/dist/agents/plugins/kimi/kimi.env-model.d.ts +27 -0
  30. package/dist/agents/plugins/kimi/kimi.env-model.d.ts.map +1 -0
  31. package/dist/agents/plugins/kimi/kimi.env-model.js +52 -0
  32. package/dist/agents/plugins/kimi/kimi.env-model.js.map +1 -0
  33. package/dist/agents/plugins/kimi/kimi.session.d.ts +6 -0
  34. package/dist/agents/plugins/kimi/kimi.session.d.ts.map +1 -1
  35. package/dist/agents/plugins/kimi/kimi.session.js +24 -2
  36. package/dist/agents/plugins/kimi/kimi.session.js.map +1 -1
  37. package/dist/agents/plugins/opencode/opencode-dynamic-models.js +1 -1
  38. package/dist/agents/plugins/opencode/opencode-dynamic-models.js.map +1 -1
  39. package/dist/cli/commands/analytics/cost/cost-enricher.d.ts +19 -2
  40. package/dist/cli/commands/analytics/cost/cost-enricher.d.ts.map +1 -1
  41. package/dist/cli/commands/analytics/cost/cost-enricher.js +171 -14
  42. package/dist/cli/commands/analytics/cost/cost-enricher.js.map +1 -1
  43. package/dist/cli/commands/analytics/cost/local-models.d.ts +15 -0
  44. package/dist/cli/commands/analytics/cost/local-models.d.ts.map +1 -0
  45. package/dist/cli/commands/analytics/cost/local-models.js +21 -0
  46. package/dist/cli/commands/analytics/cost/local-models.js.map +1 -0
  47. package/dist/cli/commands/analytics/cost/types.d.ts +60 -0
  48. package/dist/cli/commands/analytics/cost/types.d.ts.map +1 -1
  49. package/dist/cli/commands/analytics/cost/types.js.map +1 -1
  50. package/dist/cli/commands/analytics/cost/usage-readers.d.ts +25 -2
  51. package/dist/cli/commands/analytics/cost/usage-readers.d.ts.map +1 -1
  52. package/dist/cli/commands/analytics/cost/usage-readers.js +61 -3
  53. package/dist/cli/commands/analytics/cost/usage-readers.js.map +1 -1
  54. package/dist/cli/commands/analytics/formatter.d.ts +11 -0
  55. package/dist/cli/commands/analytics/formatter.d.ts.map +1 -1
  56. package/dist/cli/commands/analytics/formatter.js +28 -0
  57. package/dist/cli/commands/analytics/formatter.js.map +1 -1
  58. package/dist/cli/commands/analytics/index.d.ts.map +1 -1
  59. package/dist/cli/commands/analytics/index.js +70 -73
  60. package/dist/cli/commands/analytics/index.js.map +1 -1
  61. package/dist/cli/commands/analytics/otel-loader.d.ts.map +1 -1
  62. package/dist/cli/commands/analytics/otel-loader.js +60 -14
  63. package/dist/cli/commands/analytics/otel-loader.js.map +1 -1
  64. package/dist/cli/commands/analytics/otel-pricing.d.ts +38 -0
  65. package/dist/cli/commands/analytics/otel-pricing.d.ts.map +1 -0
  66. package/dist/cli/commands/analytics/otel-pricing.js +33 -0
  67. package/dist/cli/commands/analytics/otel-pricing.js.map +1 -0
  68. package/dist/cli/commands/analytics/report/client/app.js +279 -18
  69. package/dist/cli/commands/analytics/report/output-target.d.ts +22 -0
  70. package/dist/cli/commands/analytics/report/output-target.d.ts.map +1 -0
  71. package/dist/cli/commands/analytics/report/output-target.js +56 -0
  72. package/dist/cli/commands/analytics/report/output-target.js.map +1 -0
  73. package/dist/cli/commands/analytics/report/payload-builder.d.ts.map +1 -1
  74. package/dist/cli/commands/analytics/report/payload-builder.js +6 -0
  75. package/dist/cli/commands/analytics/report/payload-builder.js.map +1 -1
  76. package/dist/cli/commands/analytics/report/report-generator.d.ts +1 -1
  77. package/dist/cli/commands/analytics/report/report-generator.js +1 -1
  78. package/dist/cli/commands/analytics/report/session-report.d.ts +1 -3
  79. package/dist/cli/commands/analytics/report/session-report.d.ts.map +1 -1
  80. package/dist/cli/commands/analytics/report/session-report.js +1 -3
  81. package/dist/cli/commands/analytics/report/session-report.js.map +1 -1
  82. package/dist/cli/commands/analytics/report/template.html +6 -6
  83. package/dist/cli/commands/analytics/report/types.d.ts +17 -1
  84. package/dist/cli/commands/analytics/report/types.d.ts.map +1 -1
  85. package/dist/cli/commands/analytics/sources/sessions-source.d.ts.map +1 -1
  86. package/dist/cli/commands/analytics/sources/sessions-source.js +9 -11
  87. package/dist/cli/commands/analytics/sources/sessions-source.js.map +1 -1
  88. package/dist/cli/commands/analytics/sources/types.d.ts +0 -2
  89. package/dist/cli/commands/analytics/sources/types.d.ts.map +1 -1
  90. package/dist/cli/commands/analytics/types.d.ts +8 -8
  91. package/dist/cli/commands/analytics/types.d.ts.map +1 -1
  92. package/dist/cli/commands/models.d.ts.map +1 -1
  93. package/dist/cli/commands/models.js +16 -3
  94. package/dist/cli/commands/models.js.map +1 -1
  95. package/dist/cli/commands/proxy/connect-orchestrator.js +1 -1
  96. package/dist/cli/commands/proxy/connect-orchestrator.js.map +1 -1
  97. package/dist/cli/commands/proxy/connectors/tenant-catalog.d.ts +16 -4
  98. package/dist/cli/commands/proxy/connectors/tenant-catalog.d.ts.map +1 -1
  99. package/dist/cli/commands/proxy/connectors/tenant-catalog.js +42 -14
  100. package/dist/cli/commands/proxy/connectors/tenant-catalog.js.map +1 -1
  101. package/dist/cli/commands/proxy/connectors/vscode-models.d.ts +18 -0
  102. package/dist/cli/commands/proxy/connectors/vscode-models.d.ts.map +1 -1
  103. package/dist/cli/commands/proxy/connectors/vscode-models.js +58 -0
  104. package/dist/cli/commands/proxy/connectors/vscode-models.js.map +1 -1
  105. package/dist/cli/commands/proxy/connectors/vscode.d.ts +2 -2
  106. package/dist/cli/commands/proxy/connectors/vscode.d.ts.map +1 -1
  107. package/dist/cli/commands/proxy/connectors/vscode.js +27 -38
  108. package/dist/cli/commands/proxy/connectors/vscode.js.map +1 -1
  109. package/dist/providers/core/codemie-auth-helpers.d.ts.map +1 -1
  110. package/dist/providers/core/codemie-auth-helpers.js +6 -1
  111. package/dist/providers/core/codemie-auth-helpers.js.map +1 -1
  112. package/dist/providers/core/default-agent-hooks.d.ts.map +1 -1
  113. package/dist/providers/core/default-agent-hooks.js +9 -0
  114. package/dist/providers/core/default-agent-hooks.js.map +1 -1
  115. package/dist/providers/plugins/bedrock/bedrock.template.d.ts.map +1 -1
  116. package/dist/providers/plugins/bedrock/bedrock.template.js +5 -31
  117. package/dist/providers/plugins/bedrock/bedrock.template.js.map +1 -1
  118. package/dist/providers/plugins/sso/proxy/plugins/background-request-normalizer.plugin.d.ts +44 -0
  119. package/dist/providers/plugins/sso/proxy/plugins/background-request-normalizer.plugin.d.ts.map +1 -0
  120. package/dist/providers/plugins/sso/proxy/plugins/background-request-normalizer.plugin.js +106 -0
  121. package/dist/providers/plugins/sso/proxy/plugins/background-request-normalizer.plugin.js.map +1 -0
  122. package/dist/providers/plugins/sso/proxy/plugins/index.d.ts +3 -1
  123. package/dist/providers/plugins/sso/proxy/plugins/index.d.ts.map +1 -1
  124. package/dist/providers/plugins/sso/proxy/plugins/index.js +5 -1
  125. package/dist/providers/plugins/sso/proxy/plugins/index.js.map +1 -1
  126. package/dist/providers/plugins/sso/proxy/plugins/routing-header-injector.plugin.d.ts +67 -0
  127. package/dist/providers/plugins/sso/proxy/plugins/routing-header-injector.plugin.d.ts.map +1 -0
  128. package/dist/providers/plugins/sso/proxy/plugins/routing-header-injector.plugin.js +203 -0
  129. package/dist/providers/plugins/sso/proxy/plugins/routing-header-injector.plugin.js.map +1 -0
  130. package/dist/providers/plugins/sso/sso.http-client.d.ts +95 -0
  131. package/dist/providers/plugins/sso/sso.http-client.d.ts.map +1 -1
  132. package/dist/providers/plugins/sso/sso.http-client.js +79 -0
  133. package/dist/providers/plugins/sso/sso.http-client.js.map +1 -1
  134. package/dist/providers/plugins/sso/sso.models.d.ts +7 -0
  135. package/dist/providers/plugins/sso/sso.models.d.ts.map +1 -1
  136. package/dist/providers/plugins/sso/sso.models.js +22 -14
  137. package/dist/providers/plugins/sso/sso.models.js.map +1 -1
  138. package/dist/utils/bedrock-pricing.mjs +111 -0
  139. package/dist/utils/cli-updater.d.ts.map +1 -1
  140. package/dist/utils/cli-updater.js +32 -7
  141. package/dist/utils/cli-updater.js.map +1 -1
  142. package/dist/utils/credential-crypto.d.ts +51 -0
  143. package/dist/utils/credential-crypto.d.ts.map +1 -0
  144. package/dist/utils/credential-crypto.js +96 -0
  145. package/dist/utils/credential-crypto.js.map +1 -0
  146. package/dist/utils/model-normalizer.d.ts +6 -0
  147. package/dist/utils/model-normalizer.d.ts.map +1 -1
  148. package/dist/utils/model-normalizer.js +37 -19
  149. package/dist/utils/model-normalizer.js.map +1 -1
  150. package/dist/utils/price-resolution.d.ts +42 -0
  151. package/dist/utils/price-resolution.d.ts.map +1 -0
  152. package/dist/utils/price-resolution.js +112 -0
  153. package/dist/utils/price-resolution.js.map +1 -0
  154. package/dist/utils/pricing.d.ts +65 -6
  155. package/dist/utils/pricing.d.ts.map +1 -1
  156. package/dist/utils/pricing.js +91 -117
  157. package/dist/utils/pricing.js.map +1 -1
  158. package/dist/utils/pricing.json +201 -20
  159. package/dist/utils/routing-headers.mjs +104 -0
  160. package/dist/utils/security.d.ts +0 -32
  161. package/dist/utils/security.d.ts.map +1 -1
  162. package/dist/utils/security.js +20 -102
  163. package/dist/utils/security.js.map +1 -1
  164. package/package.json +4 -2
  165. package/scripts/bundle-statusline.mjs +37 -0
  166. package/scripts/copy-plugins.js +19 -2
  167. package/src/utils/tips.json +9 -9
  168. package/dist/agents/plugins/claude/plugin/__tests__/statusline.test.ts +0 -323
  169. package/dist/agents/plugins/claude/plugin/statusline.mjs +0 -282
  170. package/dist/cli/commands/analytics/exporter.d.ts +0 -20
  171. package/dist/cli/commands/analytics/exporter.d.ts.map +0 -1
  172. package/dist/cli/commands/analytics/exporter.js +0 -91
  173. 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;;OAEG;YACW,kBAAkB;CA0BjC"}
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 { fetchCodeMieModels, fetchCodeMieIntegrations, CODEMIE_ENDPOINTS } from './sso.http-client.js';
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
- // Use the working utility function that handles redirects, SSL, and retry logic
139
- const modelIds = await fetchCodeMieModels(apiUrl, cookies);
140
- if (modelIds.length === 0) {
141
- return [];
142
- }
143
- // Transform model IDs to ModelInfo format
144
- // Mark recommended models as popular for highlighting (⭐)
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
- return {
153
+ models.push({
148
154
  id,
149
- name: id, // Use label from API
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":"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"}
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;AAuBH;;GAEG;AACH,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAcnE;AAkED;;;;;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"}
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
- try {
82
- // Try to create lock file with exclusive flag (fails if exists)
83
- const fd = await fs.open(UPDATE_LOCK_FILE, 'wx');
84
- await fd.close();
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 file exists - another process is updating
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;AAEH;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAgC5D"}
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 format
24
- // Format: converse/region.provider.model-v1:0
25
- // Example: converse/global.anthropic.claude-haiku-4-5-20251001-v1:0
26
- if (modelName.startsWith('converse/')) {
27
- const match = modelName.match(/anthropic\.(claude-[a-z0-9-]+)-v\d+:/);
28
- if (match) {
29
- return match[1]; // Returns: claude-haiku-4-5-20251001
30
- }
31
- }
32
- // Extract model from AWS Bedrock direct format (without converse/ prefix)
33
- // Format: region.provider.model-v1:0
34
- // Examples:
35
- // - eu.anthropic.claude-haiku-4-5-20251001-v1:0
36
- // - us-east-1.anthropic.claude-opus-4-20250514-v1:0
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;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,kBAAkB,CAAC,SAAiB;IAClD,iDAAiD;IACjD,8CAA8C;IAC9C,oEAAoE;IACpE,IAAI,SAAS,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QACtC,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,sCAAsC,CAAC,CAAC;QACtE,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,qCAAqC;QACxD,CAAC;IACH,CAAC;IAED,0EAA0E;IAC1E,qCAAqC;IACrC,YAAY;IACZ,gDAAgD;IAChD,oDAAoD;IACpD,IAAI,SAAS,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;QACtC,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,sCAAsC,CAAC,CAAC;QACtE,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,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,wCAAwC;IACxC,OAAO,SAAS,CAAC;AACnB,CAAC"}
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"}