@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
@@ -12,18 +12,20 @@ import { JWTAuthPlugin } from './jwt-auth.plugin.js';
12
12
  import { HeaderInjectionPlugin } from './header-injection.plugin.js';
13
13
  import { RequestSanitizerPlugin } from './request-sanitizer.plugin.js';
14
14
  import { ClaudeRequestNormalizerPlugin } from './claude-request-normalizer.plugin.js';
15
+ import { BackgroundRequestNormalizerPlugin } from './background-request-normalizer.plugin.js';
15
16
  import { KimiRequestNormalizerPlugin } from './kimi-request-normalizer.plugin.js';
16
17
  import { CodexRequestNormalizerPlugin } from './codex-request-normalizer.plugin.js';
17
18
  import { CodexEncryptedContentSanitizerPlugin } from './codex-encrypted-content-sanitizer.plugin.js';
18
19
  import { CopilotEncryptedContentSanitizerPlugin } from './copilot-encrypted-content-sanitizer.plugin.js';
19
20
  import { VsCodeRequestNormalizerPlugin } from './vscode-request-normalizer.plugin.js';
20
21
  import { LoggingPlugin } from './logging.plugin.js';
22
+ import { RoutingHeaderInjectorPlugin } from './routing-header-injector.plugin.js';
21
23
  /**
22
24
  * Register core plugins
23
25
  * Called at app startup
24
26
  */
25
27
  export declare function registerCorePlugins(): void;
26
- export { MCPAuthPlugin, EndpointBlockerPlugin, GatewayKeyPlugin, SSOAuthPlugin, JWTAuthPlugin, HeaderInjectionPlugin, RequestSanitizerPlugin, ClaudeRequestNormalizerPlugin, KimiRequestNormalizerPlugin, CodexRequestNormalizerPlugin, CodexEncryptedContentSanitizerPlugin, CopilotEncryptedContentSanitizerPlugin, VsCodeRequestNormalizerPlugin, LoggingPlugin, };
28
+ export { MCPAuthPlugin, EndpointBlockerPlugin, GatewayKeyPlugin, SSOAuthPlugin, JWTAuthPlugin, HeaderInjectionPlugin, RequestSanitizerPlugin, ClaudeRequestNormalizerPlugin, BackgroundRequestNormalizerPlugin, KimiRequestNormalizerPlugin, CodexRequestNormalizerPlugin, CodexEncryptedContentSanitizerPlugin, CopilotEncryptedContentSanitizerPlugin, VsCodeRequestNormalizerPlugin, LoggingPlugin, RoutingHeaderInjectorPlugin, };
27
29
  export { SSOSessionSyncPlugin } from './sso.session-sync.plugin.js';
28
30
  export { getPluginRegistry, resetPluginRegistry } from './registry.js';
29
31
  export * from './types.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/providers/plugins/sso/proxy/plugins/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,EAAE,6BAA6B,EAAE,MAAM,uCAAuC,CAAC;AACtF,OAAO,EAAE,2BAA2B,EAAE,MAAM,qCAAqC,CAAC;AAClF,OAAO,EAAE,4BAA4B,EAAE,MAAM,sCAAsC,CAAC;AACpF,OAAO,EAAE,oCAAoC,EAAE,MAAM,+CAA+C,CAAC;AACrG,OAAO,EAAE,sCAAsC,EAAE,MAAM,iDAAiD,CAAC;AACzG,OAAO,EAAE,6BAA6B,EAAE,MAAM,uCAAuC,CAAC;AACtF,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGpD;;;GAGG;AACH,wBAAgB,mBAAmB,IAAI,IAAI,CAmB1C;AAMD,OAAO,EACL,aAAa,EACb,qBAAqB,EACrB,gBAAgB,EAChB,aAAa,EACb,aAAa,EACb,qBAAqB,EACrB,sBAAsB,EACtB,6BAA6B,EAC7B,2BAA2B,EAC3B,4BAA4B,EAC5B,oCAAoC,EACpC,sCAAsC,EACtC,6BAA6B,EAC7B,aAAa,GACd,CAAC;AACF,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACvE,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/providers/plugins/sso/proxy/plugins/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,EAAE,6BAA6B,EAAE,MAAM,uCAAuC,CAAC;AACtF,OAAO,EAAE,iCAAiC,EAAE,MAAM,2CAA2C,CAAC;AAC9F,OAAO,EAAE,2BAA2B,EAAE,MAAM,qCAAqC,CAAC;AAClF,OAAO,EAAE,4BAA4B,EAAE,MAAM,sCAAsC,CAAC;AACpF,OAAO,EAAE,oCAAoC,EAAE,MAAM,+CAA+C,CAAC;AACrG,OAAO,EAAE,sCAAsC,EAAE,MAAM,iDAAiD,CAAC;AACzG,OAAO,EAAE,6BAA6B,EAAE,MAAM,uCAAuC,CAAC;AACtF,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,2BAA2B,EAAE,MAAM,qCAAqC,CAAC;AAGlF;;;GAGG;AACH,wBAAgB,mBAAmB,IAAI,IAAI,CAqB1C;AAMD,OAAO,EACL,aAAa,EACb,qBAAqB,EACrB,gBAAgB,EAChB,aAAa,EACb,aAAa,EACb,qBAAqB,EACrB,sBAAsB,EACtB,6BAA6B,EAC7B,iCAAiC,EACjC,2BAA2B,EAC3B,4BAA4B,EAC5B,oCAAoC,EACpC,sCAAsC,EACtC,6BAA6B,EAC7B,aAAa,EACb,2BAA2B,GAC5B,CAAC;AACF,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACvE,cAAc,YAAY,CAAC"}
