@codemieai/code 0.15.2 → 0.15.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (302) 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 +1 -1
  12. package/dist/agents/plugins/claude/claude.plugin.d.ts.map +1 -1
  13. package/dist/agents/plugins/claude/claude.plugin.js +149 -47
  14. package/dist/agents/plugins/claude/claude.plugin.js.map +1 -1
  15. package/dist/agents/plugins/claude/claude.session.d.ts +17 -1
  16. package/dist/agents/plugins/claude/claude.session.d.ts.map +1 -1
  17. package/dist/agents/plugins/claude/claude.session.js +4 -0
  18. package/dist/agents/plugins/claude/claude.session.js.map +1 -1
  19. package/dist/agents/plugins/claude/plugin/statusline.bundle.mjs +729 -0
  20. package/dist/agents/plugins/claude/statusline-installer.d.ts +1 -1
  21. package/dist/agents/plugins/claude/statusline-installer.d.ts.map +1 -1
  22. package/dist/agents/plugins/claude/statusline-installer.js +41 -3
  23. package/dist/agents/plugins/claude/statusline-installer.js.map +1 -1
  24. package/dist/agents/plugins/codex/codex-models.d.ts.map +1 -1
  25. package/dist/agents/plugins/codex/codex-models.js +109 -8
  26. package/dist/agents/plugins/codex/codex-models.js.map +1 -1
  27. package/dist/agents/plugins/codex/codex.correlation.d.ts +39 -0
  28. package/dist/agents/plugins/codex/codex.correlation.d.ts.map +1 -0
  29. package/dist/agents/plugins/codex/codex.correlation.js +150 -0
  30. package/dist/agents/plugins/codex/codex.correlation.js.map +1 -0
  31. package/dist/agents/plugins/codex/codex.plugin.d.ts.map +1 -1
  32. package/dist/agents/plugins/codex/codex.plugin.js +8 -40
  33. package/dist/agents/plugins/codex/codex.plugin.js.map +1 -1
  34. package/dist/agents/plugins/kimi/kimi.env-model.d.ts +27 -0
  35. package/dist/agents/plugins/kimi/kimi.env-model.d.ts.map +1 -0
  36. package/dist/agents/plugins/kimi/kimi.env-model.js +52 -0
  37. package/dist/agents/plugins/kimi/kimi.env-model.js.map +1 -0
  38. package/dist/agents/plugins/kimi/kimi.session.d.ts +6 -0
  39. package/dist/agents/plugins/kimi/kimi.session.d.ts.map +1 -1
  40. package/dist/agents/plugins/kimi/kimi.session.js +24 -2
  41. package/dist/agents/plugins/kimi/kimi.session.js.map +1 -1
  42. package/dist/agents/plugins/opencode/opencode-dynamic-models.d.ts.map +1 -1
  43. package/dist/agents/plugins/opencode/opencode-dynamic-models.js +4 -5
  44. package/dist/agents/plugins/opencode/opencode-dynamic-models.js.map +1 -1
  45. package/dist/agents/plugins/pi/pi.models.d.ts.map +1 -1
  46. package/dist/agents/plugins/pi/pi.models.js +3 -3
  47. package/dist/agents/plugins/pi/pi.models.js.map +1 -1
  48. package/dist/bin/proxy-daemon.js +8 -1
  49. package/dist/bin/proxy-daemon.js.map +1 -1
  50. package/dist/cli/commands/analytics/cost/cost-enricher.d.ts +19 -2
  51. package/dist/cli/commands/analytics/cost/cost-enricher.d.ts.map +1 -1
  52. package/dist/cli/commands/analytics/cost/cost-enricher.js +171 -14
  53. package/dist/cli/commands/analytics/cost/cost-enricher.js.map +1 -1
  54. package/dist/cli/commands/analytics/cost/local-models.d.ts +15 -0
  55. package/dist/cli/commands/analytics/cost/local-models.d.ts.map +1 -0
  56. package/dist/cli/commands/analytics/cost/local-models.js +21 -0
  57. package/dist/cli/commands/analytics/cost/local-models.js.map +1 -0
  58. package/dist/cli/commands/analytics/cost/types.d.ts +60 -0
  59. package/dist/cli/commands/analytics/cost/types.d.ts.map +1 -1
  60. package/dist/cli/commands/analytics/cost/types.js.map +1 -1
  61. package/dist/cli/commands/analytics/cost/usage-readers.d.ts +25 -2
  62. package/dist/cli/commands/analytics/cost/usage-readers.d.ts.map +1 -1
  63. package/dist/cli/commands/analytics/cost/usage-readers.js +61 -3
  64. package/dist/cli/commands/analytics/cost/usage-readers.js.map +1 -1
  65. package/dist/cli/commands/analytics/formatter.d.ts +11 -0
  66. package/dist/cli/commands/analytics/formatter.d.ts.map +1 -1
  67. package/dist/cli/commands/analytics/formatter.js +28 -0
  68. package/dist/cli/commands/analytics/formatter.js.map +1 -1
  69. package/dist/cli/commands/analytics/index.d.ts.map +1 -1
  70. package/dist/cli/commands/analytics/index.js +70 -73
  71. package/dist/cli/commands/analytics/index.js.map +1 -1
  72. package/dist/cli/commands/analytics/otel-loader.d.ts.map +1 -1
  73. package/dist/cli/commands/analytics/otel-loader.js +60 -14
  74. package/dist/cli/commands/analytics/otel-loader.js.map +1 -1
  75. package/dist/cli/commands/analytics/otel-pricing.d.ts +38 -0
  76. package/dist/cli/commands/analytics/otel-pricing.d.ts.map +1 -0
  77. package/dist/cli/commands/analytics/otel-pricing.js +33 -0
  78. package/dist/cli/commands/analytics/otel-pricing.js.map +1 -0
  79. package/dist/cli/commands/analytics/report/client/app.js +279 -18
  80. package/dist/cli/commands/analytics/report/output-target.d.ts +22 -0
  81. package/dist/cli/commands/analytics/report/output-target.d.ts.map +1 -0
  82. package/dist/cli/commands/analytics/report/output-target.js +56 -0
  83. package/dist/cli/commands/analytics/report/output-target.js.map +1 -0
  84. package/dist/cli/commands/analytics/report/payload-builder.d.ts.map +1 -1
  85. package/dist/cli/commands/analytics/report/payload-builder.js +6 -0
  86. package/dist/cli/commands/analytics/report/payload-builder.js.map +1 -1
  87. package/dist/cli/commands/analytics/report/report-generator.d.ts +1 -1
  88. package/dist/cli/commands/analytics/report/report-generator.js +1 -1
  89. package/dist/cli/commands/analytics/report/session-report.d.ts +1 -3
  90. package/dist/cli/commands/analytics/report/session-report.d.ts.map +1 -1
  91. package/dist/cli/commands/analytics/report/session-report.js +1 -3
  92. package/dist/cli/commands/analytics/report/session-report.js.map +1 -1
  93. package/dist/cli/commands/analytics/report/template.html +6 -6
  94. package/dist/cli/commands/analytics/report/types.d.ts +17 -1
  95. package/dist/cli/commands/analytics/report/types.d.ts.map +1 -1
  96. package/dist/cli/commands/analytics/sources/sessions-source.d.ts.map +1 -1
  97. package/dist/cli/commands/analytics/sources/sessions-source.js +9 -11
  98. package/dist/cli/commands/analytics/sources/sessions-source.js.map +1 -1
  99. package/dist/cli/commands/analytics/sources/types.d.ts +0 -2
  100. package/dist/cli/commands/analytics/sources/types.d.ts.map +1 -1
  101. package/dist/cli/commands/analytics/types.d.ts +8 -8
  102. package/dist/cli/commands/analytics/types.d.ts.map +1 -1
  103. package/dist/cli/commands/assistants/constants.d.ts +4 -0
  104. package/dist/cli/commands/assistants/constants.d.ts.map +1 -1
  105. package/dist/cli/commands/assistants/constants.js +4 -0
  106. package/dist/cli/commands/assistants/constants.js.map +1 -1
  107. package/dist/cli/commands/assistants/setup/data.d.ts +1 -0
  108. package/dist/cli/commands/assistants/setup/data.d.ts.map +1 -1
  109. package/dist/cli/commands/assistants/setup/data.js +55 -10
  110. package/dist/cli/commands/assistants/setup/data.js.map +1 -1
  111. package/dist/cli/commands/assistants/setup/helpers.d.ts +1 -1
  112. package/dist/cli/commands/assistants/setup/helpers.d.ts.map +1 -1
  113. package/dist/cli/commands/assistants/setup/helpers.js +2 -5
  114. package/dist/cli/commands/assistants/setup/helpers.js.map +1 -1
  115. package/dist/cli/commands/assistants/setup/index.d.ts +12 -0
  116. package/dist/cli/commands/assistants/setup/index.d.ts.map +1 -1
  117. package/dist/cli/commands/assistants/setup/index.js +148 -20
  118. package/dist/cli/commands/assistants/setup/index.js.map +1 -1
  119. package/dist/cli/commands/models.d.ts.map +1 -1
  120. package/dist/cli/commands/models.js +16 -3
  121. package/dist/cli/commands/models.js.map +1 -1
  122. package/dist/cli/commands/profile/display.d.ts +5 -1
  123. package/dist/cli/commands/profile/display.d.ts.map +1 -1
  124. package/dist/cli/commands/profile/display.js +5 -1
  125. package/dist/cli/commands/profile/display.js.map +1 -1
  126. package/dist/cli/commands/profile/index.d.ts.map +1 -1
  127. package/dist/cli/commands/profile/index.js +7 -4
  128. package/dist/cli/commands/profile/index.js.map +1 -1
  129. package/dist/cli/commands/proxy/connect-orchestrator.d.ts.map +1 -1
  130. package/dist/cli/commands/proxy/connect-orchestrator.js +3 -4
  131. package/dist/cli/commands/proxy/connect-orchestrator.js.map +1 -1
  132. package/dist/cli/commands/proxy/connectors/desktop.d.ts +2 -3
  133. package/dist/cli/commands/proxy/connectors/desktop.d.ts.map +1 -1
  134. package/dist/cli/commands/proxy/connectors/desktop.js +9 -25
  135. package/dist/cli/commands/proxy/connectors/desktop.js.map +1 -1
  136. package/dist/cli/commands/proxy/connectors/model-name-resolver.d.ts +19 -0
  137. package/dist/cli/commands/proxy/connectors/model-name-resolver.d.ts.map +1 -0
  138. package/dist/cli/commands/proxy/connectors/model-name-resolver.js +126 -0
  139. package/dist/cli/commands/proxy/connectors/model-name-resolver.js.map +1 -0
  140. package/dist/cli/commands/proxy/connectors/tenant-catalog.d.ts +23 -0
  141. package/dist/cli/commands/proxy/connectors/tenant-catalog.d.ts.map +1 -0
  142. package/dist/cli/commands/proxy/connectors/tenant-catalog.js +136 -0
  143. package/dist/cli/commands/proxy/connectors/tenant-catalog.js.map +1 -0
  144. package/dist/cli/commands/proxy/connectors/vscode-claude-code.d.ts.map +1 -1
  145. package/dist/cli/commands/proxy/connectors/vscode-claude-code.js +49 -19
  146. package/dist/cli/commands/proxy/connectors/vscode-claude-code.js.map +1 -1
  147. package/dist/cli/commands/proxy/connectors/vscode-models.d.ts +21 -3
  148. package/dist/cli/commands/proxy/connectors/vscode-models.d.ts.map +1 -1
  149. package/dist/cli/commands/proxy/connectors/vscode-models.js +86 -28
  150. package/dist/cli/commands/proxy/connectors/vscode-models.js.map +1 -1
  151. package/dist/cli/commands/proxy/connectors/vscode.d.ts +3 -2
  152. package/dist/cli/commands/proxy/connectors/vscode.d.ts.map +1 -1
  153. package/dist/cli/commands/proxy/connectors/vscode.js +67 -39
  154. package/dist/cli/commands/proxy/connectors/vscode.js.map +1 -1
  155. package/dist/cli/commands/shared/headless.d.ts +69 -0
  156. package/dist/cli/commands/shared/headless.d.ts.map +1 -0
  157. package/dist/cli/commands/shared/headless.js +83 -0
  158. package/dist/cli/commands/shared/headless.js.map +1 -0
  159. package/dist/cli/commands/shared/helpers.d.ts +21 -0
  160. package/dist/cli/commands/shared/helpers.d.ts.map +1 -1
  161. package/dist/cli/commands/shared/helpers.js +73 -1
  162. package/dist/cli/commands/shared/helpers.js.map +1 -1
  163. package/dist/cli/commands/shared/identifier-resolution.d.ts +23 -0
  164. package/dist/cli/commands/shared/identifier-resolution.d.ts.map +1 -0
  165. package/dist/cli/commands/shared/identifier-resolution.js +55 -0
  166. package/dist/cli/commands/shared/identifier-resolution.js.map +1 -0
  167. package/dist/cli/commands/skills/setup/data.d.ts +3 -2
  168. package/dist/cli/commands/skills/setup/data.d.ts.map +1 -1
  169. package/dist/cli/commands/skills/setup/data.js +75 -13
  170. package/dist/cli/commands/skills/setup/data.js.map +1 -1
  171. package/dist/cli/commands/skills/setup/helpers.d.ts +1 -1
  172. package/dist/cli/commands/skills/setup/helpers.d.ts.map +1 -1
  173. package/dist/cli/commands/skills/setup/helpers.js +2 -5
  174. package/dist/cli/commands/skills/setup/helpers.js.map +1 -1
  175. package/dist/cli/commands/skills/setup/index.d.ts +17 -1
  176. package/dist/cli/commands/skills/setup/index.d.ts.map +1 -1
  177. package/dist/cli/commands/skills/setup/index.js +190 -19
  178. package/dist/cli/commands/skills/setup/index.js.map +1 -1
  179. package/dist/providers/core/codemie-auth-helpers.d.ts.map +1 -1
  180. package/dist/providers/core/codemie-auth-helpers.js +6 -1
  181. package/dist/providers/core/codemie-auth-helpers.js.map +1 -1
  182. package/dist/providers/core/default-agent-hooks.d.ts.map +1 -1
  183. package/dist/providers/core/default-agent-hooks.js +9 -0
  184. package/dist/providers/core/default-agent-hooks.js.map +1 -1
  185. package/dist/providers/plugins/bedrock/bedrock.template.d.ts.map +1 -1
  186. package/dist/providers/plugins/bedrock/bedrock.template.js +5 -31
  187. package/dist/providers/plugins/bedrock/bedrock.template.js.map +1 -1
  188. package/dist/providers/plugins/sso/proxy/plugins/background-request-normalizer.plugin.d.ts +44 -0
  189. package/dist/providers/plugins/sso/proxy/plugins/background-request-normalizer.plugin.d.ts.map +1 -0
  190. package/dist/providers/plugins/sso/proxy/plugins/background-request-normalizer.plugin.js +106 -0
  191. package/dist/providers/plugins/sso/proxy/plugins/background-request-normalizer.plugin.js.map +1 -0
  192. package/dist/providers/plugins/sso/proxy/plugins/claude-model-resolver.d.ts +41 -0
  193. package/dist/providers/plugins/sso/proxy/plugins/claude-model-resolver.d.ts.map +1 -0
  194. package/dist/providers/plugins/sso/proxy/plugins/claude-model-resolver.js +115 -0
  195. package/dist/providers/plugins/sso/proxy/plugins/claude-model-resolver.js.map +1 -0
  196. package/dist/providers/plugins/sso/proxy/plugins/claude-request-normalizer.plugin.d.ts.map +1 -1
  197. package/dist/providers/plugins/sso/proxy/plugins/claude-request-normalizer.plugin.js +101 -7
  198. package/dist/providers/plugins/sso/proxy/plugins/claude-request-normalizer.plugin.js.map +1 -1
  199. package/dist/providers/plugins/sso/proxy/plugins/header-injection.plugin.d.ts +4 -0
  200. package/dist/providers/plugins/sso/proxy/plugins/header-injection.plugin.d.ts.map +1 -1
  201. package/dist/providers/plugins/sso/proxy/plugins/header-injection.plugin.js +28 -3
  202. package/dist/providers/plugins/sso/proxy/plugins/header-injection.plugin.js.map +1 -1
  203. package/dist/providers/plugins/sso/proxy/plugins/index.d.ts +3 -1
  204. package/dist/providers/plugins/sso/proxy/plugins/index.d.ts.map +1 -1
  205. package/dist/providers/plugins/sso/proxy/plugins/index.js +5 -1
  206. package/dist/providers/plugins/sso/proxy/plugins/index.js.map +1 -1
  207. package/dist/providers/plugins/sso/proxy/plugins/routing-header-injector.plugin.d.ts +67 -0
  208. package/dist/providers/plugins/sso/proxy/plugins/routing-header-injector.plugin.d.ts.map +1 -0
  209. package/dist/providers/plugins/sso/proxy/plugins/routing-header-injector.plugin.js +203 -0
  210. package/dist/providers/plugins/sso/proxy/plugins/routing-header-injector.plugin.js.map +1 -0
  211. package/dist/providers/plugins/sso/proxy/proxy-types.d.ts +5 -0
  212. package/dist/providers/plugins/sso/proxy/proxy-types.d.ts.map +1 -1
  213. package/dist/providers/plugins/sso/proxy/sso.proxy.d.ts.map +1 -1
  214. package/dist/providers/plugins/sso/proxy/sso.proxy.js +1 -0
  215. package/dist/providers/plugins/sso/proxy/sso.proxy.js.map +1 -1
  216. package/dist/providers/plugins/sso/session/processors/metrics/metrics-aggregator.d.ts.map +1 -1
  217. package/dist/providers/plugins/sso/session/processors/metrics/metrics-aggregator.js +11 -2
  218. package/dist/providers/plugins/sso/session/processors/metrics/metrics-aggregator.js.map +1 -1
  219. package/dist/providers/plugins/sso/session/processors/metrics/metrics-sync-processor.d.ts.map +1 -1
  220. package/dist/providers/plugins/sso/session/processors/metrics/metrics-sync-processor.js +2 -1
  221. package/dist/providers/plugins/sso/session/processors/metrics/metrics-sync-processor.js.map +1 -1
  222. package/dist/providers/plugins/sso/sso.http-client.d.ts +95 -0
  223. package/dist/providers/plugins/sso/sso.http-client.d.ts.map +1 -1
  224. package/dist/providers/plugins/sso/sso.http-client.js +79 -0
  225. package/dist/providers/plugins/sso/sso.http-client.js.map +1 -1
  226. package/dist/providers/plugins/sso/sso.models.d.ts +7 -0
  227. package/dist/providers/plugins/sso/sso.models.d.ts.map +1 -1
  228. package/dist/providers/plugins/sso/sso.models.js +22 -14
  229. package/dist/providers/plugins/sso/sso.models.js.map +1 -1
  230. package/dist/telemetry/clients/claude-desktop/claude-desktop.discovery.d.ts +1 -0
  231. package/dist/telemetry/clients/claude-desktop/claude-desktop.discovery.d.ts.map +1 -1
  232. package/dist/telemetry/clients/claude-desktop/claude-desktop.discovery.js +30 -6
  233. package/dist/telemetry/clients/claude-desktop/claude-desktop.discovery.js.map +1 -1
  234. package/dist/telemetry/clients/claude-desktop/claude-desktop.parser.d.ts.map +1 -1
  235. package/dist/telemetry/clients/claude-desktop/claude-desktop.parser.js +33 -3
  236. package/dist/telemetry/clients/claude-desktop/claude-desktop.parser.js.map +1 -1
  237. package/dist/telemetry/runtime/DesktopRepositoryResolver.d.ts +58 -0
  238. package/dist/telemetry/runtime/DesktopRepositoryResolver.d.ts.map +1 -0
  239. package/dist/telemetry/runtime/DesktopRepositoryResolver.js +370 -0
  240. package/dist/telemetry/runtime/DesktopRepositoryResolver.js.map +1 -0
  241. package/dist/telemetry/runtime/DesktopTelemetryRuntime.d.ts +1 -0
  242. package/dist/telemetry/runtime/DesktopTelemetryRuntime.d.ts.map +1 -1
  243. package/dist/telemetry/runtime/DesktopTelemetryRuntime.js +89 -6
  244. package/dist/telemetry/runtime/DesktopTelemetryRuntime.js.map +1 -1
  245. package/dist/telemetry/runtime/types.d.ts +2 -0
  246. package/dist/telemetry/runtime/types.d.ts.map +1 -1
  247. package/dist/utils/auth.d.ts +13 -2
  248. package/dist/utils/auth.d.ts.map +1 -1
  249. package/dist/utils/auth.js +7 -3
  250. package/dist/utils/auth.js.map +1 -1
  251. package/dist/utils/bedrock-pricing.mjs +111 -0
  252. package/dist/utils/cli-updater.d.ts.map +1 -1
  253. package/dist/utils/cli-updater.js +32 -7
  254. package/dist/utils/cli-updater.js.map +1 -1
  255. package/dist/utils/config.d.ts +21 -0
  256. package/dist/utils/config.d.ts.map +1 -1
  257. package/dist/utils/config.js +69 -7
  258. package/dist/utils/config.js.map +1 -1
  259. package/dist/utils/credential-crypto.d.ts +51 -0
  260. package/dist/utils/credential-crypto.d.ts.map +1 -0
  261. package/dist/utils/credential-crypto.js +96 -0
  262. package/dist/utils/credential-crypto.js.map +1 -0
  263. package/dist/utils/errors.d.ts +14 -0
  264. package/dist/utils/errors.d.ts.map +1 -1
  265. package/dist/utils/errors.js +25 -0
  266. package/dist/utils/errors.js.map +1 -1
  267. package/dist/utils/model-normalizer.d.ts +6 -0
  268. package/dist/utils/model-normalizer.d.ts.map +1 -1
  269. package/dist/utils/model-normalizer.js +37 -19
  270. package/dist/utils/model-normalizer.js.map +1 -1
  271. package/dist/utils/paths.d.ts +2 -2
  272. package/dist/utils/paths.d.ts.map +1 -1
  273. package/dist/utils/paths.js +11 -9
  274. package/dist/utils/paths.js.map +1 -1
  275. package/dist/utils/price-resolution.d.ts +42 -0
  276. package/dist/utils/price-resolution.d.ts.map +1 -0
  277. package/dist/utils/price-resolution.js +112 -0
  278. package/dist/utils/price-resolution.js.map +1 -0
  279. package/dist/utils/pricing.d.ts +65 -6
  280. package/dist/utils/pricing.d.ts.map +1 -1
  281. package/dist/utils/pricing.js +91 -117
  282. package/dist/utils/pricing.js.map +1 -1
  283. package/dist/utils/pricing.json +201 -20
  284. package/dist/utils/processes.d.ts +12 -0
  285. package/dist/utils/processes.d.ts.map +1 -1
  286. package/dist/utils/processes.js +15 -0
  287. package/dist/utils/processes.js.map +1 -1
  288. package/dist/utils/routing-headers.mjs +104 -0
  289. package/dist/utils/security.d.ts +0 -32
  290. package/dist/utils/security.d.ts.map +1 -1
  291. package/dist/utils/security.js +20 -102
  292. package/dist/utils/security.js.map +1 -1
  293. package/package.json +5 -2
  294. package/scripts/bundle-statusline.mjs +37 -0
  295. package/scripts/copy-plugins.js +19 -2
  296. package/src/utils/tips.json +9 -9
  297. package/dist/agents/plugins/claude/plugin/__tests__/statusline.test.ts +0 -323
  298. package/dist/agents/plugins/claude/plugin/statusline.mjs +0 -282
  299. package/dist/cli/commands/analytics/exporter.d.ts +0 -20
  300. package/dist/cli/commands/analytics/exporter.d.ts.map +0 -1
  301. package/dist/cli/commands/analytics/exporter.js +0 -91
  302. package/dist/cli/commands/analytics/exporter.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"bedrock.template.d.ts","sourceRoot":"","sources":["../../../../src/providers/plugins/bedrock/bedrock.template.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAG5D,eAAO,MAAM,eAAe,kBAqM1B,CAAC"}
