@musnows/scriverse 0.8.6 → 0.8.7

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.
@@ -3,17 +3,33 @@ import { chmodSync, mkdirSync, readFileSync, renameSync, unlinkSync, writeFileSy
3
3
  import { dirname } from "node:path";
4
4
  import { logger, sanitizeError } from "./logger.js";
5
5
  export const LITELLM_MODEL_PRICES_URL = "https://raw.githubusercontent.com/BerriAI/litellm/main/model_prices_and_context_window.json";
6
- const LITELLM_PRICE_CACHE_VERSION = 1;
7
- const LITELLM_PRICE_RESPONSE_MAX_BYTES = 8 * 1024 * 1024;
8
- const LITELLM_PRICE_ENTRY_LIMIT = 20_000;
9
- const DEFAULT_LITELLM_PRICE_REFRESH_TIMEOUT_MS = 30_000;
6
+ export const OPENROUTER_MODEL_PRICES_URL = "https://openrouter.ai/api/v1/models";
7
+ export const MODELS_DEV_MODEL_PRICES_URL = "https://models.dev/api.json";
8
+ export const PUBLIC_PROVIDER_CONF_PRICES_URL = "https://raw.githubusercontent.com/ThinkInAIXYZ/PublicProviderConf/refs/heads/dev/dist/all.json";
9
+ export const MODEL_PRICE_SOURCE_ORDER = ["litellm", "openrouter", "models.dev", "public-provider-conf"];
10
+ const MODEL_PRICE_CACHE_VERSION = 2;
11
+ const MODEL_PRICE_RESPONSE_MAX_BYTES = 16 * 1024 * 1024;
12
+ const MODEL_PRICE_ENTRY_LIMIT = 100_000;
13
+ const DEFAULT_MODEL_PRICE_REFRESH_TIMEOUT_MS = 30_000;
14
+ const PER_MILLION_TOKENS = 1_000_000;
15
+ const MODEL_PRICE_SOURCE_DEFINITIONS = [
16
+ { source: "litellm", url: LITELLM_MODEL_PRICES_URL },
17
+ { source: "openrouter", url: OPENROUTER_MODEL_PRICES_URL },
18
+ { source: "models.dev", url: MODELS_DEV_MODEL_PRICES_URL },
19
+ { source: "public-provider-conf", url: PUBLIC_PROVIDER_CONF_PRICES_URL }
20
+ ];
10
21
  function recordValue(value) {
11
22
  return value && typeof value === "object" && !Array.isArray(value)
12
23
  ? value
13
24
  : null;
14
25
  }
15
26
  function finiteNonNegative(value) {
16
- return typeof value === "number" && Number.isFinite(value) && value >= 0 ? value : null;
27
+ const number = typeof value === "number"
28
+ ? value
29
+ : typeof value === "string" && value.trim() !== ""
30
+ ? Number(value)
31
+ : NaN;
32
+ return Number.isFinite(number) && number >= 0 ? number : null;
17
33
  }
18
34
  function normalizedModelId(modelId) {
19
35
  return modelId.trim().toLowerCase();
@@ -22,6 +38,35 @@ function optionalPrice(record, key) {
22
38
  const value = finiteNonNegative(record[key]);
23
39
  return value === null ? undefined : value;
24
40
  }
41
+ function nonEmptyString(value) {
42
+ return typeof value === "string" && value.trim() !== "" ? value.trim() : null;
43
+ }
44
+ function addPrice(table, modelId, price) {
45
+ const normalized = normalizedModelId(modelId);
46
+ if (table.size >= MODEL_PRICE_ENTRY_LIMIT || !normalized || table.has(normalized))
47
+ return;
48
+ table.set(normalized, price);
49
+ }
50
+ function collectionEntries(value) {
51
+ if (Array.isArray(value))
52
+ return value.map((entry, index) => [String(index), entry]);
53
+ const record = recordValue(value);
54
+ return record ? Object.entries(record) : [];
55
+ }
56
+ function priceFromPerMillionCost(record) {
57
+ const inputCost = finiteNonNegative(record.input);
58
+ const outputCost = finiteNonNegative(record.output);
59
+ if (inputCost === null || outputCost === null)
60
+ return null;
61
+ const cacheReadCost = finiteNonNegative(record.cache_read);
62
+ const cacheWriteCost = finiteNonNegative(record.cache_write);
63
+ return {
64
+ input_cost_per_token: inputCost / PER_MILLION_TOKENS,
65
+ output_cost_per_token: outputCost / PER_MILLION_TOKENS,
66
+ ...(cacheReadCost === null ? {} : { cache_read_input_token_cost: cacheReadCost / PER_MILLION_TOKENS }),
67
+ ...(cacheWriteCost === null ? {} : { cache_creation_input_token_cost: cacheWriteCost / PER_MILLION_TOKENS })
68
+ };
69
+ }
25
70
  export function parseLiteLlmPriceTable(payload) {
26
71
  const record = recordValue(payload);
27
72
  const entries = recordValue(record?.prices) ?? record;
@@ -29,7 +74,7 @@ export function parseLiteLlmPriceTable(payload) {
29
74
  if (!entries)
30
75
  return table;
31
76
  for (const [rawModelId, rawPrice] of Object.entries(entries)) {
32
- if (table.size >= LITELLM_PRICE_ENTRY_LIMIT || rawModelId === "sample_spec")
77
+ if (rawModelId === "sample_spec")
33
78
  continue;
34
79
  const modelId = normalizedModelId(rawModelId);
35
80
  const priceRecord = recordValue(rawPrice);
@@ -42,7 +87,7 @@ export function parseLiteLlmPriceTable(payload) {
42
87
  const cacheReadCost = optionalPrice(priceRecord, "cache_read_input_token_cost");
43
88
  const legacyCacheReadCost = optionalPrice(priceRecord, "input_cost_per_token_cache_hit");
44
89
  const cacheCreationCost = optionalPrice(priceRecord, "cache_creation_input_token_cost");
45
- table.set(modelId, {
90
+ addPrice(table, modelId, {
46
91
  input_cost_per_token: inputCost,
47
92
  output_cost_per_token: outputCost,
48
93
  ...(cacheReadCost === undefined ? {} : { cache_read_input_token_cost: cacheReadCost }),
@@ -52,8 +97,87 @@ export function parseLiteLlmPriceTable(payload) {
52
97
  }
53
98
  return table;
54
99
  }
100
+ export function parseOpenRouterPriceTable(payload) {
101
+ const record = recordValue(payload);
102
+ const models = Array.isArray(record?.data) ? record.data : [];
103
+ const table = new Map();
104
+ for (const rawModel of models) {
105
+ const model = recordValue(rawModel);
106
+ const modelId = nonEmptyString(model?.id);
107
+ const pricing = recordValue(model?.pricing);
108
+ if (!modelId || !pricing)
109
+ continue;
110
+ const inputCost = finiteNonNegative(pricing.prompt);
111
+ const outputCost = finiteNonNegative(pricing.completion);
112
+ if (inputCost === null || outputCost === null)
113
+ continue;
114
+ const cacheReadCost = finiteNonNegative(pricing.input_cache_read);
115
+ const cacheWriteCost = finiteNonNegative(pricing.input_cache_write);
116
+ addPrice(table, modelId, {
117
+ input_cost_per_token: inputCost,
118
+ output_cost_per_token: outputCost,
119
+ ...(cacheReadCost === null ? {} : { cache_read_input_token_cost: cacheReadCost }),
120
+ ...(cacheWriteCost === null ? {} : { cache_creation_input_token_cost: cacheWriteCost })
121
+ });
122
+ }
123
+ return table;
124
+ }
125
+ function parseProviderModelPriceTable(payload, providerField) {
126
+ const record = recordValue(payload);
127
+ const providers = providerField ? recordValue(record?.[providerField]) : record;
128
+ const table = new Map();
129
+ if (!providers)
130
+ return table;
131
+ for (const [rawProviderId, rawProvider] of Object.entries(providers)) {
132
+ const provider = recordValue(rawProvider);
133
+ const providerId = nonEmptyString(provider?.id) ?? rawProviderId;
134
+ for (const [rawModelId, rawModel] of collectionEntries(provider?.models)) {
135
+ const model = recordValue(rawModel);
136
+ const modelId = nonEmptyString(model?.id) ?? (rawModelId.match(/^\d+$/u) ? null : rawModelId);
137
+ const cost = recordValue(model?.cost);
138
+ if (!modelId || !cost)
139
+ continue;
140
+ const price = priceFromPerMillionCost(cost);
141
+ if (!price)
142
+ continue;
143
+ addPrice(table, `${providerId}/${modelId}`, price);
144
+ }
145
+ }
146
+ return table;
147
+ }
148
+ export function parseModelsDevPriceTable(payload) {
149
+ return parseProviderModelPriceTable(payload, null);
150
+ }
151
+ export function parsePublicProviderConfPriceTable(payload) {
152
+ return parseProviderModelPriceTable(payload, "providers");
153
+ }
154
+ function parsePriceTable(source, payload) {
155
+ if (source === "litellm")
156
+ return parseLiteLlmPriceTable(payload);
157
+ if (source === "openrouter")
158
+ return parseOpenRouterPriceTable(payload);
159
+ if (source === "models.dev")
160
+ return parseModelsDevPriceTable(payload);
161
+ return parsePublicProviderConfPriceTable(payload);
162
+ }
55
163
  function serializeLiteLlmPriceTable(table) {
56
- return Object.fromEntries([...table.entries()].sort(([left], [right]) => left.localeCompare(right)));
164
+ return Object.fromEntries(table);
165
+ }
166
+ function serializeSourceTables(sourceDefinitions, sourceTables, sourceUpdatedAt) {
167
+ const sources = {};
168
+ for (const definition of sourceDefinitions) {
169
+ const table = sourceTables.get(definition.source);
170
+ const updatedAt = sourceUpdatedAt.get(definition.source);
171
+ if (!table || table.size === 0 || !updatedAt)
172
+ continue;
173
+ sources[definition.source] = {
174
+ source: definition.source,
175
+ url: definition.url,
176
+ updatedAt,
177
+ prices: serializeLiteLlmPriceTable(table)
178
+ };
179
+ }
180
+ return sources;
57
181
  }
58
182
  export function nextLiteLlmPriceUpdate(now) {
59
183
  const next = new Date(now.getTime());
@@ -63,26 +187,36 @@ export function nextLiteLlmPriceUpdate(now) {
63
187
  export class LiteLlmPriceCache {
64
188
  cachePath;
65
189
  fetchImpl;
66
- sourceUrl;
190
+ sourceDefinitions;
67
191
  refreshTimeoutMs;
68
192
  schedule;
69
193
  now;
70
194
  prices = new Map();
195
+ sourceTables = new Map();
196
+ sourceUpdatedAt = new Map();
197
+ sourceRefreshStatus = new Map();
71
198
  lastSuccessfulUpdateAt = null;
72
199
  refreshPromise = null;
73
200
  refreshTimer = null;
74
- activeController = null;
201
+ activeControllers = new Set();
75
202
  started = false;
76
203
  disposed = false;
77
204
  constructor(options = {}) {
78
205
  this.cachePath = options.cachePath;
79
206
  this.fetchImpl = options.fetchImpl ?? fetch;
80
- this.sourceUrl = options.sourceUrl ?? LITELLM_MODEL_PRICES_URL;
207
+ this.sourceDefinitions = MODEL_PRICE_SOURCE_DEFINITIONS.map((definition) => ({
208
+ ...definition,
209
+ url: options.sourceUrls?.[definition.source]
210
+ ?? (definition.source === "litellm" ? options.sourceUrl : undefined)
211
+ ?? definition.url
212
+ }));
81
213
  this.refreshTimeoutMs = Number.isSafeInteger(options.refreshTimeoutMs) && Number(options.refreshTimeoutMs) > 0
82
214
  ? Number(options.refreshTimeoutMs)
83
- : DEFAULT_LITELLM_PRICE_REFRESH_TIMEOUT_MS;
215
+ : DEFAULT_MODEL_PRICE_REFRESH_TIMEOUT_MS;
84
216
  this.schedule = options.schedule !== false;
85
217
  this.now = options.now ?? (() => new Date());
218
+ for (const definition of this.sourceDefinitions)
219
+ this.sourceRefreshStatus.set(definition.source, null);
86
220
  this.loadPersistedCache();
87
221
  }
88
222
  getPriceTable() {
@@ -91,6 +225,15 @@ export class LiteLlmPriceCache {
91
225
  hasData() {
92
226
  return this.prices.size > 0;
93
227
  }
228
+ getSourceStatuses() {
229
+ return this.sourceDefinitions.map((definition) => ({
230
+ source: definition.source,
231
+ url: definition.url,
232
+ modelCount: this.sourceTables.get(definition.source)?.size ?? 0,
233
+ updatedAt: this.sourceUpdatedAt.get(definition.source) ?? null,
234
+ lastRefreshSucceeded: this.sourceRefreshStatus.get(definition.source) ?? null
235
+ }));
236
+ }
94
237
  start() {
95
238
  if (this.started || this.disposed)
96
239
  return;
@@ -120,8 +263,9 @@ export class LiteLlmPriceCache {
120
263
  clearTimeout(this.refreshTimer);
121
264
  this.refreshTimer = null;
122
265
  }
123
- this.activeController?.abort();
124
- this.activeController = null;
266
+ for (const controller of this.activeControllers)
267
+ controller.abort();
268
+ this.activeControllers.clear();
125
269
  }
126
270
  loadPersistedCache() {
127
271
  if (!this.cachePath)
@@ -129,85 +273,167 @@ export class LiteLlmPriceCache {
129
273
  try {
130
274
  const parsed = JSON.parse(readFileSync(this.cachePath, "utf8"));
131
275
  const cache = recordValue(parsed);
132
- const table = parseLiteLlmPriceTable(cache?.prices);
133
- if (cache?.version !== LITELLM_PRICE_CACHE_VERSION || table.size === 0 || typeof cache.updatedAt !== "string") {
134
- throw new Error("LiteLLM price cache has an invalid schema");
276
+ if (cache?.version === MODEL_PRICE_CACHE_VERSION) {
277
+ const sources = recordValue(cache.sources);
278
+ if (!sources || typeof cache.updatedAt !== "string")
279
+ throw new Error("Model price cache has an invalid schema");
280
+ for (const definition of this.sourceDefinitions) {
281
+ const sourceCache = recordValue(sources[definition.source]);
282
+ const table = parseLiteLlmPriceTable(sourceCache?.prices);
283
+ if (table.size === 0 || typeof sourceCache?.updatedAt !== "string")
284
+ continue;
285
+ this.sourceTables.set(definition.source, table);
286
+ this.sourceUpdatedAt.set(definition.source, sourceCache.updatedAt);
287
+ }
288
+ this.rebuildPriceTable(this.sourceTables);
289
+ if (!this.hasData())
290
+ throw new Error("Model price cache contains no valid prices");
291
+ this.lastSuccessfulUpdateAt = cache.updatedAt;
292
+ logger.info("ai.model_price_cache.loaded", {
293
+ cachePath: this.cachePath,
294
+ modelCount: this.prices.size,
295
+ updatedAt: cache.updatedAt
296
+ });
297
+ return;
298
+ }
299
+ const legacyCache = cache;
300
+ const legacyTable = parseLiteLlmPriceTable(legacyCache.prices);
301
+ if (legacyCache.version !== 1 || legacyTable.size === 0 || typeof legacyCache.updatedAt !== "string") {
302
+ throw new Error("Model price cache has an invalid schema");
135
303
  }
136
- this.prices = table;
137
- this.lastSuccessfulUpdateAt = cache.updatedAt;
138
- logger.info("ai.litellm_price_cache.loaded", {
304
+ this.sourceTables.set("litellm", legacyTable);
305
+ this.sourceUpdatedAt.set("litellm", legacyCache.updatedAt);
306
+ this.rebuildPriceTable(this.sourceTables);
307
+ this.lastSuccessfulUpdateAt = legacyCache.updatedAt;
308
+ logger.info("ai.model_price_cache.loaded_legacy", {
139
309
  cachePath: this.cachePath,
140
- modelCount: table.size,
141
- updatedAt: cache.updatedAt
310
+ modelCount: this.prices.size,
311
+ updatedAt: legacyCache.updatedAt
142
312
  });
143
313
  }
144
314
  catch (error) {
145
315
  if (error && typeof error === "object" && "code" in error && error.code === "ENOENT")
146
316
  return;
147
- logger.warn("ai.litellm_price_cache.load_failed", {
317
+ logger.warn("ai.model_price_cache.load_failed", {
148
318
  cachePath: this.cachePath,
149
319
  error: sanitizeError(error)
150
320
  });
151
321
  }
152
322
  }
153
- async fetchAndActivate() {
323
+ async fetchSource(definition) {
154
324
  const controller = new AbortController();
155
325
  const timeout = setTimeout(() => controller.abort(), this.refreshTimeoutMs);
156
- this.activeController = controller;
326
+ this.activeControllers.add(controller);
157
327
  try {
158
- const response = await this.fetchImpl(this.sourceUrl, {
328
+ const response = await this.fetchImpl(definition.url, {
159
329
  headers: { accept: "application/json" },
160
330
  signal: controller.signal
161
331
  });
162
332
  if (!response.ok)
163
- throw new Error(`LiteLLM price response returned HTTP ${response.status}`);
333
+ throw new Error(`${definition.source} price response returned HTTP ${response.status}`);
164
334
  const body = await response.text();
165
- if (Buffer.byteLength(body, "utf8") > LITELLM_PRICE_RESPONSE_MAX_BYTES) {
166
- throw new Error("LiteLLM price response exceeded the size limit");
335
+ if (Buffer.byteLength(body, "utf8") > MODEL_PRICE_RESPONSE_MAX_BYTES) {
336
+ throw new Error(`${definition.source} price response exceeded the size limit`);
167
337
  }
168
338
  let payload;
169
339
  try {
170
340
  payload = JSON.parse(body);
171
341
  }
172
342
  catch {
173
- throw new Error("LiteLLM price response was not valid JSON");
343
+ throw new Error(`${definition.source} price response was not valid JSON`);
344
+ }
345
+ const table = parsePriceTable(definition.source, payload);
346
+ if (table.size === 0)
347
+ throw new Error(`${definition.source} price response contained no valid model prices`);
348
+ return { source: definition.source, table, updatedAt: this.now().toISOString() };
349
+ }
350
+ finally {
351
+ clearTimeout(timeout);
352
+ this.activeControllers.delete(controller);
353
+ }
354
+ }
355
+ rebuildPriceTable(sourceTables) {
356
+ const merged = new Map();
357
+ for (const definition of this.sourceDefinitions) {
358
+ const table = sourceTables.get(definition.source);
359
+ if (!table)
360
+ continue;
361
+ for (const [modelId, price] of table) {
362
+ if (!merged.has(modelId))
363
+ merged.set(modelId, price);
364
+ }
365
+ }
366
+ this.prices = merged;
367
+ return merged;
368
+ }
369
+ buildCache(updatedAt, sourceTables, sourceUpdatedAt) {
370
+ return {
371
+ version: MODEL_PRICE_CACHE_VERSION,
372
+ updatedAt,
373
+ sources: serializeSourceTables(this.sourceDefinitions, sourceTables, sourceUpdatedAt)
374
+ };
375
+ }
376
+ async fetchAndActivate() {
377
+ const results = await Promise.all(this.sourceDefinitions.map(async (definition) => {
378
+ try {
379
+ const result = await this.fetchSource(definition);
380
+ return { success: true, result };
381
+ }
382
+ catch (error) {
383
+ this.sourceRefreshStatus.set(definition.source, false);
384
+ if (!this.disposed) {
385
+ logger.warn("ai.model_price_source.refresh_failed", {
386
+ source: definition.source,
387
+ url: definition.url,
388
+ hasHistoricalCache: (this.sourceTables.get(definition.source)?.size ?? 0) > 0,
389
+ lastSuccessfulUpdateAt: this.sourceUpdatedAt.get(definition.source) ?? null,
390
+ error: sanitizeError(error)
391
+ });
392
+ }
393
+ return { success: false, source: definition.source };
174
394
  }
175
- const nextPrices = parseLiteLlmPriceTable(payload);
176
- if (nextPrices.size === 0)
177
- throw new Error("LiteLLM price response contained no valid model prices");
178
- const updatedAt = this.now().toISOString();
179
- const cache = {
180
- version: LITELLM_PRICE_CACHE_VERSION,
181
- source: this.sourceUrl,
182
- updatedAt,
183
- prices: serializeLiteLlmPriceTable(nextPrices)
184
- };
185
- this.persistCache(cache);
186
- this.prices = nextPrices;
187
- this.lastSuccessfulUpdateAt = updatedAt;
188
- logger.info("ai.litellm_price_cache.updated", {
395
+ }));
396
+ const successfulResults = results.filter((result) => result.success);
397
+ if (successfulResults.length === 0) {
398
+ logger.warn("ai.model_price_cache.refresh_failed", {
189
399
  cachePath: this.cachePath ?? "test-only-no-persistence",
190
- modelCount: nextPrices.size,
191
- updatedAt
400
+ hasHistoricalCache: this.hasData(),
401
+ lastSuccessfulUpdateAt: this.lastSuccessfulUpdateAt,
402
+ successfulSourceCount: 0
192
403
  });
193
- return true;
404
+ return false;
405
+ }
406
+ const nextSourceTables = new Map(this.sourceTables);
407
+ const nextSourceUpdatedAt = new Map(this.sourceUpdatedAt);
408
+ for (const { result } of successfulResults) {
409
+ nextSourceTables.set(result.source, result.table);
410
+ nextSourceUpdatedAt.set(result.source, result.updatedAt);
411
+ this.sourceRefreshStatus.set(result.source, true);
412
+ }
413
+ const updatedAt = this.now().toISOString();
414
+ const nextPrices = this.rebuildPriceTable(nextSourceTables);
415
+ try {
416
+ this.persistCache(this.buildCache(updatedAt, nextSourceTables, nextSourceUpdatedAt));
194
417
  }
195
418
  catch (error) {
196
- if (!this.disposed) {
197
- logger.warn("ai.litellm_price_cache.refresh_failed", {
198
- cachePath: this.cachePath ?? "test-only-no-persistence",
199
- hasHistoricalCache: this.hasData(),
200
- lastSuccessfulUpdateAt: this.lastSuccessfulUpdateAt,
201
- error: sanitizeError(error)
202
- });
203
- }
419
+ this.rebuildPriceTable(this.sourceTables);
420
+ logger.warn("ai.model_price_cache.persist_failed", {
421
+ cachePath: this.cachePath ?? "test-only-no-persistence",
422
+ error: sanitizeError(error)
423
+ });
204
424
  return false;
205
425
  }
206
- finally {
207
- clearTimeout(timeout);
208
- if (this.activeController === controller)
209
- this.activeController = null;
210
- }
426
+ this.sourceTables = nextSourceTables;
427
+ this.sourceUpdatedAt = nextSourceUpdatedAt;
428
+ this.prices = nextPrices;
429
+ this.lastSuccessfulUpdateAt = updatedAt;
430
+ logger.info("ai.model_price_cache.updated", {
431
+ cachePath: this.cachePath ?? "test-only-no-persistence",
432
+ modelCount: this.prices.size,
433
+ updatedAt,
434
+ successfulSources: successfulResults.map(({ result }) => result.source)
435
+ });
436
+ return true;
211
437
  }
212
438
  persistCache(cache) {
213
439
  if (!this.cachePath)
@@ -242,7 +468,7 @@ export class LiteLlmPriceCache {
242
468
  void this.refresh().finally(() => this.scheduleNextUpdate());
243
469
  }, delayMs);
244
470
  this.refreshTimer.unref?.();
245
- logger.info("ai.litellm_price_cache.scheduled", {
471
+ logger.info("ai.model_price_cache.scheduled", {
246
472
  nextUpdateAt: next.toISOString(),
247
473
  delayMs
248
474
  });
@@ -254,7 +480,16 @@ function usageTokenCount(value) {
254
480
  }
255
481
  function modelPrice(modelId, priceTable) {
256
482
  const normalized = normalizedModelId(modelId);
257
- return normalized ? priceTable.get(normalized) ?? null : null;
483
+ if (!normalized)
484
+ return null;
485
+ const exact = priceTable.get(normalized);
486
+ if (exact)
487
+ return exact;
488
+ for (const [candidateModelId, price] of priceTable) {
489
+ if (normalizedModelId(candidateModelId).includes(normalized))
490
+ return price;
491
+ }
492
+ return null;
258
493
  }
259
494
  function cacheReadInputTokenPrice(price) {
260
495
  return price.cache_read_input_token_cost
@@ -1 +1 @@
1
- {"version":3,"file":"ai-model-pricing.js","sourceRoot":"","sources":["../src/ai-model-pricing.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ai-model-pricing.js","sourceRoot":"","sources":["../src/ai-model-pricing.ts"],"names":[],"mappings":"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"}
package/dist/ai.js CHANGED
@@ -293,7 +293,7 @@ function thinkingParameters(provider, model) {
293
293
  const thinkingType = providerThinkingType(provider);
294
294
  if (protocol === "openai-responses" && !thinkingEnabled)
295
295
  return { reasoning_effort: "none" };
296
- const effortParameters = thinkingEnabled && ["low", "medium", "high", "xhigh", "max"].includes(thinkingEffort)
296
+ const effortParameters = thinkingEnabled && ["auto", "low", "medium", "high", "xhigh", "max"].includes(thinkingEffort)
297
297
  ? protocol === "anthropic-messages"
298
298
  ? { output_config: { effort: thinkingEffort } }
299
299
  : { reasoning_effort: thinkingEffort }
@@ -2356,23 +2356,31 @@ export class AiManager {
2356
2356
  WHERE COALESCE(work.is_internal, 0) = 0 AND ${usageFilter}${scopeSql}
2357
2357
  GROUP BY usage_date
2358
2358
  ORDER BY usage_date`, timezoneOffset, ...scopeParams).map((row) => this.mapTokenUsageRow(row, { date: stringValue(row, "usage_date") }));
2359
- const modelUsages = this.store.db.all(`SELECT
2360
- COALESCE(model.model_id, call.model_id) AS usage_model_id,
2359
+ const modelRows = this.store.db.all(`SELECT
2360
+ COALESCE(model.model_id, call.model_id, '未指定模型') AS usage_model_id,
2361
2361
  COALESCE(SUM(call.input_tokens), 0) AS input_tokens,
2362
2362
  COALESCE(SUM(call.output_tokens), 0) AS output_tokens,
2363
2363
  COALESCE(SUM(call.cached_input_tokens), 0) AS cached_input_tokens,
2364
- COALESCE(SUM(call.cache_write_input_tokens), 0) AS cache_write_input_tokens
2364
+ COALESCE(SUM(call.cache_write_input_tokens), 0) AS cache_write_input_tokens,
2365
+ COALESCE(SUM(call.cache_eligible_input_tokens), 0) AS cache_eligible_input_tokens,
2366
+ COUNT(*) AS request_count,
2367
+ COALESCE(SUM(CASE WHEN call.token_usage_source = 'reported' THEN 0 ELSE 1 END), 0) AS estimated_request_count
2365
2368
  FROM ai_calls call
2366
2369
  JOIN works work ON work.id = call.work_id
2367
2370
  LEFT JOIN models model ON model.id = call.model_id
2368
2371
  WHERE COALESCE(work.is_internal, 0) = 0 AND ${usageFilter}${scopeSql}
2369
- GROUP BY COALESCE(model.model_id, call.model_id)`, ...scopeParams).map((row) => ({
2372
+ GROUP BY COALESCE(model.model_id, call.model_id, '未指定模型')
2373
+ ORDER BY (COALESCE(SUM(call.input_tokens), 0) + COALESCE(SUM(call.output_tokens), 0)) DESC, usage_model_id`, ...scopeParams);
2374
+ const modelUsages = modelRows.map((row) => ({
2370
2375
  modelId: stringValue(row, "usage_model_id"),
2371
2376
  inputTokens: numberValue(row, "input_tokens"),
2372
2377
  outputTokens: numberValue(row, "output_tokens"),
2373
2378
  cachedInputTokens: numberValue(row, "cached_input_tokens"),
2374
2379
  cacheWriteInputTokens: numberValue(row, "cache_write_input_tokens")
2375
2380
  }));
2381
+ const models = modelRows.map((row) => this.mapTokenUsageRow(row, {
2382
+ modelId: stringValue(row, "usage_model_id")
2383
+ }));
2376
2384
  const pricing = estimateLiteLlmUsageCost(modelUsages, this.liteLlmPriceCache?.getPriceTable() ?? new Map());
2377
2385
  const works = includeWorks
2378
2386
  ? this.store.db.all(`SELECT
@@ -2404,6 +2412,7 @@ export class AiManager {
2404
2412
  lastUsedAt: summary.last_used_at === null || summary.last_used_at === undefined ? null : stringValue(summary, "last_used_at"),
2405
2413
  ...pricing
2406
2414
  }),
2415
+ models,
2407
2416
  daily,
2408
2417
  ...(works ? { works } : {}),
2409
2418
  timezoneOffset