@sriinnu/kosha-discovery 1.10.0 → 1.12.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 (65) hide show
  1. package/dist/cli-cmd-doctor.d.ts +7 -0
  2. package/dist/cli-cmd-doctor.d.ts.map +1 -1
  3. package/dist/cli-cmd-doctor.js +11 -9
  4. package/dist/cli-cmd-doctor.js.map +1 -1
  5. package/dist/cli-cmd-query.d.ts +5 -0
  6. package/dist/cli-cmd-query.d.ts.map +1 -1
  7. package/dist/cli-cmd-query.js +64 -12
  8. package/dist/cli-cmd-query.js.map +1 -1
  9. package/dist/cli-cmd-spend.d.ts +6 -0
  10. package/dist/cli-cmd-spend.d.ts.map +1 -1
  11. package/dist/cli-cmd-spend.js +22 -6
  12. package/dist/cli-cmd-spend.js.map +1 -1
  13. package/dist/cli-commands.d.ts +4 -4
  14. package/dist/cli-commands.d.ts.map +1 -1
  15. package/dist/cli-commands.js +14 -12
  16. package/dist/cli-commands.js.map +1 -1
  17. package/dist/cli-help.d.ts.map +1 -1
  18. package/dist/cli-help.js +5 -1
  19. package/dist/cli-help.js.map +1 -1
  20. package/dist/cli.js +4 -1
  21. package/dist/cli.js.map +1 -1
  22. package/dist/cost.d.ts +4 -0
  23. package/dist/cost.d.ts.map +1 -1
  24. package/dist/cost.js +27 -18
  25. package/dist/cost.js.map +1 -1
  26. package/dist/discovery/price-schedules.d.ts +27 -0
  27. package/dist/discovery/price-schedules.d.ts.map +1 -0
  28. package/dist/discovery/price-schedules.js +58 -0
  29. package/dist/discovery/price-schedules.js.map +1 -0
  30. package/dist/index.d.ts +2 -2
  31. package/dist/index.d.ts.map +1 -1
  32. package/dist/index.js +1 -1
  33. package/dist/index.js.map +1 -1
  34. package/dist/mcp-server.d.ts.map +1 -1
  35. package/dist/mcp-server.js +12 -8
  36. package/dist/mcp-server.js.map +1 -1
  37. package/dist/price-trust.d.ts +29 -0
  38. package/dist/price-trust.d.ts.map +1 -0
  39. package/dist/price-trust.js +36 -0
  40. package/dist/price-trust.js.map +1 -0
  41. package/dist/proxy.d.ts.map +1 -1
  42. package/dist/proxy.js +138 -28
  43. package/dist/proxy.js.map +1 -1
  44. package/dist/registry-query.d.ts +1 -1
  45. package/dist/registry-query.d.ts.map +1 -1
  46. package/dist/registry-query.js +90 -25
  47. package/dist/registry-query.js.map +1 -1
  48. package/dist/registry-routing.d.ts +3 -1
  49. package/dist/registry-routing.d.ts.map +1 -1
  50. package/dist/registry-routing.js +7 -8
  51. package/dist/registry-routing.js.map +1 -1
  52. package/dist/registry-runtime.d.ts +7 -0
  53. package/dist/registry-runtime.d.ts.map +1 -1
  54. package/dist/registry-runtime.js +36 -11
  55. package/dist/registry-runtime.js.map +1 -1
  56. package/dist/registry.d.ts.map +1 -1
  57. package/dist/registry.js +37 -23
  58. package/dist/registry.js.map +1 -1
  59. package/dist/server.d.ts.map +1 -1
  60. package/dist/server.js +6 -0
  61. package/dist/server.js.map +1 -1
  62. package/dist/types.d.ts +36 -0
  63. package/dist/types.d.ts.map +1 -1
  64. package/package.json +1 -1
  65. package/server.json +2 -2
@@ -7,6 +7,7 @@
7
7
  * @module
8
8
  */
9
9
  import { extractModelVersion, extractOriginProvider, matchableModelId } from "./normalize.js";
10
+ import { isUnverifiedZeroPrice } from "./price-trust.js";
10
11
  import { getProviderDescriptor, isLocalProvider, normalizeProviderId, providerExecutionCredentialRequired, } from "./provider-catalog.js";