1
+ {"version":3,"file":"bedrock.template.d.ts","sourceRoot":"","sources":["../../../../src/providers/plugins/bedrock/bedrock.template.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAG5D,eAAO,MAAM,eAAe,kBA6K1B,CAAC"}
@@ -95,37 +95,11 @@ export const BedrockTemplate = registerProvider({
95
95
  if (env.CODEMIE_MODEL) {
96
96
  env.ANTHROPIC_MODEL = env.CODEMIE_MODEL;
97
97
  }
98
- // Model tier configuration for Bedrock
99
- // Maps CodeMie tier models to Claude Code environment variables.
100
- // Clear stale values first so haiku-only / opus-only tenants don't inherit
101
- // vars from a prior process and show duplicates in /model (EPMCDME-12779).
102
- delete env.ANTHROPIC_DEFAULT_HAIKU_MODEL;
103
- delete env.ANTHROPIC_DEFAULT_SONNET_MODEL;
104
- delete env.ANTHROPIC_DEFAULT_OPUS_MODEL;
105
- delete env.CLAUDE_CODE_SUBAGENT_MODEL;
106
- if (env.CODEMIE_HAIKU_MODEL) {
107
- env.ANTHROPIC_DEFAULT_HAIKU_MODEL = env.CODEMIE_HAIKU_MODEL;
108
- }
109
- if (env.CODEMIE_SONNET_MODEL && env.CODEMIE_SONNET_MODEL !== env.CODEMIE_HAIKU_MODEL) {
110
- env.ANTHROPIC_DEFAULT_SONNET_MODEL = env.CODEMIE_SONNET_MODEL;
111
- env.CLAUDE_CODE_SUBAGENT_MODEL = env.CODEMIE_SONNET_MODEL;
112
- }
113
- else if (env.CODEMIE_OPUS_MODEL) {
114
- // Opus-only tenant: route subagent to opus; ANTHROPIC_DEFAULT_SONNET_MODEL is
115
- // intentionally left unset to prevent duplicate-ID display (EPMCDME-12779 FR-002).
116
- env.CLAUDE_CODE_SUBAGENT_MODEL = env.CODEMIE_OPUS_MODEL;
117
- }
118
- else if (env.CODEMIE_HAIKU_MODEL) {
119
- // Haiku-only tenant: set CLAUDE_CODE_SUBAGENT_MODEL so background tasks use the
120
- // provisioned model. ANTHROPIC_DEFAULT_SONNET_MODEL is intentionally left unset.
121
- // Routing haiku through the sonnet slot caused a duplicate because Claude Code
122
- // shows its built-in haiku default even when ANTHROPIC_DEFAULT_HAIKU_MODEL is not
123
- // set (EPMCDME-12779).
124
- env.CLAUDE_CODE_SUBAGENT_MODEL = env.CODEMIE_HAIKU_MODEL;
125
- }
126
- if (env.CODEMIE_OPUS_MODEL) {
127
- env.ANTHROPIC_DEFAULT_OPUS_MODEL = env.CODEMIE_OPUS_MODEL;
128
- }
98
+ // Model tier configuration (haiku/sonnet/opus mapping, stale-value clearing, and the
99
+ // subagent-default pin) is handled generically by BaseAgentAdapter.transformEnvVars,
100
+ // which runs automatically before this hook and reads claude.plugin.ts's own
101
+ // `envMapping` (haikuModel/sonnetModel/opusModel/subagentDefaultModel) — the same
102
+ // tricky conditional this provider hook used to re-implement by hand (EPMCDME-14355).
129
103
  // Token settings for Bedrock burndown throttling
130
104
  // https://code.claude.com/docs/en/amazon-bedrock#output-token-configuration
131
105
  // Use user-configured values if available, otherwise use recommended defaults
@@ -1 +1 @@
1
- {"version":3,"file":"bedrock.template.js","sourceRoot":"","sources":["../../../../src/providers/plugins/bedrock/bedrock.template.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bedrock.template.js","sourceRoot":"","sources":["../../../../src/providers/plugins/bedrock/bedrock.template.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Background Request Normalizer Plugin
3
+ * Priority: 14 (alongside the other request normalizers, before RequestSanitizer at 15)
4
+ *
5
+ * Claude Code makes its own background/utility API calls — auto-title generation is the
6
+ * first one we've caught (system prompt: "Generate a concise, sentence-case title...").
7
+ * These always request the same model alias as the surrounding conversation
8
+ * (`claude-sonnet-5-switchyard-claude-4-5-haiku-signal` — confirmed via a captured real
9
+ * request body, EPMCDME-14083), which only *signals* a haiku preference to the upstream
10
+ * Switchyard tier classifier rather than forcing it — the classifier still sometimes routes
11
+ * these tiny calls to the expensive `capable`/sonnet tier. Measured impact: one real session
12
+ * had a single title-gen call billed at $0.237 by LiteLLM, on par with that session's most
13
+ * expensive genuine turn.
14
+ *
15
+ * We can't fix Switchyard's classifier (external service, not in this repo). What we can do
16
+ * is stop deferring to it at all for requests we can positively identify as this kind of
17
+ * cheap background work: rewrite `model` to a concrete haiku deployment before the request
18
+ * ever reaches the classifier.
19
+ *
20
+ * BACKGROUND_REQUEST_RULES is deliberately a list, not a single check: title-gen is the only
21
+ * one caught so far, but Claude Code has other small fire-and-forget calls (branch-name
22
+ * generation shares the same underlying prompt in some CC versions, commit-message
23
+ * suggestions, etc.) that will very likely turn out to have the same misrouting problem.
24
+ * Adding a new one is just another entry — same `matches`/`resolveForcedModel` shape, no new
25
+ * plumbing.
26
+ *
27
+ * The forced model is deliberately NOT a hardcoded literal: `claude.plugin.ts`'s beforeRun
28
+ * hook already resolves each tier against the live CodeMie catalog for the active profile —
29
+ * the same resolution a `/model` switch relies on — and merges it into `process.env` via
30
+ * `Object.assign(process.env, env)` (BaseAgentAdapter.ts) before the `claude` child process
31
+ * (and therefore any request through this proxy) ever starts. Reading `CODEMIE_HAIKU_MODEL`
32
+ * lazily inside `onRequest`, rather than caching it at plugin construction, means it's always
33
+ * read after that merge has happened, whatever the relative startup ordering of the proxy vs.
34
+ * the beforeRun hook turns out to be.
35
+ */
36
+ import { ProxyPlugin, PluginContext, ProxyInterceptor } from './types.js';
37
+ export declare class BackgroundRequestNormalizerPlugin implements ProxyPlugin {
38
+ id: string;
39
+ name: string;
40
+ version: string;
41
+ priority: number;
42
+ createInterceptor(context: PluginContext): Promise<ProxyInterceptor>;
43
+ }
44
+ //# sourceMappingURL=background-request-normalizer.plugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"background-request-normalizer.plugin.d.ts","sourceRoot":"","sources":["../../../../../../src/providers/plugins/sso/proxy/plugins/background-request-normalizer.plugin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAEH,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAkD1E,qBAAa,iCAAkC,YAAW,WAAW;IACnE,EAAE,SAAkD;IACpD,IAAI,SAAmC;IACvC,OAAO,SAAW;IAClB,QAAQ,SAAM;IAER,iBAAiB,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,gBAAgB,CAAC;CAO3E"}
@@ -0,0 +1,106 @@
1
+ /**
2
+ * Background Request Normalizer Plugin
3
+ * Priority: 14 (alongside the other request normalizers, before RequestSanitizer at 15)
4
+ *
5
+ * Claude Code makes its own background/utility API calls — auto-title generation is the
6
+ * first one we've caught (system prompt: "Generate a concise, sentence-case title...").
7
+ * These always request the same model alias as the surrounding conversation
8
+ * (`claude-sonnet-5-switchyard-claude-4-5-haiku-signal` — confirmed via a captured real
9
+ * request body, EPMCDME-14083), which only *signals* a haiku preference to the upstream
10
+ * Switchyard tier classifier rather than forcing it — the classifier still sometimes routes
11
+ * these tiny calls to the expensive `capable`/sonnet tier. Measured impact: one real session
12
+ * had a single title-gen call billed at $0.237 by LiteLLM, on par with that session's most
13
+ * expensive genuine turn.
14
+ *
15
+ * We can't fix Switchyard's classifier (external service, not in this repo). What we can do
16
+ * is stop deferring to it at all for requests we can positively identify as this kind of
17
+ * cheap background work: rewrite `model` to a concrete haiku deployment before the request
18
+ * ever reaches the classifier.
19
+ *
20
+ * BACKGROUND_REQUEST_RULES is deliberately a list, not a single check: title-gen is the only
21
+ * one caught so far, but Claude Code has other small fire-and-forget calls (branch-name
22
+ * generation shares the same underlying prompt in some CC versions, commit-message
23
+ * suggestions, etc.) that will very likely turn out to have the same misrouting problem.
24
+ * Adding a new one is just another entry — same `matches`/`resolveForcedModel` shape, no new
25
+ * plumbing.
26
+ *
27
+ * The forced model is deliberately NOT a hardcoded literal: `claude.plugin.ts`'s beforeRun
28
+ * hook already resolves each tier against the live CodeMie catalog for the active profile —
29
+ * the same resolution a `/model` switch relies on — and merges it into `process.env` via
30
+ * `Object.assign(process.env, env)` (BaseAgentAdapter.ts) before the `claude` child process
31
+ * (and therefore any request through this proxy) ever starts. Reading `CODEMIE_HAIKU_MODEL`
32
+ * lazily inside `onRequest`, rather than caching it at plugin construction, means it's always
33
+ * read after that merge has happened, whatever the relative startup ordering of the proxy vs.
34
+ * the beforeRun hook turns out to be.
35
+ */
36
+ import { logger } from '../../../../../utils/logger.js';
37
+ /** Same fallback order claude.plugin.ts itself populates: generic CodeMie var, then the native Anthropic one. */
38
+ function resolveHaikuModel() {
39
+ return process.env.CODEMIE_HAIKU_MODEL || process.env.ANTHROPIC_DEFAULT_HAIKU_MODEL || undefined;
40
+ }
41
+ /** `body.system` is either a plain string or an array of `{type: 'text', text: string}` blocks. */
42
+ function systemPromptText(body) {
43
+ const system = body.system;
44
+ if (typeof system === 'string')
45
+ return system;
46
+ if (Array.isArray(system)) {
47
+ return system
48
+ .map((block) => (block && typeof block === 'object' && 'text' in block ? String(block.text) : ''))
49
+ .join('\n');
50
+ }
51
+ return '';
52
+ }
53
+ // Add new background-request rules here as they're identified — each is independent, so one
54
+ // rule matching never affects whether another does.
55
+ const BACKGROUND_REQUEST_RULES = [
56
+ {
57
+ name: 'claude-code-title-gen',
58
+ matches: (body) => systemPromptText(body).includes('sentence-case title'),
59
+ resolveForcedModel: resolveHaikuModel,
60
+ },
61
+ ];
62
+ // Same agent scope as claude-request-normalizer.plugin.ts: this system-prompt-based detection
63
+ // only ever matches traffic from Claude Code itself.
64
+ const ALLOWED_AGENTS = ['codemie-claude', 'codemie-copilot', 'claude-desktop'];
65
+ export class BackgroundRequestNormalizerPlugin {
66
+ id = '@codemie/proxy-background-request-normalizer';
67
+ name = 'Background Request Normalizer';
68
+ version = '1.0.0';
69
+ priority = 14; // Alongside the other request normalizers, before RequestSanitizer (15)
70
+ async createInterceptor(context) {
71
+ const clientType = context.config.clientType;
72
+ if (!clientType || !ALLOWED_AGENTS.includes(clientType)) {
73
+ throw new Error(`Plugin disabled for agent: ${clientType}`);
74
+ }
75
+ return new BackgroundRequestNormalizerInterceptor();
76
+ }
77
+ }
78
+ class BackgroundRequestNormalizerInterceptor {
79
+ name = 'background-request-normalizer';
80
+ async onRequest(context) {
81
+ if (!context.requestBody || !context.headers['content-type']?.includes('application/json')) {
82
+ return;
83
+ }
84
+ let body;
85
+ try {
86
+ body = JSON.parse(context.requestBody.toString('utf-8'));
87
+ }
88
+ catch {
89
+ return; // Not JSON, or a torn body — nothing this plugin can do.
90
+ }
91
+ const rule = BACKGROUND_REQUEST_RULES.find((r) => r.matches(body));
92
+ if (!rule)
93
+ return;
94
+ const forcedModel = rule.resolveForcedModel();
95
+ if (!forcedModel) {
96
+ logger.debug(`[${this.name}] Matched rule "${rule.name}" but no target model is provisioned — leaving request untouched`);
97
+ return;
98
+ }
99
+ const originalModel = body.model;
100
+ body.model = forcedModel;
101
+ context.requestBody = Buffer.from(JSON.stringify(body), 'utf-8');
102
+ context.headers['content-length'] = String(context.requestBody.length);
103
+ logger.debug(`[${this.name}] Forced model for background request: ${rule.name} (${String(originalModel)} -> ${forcedModel})`);
104
+ }
105
+ }
106
+ //# sourceMappingURL=background-request-normalizer.plugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"background-request-normalizer.plugin.js","sourceRoot":"","sources":["../../../../../../src/providers/plugins/sso/proxy/plugins/background-request-normalizer.plugin.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Deployment-name resolution for Claude clients (Claude Desktop app, VS Code
3
+ * Claude Code extension).
4
+ *
5
+ * Both clients pick a model from their own bundled catalog and send its
6
+ * canonical, family-first name (`claude-opus-5`, `claude-sonnet-4-5`) with
7
+ * every request. A tenant whose CodeMie deployments use a different token
8
+ * order (e.g. version-first: `claude-5-opus`) rejects that name outright —
9
+ * the gateway has no entry called `claude-opus-5`. This module maps the
10
+ * requested name onto a deployment the gateway actually has, the same way
11
+ * `codex-model-resolver.ts` does for Codex's undated/dated mismatch.
12
+ *
13
+ * Self-contained on purpose: the proxy must not depend on the CLI's
14
+ * connector-side resolver (`src/cli/commands/proxy/connectors/model-name-
15
+ * resolver.ts`), which is a config-write-time concern in a different layer
16
+ * (`CLI → Registry → Plugin`, never reversed). The identity-parsing and
17
+ * recency-ranking shape below is intentionally identical to that module's
18
+ * Claude branch — proven logic, just re-homed for the request-time path.
19
+ */
20
+ export type ClaudeResolutionKind = 'exact' | 'resolved' | 'unresolved';
21
+ export interface ClaudeModelResolution {
22
+ model: string;
23
+ kind: ClaudeResolutionKind;
24
+ }
25
+ /** True when a deployment name can serve a Claude Messages API request. */
26
+ export declare function isClaudeServableDeployment(name: string): boolean;
27
+ /**
28
+ * Rank same-identity candidates: canonical (non-vertex) ids before `-vertex`
29
+ * ones, then the parsed release date (newest first, undated sorts last),
30
+ * then id text as a final deterministic tiebreak.
31
+ */
32
+ export declare function rankDeploymentsByRecency(ids: string[]): string[];
33
+ /**
34
+ * Resolve the Claude model a client asked for to a deployment the gateway
35
+ * has. Never substitutes a different capability tier (Opus for Sonnet, etc.)
36
+ * — an unresolved request passes through unchanged so the gateway's own
37
+ * error reaches the client, the same contract `resolveTenantModelId` uses
38
+ * client-side.
39
+ */
40
+ export declare function resolveClaudeDeployment(requested: string, available: string[]): ClaudeModelResolution;
41
+ //# sourceMappingURL=claude-model-resolver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude-model-resolver.d.ts","sourceRoot":"","sources":["../../../../../../src/providers/plugins/sso/proxy/plugins/claude-model-resolver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAsBH,MAAM,MAAM,oBAAoB,GAAG,OAAO,GAAG,UAAU,GAAG,YAAY,CAAC;AAEvE,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,oBAAoB,CAAC;CAC5B;AAsCD,2EAA2E;AAC3E,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEhE;AAkBD;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAWhE;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,qBAAqB,CAcrG"}
@@ -0,0 +1,115 @@
1
+ /**
2
+ * Deployment-name resolution for Claude clients (Claude Desktop app, VS Code
3
+ * Claude Code extension).
4
+ *
5
+ * Both clients pick a model from their own bundled catalog and send its
6
+ * canonical, family-first name (`claude-opus-5`, `claude-sonnet-4-5`) with
7
+ * every request. A tenant whose CodeMie deployments use a different token
8
+ * order (e.g. version-first: `claude-5-opus`) rejects that name outright —
9
+ * the gateway has no entry called `claude-opus-5`. This module maps the
10
+ * requested name onto a deployment the gateway actually has, the same way
11
+ * `codex-model-resolver.ts` does for Codex's undated/dated mismatch.
12
+ *
13
+ * Self-contained on purpose: the proxy must not depend on the CLI's
14
+ * connector-side resolver (`src/cli/commands/proxy/connectors/model-name-
15
+ * resolver.ts`), which is a config-write-time concern in a different layer
16
+ * (`CLI → Registry → Plugin`, never reversed). The identity-parsing and
17
+ * recency-ranking shape below is intentionally identical to that module's
18
+ * Claude branch — proven logic, just re-homed for the request-time path.
19
+ */
20
+ /**
21
+ * Release date embedded in a deployment id, matched in either of the two
22
+ * shapes real CodeMie deployments use: separator-delimited (`-2026-07-09`) or
23
+ * concatenated (`-20260709`, e.g. `claude-opus-4-5-20251101`). Not anchored to
24
+ * end-of-string: a deployment may carry a suffix after the date. The
25
+ * `(?!\d)` guard stops the concatenated alternative from matching only part
26
+ * of a longer digit run.
27
+ */
28
+ const RELEASE_DATE_PATTERN = /[-._](?:(?:20\d{2})[-._](?:\d{2})[-._](?:\d{2})|(?:20\d{2})(?:\d{2})(?:\d{2}))(?!\d)/;
29
+ const CLAUDE_SEGMENT_PATTERN = /opus|sonnet|haiku/i;
30
+ const VERTEX_SUFFIX_PATTERN = /-vertex$/i;
31
+ function stripReleaseDate(name) {
32
+ const match = name.match(RELEASE_DATE_PATTERN);
33
+ return match ? name.slice(0, match.index) : name;
34
+ }
35
+ /** Numeric [year, month, day] embedded in `id`, or `null` when it carries no release date. */
36
+ function extractReleaseDate(id) {
37
+ const match = id.match(RELEASE_DATE_PATTERN);
38
+ if (!match)
39
+ return null;
40
+ const digits = match[0].match(/\d+/g) ?? [];
41
+ const joined = digits.join('');
42
+ if (joined.length < 8)
43
+ return null;
44
+ return [Number(joined.slice(0, 4)), Number(joined.slice(4, 6)), Number(joined.slice(6, 8))];
45
+ }
46
+ /**
47
+ * Parse a Claude model name into its identity, regardless of whether the
48
+ * family or the version token comes first (`claude-opus-5` vs. `claude-5-
49
+ * opus`) and regardless of a trailing `-vertex` or release date.
50
+ */
51
+ function parseIdentity(rawName) {
52
+ const name = stripReleaseDate(rawName.toLowerCase()).replace(VERTEX_SUFFIX_PATTERN, '');
53
+ if (!name.startsWith('claude-'))
54
+ return null;
55
+ const tokens = name.slice('claude-'.length).split('-').filter(Boolean);
56
+ const segmentToken = tokens.find((token) => CLAUDE_SEGMENT_PATTERN.test(token));
57
+ if (!segmentToken)
58
+ return null;
59
+ const numbers = tokens.filter((token) => /^\d+$/.test(token)).map(Number);
60
+ return { segment: segmentToken, major: numbers[0] ?? 0, minor: numbers[1] ?? 0 };
61
+ }
62
+ function sameIdentity(a, b) {
63
+ return a !== null && a.segment === b.segment && a.major === b.major && a.minor === b.minor;
64
+ }
65
+ /** True when a deployment name can serve a Claude Messages API request. */
66
+ export function isClaudeServableDeployment(name) {
67
+ return /^claude-/i.test(name);
68
+ }
69
+ function scoreForRecency(id) {
70
+ return {
71
+ id,
72
+ nonVertexRank: VERTEX_SUFFIX_PATTERN.test(id) ? 0 : 1,
73
+ date: extractReleaseDate(id) ?? [0, 0, 0],
74
+ };
75
+ }
76
+ /**
77
+ * Rank same-identity candidates: canonical (non-vertex) ids before `-vertex`
78
+ * ones, then the parsed release date (newest first, undated sorts last),
79
+ * then id text as a final deterministic tiebreak.
80
+ */
81
+ export function rankDeploymentsByRecency(ids) {
82
+ return ids
83
+ .map(scoreForRecency)
84
+ .sort((a, b) => {
85
+ if (a.nonVertexRank !== b.nonVertexRank)
86
+ return b.nonVertexRank - a.nonVertexRank;
87
+ for (let i = 0; i < a.date.length; i++) {
88
+ if (a.date[i] !== b.date[i])
89
+ return b.date[i] - a.date[i];
90
+ }
91
+ return b.id.localeCompare(a.id);
92
+ })
93
+ .map((entry) => entry.id);
94
+ }
95
+ /**
96
+ * Resolve the Claude model a client asked for to a deployment the gateway
97
+ * has. Never substitutes a different capability tier (Opus for Sonnet, etc.)
98
+ * — an unresolved request passes through unchanged so the gateway's own
99
+ * error reaches the client, the same contract `resolveTenantModelId` uses
100
+ * client-side.
101
+ */
102
+ export function resolveClaudeDeployment(requested, available) {
103
+ if (available.includes(requested)) {
104
+ return { model: requested, kind: 'exact' };
105
+ }
106
+ const wanted = parseIdentity(requested);
107
+ if (wanted) {
108
+ const matches = available.filter((candidate) => sameIdentity(parseIdentity(candidate), wanted));
109
+ if (matches.length > 0) {
110
+ return { model: rankDeploymentsByRecency(matches)[0], kind: 'resolved' };
111
+ }
112
+ }
113
+ return { model: requested, kind: 'unresolved' };
114
+ }
115
+ //# sourceMappingURL=claude-model-resolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude-model-resolver.js","sourceRoot":"","sources":["../../../../../../src/providers/plugins/sso/proxy/plugins/claude-model-resolver.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"claude-request-normalizer.plugin.d.ts","sourceRoot":"","sources":["../../../../../../src/providers/plugins/sso/proxy/plugins/claude-request-normalizer.plugin.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AA8J1E,qBAAa,6BAA8B,YAAW,WAAW;IAC/D,EAAE,SAA8C;IAChD,IAAI,SAA+B;IACnC,OAAO,SAAW;IAClB,QAAQ,SAAM;IAER,iBAAiB,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,gBAAgB,CAAC;CAQ3E"}
1
+ {"version":3,"file":"claude-request-normalizer.plugin.d.ts","sourceRoot":"","sources":["../../../../../../src/providers/plugins/sso/proxy/plugins/claude-request-normalizer.plugin.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAgK1E,qBAAa,6BAA8B,YAAW,WAAW;IAC/D,EAAE,SAA8C;IAChD,IAAI,SAA+B;IACnC,OAAO,SAAW;IAClB,QAAQ,SAAM;IAER,iBAAiB,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,gBAAgB,CAAC;CAO3E"}
@@ -4,6 +4,8 @@
4
4
  * (before RequestSanitizer at 15). See EPMCDME-14035.
5
5
  */
6
6
  import { logger } from '../../../../../utils/logger.js';
7
+ import { fetchCodeMieLlmModels } from '../../sso.http-client.js';
8
+ import { isClaudeServableDeployment, resolveClaudeDeployment } from './claude-model-resolver.js';
7
9
  // Applied when no MODEL_CAPABILITY_TABLE row matches.
8
10
  const DEFAULT_CAPABILITIES = {
9
11
  thinking: 'standard',
@@ -133,15 +135,27 @@ export class ClaudeRequestNormalizerPlugin {
133
135
  if (!clientType || !ALLOWED_AGENTS.includes(clientType)) {
134
136
  throw new Error(`Plugin disabled for agent: ${clientType}`);
135
137
  }
136
- const configModel = context.config.model;
137
- return new ClaudeRequestNormalizerInterceptor(configModel);
138
+ return new ClaudeRequestNormalizerInterceptor(context);
138
139
  }
139
140
  }
141
+ /** Re-list deployments occasionally so a long-lived daemon picks up new models. */
142
+ const MODEL_CACHE_TTL_MS = 10 * 60 * 1000;
143
+ /** How long to wait before retrying after a failed or empty listing. */
144
+ const MODEL_RETRY_BACKOFF_MS = 60 * 1000;
140
145
  class ClaudeRequestNormalizerInterceptor {
141
- configModel;
146
+ context;
142
147
  name = 'claude-request-normalizer';
143
- constructor(configModel) {
144
- this.configModel = configModel;
148
+ availableModels = [];
149
+ loadedAt = 0;
150
+ lastAttemptAt = 0;
151
+ inFlight = null;
152
+ constructor(context) {
153
+ this.context = context;
154
+ }
155
+ /** Test seam — lets the suite supply a deployment list without a network call. */
156
+ setAvailableModelsForTest(models) {
157
+ this.availableModels = models;
158
+ this.loadedAt = Date.now();
145
159
  }
146
160
  async onRequest(context) {
147
161
  if (!context.requestBody || !context.headers['content-type']?.includes('application/json')) {
@@ -150,7 +164,8 @@ class ClaudeRequestNormalizerInterceptor {
150
164
  try {
151
165
  const bodyStr = context.requestBody.toString('utf-8');
152
166
  const body = JSON.parse(bodyStr);
153
- const model = (typeof body.model === 'string' && body.model) || this.configModel || '';
167
+ const requestedModel = typeof body.model === 'string' ? body.model : '';
168
+ const model = requestedModel || this.context.config.model || '';
154
169
  if (!model) {
155
170
  return;
156
171
  }
@@ -162,7 +177,18 @@ class ClaudeRequestNormalizerInterceptor {
162
177
  if (body.thinking) {
163
178
  modifiedByThinking = handleThinkingField(body, caps, model);
164
179
  }
165
- if (modifiedBySampling || modifiedByEffort || modifiedByThinking) {
180
+ // Capabilities above are read from the client's requested (canonical) name
181
+ // on purpose — MODEL_CAPABILITY_TABLE's patterns assume family-first order,
182
+ // so this must run before any tenant-id rewrite below.
183
+ let modifiedByModel = false;
184
+ if (requestedModel) {
185
+ const resolved = await this.resolveModel(requestedModel);
186
+ if (resolved && resolved !== requestedModel) {
187
+ body.model = resolved;
188
+ modifiedByModel = true;
189
+ }
190
+ }
191
+ if (modifiedBySampling || modifiedByEffort || modifiedByThinking || modifiedByModel) {
166
192
  const newBodyStr = JSON.stringify(body);
167
193
  context.requestBody = Buffer.from(newBodyStr, 'utf-8');
168
194
  context.headers['content-length'] = String(context.requestBody.length);
@@ -172,5 +198,73 @@ class ClaudeRequestNormalizerInterceptor {
172
198
  // Not valid JSON or unexpected structure — pass through unchanged
173
199
  }
174
200
  }
201
+ /**
202
+ * Resolve the client's requested model name to a deployment the tenant's
203
+ * gateway actually has. Returns `undefined` (pass through unchanged) when
204
+ * the catalog is unavailable or nothing matches — never substitutes a
205
+ * different capability tier.
206
+ */
207
+ async resolveModel(requestedModel) {
208
+ await this.ensureModelsLoaded();
209
+ if (this.availableModels.length === 0) {
210
+ return undefined;
211
+ }
212
+ const resolution = resolveClaudeDeployment(requestedModel, this.availableModels);
213
+ if (resolution.kind === 'unresolved') {
214
+ return undefined;
215
+ }
216
+ if (resolution.kind === 'resolved') {
217
+ logger.debug(`[${this.name}] Resolved "${requestedModel}" to deployment "${resolution.model}"`);
218
+ }
219
+ return resolution.model;
220
+ }
221
+ /**
222
+ * Load the deployment list once, then refresh it on a TTL. Concurrent requests
223
+ * share a single in-flight fetch so a burst of turns does not fan out into a
224
+ * burst of list calls.
225
+ */
226
+ async ensureModelsLoaded() {
227
+ const now = Date.now();
228
+ const fresh = this.availableModels.length > 0 && now - this.loadedAt < MODEL_CACHE_TTL_MS;
229
+ if (fresh)
230
+ return;
231
+ // Negative cache: without this, expired credentials or a 5xx gateway turn
232
+ // every single request into a fresh listing call, because a failed load
233
+ // leaves availableModels empty and so never looks "fresh".
234
+ const backingOff = this.lastAttemptAt !== 0
235
+ && now - this.lastAttemptAt < MODEL_RETRY_BACKOFF_MS;
236
+ if (backingOff)
237
+ return;
238
+ if (this.inFlight)
239
+ return this.inFlight;
240
+ this.inFlight = this.loadModels().finally(() => { this.inFlight = null; });
241
+ return this.inFlight;
242
+ }
243
+ async loadModels() {
244
+ this.lastAttemptAt = Date.now();
245
+ const credentials = this.context.credentials;
246
+ if (!credentials) {
247
+ logger.debug(`[${this.name}] No credentials available; model names pass through unchanged`);
248
+ return;
249
+ }
250
+ try {
251
+ const apiUrl = credentials.apiUrl || this.context.config.targetApiUrl;
252
+ const models = 'cookies' in credentials
253
+ ? await fetchCodeMieLlmModels(apiUrl, credentials.cookies)
254
+ : await fetchCodeMieLlmModels(apiUrl, credentials.token);
255
+ this.availableModels = models
256
+ .filter((model) => model.enabled !== false)
257
+ .map((model) => model.deployment_name || model.base_name)
258
+ .filter((name) => Boolean(name))
259
+ .filter(isClaudeServableDeployment);
260
+ this.loadedAt = Date.now();
261
+ logger.debug(`[${this.name}] Loaded ${this.availableModels.length} Claude deployments for model resolution`);
262
+ }
263
+ catch (error) {
264
+ // A failed list must not fail the request.
265
+ logger.debug(`[${this.name}] Could not list deployments; passing model names through: ` +
266
+ `${error instanceof Error ? error.message : String(error)}`);
267
+ }
268
+ }
175
269
  }
176
270
  //# sourceMappingURL=claude-request-normalizer.plugin.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"claude-request-normalizer.plugin.js","sourceRoot":"","sources":["../../../../../../src/providers/plugins/sso/proxy/plugins/claude-request-normalizer.plugin.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"claude-request-normalizer.plugin.js","sourceRoot":"","sources":["../../../../../../src/providers/plugins/sso/proxy/plugins/claude-request-normalizer.plugin.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,10 @@
4
4
  *
5
5
  * SOLID: Single responsibility = inject CodeMie headers
6
6
  * KISS: Straightforward header injection
7
+ *
8
+ * Repository and branch attribution for Claude Desktop is derived by
9
+ * DesktopRepositoryResolver in the telemetry layer. This interceptor only writes the
10
+ * resolved values into headers — it performs no discovery of its own.
7
11
  */
8
12
  import { ProxyPlugin, PluginContext, ProxyInterceptor } from './types.js';
9
13
  export declare class HeaderInjectionPlugin implements ProxyPlugin {
@@ -1 +1 @@
1
- {"version":3,"file":"header-injection.plugin.d.ts","sourceRoot":"","sources":["../../../../../../src/providers/plugins/sso/proxy/plugins/header-injection.plugin.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAK1E,qBAAa,qBAAsB,YAAW,WAAW;IACvD,EAAE,SAA4B;IAC9B,IAAI,SAAsB;IAC1B,OAAO,SAAW;IAClB,QAAQ,SAAM;IAER,iBAAiB,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,gBAAgB,CAAC;CAG3E"}
1
+ {"version":3,"file":"header-injection.plugin.d.ts","sourceRoot":"","sources":["../../../../../../src/providers/plugins/sso/proxy/plugins/header-injection.plugin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAK1E,qBAAa,qBAAsB,YAAW,WAAW;IACvD,EAAE,SAA4B;IAC9B,IAAI,SAAsB;IAC1B,OAAO,SAAW;IAClB,QAAQ,SAAM;IAER,iBAAiB,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,gBAAgB,CAAC;CAG3E"}