@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.
- package/dist/cli-cmd-doctor.d.ts +7 -0
- package/dist/cli-cmd-doctor.d.ts.map +1 -1
- package/dist/cli-cmd-doctor.js +11 -9
- package/dist/cli-cmd-doctor.js.map +1 -1
- package/dist/cli-cmd-query.d.ts +5 -0
- package/dist/cli-cmd-query.d.ts.map +1 -1
- package/dist/cli-cmd-query.js +64 -12
- package/dist/cli-cmd-query.js.map +1 -1
- package/dist/cli-cmd-spend.d.ts +6 -0
- package/dist/cli-cmd-spend.d.ts.map +1 -1
- package/dist/cli-cmd-spend.js +22 -6
- package/dist/cli-cmd-spend.js.map +1 -1
- package/dist/cli-commands.d.ts +4 -4
- package/dist/cli-commands.d.ts.map +1 -1
- package/dist/cli-commands.js +14 -12
- package/dist/cli-commands.js.map +1 -1
- package/dist/cli-help.d.ts.map +1 -1
- package/dist/cli-help.js +5 -1
- package/dist/cli-help.js.map +1 -1
- package/dist/cli.js +4 -1
- package/dist/cli.js.map +1 -1
- package/dist/cost.d.ts +4 -0
- package/dist/cost.d.ts.map +1 -1
- package/dist/cost.js +27 -18
- package/dist/cost.js.map +1 -1
- package/dist/discovery/price-schedules.d.ts +27 -0
- package/dist/discovery/price-schedules.d.ts.map +1 -0
- package/dist/discovery/price-schedules.js +58 -0
- package/dist/discovery/price-schedules.js.map +1 -0
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/mcp-server.d.ts.map +1 -1
- package/dist/mcp-server.js +12 -8
- package/dist/mcp-server.js.map +1 -1
- package/dist/price-trust.d.ts +29 -0
- package/dist/price-trust.d.ts.map +1 -0
- package/dist/price-trust.js +36 -0
- package/dist/price-trust.js.map +1 -0
- package/dist/proxy.d.ts.map +1 -1
- package/dist/proxy.js +138 -28
- package/dist/proxy.js.map +1 -1
- package/dist/registry-query.d.ts +1 -1
- package/dist/registry-query.d.ts.map +1 -1
- package/dist/registry-query.js +90 -25
- package/dist/registry-query.js.map +1 -1
- package/dist/registry-routing.d.ts +3 -1
- package/dist/registry-routing.d.ts.map +1 -1
- package/dist/registry-routing.js +7 -8
- package/dist/registry-routing.js.map +1 -1
- package/dist/registry-runtime.d.ts +7 -0
- package/dist/registry-runtime.d.ts.map +1 -1
- package/dist/registry-runtime.js +36 -11
- package/dist/registry-runtime.js.map +1 -1
- package/dist/registry.d.ts.map +1 -1
- package/dist/registry.js +37 -23
- package/dist/registry.js.map +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +6 -0
- package/dist/server.js.map +1 -1
- package/dist/types.d.ts +36 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/server.json +2 -2
package/dist/registry-query.js
CHANGED
|
@@ -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
|
|
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
|
|
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
|
-
})
|
|
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
|
|
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" &&
|
|
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) ||
|
|
219
|
-
|
|
220
|
-
|
|
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 &&
|
|
267
|
-
|
|
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) ||
|
|
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) ?? {
|
|
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())
|
|
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
|
-
}))
|
|
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) ??
|
|
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" ||
|
|
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,
|
|
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"}
|
package/dist/registry-routing.js
CHANGED
|
@@ -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
|
|
101
|
-
//
|
|
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;
|
|
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":"AAAA;;;;;;GAMG;
|
|
1
|
+
{"version":3,"file":"registry-runtime.d.ts","sourceRoot":"","sources":["../src/registry-runtime.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AASH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAInE,OAAO,KAAK,EAAE,qBAAqB,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGhF,OAAO,KAAK,EACX,gBAAgB,EAEhB,gBAAgB,EAGhB,kBAAkB,EAClB,YAAY,EACZ,MAAM,YAAY,CAAC;AAMpB;;;;;GAKG;AACH,eAAO,MAAM,sBAAsB,QAA6C,CAAC;AAEjF;;GAEG;AACH,wBAAsB,gBAAgB,CACrC,KAAK,EAAE,aAAa,EACpB,YAAY,EAAE,qBAAqB,EACnC,OAAO,CAAC,EAAE,gBAAgB,GACxB,OAAO,CAAC,YAAY,EAAE,CAAC,CAoFzB;AAED;;GAEG;AACH,wBAAsB,eAAe,CACpC,KAAK,EAAE,aAAa,EACpB,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,gBAAgB,KAAK,OAAO,CAAC,YAAY,EAAE,CAAC,EACjE,UAAU,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC,CAUf;AAED;;GAEG;AACH,wBAAsB,uBAAuB,CAC5C,KAAK,EAAE,aAAa,EACpB,WAAW,CAAC,EAAE,MAAM,EAAE,EACtB,YAAY,CAAC,EAAE,OAAO,GACpB,OAAO,CAAC,kBAAkB,EAAE,CAAC,CA2B/B;AAED;;GAEG;AACH,wBAAsB,6BAA6B,IAAI,OAAO,CAAC;IAC9D,OAAO,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,gBAAgB,CAAC,CAAC;CACjF,GAAG,IAAI,CAAC,CAOR;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,gBAAgB,CAgBrG;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAmB9E;AACD;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAChC,yCAAyC;IACzC,UAAU,EAAE,MAAM,CAAC;IACnB,uDAAuD;IACvD,mBAAmB,EAAE,MAAM,CAAC;IAC5B,4CAA4C;IAC5C,mBAAmB,EAAE,MAAM,CAAC;CAC5B;AAED;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAoC/F;AAgFD;;GAEG;AACH,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI,CASvE;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CAAC,KAAK,EAAE,aAAa,EAAE,WAAW,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CA0B1G;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAW7E;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,sBAAsB,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CA+FhF;AAmMD,wBAAgB,cAAc,CAAC,QAAQ,EAAE,mBAAmB,GAAG,IAAI,EAAE,KAAK,EAAE,mBAAmB,GAAG,mBAAmB,CAoEpH;AAwED;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,0DAA0D;IAC1D,GAAG,EAAE,MAAM,CAAC;IACZ,sFAAsF;IACtF,KAAK,EAAE,OAAO,GAAG,QAAQ,GAAG,WAAW,GAAG,YAAY,GAAG,cAAc,CAAC;IACxE,+EAA+E;IAC/E,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,qEAAqE;IACrE,QAAQ,EAAE,MAAM,CAAC;IACjB,6EAA6E;IAC7E,KAAK,EAAE,OAAO,CAAC;CACf;AAkFD;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,cAAc,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE,GAAG,cAAc,EAAE,CAQvG"}
|
package/dist/registry-runtime.js
CHANGED
|
@@ -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
|
-
|
|
430
|
-
const
|
|
431
|
-
console.warn(`[kosha]
|
|
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
|
-
/**
|
|
871
|
-
*
|
|
872
|
-
|
|
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);
|