11
12
  const ROLE_ALIASES = {
12
13
  embeddings: "embedding",
@@ -55,7 +56,7 @@ const MODE_ALIASES = {
55
56
  * Return a stable provider descriptor, even for synthetic test providers.
56
57
  */
57
58
  export function registryProviderDescriptor(_state, providerId, providerInfo) {
58
- return getProviderDescriptor(providerId) ?? {
59
+ return (getProviderDescriptor(providerId) ?? {
59
60
  providerId,
60
61
  canonicalProviderId: providerId,
61
62
  aliases: [],
@@ -67,13 +68,16 @@ export function registryProviderDescriptor(_state, providerId, providerInfo) {
67
68
  credentialRequired: false,
68
69
  executionCredentialRequired: false,
69
70
  credentialEnvVars: [],
70
- };
71
+ });
71
72
  }
72
73
  /**
73
74
  * Normalize a role or capability token for routing and filtering.
74
75
  */
75
76
  export function normalizeRoleToken(value) {
76
- const token = value.trim().toLowerCase().replace(/[\s-]+/g, "_");
77
+ const token = value
78
+ .trim()
79
+ .toLowerCase()
80
+ .replace(/[\s-]+/g, "_");
77
81
  return ROLE_ALIASES[token] ?? token;
78
82
  }
79
83
  /**
@@ -133,7 +137,8 @@ export function registryProviderRoles(state, filter) {
133
137
  for (const providerInfo of state.providerMap.values()) {
134
138
  if (normalizedProvider && providerInfo.id !== normalizedProvider)
135
139
  continue;
136
- const models = providerInfo.models.filter((model) => {
140
+ const models = providerInfo.models
141
+ .filter((model) => {
137
142
  if (normalizedOriginProvider && normalizeProviderId(model.originProvider) !== normalizedOriginProvider)
138
143
  return false;
139
144
  if (filter?.mode && model.mode !== filter.mode)
@@ -143,7 +148,8 @@ export function registryProviderRoles(state, filter) {
143
148
  if (filter?.role && !modelSupportsRole(model, filter.role))
144
149
  return false;
145
150
  return true;
146
- }).map((model) => ({
151
+ })
152
+ .map((model) => ({
147
153
  id: model.id,
148
154
  name: model.name,
149
155
  provider: model.provider,
@@ -170,17 +176,19 @@ export function registryProviderRoles(state, filter) {
170
176
  export function registryMissingCredentialPrompts(state, providerIds) {
171
177
  const normalizedIds = providerIds?.map((providerId) => normalizeProviderId(providerId) ?? providerId);
172
178
  const providers = providerIds && providerIds.length > 0
173
- ? normalizedIds?.flatMap((providerId) => {
179
+ ? (normalizedIds?.flatMap((providerId) => {
174
180
  const provider = state.providerMap.get(providerId ?? "");
175
181
  return provider ? [provider] : [];
176
- }) ?? []
182
+ }) ?? [])
177
183
  : Array.from(state.providerMap.values());
178
184
  const prompts = [];
179
185
  for (const provider of providers) {
180
186
  const descriptor = registryProviderDescriptor(state, provider.id, provider);
181
187
  if (!providerExecutionCredentialRequired(descriptor) || provider.authenticated)
182
188
  continue;
183
- const envHint = descriptor.credentialEnvVars.length > 0 ? `Set ${descriptor.credentialEnvVars.join(" or ")}` : "Configure credentials";
189
+ const envHint = descriptor.credentialEnvVars.length > 0
190
+ ? `Set ${descriptor.credentialEnvVars.join(" or ")}`
191
+ : "Configure credentials";
184
192
  const action = descriptor.credentialRequired ? "model discovery and requests" : "model requests";
185
193
  prompts.push({
186
194
  providerId: descriptor.providerId,
@@ -202,9 +210,16 @@ export function registryCheapestModels(state, options) {
202
210
  provider: options?.provider,
203
211
  originProvider: options?.originProvider,
204
212
  mode: options?.mode,
205
- }).filter((model) => model.status !== "retired" && (!capability || modelSupportsRole(model, capability)) && (!options?.role || modelSupportsRole(model, options.role)));
213
+ }).filter((model) => model.status !== "retired" &&
214
+ (!capability || modelSupportsRole(model, capability)) &&
215
+ (!options?.role || modelSupportsRole(model, options.role)) &&
216
+ // Every filter runs here, before the cut to `limit`; filtering the
217
+ // cut list instead returned "nothing" whenever the cheapest few failed it.
218
+ (options?.minContextWindow === undefined || model.contextWindow >= options.minContextWindow) &&
219
+ (!options?.where || options.where(model)));
206
220
  const priceMetric = options?.priceMetric ?? defaultPricingMetric(options);
207
221
  const ranked = [];
222
+ const unverified = [];
208
223
  const unpriced = [];
209
224
  for (const model of candidates) {
210
225
  const score = computeModelScore(model, priceMetric, options?.inputWeight ?? 1, options?.outputWeight ?? 1, effectiveRole);
@@ -213,13 +228,27 @@ export function registryCheapestModels(state, options) {
213
228
  unpriced.push({ model, score: undefined, priceMetric });
214
229
  continue;
215
230
  }
231
+ // A $0 score built on a catalog-only $0 token price is an unknown
232
+ // price, not the cheapest one. A per-image or per-second rate that
233
+ // scores above $0 for this query is a real price and ranks as one.
234
+ if (score === 0 && isUnverifiedZeroPrice(model)) {
235
+ if (options?.includeUnpriced)
236
+ unverified.push({ model, score: undefined, priceMetric, priceUnverified: true });
237
+ continue;
238
+ }
216
239
  ranked.push({ model, score, priceMetric });
217
240
  }
218
- ranked.sort((a, b) => (a.score ?? Number.POSITIVE_INFINITY) - (b.score ?? Number.POSITIVE_INFINITY) || a.model.provider.localeCompare(b.model.provider) || a.model.id.localeCompare(b.model.id));
219
- unpriced.sort((a, b) => a.model.provider.localeCompare(b.model.provider) || a.model.id.localeCompare(b.model.id));
220
- const scopedProviderIds = options?.provider ? [options.provider] : Array.from(state.providerMap.values()).map((provider) => provider.id);
241
+ ranked.sort((a, b) => (a.score ?? Number.POSITIVE_INFINITY) - (b.score ?? Number.POSITIVE_INFINITY) ||
242
+ a.model.provider.localeCompare(b.model.provider) ||
243
+ a.model.id.localeCompare(b.model.id));
244
+ const byName = (a, b) => a.model.provider.localeCompare(b.model.provider) || a.model.id.localeCompare(b.model.id);
245
+ unverified.sort(byName);
246
+ unpriced.sort(byName);
247
+ const scopedProviderIds = options?.provider
248
+ ? [options.provider]
249
+ : Array.from(state.providerMap.values()).map((provider) => provider.id);
221
250
  return {
222
- matches: [...ranked, ...unpriced].slice(0, normalizeLimit(options?.limit)),
251
+ matches: [...ranked, ...unverified, ...unpriced].slice(0, normalizeLimit(options?.limit)),
223
252
  candidates: candidates.length,
224
253
  pricedCandidates: ranked.length,
225
254
  skippedNoPricing: candidates.length - ranked.length,
@@ -263,10 +292,19 @@ export function registryModelRouteInfo(state, modelId) {
263
292
  route.isPreferred = true;
264
293
  }
265
294
  else {
266
- const priced = info.filter((route) => route.model.pricing && Number.isFinite(route.model.pricing.inputPerMillion) && Number.isFinite(route.model.pricing.outputPerMillion));
267
- (priced.length > 0 ? priced.sort((a, b) => ((a.model.pricing?.inputPerMillion ?? 0) + (a.model.pricing?.outputPerMillion ?? 0)) - ((b.model.pricing?.inputPerMillion ?? 0) + (b.model.pricing?.outputPerMillion ?? 0)) || a.provider.localeCompare(b.provider)) : info)[0].isPreferred = true;
295
+ const priced = info.filter((route) => route.model.pricing &&
296
+ Number.isFinite(route.model.pricing.inputPerMillion) &&
297
+ Number.isFinite(route.model.pricing.outputPerMillion));
298
+ (priced.length > 0
299
+ ? priced.sort((a, b) => (a.model.pricing?.inputPerMillion ?? 0) +
300
+ (a.model.pricing?.outputPerMillion ?? 0) -
301
+ ((b.model.pricing?.inputPerMillion ?? 0) + (b.model.pricing?.outputPerMillion ?? 0)) ||
302
+ a.provider.localeCompare(b.provider))
303
+ : info)[0].isPreferred = true;
268
304
  }
269
- return info.sort((a, b) => Number(b.isPreferred) - Number(a.isPreferred) || Number(b.isDirect) - Number(a.isDirect) || a.provider.localeCompare(b.provider));
305
+ return info.sort((a, b) => Number(b.isPreferred) - Number(a.isPreferred) ||
306
+ Number(b.isDirect) - Number(a.isDirect) ||
307
+ a.provider.localeCompare(b.provider));
270
308
  }
271
309
  /**
272
310
  * Aggregate capability statistics across all discovered models.
@@ -275,30 +313,41 @@ export function registryCapabilities(state, filter) {
275
313
  const capabilityMap = new Map();
276
314
  for (const model of registryModels(state, { provider: filter?.provider })) {
277
315
  for (const role of modelRoles(model)) {
278
- const entry = capabilityMap.get(role) ?? { models: new Set(), providers: new Set(), modes: new Set(), exampleModelId: model.id };
316
+ const entry = capabilityMap.get(role) ?? {
317
+ models: new Set(),
318
+ providers: new Set(),
319
+ modes: new Set(),
320
+ exampleModelId: model.id,
321
+ };
279
322
  entry.models.add(`${model.provider}:${model.id}`);
280
323
  entry.providers.add(model.provider);
281
324
  entry.modes.add(model.mode);
282
325
  capabilityMap.set(role, entry);
283
326
  }
284
327
  }
285
- return Array.from(capabilityMap.entries()).map(([capability, entry]) => ({
328
+ return Array.from(capabilityMap.entries())
329
+ .map(([capability, entry]) => ({
286
330
  capability,
287
331
  modelCount: entry.models.size,
288
332
  providerCount: entry.providers.size,
289
333
  providers: Array.from(entry.providers).sort(),
290
334
  modes: Array.from(entry.modes).sort(),
291
335
  exampleModelId: entry.exampleModelId,
292
- })).sort((a, b) => b.modelCount - a.modelCount || a.capability.localeCompare(b.capability));
336
+ }))
337
+ .sort((a, b) => b.modelCount - a.modelCount || a.capability.localeCompare(b.capability));
293
338
  }
294
339
  /**
295
340
  * Pick the default pricing metric for a cheapest-model query.
296
341
  */
297
342
  export function defaultPricingMetric(options) {
298
- const effective = (options?.role ? normalizeRoleToken(options.role) : undefined) ?? (options?.capability ? normalizeRoleToken(options.capability) : undefined);
343
+ const effective = (options?.role ? normalizeRoleToken(options.role) : undefined) ??
344
+ (options?.capability ? normalizeRoleToken(options.capability) : undefined);
299
345
  if (options?.mode === "embedding" || effective === "embedding")
300
346
  return "input";
301
- if (options?.mode === "image" || options?.mode === "video" || effective === "image_generation" || effective === "video_generation")
347
+ if (options?.mode === "image" ||
348
+ options?.mode === "video" ||
349
+ effective === "image_generation" ||
350
+ effective === "video_generation")
302
351
  return "output";
303
352
  if (effective === "web_search" || effective === "maps_search")
304
353
  return "output";
@@ -312,8 +361,15 @@ export function defaultPricingMetric(options) {
312
361
  export function computeModelScore(model, metric, inputWeight, outputWeight, roleOrCapability) {
313
362
  if (!model.pricing)
314
363
  return undefined;
315
- if (metric === "input")
364
+ if (metric === "input") {
365
+ // A speech or TTS model can carry $0 tokens beside its real per-second
366
+ // or per-character rate; that rate is its price for the query.
367
+ const unitInput = inputUnitScore(model, roleOrCapability);
368
+ if (unitInput !== undefined && model.pricing.inputPerMillion === 0 && model.pricing.outputPerMillion === 0) {
369
+ return unitInput;
370
+ }
316
371
  return Number.isFinite(model.pricing.inputPerMillion) ? model.pricing.inputPerMillion : undefined;
372
+ }
317
373
  const unitOutput = outputUnitScore(model, roleOrCapability);
318
374
  if (metric === "output") {
319
375
  // A unit-priced rate (USD per image / per second / per 1000 requests / per million chars) is
@@ -323,15 +379,24 @@ export function computeModelScore(model, metric, inputWeight, outputWeight, role
323
379
  return unitOutput;
324
380
  return Number.isFinite(model.pricing.outputPerMillion) ? model.pricing.outputPerMillion : undefined;
325
381
  }
326
- if (unitOutput !== undefined &&
327
- model.pricing.inputPerMillion === 0 &&
328
- model.pricing.outputPerMillion === 0) {
382
+ if (unitOutput !== undefined && model.pricing.inputPerMillion === 0 && model.pricing.outputPerMillion === 0) {
329
383
  return unitOutput;
330
384
  }
331
385
  return Number.isFinite(model.pricing.inputPerMillion) && Number.isFinite(model.pricing.outputPerMillion)
332
386
  ? model.pricing.inputPerMillion * inputWeight + model.pricing.outputPerMillion * outputWeight
333
387
  : undefined;
334
388
  }
389
+ function inputUnitScore(model, roleOrCapability) {
390
+ const pricing = model.pricing;
391
+ if (!pricing)
392
+ return undefined;
393
+ const role = roleOrCapability ? normalizeRoleToken(roleOrCapability) : undefined;
394
+ if (role === "speech_to_text")
395
+ return pricing.audioInputPerSecond;
396
+ if (role === "text_to_speech")
397
+ return pricing.inputPerMillionCharacters ?? pricing.audioOutputPerSecond ?? pricing.outputPerMillionCharacters;
398
+ return undefined;
399
+ }
335
400
  function outputUnitScore(model, roleOrCapability) {
336
401
  const pricing = model.pricing;
337
402
  if (!pricing)
@@ -1 +1 @@
1
- {"version":3,"file":"registry-query.js","sourceRoot":"","sources":["../src/registry-query.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"registry-query.js","sourceRoot":"","sources":["../src/registry-query.ts"],"names":[],"mappings":"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"}
@@ -10,8 +10,8 @@
10
10
  * `breaker.canExecute()`, which would transition open → half-open).
11
11
  * @module
12
12
  */
13
- import type { CircuitState } from "./resilience.js";
14
13
  import type { ProviderObservation, RegistryState } from "./registry-state.js";
14
+ import type { CircuitState } from "./resilience.js";
15
15
  import type { CheapestModelMatch, ModelCard } from "./types.js";
16
16
  /** Selection strategy applied on top of the price-filtered candidate set. */
17
17
  export type RouteStrategy = "cheapest" | "fastest" | "reliable" | "balanced";
@@ -46,6 +46,8 @@ export interface RankedRoute {
46
46
  health: RouteHealth;
47
47
  /** Strategy-specific rank key — lower is better. */
48
48
  compositeScore: number;
49
+ /** The catalog says $0/$0 and nothing confirms it; `price` is null. */
50
+ priceUnverified?: boolean;
49
51
  }
50
52
  /**
51
53
  * Compute a read-only health snapshot for one provider from the rolling
@@ -1 +1 @@
1
- {"version":3,"file":"registry-routing.d.ts","sourceRoot":"","sources":["../src/registry-routing.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,KAAK,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAC9E,OAAO,KAAK,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEhE,6EAA6E;AAC7E,MAAM,MAAM,aAAa,GAAG,UAAU,GAAG,SAAS,GAAG,UAAU,GAAG,UAAU,CAAC;AAE7E,yEAAyE;AACzE,eAAO,MAAM,gBAAgB,EAAE,SAAS,aAAa,EAAoD,CAAC;AAO1G,6EAA6E;AAC7E,MAAM,WAAW,WAAW;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,0CAA0C;IAC1C,YAAY,EAAE,YAAY,CAAC;IAC3B,oEAAoE;IACpE,SAAS,EAAE,OAAO,CAAC;IACnB,uEAAuE;IACvE,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,4DAA4D;IAC5D,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,yDAAyD;IACzD,WAAW,EAAE,MAAM,CAAC;IACpB,wDAAwD;IACxD,gBAAgB,EAAE,MAAM,CAAC;IACzB,6DAA6D;IAC7D,OAAO,EAAE,MAAM,CAAC;IAChB,oDAAoD;IACpD,aAAa,EAAE,mBAAmB,CAAC,eAAe,CAAC,CAAC;CACpD;AAED,mFAAmF;AACnF,MAAM,WAAW,WAAW;IAC3B,KAAK,EAAE,SAAS,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,iFAAiF;IACjF,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,MAAM,EAAE,WAAW,CAAC;IACpB,oDAAoD;IACpD,cAAc,EAAE,MAAM,CAAC;CACvB;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,GAAG,WAAW,CA4BzF;AAED;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CACvC,KAAK,EAAE,aAAa,EACpB,OAAO,EAAE,kBAAkB,EAAE,EAC7B,QAAQ,EAAE,aAAa,GACrB,WAAW,EAAE,CAsDf;AA6DD,2EAA2E;AAC3E,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,aAAa,GAAG,SAAS,CAM9F"}
1
+ {"version":3,"file":"registry-routing.d.ts","sourceRoot":"","sources":["../src/registry-routing.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAC9E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,KAAK,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEhE,6EAA6E;AAC7E,MAAM,MAAM,aAAa,GAAG,UAAU,GAAG,SAAS,GAAG,UAAU,GAAG,UAAU,CAAC;AAE7E,yEAAyE;AACzE,eAAO,MAAM,gBAAgB,EAAE,SAAS,aAAa,EAAoD,CAAC;AAO1G,6EAA6E;AAC7E,MAAM,WAAW,WAAW;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,0CAA0C;IAC1C,YAAY,EAAE,YAAY,CAAC;IAC3B,oEAAoE;IACpE,SAAS,EAAE,OAAO,CAAC;IACnB,uEAAuE;IACvE,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,4DAA4D;IAC5D,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,yDAAyD;IACzD,WAAW,EAAE,MAAM,CAAC;IACpB,wDAAwD;IACxD,gBAAgB,EAAE,MAAM,CAAC;IACzB,6DAA6D;IAC7D,OAAO,EAAE,MAAM,CAAC;IAChB,oDAAoD;IACpD,aAAa,EAAE,mBAAmB,CAAC,eAAe,CAAC,CAAC;CACpD;AAED,mFAAmF;AACnF,MAAM,WAAW,WAAW;IAC3B,KAAK,EAAE,SAAS,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,iFAAiF;IACjF,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,MAAM,EAAE,WAAW,CAAC;IACpB,oDAAoD;IACpD,cAAc,EAAE,MAAM,CAAC;IACvB,uEAAuE;IACvE,eAAe,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,GAAG,WAAW,CA2BzF;AAED;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CACvC,KAAK,EAAE,aAAa,EACpB,OAAO,EAAE,kBAAkB,EAAE,EAC7B,QAAQ,EAAE,aAAa,GACrB,WAAW,EAAE,CA0Df;AA6DD,2EAA2E;AAC3E,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,aAAa,GAAG,SAAS,CAI9F"}
@@ -24,9 +24,7 @@ export function providerRouteHealth(state, providerId) {
24
24
  const breakerState = state.healthTracker.breaker(providerId).health().state;
25
25
  const observation = state.providerObservations.get(providerId);
26
26
  const samples = observation?.latenciesMs.length ?? 0;
27
- const timeoutRate = observation && observation.attemptCount > 0
28
- ? observation.timeoutCount / observation.attemptCount
29
- : 0;
27
+ const timeoutRate = observation && observation.attemptCount > 0 ? observation.timeoutCount / observation.attemptCount : 0;
30
28
  let reliabilityScore = 1;
31
29
  if (breakerState === "open")
32
30
  reliabilityScore = 0;
@@ -89,6 +87,7 @@ export function rankCandidatesByStrategy(state, matches, strategy) {
89
87
  model: row.model,
90
88
  providerId: row.providerId,
91
89
  price: row.price,
90
+ ...(routable[index].priceUnverified ? { priceUnverified: true } : {}),
92
91
  health: row.health,
93
92
  compositeScore: compositeFor(strategy, row, index, {
94
93
  minPrice,
@@ -97,12 +96,14 @@ export function rankCandidatesByStrategy(state, matches, strategy) {
97
96
  maxLatency,
98
97
  }),
99
98
  }));
100
- // Stable, deterministic ordering: available providers first, then the
101
- // strategy score, then deprecated models are pushed behind active/preview
99
+ // Stable, deterministic ordering: available providers first, then routes
100
+ // with a known price before catalog-$0 ones (whatever the strategy), then
101
+ // the strategy score, then deprecated models are pushed behind active/preview
102
102
  // ones among otherwise-equal candidates, then price, then model id as a
103
103
  // final tiebreak. Deprecated routes are demoted, not hidden — a cheaper
104
104
  // or faster deprecated route can still win on its composite score.
105
105
  return scored.sort((a, b) => Number(b.health.available) - Number(a.health.available) ||
106
+ Number(a.priceUnverified === true) - Number(b.priceUnverified === true) ||
106
107
  a.compositeScore - b.compositeScore ||
107
108
  statusDemotionRank(a.model) - statusDemotionRank(b.model) ||
108
109
  (a.price ?? Number.POSITIVE_INFINITY) - (b.price ?? Number.POSITIVE_INFINITY) ||
@@ -158,8 +159,6 @@ export function parseRouteStrategy(value) {
158
159
  if (!value)
159
160
  return undefined;
160
161
  const normalized = value.trim().toLowerCase();
161
- return ROUTE_STRATEGIES.includes(normalized)
162
- ? normalized
163
- : undefined;
162
+ return ROUTE_STRATEGIES.includes(normalized) ? normalized : undefined;
164
163
  }
165
164
  //# sourceMappingURL=registry-routing.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"registry-routing.js","sourceRoot":"","sources":["../src/registry-routing.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AASH,yEAAyE;AACzE,MAAM,CAAC,MAAM,gBAAgB,GAA6B,CAAC,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;AAE1G;;4DAE4D;AAC5D,MAAM,kBAAkB,GAAG,MAAM,CAAC;AAkClC;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAAoB,EAAE,UAAkB;IAC3E,MAAM,YAAY,GAAG,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC;IAC5E,MAAM,WAAW,GAAG,KAAK,CAAC,oBAAoB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAC/D,MAAM,OAAO,GAAG,WAAW,EAAE,WAAW,CAAC,MAAM,IAAI,CAAC,CAAC;IACrD,MAAM,WAAW,GAAG,WAAW,IAAI,WAAW,CAAC,YAAY,GAAG,CAAC;QAC9D,CAAC,CAAC,WAAW,CAAC,YAAY,GAAG,WAAW,CAAC,YAAY;QACrD,CAAC,CAAC,CAAC,CAAC;IAEL,IAAI,gBAAgB,GAAG,CAAC,CAAC;IACzB,IAAI,YAAY,KAAK,MAAM;QAAE,gBAAgB,GAAG,CAAC,CAAC;SAC7C,IAAI,YAAY,KAAK,WAAW;QAAE,gBAAgB,IAAI,GAAG,CAAC;IAC/D,gBAAgB,IAAI,CAAC,GAAG,WAAW,CAAC;IACpC,yEAAyE;IACzE,kEAAkE;IAClE,IAAI,WAAW,EAAE,aAAa,KAAK,YAAY;QAAE,gBAAgB,IAAI,GAAG,CAAC;SACpE,IAAI,WAAW,EAAE,aAAa,KAAK,WAAW;QAAE,gBAAgB,IAAI,GAAG,CAAC;IAE7E,OAAO;QACN,UAAU;QACV,YAAY;QACZ,SAAS,EAAE,YAAY,KAAK,MAAM;QAClC,YAAY,EAAE,UAAU,CAAC,WAAW,EAAE,WAAW,EAAE,IAAI,CAAC;QACxD,YAAY,EAAE,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC;QAC5C,WAAW,EAAE,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC3C,gBAAgB,EAAE,MAAM,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACrD,OAAO;QACP,aAAa,EAAE,WAAW,EAAE,aAAa,IAAI,IAAI;KACjD,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,wBAAwB,CACvC,KAAoB,EACpB,OAA6B,EAC7B,QAAuB;IAEvB,0EAA0E;IAC1E,wEAAwE;IACxE,kEAAkE;IAClE,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC;IAC7E,uEAAuE;IACvE,0EAA0E;IAC1E,qEAAqE;IACrE,6BAA6B;IAC7B,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAErC,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QACnC,MAAM,MAAM,GAAG,mBAAmB,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAChE,OAAO;YACN,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,UAAU,EAAE,KAAK,CAAC,KAAK,CAAC,QAAQ;YAChC,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,IAAI;YAC1B,MAAM;YACN,OAAO,EAAE,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,YAAY,IAAI,kBAAkB;SACzE,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,0EAA0E;IAC1E,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;IACrF,MAAM,QAAQ,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACrE,MAAM,QAAQ,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACrE,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IAC3D,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IAE3D,MAAM,MAAM,GAAkB,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;QACvD,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,UAAU,EAAE,GAAG,CAAC,UAAU;QAC1B,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,cAAc,EAAE,YAAY,CAAC,QAAQ,EAAE,GAAG,EAAE,KAAK,EAAE;YAClD,QAAQ;YACR,QAAQ;YACR,UAAU;YACV,UAAU;SACV,CAAC;KACF,CAAC,CAAC,CAAC;IAEJ,sEAAsE;IACtE,0EAA0E;IAC1E,wEAAwE;IACxE,wEAAwE;IACxE,mEAAmE;IACnE,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAC3B,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC;QACvD,CAAC,CAAC,cAAc,GAAG,CAAC,CAAC,cAAc;QACnC,kBAAkB,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,kBAAkB,CAAC,CAAC,CAAC,KAAK,CAAC;QACzD,CAAC,CAAC,CAAC,KAAK,IAAI,MAAM,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,MAAM,CAAC,iBAAiB,CAAC;QAC7E,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CACpC,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,SAAS,kBAAkB,CAAC,KAAgB;IAC3C,OAAO,KAAK,CAAC,MAAM,KAAK,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9C,CAAC;AASD,SAAS,YAAY,CACpB,QAAuB,EACvB,GAAmE,EACnE,KAAa,EACb,GAAa;IAEb,QAAQ,QAAQ,EAAE,CAAC;QAClB,KAAK,UAAU;YACd,uDAAuD;YACvD,OAAO,KAAK,CAAC;QACd,KAAK,SAAS;YACb,OAAO,GAAG,CAAC,OAAO,CAAC;QACpB,KAAK,UAAU;YACd,OAAO,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,gBAAgB,CAAC;QACxC,KAAK,UAAU,EAAE,CAAC;YACjB,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;YAChF,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC;YACxE,MAAM,YAAY,GAAG,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,gBAAgB,CAAC;YACrD,OAAO,GAAG,GAAG,MAAM,GAAG,GAAG,GAAG,QAAQ,GAAG,GAAG,GAAG,YAAY,CAAC;QAC3D,CAAC;IACF,CAAC;AACF,CAAC;AAED,iFAAiF;AACjF,SAAS,SAAS,CAAC,KAAa,EAAE,GAAW,EAAE,GAAW;IACzD,IAAI,GAAG,IAAI,GAAG;QAAE,OAAO,CAAC,CAAC;IACzB,OAAO,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;AACpC,CAAC;AAED,SAAS,IAAI,CAAC,MAA4B;IACzC,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAChD,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;AAC1E,CAAC;AAED,gEAAgE;AAChE,SAAS,UAAU,CAAC,MAA4B,EAAE,CAAS;IAC1D,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAChD,MAAM,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACjD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;IAC1C,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACnE,CAAC;AAED,2EAA2E;AAC3E,MAAM,UAAU,kBAAkB,CAAC,KAAgC;IAClE,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAC;IAC7B,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC9C,OAAQ,gBAAsC,CAAC,QAAQ,CAAC,UAAU,CAAC;QAClE,CAAC,CAAE,UAA4B;QAC/B,CAAC,CAAC,SAAS,CAAC;AACd,CAAC"}
1
+ {"version":3,"file":"registry-routing.js","sourceRoot":"","sources":["../src/registry-routing.ts"],"names":[],"mappings":"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"}
@@ -105,4 +105,11 @@ export interface PricingAnomaly {
105
105
  /** True when either snapshot carried a promo_override tag for this model. */
106
106
  promo: boolean;
107
107
  }
108
+ /**
109
+ * Drop anomalies the log already ends on. A quarantined rate keeps the old
110
+ * price in the manifest, so every export sees the same move again; logging
111
+ * each one printed the same 172 lines on every run and pushed real changes
112
+ * out of the capped log. A price that moves away and back is still logged.
113
+ */
114
+ export declare function unloggedAnomalies(existing: PricingAnomaly[], fresh: PricingAnomaly[]): PricingAnomaly[];
108
115
  //# sourceMappingURL=registry-runtime.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"registry-runtime.d.ts","sourceRoot":"","sources":["../src/registry-runtime.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"registry-runtime.d.ts","sourceRoot":"","sources":["../src/registry-runtime.ts"],"names":[],"mappings":"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"}
@@ -10,6 +10,7 @@ import { mkdir, open, readdir, rename, stat, unlink, writeFile } from "fs/promis
10
10
  import { homedir } from "os";
11
11
  import { dirname, join } from "path";
12
12
  import { catalogCacheKey, loadActiveCatalog } from "./catalog-source.js";
13
+ import { applyPriceSchedules } from "./discovery/price-schedules.js";
13
14
  import { applyPromoOverrides } from "./discovery/promo-overrides.js";
14
15
  import { DISCOVERY_SCHEMA_VERSION } from "./discovery-contract.js";
15
16
  import { getProviderConfig, getProviderDescriptor, isLocalProvider, normalizeProviderId } from "./provider-catalog.js";
@@ -87,7 +88,7 @@ export async function registryDiscover(state, dependencies, options) {
87
88
  for (const [providerId, providerInfo] of state.providerMap) {
88
89
  state.providerMap.set(providerId, {
89
90
  ...providerInfo,
90
- models: applyPromoOverrides(providerInfo.models),
91
+ models: applyPriceSchedules(applyPromoOverrides(providerInfo.models)),
91
92
  });
92
93
  }
93
94
  // Attribute pricing provenance at the enrich/merge boundary now that
@@ -225,7 +226,7 @@ export async function registryEnrichOnly(state) {
225
226
  for (const [providerId, providerInfo] of state.providerMap) {
226
227
  state.providerMap.set(providerId, {
227
228
  ...providerInfo,
228
- models: applyPromoOverrides(providerInfo.models),
229
+ models: applyPriceSchedules(applyPromoOverrides(providerInfo.models)),
229
230
  });
230
231
  }
231
232
  attributePricingSources(state, preEnrichmentPriced);
@@ -425,11 +426,10 @@ export async function exportRegistryManifest(state) {
425
426
  try {
426
427
  const anomalies = detectPricingAnomalies(previousManifest, fresh);
427
428
  if (anomalies.length > 0) {
428
- await appendAnomalies(dirname(manifestPath), anomalies);
429
- for (const a of anomalies) {
430
- const tag = a.promo ? " [promo]" : "";
431
- console.warn(`[kosha] pricing anomaly${tag}: ${a.key} ${a.field} ` +
432
- `${a.previous} → ${a.current} (${(a.deltaPct * 100).toFixed(0)}%)`);
429
+ const logged = await appendAnomalies(dirname(manifestPath), anomalies);
430
+ if (logged > 0) {
431
+ const path = join(dirname(manifestPath), ANOMALY_FILE);
432
+ console.warn(`[kosha] ${logged} pricing change(s) logged to ${path}`);
433
433
  }
434
434
  }
435
435
  }
@@ -698,7 +698,11 @@ export function mergeManifests(previous, fresh) {
698
698
  // Keep all of fresh's metadata but restore pricing from old.
699
699
  kept = { ...kept, pricing: old.pricing, originPricing: old.originPricing };
700
700
  }
701
- else if (old && quarantinePricingMove(old, f)) {
701
+ else if (old && !f.pricing?.schedule && quarantinePricingMove(old, f)) {
702
+ // A scheduled price is curated and cited, not a catalog's publish, so
703
+ // it skips quarantine. Otherwise the first move to it would be refused
704
+ // on every run.
705
+ //
702
706
  // Quarantine the suspect rates: keep the old pricing block and
703
707
  // tag the operational `rawCapabilities` array (the trusted
704
708
  // `capabilities` taxonomy stays clean, since this isn't a routing
@@ -867,9 +871,26 @@ function detectPricingAnomalies(previous, fresh) {
867
871
  }
868
872
  return anomalies;
869
873
  }
870
- /** Append fresh anomalies to <manifestDir>/anomalies.json. Atomic write,
871
- * rolling retention (30 days OR last 5000 entries, whichever is tighter). */
872
- async function appendAnomalies(manifestDir, fresh) {
874
+ /**
875
+ * Drop anomalies the log already ends on. A quarantined rate keeps the old
876
+ * price in the manifest, so every export sees the same move again; logging
877
+ * each one printed the same 172 lines on every run and pushed real changes
878
+ * out of the capped log. A price that moves away and back is still logged.
879
+ */
880
+ export function unloggedAnomalies(existing, fresh) {
881
+ const latest = new Map();
882
+ const id = (a) => `${a.key}|${a.side}|${a.field}`;
883
+ for (const a of existing)
884
+ latest.set(id(a), a);
885
+ return fresh.filter((a) => {
886
+ const last = latest.get(id(a));
887
+ return !last || last.previous !== a.previous || last.current !== a.current;
888
+ });
889
+ }
890
+ /** Append new anomalies to <manifestDir>/anomalies.json and return how many
891
+ * there were. Atomic write, rolling retention (30 days OR last 5000 entries,
892
+ * whichever is tighter). */
893
+ async function appendAnomalies(manifestDir, detected) {
873
894
  const path = join(manifestDir, ANOMALY_FILE);
874
895
  const cutoff = Date.now() - ANOMALY_RETENTION_MS;
875
896
  let existing = [];
@@ -883,6 +904,9 @@ async function appendAnomalies(manifestDir, fresh) {
883
904
  catch {
884
905
  // missing or unreadable — start fresh
885
906
  }
907
+ const fresh = unloggedAnomalies(existing, detected);
908
+ if (fresh.length === 0)
909
+ return 0;
886
910
  const all = [...existing, ...fresh].filter((a) => a.ts >= cutoff).slice(-ANOMALY_MAX_ENTRIES);
887
911
  const tmp = `${path}.${randomBytes(4).toString("hex")}.tmp`;
888
912
  try {
@@ -896,6 +920,7 @@ async function appendAnomalies(manifestDir, fresh) {
896
920
  await unlink(tmp).catch(() => { });
897
921
  throw err;
898
922
  }
923
+ return fresh.length;
899
924
  }
900
925
  async function discoverProvider(state, dependencies, discoverer, timeout, degraded) {
901
926
  const breaker = state.healthTracker.breaker(discoverer.providerId);