@sriinnu/kosha-discovery 1.0.0 → 1.2.0

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 (74) hide show
  1. package/README.md +51 -3
  2. package/dist/cli-format.d.ts.map +1 -1
  3. package/dist/cli-format.js +2 -1
  4. package/dist/cli-format.js.map +1 -1
  5. package/dist/context-strategy.d.ts +48 -0
  6. package/dist/context-strategy.d.ts.map +1 -0
  7. package/dist/context-strategy.js +274 -0
  8. package/dist/context-strategy.js.map +1 -0
  9. package/dist/credentials/resolver.d.ts +7 -0
  10. package/dist/credentials/resolver.d.ts.map +1 -1
  11. package/dist/credentials/resolver.js +28 -3
  12. package/dist/credentials/resolver.js.map +1 -1
  13. package/dist/discovery/index.d.ts +4 -6
  14. package/dist/discovery/index.d.ts.map +1 -1
  15. package/dist/discovery/index.js +39 -55
  16. package/dist/discovery/index.js.map +1 -1
  17. package/dist/discovery/litellm-seed.js +12 -8
  18. package/dist/discovery/litellm-seed.js.map +1 -1
  19. package/dist/discovery/modelsdev-seed.js +16 -12
  20. package/dist/discovery/modelsdev-seed.js.map +1 -1
  21. package/dist/discovery/promo-overrides.js +3 -3
  22. package/dist/discovery/promo-overrides.js.map +1 -1
  23. package/dist/discovery/vercel.d.ts +45 -0
  24. package/dist/discovery/vercel.d.ts.map +1 -0
  25. package/dist/discovery/vercel.js +232 -0
  26. package/dist/discovery/vercel.js.map +1 -0
  27. package/dist/discovery-contract.d.ts +1 -1
  28. package/dist/discovery-contract.d.ts.map +1 -1
  29. package/dist/discovery-contract.js +28 -1
  30. package/dist/discovery-contract.js.map +1 -1
  31. package/dist/enrichment/litellm-catalog.d.ts +1 -0
  32. package/dist/enrichment/litellm-catalog.d.ts.map +1 -1
  33. package/dist/enrichment/litellm-catalog.js.map +1 -1
  34. package/dist/enrichment/litellm.d.ts.map +1 -1
  35. package/dist/enrichment/litellm.js +6 -0
  36. package/dist/enrichment/litellm.js.map +1 -1
  37. package/dist/mcp-server.d.ts +18 -0
  38. package/dist/mcp-server.d.ts.map +1 -0
  39. package/dist/mcp-server.js +341 -0
  40. package/dist/mcp-server.js.map +1 -0
  41. package/dist/provider-catalog.d.ts +19 -2
  42. package/dist/provider-catalog.d.ts.map +1 -1
  43. package/dist/provider-catalog.js +104 -0
  44. package/dist/provider-catalog.js.map +1 -1
  45. package/dist/proxy.d.ts +31 -0
  46. package/dist/proxy.d.ts.map +1 -0
  47. package/dist/proxy.js +213 -0
  48. package/dist/proxy.js.map +1 -0
  49. package/dist/registry-discovery.d.ts.map +1 -1
  50. package/dist/registry-discovery.js +5 -5
  51. package/dist/registry-discovery.js.map +1 -1
  52. package/dist/registry-query.d.ts +2 -2
  53. package/dist/registry-query.d.ts.map +1 -1
  54. package/dist/registry-query.js +58 -7
  55. package/dist/registry-query.js.map +1 -1
  56. package/dist/registry-runtime.d.ts +20 -0
  57. package/dist/registry-runtime.d.ts.map +1 -1
  58. package/dist/registry-runtime.js +231 -39
  59. package/dist/registry-runtime.js.map +1 -1
  60. package/dist/registry-selection.d.ts.map +1 -1
  61. package/dist/registry-selection.js +21 -3
  62. package/dist/registry-selection.js.map +1 -1
  63. package/dist/registry.js +2 -2
  64. package/dist/registry.js.map +1 -1
  65. package/dist/security.js +6 -6
  66. package/dist/security.js.map +1 -1
  67. package/dist/server.d.ts +2 -0
  68. package/dist/server.d.ts.map +1 -1
  69. package/dist/server.js +7 -1
  70. package/dist/server.js.map +1 -1
  71. package/dist/types.d.ts +42 -2
  72. package/dist/types.d.ts.map +1 -1
  73. package/logo.png +0 -0
  74. package/package.json +102 -91
@@ -24,8 +24,17 @@ export const PROVIDER_CATALOG = [
24
24
  defaultBaseUrl: "https://api.anthropic.com",
25
25
  credentialRequired: true,
26
26
  credentialEnvVars: ["ANTHROPIC_API_KEY"],
27
+ primaryCredentialEnvVar: "ANTHROPIC_API_KEY",
27
28
  // Anthropic prompt cache requires ≥1024 tokens for most Claude models.
28
29
  minCachePrefixTokens: 1024,
30
+ cacheBehavior: {
31
+ mode: "explicit",
32
+ ttlTiers: ["5m", "1h"],
33
+ defaultTtlSeconds: 300,
34
+ maxTtlSeconds: 3600,
35
+ documented: true,
36
+ notes: "Set per cache_control block; 1h tier requires extended-cache beta header.",
37
+ },
29
38
  },