@@ -13,12 +13,14 @@ import { JWTAuthPlugin } from './jwt-auth.plugin.js';
13
13
  import { HeaderInjectionPlugin } from './header-injection.plugin.js';
14
14
  import { RequestSanitizerPlugin } from './request-sanitizer.plugin.js';
15
15
  import { ClaudeRequestNormalizerPlugin } from './claude-request-normalizer.plugin.js';
16
+ import { BackgroundRequestNormalizerPlugin } from './background-request-normalizer.plugin.js';
16
17
  import { KimiRequestNormalizerPlugin } from './kimi-request-normalizer.plugin.js';
17
18
  import { CodexRequestNormalizerPlugin } from './codex-request-normalizer.plugin.js';
18
19
  import { CodexEncryptedContentSanitizerPlugin } from './codex-encrypted-content-sanitizer.plugin.js';
19
20
  import { CopilotEncryptedContentSanitizerPlugin } from './copilot-encrypted-content-sanitizer.plugin.js';
20
21
  import { VsCodeRequestNormalizerPlugin } from './vscode-request-normalizer.plugin.js';
21
22
  import { LoggingPlugin } from './logging.plugin.js';
23
+ import { RoutingHeaderInjectorPlugin } from './routing-header-injector.plugin.js';
22
24
  import { SSOSessionSyncPlugin } from './sso.session-sync.plugin.js';
