@slkiser/opencode-quota 2.7.1 → 2.9.1
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 +182 -239
- 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/api-key-resolver.d.ts +11 -0
- package/dist/lib/api-key-resolver.d.ts.map +1 -1
- package/dist/lib/api-key-resolver.js +17 -2
- package/dist/lib/api-key-resolver.js.map +1 -1
- package/dist/lib/chutes-config.d.ts +3 -3
- package/dist/lib/chutes-config.d.ts.map +1 -1
- package/dist/lib/chutes-config.js +9 -6
- package/dist/lib/chutes-config.js.map +1 -1
- package/dist/lib/chutes.d.ts.map +1 -1
- package/dist/lib/chutes.js +3 -2
- package/dist/lib/chutes.js.map +1 -1
- package/dist/lib/config.d.ts +7 -3
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +80 -28
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/copilot.d.ts.map +1 -1
- package/dist/lib/copilot.js +4 -3
- package/dist/lib/copilot.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 +8 -3
- package/dist/lib/cursor-pricing.js.map +1 -1
- package/dist/lib/display-sanitize.d.ts +10 -0
- package/dist/lib/display-sanitize.d.ts.map +1 -0
- package/dist/lib/display-sanitize.js +17 -0
- package/dist/lib/display-sanitize.js.map +1 -0
- package/dist/lib/entries.d.ts +1 -0
- package/dist/lib/entries.d.ts.map +1 -1
- package/dist/lib/env-template.d.ts +3 -2
- package/dist/lib/env-template.d.ts.map +1 -1
- package/dist/lib/env-template.js +6 -2
- package/dist/lib/env-template.js.map +1 -1
- package/dist/lib/firmware-config.d.ts +3 -3
- package/dist/lib/firmware-config.d.ts.map +1 -1
- package/dist/lib/firmware-config.js +9 -6
- package/dist/lib/firmware-config.js.map +1 -1
- package/dist/lib/firmware.d.ts.map +1 -1
- package/dist/lib/firmware.js +3 -11
- package/dist/lib/firmware.js.map +1 -1
- package/dist/lib/google-token-cache.js +2 -2
- package/dist/lib/google-token-cache.js.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/openai.d.ts.map +1 -1
- package/dist/lib/openai.js +3 -2
- package/dist/lib/openai.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/lib/zai.d.ts.map +1 -1
- package/dist/lib/zai.js +3 -2
- package/dist/lib/zai.js.map +1 -1
- package/dist/plugin.d.ts.map +1 -1
- package/dist/plugin.js +303 -117
- 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
|
@@ -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,CAwB5D,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
|
]);
|
|
@@ -47,6 +48,9 @@ const CURSOR_LOCAL_MODEL_ALIASES = {
|
|
|
47
48
|
"composer-2-fast": "composer-2-fast",
|
|
48
49
|
};
|
|
49
50
|
export const CURSOR_OFFICIAL_MODEL_ALIASES = {
|
|
51
|
+
"claude-4.5-sonnet": { providerHint: "anthropic", modelHint: "claude-sonnet-4-5" },
|
|
52
|
+
"claude-4.6-opus": { providerHint: "anthropic", modelHint: "claude-opus-4-6" },
|
|
53
|
+
"claude-4.6-sonnet": { providerHint: "anthropic", modelHint: "claude-sonnet-4-6" },
|
|
50
54
|
"gemini-3-flash": { providerHint: "google", modelHint: "gemini-3-flash-preview" },
|
|
51
55
|
"gemini-3-pro": { providerHint: "google", modelHint: "gemini-3-pro-preview" },
|
|
52
56
|
"gemini-3.1-pro": { providerHint: "google", modelHint: "gemini-3.1-pro-preview" },
|
|
@@ -76,7 +80,8 @@ export function isCursorModelId(raw) {
|
|
|
76
80
|
if (!raw || typeof raw !== "string")
|
|
77
81
|
return false;
|
|
78
82
|
const normalized = raw.trim().toLowerCase();
|
|
79
|
-
return normalized.startsWith(`${
|
|
83
|
+
return (normalized.startsWith(`${CURSOR_PROVIDER_ID}/`) ||
|
|
84
|
+
normalized.startsWith(`${CURSOR_LEGACY_PROVIDER_ID}/`));
|
|
80
85
|
}
|
|
81
86
|
export function extractCursorModelPart(rawModelId) {
|
|
82
87
|
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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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared display sanitization for user-visible output.
|
|
3
|
+
*
|
|
4
|
+
* Strips ANSI escape sequences and other control characters so that
|
|
5
|
+
* remote/provider error text cannot inject terminal control codes into
|
|
6
|
+
* toasts or transcript output.
|
|
7
|
+
*/
|
|
8
|
+
export declare function sanitizeDisplayText(text: string): string;
|
|
9
|
+
export declare function sanitizeDisplaySnippet(text: string, maxLength: number): string;
|
|
10
|
+
//# sourceMappingURL=display-sanitize.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"display-sanitize.d.ts","sourceRoot":"","sources":["../../src/lib/display-sanitize.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAMH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAExD;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAE9E"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared display sanitization for user-visible output.
|
|
3
|
+
*
|
|
4
|
+
* Strips ANSI escape sequences and other control characters so that
|
|
5
|
+
* remote/provider error text cannot inject terminal control codes into
|
|
6
|
+
* toasts or transcript output.
|
|
7
|
+
*/
|
|
8
|
+
// Remove ANSI escape sequences and other control characters except newline/tab.
|
|
9
|
+
// eslint-disable-next-line no-control-regex
|
|
10
|
+
const DISPLAY_CONTROL_RE = /\x1B\[[0-9;]*[A-Za-z]|[\x00-\x08\x0B\x0C\x0E-\x1F\x7F]/g;
|
|
11
|
+
export function sanitizeDisplayText(text) {
|
|
12
|
+
return text.replace(DISPLAY_CONTROL_RE, "");
|
|
13
|
+
}
|
|
14
|
+
export function sanitizeDisplaySnippet(text, maxLength) {
|
|
15
|
+
return sanitizeDisplayText(text).slice(0, maxLength);
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=display-sanitize.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"display-sanitize.js","sourceRoot":"","sources":["../../src/lib/display-sanitize.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,gFAAgF;AAChF,4CAA4C;AAC5C,MAAM,kBAAkB,GAAG,yDAAyD,CAAC;AAErF,MAAM,UAAU,mBAAmB,CAAC,IAAY;IAC9C,OAAO,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC;AAC9C,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,IAAY,EAAE,SAAiB;IACpE,OAAO,mBAAmB,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;AACvD,CAAC"}
|
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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"}
|
|
@@ -13,7 +13,8 @@
|
|
|
13
13
|
* If the value does not match the pattern, returns the original value unchanged.
|
|
14
14
|
*
|
|
15
15
|
* @param value - The string value to resolve
|
|
16
|
-
* @
|
|
16
|
+
* @param allowedEnvVars - Optional allowlist for env vars referenced by templates
|
|
17
|
+
* @returns The resolved value, or null if env var is missing/empty/disallowed
|
|
17
18
|
*
|
|
18
19
|
* @example
|
|
19
20
|
* // With OPENAI_API_KEY="sk-123" in environment:
|
|
@@ -21,5 +22,5 @@
|
|
|
21
22
|
* resolveEnvTemplate("{env:MISSING_VAR}") // => null
|
|
22
23
|
* resolveEnvTemplate("literal-value") // => "literal-value"
|
|
23
24
|
*/
|
|
24
|
-
export declare function resolveEnvTemplate(value: string): string | null;
|
|
25
|
+
export declare function resolveEnvTemplate(value: string, allowedEnvVars?: readonly string[]): string | null;
|
|
25
26
|
//# sourceMappingURL=env-template.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"env-template.d.ts","sourceRoot":"","sources":["../../src/lib/env-template.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH
|
|
1
|
+
{"version":3,"file":"env-template.d.ts","sourceRoot":"","sources":["../../src/lib/env-template.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,MAAM,EACb,cAAc,CAAC,EAAE,SAAS,MAAM,EAAE,GACjC,MAAM,GAAG,IAAI,CAUf"}
|
package/dist/lib/env-template.js
CHANGED
|
@@ -13,7 +13,8 @@
|
|
|
13
13
|
* If the value does not match the pattern, returns the original value unchanged.
|
|
14
14
|
*
|
|
15
15
|
* @param value - The string value to resolve
|
|
16
|
-
* @
|
|
16
|
+
* @param allowedEnvVars - Optional allowlist for env vars referenced by templates
|
|
17
|
+
* @returns The resolved value, or null if env var is missing/empty/disallowed
|
|
17
18
|
*
|
|
18
19
|
* @example
|
|
19
20
|
* // With OPENAI_API_KEY="sk-123" in environment:
|
|
@@ -21,11 +22,14 @@
|
|
|
21
22
|
* resolveEnvTemplate("{env:MISSING_VAR}") // => null
|
|
22
23
|
* resolveEnvTemplate("literal-value") // => "literal-value"
|
|
23
24
|
*/
|
|
24
|
-
export function resolveEnvTemplate(value) {
|
|
25
|
+
export function resolveEnvTemplate(value, allowedEnvVars) {
|
|
25
26
|
const match = value.match(/^\{env:([^}]+)\}$/);
|
|
26
27
|
if (!match)
|
|
27
28
|
return value;
|
|
28
29
|
const envVar = match[1];
|
|
30
|
+
if (allowedEnvVars && !allowedEnvVars.includes(envVar)) {
|
|
31
|
+
return null;
|
|
32
|
+
}
|
|
29
33
|
const envValue = process.env[envVar];
|
|
30
34
|
return envValue && envValue.trim().length > 0 ? envValue.trim() : null;
|
|
31
35
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"env-template.js","sourceRoot":"","sources":["../../src/lib/env-template.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH
|
|
1
|
+
{"version":3,"file":"env-template.js","sourceRoot":"","sources":["../../src/lib/env-template.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,kBAAkB,CAChC,KAAa,EACb,cAAkC;IAElC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;IAC/C,IAAI,CAAC,KAAK;QAAE,OAAO,KAAK,CAAC;IAEzB,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IACxB,IAAI,cAAc,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QACvD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACrC,OAAO,QAAQ,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AACzE,CAAC"}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Resolution priority (first wins):
|
|
5
5
|
* 1. Environment variable: FIRMWARE_AI_API_KEY or FIRMWARE_API_KEY
|
|
6
|
-
* 2. opencode.json/opencode.jsonc: provider.firmware.options.apiKey
|
|
6
|
+
* 2. User/global opencode.json/opencode.jsonc: provider.firmware.options.apiKey
|
|
7
7
|
* - Supports {env:VAR_NAME} syntax for environment variable references
|
|
8
8
|
* 3. auth.json: firmware.key (legacy/fallback)
|
|
9
9
|
*/
|
|
@@ -14,13 +14,13 @@ export interface FirmwareApiKeyResult {
|
|
|
14
14
|
}
|
|
15
15
|
/** Source of the resolved API key */
|
|
16
16
|
export type FirmwareKeySource = "env:FIRMWARE_AI_API_KEY" | "env:FIRMWARE_API_KEY" | "opencode.json" | "opencode.jsonc" | "auth.json";
|
|
17
|
-
export { getOpencodeConfigCandidatePaths } from "./api-key-resolver.js";
|
|
17
|
+
export { getGlobalOpencodeConfigCandidatePaths as getOpencodeConfigCandidatePaths } from "./api-key-resolver.js";
|
|
18
18
|
/**
|
|
19
19
|
* Resolve Firmware API key from all available sources.
|
|
20
20
|
*
|
|
21
21
|
* Priority (first wins):
|
|
22
22
|
* 1. Environment variable: FIRMWARE_AI_API_KEY or FIRMWARE_API_KEY
|
|
23
|
-
* 2. opencode.json/opencode.jsonc: provider.firmware.options.apiKey
|
|
23
|
+
* 2. User/global opencode.json/opencode.jsonc: provider.firmware.options.apiKey
|
|
24
24
|
* 3. auth.json: firmware.key
|
|
25
25
|
*
|
|
26
26
|
* @returns API key and source, or null if not found
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"firmware-config.d.ts","sourceRoot":"","sources":["../../src/lib/firmware-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;
|
|
1
|
+
{"version":3,"file":"firmware-config.d.ts","sourceRoot":"","sources":["../../src/lib/firmware-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAUH,4CAA4C;AAC5C,MAAM,WAAW,oBAAoB;IACnC,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,iBAAiB,CAAC;CAC3B;AAID,qCAAqC;AACrC,MAAM,MAAM,iBAAiB,GACzB,yBAAyB,GACzB,sBAAsB,GACtB,eAAe,GACf,gBAAgB,GAChB,WAAW,CAAC;AA0ChB,OAAO,EAAE,qCAAqC,IAAI,+BAA+B,EAAE,MAAM,uBAAuB,CAAC;AAEjH;;;;;;;;;GASG;AACH,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC,CAgBlF;AAED;;GAEG;AACH,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,OAAO,CAAC,CAG1D;AAED;;GAEG;AACH,wBAAsB,yBAAyB,IAAI,OAAO,CAAC;IACzD,UAAU,EAAE,OAAO,CAAC;IACpB,MAAM,EAAE,iBAAiB,GAAG,IAAI,CAAC;IACjC,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB,CAAC,CAMD"}
|
|
@@ -3,15 +3,16 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Resolution priority (first wins):
|
|
5
5
|
* 1. Environment variable: FIRMWARE_AI_API_KEY or FIRMWARE_API_KEY
|
|
6
|
-
* 2. opencode.json/opencode.jsonc: provider.firmware.options.apiKey
|
|
6
|
+
* 2. User/global opencode.json/opencode.jsonc: provider.firmware.options.apiKey
|
|
7
7
|
* - Supports {env:VAR_NAME} syntax for environment variable references
|
|
8
8
|
* 3. auth.json: firmware.key (legacy/fallback)
|
|
9
9
|
*/
|
|
10
10
|
import { resolveEnvTemplate } from "./env-template.js";
|
|
11
11
|
import { readAuthFile } from "./opencode-auth.js";
|
|
12
|
-
import { resolveApiKey, getApiKeyDiagnostics, } from "./api-key-resolver.js";
|
|
12
|
+
import { resolveApiKey, getApiKeyDiagnostics, getGlobalOpencodeConfigCandidatePaths, } from "./api-key-resolver.js";
|
|
13
|
+
const ALLOWED_FIRMWARE_ENV_VARS = ["FIRMWARE_AI_API_KEY", "FIRMWARE_API_KEY"];
|
|
13
14
|
/**
|
|
14
|
-
* Extract firmware API key from opencode config object
|
|
15
|
+
* Extract firmware API key from trusted opencode config object
|
|
15
16
|
*
|
|
16
17
|
* Looks for: provider.firmware.options.apiKey
|
|
17
18
|
*/
|
|
@@ -32,7 +33,7 @@ function extractFirmwareKeyFromConfig(config) {
|
|
|
32
33
|
if (typeof apiKey !== "string" || apiKey.trim().length === 0)
|
|
33
34
|
return null;
|
|
34
35
|
// Resolve {env:VAR_NAME} syntax
|
|
35
|
-
return resolveEnvTemplate(apiKey.trim());
|
|
36
|
+
return resolveEnvTemplate(apiKey.trim(), ALLOWED_FIRMWARE_ENV_VARS);
|
|
36
37
|
}
|
|
37
38
|
/**
|
|
38
39
|
* Extract firmware API key from auth.json
|
|
@@ -47,13 +48,13 @@ function extractFirmwareKeyFromAuth(auth) {
|
|
|
47
48
|
return null;
|
|
48
49
|
}
|
|
49
50
|
// Re-export for consumers that need path info
|
|
50
|
-
export { getOpencodeConfigCandidatePaths } from "./api-key-resolver.js";
|
|
51
|
+
export { getGlobalOpencodeConfigCandidatePaths as getOpencodeConfigCandidatePaths } from "./api-key-resolver.js";
|
|
51
52
|
/**
|
|
52
53
|
* Resolve Firmware API key from all available sources.
|
|
53
54
|
*
|
|
54
55
|
* Priority (first wins):
|
|
55
56
|
* 1. Environment variable: FIRMWARE_AI_API_KEY or FIRMWARE_API_KEY
|
|
56
|
-
* 2. opencode.json/opencode.jsonc: provider.firmware.options.apiKey
|
|
57
|
+
* 2. User/global opencode.json/opencode.jsonc: provider.firmware.options.apiKey
|
|
57
58
|
* 3. auth.json: firmware.key
|
|
58
59
|
*
|
|
59
60
|
* @returns API key and source, or null if not found
|
|
@@ -69,6 +70,7 @@ export async function resolveFirmwareApiKey() {
|
|
|
69
70
|
configJsoncSource: "opencode.jsonc",
|
|
70
71
|
extractFromAuth: extractFirmwareKeyFromAuth,
|
|
71
72
|
authSource: "auth.json",
|
|
73
|
+
getConfigCandidates: getGlobalOpencodeConfigCandidatePaths,
|
|
72
74
|
}, readAuthFile);
|
|
73
75
|
}
|
|
74
76
|
/**
|
|
@@ -85,6 +87,7 @@ export async function getFirmwareKeyDiagnostics() {
|
|
|
85
87
|
return getApiKeyDiagnostics({
|
|
86
88
|
envVarNames: ["FIRMWARE_AI_API_KEY", "FIRMWARE_API_KEY"],
|
|
87
89
|
resolve: resolveFirmwareApiKey,
|
|
90
|
+
getConfigCandidates: getGlobalOpencodeConfigCandidatePaths,
|
|
88
91
|
});
|
|
89
92
|
}
|
|
90
93
|
//# sourceMappingURL=firmware-config.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"firmware-config.js","sourceRoot":"","sources":["../../src/lib/firmware-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EACL,aAAa,EACb,oBAAoB,
|
|
1
|
+
{"version":3,"file":"firmware-config.js","sourceRoot":"","sources":["../../src/lib/firmware-config.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"firmware.d.ts","sourceRoot":"","sources":["../../src/lib/firmware.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"firmware.d.ts","sourceRoot":"","sources":["../../src/lib/firmware.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AA4B7C,MAAM,MAAM,cAAc,GACtB;IACE,OAAO,EAAE,IAAI,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,GACD,UAAU,GACV,IAAI,CAAC;AAET,MAAM,MAAM,yBAAyB,GACjC;IAAE,OAAO,EAAE,IAAI,CAAA;CAAE,GACjB,UAAU,GACV,IAAI,CAAC;AAIT,wBAAsB,2BAA2B,IAAI,OAAO,CAAC,OAAO,CAAC,CAEpE;AAED,OAAO,EAAE,yBAAyB,EAAE,KAAK,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAEzF,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,cAAc,CAAC,CAyClE;AAED;;GAEG;AACH,wBAAsB,wBAAwB,IAAI,OAAO,CAAC,yBAAyB,CAAC,CAQnF"}
|
package/dist/lib/firmware.js
CHANGED
|
@@ -4,17 +4,9 @@
|
|
|
4
4
|
* Resolves API key from multiple sources (env vars, opencode.json, auth.json)
|
|
5
5
|
* and queries: https://app.firmware.ai/api/v1/quota
|
|
6
6
|
*/
|
|
7
|
+
import { sanitizeDisplaySnippet, sanitizeDisplayText } from "./display-sanitize.js";
|
|
7
8
|
import { fetchWithTimeout } from "./http.js";
|
|
8
9
|
import { resolveFirmwareApiKey, hasFirmwareApiKey, } from "./firmware-config.js";
|
|
9
|
-
/**
|
|
10
|
-
* Strip control characters (ANSI escapes, etc.) from error text
|
|
11
|
-
* to prevent terminal injection when displayed in TUI output.
|
|
12
|
-
*/
|
|
13
|
-
function sanitizeErrorText(text) {
|
|
14
|
-
// Remove ANSI escape sequences and other control characters (except newline/tab)
|
|
15
|
-
// eslint-disable-next-line no-control-regex
|
|
16
|
-
return text.replace(/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F]|\x1B\[[0-9;]*[A-Za-z]/g, "");
|
|
17
|
-
}
|
|
18
10
|
async function readFirmwareAuth() {
|
|
19
11
|
const result = await resolveFirmwareApiKey();
|
|
20
12
|
if (!result)
|
|
@@ -42,7 +34,7 @@ export async function queryFirmwareQuota() {
|
|
|
42
34
|
const text = await resp.text();
|
|
43
35
|
return {
|
|
44
36
|
success: false,
|
|
45
|
-
error: `Firmware API error ${resp.status}: ${
|
|
37
|
+
error: `Firmware API error ${resp.status}: ${sanitizeDisplaySnippet(text, 120)}`,
|
|
46
38
|
};
|
|
47
39
|
}
|
|
48
40
|
const data = (await resp.json());
|
|
@@ -60,7 +52,7 @@ export async function queryFirmwareQuota() {
|
|
|
60
52
|
catch (err) {
|
|
61
53
|
return {
|
|
62
54
|
success: false,
|
|
63
|
-
error: err instanceof Error ? err.message : String(err),
|
|
55
|
+
error: sanitizeDisplayText(err instanceof Error ? err.message : String(err)),
|
|
64
56
|
};
|
|
65
57
|
}
|
|
66
58
|
}
|
package/dist/lib/firmware.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"firmware.js","sourceRoot":"","sources":["../../src/lib/firmware.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"firmware.js","sourceRoot":"","sources":["../../src/lib/firmware.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACpF,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EACL,qBAAqB,EACrB,iBAAiB,GAGlB,MAAM,sBAAsB,CAAC;AAc9B,KAAK,UAAU,gBAAgB;IAC7B,MAAM,MAAM,GAAG,MAAM,qBAAqB,EAAE,CAAC;IAC7C,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IACzB,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;AACjE,CAAC;AAgBD,MAAM,kBAAkB,GAAG,sCAAsC,CAAC;AAElE,MAAM,CAAC,KAAK,UAAU,2BAA2B;IAC/C,OAAO,MAAM,iBAAiB,EAAE,CAAC;AACnC,CAAC;AAED,OAAO,EAAE,yBAAyB,EAA0B,MAAM,sBAAsB,CAAC;AAEzF,MAAM,CAAC,KAAK,UAAU,kBAAkB;IACtC,MAAM,IAAI,GAAG,MAAM,gBAAgB,EAAE,CAAC;IACtC,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IAEvB,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,gBAAgB,CAAC,kBAAkB,EAAE;YACtD,MAAM,EAAE,KAAK;YACb,OAAO,EAAE;gBACP,aAAa,EAAE,UAAU,IAAI,CAAC,GAAG,EAAE;gBACnC,YAAY,EAAE,0BAA0B;aACzC;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;YACb,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;YAC/B,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,sBAAsB,IAAI,CAAC,MAAM,KAAK,sBAAsB,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE;aACjF,CAAC;QACJ,CAAC;QAED,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,CAA4B,CAAC;QAE5D,MAAM,UAAU,GAAG,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;QACzE,MAAM,YAAY,GAAG,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;QAEtG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YACjC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,uCAAuC,EAAE,CAAC;QAC5E,CAAC;QAED,OAAO;YACL,OAAO,EAAE,IAAI;YACb,UAAU;YACV,YAAY;SACb,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO;YACL,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,mBAAmB,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;SAC7E,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,wBAAwB;IAC5C,MAAM,IAAI,GAAG,MAAM,gBAAgB,EAAE,CAAC;IACtC,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IAEvB,OAAO;QACL,OAAO,EAAE,KAAK;QACd,KAAK,EAAE,sEAAsE;KAC9E,CAAC;AACJ,CAAC"}
|
|
@@ -71,8 +71,8 @@ async function persist() {
|
|
|
71
71
|
return;
|
|
72
72
|
const path = getGoogleTokenCachePath();
|
|
73
73
|
const dir = dirname(path);
|
|
74
|
-
await mkdir(dir, { recursive: true });
|
|
75
|
-
await writeFile(path, JSON.stringify(memCache, null, 2), "utf-8");
|
|
74
|
+
await mkdir(dir, { recursive: true, mode: 0o700 });
|
|
75
|
+
await writeFile(path, JSON.stringify(memCache, null, 2), { encoding: "utf-8", mode: 0o600 });
|
|
76
76
|
}
|
|
77
77
|
export async function getCachedAccessToken(params) {
|
|
78
78
|
const cache = await ensureLoaded();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"google-token-cache.js","sourceRoot":"","sources":["../../src/lib/google-token-cache.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"google-token-cache.js","sourceRoot":"","sources":["../../src/lib/google-token-cache.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAErC,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAepC,MAAM,aAAa,GAAG,CAAU,CAAC;AAEjC,IAAI,QAAQ,GAAsC,IAAI,CAAC;AACvD,IAAI,WAAW,GAA+C,IAAI,CAAC;AAEnE,SAAS,eAAe;IACtB,wDAAwD;IACxD,oFAAoF;IACpF,OAAO,sBAAsB,EAAE,CAAC,QAAQ,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,uBAAuB;IACrC,OAAO,IAAI,CAAC,eAAe,EAAE,EAAE,gBAAgB,EAAE,2BAA2B,CAAC,CAAC;AAChF,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,MAInC;IACC,MAAM,SAAS,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC5D,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC;SAC9B,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC;SAC3B,MAAM,CAAC,IAAI,CAAC;SACZ,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC;SACxB,MAAM,CAAC,KAAK,CAAC;SACb,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAChB,iDAAiD;IACjD,OAAO,GAAG,SAAS,KAAK,MAAM,CAAC,SAAS,KAAK,IAAI,EAAE,CAAC;AACtD,CAAC;AAED,KAAK,UAAU,YAAY,CAAC,IAAY;IACtC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC1C,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAY,CAAC;QAC1C,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC;QACtE,MAAM,IAAI,GAAG,MAAa,CAAC;QAC3B,IAAI,IAAI,CAAC,OAAO,KAAK,aAAa,IAAI,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACtF,MAAM,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC;QAC7B,CAAC;QACD,OAAO;YACL,OAAO,EAAE,aAAa;YACtB,SAAS,EAAE,OAAO,IAAI,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;YAC3E,MAAM,EAAE,IAAI,CAAC,MAAqD;SACnE,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;IACvE,CAAC;AACH,CAAC;AAED,KAAK,UAAU,YAAY;IACzB,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAC9B,IAAI,WAAW;QAAE,OAAO,WAAW,CAAC;IAEpC,MAAM,IAAI,GAAG,uBAAuB,EAAE,CAAC;IACvC,WAAW,GAAG,CAAC,KAAK,IAAI,EAAE;QACxB,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,CAAC;QACtC,QAAQ,GAAG,IAAI,CAAC;QAChB,WAAW,GAAG,IAAI,CAAC;QACnB,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,EAAE,CAAC;IAEL,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,KAAK,UAAU,OAAO;IACpB,IAAI,CAAC,QAAQ;QAAE,OAAO;IACtB,MAAM,IAAI,GAAG,uBAAuB,EAAE,CAAC;IACvC,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1B,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACnD,MAAM,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;AAC/F,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,MAG1C;IACC,MAAM,KAAK,GAAG,MAAM,YAAY,EAAE,CAAC;IACnC,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACvC,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IACxB,IAAI,OAAO,KAAK,CAAC,SAAS,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IACrD,IAAI,KAAK,CAAC,SAAS,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IAC/D,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,MAG1C;IACC,MAAM,KAAK,GAAG,MAAM,YAAY,EAAE,CAAC;IACnC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC;IACxC,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC7B,MAAM,OAAO,EAAE,CAAC;AAClB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qBAAqB;IACzC,QAAQ,GAAG,EAAE,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;IACzE,MAAM,OAAO,EAAE,CAAC;AAClB,CAAC"}
|
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?: {
|