@slkiser/opencode-quota 1.4.1 → 1.4.3
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 +1 -1
- package/dist/lib/chutes.d.ts.map +1 -1
- package/dist/lib/chutes.js +1 -5
- package/dist/lib/chutes.js.map +1 -1
- package/dist/lib/command-handled.d.ts +13 -0
- package/dist/lib/command-handled.d.ts.map +1 -0
- package/dist/lib/command-handled.js +15 -0
- package/dist/lib/command-handled.js.map +1 -0
- package/dist/lib/command-parsing.d.ts +53 -0
- package/dist/lib/command-parsing.d.ts.map +1 -0
- package/dist/lib/command-parsing.js +121 -0
- package/dist/lib/command-parsing.js.map +1 -0
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +26 -30
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/firmware.d.ts.map +1 -1
- package/dist/lib/firmware.js +1 -5
- package/dist/lib/firmware.js.map +1 -1
- package/dist/lib/format-utils.d.ts +5 -0
- package/dist/lib/format-utils.d.ts.map +1 -1
- package/dist/lib/format-utils.js +9 -0
- package/dist/lib/format-utils.js.map +1 -1
- package/dist/lib/format.d.ts.map +1 -1
- package/dist/lib/format.js +5 -10
- package/dist/lib/format.js.map +1 -1
- package/dist/lib/openai.d.ts.map +1 -1
- package/dist/lib/openai.js +3 -6
- package/dist/lib/openai.js.map +1 -1
- package/dist/lib/opencode-auth.d.ts +7 -0
- package/dist/lib/opencode-auth.d.ts.map +1 -1
- package/dist/lib/opencode-auth.js +33 -13
- package/dist/lib/opencode-auth.js.map +1 -1
- package/dist/lib/quota-command-format.d.ts.map +1 -1
- package/dist/lib/quota-command-format.js +5 -9
- package/dist/lib/quota-command-format.js.map +1 -1
- package/dist/lib/quota-status.d.ts.map +1 -1
- package/dist/lib/quota-status.js +43 -8
- package/dist/lib/quota-status.js.map +1 -1
- package/dist/lib/session-tokens-format.d.ts +15 -0
- package/dist/lib/session-tokens-format.d.ts.map +1 -0
- package/dist/lib/session-tokens-format.js +27 -0
- package/dist/lib/session-tokens-format.js.map +1 -0
- package/dist/lib/session-tokens.d.ts +25 -0
- package/dist/lib/session-tokens.d.ts.map +1 -0
- package/dist/lib/session-tokens.js +51 -0
- package/dist/lib/session-tokens.js.map +1 -0
- package/dist/lib/toast-format-grouped.d.ts.map +1 -1
- package/dist/lib/toast-format-grouped.js +5 -10
- package/dist/lib/toast-format-grouped.js.map +1 -1
- package/dist/lib/types.d.ts +12 -0
- package/dist/lib/types.d.ts.map +1 -1
- package/dist/lib/types.js.map +1 -1
- package/dist/lib/version.d.ts +2 -0
- package/dist/lib/version.d.ts.map +1 -0
- package/dist/lib/version.js +30 -0
- package/dist/lib/version.js.map +1 -0
- package/dist/plugin.d.ts.map +1 -1
- package/dist/plugin.js +95 -190
- package/dist/plugin.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
package/dist/lib/chutes.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chutes.d.ts","sourceRoot":"","sources":["../../src/lib/chutes.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"chutes.d.ts","sourceRoot":"","sources":["../../src/lib/chutes.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAqC/C,wBAAsB,yBAAyB,IAAI,OAAO,CAAC,OAAO,CAAC,CAElE;AAED,OAAO,EAAE,uBAAuB,EAAE,KAAK,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAEnF,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,YAAY,CAAC,CAwC9D"}
|
package/dist/lib/chutes.js
CHANGED
|
@@ -5,12 +5,8 @@
|
|
|
5
5
|
* https://api.chutes.ai/users/me/quota_usage/me
|
|
6
6
|
*/
|
|
7
7
|
import { fetchWithTimeout } from "./http.js";
|
|
8
|
+
import { clampPercent } from "./format-utils.js";
|
|
8
9
|
import { resolveChutesApiKey, hasChutesApiKey, } from "./chutes-config.js";
|
|
9
|
-
function clampPercent(n) {
|
|
10
|
-
if (!Number.isFinite(n))
|
|
11
|
-
return 0;
|
|
12
|
-
return Math.max(0, Math.min(100, Math.round(n)));
|
|
13
|
-
}
|
|
14
10
|
function getNextDailyResetUtc() {
|
|
15
11
|
const now = new Date();
|
|
16
12
|
const reset = new Date(Date.UTC(now.getUTCFullYear(), now.getUTCMonth(), now.getUTCDate() + 1, 0, 0, 0, 0));
|
package/dist/lib/chutes.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chutes.js","sourceRoot":"","sources":["../../src/lib/chutes.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,
|
|
1
|
+
{"version":3,"file":"chutes.js","sourceRoot":"","sources":["../../src/lib/chutes.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Command-handled sentinel.
|
|
3
|
+
*
|
|
4
|
+
* Thrown by slash-command handlers to signal that the command output
|
|
5
|
+
* has already been injected and no further processing is needed.
|
|
6
|
+
*/
|
|
7
|
+
export declare const COMMAND_HANDLED_SENTINEL: "__QUOTA_COMMAND_HANDLED__";
|
|
8
|
+
/**
|
|
9
|
+
* Throw the command-handled sentinel.
|
|
10
|
+
* Use this instead of `throw new Error("__QUOTA_COMMAND_HANDLED__")`.
|
|
11
|
+
*/
|
|
12
|
+
export declare function handled(): never;
|
|
13
|
+
//# sourceMappingURL=command-handled.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"command-handled.d.ts","sourceRoot":"","sources":["../../src/lib/command-handled.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,eAAO,MAAM,wBAAwB,EAAG,2BAAoC,CAAC;AAE7E;;;GAGG;AACH,wBAAgB,OAAO,IAAI,KAAK,CAE/B"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Command-handled sentinel.
|
|
3
|
+
*
|
|
4
|
+
* Thrown by slash-command handlers to signal that the command output
|
|
5
|
+
* has already been injected and no further processing is needed.
|
|
6
|
+
*/
|
|
7
|
+
export const COMMAND_HANDLED_SENTINEL = "__QUOTA_COMMAND_HANDLED__";
|
|
8
|
+
/**
|
|
9
|
+
* Throw the command-handled sentinel.
|
|
10
|
+
* Use this instead of `throw new Error("__QUOTA_COMMAND_HANDLED__")`.
|
|
11
|
+
*/
|
|
12
|
+
export function handled() {
|
|
13
|
+
throw new Error(COMMAND_HANDLED_SENTINEL);
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=command-handled.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"command-handled.js","sourceRoot":"","sources":["../../src/lib/command-handled.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,CAAC,MAAM,wBAAwB,GAAG,2BAAoC,CAAC;AAE7E;;;GAGG;AACH,MAAM,UAAU,OAAO;IACrB,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;AAC5C,CAAC"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Command parsing helpers extracted from plugin.ts.
|
|
3
|
+
*
|
|
4
|
+
* These utilities handle argument parsing for `/tokens_between`,
|
|
5
|
+
* `/quota_status`, and other slash commands.
|
|
6
|
+
*/
|
|
7
|
+
/** Parsed YYYY-MM-DD date components. */
|
|
8
|
+
export type Ymd = {
|
|
9
|
+
y: number;
|
|
10
|
+
m: number;
|
|
11
|
+
d: number;
|
|
12
|
+
};
|
|
13
|
+
/**
|
|
14
|
+
* Parse optional JSON arguments from a command input string.
|
|
15
|
+
*/
|
|
16
|
+
export declare function parseOptionalJsonArgs(input: string | undefined): {
|
|
17
|
+
ok: true;
|
|
18
|
+
value: Record<string, unknown>;
|
|
19
|
+
} | {
|
|
20
|
+
ok: false;
|
|
21
|
+
error: string;
|
|
22
|
+
};
|
|
23
|
+
/**
|
|
24
|
+
* Parse a YYYY-MM-DD string. Returns null if invalid format or invalid date.
|
|
25
|
+
*/
|
|
26
|
+
export declare function parseYyyyMmDd(input: string): Ymd | null;
|
|
27
|
+
/**
|
|
28
|
+
* Get the start of a local day (midnight) in milliseconds.
|
|
29
|
+
*/
|
|
30
|
+
export declare function startOfLocalDayMs(ymd: Ymd): number;
|
|
31
|
+
/**
|
|
32
|
+
* Get the start of the next local day (midnight of the following day) in milliseconds.
|
|
33
|
+
* Used for inclusive end date: untilMs = startOfNextLocalDayMs(end) (exclusive upper bound).
|
|
34
|
+
*/
|
|
35
|
+
export declare function startOfNextLocalDayMs(ymd: Ymd): number;
|
|
36
|
+
/**
|
|
37
|
+
* Parse /tokens_between arguments. Supports:
|
|
38
|
+
* - Positional: "2026-01-01 2026-01-15"
|
|
39
|
+
* - JSON: {"starting_date":"2026-01-01","ending_date":"2026-01-15"}
|
|
40
|
+
*/
|
|
41
|
+
export declare function parseQuotaBetweenArgs(input: string | undefined): {
|
|
42
|
+
ok: true;
|
|
43
|
+
startYmd: Ymd;
|
|
44
|
+
endYmd: Ymd;
|
|
45
|
+
} | {
|
|
46
|
+
ok: false;
|
|
47
|
+
error: string;
|
|
48
|
+
};
|
|
49
|
+
/**
|
|
50
|
+
* Format a Ymd as YYYY-MM-DD string.
|
|
51
|
+
*/
|
|
52
|
+
export declare function formatYmd(ymd: Ymd): string;
|
|
53
|
+
//# sourceMappingURL=command-parsing.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"command-parsing.d.ts","sourceRoot":"","sources":["../../src/lib/command-parsing.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,yCAAyC;AACzC,MAAM,MAAM,GAAG,GAAG;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAEtD;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAC3D;IACE,EAAE,EAAE,IAAI,CAAC;IACT,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC,GACD;IACE,EAAE,EAAE,KAAK,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;CACf,CAYJ;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,GAAG,GAAG,IAAI,CAavD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,CAElD;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,CAEtD;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,MAAM,GAAG,SAAS,GACxB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,EAAE,GAAG,CAAC;IAAC,MAAM,EAAE,GAAG,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAqDzE;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,CAK1C"}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Command parsing helpers extracted from plugin.ts.
|
|
3
|
+
*
|
|
4
|
+
* These utilities handle argument parsing for `/tokens_between`,
|
|
5
|
+
* `/quota_status`, and other slash commands.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Parse optional JSON arguments from a command input string.
|
|
9
|
+
*/
|
|
10
|
+
export function parseOptionalJsonArgs(input) {
|
|
11
|
+
const raw = input?.trim() || "";
|
|
12
|
+
if (!raw)
|
|
13
|
+
return { ok: true, value: {} };
|
|
14
|
+
try {
|
|
15
|
+
const parsed = JSON.parse(raw);
|
|
16
|
+
if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) {
|
|
17
|
+
return { ok: false, error: 'Arguments must be a JSON object (e.g. {"force":true}).' };
|
|
18
|
+
}
|
|
19
|
+
return { ok: true, value: parsed };
|
|
20
|
+
}
|
|
21
|
+
catch {
|
|
22
|
+
return { ok: false, error: "Failed to parse JSON arguments." };
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Parse a YYYY-MM-DD string. Returns null if invalid format or invalid date.
|
|
27
|
+
*/
|
|
28
|
+
export function parseYyyyMmDd(input) {
|
|
29
|
+
const pattern = /^\d{4}-\d{2}-\d{2}$/;
|
|
30
|
+
if (!pattern.test(input))
|
|
31
|
+
return null;
|
|
32
|
+
const [yStr, mStr, dStr] = input.split("-");
|
|
33
|
+
const y = parseInt(yStr, 10);
|
|
34
|
+
const m = parseInt(mStr, 10);
|
|
35
|
+
const d = parseInt(dStr, 10);
|
|
36
|
+
// Validate by round-trip: construct a Date and check components match
|
|
37
|
+
const date = new Date(y, m - 1, d);
|
|
38
|
+
if (date.getFullYear() !== y || date.getMonth() !== m - 1 || date.getDate() !== d) {
|
|
39
|
+
return null; // Invalid date (e.g., 2026-02-31)
|
|
40
|
+
}
|
|
41
|
+
return { y, m, d };
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Get the start of a local day (midnight) in milliseconds.
|
|
45
|
+
*/
|
|
46
|
+
export function startOfLocalDayMs(ymd) {
|
|
47
|
+
return new Date(ymd.y, ymd.m - 1, ymd.d).getTime();
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Get the start of the next local day (midnight of the following day) in milliseconds.
|
|
51
|
+
* Used for inclusive end date: untilMs = startOfNextLocalDayMs(end) (exclusive upper bound).
|
|
52
|
+
*/
|
|
53
|
+
export function startOfNextLocalDayMs(ymd) {
|
|
54
|
+
return new Date(ymd.y, ymd.m - 1, ymd.d + 1).getTime();
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Parse /tokens_between arguments. Supports:
|
|
58
|
+
* - Positional: "2026-01-01 2026-01-15"
|
|
59
|
+
* - JSON: {"starting_date":"2026-01-01","ending_date":"2026-01-15"}
|
|
60
|
+
*/
|
|
61
|
+
export function parseQuotaBetweenArgs(input) {
|
|
62
|
+
const raw = input?.trim() || "";
|
|
63
|
+
if (!raw) {
|
|
64
|
+
return {
|
|
65
|
+
ok: false,
|
|
66
|
+
error: "Missing arguments. Expected two dates in YYYY-MM-DD format.",
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
let startStr;
|
|
70
|
+
let endStr;
|
|
71
|
+
if (raw.startsWith("{")) {
|
|
72
|
+
// JSON format
|
|
73
|
+
try {
|
|
74
|
+
const parsed = JSON.parse(raw);
|
|
75
|
+
startStr = String(parsed["starting_date"] ?? parsed["startingDate"] ?? "");
|
|
76
|
+
endStr = String(parsed["ending_date"] ?? parsed["endingDate"] ?? "");
|
|
77
|
+
}
|
|
78
|
+
catch {
|
|
79
|
+
return { ok: false, error: "Failed to parse JSON arguments." };
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
else {
|
|
83
|
+
// Positional format: split on whitespace
|
|
84
|
+
const parts = raw.split(/\s+/);
|
|
85
|
+
if (parts.length !== 2) {
|
|
86
|
+
return {
|
|
87
|
+
ok: false,
|
|
88
|
+
error: "Expected exactly two dates in YYYY-MM-DD format.",
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
[startStr, endStr] = parts;
|
|
92
|
+
}
|
|
93
|
+
const startYmd = parseYyyyMmDd(startStr);
|
|
94
|
+
if (!startYmd) {
|
|
95
|
+
return { ok: false, error: `Invalid starting date: "${startStr}". Expected YYYY-MM-DD.` };
|
|
96
|
+
}
|
|
97
|
+
const endYmd = parseYyyyMmDd(endStr);
|
|
98
|
+
if (!endYmd) {
|
|
99
|
+
return { ok: false, error: `Invalid ending date: "${endStr}". Expected YYYY-MM-DD.` };
|
|
100
|
+
}
|
|
101
|
+
// Check end >= start
|
|
102
|
+
const startMs = startOfLocalDayMs(startYmd);
|
|
103
|
+
const endMs = startOfLocalDayMs(endYmd);
|
|
104
|
+
if (endMs < startMs) {
|
|
105
|
+
return {
|
|
106
|
+
ok: false,
|
|
107
|
+
error: `Ending date (${endStr}) is before starting date (${startStr}).`,
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
return { ok: true, startYmd, endYmd };
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Format a Ymd as YYYY-MM-DD string.
|
|
114
|
+
*/
|
|
115
|
+
export function formatYmd(ymd) {
|
|
116
|
+
const y = String(ymd.y).padStart(4, "0");
|
|
117
|
+
const m = String(ymd.m).padStart(2, "0");
|
|
118
|
+
const d = String(ymd.d).padStart(2, "0");
|
|
119
|
+
return `${y}-${m}-${d}`;
|
|
120
|
+
}
|
|
121
|
+
//# sourceMappingURL=command-parsing.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"command-parsing.js","sourceRoot":"","sources":["../../src/lib/command-parsing.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAiB,MAAM,YAAY,CAAC;AASlE,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,KAAK,GAAG,OAAO,GAAG,UAAU,CAAC;IACrC,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,wBAAgB,oBAAoB,IAAI,cAAc,CAErD;AAiCD;;;;;GAKG;AACH,wBAAsB,UAAU,CAC9B,MAAM,EAAE;IACN,MAAM,EAAE;QACN,GAAG,EAAE,MAAM,OAAO,CAAC;YAAE,IAAI,CAAC,EAAE;gBAAE,YAAY,CAAC,EAAE;oBAAE,UAAU,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAA;iBAAE,CAAA;aAAE,CAAA;SAAE,CAAC,CAAC;KAC9F,CAAC;CACH,EACD,IAAI,CAAC,EAAE,cAAc,GACpB,OAAO,CAAC,gBAAgB,CAAC,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAiB,MAAM,YAAY,CAAC;AASlE,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,KAAK,GAAG,OAAO,GAAG,UAAU,CAAC;IACrC,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,wBAAgB,oBAAoB,IAAI,cAAc,CAErD;AAiCD;;;;;GAKG;AACH,wBAAsB,UAAU,CAC9B,MAAM,EAAE;IACN,MAAM,EAAE;QACN,GAAG,EAAE,MAAM,OAAO,CAAC;YAAE,IAAI,CAAC,EAAE;gBAAE,YAAY,CAAC,EAAE;oBAAE,UAAU,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAA;iBAAE,CAAA;aAAE,CAAA;SAAE,CAAC,CAAC;KAC9F,CAAC;CACH,EACD,IAAI,CAAC,EAAE,cAAc,GACpB,OAAO,CAAC,gBAAgB,CAAC,CA+K3B"}
|
package/dist/lib/config.js
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* Fallback: reads local config files directly.
|
|
6
6
|
*/
|
|
7
7
|
import { DEFAULT_CONFIG } from "./types.js";
|
|
8
|
-
import {
|
|
8
|
+
import { parseJsonOrJsonc } from "./jsonc.js";
|
|
9
9
|
import { existsSync } from "fs";
|
|
10
10
|
import { readFile } from "fs/promises";
|
|
11
11
|
import { homedir } from "os";
|
|
@@ -121,10 +121,7 @@ export async function loadConfig(client, meta) {
|
|
|
121
121
|
async function readJson(path) {
|
|
122
122
|
try {
|
|
123
123
|
const content = await readFile(path, "utf-8");
|
|
124
|
-
|
|
125
|
-
const isJsonc = path.endsWith(".jsonc");
|
|
126
|
-
const toParse = isJsonc ? stripJsonComments(content) : content;
|
|
127
|
-
return JSON.parse(toParse);
|
|
124
|
+
return parseJsonOrJsonc(content, path.endsWith(".jsonc"));
|
|
128
125
|
}
|
|
129
126
|
catch {
|
|
130
127
|
return null;
|
|
@@ -134,34 +131,33 @@ export async function loadConfig(client, meta) {
|
|
|
134
131
|
const cwd = process.cwd();
|
|
135
132
|
const configBaseDir = process.env.XDG_CONFIG_HOME || join(homedir(), ".config");
|
|
136
133
|
// Order: global first, then local overrides.
|
|
137
|
-
//
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
join(configBaseDir, "opencode", "opencode.json"),
|
|
141
|
-
join(cwd, "opencode.jsonc"),
|
|
142
|
-
join(cwd, "opencode.json"),
|
|
143
|
-
];
|
|
134
|
+
// Within each location, load .json first, then .jsonc so that
|
|
135
|
+
// .jsonc takes precedence on key collisions (matching the documented intent).
|
|
136
|
+
const locations = [join(configBaseDir, "opencode"), cwd];
|
|
144
137
|
const quota = {};
|
|
145
138
|
const usedPaths = [];
|
|
146
|
-
for (const
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
if (!parsed || typeof parsed !== "object")
|
|
151
|
-
continue;
|
|
152
|
-
const root = parsed;
|
|
153
|
-
const picks = [
|
|
154
|
-
{ key: "experimental.quotaToast", value: root?.experimental?.quotaToast },
|
|
155
|
-
];
|
|
156
|
-
const usedKeys = [];
|
|
157
|
-
for (const pick of picks) {
|
|
158
|
-
if (!pick.value || typeof pick.value !== "object")
|
|
139
|
+
for (const dir of locations) {
|
|
140
|
+
for (const filename of ["opencode.json", "opencode.jsonc"]) {
|
|
141
|
+
const p = join(dir, filename);
|
|
142
|
+
if (!existsSync(p))
|
|
159
143
|
continue;
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
144
|
+
const parsed = await readJson(p);
|
|
145
|
+
if (!parsed || typeof parsed !== "object")
|
|
146
|
+
continue;
|
|
147
|
+
const root = parsed;
|
|
148
|
+
const picks = [
|
|
149
|
+
{ key: "experimental.quotaToast", value: root?.experimental?.quotaToast },
|
|
150
|
+
];
|
|
151
|
+
const usedKeys = [];
|
|
152
|
+
for (const pick of picks) {
|
|
153
|
+
if (!pick.value || typeof pick.value !== "object")
|
|
154
|
+
continue;
|
|
155
|
+
Object.assign(quota, pick.value);
|
|
156
|
+
usedKeys.push(pick.key);
|
|
157
|
+
}
|
|
158
|
+
if (usedKeys.length > 0) {
|
|
159
|
+
usedPaths.push(`${p} (${usedKeys.join(", ")})`);
|
|
160
|
+
}
|
|
165
161
|
}
|
|
166
162
|
}
|
|
167
163
|
if (meta) {
|
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;AAGH,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAE9C,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAC7B,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAO5B,MAAM,UAAU,oBAAoB;IAClC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;AAC3C,CAAC;AAED;;GAEG;AACH,SAAS,oBAAoB,CAAC,EAAW;IACvC,OAAO,OAAO,EAAE,KAAK,QAAQ,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAC1F,CAAC;AAED;;;;GAIG;AACH,SAAS,mBAAmB,CAAC,EAAU;IACrC,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAClC,QAAQ,CAAC,EAAE,CAAC;QACV,KAAK,gBAAgB,CAAC;QACtB,KAAK,cAAc,CAAC;QACpB,KAAK,qBAAqB;YACxB,OAAO,SAAS,CAAC;QACnB;YACE,OAAO,CAAC,CAAC;IACb,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,MAAM,CAAI,IAAS;IAC1B,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;AAC5B,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,MAIC,EACD,IAAqB;IAErB,SAAS,SAAS,CAChB,gBAA8D;QAE9D,IAAI,CAAC,gBAAgB;YAAE,OAAO,cAAc,CAAC;QAE7C,MAAM,MAAM,GAAqB;YAC/B,OAAO,EACL,OAAO,gBAAgB,CAAC,OAAO,KAAK,SAAS;gBAC3C,CAAC,CAAC,gBAAgB,CAAC,OAAO;gBAC1B,CAAC,CAAC,cAAc,CAAC,OAAO;YAE5B,WAAW,EACT,OAAO,gBAAgB,CAAC,WAAW,KAAK,SAAS;gBAC/C,CAAC,CAAC,gBAAgB,CAAC,WAAW;gBAC9B,CAAC,CAAC,cAAc,CAAC,WAAW;YAEhC,UAAU,EACR,gBAAgB,CAAC,UAAU,KAAK,SAAS,IAAI,gBAAgB,CAAC,UAAU,KAAK,SAAS;gBACpF,CAAC,CAAC,gBAAgB,CAAC,UAAU;gBAC7B,CAAC,CAAC,cAAc,CAAC,UAAU;YAC/B,aAAa,EACX,OAAO,gBAAgB,CAAC,aAAa,KAAK,QAAQ,IAAI,gBAAgB,CAAC,aAAa,GAAG,CAAC;gBACtF,CAAC,CAAC,gBAAgB,CAAC,aAAa;gBAChC,CAAC,CAAC,cAAc,CAAC,aAAa;YAElC,KAAK,EACH,OAAO,gBAAgB,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,cAAc,CAAC,KAAK;YAE7F,gBAAgB,EACd,gBAAgB,CAAC,gBAAgB,KAAK,MAAM;gBAC1C,CAAC,CAAC,MAAM;gBACR,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,gBAAgB,CAAC;oBAChD,CAAC,CAAC,MAAM,CACJ,gBAAgB,CAAC,gBAAgB;yBAC9B,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC;yBACjD,GAAG,CAAC,mBAAmB,CAAC;yBACxB,MAAM,CAAC,OAAO,CAAC,CACnB;oBACH,CAAC,CAAC,cAAc,CAAC,gBAAgB;YACvC,YAAY,EAAE,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,YAAY,CAAC;gBACxD,CAAC,CAAC,gBAAgB,CAAC,YAAY,CAAC,MAAM,CAAC,oBAAoB,CAAC;gBAC5D,CAAC,CAAC,cAAc,CAAC,YAAY;YAC/B,UAAU,EACR,OAAO,gBAAgB,CAAC,UAAU,KAAK,SAAS;gBAC9C,CAAC,CAAC,gBAAgB,CAAC,UAAU;gBAC7B,CAAC,CAAC,cAAc,CAAC,UAAU;YAC/B,cAAc,EACZ,OAAO,gBAAgB,CAAC,cAAc,KAAK,SAAS;gBAClD,CAAC,CAAC,gBAAgB,CAAC,cAAc;gBACjC,CAAC,CAAC,cAAc,CAAC,cAAc;YACnC,aAAa,EACX,OAAO,gBAAgB,CAAC,aAAa,KAAK,SAAS;gBACjD,CAAC,CAAC,gBAAgB,CAAC,aAAa;gBAChC,CAAC,CAAC,cAAc,CAAC,aAAa;YAClC,cAAc,EACZ,OAAO,gBAAgB,CAAC,cAAc,KAAK,SAAS;gBAClD,CAAC,CAAC,gBAAgB,CAAC,cAAc;gBACjC,CAAC,CAAC,cAAc,CAAC,cAAc;YACnC,eAAe,EACb,OAAO,gBAAgB,CAAC,eAAe,KAAK,QAAQ,IAAI,gBAAgB,CAAC,eAAe,GAAG,CAAC;gBAC1F,CAAC,CAAC,gBAAgB,CAAC,eAAe;gBAClC,CAAC,CAAC,cAAc,CAAC,eAAe;YACpC,gBAAgB,EACd,OAAO,gBAAgB,CAAC,gBAAgB,KAAK,SAAS;gBACpD,CAAC,CAAC,gBAAgB,CAAC,gBAAgB;gBACnC,CAAC,CAAC,cAAc,CAAC,gBAAgB;YACrC,iBAAiB,EACf,OAAO,gBAAgB,CAAC,iBAAiB,KAAK,SAAS;gBACrD,CAAC,CAAC,gBAAgB,CAAC,iBAAiB;gBACpC,CAAC,CAAC,cAAc,CAAC,iBAAiB;YACtC,MAAM,EAAE;gBACN,QAAQ,EACN,OAAO,gBAAgB,CAAC,MAAM,EAAE,QAAQ,KAAK,QAAQ;oBACrD,gBAAgB,CAAC,MAAM,CAAC,QAAQ,GAAG,CAAC;oBAClC,CAAC,CAAC,gBAAgB,CAAC,MAAM,CAAC,QAAQ;oBAClC,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,QAAQ;gBACpC,QAAQ,EACN,OAAO,gBAAgB,CAAC,MAAM,EAAE,QAAQ,KAAK,QAAQ;oBACrD,gBAAgB,CAAC,MAAM,CAAC,QAAQ,GAAG,CAAC;oBAClC,CAAC,CAAC,gBAAgB,CAAC,MAAM,CAAC,QAAQ;oBAClC,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,QAAQ;gBACpC,MAAM,EACJ,OAAO,gBAAgB,CAAC,MAAM,EAAE,MAAM,KAAK,QAAQ,IAAI,gBAAgB,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;oBACvF,CAAC,CAAC,gBAAgB,CAAC,MAAM,CAAC,MAAM;oBAChC,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,MAAM;aACnC;SACF,CAAC;QAEF,mFAAmF;QAEnF,iDAAiD;QACjD,IAAI,MAAM,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACrC,MAAM,CAAC,YAAY,GAAG,cAAc,CAAC,YAAY,CAAC;QACpD,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,KAAK,UAAU,QAAQ,CAAC,IAAY;QAClC,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YAC9C,OAAO,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC5D,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,KAAK,UAAU,aAAa;QAC1B,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QAC1B,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,CAAC;QAEhF,6CAA6C;QAC7C,8DAA8D;QAC9D,8EAA8E;QAC9E,MAAM,SAAS,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,UAAU,CAAC,EAAE,GAAG,CAAC,CAAC;QAEzD,MAAM,KAAK,GAA8B,EAAE,CAAC;QAC5C,MAAM,SAAS,GAAa,EAAE,CAAC;QAE/B,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;YAC5B,KAAK,MAAM,QAAQ,IAAI,CAAC,eAAe,EAAE,gBAAgB,CAAC,EAAE,CAAC;gBAC3D,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;gBAC9B,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;oBAAE,SAAS;gBAC7B,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,CAAC,CAAC,CAAC;gBACjC,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ;oBAAE,SAAS;gBAEpD,MAAM,IAAI,GAAG,MAAa,CAAC;gBAE3B,MAAM,KAAK,GAA2C;oBACpD,EAAE,GAAG,EAAE,yBAAyB,EAAE,KAAK,EAAE,IAAI,EAAE,YAAY,EAAE,UAAU,EAAE;iBAC1E,CAAC;gBAEF,MAAM,QAAQ,GAAa,EAAE,CAAC;gBAC9B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;oBACzB,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ;wBAAE,SAAS;oBAC5D,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;oBACjC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAC1B,CAAC;gBAED,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACxB,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAClD,CAAC;YACH,CAAC;QACH,CAAC;QAED,IAAI,IAAI,EAAE,CAAC;YACT,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC;YAC1D,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;QACzB,CAAC;QAED,OAAO,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACjE,CAAC;IAED,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;QAE3C,2EAA2E;QAC3E,gEAAgE;QAChE,MAAM,gBAAgB,GAAI,QAAQ,CAAC,IAAY,EAAE,YAAY,EAAE,UAElD,CAAC;QAEd,IAAI,gBAAgB,IAAI,OAAO,gBAAgB,KAAK,QAAQ,EAAE,CAAC;YAC7D,IAAI,IAAI,EAAE,CAAC;gBACT,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;gBACpB,IAAI,CAAC,KAAK,GAAG,CAAC,mBAAmB,CAAC,CAAC;YACrC,CAAC;YACD,OAAO,SAAS,CAAC,gBAAgB,CAAC,CAAC;QACrC,CAAC;QAED,OAAO,MAAM,aAAa,EAAE,CAAC;IAC/B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,MAAM,aAAa,EAAE,CAAC;IAC/B,CAAC;AACH,CAAC"}
|
|
@@ -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;AAmB7C,+BAA+B;AAC/B,MAAM,WAAW,mBAAmB;IAClC,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAwBD,MAAM,MAAM,cAAc,GACtB;IACE,OAAO,EAAE,IAAI,CAAC;IACd,qEAAqE;IACrE,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,6CAA6C;IAC7C,OAAO,EAAE;QACP,MAAM,EAAE,mBAAmB,CAAC;QAC5B,MAAM,EAAE,mBAAmB,CAAC;KAC7B,CAAC;IACF,8CAA8C;IAC9C,qBAAqB,EAAE,MAAM,CAAC;CAC/B,GACD,UAAU,GACV,IAAI,CAAC;AAET,MAAM,MAAM,yBAAyB,GACjC;IAAE,OAAO,EAAE,IAAI,CAAC;IAAC,qBAAqB,CAAC,EAAE,MAAM,CAAA;CAAE,GACjD,UAAU,GACV,IAAI,CAAC;AAKT,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,CA2ElE;AAED;;;GAGG;AACH,wBAAsB,wBAAwB,IAAI,OAAO,CAAC,yBAAyB,CAAC,CAsDnF"}
|
package/dist/lib/firmware.js
CHANGED
|
@@ -5,12 +5,8 @@
|
|
|
5
5
|
* and queries: https://app.firmware.ai/api/v1/quota
|
|
6
6
|
*/
|
|
7
7
|
import { fetchWithTimeout } from "./http.js";
|
|
8
|
+
import { clampPercent } from "./format-utils.js";
|
|
8
9
|
import { resolveFirmwareApiKey, hasFirmwareApiKey, } from "./firmware-config.js";
|
|
9
|
-
function clampPercent(n) {
|
|
10
|
-
if (!Number.isFinite(n))
|
|
11
|
-
return 0;
|
|
12
|
-
return Math.max(0, Math.min(100, Math.round(n)));
|
|
13
|
-
}
|
|
14
10
|
/**
|
|
15
11
|
* Strip control characters (ANSI escapes, etc.) from error text
|
|
16
12
|
* to prevent terminal injection when displayed in TUI output.
|
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,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,
|
|
1
|
+
{"version":3,"file":"firmware.js","sourceRoot":"","sources":["../../src/lib/firmware.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,6 +10,11 @@
|
|
|
10
10
|
* Clamp a number to an integer within [min, max].
|
|
11
11
|
*/
|
|
12
12
|
export declare function clampInt(n: number, min: number, max: number): number;
|
|
13
|
+
/**
|
|
14
|
+
* Clamp a value to a percentage [0..100], rounding to the nearest integer.
|
|
15
|
+
* Returns 0 for non-finite inputs.
|
|
16
|
+
*/
|
|
17
|
+
export declare function clampPercent(n: number): number;
|
|
13
18
|
/**
|
|
14
19
|
* Pad string to width, truncating if too long, adding spaces on right if too short.
|
|
15
20
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"format-utils.d.ts","sourceRoot":"","sources":["../../src/lib/format-utils.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH;;GAEG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAEpE;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAG3D;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAG1D;AAED;;GAEG;AACH,wBAAgB,GAAG,CAAC,gBAAgB,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAKnE;AAED;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAWtD;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAUrE;AAED,MAAM,WAAW,2BAA2B;IAC1C;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,2BAA2B,GAAG,MAAM,CAc7F"}
|
|
1
|
+
{"version":3,"file":"format-utils.d.ts","sourceRoot":"","sources":["../../src/lib/format-utils.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH;;GAEG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAEpE;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAG9C;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAG3D;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAG1D;AAED;;GAEG;AACH,wBAAgB,GAAG,CAAC,gBAAgB,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAKnE;AAED;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAWtD;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAUrE;AAED,MAAM,WAAW,2BAA2B;IAC1C;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,2BAA2B,GAAG,MAAM,CAc7F"}
|
package/dist/lib/format-utils.js
CHANGED
|
@@ -12,6 +12,15 @@
|
|
|
12
12
|
export function clampInt(n, min, max) {
|
|
13
13
|
return Math.max(min, Math.min(max, Math.trunc(n)));
|
|
14
14
|
}
|
|
15
|
+
/**
|
|
16
|
+
* Clamp a value to a percentage [0..100], rounding to the nearest integer.
|
|
17
|
+
* Returns 0 for non-finite inputs.
|
|
18
|
+
*/
|
|
19
|
+
export function clampPercent(n) {
|
|
20
|
+
if (!Number.isFinite(n))
|
|
21
|
+
return 0;
|
|
22
|
+
return Math.max(0, Math.min(100, Math.round(n)));
|
|
23
|
+
}
|
|
15
24
|
/**
|
|
16
25
|
* Pad string to width, truncating if too long, adding spaces on right if too short.
|
|
17
26
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"format-utils.js","sourceRoot":"","sources":["../../src/lib/format-utils.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH;;GAEG;AACH,MAAM,UAAU,QAAQ,CAAC,CAAS,EAAE,GAAW,EAAE,GAAW;IAC1D,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACrD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,QAAQ,CAAC,GAAW,EAAE,KAAa;IACjD,IAAI,GAAG,CAAC,MAAM,IAAI,KAAK;QAAE,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IACpD,OAAO,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;AAC9C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,OAAO,CAAC,GAAW,EAAE,KAAa;IAChD,IAAI,GAAG,CAAC,MAAM,IAAI,KAAK;QAAE,OAAO,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC;IAC9D,OAAO,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC;AAC9C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,GAAG,CAAC,gBAAwB,EAAE,KAAa;IACzD,MAAM,CAAC,GAAG,QAAQ,CAAC,gBAAgB,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;IAC7C,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;IAC7C,MAAM,KAAK,GAAG,KAAK,GAAG,MAAM,CAAC;IAC7B,OAAO,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAChD,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAa;IAC5C,IAAI,KAAK,IAAI,SAAS,EAAE,CAAC;QACvB,OAAO,GAAG,CAAC,KAAK,GAAG,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;IAC9C,CAAC;IACD,IAAI,KAAK,IAAI,MAAM,EAAE,CAAC;QACpB,OAAO,GAAG,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;IAC1C,CAAC;IACD,IAAI,KAAK,IAAI,KAAK,EAAE,CAAC;QACnB,OAAO,GAAG,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;IAC1C,CAAC;IACD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAY,EAAE,MAAc;IAC3D,IAAI,IAAI,CAAC,MAAM,IAAI,MAAM;QAAE,OAAO,IAAI,CAAC;IACvC,kCAAkC;IAClC,IAAI,CAAC,GAAG,IAAI;SACT,OAAO,CAAC,gBAAgB,EAAE,EAAE,CAAC;SAC7B,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC;SAC1B,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;IAC7B,IAAI,CAAC,CAAC,MAAM,IAAI,MAAM;QAAE,OAAO,CAAC,CAAC;IACjC,yBAAyB;IACzB,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC;AAC3C,CAAC;AAWD;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAAC,GAAY,EAAE,IAAkC;IACnF,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,EAAE,OAAO,IAAI,EAAE,CAAC;IACrC,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;IAChC,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;IACvB,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,EAAE,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC;IACnD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,IAAI,CAAC;QAAE,OAAO,OAAO,CAAC;IAE5D,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC;IAC/C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;IAC5C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IACpD,MAAM,OAAO,GAAG,WAAW,GAAG,EAAE,CAAC;IAEjC,IAAI,IAAI,GAAG,CAAC;QAAE,OAAO,GAAG,IAAI,KAAK,KAAK,GAAG,CAAC;IAC1C,OAAO,GAAG,KAAK,KAAK,OAAO,GAAG,CAAC;AACjC,CAAC"}
|
|
1
|
+
{"version":3,"file":"format-utils.js","sourceRoot":"","sources":["../../src/lib/format-utils.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/format.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../../src/lib/format.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../../src/lib/format.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAKxF,wBAAgB,eAAe,CAAC,MAAM,EAAE;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE;QACP,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;QACjB,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,OAAO,CAAC,EAAE,eAAe,EAAE,CAAC;IAC5B,MAAM,CAAC,EAAE,eAAe,EAAE,CAAC;IAC3B,KAAK,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;IAC9B,aAAa,CAAC,EAAE,iBAAiB,CAAC;CACnC,GAAG,MAAM,CAgFT"}
|
package/dist/lib/format.js
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Formatting helpers for quota toast output
|
|
3
3
|
*/
|
|
4
|
-
import { bar, clampInt, formatResetCountdown,
|
|
4
|
+
import { bar, clampInt, formatResetCountdown, padLeft, padRight } from "./format-utils.js";
|
|
5
5
|
import { formatQuotaRowsGrouped } from "./toast-format-grouped.js";
|
|
6
|
+
import { renderSessionTokensLines } from "./session-tokens-format.js";
|
|
6
7
|
export function formatQuotaRows(params) {
|
|
7
8
|
if (params.style === "grouped") {
|
|
8
9
|
return formatQuotaRowsGrouped({
|
|
@@ -63,17 +64,11 @@ export function formatQuotaRows(params) {
|
|
|
63
64
|
lines.push(`${err.label}: ${err.message}`);
|
|
64
65
|
}
|
|
65
66
|
// Add session token summary (if data available and non-empty)
|
|
66
|
-
|
|
67
|
+
const tokenLines = renderSessionTokensLines(params.sessionTokens);
|
|
68
|
+
if (tokenLines.length > 0) {
|
|
67
69
|
if (lines.length > 0)
|
|
68
70
|
lines.push("");
|
|
69
|
-
lines.push(
|
|
70
|
-
for (const model of params.sessionTokens.models) {
|
|
71
|
-
// Shorten model name for compact display
|
|
72
|
-
const shortName = shortenModelName(model.modelID, 20);
|
|
73
|
-
const inStr = formatTokenCount(model.input);
|
|
74
|
-
const outStr = formatTokenCount(model.output);
|
|
75
|
-
lines.push(` ${padRight(shortName, 20)} ${padLeft(inStr, 6)} in ${padLeft(outStr, 6)} out`);
|
|
76
|
-
}
|
|
71
|
+
lines.push(...tokenLines);
|
|
77
72
|
}
|
|
78
73
|
return lines.join("\n");
|
|
79
74
|
}
|
package/dist/lib/format.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"format.js","sourceRoot":"","sources":["../../src/lib/format.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,
|
|
1
|
+
{"version":3,"file":"format.js","sourceRoot":"","sources":["../../src/lib/format.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/openai.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openai.d.ts","sourceRoot":"","sources":["../../src/lib/openai.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAY,UAAU,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"openai.d.ts","sourceRoot":"","sources":["../../src/lib/openai.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAY,UAAU,EAAE,MAAM,YAAY,CAAC;AAyFvD,MAAM,MAAM,YAAY,GACpB;IACE,OAAO,EAAE,IAAI,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,EAAE;QACP,MAAM,CAAC,EAAE;YAAE,gBAAgB,EAAE,MAAM,CAAC;YAAC,YAAY,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;QAC7D,MAAM,CAAC,EAAE;YAAE,gBAAgB,EAAE,MAAM,CAAC;YAAC,YAAY,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;QAC7D,UAAU,CAAC,EAAE;YAAE,gBAAgB,EAAE,MAAM,CAAC;YAAC,YAAY,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;KAClE,CAAC;IACF,OAAO,CAAC,EAAE;QACR,UAAU,EAAE,OAAO,CAAC;QACpB,SAAS,EAAE,OAAO,CAAC;QACnB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;KACxB,CAAC;CACH,GACD,UAAU,GACV,IAAI,CAAC;AAiBT,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,YAAY,CAAC,CAmF9D"}
|
package/dist/lib/openai.js
CHANGED
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import { fetchWithTimeout } from "./http.js";
|
|
8
8
|
import { readAuthFile } from "./opencode-auth.js";
|
|
9
|
+
import { clampPercent } from "./format-utils.js";
|
|
9
10
|
function base64UrlDecode(input) {
|
|
10
11
|
const base64 = input.replace(/-/g, "+").replace(/_/g, "/");
|
|
11
12
|
const padLen = (4 - (base64.length % 4)) % 4;
|
|
@@ -29,11 +30,6 @@ function getEmailFromJwt(token) {
|
|
|
29
30
|
function getAccountIdFromJwt(token) {
|
|
30
31
|
return parseJwt(token)?.["https://api.openai.com/auth"]?.chatgpt_account_id ?? null;
|
|
31
32
|
}
|
|
32
|
-
function clampPercent(n) {
|
|
33
|
-
if (!Number.isFinite(n))
|
|
34
|
-
return 0;
|
|
35
|
-
return Math.max(0, Math.min(100, Math.round(n)));
|
|
36
|
-
}
|
|
37
33
|
function remainingPercent(window) {
|
|
38
34
|
return clampPercent(100 - window.used_percent);
|
|
39
35
|
}
|
|
@@ -63,7 +59,8 @@ function derivePlanLabel(planType) {
|
|
|
63
59
|
const OPENAI_USAGE_URL = "https://chatgpt.com/backend-api/wham/usage";
|
|
64
60
|
async function readOpenAIAuth() {
|
|
65
61
|
const auth = await readAuthFile();
|
|
66
|
-
|
|
62
|
+
// Check all keys that openaiProvider.isAvailable() recognizes as OpenAI providers
|
|
63
|
+
const openai = auth?.codex ?? auth?.openai ?? auth?.chatgpt ?? auth?.opencode;
|
|
67
64
|
if (!openai || openai.type !== "oauth" || !openai.access)
|
|
68
65
|
return null;
|
|
69
66
|
return openai;
|
package/dist/lib/openai.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openai.js","sourceRoot":"","sources":["../../src/lib/openai.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"openai.js","sourceRoot":"","sources":["../../src/lib/openai.ts"],"names":[],"mappings":"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"}
|