23
25
  /**
24
26
  * Register core plugins
@@ -33,6 +35,7 @@ export function registerCorePlugins() {
33
35
  registry.register(new SSOAuthPlugin());
34
36
  registry.register(new JWTAuthPlugin());
35
37
  registry.register(new ClaudeRequestNormalizerPlugin()); // Priority 14 - normalizes thinking params for claude models
38
+ registry.register(new BackgroundRequestNormalizerPlugin()); // Priority 14 - forces cheap background calls (e.g. title-gen) onto haiku
36
39
  registry.register(new KimiRequestNormalizerPlugin()); // Priority 14 - caps Kimi output token requests for upstream limits
37
40
  registry.register(new CodexRequestNormalizerPlugin()); // Priority 14 - maps the Codex app's undated model names onto dated CodeMie deployments
38
41
  registry.register(new RequestSanitizerPlugin()); // Priority 15 - strips unsupported reasoning params
@@ -41,12 +44,13 @@ export function registerCorePlugins() {
41
44
  registry.register(new VsCodeRequestNormalizerPlugin()); // Priority 17 - constrains VS Code user identifiers
42
45
  registry.register(new HeaderInjectionPlugin());
43
46
  registry.register(new LoggingPlugin()); // Always enabled - logs to log files at INFO level
47
+ registry.register(new RoutingHeaderInjectorPlugin()); // Priority 55 - copies router decision headers onto the response body so agents persist them
44
48
  registry.register(new SSOSessionSyncPlugin()); // Priority 100 - syncs sessions via multiple processors
45
49
  }
46
50
  // Auto-register on import
47
51
  registerCorePlugins();
48
52
  // Re-export for convenience
49
- export { MCPAuthPlugin, EndpointBlockerPlugin, GatewayKeyPlugin, SSOAuthPlugin, JWTAuthPlugin, HeaderInjectionPlugin, RequestSanitizerPlugin, ClaudeRequestNormalizerPlugin, KimiRequestNormalizerPlugin, CodexRequestNormalizerPlugin, CodexEncryptedContentSanitizerPlugin, CopilotEncryptedContentSanitizerPlugin, VsCodeRequestNormalizerPlugin, LoggingPlugin, };
53
+ export { MCPAuthPlugin, EndpointBlockerPlugin, GatewayKeyPlugin, SSOAuthPlugin, JWTAuthPlugin, HeaderInjectionPlugin, RequestSanitizerPlugin, ClaudeRequestNormalizerPlugin, BackgroundRequestNormalizerPlugin, KimiRequestNormalizerPlugin, CodexRequestNormalizerPlugin, CodexEncryptedContentSanitizerPlugin, CopilotEncryptedContentSanitizerPlugin, VsCodeRequestNormalizerPlugin, LoggingPlugin, RoutingHeaderInjectorPlugin, };
50
54
  export { SSOSessionSyncPlugin } from './sso.session-sync.plugin.js';
51
55
  export { getPluginRegistry, resetPluginRegistry } from './registry.js';
52
56
  export * from './types.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../src/providers/plugins/sso/proxy/plugins/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../src/providers/plugins/sso/proxy/plugins/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,67 @@
1
+ /**
2
+ * Routing Header Injector Plugin
3
+ * Priority: 55 (after logging at 50, before session-sync at 100)
4
+ *
5
+ * The upstream router (CodeMie Switchyard or the LiteLLM router) reports which model
6
+ * tier it picked, and why, in HTTP *response headers*. Headers are forwarded downstream
7
+ * but agents do not persist them, so the decision is lost the moment the turn ends.
8
+ *
9
+ * This plugin copies those headers onto the response *body*, where the agent stores them
10
+ * verbatim in its own transcript alongside `usage`. The analytics pipeline
11
+ * (cost/usage-readers.ts) then reads routing metadata per turn with no join and no
12
+ * sidecar file.
13
+ *
14
+ * Two response paths:
15
+ * JSON (non-streaming) — buffer the body, merge fields at the top level (which is the
16
+ * message object for the Messages API), return a new response.
17
+ * SSE (streaming) — stash headers in `context.metadata` during onUpstreamResponse,
18
+ * then merge them into the first `message_start` event's nested
19
+ * `message` object as it streams past.
20
+ *
21
+ * Header → body key mapping (matches what the analytics reader / statusline domain layer
22
+ * expects — see routing-headers.mjs): the body key is the lowercased header name,
23
+ * hyphens intact (`x-litellm-router-tier`, `x-codemie-routing-tier`). Neither family is
24
+ * transformed — a header name is a valid JS property via bracket access either way, and
25
+ * keeping it verbatim means there is exactly one place (the header name itself) a new field
26
+ * needs to be named.
27
+ *
28
+ * Only one family is ever present: a deployment routes through Switchyard or the LiteLLM
29
+ * router, not both. Capturing by prefix means a new field in either family is recorded
30
+ * without a code change here.
31
+ */
32
+ import { IncomingHttpHeaders } from 'http';
33
+ import { ProxyPlugin, PluginContext, ProxyInterceptor } from './types.js';
34
+ /** Fields extracted from routing headers, keyed as they will appear in the body. */
35
+ export type RoutingInjections = Record<string, string>;
36
+ /**
37
+ * Extract routing-relevant upstream response headers into a flat body-key → value map.
38
+ * Returns an empty object when the response carries no routing metadata, which is the
39
+ * common case for non-routed deployments and for requests that name a literal model ID.
40
+ */
41
+ export declare function extractRoutingHeaders(headers: IncomingHttpHeaders): RoutingInjections;
42
+ /**
43
+ * Merge fields into the top-level JSON object of a body buffer. Returns the buffer
44
+ * unchanged when there is nothing to inject, the payload is not a JSON object, or
45
+ * parsing fails — a routing annotation must never corrupt a response.
46
+ */
47
+ export declare function injectIntoJsonBody(body: Buffer, injections: RoutingInjections): Buffer;
48
+ /**
49
+ * Merge fields into the `message` object of a `message_start` SSE event.
50
+ *
51
+ * Rewrites only whole `data:` lines that parse as a `message_start` event; every other
52
+ * line — including partial trailing lines at a chunk boundary — is passed through as the
53
+ * original bytes, never decoded to UTF-8 and re-encoded. A chunk boundary can cut a later,
54
+ * unrelated line mid multi-byte character; round-tripping the whole chunk through
55
+ * `toString('utf-8')` would replace those truncated bytes with U+FFFD and then bake that
56
+ * corruption in permanently once any line in the chunk was modified. Returns the original
57
+ * buffer when no event was modified.
58
+ */
59
+ export declare function injectIntoSseChunk(chunk: Buffer, injections: RoutingInjections): Buffer;
60
+ export declare class RoutingHeaderInjectorPlugin implements ProxyPlugin {
61
+ id: string;
62
+ name: string;
63
+ version: string;
64
+ priority: number;
65
+ createInterceptor(_context: PluginContext): Promise<ProxyInterceptor>;
66
+ }
67
+ //# sourceMappingURL=routing-header-injector.plugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"routing-header-injector.plugin.d.ts","sourceRoot":"","sources":["../../../../../../src/providers/plugins/sso/proxy/plugins/routing-header-injector.plugin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,OAAO,EAAE,mBAAmB,EAAmB,MAAM,MAAM,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,gBAAgB,EAAyB,MAAM,YAAY,CAAC;AAajG,oFAAoF;AACpF,MAAM,MAAM,iBAAiB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAEvD;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,mBAAmB,GAAG,iBAAiB,CAYrF;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,iBAAiB,GAAG,MAAM,CAWtF;AAkBD;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,iBAAiB,GAAG,MAAM,CA4CvF;AAED,qBAAa,2BAA4B,YAAW,WAAW;IAC7D,EAAE,SAA4C;IAC9C,IAAI,SAA6B;IACjC,OAAO,SAAW;IAClB,QAAQ,SAAM;IAER,iBAAiB,CAAC,QAAQ,EAAE,aAAa,GAAG,OAAO,CAAC,gBAAgB,CAAC;CAG5E"}
@@ -0,0 +1,203 @@
1
+ /**
2
+ * Routing Header Injector Plugin
3
+ * Priority: 55 (after logging at 50, before session-sync at 100)
4
+ *
5
+ * The upstream router (CodeMie Switchyard or the LiteLLM router) reports which model
6
+ * tier it picked, and why, in HTTP *response headers*. Headers are forwarded downstream
7
+ * but agents do not persist them, so the decision is lost the moment the turn ends.
8
+ *
9
+ * This plugin copies those headers onto the response *body*, where the agent stores them
10
+ * verbatim in its own transcript alongside `usage`. The analytics pipeline
11
+ * (cost/usage-readers.ts) then reads routing metadata per turn with no join and no
12
+ * sidecar file.
13
+ *
14
+ * Two response paths:
15
+ * JSON (non-streaming) — buffer the body, merge fields at the top level (which is the
16
+ * message object for the Messages API), return a new response.
17
+ * SSE (streaming) — stash headers in `context.metadata` during onUpstreamResponse,
18
+ * then merge them into the first `message_start` event's nested
19
+ * `message` object as it streams past.
20
+ *
21
+ * Header → body key mapping (matches what the analytics reader / statusline domain layer
22
+ * expects — see routing-headers.mjs): the body key is the lowercased header name,
23
+ * hyphens intact (`x-litellm-router-tier`, `x-codemie-routing-tier`). Neither family is
24
+ * transformed — a header name is a valid JS property via bracket access either way, and
25
+ * keeping it verbatim means there is exactly one place (the header name itself) a new field
26
+ * needs to be named.
27
+ *
28
+ * Only one family is ever present: a deployment routes through Switchyard or the LiteLLM
29
+ * router, not both. Capturing by prefix means a new field in either family is recorded
30
+ * without a code change here.
31
+ */
32
+ import { logger } from '../../../../../utils/logger.js';
33
+ const LITELLM_PREFIX = 'x-litellm-';
34
+ // x-codemie-routed-model is a real Switchyard response header (confirmed against live traffic —
35
+ // it always matches the response body's own `model`, i.e. the actually-dispatched model) that
36
+ // does NOT share a prefix with x-codemie-routing-*/x-codemie-requested-*, so it needs its own
37
+ // entry or it silently never reaches the body (see routing-headers.mjs's `routedModel`).
38
+ const CODEMIE_ROUTING_PREFIXES = ['x-codemie-routing-', 'x-codemie-requested-', 'x-codemie-routed-'];
39
+ const METADATA_HEADERS_KEY = '_routingInjectionHeaders';
40
+ const METADATA_INJECTED_KEY = '_routingInjected';
41
+ /**
42
+ * Extract routing-relevant upstream response headers into a flat body-key → value map.
43
+ * Returns an empty object when the response carries no routing metadata, which is the
44
+ * common case for non-routed deployments and for requests that name a literal model ID.
45
+ */
46
+ export function extractRoutingHeaders(headers) {
47
+ const out = {};
48
+ for (const [key, value] of Object.entries(headers)) {
49
+ if (value == null)
50
+ continue;
51
+ const raw = Array.isArray(value) ? value[0] : value;
52
+ if (raw == null)
53
+ continue;
54
+ const lower = key.toLowerCase();
55
+ if (lower.startsWith(LITELLM_PREFIX) || CODEMIE_ROUTING_PREFIXES.some((p) => lower.startsWith(p))) {
56
+ out[lower] = raw;
57
+ }
58
+ }
59
+ return out;
60
+ }
61
+ /**
62
+ * Merge fields into the top-level JSON object of a body buffer. Returns the buffer
63
+ * unchanged when there is nothing to inject, the payload is not a JSON object, or
64
+ * parsing fails — a routing annotation must never corrupt a response.
65
+ */
66
+ export function injectIntoJsonBody(body, injections) {
67
+ if (Object.keys(injections).length === 0)
68
+ return body;
69
+ try {
70
+ const parsed = JSON.parse(body.toString('utf-8'));
71
+ if (typeof parsed !== 'object' || parsed === null || Array.isArray(parsed)) {
72
+ return body;
73
+ }
74
+ return Buffer.from(JSON.stringify({ ...parsed, ...injections }), 'utf-8');
75
+ }
76
+ catch {
77
+ return body;
78
+ }
79
+ }
80
+ const NEWLINE = Buffer.from('\n', 'utf-8');
81
+ /** Splits a buffer on the `\n` byte without decoding it, so lines that are untouched below keep their exact original bytes. */
82
+ function splitBufferLines(chunk) {
83
+ const lines = [];
84
+ let start = 0;
85
+ for (let i = 0; i < chunk.length; i++) {
86
+ if (chunk[i] === 0x0a) {
87
+ lines.push(chunk.subarray(start, i));
88
+ start = i + 1;
89
+ }
90
+ }
91
+ lines.push(chunk.subarray(start));
92
+ return lines;
93
+ }
94
+ /**
95
+ * Merge fields into the `message` object of a `message_start` SSE event.
96
+ *
97
+ * Rewrites only whole `data:` lines that parse as a `message_start` event; every other
98
+ * line — including partial trailing lines at a chunk boundary — is passed through as the
99
+ * original bytes, never decoded to UTF-8 and re-encoded. A chunk boundary can cut a later,
100
+ * unrelated line mid multi-byte character; round-tripping the whole chunk through
101
+ * `toString('utf-8')` would replace those truncated bytes with U+FFFD and then bake that
102
+ * corruption in permanently once any line in the chunk was modified. Returns the original
103
+ * buffer when no event was modified.
104
+ */
105
+ export function injectIntoSseChunk(chunk, injections) {
106
+ if (Object.keys(injections).length === 0)
107
+ return chunk;
108
+ const lines = splitBufferLines(chunk);
109
+ let modified = false;
110
+ const outLines = [];
111
+ for (const lineBuf of lines) {
112
+ const line = lineBuf.toString('utf-8');
113
+ if (!line.startsWith('data: ')) {
114
+ outLines.push(lineBuf);
115
+ continue;
116
+ }
117
+ let parsed;
118
+ try {
119
+ parsed = JSON.parse(line.slice(6));
120
+ }
121
+ catch {
122
+ // Not JSON (e.g. `[DONE]`) or a line split across chunks — pass through untouched.
123
+ outLines.push(lineBuf);
124
+ continue;
125
+ }
126
+ const event = parsed;
127
+ if (typeof parsed === 'object' &&
128
+ parsed !== null &&
129
+ !Array.isArray(parsed) &&
130
+ event.type === 'message_start' &&
131
+ typeof event.message === 'object' &&
132
+ event.message !== null) {
133
+ const message = { ...event.message, ...injections };
134
+ outLines.push(Buffer.from('data: ' + JSON.stringify({ ...event, message }), 'utf-8'));
135
+ modified = true;
136
+ }
137
+ else {
138
+ outLines.push(lineBuf);
139
+ }
140
+ }
141
+ if (!modified)
142
+ return chunk;
143
+ const parts = [];
144
+ outLines.forEach((lineBuf, i) => {
145
+ if (i > 0)
146
+ parts.push(NEWLINE);
147
+ parts.push(lineBuf);
148
+ });
149
+ return Buffer.concat(parts);
150
+ }
151
+ export class RoutingHeaderInjectorPlugin {
152
+ id = '@codemie/proxy-routing-header-injector';
153
+ name = 'Routing Header Injector';
154
+ version = '1.0.0';
155
+ priority = 55; // After logging (50), before session-sync (100)
156
+ async createInterceptor(_context) {
157
+ return new RoutingHeaderInjectorInterceptor();
158
+ }
159
+ }
160
+ class RoutingHeaderInjectorInterceptor {
161
+ name = 'routing-header-injector';
162
+ async onUpstreamResponse(context, response, tools) {
163
+ const injections = extractRoutingHeaders(response.headers);
164
+ if (Object.keys(injections).length === 0) {
165
+ return response;
166
+ }
167
+ const contentType = String(response.headers['content-type'] ?? '').toLowerCase();
168
+ if (contentType.includes('text/event-stream')) {
169
+ // Streaming: defer to onResponseChunk so the stream is never buffered.
170
+ context.metadata[METADATA_HEADERS_KEY] = injections;
171
+ logger.debug(`[${this.name}] Captured ${Object.keys(injections).length} routing header(s) for SSE injection`);
172
+ return response;
173
+ }
174
+ try {
175
+ const body = await tools.readBody(response);
176
+ const modified = injectIntoJsonBody(body, injections);
177
+ if (modified !== body) {
178
+ logger.debug(`[${this.name}] Injected ${Object.keys(injections).length} routing header(s) into JSON response`);
179
+ }
180
+ return tools.fromBuffer(response, modified);
181
+ }
182
+ catch (error) {
183
+ logger.debug(`[${this.name}] JSON injection failed, forwarding original response:`, error);
184
+ return response;
185
+ }
186
+ }
187
+ async onResponseChunk(context, chunk) {
188
+ if (context.metadata[METADATA_INJECTED_KEY]) {
189
+ return chunk;
190
+ }
191
+ const injections = context.metadata[METADATA_HEADERS_KEY];
192
+ if (!injections || Object.keys(injections).length === 0) {
193
+ return chunk;
194
+ }
195
+ const modified = injectIntoSseChunk(chunk, injections);
196
+ if (modified !== chunk) {
197
+ context.metadata[METADATA_INJECTED_KEY] = true;
198
+ logger.debug(`[${this.name}] Injected routing headers into SSE message_start`);
199
+ }
200
+ return modified;
201
+ }
202
+ }
203
+ //# sourceMappingURL=routing-header-injector.plugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"routing-header-injector.plugin.js","sourceRoot":"","sources":["../../../../../../src/providers/plugins/sso/proxy/plugins/routing-header-injector.plugin.ts"],"names":[],"mappings":"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"}
@@ -18,6 +18,53 @@ export declare const CODEMIE_ENDPOINTS: {
18
18
  readonly METRICS: "/v1/metrics";
19
19
  readonly AUTH_LOGIN: "/v1/auth/login";
20
20
  };