30
39
  {
31
40
  providerId: "openai",
@@ -38,8 +47,15 @@ export const PROVIDER_CATALOG = [
38
47
  defaultBaseUrl: "https://api.openai.com",
39
48
  credentialRequired: true,
40
49
  credentialEnvVars: ["OPENAI_API_KEY"],
50
+ primaryCredentialEnvVar: "OPENAI_API_KEY",
41
51
  // OpenAI prompt cache engages for prefixes ≥1024 tokens.
42
52
  minCachePrefixTokens: 1024,
53
+ cacheBehavior: {
54
+ mode: "automatic",
55
+ approximateTtlSeconds: 600,
56
+ documented: true,
57
+ notes: "Provider-managed; typically 5–10 minutes, may extend up to an hour under load.",
58
+ },
43
59
  },
44
60
  {
45
61
  providerId: "google",
@@ -52,6 +68,14 @@ export const PROVIDER_CATALOG = [
52
68
  defaultBaseUrl: "https://generativelanguage.googleapis.com",
53
69
  credentialRequired: true,
54
70
  credentialEnvVars: ["GOOGLE_API_KEY", "GEMINI_API_KEY"],
71
+ primaryCredentialEnvVar: "GOOGLE_API_KEY",
72
+ cacheBehavior: {
73
+ mode: "explicit",
74
+ defaultTtlSeconds: 3600,
75
+ maxTtlSeconds: 604_800,
76
+ documented: true,
77
+ notes: "Gemini Context Caching: create a CachedContent with TTL up to 7 days; billed for storage + reads.",
78
+ },
55
79
  },
56
80
  {
57
81
  providerId: "openrouter",
@@ -63,7 +87,33 @@ export const PROVIDER_CATALOG = [
63
87
  transport: "openai-compatible-http",
64
88
  defaultBaseUrl: "https://openrouter.ai/api/v1",
65
89
  credentialRequired: false,
90
+ executionCredentialRequired: true,
66
91
  credentialEnvVars: ["OPENROUTER_API_KEY"],
92
+ primaryCredentialEnvVar: "OPENROUTER_API_KEY",
93
+ cacheBehavior: {
94
+ mode: "passthrough",
95
+ documented: true,
96
+ notes: "Forwards cache_control to the underlying provider; TTL inherits from the routed model.",
97
+ },
98
+ },
99
+ {
100
+ providerId: "vercel",
101
+ canonicalProviderId: "vercel",
102
+ aliases: ["ai-gateway", "ai_gateway", "vercel-ai", "vercel-ai-gateway"],
103
+ name: "Vercel AI Gateway",
104
+ origin: "proxy",
105
+ isLocal: false,
106
+ transport: "openai-compatible-http",
107
+ defaultBaseUrl: "https://ai-gateway.vercel.sh/v1",
108
+ credentialRequired: false,
109
+ executionCredentialRequired: true,
110
+ credentialEnvVars: ["AI_GATEWAY_API_KEY", "VERCEL_OIDC_TOKEN"],
111
+ primaryCredentialEnvVar: "AI_GATEWAY_API_KEY",
112
+ cacheBehavior: {
113
+ mode: "passthrough",
114
+ documented: true,
115
+ notes: "Gateway forwards cache_control to the underlying provider; TTL inherits from the routed model.",
116
+ },
67
117
  },
68
118
  {
69
119
  providerId: "ollama",
@@ -76,6 +126,7 @@ export const PROVIDER_CATALOG = [
76
126
  defaultBaseUrl: "http://localhost:11434",
77
127
  credentialRequired: false,
78
128
  credentialEnvVars: [],
129
+ cacheBehavior: { mode: "none", documented: true, notes: "Local runtime — KV-cache is in-process, not a billable prompt cache." },
79
130
  },
80
131
  {
81
132
  providerId: "llama.cpp",
@@ -88,6 +139,7 @@ export const PROVIDER_CATALOG = [
88
139
  defaultBaseUrl: "http://127.0.0.1:8080",
89
140
  credentialRequired: false,
90
141
  credentialEnvVars: [],
142
+ cacheBehavior: { mode: "none", documented: true, notes: "Local runtime — KV-cache is in-process, not a billable prompt cache." },
91
143
  },
92
144
  {
93
145
  providerId: "bedrock",
@@ -100,6 +152,11 @@ export const PROVIDER_CATALOG = [
100
152
  defaultBaseUrl: "https://bedrock-runtime.amazonaws.com",
101
153
  credentialRequired: true,
102
154
  credentialEnvVars: ["AWS_ACCESS_KEY_ID", "AWS_SECRET_ACCESS_KEY"],
155
+ cacheBehavior: {
156
+ mode: "passthrough",
157
+ documented: true,
158
+ notes: "Inherits underlying model: Anthropic-on-Bedrock supports cache_control with the same 5m/1h tiers.",
159
+ },
103
160
  },
104
161
  {
105
162
  providerId: "vertex",
@@ -112,6 +169,11 @@ export const PROVIDER_CATALOG = [
112
169
  defaultBaseUrl: "https://aiplatform.googleapis.com",
113
170
  credentialRequired: true,
114
171
  credentialEnvVars: ["GOOGLE_APPLICATION_CREDENTIALS", "GOOGLE_CLOUD_PROJECT"],
172
+ cacheBehavior: {
173
+ mode: "passthrough",
174
+ documented: true,
175
+ notes: "Inherits Gemini Context Caching when routing to Gemini models.",
176
+ },
115
177
  },
116
178
  {
117
179
  providerId: "nvidia",
@@ -124,6 +186,7 @@ export const PROVIDER_CATALOG = [
124
186
  defaultBaseUrl: "https://integrate.api.nvidia.com/v1",
125
187
  credentialRequired: true,
126
188
  credentialEnvVars: ["NVIDIA_API_KEY"],
189
+ primaryCredentialEnvVar: "NVIDIA_API_KEY",
127
190
  },
128
191
  {
129
192
  providerId: "together",
@@ -136,6 +199,7 @@ export const PROVIDER_CATALOG = [
136
199
  defaultBaseUrl: "https://api.together.xyz/v1",
137
200
  credentialRequired: true,
138
201
  credentialEnvVars: ["TOGETHER_API_KEY"],
202
+ primaryCredentialEnvVar: "TOGETHER_API_KEY",
139
203
  },
140
204
  {
141
205
  providerId: "fireworks",
@@ -148,6 +212,7 @@ export const PROVIDER_CATALOG = [
148
212
  defaultBaseUrl: "https://api.fireworks.ai/inference/v1",
149
213
  credentialRequired: true,
150
214
  credentialEnvVars: ["FIREWORKS_API_KEY"],
215
+ primaryCredentialEnvVar: "FIREWORKS_API_KEY",
151
216
  },
152
217
  {
153
218
  providerId: "groq",
@@ -160,6 +225,8 @@ export const PROVIDER_CATALOG = [
160
225
  defaultBaseUrl: "https://api.groq.com/openai/v1",
161
226
  credentialRequired: true,
162
227
  credentialEnvVars: ["GROQ_API_KEY"],
228
+ primaryCredentialEnvVar: "GROQ_API_KEY",
229
+ cacheBehavior: { mode: "none", documented: true },
163
230
  },
164
231
  {
165
232
  providerId: "mistral",
@@ -172,6 +239,8 @@ export const PROVIDER_CATALOG = [
172
239
  defaultBaseUrl: "https://api.mistral.ai/v1",
173
240
  credentialRequired: true,
174
241
  credentialEnvVars: ["MISTRAL_API_KEY"],
242
+ primaryCredentialEnvVar: "MISTRAL_API_KEY",
243
+ cacheBehavior: { mode: "none", documented: true },
175
244
  },
176
245
  {
177
246
  providerId: "deepinfra",
@@ -184,6 +253,7 @@ export const PROVIDER_CATALOG = [
184
253
  defaultBaseUrl: "https://api.deepinfra.com/v1/openai",
185
254
  credentialRequired: true,
186
255
  credentialEnvVars: ["DEEPINFRA_API_KEY"],
256
+ primaryCredentialEnvVar: "DEEPINFRA_API_KEY",
187
257
  },
188
258
  {
189
259
  providerId: "cohere",
@@ -196,6 +266,8 @@ export const PROVIDER_CATALOG = [
196
266
  defaultBaseUrl: "https://api.cohere.com",
197
267
  credentialRequired: true,
198
268
  credentialEnvVars: ["CO_API_KEY"],
269
+ primaryCredentialEnvVar: "CO_API_KEY",
270
+ cacheBehavior: { mode: "none", documented: true },
199
271
  },
200
272
  {
201
273
  providerId: "cerebras",
@@ -208,6 +280,8 @@ export const PROVIDER_CATALOG = [
208
280
  defaultBaseUrl: "https://api.cerebras.ai/v1",
209
281
  credentialRequired: true,
210
282
  credentialEnvVars: ["CEREBRAS_API_KEY"],
283
+ primaryCredentialEnvVar: "CEREBRAS_API_KEY",
284
+ cacheBehavior: { mode: "none", documented: true },
211
285
  },
212
286
  {
213
287
  providerId: "perplexity",
@@ -220,6 +294,8 @@ export const PROVIDER_CATALOG = [
220
294
  defaultBaseUrl: "https://api.perplexity.ai",
221
295
  credentialRequired: true,
222
296
  credentialEnvVars: ["PERPLEXITY_API_KEY"],
297
+ primaryCredentialEnvVar: "PERPLEXITY_API_KEY",
298
+ cacheBehavior: { mode: "none", documented: true },
223
299
  },
224
300
  {
225
301
  providerId: "deepseek",
@@ -232,6 +308,13 @@ export const PROVIDER_CATALOG = [
232
308
  defaultBaseUrl: "https://api.deepseek.com",
233
309
  credentialRequired: true,
234
310
  credentialEnvVars: ["DEEPSEEK_API_KEY"],
311
+ primaryCredentialEnvVar: "DEEPSEEK_API_KEY",
312
+ cacheBehavior: {
313
+ mode: "automatic",
314
+ approximateTtlSeconds: 3600,
315
+ documented: true,
316
+ notes: "Automatic context caching; provider reports ~hours of retention but no strict guarantee.",
317
+ },
235
318
  },
236
319
  {
237
320
  providerId: "moonshot",
@@ -244,6 +327,13 @@ export const PROVIDER_CATALOG = [
244
327
  defaultBaseUrl: "https://api.moonshot.cn",
245
328
  credentialRequired: true,
246
329
  credentialEnvVars: ["MOONSHOT_API_KEY", "KIMI_API_KEY"],
330
+ primaryCredentialEnvVar: "MOONSHOT_API_KEY",
331
+ cacheBehavior: {
332
+ mode: "automatic",
333
+ approximateTtlSeconds: 3600,
334
+ documented: true,
335
+ notes: "Kimi prompt cache is automatic on repeat prefixes; documented as long-lived but TTL not formally specified.",
336
+ },
247
337
  },
248
338
  {
249
339
  providerId: "glm",
@@ -256,6 +346,7 @@ export const PROVIDER_CATALOG = [
256
346
  defaultBaseUrl: "https://open.bigmodel.cn/api/paas/v4",
257
347
  credentialRequired: true,
258
348
  credentialEnvVars: ["GLM_API_KEY", "ZHIPUAI_API_KEY"],
349
+ primaryCredentialEnvVar: "GLM_API_KEY",
259
350
  },
260
351
  {
261
352
  providerId: "zai",
@@ -268,6 +359,7 @@ export const PROVIDER_CATALOG = [
268
359
  defaultBaseUrl: "https://api.z.ai/api/paas/v4",
269
360
  credentialRequired: true,
270
361
  credentialEnvVars: ["ZAI_API_KEY"],
362
+ primaryCredentialEnvVar: "ZAI_API_KEY",
271
363
  },
272
364
  {
273
365
  providerId: "minimax",
@@ -280,6 +372,7 @@ export const PROVIDER_CATALOG = [
280
372
  defaultBaseUrl: "https://api.minimax.io",
281
373
  credentialRequired: true,
282
374
  credentialEnvVars: ["MINIMAX_API_KEY"],
375
+ primaryCredentialEnvVar: "MINIMAX_API_KEY",
283
376
  },
284
377
  ];
285
378
  const PROVIDER_LOOKUP = new Map();
@@ -326,6 +419,17 @@ export function getProviderConfig(config, providerId) {
326
419
  config.providers[descriptor.canonicalProviderId] ??
327
420
  descriptor.aliases.map((alias) => config.providers?.[alias]).find(Boolean);
328
421
  }
422
+ /** Return true when model execution through this provider needs auth. */
423
+ export function providerExecutionCredentialRequired(descriptor) {
424
+ return descriptor.executionCredentialRequired ?? descriptor.credentialRequired;
425
+ }
426
+ /**
427
+ * Return the curated prompt-cache behavior for a provider, or `undefined`
428
+ * if the policy has not been curated yet.
429
+ */
430
+ export function getProviderCacheBehavior(providerId) {
431
+ return getProviderDescriptor(providerId)?.cacheBehavior;
432
+ }
329
433
  /**
330
434
  * True when the provider is a local runtime.
331
435
  */
@@ -1 +1 @@
1
- {"version":3,"file":"provider-catalog.js","sourceRoot":"","sources":["../src/provider-catalog.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"provider-catalog.js","sourceRoot":"","sources":["../src/provider-catalog.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * kosha-discovery — OpenAI-compatible model proxy.
3
+ *
4
+ * Adds POST /proxy/v1/chat/completions to the Hono server.
5
+ * The caller sets `model` to one of:
6
+ *
7
+ * "claude-opus-4-7" — any canonical model ID or alias
8
+ * "kosha:cheapest" — cheapest forwardable chat model
9
+ * "kosha:cheapest[tool_use]" — cheapest with that capability
10
+ * "kosha:cheapest[128k,vision]" — cheapest with min context + capability
11
+ * "kosha:cheapest[provider:groq]" — cheapest on a specific provider
12
+ *
13
+ * Filters inside brackets are comma-separated and combinable:
14
+ * <capability> any tag in the model card (tool_use, vision, code, …)
15
+ * <N>k minimum context window in tokens
16
+ * provider:<id> pin to a specific serving-layer provider
17
+ *
18
+ * Supported transports: openai, openai-compatible-http, ollama.
19
+ * Anthropic, Google, Cohere, Bedrock, Vertex speak different wire formats
20
+ * and are not yet proxied.
21
+ *
22
+ * Response headers added by the proxy:
23
+ * x-kosha-model — resolved model ID
24
+ * x-kosha-provider — resolved provider
25
+ * x-kosha-requested — original model string from the caller
26
+ * @module
27
+ */
28
+ import type { Hono } from "hono";
29
+ import type { ModelRegistry } from "./registry.js";
30
+ export declare function registerProxyRoutes(app: Hono, registry: ModelRegistry): void;
31
+ //# sourceMappingURL=proxy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proxy.d.ts","sourceRoot":"","sources":["../src/proxy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAEjC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AA8GnD,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,aAAa,GAAG,IAAI,CAoG5E"}
package/dist/proxy.js ADDED
@@ -0,0 +1,213 @@
1
+ /**
2
+ * kosha-discovery — OpenAI-compatible model proxy.
3
+ *
4
+ * Adds POST /proxy/v1/chat/completions to the Hono server.
5
+ * The caller sets `model` to one of:
6
+ *
7
+ * "claude-opus-4-7" — any canonical model ID or alias
8
+ * "kosha:cheapest" — cheapest forwardable chat model
9
+ * "kosha:cheapest[tool_use]" — cheapest with that capability
10
+ * "kosha:cheapest[128k,vision]" — cheapest with min context + capability
11
+ * "kosha:cheapest[provider:groq]" — cheapest on a specific provider
12
+ *
13
+ * Filters inside brackets are comma-separated and combinable:
14
+ * <capability> any tag in the model card (tool_use, vision, code, …)
15
+ * <N>k minimum context window in tokens
16
+ * provider:<id> pin to a specific serving-layer provider
17
+ *
18
+ * Supported transports: openai, openai-compatible-http, ollama.
19
+ * Anthropic, Google, Cohere, Bedrock, Vertex speak different wire formats
20
+ * and are not yet proxied.
21
+ *
22
+ * Response headers added by the proxy:
23
+ * x-kosha-model — resolved model ID
24
+ * x-kosha-provider — resolved provider
25
+ * x-kosha-requested — original model string from the caller
26
+ * @module
27
+ */
28
+ import { getProviderDescriptor, providerExecutionCredentialRequired } from "./provider-catalog.js";
29
+ import { fallbackRegistryCredential, getRegistryCredentialResolver } from "./registry-runtime.js";
30
+ // native-http providers that speak the OpenAI wire format natively.
31
+ // All openai-compatible-http providers are implicitly forwardable.
32
+ const NATIVE_OPENAI_WIRE = new Set(["openai", "ollama"]);
33
+ function parseKoshaHint(model) {
34
+ if (!model.startsWith("kosha:cheapest"))
35
+ return null;
36
+ const m = /\[([^\]]*)\]/.exec(model);
37
+ if (!m)
38
+ return {};
39
+ const hint = {};
40
+ for (const part of m[1].split(",").map((s) => s.trim()).filter(Boolean)) {
41
+ if (part.startsWith("provider:")) {
42
+ hint.provider = part.slice(9);
43
+ }
44
+ else if (/^\d+k$/i.test(part)) {
45
+ hint.minContext = Number.parseInt(part, 10) * 1_000;
46
+ }
47
+ else if (!hint.capability) {
48
+ hint.capability = part;
49
+ }
50
+ }
51
+ return hint;
52
+ }
53
+ // ---------------------------------------------------------------------------
54
+ // Model resolution
55
+ // ---------------------------------------------------------------------------
56
+ function isForwardable(model) {
57
+ const descriptor = getProviderDescriptor(model.provider);
58
+ if (!descriptor)
59
+ return false;
60
+ if (descriptor.transport === "openai-compatible-http")
61
+ return true;
62
+ if (descriptor.transport === "native-http")
63
+ return NATIVE_OPENAI_WIRE.has(model.provider);
64
+ return false; // cloud-sdk (bedrock, vertex) needs per-SDK translation
65
+ }
66
+ function isExecutableRoute(registry, model) {
67
+ if (!isForwardable(model))
68
+ return false;
69
+ const descriptor = getProviderDescriptor(model.provider);
70
+ if (!descriptor || !providerExecutionCredentialRequired(descriptor))
71
+ return true;
72
+ return registry.provider(model.provider)?.authenticated === true;
73
+ }
74
+ function resolveProxyModel(registry, requested) {
75
+ const hint = parseKoshaHint(requested);
76
+ if (hint !== null) {
77
+ const result = registry.cheapestModels({
78
+ mode: "chat",
79
+ capability: hint.capability,
80
+ provider: hint.provider,
81
+ limit: 20,
82
+ });
83
+ const candidates = hint.minContext
84
+ ? result.matches.filter((m) => m.model.contextWindow >= hint.minContext)
85
+ : result.matches;
86
+ // Only pick a provider we can actually forward to.
87
+ return candidates.find((m) => isExecutableRoute(registry, m.model))?.model ??
88
+ candidates.find((m) => isForwardable(m.model))?.model ??
89
+ null;
90
+ }
91
+ // For a specific model ID or alias, prefer the canonical card but fall back
92
+ // to any forwardable route if the primary provider isn't proxiable (e.g.
93
+ // "claude-sonnet-4-6" resolves to Anthropic by default, but if the caller
94
+ // only has an OpenRouter key, we should route through OpenRouter instead).
95
+ const primary = registry.model(requested);
96
+ if (primary && isExecutableRoute(registry, primary))
97
+ return primary;
98
+ const routes = registry.modelRoutes(requested);
99
+ return routes.find((route) => isExecutableRoute(registry, route)) ??
100
+ (primary && isForwardable(primary) ? primary : undefined) ??
101
+ routes.find(isForwardable) ??
102
+ primary ??
103
+ null;
104
+ }
105
+ // ---------------------------------------------------------------------------
106
+ // URL builder
107
+ // ---------------------------------------------------------------------------
108
+ function buildUpstreamUrl(model, registry) {
109
+ const info = registry.provider(model.provider);
110
+ const descriptor = getProviderDescriptor(model.provider);
111
+ const base = (descriptor?.isLocal
112
+ ? info?.baseUrl ?? descriptor.defaultBaseUrl
113
+ : descriptor?.defaultBaseUrl ?? info?.baseUrl ?? "").replace(/\/$/, "");
114
+ // Some native/local roots expose the OpenAI-compatible layer under /v1.
115
+ if ((model.provider === "openai" || model.provider === "ollama" || model.provider === "llama.cpp") && !base.endsWith("/v1")) {
116
+ return `${base}/v1/chat/completions`;
117
+ }
118
+ return `${base}/chat/completions`;
119
+ }
120
+ // ---------------------------------------------------------------------------
121
+ // Route registration
122
+ // ---------------------------------------------------------------------------
123
+ export function registerProxyRoutes(app, registry) {
124
+ // OpenAI-compatible model list — returns all models the proxy can forward.
125
+ // Required for SDK compatibility: OpenAI clients call this before chat requests.
126
+ app.get("/proxy/v1/models", (ctx) => {
127
+ const models = registry.models({ mode: "chat" }).filter(isForwardable);
128
+ return ctx.json({
129
+ object: "list",
130
+ data: models.map((m) => ({
131
+ id: m.id,
132
+ object: "model",
133
+ created: Math.floor((m.discoveredAt ?? Date.now()) / 1000),
134
+ owned_by: m.originProvider ?? m.provider,
135
+ })),
136
+ });
137
+ });
138
+ app.post("/proxy/v1/chat/completions", async (ctx) => {
139
+ // ── Parse request ──────────────────────────────────────────────
140
+ let body;
141
+ try {
142
+ body = (await ctx.req.json());
143
+ }
144
+ catch {
145
+ return ctx.json({ error: "request body must be valid JSON" }, 400);
146
+ }
147
+ const requested = typeof body.model === "string" ? body.model : undefined;
148
+ if (!requested) {
149
+ return ctx.json({ error: "missing required field: model" }, 400);
150
+ }
151
+ // ── Resolve model ──────────────────────────────────────────────
152
+ const model = resolveProxyModel(registry, requested);
153
+ if (!model) {
154
+ return ctx.json({ error: `no model found for '${requested}'` }, 404);
155
+ }
156
+ if (!isForwardable(model)) {
157
+ const descriptor = getProviderDescriptor(model.provider);
158
+ return ctx.json({
159
+ error: `provider '${model.provider}' uses '${descriptor?.transport ?? "unknown"}' transport — proxy not yet supported`,
160
+ resolvedModel: model.id,
161
+ resolvedProvider: model.provider,
162
+ }, 422);
163
+ }
164
+ // ── Resolve credential ─────────────────────────────────────────
165
+ // Use the full 5-tier CredentialResolver (CLI files, ADC, OAuth, env vars)
166
+ // so the proxy honours the same credential sources as discovery.
167
+ const resolver = await getRegistryCredentialResolver();
168
+ const credential = resolver
169
+ ? await resolver.resolve(model.provider)
170
+ : fallbackRegistryCredential(model.provider);
171
+ const bearerToken = credential.apiKey ?? credential.accessToken;
172
+ const credentialDescriptor = getProviderDescriptor(model.provider);
173
+ if (credentialDescriptor && providerExecutionCredentialRequired(credentialDescriptor) && !bearerToken) {
174
+ const envHint = credentialDescriptor.credentialEnvVars.length
175
+ ? credentialDescriptor.credentialEnvVars.join(" or ")
176
+ : credentialDescriptor.primaryCredentialEnvVar;
177
+ return ctx.json({
178
+ error: `no credential found for '${model.provider}'`,
179
+ hint: envHint ? `set ${envHint}` : "configure credentials for this provider",
180
+ resolvedModel: model.id,
181
+ resolvedProvider: model.provider,
182
+ }, 401);
183
+ }
184
+ // ── Forward ────────────────────────────────────────────────────
185
+ const upstreamUrl = buildUpstreamUrl(model, registry);
186
+ const upstreamHeaders = { "content-type": "application/json" };
187
+ if (bearerToken)
188
+ upstreamHeaders.authorization = `Bearer ${bearerToken}`;
189
+ let upstream;
190
+ try {
191
+ upstream = await fetch(upstreamUrl, {
192
+ method: "POST",
193
+ headers: upstreamHeaders,
194
+ body: JSON.stringify({ ...body, model: model.id }),
195
+ });
196
+ }
197
+ catch (err) {
198
+ const message = err instanceof Error ? err.message : String(err);
199
+ return ctx.json({ error: `upstream unreachable: ${message}`, resolvedProvider: model.provider }, 502);
200
+ }
201
+ // ── Stream response back ───────────────────────────────────────
202
+ const responseHeaders = new Headers({
203
+ "x-kosha-model": model.id,
204
+ "x-kosha-provider": model.provider,
205
+ "x-kosha-requested": requested,
206
+ });
207
+ const ct = upstream.headers.get("content-type");
208
+ if (ct)
209
+ responseHeaders.set("content-type", ct);
210
+ return new Response(upstream.body, { status: upstream.status, headers: responseHeaders });
211
+ });
212
+ }
213
+ //# sourceMappingURL=proxy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proxy.js","sourceRoot":"","sources":["../src/proxy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAKH,OAAO,EAAE,qBAAqB,EAAE,mCAAmC,EAAE,MAAM,uBAAuB,CAAC;AACnG,OAAO,EAAE,0BAA0B,EAAE,6BAA6B,EAAE,MAAM,uBAAuB,CAAC;AAElG,oEAAoE;AACpE,mEAAmE;AACnE,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;AAYzD,SAAS,cAAc,CAAC,KAAa;IACpC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,gBAAgB,CAAC;QAAE,OAAO,IAAI,CAAC;IACrD,MAAM,CAAC,GAAG,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrC,IAAI,CAAC,CAAC;QAAE,OAAO,EAAE,CAAC;IAClB,MAAM,IAAI,GAAc,EAAE,CAAC;IAC3B,KAAK,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;QACzE,IAAI,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;YAClC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC/B,CAAC;aAAM,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACjC,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC;QACrD,CAAC;aAAM,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YAC7B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACxB,CAAC;IACF,CAAC;IACD,OAAO,IAAI,CAAC;AACb,CAAC;AAED,8EAA8E;AAC9E,mBAAmB;AACnB,8EAA8E;AAE9E,SAAS,aAAa,CAAC,KAAgB;IACtC,MAAM,UAAU,GAAG,qBAAqB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IACzD,IAAI,CAAC,UAAU;QAAE,OAAO,KAAK,CAAC;IAC9B,IAAI,UAAU,CAAC,SAAS,KAAK,wBAAwB;QAAE,OAAO,IAAI,CAAC;IACnE,IAAI,UAAU,CAAC,SAAS,KAAK,aAAa;QAAE,OAAO,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC1F,OAAO,KAAK,CAAC,CAAC,wDAAwD;AACvE,CAAC;AAED,SAAS,iBAAiB,CAAC,QAAuB,EAAE,KAAgB;IACnE,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACxC,MAAM,UAAU,GAAG,qBAAqB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IACzD,IAAI,CAAC,UAAU,IAAI,CAAC,mCAAmC,CAAC,UAAU,CAAC;QAAE,OAAO,IAAI,CAAC;IACjF,OAAO,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,aAAa,KAAK,IAAI,CAAC;AAClE,CAAC;AAED,SAAS,iBAAiB,CAAC,QAAuB,EAAE,SAAiB;IACpE,MAAM,IAAI,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC;IACvC,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;QACnB,MAAM,MAAM,GAAG,QAAQ,CAAC,cAAc,CAAC;YACtC,IAAI,EAAE,MAAM;YACZ,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,KAAK,EAAE,EAAE;SACT,CAAC,CAAC;QACH,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU;YACjC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,IAAK,IAAI,CAAC,UAAqB,CAAC;YACpF,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;QAClB,mDAAmD;QACnD,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK;YACzE,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK;YACrD,IAAI,CAAC;IACP,CAAC;IAED,4EAA4E;IAC5E,yEAAyE;IACzE,0EAA0E;IAC1E,2EAA2E;IAC3E,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAC1C,IAAI,OAAO,IAAI,iBAAiB,CAAC,QAAQ,EAAE,OAAO,CAAC;QAAE,OAAO,OAAO,CAAC;IAEpE,MAAM,MAAM,GAAG,QAAQ,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;IAC/C,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,iBAAiB,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAChE,CAAC,OAAO,IAAI,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;QACzD,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC;QAC1B,OAAO;QACP,IAAI,CAAC;AACP,CAAC;AAED,8EAA8E;AAC9E,cAAc;AACd,8EAA8E;AAE9E,SAAS,gBAAgB,CAAC,KAAgB,EAAE,QAAuB;IAClE,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC/C,MAAM,UAAU,GAAG,qBAAqB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IACzD,MAAM,IAAI,GAAG,CACZ,UAAU,EAAE,OAAO;QAClB,CAAC,CAAC,IAAI,EAAE,OAAO,IAAI,UAAU,CAAC,cAAc;QAC5C,CAAC,CAAC,UAAU,EAAE,cAAc,IAAI,IAAI,EAAE,OAAO,IAAI,EAAE,CACpD,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACrB,wEAAwE;IACxE,IAAI,CAAC,KAAK,CAAC,QAAQ,KAAK,QAAQ,IAAI,KAAK,CAAC,QAAQ,KAAK,QAAQ,IAAI,KAAK,CAAC,QAAQ,KAAK,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QAC7H,OAAO,GAAG,IAAI,sBAAsB,CAAC;IACtC,CAAC;IACD,OAAO,GAAG,IAAI,mBAAmB,CAAC;AACnC,CAAC;AAED,8EAA8E;AAC9E,qBAAqB;AACrB,8EAA8E;AAE9E,MAAM,UAAU,mBAAmB,CAAC,GAAS,EAAE,QAAuB;IACrE,2EAA2E;IAC3E,iFAAiF;IACjF,GAAG,CAAC,GAAG,CAAC,kBAAkB,EAAE,CAAC,GAAG,EAAE,EAAE;QACnC,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;QACvE,OAAO,GAAG,CAAC,IAAI,CAAC;YACf,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACxB,EAAE,EAAE,CAAC,CAAC,EAAE;gBACR,MAAM,EAAE,OAAO;gBACf,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,YAAY,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC;gBAC1D,QAAQ,EAAE,CAAC,CAAC,cAAc,IAAI,CAAC,CAAC,QAAQ;aACxC,CAAC,CAAC;SACH,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,GAAG,CAAC,IAAI,CAAC,4BAA4B,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;QACpD,kEAAkE;QAClE,IAAI,IAA6B,CAAC;QAClC,IAAI,CAAC;YACJ,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAA4B,CAAC;QAC1D,CAAC;QAAC,MAAM,CAAC;YACR,OAAO,GAAG,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,iCAAiC,EAAE,EAAE,GAAG,CAAC,CAAC;QACpE,CAAC;QAED,MAAM,SAAS,GAAG,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;QAC1E,IAAI,CAAC,SAAS,EAAE,CAAC;YAChB,OAAO,GAAG,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,+BAA+B,EAAE,EAAE,GAAG,CAAC,CAAC;QAClE,CAAC;QAED,kEAAkE;QAClE,MAAM,KAAK,GAAG,iBAAiB,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;QACrD,IAAI,CAAC,KAAK,EAAE,CAAC;YACZ,OAAO,GAAG,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,uBAAuB,SAAS,GAAG,EAAE,EAAE,GAAG,CAAC,CAAC;QACtE,CAAC;QAED,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;YAC3B,MAAM,UAAU,GAAG,qBAAqB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YACzD,OAAO,GAAG,CAAC,IAAI,CACd;gBACC,KAAK,EAAE,aAAa,KAAK,CAAC,QAAQ,WAAW,UAAU,EAAE,SAAS,IAAI,SAAS,uCAAuC;gBACtH,aAAa,EAAE,KAAK,CAAC,EAAE;gBACvB,gBAAgB,EAAE,KAAK,CAAC,QAAQ;aAChC,EACD,GAAG,CACH,CAAC;QACH,CAAC;QAED,kEAAkE;QAClE,2EAA2E;QAC3E,iEAAiE;QACjE,MAAM,QAAQ,GAAG,MAAM,6BAA6B,EAAE,CAAC;QACvD,MAAM,UAAU,GAAG,QAAQ;YAC1B,CAAC,CAAC,MAAM,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC;YACxC,CAAC,CAAC,0BAA0B,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAC9C,MAAM,WAAW,GAAG,UAAU,CAAC,MAAM,IAAI,UAAU,CAAC,WAAW,CAAC;QAChE,MAAM,oBAAoB,GAAG,qBAAqB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACnE,IAAI,oBAAoB,IAAI,mCAAmC,CAAC,oBAAoB,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACvG,MAAM,OAAO,GAAG,oBAAoB,CAAC,iBAAiB,CAAC,MAAM;gBAC5D,CAAC,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC;gBACrD,CAAC,CAAC,oBAAoB,CAAC,uBAAuB,CAAC;YAChD,OAAO,GAAG,CAAC,IAAI,CACd;gBACC,KAAK,EAAE,4BAA4B,KAAK,CAAC,QAAQ,GAAG;gBACpD,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,OAAO,OAAO,EAAE,CAAC,CAAC,CAAC,yCAAyC;gBAC5E,aAAa,EAAE,KAAK,CAAC,EAAE;gBACvB,gBAAgB,EAAE,KAAK,CAAC,QAAQ;aAChC,EACD,GAAG,CACH,CAAC;QACH,CAAC;QAED,kEAAkE;QAClE,MAAM,WAAW,GAAG,gBAAgB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QACtD,MAAM,eAAe,GAA2B,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC;QACvF,IAAI,WAAW;YAAE,eAAe,CAAC,aAAa,GAAG,UAAU,WAAW,EAAE,CAAC;QAEzE,IAAI,QAAkB,CAAC;QACvB,IAAI,CAAC;YACJ,QAAQ,GAAG,MAAM,KAAK,CAAC,WAAW,EAAE;gBACnC,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,eAAe;gBACxB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC;aAClD,CAAC,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACd,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACjE,OAAO,GAAG,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,yBAAyB,OAAO,EAAE,EAAE,gBAAgB,EAAE,KAAK,CAAC,QAAQ,EAAE,EAAE,GAAG,CAAC,CAAC;QACvG,CAAC;QAED,kEAAkE;QAClE,MAAM,eAAe,GAAG,IAAI,OAAO,CAAC;YACnC,eAAe,EAAE,KAAK,CAAC,EAAE;YACzB,kBAAkB,EAAE,KAAK,CAAC,QAAQ;YAClC,mBAAmB,EAAE,SAAS;SAC9B,CAAC,CAAC;QACH,MAAM,EAAE,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QAChD,IAAI,EAAE;YAAE,eAAe,CAAC,GAAG,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;QAEhD,OAAO,IAAI,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC,CAAC;IAC3F,CAAC,CAAC,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"registry-discovery.d.ts","sourceRoot":"","sources":["../src/registry-discovery.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AASH,OAAO,KAAK,EACX,gBAAgB,EAChB,qBAAqB,EACrB,gBAAgB,EAChB,mBAAmB,EACnB,mBAAmB,EACnB,MAAM,yBAAyB,CAAC;AAIjC,OAAO,KAAK,EAAE,SAAS,EAA4B,MAAM,YAAY,CAAC;AACtE,OAAO,KAAK,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAE9E;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,aAAa,GAAG,mBAAmB,GAAG,IAAI,CAIzF;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,aAAa,GAAG,mBAAmB,CAInF;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CACrC,KAAK,EAAE,aAAa,EACpB,OAAO,CAAC,EAAE;IAAE,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GACvC,gBAAgB,CAiDlB;AAED;;GAEG;AACH,wBAAuB,sBAAsB,CAC5C,KAAK,EAAE,aAAa,EACpB,OAAO,CAAC,EAAE;IAAE,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GACvC,cAAc,CAAC,gBAAgB,EAAE,IAAI,EAAE,IAAI,CAAC,CA6B9C;AAED;;GAEG;AACH,wBAAgB,+BAA+B,CAC9C,KAAK,EAAE,aAAa,EACpB,gBAAgB,EAAE,mBAAmB,GAAG,IAAI,GAC1C,IAAI,CAoBN;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,aAAa,GAAG,MAAM,CAE/D;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,GAAG,mBAAmB,CAuB/F;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,GAAG,mBAAmB,CAsBvG;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,SAAS,GAAG,gBAAgB,CA2C/F;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,GAAG,qBAAqB,CAmCzG;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CACxC,KAAK,EAAE,aAAa,EACpB,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,mBAAmB,CAAC,eAAe,CAAC,CAAA;CAAE,GAC3E,IAAI,CAkBN;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,YAAY,EAAE,MAAM,GAAG,mBAAmB,CAAC,eAAe,CAAC,CAehG"}
1
+ {"version":3,"file":"registry-discovery.d.ts","sourceRoot":"","sources":["../src/registry-discovery.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AASH,OAAO,KAAK,EACX,gBAAgB,EAChB,qBAAqB,EACrB,gBAAgB,EAChB,mBAAmB,EACnB,mBAAmB,EACnB,MAAM,yBAAyB,CAAC;AASjC,OAAO,KAAK,EAAE,SAAS,EAA4B,MAAM,YAAY,CAAC;AACtE,OAAO,KAAK,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAE9E;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,aAAa,GAAG,mBAAmB,GAAG,IAAI,CAIzF;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,aAAa,GAAG,mBAAmB,CAInF;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CACrC,KAAK,EAAE,aAAa,EACpB,OAAO,CAAC,EAAE;IAAE,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GACvC,gBAAgB,CAiDlB;AAED;;GAEG;AACH,wBAAuB,sBAAsB,CAC5C,KAAK,EAAE,aAAa,EACpB,OAAO,CAAC,EAAE;IAAE,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GACvC,cAAc,CAAC,gBAAgB,EAAE,IAAI,EAAE,IAAI,CAAC,CA6B9C;AAED;;GAEG;AACH,wBAAgB,+BAA+B,CAC9C,KAAK,EAAE,aAAa,EACpB,gBAAgB,EAAE,mBAAmB,GAAG,IAAI,GAC1C,IAAI,CAoBN;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,aAAa,GAAG,MAAM,CAE/D;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,GAAG,mBAAmB,CAuB/F;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,GAAG,mBAAmB,CAsBvG;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,SAAS,GAAG,gBAAgB,CA2C/F;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,GAAG,qBAAqB,CAmCzG;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CACxC,KAAK,EAAE,aAAa,EACpB,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,mBAAmB,CAAC,eAAe,CAAC,CAAA;CAAE,GAC3E,IAAI,CAkBN;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,YAAY,EAAE,MAAM,GAAG,mBAAmB,CAAC,eAAe,CAAC,CAehG"}
@@ -6,7 +6,7 @@
6
6
  * @module
7
7
  */
8
8
  import { DISCOVERY_SCHEMA_VERSION, discoveryRoles, makeModelKey, rawCapabilitiesForModel, trustedCapabilitiesForModel, } from "./discovery-contract.js";
9
- import { getProviderConfig, listProviderDescriptors, normalizeProviderId } from "./provider-catalog.js";
9
+ import { getProviderConfig, listProviderDescriptors, normalizeProviderId, providerExecutionCredentialRequired, } from "./provider-catalog.js";
10
10
  import { diffSnapshots, fullSnapshotChanges } from "./registry-delta.js";
11
11
  import { registryModels, registryProviderDescriptor } from "./registry-query.js";
12
12
  /**
@@ -179,7 +179,7 @@ export function registrySerializeProvider(state, providerId) {
179
179
  authenticated: provider?.authenticated ?? false,
180
180
  credentialSource: provider?.credentialSource ?? null,
181
181
  credentialsPresent: provider?.authenticated ?? false,
182
- credentialsRequired: descriptor.credentialRequired,
182
+ credentialsRequired: providerExecutionCredentialRequired(descriptor),
183
183
  credentialEnvVars: [...descriptor.credentialEnvVars],
184
184
  modelCount: provider?.models.length ?? 0,
185
185
  lastRefreshed: provider?.lastRefreshed ?? null,
@@ -308,7 +308,7 @@ export function registryClassifyError(errorMessage) {
308
308
  if (lower.includes("timed out") || lower.includes("timeout") || lower.includes("abort")) {
309
309
  return "timeout";
310
310
  }
311
- if (lower.includes("network") || lower.includes("econn") || lower.includes("fetch failed") || lower.includes("5")) {
311
+ if (lower.includes("network") || lower.includes("econn") || lower.includes("fetch failed") || /\b5\d{2}\b/.test(lower)) {
312
312
  return "transport";
313
313
  }
314
314
  return "unknown";
@@ -317,7 +317,7 @@ function catalogCredentialPrompts(state) {
317
317
  const prompts = [];
318
318
  for (const descriptor of listProviderDescriptors()) {
319
319
  const provider = state.providerMap.get(descriptor.providerId);
320
- if (!descriptor.credentialRequired || provider?.authenticated) {
320
+ if (!providerExecutionCredentialRequired(descriptor) || provider?.authenticated) {
321
321
  continue;
322
322
  }
323
323
  const envHint = descriptor.credentialEnvVars.length > 0
@@ -328,7 +328,7 @@ function catalogCredentialPrompts(state) {
328
328
  providerName: descriptor.name,
329
329
  required: true,
330
330
  envVars: descriptor.credentialEnvVars,
331
- message: `${envHint} to enable ${descriptor.name} model discovery.`,
331
+ message: `${envHint} to enable ${descriptor.name} ${descriptor.credentialRequired ? "model discovery and requests" : "model requests"}.`,
332
332
  });
333
333
  }
334
334
  return prompts.sort((a, b) => a.providerId.localeCompare(b.providerId));