@codemieai/code 0.15.3 → 0.15.5

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 (208) 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 +113 -72
  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 +13 -7
  91. package/dist/cli/commands/analytics/types.d.ts.map +1 -1
  92. package/dist/cli/commands/doctor/checks/NpmPrefixOverrideCheck.d.ts +9 -0
  93. package/dist/cli/commands/doctor/checks/NpmPrefixOverrideCheck.d.ts.map +1 -0
  94. package/dist/cli/commands/doctor/checks/NpmPrefixOverrideCheck.js +42 -0
  95. package/dist/cli/commands/doctor/checks/NpmPrefixOverrideCheck.js.map +1 -0
  96. package/dist/cli/commands/doctor/checks/index.d.ts +1 -0
  97. package/dist/cli/commands/doctor/checks/index.d.ts.map +1 -1
  98. package/dist/cli/commands/doctor/checks/index.js +1 -0
  99. package/dist/cli/commands/doctor/checks/index.js.map +1 -1
  100. package/dist/cli/commands/doctor/index.d.ts.map +1 -1
  101. package/dist/cli/commands/doctor/index.js +2 -1
  102. package/dist/cli/commands/doctor/index.js.map +1 -1
  103. package/dist/cli/commands/models.d.ts.map +1 -1
  104. package/dist/cli/commands/models.js +16 -3
  105. package/dist/cli/commands/models.js.map +1 -1
  106. package/dist/cli/commands/proxy/connect-orchestrator.js +1 -1
  107. package/dist/cli/commands/proxy/connect-orchestrator.js.map +1 -1
  108. package/dist/cli/commands/proxy/connectors/tenant-catalog.d.ts +16 -4
  109. package/dist/cli/commands/proxy/connectors/tenant-catalog.d.ts.map +1 -1
  110. package/dist/cli/commands/proxy/connectors/tenant-catalog.js +42 -14
  111. package/dist/cli/commands/proxy/connectors/tenant-catalog.js.map +1 -1
  112. package/dist/cli/commands/proxy/connectors/vscode-models.d.ts +18 -0
  113. package/dist/cli/commands/proxy/connectors/vscode-models.d.ts.map +1 -1
  114. package/dist/cli/commands/proxy/connectors/vscode-models.js +58 -0
  115. package/dist/cli/commands/proxy/connectors/vscode-models.js.map +1 -1
  116. package/dist/cli/commands/proxy/connectors/vscode.d.ts +2 -2
  117. package/dist/cli/commands/proxy/connectors/vscode.d.ts.map +1 -1
  118. package/dist/cli/commands/proxy/connectors/vscode.js +27 -38
  119. package/dist/cli/commands/proxy/connectors/vscode.js.map +1 -1
  120. package/dist/cli/commands/update.d.ts.map +1 -1
  121. package/dist/cli/commands/update.js +4 -3
  122. package/dist/cli/commands/update.js.map +1 -1
  123. package/dist/frameworks/plugins/codegraph.plugin.js +2 -2
  124. package/dist/frameworks/plugins/codegraph.plugin.js.map +1 -1
  125. package/dist/providers/core/codemie-auth-helpers.d.ts.map +1 -1
  126. package/dist/providers/core/codemie-auth-helpers.js +6 -1
  127. package/dist/providers/core/codemie-auth-helpers.js.map +1 -1
  128. package/dist/providers/core/default-agent-hooks.d.ts.map +1 -1
  129. package/dist/providers/core/default-agent-hooks.js +9 -0
  130. package/dist/providers/core/default-agent-hooks.js.map +1 -1
  131. package/dist/providers/plugins/bedrock/bedrock.template.d.ts.map +1 -1
  132. package/dist/providers/plugins/bedrock/bedrock.template.js +5 -31
  133. package/dist/providers/plugins/bedrock/bedrock.template.js.map +1 -1
  134. package/dist/providers/plugins/sso/proxy/plugins/background-request-normalizer.plugin.d.ts +44 -0
  135. package/dist/providers/plugins/sso/proxy/plugins/background-request-normalizer.plugin.d.ts.map +1 -0
  136. package/dist/providers/plugins/sso/proxy/plugins/background-request-normalizer.plugin.js +106 -0
  137. package/dist/providers/plugins/sso/proxy/plugins/background-request-normalizer.plugin.js.map +1 -0
  138. package/dist/providers/plugins/sso/proxy/plugins/index.d.ts +3 -1
  139. package/dist/providers/plugins/sso/proxy/plugins/index.d.ts.map +1 -1
  140. package/dist/providers/plugins/sso/proxy/plugins/index.js +5 -1
  141. package/dist/providers/plugins/sso/proxy/plugins/index.js.map +1 -1
  142. package/dist/providers/plugins/sso/proxy/plugins/routing-header-injector.plugin.d.ts +67 -0
  143. package/dist/providers/plugins/sso/proxy/plugins/routing-header-injector.plugin.d.ts.map +1 -0
  144. package/dist/providers/plugins/sso/proxy/plugins/routing-header-injector.plugin.js +203 -0
  145. package/dist/providers/plugins/sso/proxy/plugins/routing-header-injector.plugin.js.map +1 -0
  146. package/dist/providers/plugins/sso/sso.http-client.d.ts +95 -0
  147. package/dist/providers/plugins/sso/sso.http-client.d.ts.map +1 -1
  148. package/dist/providers/plugins/sso/sso.http-client.js +79 -0
  149. package/dist/providers/plugins/sso/sso.http-client.js.map +1 -1
  150. package/dist/providers/plugins/sso/sso.models.d.ts +7 -0
  151. package/dist/providers/plugins/sso/sso.models.d.ts.map +1 -1
  152. package/dist/providers/plugins/sso/sso.models.js +22 -14
  153. package/dist/providers/plugins/sso/sso.models.js.map +1 -1
  154. package/dist/utils/bedrock-pricing.mjs +111 -0
  155. package/dist/utils/cli-bin.d.ts.map +1 -1
  156. package/dist/utils/cli-bin.js +3 -4
  157. package/dist/utils/cli-bin.js.map +1 -1
  158. package/dist/utils/cli-updater.d.ts +1 -0
  159. package/dist/utils/cli-updater.d.ts.map +1 -1
  160. package/dist/utils/cli-updater.js +37 -9
  161. package/dist/utils/cli-updater.js.map +1 -1
  162. package/dist/utils/credential-crypto.d.ts +51 -0
  163. package/dist/utils/credential-crypto.d.ts.map +1 -0
  164. package/dist/utils/credential-crypto.js +96 -0
  165. package/dist/utils/credential-crypto.js.map +1 -0
  166. package/dist/utils/model-normalizer.d.ts +6 -0
  167. package/dist/utils/model-normalizer.d.ts.map +1 -1
  168. package/dist/utils/model-normalizer.js +37 -19
  169. package/dist/utils/model-normalizer.js.map +1 -1
  170. package/dist/utils/npm-prefix.d.ts +48 -0
  171. package/dist/utils/npm-prefix.d.ts.map +1 -0
  172. package/dist/utils/npm-prefix.js +142 -0
  173. package/dist/utils/npm-prefix.js.map +1 -0
  174. package/dist/utils/paths.d.ts +7 -0
  175. package/dist/utils/paths.d.ts.map +1 -1
  176. package/dist/utils/paths.js +10 -0
  177. package/dist/utils/paths.js.map +1 -1
  178. package/dist/utils/platform.d.ts +10 -0
  179. package/dist/utils/platform.d.ts.map +1 -0
  180. package/dist/utils/platform.js +14 -0
  181. package/dist/utils/platform.js.map +1 -0
  182. package/dist/utils/price-resolution.d.ts +42 -0
  183. package/dist/utils/price-resolution.d.ts.map +1 -0
  184. package/dist/utils/price-resolution.js +112 -0
  185. package/dist/utils/price-resolution.js.map +1 -0
  186. package/dist/utils/pricing.d.ts +65 -6
  187. package/dist/utils/pricing.d.ts.map +1 -1
  188. package/dist/utils/pricing.js +91 -117
  189. package/dist/utils/pricing.js.map +1 -1
  190. package/dist/utils/pricing.json +201 -20
  191. package/dist/utils/processes.d.ts.map +1 -1
  192. package/dist/utils/processes.js +6 -3
  193. package/dist/utils/processes.js.map +1 -1
  194. package/dist/utils/routing-headers.mjs +104 -0
  195. package/dist/utils/security.d.ts +0 -32
  196. package/dist/utils/security.d.ts.map +1 -1
  197. package/dist/utils/security.js +20 -102
  198. package/dist/utils/security.js.map +1 -1
  199. package/package.json +4 -2
  200. package/scripts/bundle-statusline.mjs +37 -0
  201. package/scripts/copy-plugins.js +19 -2
  202. package/src/utils/tips.json +9 -9
  203. package/dist/agents/plugins/claude/plugin/__tests__/statusline.test.ts +0 -323
  204. package/dist/agents/plugins/claude/plugin/statusline.mjs +0 -282
  205. package/dist/cli/commands/analytics/exporter.d.ts +0 -20
  206. package/dist/cli/commands/analytics/exporter.d.ts.map +0 -1
  207. package/dist/cli/commands/analytics/exporter.js +0 -91
  208. package/dist/cli/commands/analytics/exporter.js.map +0 -1