21
+ /**
22
+ * One tier's target model within a router's `tiers` map — mirrors the backend's `RouterTier`
23
+ * (src/codemie/configs/llm_config.py).
24
+ */
25
+ export interface RouterTier {
26
+ model: string;
27
+ label?: string;
28
+ }
29
+ /**
30
+ * The platform's fixed 4-tier shape every router option carries (backend's `RouterTiers`),
31
+ * regardless of how many distinct models actually back it — a 2-model router maps onto all
32
+ * 4 keys, so several tiers commonly share the same target model.
33
+ */
34
+ export interface RouterTiers {
35
+ simple: RouterTier;
36
+ medium: RouterTier;
37
+ complex: RouterTier;
38
+ reasoning: RouterTier;
39
+ }
40
+ /**
41
+ * Render a router's tier map as e.g. `"simple/medium: GPT-5.6 Luna · complex/reasoning:
42
+ * GPT-5.6 Terra"` — tiers pointing at the same model are grouped under one label instead of
43
+ * repeating it, and each group shows the target's own catalog label (falling back to its id
44
+ * when the backend didn't send one) rather than the router's own name, which says nothing
45
+ * about what it actually resolves to per tier.
46
+ */
47
+ export declare function describeRouterTiers(tiers: RouterTiers): string;
48
+ /** `RoutingMode` on the backend (llm_config.py): the router's dispatch strategy. */
49
+ export type RouterStrategy = 'signal' | 'classifier';
50
+ /**
51
+ * Every id (deployment_name, base_name) a catalog entry's own label can be looked up by.
52
+ * Used to resolve a bare id referenced elsewhere in the catalog — a router's
53
+ * `classifier_model`, say — back to the human label CodeMie configured for it, the same way
54
+ * `modelIdentifiers`-style lookups already resolve a routed-to id for the statusline.
55
+ */
56
+ export declare function buildModelLabelIndex(models: LlmModel[]): Map<string, string>;
57
+ /**
58
+ * Full router description for a model/agent picker, e.g. `"LiteLLM (classifier -> Claude
59
+ * Haiku 4.5): simple/medium: GPT-5.6 Luna · complex/reasoning: GPT-5.6 Terra"`, or
60
+ * `"Switchyard (signal): ..."` when the router has no classifier model. `labelIndex` (see
61
+ * {@link buildModelLabelIndex}, built from the FULL catalog — a classifier model may belong
62
+ * to a family a caller otherwise filters out, e.g. a Claude classifier gating a GPT router)
63
+ * resolves `classifier_model` to its own label instead of showing a bare id. `''` when the
64
+ * entry isn't a router or the backend hasn't populated a tier map for it yet — there is
65
+ * nothing more specific to add beyond the id/label already shown elsewhere.
66
+ */
67
+ export declare function describeRouter(model: LlmModel, labelIndex: Map<string, string>): string;
21
68
  /**
22
69
  * Full model descriptor returned by GET /v1/llm_models?include_all=true
23
70
  */
