@slkiser/opencode-quota 2.7.1 → 2.9.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/README.md +192 -213
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +14 -0
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/cursor-detection.d.ts.map +1 -1
- package/dist/lib/cursor-detection.js +49 -5
- package/dist/lib/cursor-detection.js.map +1 -1
- package/dist/lib/cursor-pricing.d.ts +1 -0
- package/dist/lib/cursor-pricing.d.ts.map +1 -1
- package/dist/lib/cursor-pricing.js +5 -3
- package/dist/lib/cursor-pricing.js.map +1 -1
- package/dist/lib/entries.d.ts +1 -0
- package/dist/lib/entries.d.ts.map +1 -1
- package/dist/lib/jsonc.d.ts +8 -1
- package/dist/lib/jsonc.d.ts.map +1 -1
- package/dist/lib/jsonc.js +12 -2
- package/dist/lib/jsonc.js.map +1 -1
- package/dist/lib/modelsdev-pricing.d.ts +8 -2
- package/dist/lib/modelsdev-pricing.d.ts.map +1 -1
- package/dist/lib/modelsdev-pricing.js +84 -29
- package/dist/lib/modelsdev-pricing.js.map +1 -1
- package/dist/lib/quota-stats-format.d.ts.map +1 -1
- package/dist/lib/quota-stats-format.js +30 -38
- package/dist/lib/quota-stats-format.js.map +1 -1
- package/dist/lib/quota-status.d.ts +2 -1
- package/dist/lib/quota-status.d.ts.map +1 -1
- package/dist/lib/quota-status.js +10 -1
- package/dist/lib/quota-status.js.map +1 -1
- package/dist/lib/types.d.ts +14 -0
- package/dist/lib/types.d.ts.map +1 -1
- package/dist/lib/types.js +4 -0
- package/dist/lib/types.js.map +1 -1
- package/dist/plugin.d.ts.map +1 -1
- package/dist/plugin.js +300 -115
- package/dist/plugin.js.map +1 -1
- package/dist/providers/cursor.d.ts.map +1 -1
- package/dist/providers/cursor.js +3 -1
- package/dist/providers/cursor.js.map +1 -1
- package/package.json +4 -1
package/dist/lib/config.js
CHANGED
|
@@ -24,6 +24,12 @@ function isValidCursorQuotaPlan(plan) {
|
|
|
24
24
|
return (typeof plan === "string" &&
|
|
25
25
|
["none", "pro", "pro-plus", "ultra"].includes(plan));
|
|
26
26
|
}
|
|
27
|
+
function isValidPricingSnapshotSource(source) {
|
|
28
|
+
return typeof source === "string" && ["auto", "bundled", "runtime"].includes(source);
|
|
29
|
+
}
|
|
30
|
+
function isValidPricingSnapshotAutoRefresh(value) {
|
|
31
|
+
return typeof value === "number" && Number.isInteger(value) && value > 0;
|
|
32
|
+
}
|
|
27
33
|
/**
|
|
28
34
|
* Remove duplicates from an array while preserving order
|
|
29
35
|
*/
|
|
@@ -83,6 +89,14 @@ export async function loadConfig(client, meta) {
|
|
|
83
89
|
quotaToastConfig.cursorBillingCycleStartDay <= 28
|
|
84
90
|
? quotaToastConfig.cursorBillingCycleStartDay
|
|
85
91
|
: undefined,
|
|
92
|
+
pricingSnapshot: {
|
|
93
|
+
source: isValidPricingSnapshotSource(quotaToastConfig.pricingSnapshot?.source)
|
|
94
|
+
? quotaToastConfig.pricingSnapshot.source
|
|
95
|
+
: DEFAULT_CONFIG.pricingSnapshot.source,
|
|
96
|
+
autoRefresh: isValidPricingSnapshotAutoRefresh(quotaToastConfig.pricingSnapshot?.autoRefresh)
|
|
97
|
+
? quotaToastConfig.pricingSnapshot.autoRefresh
|
|
98
|
+
: DEFAULT_CONFIG.pricingSnapshot.autoRefresh,
|
|
99
|
+
},
|
|
86
100
|
showOnIdle: typeof quotaToastConfig.showOnIdle === "boolean"
|
|
87
101
|
? quotaToastConfig.showOnIdle
|
|
88
102
|
: DEFAULT_CONFIG.showOnIdle,
|
package/dist/lib/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cursor-detection.d.ts","sourceRoot":"","sources":["../../src/lib/cursor-detection.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"cursor-detection.d.ts","sourceRoot":"","sources":["../../src/lib/cursor-detection.ts"],"names":[],"mappings":"AAcA,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;IACzC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,yBAAyB;IACxC,aAAa,EAAE,OAAO,CAAC;IACvB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;AAUD,wBAAgB,2BAA2B,IAAI,MAAM,EAAE,CAoBtD;AAYD,wBAAsB,yBAAyB,IAAI,OAAO,CAAC,kBAAkB,CAAC,CAqE7E;AAyBD,wBAAsB,gCAAgC,IAAI,OAAO,CAAC,yBAAyB,CAAC,CAwC3F"}
|
|
@@ -3,8 +3,9 @@ import { readFile } from "fs/promises";
|
|
|
3
3
|
import { homedir, platform } from "os";
|
|
4
4
|
import { join } from "path";
|
|
5
5
|
import { parseJsonOrJsonc } from "./jsonc.js";
|
|
6
|
+
import { getAuthPaths } from "./opencode-auth.js";
|
|
6
7
|
import { getOpencodeRuntimeDirCandidates } from "./opencode-runtime-paths.js";
|
|
7
|
-
import {
|
|
8
|
+
import { CURSOR_LEGACY_PROVIDER_ID, CURSOR_PROVIDER_ID, } from "./cursor-pricing.js";
|
|
8
9
|
function dedupe(list) {
|
|
9
10
|
return [...new Set(list.filter(Boolean))];
|
|
10
11
|
}
|
|
@@ -34,12 +35,50 @@ export function getCursorAuthCandidatePaths() {
|
|
|
34
35
|
}
|
|
35
36
|
return dedupe(paths);
|
|
36
37
|
}
|
|
38
|
+
function hasNonEmptyString(value) {
|
|
39
|
+
return typeof value === "string" && value.trim().length > 0;
|
|
40
|
+
}
|
|
41
|
+
function isValidCursorOAuthEntry(value) {
|
|
42
|
+
if (!value || typeof value !== "object")
|
|
43
|
+
return false;
|
|
44
|
+
const entry = value;
|
|
45
|
+
return entry.type === "oauth" && (hasNonEmptyString(entry.refresh) || hasNonEmptyString(entry.access));
|
|
46
|
+
}
|
|
37
47
|
export async function inspectCursorAuthPresence() {
|
|
38
|
-
const
|
|
48
|
+
const authCandidatePaths = getAuthPaths();
|
|
49
|
+
const legacyCandidatePaths = getCursorAuthCandidatePaths();
|
|
50
|
+
const candidatePaths = dedupe([...authCandidatePaths, ...legacyCandidatePaths]);
|
|
39
51
|
const presentPaths = candidatePaths.filter((path) => existsSync(path));
|
|
40
52
|
let invalidPath;
|
|
41
53
|
let invalidError;
|
|
42
|
-
for (const path of
|
|
54
|
+
for (const path of authCandidatePaths) {
|
|
55
|
+
if (!existsSync(path))
|
|
56
|
+
continue;
|
|
57
|
+
try {
|
|
58
|
+
const raw = await readFile(path, "utf8");
|
|
59
|
+
const parsed = JSON.parse(raw);
|
|
60
|
+
const cursorAuth = parsed?.cursor;
|
|
61
|
+
if (!cursorAuth)
|
|
62
|
+
continue;
|
|
63
|
+
if (isValidCursorOAuthEntry(cursorAuth)) {
|
|
64
|
+
return {
|
|
65
|
+
state: "present",
|
|
66
|
+
selectedPath: path,
|
|
67
|
+
presentPaths,
|
|
68
|
+
candidatePaths,
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
invalidPath ??= path;
|
|
72
|
+
invalidError ??= "Cursor auth entry in auth.json is missing a valid oauth token payload";
|
|
73
|
+
}
|
|
74
|
+
catch (error) {
|
|
75
|
+
invalidPath ??= path;
|
|
76
|
+
invalidError ??= error instanceof Error ? error.message : String(error);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
for (const path of legacyCandidatePaths) {
|
|
80
|
+
if (!existsSync(path))
|
|
81
|
+
continue;
|
|
43
82
|
try {
|
|
44
83
|
const raw = await readFile(path, "utf8");
|
|
45
84
|
const parsed = JSON.parse(raw);
|
|
@@ -76,15 +115,20 @@ function pluginIncludesCursor(value) {
|
|
|
76
115
|
if (typeof value !== "string")
|
|
77
116
|
return false;
|
|
78
117
|
const normalized = value.trim().toLowerCase();
|
|
79
|
-
return (normalized ===
|
|
118
|
+
return (normalized === "opencode-cursor-oauth" ||
|
|
119
|
+
normalized === "opencode-cursor" ||
|
|
120
|
+
normalized === CURSOR_LEGACY_PROVIDER_ID ||
|
|
80
121
|
normalized === "open-cursor" ||
|
|
81
122
|
normalized === "@rama_nigg/open-cursor" ||
|
|
123
|
+
normalized.endsWith("/opencode-cursor-oauth") ||
|
|
124
|
+
normalized.endsWith("/opencode-cursor") ||
|
|
82
125
|
normalized.endsWith("/open-cursor"));
|
|
83
126
|
}
|
|
84
127
|
function providerConfigIncludesCursor(value) {
|
|
85
128
|
if (!value || typeof value !== "object")
|
|
86
129
|
return false;
|
|
87
|
-
return Object.prototype.hasOwnProperty.call(value,
|
|
130
|
+
return (Object.prototype.hasOwnProperty.call(value, CURSOR_PROVIDER_ID) ||
|
|
131
|
+
Object.prototype.hasOwnProperty.call(value, CURSOR_LEGACY_PROVIDER_ID));
|
|
88
132
|
}
|
|
89
133
|
export async function inspectCursorOpenCodeIntegration() {
|
|
90
134
|
const { configDirs } = getOpencodeRuntimeDirCandidates();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cursor-detection.js","sourceRoot":"","sources":["../../src/lib/cursor-detection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE5B,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAE,+BAA+B,EAAE,MAAM,6BAA6B,CAAC;AAC9E,OAAO,
|
|
1
|
+
{"version":3,"file":"cursor-detection.js","sourceRoot":"","sources":["../../src/lib/cursor-detection.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,6 +14,7 @@ export type CursorResolvedModel = {
|
|
|
14
14
|
kind: "unknown";
|
|
15
15
|
};
|
|
16
16
|
export declare const CURSOR_PROVIDER_ID = "cursor";
|
|
17
|
+
export declare const CURSOR_LEGACY_PROVIDER_ID = "cursor-acp";
|
|
17
18
|
export declare const CURSOR_OPENCODE_PROVIDER_ID = "cursor-acp";
|
|
18
19
|
export declare const CURSOR_INCLUDED_API_USD_BY_PLAN: Readonly<Record<Exclude<CursorQuotaPlan, "none">, number>>;
|
|
19
20
|
export declare const CURSOR_OFFICIAL_MODEL_ALIASES: Readonly<Record<string, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cursor-pricing.d.ts","sourceRoot":"","sources":["../../src/lib/cursor-pricing.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAE1D,MAAM,MAAM,uBAAuB,GAC/B,MAAM,GACN,YAAY,GACZ,cAAc,GACd,YAAY,GACZ,iBAAiB,CAAC;AAEtB,MAAM,MAAM,mBAAmB,GAC3B;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,uBAAuB,CAAC;IAAC,IAAI,EAAE,eAAe,CAAA;CAAE,GACxE;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,KAAK,CAAA;CAAE,GAC1E;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,CAAC;AAExB,eAAO,MAAM,kBAAkB,WAAW,CAAC;AAC3C,eAAO,MAAM,
|
|
1
|
+
{"version":3,"file":"cursor-pricing.d.ts","sourceRoot":"","sources":["../../src/lib/cursor-pricing.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAE1D,MAAM,MAAM,uBAAuB,GAC/B,MAAM,GACN,YAAY,GACZ,cAAc,GACd,YAAY,GACZ,iBAAiB,CAAC;AAEtB,MAAM,MAAM,mBAAmB,GAC3B;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,uBAAuB,CAAC;IAAC,IAAI,EAAE,eAAe,CAAA;CAAE,GACxE;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,KAAK,CAAA;CAAE,GAC1E;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,CAAC;AAExB,eAAO,MAAM,kBAAkB,WAAW,CAAC;AAC3C,eAAO,MAAM,yBAAyB,eAAe,CAAC;AACtD,eAAO,MAAM,2BAA2B,eAA4B,CAAC;AAErE,eAAO,MAAM,+BAA+B,EAAE,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,eAAe,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,CAItG,CAAC;AA8CF,eAAO,MAAM,6BAA6B,EAAE,QAAQ,CAClD,MAAM,CAAC,MAAM,EAAE;IAAE,YAAY,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,CAqB5D,CAAC;AAEF,wBAAgB,kBAAkB,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAGxD;AAED,wBAAgB,eAAe,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAOrD;AAED,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAKjE;AAED,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,eAAe,GAAG,MAAM,GAAG,IAAI,CAW7E;AAED,wBAAgB,gCAAgC,CAAC,MAAM,EAAE;IACvD,IAAI,EAAE,eAAe,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,GAAG,MAAM,GAAG,SAAS,CAMrB;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI,CAEvE;AAED,wBAAgB,kBAAkB,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,mBAAmB,CAqB3E"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export const CURSOR_PROVIDER_ID = "cursor";
|
|
2
|
-
export const
|
|
2
|
+
export const CURSOR_LEGACY_PROVIDER_ID = "cursor-acp";
|
|
3
|
+
export const CURSOR_OPENCODE_PROVIDER_ID = CURSOR_LEGACY_PROVIDER_ID;
|
|
3
4
|
export const CURSOR_INCLUDED_API_USD_BY_PLAN = {
|
|
4
5
|
pro: 20,
|
|
5
6
|
"pro-plus": 70,
|
|
@@ -7,7 +8,7 @@ export const CURSOR_INCLUDED_API_USD_BY_PLAN = {
|
|
|
7
8
|
};
|
|
8
9
|
const CURSOR_PROVIDER_IDS = new Set([
|
|
9
10
|
CURSOR_PROVIDER_ID,
|
|
10
|
-
|
|
11
|
+
CURSOR_LEGACY_PROVIDER_ID,
|
|
11
12
|
"open-cursor",
|
|
12
13
|
"@rama_nigg/open-cursor",
|
|
13
14
|
]);
|
|
@@ -76,7 +77,8 @@ export function isCursorModelId(raw) {
|
|
|
76
77
|
if (!raw || typeof raw !== "string")
|
|
77
78
|
return false;
|
|
78
79
|
const normalized = raw.trim().toLowerCase();
|
|
79
|
-
return normalized.startsWith(`${
|
|
80
|
+
return (normalized.startsWith(`${CURSOR_PROVIDER_ID}/`) ||
|
|
81
|
+
normalized.startsWith(`${CURSOR_LEGACY_PROVIDER_ID}/`));
|
|
80
82
|
}
|
|
81
83
|
export function extractCursorModelPart(rawModelId) {
|
|
82
84
|
const trimmed = rawModelId.trim();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cursor-pricing.js","sourceRoot":"","sources":["../../src/lib/cursor-pricing.ts"],"names":[],"mappings":"AAeA,MAAM,CAAC,MAAM,kBAAkB,GAAG,QAAQ,CAAC;AAC3C,MAAM,CAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"cursor-pricing.js","sourceRoot":"","sources":["../../src/lib/cursor-pricing.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/entries.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entries.d.ts","sourceRoot":"","sources":["../../src/lib/entries.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElD;;;;;GAKG;AAEH,MAAM,WAAW,qBAAqB;IACpC,kFAAkF;IAClF,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,uEAAuE;IACvE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,0DAA0D;IAC1D,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,eAAe,GACvB,CAAC,qBAAqB,GAAG;IACvB;;;OAGG;IACH,IAAI,CAAC,EAAE,SAAS,CAAC;IAEjB,uFAAuF;IACvF,IAAI,EAAE,MAAM,CAAC;IAEb,gDAAgD;IAChD,gBAAgB,EAAE,MAAM,CAAC;IAEzB,2EAA2E;IAC3E,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC,GACF,CAAC,qBAAqB,GAAG;IACvB,0CAA0C;IAC1C,IAAI,EAAE,OAAO,CAAC;IAEd,+DAA+D;IAC/D,IAAI,EAAE,MAAM,CAAC;IAEb,2CAA2C;IAC3C,KAAK,EAAE,MAAM,CAAC;IAEd,2DAA2D;IAC3D,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC,CAAC;AAEP,wBAAgB,YAAY,CAC1B,CAAC,EAAE,eAAe,GACjB,CAAC,IAAI,OAAO,CAAC,eAAe,EAAE;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,CAAC,CAElD;AAED,wBAAgB,cAAc,CAC5B,CAAC,EAAE,eAAe,GACjB,CAAC,IAAI,OAAO,CAAC,eAAe,EAAE;IAAE,gBAAgB,EAAE,MAAM,CAAA;CAAE,CAAC,CAE7D;AAED,MAAM,WAAW,eAAe;IAC9B,6DAA6D;IAC7D,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,mEAAmE;AACnE,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,6CAA6C;AAC7C,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,iBAAiB,EAAE,CAAC;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,mBAAmB;IAClC,sEAAsE;IACtE,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,eAAe,EAAE,CAAC;IAC3B,MAAM,EAAE,eAAe,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE;QACN,MAAM,EAAE;YACN,SAAS,EAAE,MAAM,OAAO,CAAC;gBAAE,IAAI,CAAC,EAAE;oBAAE,SAAS,EAAE,KAAK,CAAC;wBAAE,EAAE,EAAE,MAAM,CAAA;qBAAE,CAAC,CAAA;iBAAE,CAAA;aAAE,CAAC,CAAC;YAC1E,GAAG,EAAE,MAAM,OAAO,CAAC;gBAAE,IAAI,CAAC,EAAE;oBAAE,KAAK,CAAC,EAAE,MAAM,CAAA;iBAAE,CAAA;aAAE,CAAC,CAAC;SACnD,CAAC;KACH,CAAC;IACF,MAAM,EAAE;QACN,YAAY,EAAE,MAAM,EAAE,CAAC;QACvB,qBAAqB,EAAE,MAAM,GAAG,KAAK,CAAC;QACtC,UAAU,EAAE,eAAe,CAAC;QAC5B,oBAAoB,CAAC,EAAE,MAAM,CAAC;QAC9B,0BAA0B,CAAC,EAAE,MAAM,CAAC;QACpC,UAAU,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;QACnC,gBAAgB,CAAC,EAAE,OAAO,CAAC;QAC3B,YAAY,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"entries.d.ts","sourceRoot":"","sources":["../../src/lib/entries.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/jsonc.d.ts
CHANGED
|
@@ -13,11 +13,18 @@
|
|
|
13
13
|
* - Preserves comment-like sequences inside strings
|
|
14
14
|
*/
|
|
15
15
|
export declare function stripJsonComments(content: string): string;
|
|
16
|
+
/**
|
|
17
|
+
* Strip trailing commas from JSON content.
|
|
18
|
+
*
|
|
19
|
+
* Removes commas that appear before closing brackets/braces,
|
|
20
|
+
* while preserving commas inside strings.
|
|
21
|
+
*/
|
|
22
|
+
export declare function stripTrailingCommas(content: string): string;
|
|
16
23
|
/**
|
|
17
24
|
* Parse JSON or JSONC content.
|
|
18
25
|
*
|
|
19
26
|
* @param content - The file content to parse
|
|
20
|
-
* @param isJsonc - If true, strip comments before parsing
|
|
27
|
+
* @param isJsonc - If true, strip comments and trailing commas before parsing
|
|
21
28
|
* @returns Parsed JSON value
|
|
22
29
|
* @throws SyntaxError if the content is not valid JSON
|
|
23
30
|
*/
|
package/dist/lib/jsonc.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jsonc.d.ts","sourceRoot":"","sources":["../../src/lib/jsonc.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAkDzD;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,
|
|
1
|
+
{"version":3,"file":"jsonc.d.ts","sourceRoot":"","sources":["../../src/lib/jsonc.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAkDzD;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAE3D;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAI3E"}
|
package/dist/lib/jsonc.js
CHANGED
|
@@ -58,16 +58,26 @@ export function stripJsonComments(content) {
|
|
|
58
58
|
}
|
|
59
59
|
return result;
|
|
60
60
|
}
|
|
61
|
+
/**
|
|
62
|
+
* Strip trailing commas from JSON content.
|
|
63
|
+
*
|
|
64
|
+
* Removes commas that appear before closing brackets/braces,
|
|
65
|
+
* while preserving commas inside strings.
|
|
66
|
+
*/
|
|
67
|
+
export function stripTrailingCommas(content) {
|
|
68
|
+
return content.replace(/,\s*([\]}])/g, "$1");
|
|
69
|
+
}
|
|
61
70
|
/**
|
|
62
71
|
* Parse JSON or JSONC content.
|
|
63
72
|
*
|
|
64
73
|
* @param content - The file content to parse
|
|
65
|
-
* @param isJsonc - If true, strip comments before parsing
|
|
74
|
+
* @param isJsonc - If true, strip comments and trailing commas before parsing
|
|
66
75
|
* @returns Parsed JSON value
|
|
67
76
|
* @throws SyntaxError if the content is not valid JSON
|
|
68
77
|
*/
|
|
69
78
|
export function parseJsonOrJsonc(content, isJsonc) {
|
|
70
|
-
|
|
79
|
+
let toParse = isJsonc ? stripJsonComments(content) : content;
|
|
80
|
+
toParse = stripTrailingCommas(toParse);
|
|
71
81
|
return JSON.parse(toParse);
|
|
72
82
|
}
|
|
73
83
|
//# sourceMappingURL=jsonc.js.map
|
package/dist/lib/jsonc.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jsonc.js","sourceRoot":"","sources":["../../src/lib/jsonc.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;;;;;GAOG;AACH,MAAM,UAAU,iBAAiB,CAAC,OAAe;IAC/C,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,IAAI,UAAU,GAAG,EAAE,CAAC;IAEpB,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;QAC1B,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QACxB,MAAM,QAAQ,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAEhC,2BAA2B;QAC3B,IAAI,CAAC,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC;YAC3E,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,QAAQ,GAAG,IAAI,CAAC;gBAChB,UAAU,GAAG,IAAI,CAAC;YACpB,CAAC;iBAAM,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;gBAC/B,QAAQ,GAAG,KAAK,CAAC;YACnB,CAAC;YACD,MAAM,IAAI,IAAI,CAAC;YACf,CAAC,EAAE,CAAC;YACJ,SAAS;QACX,CAAC;QAED,0CAA0C;QAC1C,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,sBAAsB;YACtB,IAAI,IAAI,KAAK,GAAG,IAAI,QAAQ,KAAK,GAAG,EAAE,CAAC;gBACrC,yBAAyB;gBACzB,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;oBACjD,CAAC,EAAE,CAAC;gBACN,CAAC;gBACD,SAAS;YACX,CAAC;YAED,qBAAqB;YACrB,IAAI,IAAI,KAAK,GAAG,IAAI,QAAQ,KAAK,GAAG,EAAE,CAAC;gBACrC,CAAC,IAAI,CAAC,CAAC;gBACP,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC;oBACjF,CAAC,EAAE,CAAC;gBACN,CAAC;gBACD,CAAC,IAAI,CAAC,CAAC,CAAC,yBAAyB;gBACjC,SAAS;YACX,CAAC;QACH,CAAC;QAED,MAAM,IAAI,IAAI,CAAC;QACf,CAAC,EAAE,CAAC;IACN,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAAe,EAAE,OAAgB;IAChE,
|
|
1
|
+
{"version":3,"file":"jsonc.js","sourceRoot":"","sources":["../../src/lib/jsonc.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;;;;;GAOG;AACH,MAAM,UAAU,iBAAiB,CAAC,OAAe;IAC/C,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,IAAI,UAAU,GAAG,EAAE,CAAC;IAEpB,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;QAC1B,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QACxB,MAAM,QAAQ,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAEhC,2BAA2B;QAC3B,IAAI,CAAC,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC;YAC3E,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,QAAQ,GAAG,IAAI,CAAC;gBAChB,UAAU,GAAG,IAAI,CAAC;YACpB,CAAC;iBAAM,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;gBAC/B,QAAQ,GAAG,KAAK,CAAC;YACnB,CAAC;YACD,MAAM,IAAI,IAAI,CAAC;YACf,CAAC,EAAE,CAAC;YACJ,SAAS;QACX,CAAC;QAED,0CAA0C;QAC1C,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,sBAAsB;YACtB,IAAI,IAAI,KAAK,GAAG,IAAI,QAAQ,KAAK,GAAG,EAAE,CAAC;gBACrC,yBAAyB;gBACzB,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;oBACjD,CAAC,EAAE,CAAC;gBACN,CAAC;gBACD,SAAS;YACX,CAAC;YAED,qBAAqB;YACrB,IAAI,IAAI,KAAK,GAAG,IAAI,QAAQ,KAAK,GAAG,EAAE,CAAC;gBACrC,CAAC,IAAI,CAAC,CAAC;gBACP,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC;oBACjF,CAAC,EAAE,CAAC;gBACN,CAAC;gBACD,CAAC,IAAI,CAAC,CAAC,CAAC,yBAAyB;gBACjC,SAAS;YACX,CAAC;QACH,CAAC;QAED,MAAM,IAAI,IAAI,CAAC;QACf,CAAC,EAAE,CAAC;IACN,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CAAC,OAAe;IACjD,OAAO,OAAO,CAAC,OAAO,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;AAC/C,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAAe,EAAE,OAAgB;IAChE,IAAI,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;IAC7D,OAAO,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;IACvC,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAC7B,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { type OpencodeRuntimeDirs } from "./opencode-runtime-paths.js";
|
|
2
|
+
import type { PricingSnapshotSource } from "./types.js";
|
|
2
3
|
export type CostBuckets = {
|
|
3
4
|
input?: number;
|
|
4
5
|
output?: number;
|
|
@@ -40,7 +41,7 @@ export interface PricingRefreshPolicy {
|
|
|
40
41
|
timeoutMs: number;
|
|
41
42
|
}
|
|
42
43
|
export interface PricingRefreshOptions {
|
|
43
|
-
reason?: "init" | "tokens" | "status";
|
|
44
|
+
reason?: "init" | "tokens" | "status" | "manual";
|
|
44
45
|
force?: boolean;
|
|
45
46
|
nowMs?: number;
|
|
46
47
|
maxAgeMs?: number;
|
|
@@ -50,6 +51,8 @@ export interface PricingRefreshOptions {
|
|
|
50
51
|
fetchFn?: typeof fetch;
|
|
51
52
|
bootstrapSnapshotOverride?: PricingSnapshot;
|
|
52
53
|
providerAllowlist?: string[];
|
|
54
|
+
snapshotSelection?: PricingSnapshotSource;
|
|
55
|
+
allowRefreshWhenSelectionBundled?: boolean;
|
|
53
56
|
}
|
|
54
57
|
export interface PricingRefreshResult {
|
|
55
58
|
attempted: boolean;
|
|
@@ -58,11 +61,14 @@ export interface PricingRefreshResult {
|
|
|
58
61
|
error?: string;
|
|
59
62
|
reason?: string;
|
|
60
63
|
}
|
|
61
|
-
export declare function getPricingRefreshPolicy(
|
|
64
|
+
export declare function getPricingRefreshPolicy(): PricingRefreshPolicy;
|
|
65
|
+
export declare function setPricingSnapshotAutoRefresh(days: number): void;
|
|
62
66
|
export declare function getRuntimePricingSnapshotPath(runtimeDirs?: OpencodeRuntimeDirs): string;
|
|
63
67
|
export declare function getRuntimePricingRefreshStatePath(runtimeDirs?: OpencodeRuntimeDirs): string;
|
|
64
68
|
export declare function readPricingRefreshState(runtimeDirs?: OpencodeRuntimeDirs): Promise<PricingRefreshStateV1 | null>;
|
|
65
69
|
export declare function maybeRefreshPricingSnapshot(opts?: PricingRefreshOptions): Promise<PricingRefreshResult>;
|
|
70
|
+
export declare function setPricingSnapshotSelection(selection: PricingSnapshotSource): void;
|
|
71
|
+
export declare function getPricingSnapshotSelection(): PricingSnapshotSource;
|
|
66
72
|
export declare function getPricingSnapshotMeta(): PricingSnapshot["_meta"];
|
|
67
73
|
export declare function getPricingSnapshotSource(): "runtime" | "bundled" | "empty";
|
|
68
74
|
export declare function getPricingSnapshotHealth(opts?: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"modelsdev-pricing.d.ts","sourceRoot":"","sources":["../../src/lib/modelsdev-pricing.ts"],"names":[],"mappings":"AAKA,OAAO,EAA0B,KAAK,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"modelsdev-pricing.d.ts","sourceRoot":"","sources":["../../src/lib/modelsdev-pricing.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,6 +10,7 @@ const RUNTIME_SNAPSHOT_FILENAME = "modelsdev-pricing.runtime.min.json";
|
|
|
10
10
|
const RUNTIME_REFRESH_STATE_FILENAME = "modelsdev-pricing.refresh-state.json";
|
|
11
11
|
const DEFAULT_REFRESH_MIN_ATTEMPT_INTERVAL_MS = 6 * 60 * 60 * 1000;
|
|
12
12
|
const DEFAULT_REFRESH_TIMEOUT_MS = 6_000;
|
|
13
|
+
const MS_PER_DAY = 24 * 60 * 60 * 1000;
|
|
13
14
|
export const DEFAULT_PRICING_SNAPSHOT_MAX_AGE_MS = 3 * 24 * 60 * 60 * 1000;
|
|
14
15
|
const EMPTY_SNAPSHOT = {
|
|
15
16
|
_meta: {
|
|
@@ -22,9 +23,11 @@ const EMPTY_SNAPSHOT = {
|
|
|
22
23
|
};
|
|
23
24
|
let SNAPSHOT = null;
|
|
24
25
|
let SNAPSHOT_SOURCE = "bundled";
|
|
26
|
+
let SNAPSHOT_SELECTION = "auto";
|
|
25
27
|
let MODEL_INDEX = null;
|
|
26
28
|
let REFRESH_IN_FLIGHT = null;
|
|
27
29
|
let PROCESS_REFRESH_CHECKED = false;
|
|
30
|
+
let CONFIGURED_PRICING_SNAPSHOT_MAX_AGE_MS = DEFAULT_PRICING_SNAPSHOT_MAX_AGE_MS;
|
|
28
31
|
function asRecord(value) {
|
|
29
32
|
return value && typeof value === "object" ? value : null;
|
|
30
33
|
}
|
|
@@ -35,28 +38,23 @@ function sortRecordByKeys(obj) {
|
|
|
35
38
|
}
|
|
36
39
|
return out;
|
|
37
40
|
}
|
|
38
|
-
function
|
|
39
|
-
if (!
|
|
40
|
-
return true;
|
|
41
|
-
const normalized = value.trim().toLowerCase();
|
|
42
|
-
return !["0", "false", "no", "off"].includes(normalized);
|
|
43
|
-
}
|
|
44
|
-
function parseMaxAgeMs(value) {
|
|
45
|
-
if (!value)
|
|
46
|
-
return DEFAULT_PRICING_SNAPSHOT_MAX_AGE_MS;
|
|
47
|
-
const days = Number(value);
|
|
48
|
-
if (!Number.isFinite(days) || days <= 0)
|
|
41
|
+
function pricingSnapshotDaysToMs(days) {
|
|
42
|
+
if (typeof days !== "number" || !Number.isFinite(days) || days <= 0) {
|
|
49
43
|
return DEFAULT_PRICING_SNAPSHOT_MAX_AGE_MS;
|
|
50
|
-
|
|
44
|
+
}
|
|
45
|
+
return Math.floor(days * MS_PER_DAY);
|
|
51
46
|
}
|
|
52
|
-
export function getPricingRefreshPolicy(
|
|
47
|
+
export function getPricingRefreshPolicy() {
|
|
53
48
|
return {
|
|
54
|
-
enabled:
|
|
55
|
-
maxAgeMs:
|
|
49
|
+
enabled: true,
|
|
50
|
+
maxAgeMs: CONFIGURED_PRICING_SNAPSHOT_MAX_AGE_MS,
|
|
56
51
|
minAttemptIntervalMs: DEFAULT_REFRESH_MIN_ATTEMPT_INTERVAL_MS,
|
|
57
52
|
timeoutMs: DEFAULT_REFRESH_TIMEOUT_MS,
|
|
58
53
|
};
|
|
59
54
|
}
|
|
55
|
+
export function setPricingSnapshotAutoRefresh(days) {
|
|
56
|
+
CONFIGURED_PRICING_SNAPSHOT_MAX_AGE_MS = pricingSnapshotDaysToMs(days);
|
|
57
|
+
}
|
|
60
58
|
function normalizeSnapshot(raw) {
|
|
61
59
|
const root = asRecord(raw);
|
|
62
60
|
if (!root)
|
|
@@ -145,13 +143,32 @@ function loadRuntimeSnapshotSync(runtimeDirs) {
|
|
|
145
143
|
return null;
|
|
146
144
|
}
|
|
147
145
|
}
|
|
146
|
+
function hasSnapshotData(snapshot) {
|
|
147
|
+
return snapshot._meta.generatedAt > 0;
|
|
148
|
+
}
|
|
148
149
|
function chooseSnapshot(params) {
|
|
149
150
|
const bundled = loadBundledSnapshotSync(params?.bootstrapSnapshotOverride);
|
|
150
151
|
const runtime = loadRuntimeSnapshotSync(params?.runtimeDirs);
|
|
152
|
+
const selection = params?.selection ?? SNAPSHOT_SELECTION;
|
|
153
|
+
if (selection === "bundled") {
|
|
154
|
+
if (hasSnapshotData(bundled)) {
|
|
155
|
+
return { snapshot: bundled, source: "bundled" };
|
|
156
|
+
}
|
|
157
|
+
return { snapshot: EMPTY_SNAPSHOT, source: "empty" };
|
|
158
|
+
}
|
|
159
|
+
if (selection === "runtime") {
|
|
160
|
+
if (runtime) {
|
|
161
|
+
return { snapshot: runtime, source: "runtime" };
|
|
162
|
+
}
|
|
163
|
+
if (hasSnapshotData(bundled)) {
|
|
164
|
+
return { snapshot: bundled, source: "bundled" };
|
|
165
|
+
}
|
|
166
|
+
return { snapshot: EMPTY_SNAPSHOT, source: "empty" };
|
|
167
|
+
}
|
|
151
168
|
if (runtime && runtime._meta.generatedAt >= bundled._meta.generatedAt) {
|
|
152
169
|
return { snapshot: runtime, source: "runtime" };
|
|
153
170
|
}
|
|
154
|
-
if (bundled
|
|
171
|
+
if (hasSnapshotData(bundled)) {
|
|
155
172
|
return { snapshot: bundled, source: "bundled" };
|
|
156
173
|
}
|
|
157
174
|
return { snapshot: EMPTY_SNAPSHOT, source: "empty" };
|
|
@@ -161,11 +178,15 @@ function setSnapshot(snapshot, source) {
|
|
|
161
178
|
SNAPSHOT_SOURCE = source;
|
|
162
179
|
MODEL_INDEX = null;
|
|
163
180
|
}
|
|
181
|
+
function applySnapshotSelection(params) {
|
|
182
|
+
const selected = chooseSnapshot(params);
|
|
183
|
+
setSnapshot(selected.snapshot, selected.source);
|
|
184
|
+
return selected;
|
|
185
|
+
}
|
|
164
186
|
function ensureLoaded() {
|
|
165
187
|
if (SNAPSHOT)
|
|
166
188
|
return SNAPSHOT;
|
|
167
|
-
const selected =
|
|
168
|
-
setSnapshot(selected.snapshot, selected.source);
|
|
189
|
+
const selected = applySnapshotSelection();
|
|
169
190
|
return selected.snapshot;
|
|
170
191
|
}
|
|
171
192
|
function ensureModelIndex() {
|
|
@@ -348,7 +369,7 @@ export async function maybeRefreshPricingSnapshot(opts = {}) {
|
|
|
348
369
|
return REFRESH_IN_FLIGHT;
|
|
349
370
|
REFRESH_IN_FLIGHT = (async () => {
|
|
350
371
|
const nowMs = opts.nowMs ?? Date.now();
|
|
351
|
-
const policy = getPricingRefreshPolicy(
|
|
372
|
+
const policy = getPricingRefreshPolicy();
|
|
352
373
|
const maxAgeMs = opts.maxAgeMs ?? policy.maxAgeMs;
|
|
353
374
|
const minAttemptIntervalMs = opts.minAttemptIntervalMs ?? policy.minAttemptIntervalMs;
|
|
354
375
|
const timeoutMs = opts.timeoutMs ?? policy.timeoutMs;
|
|
@@ -356,7 +377,26 @@ export async function maybeRefreshPricingSnapshot(opts = {}) {
|
|
|
356
377
|
const snapshotPath = getRuntimePricingSnapshotPath(runtimeDirs);
|
|
357
378
|
const statePath = getRuntimePricingRefreshStatePath(runtimeDirs);
|
|
358
379
|
const force = opts.force === true;
|
|
380
|
+
const selection = opts.snapshotSelection ?? SNAPSHOT_SELECTION;
|
|
381
|
+
const allowRefreshWhenSelectionBundled = opts.allowRefreshWhenSelectionBundled === true;
|
|
359
382
|
const previousState = (await readRefreshState(statePath)) ?? makeDefaultRefreshState(nowMs);
|
|
383
|
+
const runtimeSnapshotBeforeRefresh = loadRuntimeSnapshotSync(runtimeDirs);
|
|
384
|
+
applySnapshotSelection({
|
|
385
|
+
runtimeDirs,
|
|
386
|
+
bootstrapSnapshotOverride: opts.bootstrapSnapshotOverride,
|
|
387
|
+
selection,
|
|
388
|
+
});
|
|
389
|
+
if (selection === "bundled" && !allowRefreshWhenSelectionBundled) {
|
|
390
|
+
return {
|
|
391
|
+
attempted: false,
|
|
392
|
+
updated: false,
|
|
393
|
+
reason: "selection_bundled",
|
|
394
|
+
state: {
|
|
395
|
+
...previousState,
|
|
396
|
+
updatedAt: nowMs,
|
|
397
|
+
},
|
|
398
|
+
};
|
|
399
|
+
}
|
|
360
400
|
if (!force && PROCESS_REFRESH_CHECKED) {
|
|
361
401
|
return {
|
|
362
402
|
attempted: false,
|
|
@@ -366,11 +406,6 @@ export async function maybeRefreshPricingSnapshot(opts = {}) {
|
|
|
366
406
|
};
|
|
367
407
|
}
|
|
368
408
|
PROCESS_REFRESH_CHECKED = true;
|
|
369
|
-
const selected = chooseSnapshot({
|
|
370
|
-
runtimeDirs,
|
|
371
|
-
bootstrapSnapshotOverride: opts.bootstrapSnapshotOverride,
|
|
372
|
-
});
|
|
373
|
-
setSnapshot(selected.snapshot, selected.source);
|
|
374
409
|
const health = getPricingSnapshotHealth({ nowMs, maxAgeMs });
|
|
375
410
|
if (!force && !policy.enabled) {
|
|
376
411
|
return {
|
|
@@ -421,16 +456,20 @@ export async function maybeRefreshPricingSnapshot(opts = {}) {
|
|
|
421
456
|
fetchFn: opts.fetchFn,
|
|
422
457
|
});
|
|
423
458
|
if (response.status === 304) {
|
|
424
|
-
const
|
|
459
|
+
const baseSnapshot = runtimeSnapshotBeforeRefresh ?? ensureLoaded();
|
|
425
460
|
const refreshedSnapshot = {
|
|
426
461
|
_meta: {
|
|
427
|
-
...
|
|
462
|
+
...baseSnapshot._meta,
|
|
428
463
|
generatedAt: nowMs,
|
|
429
464
|
},
|
|
430
|
-
providers:
|
|
465
|
+
providers: baseSnapshot.providers,
|
|
431
466
|
};
|
|
432
467
|
await writeJsonAtomic(snapshotPath, refreshedSnapshot);
|
|
433
|
-
|
|
468
|
+
applySnapshotSelection({
|
|
469
|
+
runtimeDirs,
|
|
470
|
+
bootstrapSnapshotOverride: opts.bootstrapSnapshotOverride,
|
|
471
|
+
selection,
|
|
472
|
+
});
|
|
434
473
|
const nextState = {
|
|
435
474
|
...attemptingState,
|
|
436
475
|
updatedAt: nowMs,
|
|
@@ -461,7 +500,11 @@ export async function maybeRefreshPricingSnapshot(opts = {}) {
|
|
|
461
500
|
throw new Error("Refusing to persist empty pricing snapshot from models.dev");
|
|
462
501
|
}
|
|
463
502
|
await writeJsonAtomic(snapshotPath, snapshot);
|
|
464
|
-
|
|
503
|
+
applySnapshotSelection({
|
|
504
|
+
runtimeDirs,
|
|
505
|
+
bootstrapSnapshotOverride: opts.bootstrapSnapshotOverride,
|
|
506
|
+
selection,
|
|
507
|
+
});
|
|
465
508
|
const nextState = {
|
|
466
509
|
...attemptingState,
|
|
467
510
|
updatedAt: nowMs,
|
|
@@ -510,6 +553,16 @@ export async function maybeRefreshPricingSnapshot(opts = {}) {
|
|
|
510
553
|
});
|
|
511
554
|
return REFRESH_IN_FLIGHT;
|
|
512
555
|
}
|
|
556
|
+
export function setPricingSnapshotSelection(selection) {
|
|
557
|
+
if (SNAPSHOT_SELECTION === selection)
|
|
558
|
+
return;
|
|
559
|
+
SNAPSHOT_SELECTION = selection;
|
|
560
|
+
SNAPSHOT = null;
|
|
561
|
+
MODEL_INDEX = null;
|
|
562
|
+
}
|
|
563
|
+
export function getPricingSnapshotSelection() {
|
|
564
|
+
return SNAPSHOT_SELECTION;
|
|
565
|
+
}
|
|
513
566
|
export function getPricingSnapshotMeta() {
|
|
514
567
|
return ensureLoaded()._meta;
|
|
515
568
|
}
|
|
@@ -579,6 +632,8 @@ export function hasCost(providerId, modelId) {
|
|
|
579
632
|
export function __resetPricingSnapshotForTests() {
|
|
580
633
|
SNAPSHOT = null;
|
|
581
634
|
SNAPSHOT_SOURCE = "bundled";
|
|
635
|
+
SNAPSHOT_SELECTION = "auto";
|
|
636
|
+
CONFIGURED_PRICING_SNAPSHOT_MAX_AGE_MS = DEFAULT_PRICING_SNAPSHOT_MAX_AGE_MS;
|
|
582
637
|
MODEL_INDEX = null;
|
|
583
638
|
REFRESH_IN_FLIGHT = null;
|
|
584
639
|
PROCESS_REFRESH_CHECKED = false;
|