@@ -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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"}
@@ -52,6 +52,13 @@ export declare class SSOModelProxy extends BaseModelProxy {
52
52
  fetchIntegrations(codeMieUrl: string, projectName?: string): Promise<CodeMieIntegration[]>;
53
53
  /**
54
54
  * Fetch models from CodeMie API
55
+ *
56
+ * Uses fetchCodeMieLlmModels (the full descriptor, not the ID-only fetchCodeMieModels) so
57
+ * router entries surface their `is_router`/`litellm_router.is_router` flag as
58
+ * `metadata.isRouter` — the same signal claude.models.ts's `isRouterCatalogEntry` uses to gate
59
+ * the statusline's routing widget. Without this, `codemie models list` silently dropped every
60
+ * router alias a user could actually route through (Switchyard virtual routers and LiteLLM
61
+ * auto-router declarations alike), since fetchCodeMieModels never carried that flag through.
55
62
  */
56
63
  private fetchModelsFromAPI;
57
64
  }
@@ -1 +1 @@
1
- {"version":3,"file":"sso.models.d.ts","sourceRoot":"","sources":["../../../../src/providers/plugins/sso/sso.models.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,KAAK,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzE,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AAOnE;;;;GAIG;AACH,qBAAa,aAAc,SAAQ,cAAc;IAC/C,OAAO,CAAC,GAAG,CAAa;gBAEZ,OAAO,CAAC,EAAE,MAAM;IAM5B;;OAEG;IACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAInC;;OAEG;IACH,oBAAoB,IAAI,OAAO;IAI/B;;;OAGG;IACH,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAI7B;;;;;;OAMG;IACG,UAAU,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;IAcxC;;;;OAIG;IACG,WAAW,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IA0BrE;;;;;;OAMG;IACG,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC;IA+ChG;;OAEG;YACW,kBAAkB;CA0BjC"}
1
+ {"version":3,"file":"sso.models.d.ts","sourceRoot":"","sources":["../../../../src/providers/plugins/sso/sso.models.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,KAAK,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzE,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AAOnE;;;;GAIG;AACH,qBAAa,aAAc,SAAQ,cAAc;IAC/C,OAAO,CAAC,GAAG,CAAa;gBAEZ,OAAO,CAAC,EAAE,MAAM;IAM5B;;OAEG;IACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAInC;;OAEG;IACH,oBAAoB,IAAI,OAAO;IAI/B;;;OAGG;IACH,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAI7B;;;;;;OAMG;IACG,UAAU,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;IAcxC;;;;OAIG;IACG,WAAW,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IA0BrE;;;;;;OAMG;IACG,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC;IA+ChG;;;;;;;;;OASG;YACW,kBAAkB;CAyBjC"}
@@ -8,7 +8,7 @@ import { BaseModelProxy } from '../../core/base/BaseModelProxy.js';
8
8
  import { ProviderRegistry } from '../../core/registry.js';
9
9
  import { SSOTemplate } from './sso.template.js';
10
10
  import { CodeMieSSO } from './sso.auth.js';
11
- import { fetchCodeMieModels, fetchCodeMieIntegrations, CODEMIE_ENDPOINTS } from './sso.http-client.js';
11
+ import { fetchCodeMieLlmModels, fetchCodeMieIntegrations, CODEMIE_ENDPOINTS } from './sso.http-client.js';
12
12
  import { logger } from '../../../utils/logger.js';
13
13
  /**
14
14
  * SSO Model Proxy
@@ -132,24 +132,32 @@ export class SSOModelProxy extends BaseModelProxy {
132
132
  }
133
133
  /**
134
134
  * Fetch models from CodeMie API
135
+ *
136
+ * Uses fetchCodeMieLlmModels (the full descriptor, not the ID-only fetchCodeMieModels) so
137
+ * router entries surface their `is_router`/`litellm_router.is_router` flag as
138
+ * `metadata.isRouter` — the same signal claude.models.ts's `isRouterCatalogEntry` uses to gate
139
+ * the statusline's routing widget. Without this, `codemie models list` silently dropped every
140
+ * router alias a user could actually route through (Switchyard virtual routers and LiteLLM
141
+ * auto-router declarations alike), since fetchCodeMieModels never carried that flag through.
135
142
  */
136
143
  async fetchModelsFromAPI(apiUrl, cookies) {
137
144
  try {
138
- // Use the working utility function that handles redirects, SSL, and retry logic
139
- const modelIds = await fetchCodeMieModels(apiUrl, cookies);
140
- if (modelIds.length === 0) {
141
- return [];
142
- }
143
- // Transform model IDs to ModelInfo format
144
- // Mark recommended models as popular for highlighting (⭐)
145
- const models = modelIds.map(id => {
145
+ const llmModels = await fetchCodeMieLlmModels(apiUrl, cookies);
146
+ const models = [];
147
+ for (const model of llmModels) {
148
+ const id = model.deployment_name || model.base_name || model.label;
149
+ if (!id)
150
+ continue;
151
+ const isRouter = model.is_router === true || model.litellm_router?.is_router === true;
146
152
  const isRecommended = SSOTemplate.recommendedModels.includes(id);
147
- return {
153
+ models.push({
148
154
  id,
149
- name: id, // Use label from API
150
- popular: isRecommended // Adds ⭐ to recommended models
151
- };
152
- });
155
+ name: model.label || id,
156
+ popular: isRecommended, // Adds ⭐ to recommended models
157
+ ...(isRouter && { metadata: { isRouter: true } }),
158
+ });
159
+ }
160
+ models.sort((a, b) => a.id.localeCompare(b.id));
153
161
  return models;
154
162
  }
155
163
  catch (error) {
@@ -1 +1 @@
1
- {"version":3,"file":"sso.models.js","sourceRoot":"","sources":["../../../../src/providers/plugins/sso/sso.models.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sso.models.js","sourceRoot":"","sources":["../../../../src/providers/plugins/sso/sso.models.ts"],"names":[],"mappings":"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"}