@@ -46,6 +93,54 @@ export interface LlmModel {
46
93
  top_p?: boolean;
47
94
  };
48
95
  forbidden_for_web?: boolean;
96
+ /**
97
+ * Present (and `true`) on a Switchyard-generated virtual router entry (`LlmRouterOption` in
98
+ * the backend's `Union[LLMModel, LlmRouterOption]` response) — a `base_name` that itself
99
+ * dispatches to a capable/efficient pair rather than naming a concrete deployment.
100
+ */
101
+ is_router?: boolean;
102
+ /**
103
+ * Present on a Switchyard virtual router (`LlmRouterOption.router_type` on the backend):
104
+ * `"switchyard"` or `"litellm_auto"` — a client display badge only, never a behavioral
105
+ * branch on the backend.
106
+ */
107
+ router_type?: string;
108
+ /** `"signal"` or `"classifier"` — the router's dispatch strategy. */
109
+ strategy?: RouterStrategy;
110
+ /**
111
+ * The classifier model this router's classifier-mode strategy scores requests with (bare
112
+ * id — resolve via {@link buildModelLabelIndex} for display). Absent for a signal-mode router.
113
+ */
114
+ classifier_model?: string;
115
+ /**
116
+ * Present on a Switchyard virtual router (`LlmRouterOption.tiers` on the backend): the
117
+ * model+label it resolves to for each of the platform's 4 fixed tiers. See {@link RouterTiers}.
118
+ */
119
+ tiers?: RouterTiers;
120
+ /**
121
+ * Present on a regular `LLMModel` entry that is declared as a LiteLLM auto-router
122
+ * (`LiteLLMRouterConfig` on the backend) — LiteLLM exposes no reliable API signal for this,
123
+ * so the backend declares it explicitly. `is_router` is nested here rather than top-level
124
+ * because this object exists purely to carry it (see the backend's own comment on
125
+ * `LiteLLMRouterConfig`), unlike the Switchyard case above where it lives on the model itself.
126
+ */
127
+ litellm_router?: {
128
+ is_router?: boolean;
129
+ /**
130
+ * The concrete deployment id this auto-router currently resolves to by default (e.g.
131
+ * `claude-sonnet-5`, `gpt-5.6-terra-2026-07-09`). The router's own alias name is
132
+ * family-agnostic by convention (`claude-smart-router` and `gpt-smart-router` are both
133
+ * named like routers, not like their target), so this is the one reliable signal for
134
+ * which backend family a consumer restricted to one family (e.g. codemie-codex, which
135
+ * can only drive GPT/Codex over the Responses API) should judge it by.
136
+ */
137
+ counterfactual_model?: string;
138
+ /** Same 4-tier shape as the top-level `tiers` field above, for a declared LiteLLM auto-router. */
139
+ tiers?: RouterTiers;
140
+ /** Same semantics as the top-level `strategy`/`classifier_model` fields above. */
141
+ strategy?: RouterStrategy;
142
+ classifier_model?: string;
143
+ };
49
144
  }
50
145
  /**
51
146
  * Fetch full model objects from /v1/llm_models?include_all=true (supports both cookies and JWT)
@@ -1 +1 @@
1
- {"version":3,"file":"sso.http-client.d.ts","sourceRoot":"","sources":["../../../../src/providers/plugins/sso/sso.http-client.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAgB,kBAAkB,EAA+B,MAAM,qBAAqB,CAAC;AAEzG,OAAO,EACL,oBAAoB,EAErB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,oBAAoB,EAAE,CAAC;AAChC,YAAY,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAE1E;;GAEG;AACH,eAAO,MAAM,iBAAiB;;;;;;;CAOpB,CAAC;AAGX;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE;QACL,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,2BAA2B,CAAC,EAAE,MAAM,CAAC;QACrC,+BAA+B,CAAC,EAAE,MAAM,CAAC;KAC1C,CAAC;IACF,QAAQ,CAAC,EAAE;QACT,SAAS,CAAC,EAAE,OAAO,CAAC;QACpB,KAAK,CAAC,EAAE,OAAO,CAAC;QAChB,WAAW,CAAC,EAAE,OAAO,CAAC;QACtB,mBAAmB,CAAC,EAAE,OAAO,CAAC;QAC9B,aAAa,CAAC,EAAE,OAAO,CAAC;QACxB,UAAU,CAAC,EAAE,OAAO,CAAC;QACrB,KAAK,CAAC,EAAE,OAAO,CAAC;KACjB,CAAC;IACF,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED;;;;;;;;GAQG;AAEH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC9B,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;AACvB,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;AA6BvB;;;;;GAKG;AAEH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC9B,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;AACrB,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;AAoDrB;;;;;;;;;GASG;AAEH,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC9B,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;AACrB,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;AA8BrB;;;;;GAKG;AAEH,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC/B,YAAY,CAAC,EAAE,MAAM,GACpB,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAAC;AACjC,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,YAAY,CAAC,EAAE,MAAM,GACpB,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAAC"}
1
+ {"version":3,"file":"sso.http-client.d.ts","sourceRoot":"","sources":["../../../../src/providers/plugins/sso/sso.http-client.ts"],"names":[],"mappings":"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"}
@@ -17,6 +17,85 @@ export const CODEMIE_ENDPOINTS = {
17
17
  METRICS: '/v1/metrics',
18
18
  AUTH_LOGIN: '/v1/auth/login'
19
19
  };
20
+ const TIER_ORDER = ['simple', 'medium', 'complex', 'reasoning'];
21
+ /**
22
+ * Render a router's tier map as e.g. `"simple/medium: GPT-5.6 Luna · complex/reasoning:
23
+ * GPT-5.6 Terra"` — tiers pointing at the same model are grouped under one label instead of
24
+ * repeating it, and each group shows the target's own catalog label (falling back to its id
25
+ * when the backend didn't send one) rather than the router's own name, which says nothing
26
+ * about what it actually resolves to per tier.
27
+ */
28
+ export function describeRouterTiers(tiers) {
29
+ const firstTierByModel = new Map();
30
+ for (const tierName of TIER_ORDER) {
31
+ const model = tiers[tierName]?.model;
32
+ if (model && !firstTierByModel.has(model))
33
+ firstTierByModel.set(model, tierName);
34
+ }
35
+ const parts = [];
36
+ for (const tierName of TIER_ORDER) {
37
+ const tier = tiers[tierName];
38
+ if (!tier)
39
+ continue;
40
+ if (firstTierByModel.get(tier.model) !== tierName)
41
+ continue; // grouped under an earlier tier
42
+ const groupedTierNames = TIER_ORDER.filter((name) => tiers[name]?.model === tier.model);
43
+ parts.push(`${groupedTierNames.join('/')}: ${tier.label || tier.model}`);
44
+ }
45
+ return parts.join(' · ');
46
+ }
47
+ const ROUTER_TYPE_LABELS = {
48
+ litellm_auto: 'LiteLLM',
49
+ switchyard: 'Switchyard',
50
+ };
51
+ /**
52
+ * Every id (deployment_name, base_name) a catalog entry's own label can be looked up by.
53
+ * Used to resolve a bare id referenced elsewhere in the catalog — a router's
54
+ * `classifier_model`, say — back to the human label CodeMie configured for it, the same way
55
+ * `modelIdentifiers`-style lookups already resolve a routed-to id for the statusline.
56
+ */
57
+ export function buildModelLabelIndex(models) {
58
+ const labels = new Map();
59
+ for (const model of models) {
60
+ if (!model.label)
61
+ continue;
62
+ for (const id of [model.deployment_name, model.base_name]) {
63
+ if (id && !labels.has(id))
64
+ labels.set(id, model.label);
65
+ }
66
+ }
67
+ return labels;
68
+ }
69
+ /**
70
+ * Full router description for a model/agent picker, e.g. `"LiteLLM (classifier -> Claude
71
+ * Haiku 4.5): simple/medium: GPT-5.6 Luna · complex/reasoning: GPT-5.6 Terra"`, or
72
+ * `"Switchyard (signal): ..."` when the router has no classifier model. `labelIndex` (see
73
+ * {@link buildModelLabelIndex}, built from the FULL catalog — a classifier model may belong
74
+ * to a family a caller otherwise filters out, e.g. a Claude classifier gating a GPT router)
75
+ * resolves `classifier_model` to its own label instead of showing a bare id. `''` when the
76
+ * entry isn't a router or the backend hasn't populated a tier map for it yet — there is
77
+ * nothing more specific to add beyond the id/label already shown elsewhere.
78
+ */
79
+ export function describeRouter(model, labelIndex) {
80
+ const tiers = model.tiers ?? model.litellm_router?.tiers;
81
+ if (!tiers)
82
+ return '';
83
+ const typeLabel = model.router_type
84
+ ? (ROUTER_TYPE_LABELS[model.router_type] ?? model.router_type)
85
+ : model.litellm_router
86
+ ? 'LiteLLM'
87
+ : model.is_router
88
+ ? 'Switchyard'
89
+ : undefined;
90
+ const strategy = model.strategy ?? model.litellm_router?.strategy;
91
+ const classifierModel = model.classifier_model ?? model.litellm_router?.classifier_model;
92
+ const classifierLabel = classifierModel ? (labelIndex.get(classifierModel) ?? classifierModel) : undefined;
93
+ const strategyNote = strategy
94
+ ? ` (${classifierLabel ? `${strategy} -> ${classifierLabel}` : strategy})`
95
+ : '';
96
+ const prefix = typeLabel ? `${typeLabel}${strategyNote}: ` : '';
97
+ return `${prefix}${describeRouterTiers(tiers)}`;
98
+ }
20
99
  export async function fetchCodeMieLlmModels(apiUrl, auth) {
21
100
  /* eslint-enable no-redeclare */
22
101
  const headers = buildAuthHeaders(auth);
@@ -1 +1 @@
1
- {"version":3,"file":"sso.http-client.js","sourceRoot":"","sources":["../../../../src/providers/plugins/sso/sso.http-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sso.http-client.js","sourceRoot":"","sources":["../../../../src/providers/plugins/sso/sso.http-client.ts"],"names":[],"mappings":"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"}