@slkiser/opencode-quota 3.8.8 → 3.10.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 +256 -70
- package/dist/bin/opencode-quota.d.ts.map +1 -1
- package/dist/bin/opencode-quota.js +4 -1
- package/dist/bin/opencode-quota.js.map +1 -1
- package/dist/lib/cli-show.d.ts.map +1 -1
- package/dist/lib/cli-show.js +94 -3
- package/dist/lib/cli-show.js.map +1 -1
- package/dist/lib/command-handled.d.ts +2 -2
- package/dist/lib/command-handled.d.ts.map +1 -1
- package/dist/lib/command-handled.js +19 -4
- package/dist/lib/command-handled.js.map +1 -1
- package/dist/lib/config.d.ts +1 -1
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +60 -5
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/cursor-pricing.js +1 -1
- package/dist/lib/cursor-pricing.js.map +1 -1
- package/dist/lib/init-installer.d.ts.map +1 -1
- package/dist/lib/init-installer.js +6 -2
- package/dist/lib/init-installer.js.map +1 -1
- package/dist/lib/ollama-cloud-config.d.ts +37 -0
- package/dist/lib/ollama-cloud-config.d.ts.map +1 -0
- package/dist/lib/ollama-cloud-config.js +148 -0
- package/dist/lib/ollama-cloud-config.js.map +1 -0
- package/dist/lib/ollama-cloud.d.ts +17 -0
- package/dist/lib/ollama-cloud.d.ts.map +1 -0
- package/dist/lib/ollama-cloud.js +150 -0
- package/dist/lib/ollama-cloud.js.map +1 -0
- package/dist/lib/opencode-go.d.ts +12 -4
- package/dist/lib/opencode-go.d.ts.map +1 -1
- package/dist/lib/opencode-go.js +90 -7
- package/dist/lib/opencode-go.js.map +1 -1
- package/dist/lib/opencode-sqlite.d.ts.map +1 -1
- package/dist/lib/opencode-sqlite.js +90 -8
- package/dist/lib/opencode-sqlite.js.map +1 -1
- package/dist/lib/provider-metadata.d.ts +1 -1
- package/dist/lib/provider-metadata.d.ts.map +1 -1
- package/dist/lib/provider-metadata.js +9 -10
- package/dist/lib/provider-metadata.js.map +1 -1
- package/dist/lib/quota-command-format.d.ts +2 -0
- package/dist/lib/quota-command-format.d.ts.map +1 -1
- package/dist/lib/quota-command-format.js +4 -3
- package/dist/lib/quota-command-format.js.map +1 -1
- package/dist/lib/quota-dialog-commands.d.ts +43 -0
- package/dist/lib/quota-dialog-commands.d.ts.map +1 -0
- package/dist/lib/quota-dialog-commands.js +677 -0
- package/dist/lib/quota-dialog-commands.js.map +1 -0
- package/dist/lib/quota-export-types.d.ts +69 -0
- package/dist/lib/quota-export-types.d.ts.map +1 -0
- package/dist/lib/quota-export-types.js +9 -0
- package/dist/lib/quota-export-types.js.map +1 -0
- package/dist/lib/quota-export.d.ts +42 -0
- package/dist/lib/quota-export.d.ts.map +1 -0
- package/dist/lib/quota-export.js +130 -0
- package/dist/lib/quota-export.js.map +1 -0
- package/dist/lib/quota-render-data.d.ts +3 -0
- package/dist/lib/quota-render-data.d.ts.map +1 -1
- package/dist/lib/quota-render-data.js +22 -15
- package/dist/lib/quota-render-data.js.map +1 -1
- package/dist/lib/quota-state.d.ts +12 -0
- package/dist/lib/quota-state.d.ts.map +1 -1
- package/dist/lib/quota-state.js +38 -2
- package/dist/lib/quota-state.js.map +1 -1
- package/dist/lib/quota-stats-format.d.ts +5 -0
- package/dist/lib/quota-stats-format.d.ts.map +1 -1
- package/dist/lib/quota-stats-format.js +48 -13
- package/dist/lib/quota-stats-format.js.map +1 -1
- package/dist/lib/quota-status.d.ts.map +1 -1
- package/dist/lib/quota-status.js +0 -17
- package/dist/lib/quota-status.js.map +1 -1
- package/dist/lib/tui-runtime.d.ts +27 -0
- package/dist/lib/tui-runtime.d.ts.map +1 -1
- package/dist/lib/tui-runtime.js +104 -27
- package/dist/lib/tui-runtime.js.map +1 -1
- package/dist/lib/types.d.ts +35 -7
- 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 +8 -1
- package/dist/lib/zai.js.map +1 -1
- package/dist/plugin.d.ts.map +1 -1
- package/dist/plugin.js +6 -476
- package/dist/plugin.js.map +1 -1
- package/dist/providers/cursor.js +1 -1
- package/dist/providers/cursor.js.map +1 -1
- package/dist/providers/ollama-cloud.d.ts +9 -0
- package/dist/providers/ollama-cloud.d.ts.map +1 -0
- package/dist/providers/ollama-cloud.js +77 -0
- package/dist/providers/ollama-cloud.js.map +1 -0
- package/dist/providers/registry.js +2 -2
- package/dist/providers/registry.js.map +1 -1
- package/dist/tui.d.ts.map +1 -1
- package/dist/tui.tsx +252 -1
- package/package.json +5 -2
- package/dist/lib/crof-config.d.ts +0 -15
- package/dist/lib/crof-config.d.ts.map +0 -1
- package/dist/lib/crof-config.js +0 -33
- package/dist/lib/crof-config.js.map +0 -1
- package/dist/lib/crof.d.ts +0 -13
- package/dist/lib/crof.d.ts.map +0 -1
- package/dist/lib/crof.js +0 -70
- package/dist/lib/crof.js.map +0 -1
- package/dist/providers/crof.d.ts +0 -6
- package/dist/providers/crof.d.ts.map +0 -1
- package/dist/providers/crof.js +0 -56
- package/dist/providers/crof.js.map +0 -1
package/dist/lib/opencode-go.js
CHANGED
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* OpenCode Go dashboard scraper.
|
|
3
3
|
*
|
|
4
|
-
* Fetches the OpenCode Go workspace page and parses
|
|
5
|
-
*
|
|
6
|
-
*
|
|
4
|
+
* Fetches the OpenCode Go workspace page and parses usage data from two
|
|
5
|
+
* possible formats:
|
|
6
|
+
* 1. SolidJS SSR hydration output (`$R[\d+]={...usagePercent...resetInSec...}`)
|
|
7
|
+
* 2. HTML with `data-slot` attributes (newer format)
|
|
8
|
+
*
|
|
9
|
+
* The scraper tries SolidJS SSR first, then falls back to data-slot parsing.
|
|
7
10
|
*/
|
|
8
11
|
import { fetchWithTimeout } from "./http.js";
|
|
9
12
|
import { sanitizeDisplayText } from "./display-sanitize.js";
|
|
@@ -41,6 +44,78 @@ function parseWindowUsage(html, rePctFirst, reResetFirst) {
|
|
|
41
44
|
}
|
|
42
45
|
return null;
|
|
43
46
|
}
|
|
47
|
+
/**
|
|
48
|
+
* Parse human-readable time strings like "1 hour 56 minutes", "6 days 2 hours", "26 days 17 hours"
|
|
49
|
+
* into seconds.
|
|
50
|
+
*/
|
|
51
|
+
function parseHumanReadableTime(timeStr) {
|
|
52
|
+
const normalized = timeStr.toLowerCase().trim().replace(/\s+/g, " ");
|
|
53
|
+
if (["reset-now", "reset now", "now", "resets now"].includes(normalized)) {
|
|
54
|
+
return 0;
|
|
55
|
+
}
|
|
56
|
+
let totalSeconds = 0;
|
|
57
|
+
// Match patterns like "X days", "X hours", "X minutes", "X seconds"
|
|
58
|
+
const dayMatch = normalized.match(/(\d+(?:\.\d+)?)\s*days?/);
|
|
59
|
+
const hourMatch = normalized.match(/(\d+(?:\.\d+)?)\s*hours?/);
|
|
60
|
+
const minuteMatch = normalized.match(/(\d+(?:\.\d+)?)\s*minutes?/);
|
|
61
|
+
const secondMatch = normalized.match(/(\d+(?:\.\d+)?)\s*seconds?/);
|
|
62
|
+
const hasDuration = Boolean(dayMatch || hourMatch || minuteMatch || secondMatch);
|
|
63
|
+
if (dayMatch)
|
|
64
|
+
totalSeconds += Number(dayMatch[1]) * 86400;
|
|
65
|
+
if (hourMatch)
|
|
66
|
+
totalSeconds += Number(hourMatch[1]) * 3600;
|
|
67
|
+
if (minuteMatch)
|
|
68
|
+
totalSeconds += Number(minuteMatch[1]) * 60;
|
|
69
|
+
if (secondMatch)
|
|
70
|
+
totalSeconds += Number(secondMatch[1]);
|
|
71
|
+
return hasDuration ? totalSeconds : null;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Parse the newer data-slot HTML format.
|
|
75
|
+
* Returns a record of window names to their usage data.
|
|
76
|
+
*/
|
|
77
|
+
function parseDataSlotFormat(html) {
|
|
78
|
+
const result = {};
|
|
79
|
+
const items = html.split(/data-slot="usage-item"/);
|
|
80
|
+
for (let i = 1; i < items.length; i++) {
|
|
81
|
+
const content = items[i];
|
|
82
|
+
// Extract the label (Rolling Usage, Weekly Usage, Monthly Usage)
|
|
83
|
+
const labelMatch = content.match(/data-slot="usage-label">([^<]+)</);
|
|
84
|
+
if (!labelMatch)
|
|
85
|
+
continue;
|
|
86
|
+
const label = labelMatch[1].trim().toLowerCase();
|
|
87
|
+
// Extract usage percentage - get the number after data-slot="usage-value">
|
|
88
|
+
const usageMatch = content.match(/data-slot="usage-value">[^0-9]*(\d+(?:\.\d+)?)/);
|
|
89
|
+
if (!usageMatch)
|
|
90
|
+
continue;
|
|
91
|
+
const usagePercent = Number(usageMatch[1]);
|
|
92
|
+
// Extract reset time - get content between reset-time/reset-now and </span>
|
|
93
|
+
const resetMatch = content.match(/data-slot="(reset-time|reset-now)">([\s\S]*?)<\/span>/);
|
|
94
|
+
if (!resetMatch)
|
|
95
|
+
continue;
|
|
96
|
+
// Clean up SolidJS comments and "Resets in" prefix
|
|
97
|
+
const resetContent = resetMatch[2]
|
|
98
|
+
.replace(/<!--\$-->/g, "")
|
|
99
|
+
.replace(/<!--\/-->/g, "")
|
|
100
|
+
.replace(/Resets?\s*in\s*/i, "")
|
|
101
|
+
.trim();
|
|
102
|
+
const resetInSec = resetMatch[1] === "reset-now" ? 0 : parseHumanReadableTime(resetContent);
|
|
103
|
+
if (!Number.isFinite(usagePercent) || resetInSec === null || !Number.isFinite(resetInSec))
|
|
104
|
+
continue;
|
|
105
|
+
// Map label to window key
|
|
106
|
+
let windowKey = null;
|
|
107
|
+
if (label.includes("rolling"))
|
|
108
|
+
windowKey = "rolling";
|
|
109
|
+
else if (label.includes("weekly"))
|
|
110
|
+
windowKey = "weekly";
|
|
111
|
+
else if (label.includes("monthly"))
|
|
112
|
+
windowKey = "monthly";
|
|
113
|
+
if (windowKey) {
|
|
114
|
+
result[windowKey] = { usagePercent, resetInSec };
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
return result;
|
|
118
|
+
}
|
|
44
119
|
function sanitizeMessage(text, maxLength = 120) {
|
|
45
120
|
const sanitized = sanitizeDisplayText(text).replace(/\s+/g, " ").trim();
|
|
46
121
|
return (sanitized || "unknown").slice(0, maxLength);
|
|
@@ -74,9 +149,17 @@ export async function queryOpenCodeGoQuota(workspaceId, authCookie, options = {}
|
|
|
74
149
|
};
|
|
75
150
|
}
|
|
76
151
|
const html = await response.text();
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
152
|
+
// Try SolidJS SSR format first (more reliable when present)
|
|
153
|
+
let rolling = parseWindowUsage(html, RE_ROLLING_PCT_FIRST, RE_ROLLING_RESET_FIRST);
|
|
154
|
+
let weekly = parseWindowUsage(html, RE_WEEKLY_PCT_FIRST, RE_WEEKLY_RESET_FIRST);
|
|
155
|
+
let monthly = parseWindowUsage(html, RE_MONTHLY_PCT_FIRST, RE_MONTHLY_RESET_FIRST);
|
|
156
|
+
// Fall back to data-slot HTML format if SSR found nothing
|
|
157
|
+
if (!rolling && !weekly && !monthly) {
|
|
158
|
+
const dataSlotResult = parseDataSlotFormat(html);
|
|
159
|
+
rolling = dataSlotResult.rolling ?? null;
|
|
160
|
+
weekly = dataSlotResult.weekly ?? null;
|
|
161
|
+
monthly = dataSlotResult.monthly ?? null;
|
|
162
|
+
}
|
|
80
163
|
if (!rolling && !weekly && !monthly) {
|
|
81
164
|
return {
|
|
82
165
|
success: false,
|
|
@@ -98,5 +181,5 @@ export async function queryOpenCodeGoQuota(workspaceId, authCookie, options = {}
|
|
|
98
181
|
};
|
|
99
182
|
}
|
|
100
183
|
}
|
|
101
|
-
export { parseWindowUsage as _parseWindowUsage };
|
|
184
|
+
export { parseWindowUsage as _parseWindowUsage, parseDataSlotFormat as _parseDataSlotFormat };
|
|
102
185
|
//# sourceMappingURL=opencode-go.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"opencode-go.js","sourceRoot":"","sources":["../../src/lib/opencode-go.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"opencode-go.js","sourceRoot":"","sources":["../../src/lib/opencode-go.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"opencode-sqlite.d.ts","sourceRoot":"","sources":["../../src/lib/opencode-sqlite.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,UAAU;IACzB,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE,CAAC;IACvD,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC;IAC5D,KAAK,IAAI,IAAI,CAAC;CACf;
|
|
1
|
+
{"version":3,"file":"opencode-sqlite.d.ts","sourceRoot":"","sources":["../../src/lib/opencode-sqlite.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,UAAU;IACzB,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE,CAAC;IACvD,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC;IAC5D,KAAK,IAAI,IAAI,CAAC;CACf;AAkLD,wBAAsB,0BAA0B,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAMpF"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
function toParams(params) {
|
|
2
2
|
return Array.isArray(params) ? params : [];
|
|
3
3
|
}
|
|
4
|
-
function
|
|
4
|
+
function runBunPragma(db, sql) {
|
|
5
5
|
try {
|
|
6
6
|
db.query(sql).run();
|
|
7
7
|
}
|
|
@@ -9,23 +9,58 @@ function runPragma(db, sql) {
|
|
|
9
9
|
// ignore
|
|
10
10
|
}
|
|
11
11
|
}
|
|
12
|
-
|
|
12
|
+
function runPreparedPragma(db, sql) {
|
|
13
|
+
try {
|
|
14
|
+
db.prepare(sql).run();
|
|
15
|
+
}
|
|
16
|
+
catch {
|
|
17
|
+
// ignore
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
function runNodePragma(db, sql) {
|
|
21
|
+
try {
|
|
22
|
+
db.exec(sql);
|
|
23
|
+
}
|
|
24
|
+
catch {
|
|
25
|
+
// ignore
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
function createPreparedSqliteConn(db) {
|
|
29
|
+
return {
|
|
30
|
+
all(sql, params) {
|
|
31
|
+
const stmt = db.prepare(sql);
|
|
32
|
+
return stmt.all(...toParams(params));
|
|
33
|
+
},
|
|
34
|
+
get(sql, params) {
|
|
35
|
+
const stmt = db.prepare(sql);
|
|
36
|
+
const row = stmt.get(...toParams(params));
|
|
37
|
+
return row ?? null;
|
|
38
|
+
},
|
|
39
|
+
close() {
|
|
40
|
+
try {
|
|
41
|
+
db.close();
|
|
42
|
+
}
|
|
43
|
+
catch {
|
|
44
|
+
// ignore
|
|
45
|
+
}
|
|
46
|
+
},
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
async function openWithBunSqlite(dbPath) {
|
|
13
50
|
const mod = (await import("bun:sqlite"));
|
|
14
51
|
const db = new mod.Database(dbPath, { readonly: true });
|
|
15
52
|
// Keep reads deterministic and avoid accidental writes.
|
|
16
|
-
|
|
53
|
+
runBunPragma(db, "PRAGMA query_only = ON;");
|
|
17
54
|
// Avoid transient SQLITE_BUSY errors (WAL).
|
|
18
|
-
|
|
55
|
+
runBunPragma(db, "PRAGMA busy_timeout = 5000;");
|
|
19
56
|
return {
|
|
20
57
|
all(sql, params) {
|
|
21
58
|
const stmt = db.query(sql);
|
|
22
|
-
|
|
23
|
-
return (p.length ? stmt.all(...p) : stmt.all());
|
|
59
|
+
return stmt.all(...toParams(params));
|
|
24
60
|
},
|
|
25
61
|
get(sql, params) {
|
|
26
62
|
const stmt = db.query(sql);
|
|
27
|
-
const
|
|
28
|
-
const row = (p.length ? stmt.get(...p) : stmt.get());
|
|
63
|
+
const row = stmt.get(...toParams(params));
|
|
29
64
|
return row ?? null;
|
|
30
65
|
},
|
|
31
66
|
close() {
|
|
@@ -38,4 +73,51 @@ export async function openOpenCodeSqliteReadOnly(dbPath) {
|
|
|
38
73
|
},
|
|
39
74
|
};
|
|
40
75
|
}
|
|
76
|
+
async function importNodeSqlite() {
|
|
77
|
+
try {
|
|
78
|
+
return (await import("node:sqlite"));
|
|
79
|
+
}
|
|
80
|
+
catch {
|
|
81
|
+
return null;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
async function openWithNodeSqlite(dbPath, mod) {
|
|
85
|
+
const db = new mod.DatabaseSync(dbPath, {
|
|
86
|
+
readOnly: true,
|
|
87
|
+
enableForeignKeyConstraints: true,
|
|
88
|
+
open: true,
|
|
89
|
+
});
|
|
90
|
+
// Keep reads deterministic and avoid accidental writes.
|
|
91
|
+
runNodePragma(db, "PRAGMA query_only = ON;");
|
|
92
|
+
// Avoid transient SQLITE_BUSY errors (WAL).
|
|
93
|
+
runNodePragma(db, "PRAGMA busy_timeout = 5000;");
|
|
94
|
+
return createPreparedSqliteConn(db);
|
|
95
|
+
}
|
|
96
|
+
async function openWithBetterSqlite3(dbPath) {
|
|
97
|
+
const mod = (await import("better-sqlite3"));
|
|
98
|
+
const db = new mod.default(dbPath, { readonly: true });
|
|
99
|
+
// Keep reads deterministic and avoid accidental writes.
|
|
100
|
+
runPreparedPragma(db, "PRAGMA query_only = ON;");
|
|
101
|
+
// Avoid transient SQLITE_BUSY errors (WAL).
|
|
102
|
+
runPreparedPragma(db, "PRAGMA busy_timeout = 5000;");
|
|
103
|
+
return createPreparedSqliteConn(db);
|
|
104
|
+
}
|
|
105
|
+
async function openWithNodeRuntimeSqlite(dbPath) {
|
|
106
|
+
const nodeSqlite = await importNodeSqlite();
|
|
107
|
+
if (nodeSqlite) {
|
|
108
|
+
return openWithNodeSqlite(dbPath, nodeSqlite);
|
|
109
|
+
}
|
|
110
|
+
try {
|
|
111
|
+
return await openWithBetterSqlite3(dbPath);
|
|
112
|
+
}
|
|
113
|
+
catch (cause) {
|
|
114
|
+
throw new Error("OpenCode SQLite backend unavailable in this Node runtime; node:sqlite or optional better-sqlite3 is required for local history reads.", { cause });
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
export async function openOpenCodeSqliteReadOnly(dbPath) {
|
|
118
|
+
if (typeof globalThis === "object" && "Bun" in globalThis) {
|
|
119
|
+
return openWithBunSqlite(dbPath);
|
|
120
|
+
}
|
|
121
|
+
return openWithNodeRuntimeSqlite(dbPath);
|
|
122
|
+
}
|
|
41
123
|
//# sourceMappingURL=opencode-sqlite.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"opencode-sqlite.js","sourceRoot":"","sources":["../../src/lib/opencode-sqlite.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"opencode-sqlite.js","sourceRoot":"","sources":["../../src/lib/opencode-sqlite.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export type CanonicalQuotaProviderId = "anthropic" | "copilot" | "openai" | "cursor" | "qwen-code" | "alibaba-coding-plan" | "synthetic" | "chutes" | "
|
|
1
|
+
export type CanonicalQuotaProviderId = "anthropic" | "copilot" | "openai" | "cursor" | "qwen-code" | "alibaba-coding-plan" | "synthetic" | "chutes" | "google-antigravity" | "google-gemini-cli" | "zai" | "zhipu" | "nanogpt" | "minimax-coding-plan" | "minimax-china-coding-plan" | "kimi-for-coding" | "deepseek" | "opencode-go" | "ollama-cloud";
|
|
2
2
|
export type QuotaProviderAutoSetup = "yes" | "usually" | "manual_env_config" | "needs_quick_setup";
|
|
3
3
|
export type QuotaProviderAuthentication = "opencode_auth_oauth_token" | "opencode_auth_api_key" | "companion_auth_oauth_token" | "local_cli_auth" | "github_oauth_or_pat" | "external_api_key" | "state_only";
|
|
4
4
|
export type QuotaProviderAuthFallback = "env_api_key" | "global_opencode_config";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider-metadata.d.ts","sourceRoot":"","sources":["../../src/lib/provider-metadata.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,wBAAwB,GAChC,WAAW,GACX,SAAS,GACT,QAAQ,GACR,QAAQ,GACR,WAAW,GACX,qBAAqB,GACrB,WAAW,GACX,QAAQ,GACR,
|
|
1
|
+
{"version":3,"file":"provider-metadata.d.ts","sourceRoot":"","sources":["../../src/lib/provider-metadata.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,wBAAwB,GAChC,WAAW,GACX,SAAS,GACT,QAAQ,GACR,QAAQ,GACR,WAAW,GACX,qBAAqB,GACrB,WAAW,GACX,QAAQ,GACR,oBAAoB,GACpB,mBAAmB,GACnB,KAAK,GACL,OAAO,GACP,SAAS,GACT,qBAAqB,GACrB,2BAA2B,GAC3B,iBAAiB,GACjB,UAAU,GACV,aAAa,GACb,cAAc,CAAC;AAEnB,MAAM,MAAM,sBAAsB,GAAG,KAAK,GAAG,SAAS,GAAG,mBAAmB,GAAG,mBAAmB,CAAC;AAEnG,MAAM,MAAM,2BAA2B,GACnC,2BAA2B,GAC3B,uBAAuB,GACvB,4BAA4B,GAC5B,gBAAgB,GAChB,qBAAqB,GACrB,kBAAkB,GAClB,YAAY,CAAC;AAEjB,MAAM,MAAM,yBAAyB,GAAG,aAAa,GAAG,wBAAwB,CAAC;AAEjF,MAAM,MAAM,wBAAwB,GAChC,YAAY,GACZ,kBAAkB,GAClB,0BAA0B,GAC1B,kBAAkB,CAAC;AAEvB,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,wBAAwB,CAAC;IAC7B,SAAS,EAAE,sBAAsB,CAAC;IAClC,cAAc,EAAE,2BAA2B,CAAC;IAC5C,aAAa,CAAC,EAAE,yBAAyB,EAAE,CAAC;IAC5C,KAAK,EAAE,wBAAwB,CAAC;IAChC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,uBAAuB,GAAG,QAAQ,CAAC,MAAM,CAAC,wBAAwB,EAAE,SAAS,MAAM,EAAE,CAAC,CAAC,CAAC;AAEpG,eAAO,MAAM,qBAAqB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAsBlE,CAAC;AAEF,eAAO,MAAM,0BAA0B,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CA4BvE,CAAC;AAEF,eAAO,MAAM,0BAA0B,EAAE,uBA+BxC,CAAC;AAQF,eAAO,MAAM,qBAAqB,EAAE,SAAS,kBAAkB,EAuI9D,CAAC;AAMF,wBAAgB,wBAAwB,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAG3D;AAED,wBAAgB,qBAAqB,CAAC,EAAE,EAAE,MAAM,GAAG,kBAAkB,GAAG,SAAS,CAGhF;AAED,wBAAgB,4BAA4B,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAG/D;AAED,wBAAgB,0BAA0B,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,CAOxE;AAED,wBAAgB,0BAA0B,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAE9D"}
|
|
@@ -6,7 +6,6 @@ export const QUOTA_PROVIDER_LABELS = {
|
|
|
6
6
|
"google-gemini-cli": "Gemini CLI",
|
|
7
7
|
synthetic: "Synthetic",
|
|
8
8
|
chutes: "Chutes",
|
|
9
|
-
crof: "Crof",
|
|
10
9
|
cursor: "Cursor",
|
|
11
10
|
"qwen-code": "Qwen",
|
|
12
11
|
"alibaba-coding-plan": "Alibaba Coding Plan",
|
|
@@ -20,6 +19,7 @@ export const QUOTA_PROVIDER_LABELS = {
|
|
|
20
19
|
"kimi-code": "Kimi Code",
|
|
21
20
|
deepseek: "DeepSeek",
|
|
22
21
|
"opencode-go": "OpenCode Go",
|
|
22
|
+
"ollama-cloud": "Ollama Cloud",
|
|
23
23
|
};
|
|
24
24
|
export const QUOTA_PROVIDER_ID_SYNONYMS = {
|
|
25
25
|
"github-copilot": "copilot",
|
|
@@ -59,7 +59,6 @@ export const QUOTA_PROVIDER_RUNTIME_IDS = {
|
|
|
59
59
|
"alibaba-coding-plan": ["alibaba-coding-plan"],
|
|
60
60
|
synthetic: ["synthetic"],
|
|
61
61
|
chutes: ["chutes", "chutes-ai"],
|
|
62
|
-
crof: ["crof"],
|
|
63
62
|
"google-antigravity": ["google-antigravity", "google", "antigravity"],
|
|
64
63
|
"google-gemini-cli": [
|
|
65
64
|
"google-gemini-cli",
|
|
@@ -81,6 +80,7 @@ export const QUOTA_PROVIDER_RUNTIME_IDS = {
|
|
|
81
80
|
"kimi-for-coding": ["kimi-for-coding", "kimi", "kimi-code"],
|
|
82
81
|
deepseek: ["deepseek"],
|
|
83
82
|
"opencode-go": ["opencode-go"],
|
|
83
|
+
"ollama-cloud": ["ollama-cloud"],
|
|
84
84
|
};
|
|
85
85
|
const LIVE_LOCAL_USAGE_PROVIDER_ID_SET = new Set([
|
|
86
86
|
"qwen-code",
|
|
@@ -144,14 +144,6 @@ export const QUOTA_PROVIDER_SHAPES = [
|
|
|
144
144
|
authFallbacks: ["env_api_key", "global_opencode_config"],
|
|
145
145
|
quota: "remote_api",
|
|
146
146
|
},
|
|
147
|
-
{
|
|
148
|
-
id: "crof",
|
|
149
|
-
autoSetup: "manual_env_config",
|
|
150
|
-
authentication: "external_api_key",
|
|
151
|
-
authFallbacks: ["env_api_key", "global_opencode_config"],
|
|
152
|
-
quota: "remote_api",
|
|
153
|
-
notes: "Requires CROF_API_KEY, CROFAI_API_KEY, or trusted user/global config; not available through OpenCode /connect",
|
|
154
|
-
},
|
|
155
147
|
{
|
|
156
148
|
id: "google-antigravity",
|
|
157
149
|
autoSetup: "needs_quick_setup",
|
|
@@ -223,6 +215,13 @@ export const QUOTA_PROVIDER_SHAPES = [
|
|
|
223
215
|
quickSetupAnchor: "opencode-go",
|
|
224
216
|
notes: "Scrapes the OpenCode Go dashboard; requires workspaceId and authCookie",
|
|
225
217
|
},
|
|
218
|
+
{
|
|
219
|
+
id: "ollama-cloud",
|
|
220
|
+
autoSetup: "manual_env_config",
|
|
221
|
+
authentication: "state_only",
|
|
222
|
+
quota: "remote_api",
|
|
223
|
+
notes: "Scrapes the Ollama Cloud settings page; requires __Secure-session cookie via OLLAMA_USAGE_COOKIE env or ollama-usage config",
|
|
224
|
+
},
|
|
226
225
|
];
|
|
227
226
|
const QUOTA_PROVIDER_SHAPES_BY_ID = Object.fromEntries(QUOTA_PROVIDER_SHAPES.map((shape) => [shape.id, shape]));
|
|
228
227
|
export function normalizeQuotaProviderId(id) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider-metadata.js","sourceRoot":"","sources":["../../src/lib/provider-metadata.ts"],"names":[],"mappings":"AAoDA,MAAM,CAAC,MAAM,qBAAqB,GAAqC;IACrE,SAAS,EAAE,WAAW;IACtB,MAAM,EAAE,QAAQ;IAChB,OAAO,EAAE,SAAS;IAClB,oBAAoB,EAAE,QAAQ;IAC9B,mBAAmB,EAAE,YAAY;IACjC,SAAS,EAAE,WAAW;IACtB,MAAM,EAAE,QAAQ;IAChB,
|
|
1
|
+
{"version":3,"file":"provider-metadata.js","sourceRoot":"","sources":["../../src/lib/provider-metadata.ts"],"names":[],"mappings":"AAoDA,MAAM,CAAC,MAAM,qBAAqB,GAAqC;IACrE,SAAS,EAAE,WAAW;IACtB,MAAM,EAAE,QAAQ;IAChB,OAAO,EAAE,SAAS;IAClB,oBAAoB,EAAE,QAAQ;IAC9B,mBAAmB,EAAE,YAAY;IACjC,SAAS,EAAE,WAAW;IACtB,MAAM,EAAE,QAAQ;IAChB,MAAM,EAAE,QAAQ;IAChB,WAAW,EAAE,MAAM;IACnB,qBAAqB,EAAE,qBAAqB;IAC5C,GAAG,EAAE,MAAM;IACX,KAAK,EAAE,OAAO;IACd,OAAO,EAAE,SAAS;IAClB,qBAAqB,EAAE,qBAAqB;IAC5C,2BAA2B,EAAE,0BAA0B;IACvD,wBAAwB,EAAE,0BAA0B;IACpD,iBAAiB,EAAE,WAAW;IAC9B,WAAW,EAAE,WAAW;IACxB,QAAQ,EAAE,UAAU;IACpB,aAAa,EAAE,aAAa;IAC5B,cAAc,EAAE,cAAc;CAC/B,CAAC;AAEF,MAAM,CAAC,MAAM,0BAA0B,GAAqC;IAC1E,gBAAgB,EAAE,SAAS;IAC3B,cAAc,EAAE,SAAS;IACzB,qBAAqB,EAAE,SAAS;IAChC,YAAY,EAAE,QAAQ;IACtB,aAAa,EAAE,QAAQ;IACvB,wBAAwB,EAAE,QAAQ;IAClC,MAAM,EAAE,WAAW;IACnB,aAAa,EAAE,WAAW;IAC1B,IAAI,EAAE,WAAW;IACjB,OAAO,EAAE,qBAAqB;IAC9B,UAAU,EAAE,SAAS;IACrB,OAAO,EAAE,qBAAqB;IAC9B,YAAY,EAAE,2BAA2B;IACzC,eAAe,EAAE,2BAA2B;IAC5C,wBAAwB,EAAE,2BAA2B;IACrD,IAAI,EAAE,iBAAiB;IACvB,eAAe,EAAE,iBAAiB;IAClC,WAAW,EAAE,iBAAiB;IAC9B,WAAW,EAAE,UAAU;IACvB,0BAA0B,EAAE,aAAa;IACzC,YAAY,EAAE,mBAAmB;IACjC,eAAe,EAAE,mBAAmB;IACpC,sBAAsB,EAAE,mBAAmB;IAC3C,MAAM,EAAE,mBAAmB;IAC3B,iBAAiB,EAAE,OAAO;IAC1B,mBAAmB,EAAE,OAAO;IAC5B,qBAAqB,EAAE,OAAO;CAC/B,CAAC;AAEF,MAAM,CAAC,MAAM,0BAA0B,GAA4B;IACjE,SAAS,EAAE,CAAC,WAAW,CAAC;IACxB,OAAO,EAAE,CAAC,SAAS,EAAE,gBAAgB,EAAE,cAAc,EAAE,qBAAqB,CAAC;IAC7E,MAAM,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,OAAO,CAAC;IACtC,MAAM,EAAE,CAAC,QAAQ,EAAE,YAAY,CAAC;IAChC,WAAW,EAAE,CAAC,WAAW,CAAC;IAC1B,qBAAqB,EAAE,CAAC,qBAAqB,CAAC;IAC9C,SAAS,EAAE,CAAC,WAAW,CAAC;IACxB,MAAM,EAAE,CAAC,QAAQ,EAAE,WAAW,CAAC;IAC/B,oBAAoB,EAAE,CAAC,oBAAoB,EAAE,QAAQ,EAAE,aAAa,CAAC;IACrE,mBAAmB,EAAE;QACnB,mBAAmB;QACnB,YAAY;QACZ,QAAQ;QACR,sBAAsB;QACtB,QAAQ;KACT;IACD,GAAG,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,iBAAiB,CAAC;IACtC,KAAK,EAAE,CAAC,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,qBAAqB,CAAC;IAC/E,OAAO,EAAE,CAAC,SAAS,EAAE,UAAU,CAAC;IAChC,qBAAqB,EAAE,CAAC,qBAAqB,EAAE,SAAS,CAAC;IACzD,2BAA2B,EAAE;QAC3B,2BAA2B;QAC3B,wBAAwB;QACxB,YAAY;QACZ,eAAe;KAChB;IACD,iBAAiB,EAAE,CAAC,iBAAiB,EAAE,MAAM,EAAE,WAAW,CAAC;IAC3D,QAAQ,EAAE,CAAC,UAAU,CAAC;IACtB,aAAa,EAAE,CAAC,aAAa,CAAC;IAC9B,cAAc,EAAE,CAAC,cAAc,CAAC;CACjC,CAAC;AAEF,MAAM,gCAAgC,GAAG,IAAI,GAAG,CAAS;IACvD,WAAW;IACX,qBAAqB;IACrB,QAAQ;CACT,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,qBAAqB,GAAkC;IAClE;QACE,EAAE,EAAE,WAAW;QACf,SAAS,EAAE,mBAAmB;QAC9B,cAAc,EAAE,gBAAgB;QAChC,KAAK,EAAE,kBAAkB;QACzB,gBAAgB,EAAE,kBAAkB;KACrC;IACD;QACE,EAAE,EAAE,SAAS;QACb,SAAS,EAAE,SAAS;QACpB,cAAc,EAAE,qBAAqB;QACrC,KAAK,EAAE,YAAY;QACnB,KAAK,EAAE,kDAAkD;KAC1D;IACD;QACE,EAAE,EAAE,QAAQ;QACZ,SAAS,EAAE,KAAK;QAChB,cAAc,EAAE,2BAA2B;QAC3C,KAAK,EAAE,YAAY;KACpB;IACD;QACE,EAAE,EAAE,QAAQ;QACZ,SAAS,EAAE,mBAAmB;QAC9B,cAAc,EAAE,4BAA4B;QAC5C,KAAK,EAAE,0BAA0B;QACjC,gBAAgB,EAAE,QAAQ;QAC1B,KAAK,EAAE,kEAAkE;KAC1E;IACD;QACE,EAAE,EAAE,WAAW;QACf,SAAS,EAAE,mBAAmB;QAC9B,cAAc,EAAE,4BAA4B;QAC5C,KAAK,EAAE,kBAAkB;QACzB,gBAAgB,EAAE,WAAW;KAC9B;IACD;QACE,EAAE,EAAE,qBAAqB;QACzB,SAAS,EAAE,KAAK;QAChB,cAAc,EAAE,uBAAuB;QACvC,aAAa,EAAE,CAAC,aAAa,EAAE,wBAAwB,CAAC;QACxD,KAAK,EAAE,kBAAkB;KAC1B;IACD;QACE,EAAE,EAAE,WAAW;QACf,SAAS,EAAE,KAAK;QAChB,cAAc,EAAE,uBAAuB;QACvC,aAAa,EAAE,CAAC,aAAa,EAAE,wBAAwB,CAAC;QACxD,KAAK,EAAE,YAAY;KACpB;IACD;QACE,EAAE,EAAE,QAAQ;QACZ,SAAS,EAAE,SAAS;QACpB,cAAc,EAAE,uBAAuB;QACvC,aAAa,EAAE,CAAC,aAAa,EAAE,wBAAwB,CAAC;QACxD,KAAK,EAAE,YAAY;KACpB;IACD;QACE,EAAE,EAAE,oBAAoB;QACxB,SAAS,EAAE,mBAAmB;QAC9B,cAAc,EAAE,4BAA4B;QAC5C,KAAK,EAAE,YAAY;QACnB,gBAAgB,EAAE,oBAAoB;KACvC;IACD;QACE,EAAE,EAAE,mBAAmB;QACvB,SAAS,EAAE,mBAAmB;QAC9B,cAAc,EAAE,4BAA4B;QAC5C,KAAK,EAAE,YAAY;QACnB,gBAAgB,EAAE,YAAY;KAC/B;IACD;QACE,EAAE,EAAE,KAAK;QACT,SAAS,EAAE,KAAK;QAChB,cAAc,EAAE,uBAAuB;QACvC,aAAa,EAAE,CAAC,aAAa,EAAE,wBAAwB,CAAC;QACxD,KAAK,EAAE,YAAY;KACpB;IACD;QACE,EAAE,EAAE,OAAO;QACX,SAAS,EAAE,KAAK;QAChB,cAAc,EAAE,uBAAuB;QACvC,aAAa,EAAE,CAAC,aAAa,EAAE,wBAAwB,CAAC;QACxD,KAAK,EAAE,YAAY;KACpB;IACD;QACE,EAAE,EAAE,SAAS;QACb,SAAS,EAAE,SAAS;QACpB,cAAc,EAAE,uBAAuB;QACvC,aAAa,EAAE,CAAC,aAAa,EAAE,wBAAwB,CAAC;QACxD,KAAK,EAAE,YAAY;KACpB;IACD;QACE,EAAE,EAAE,qBAAqB;QACzB,SAAS,EAAE,KAAK;QAChB,cAAc,EAAE,uBAAuB;QACvC,aAAa,EAAE,CAAC,aAAa,EAAE,wBAAwB,CAAC;QACxD,KAAK,EAAE,YAAY;KACpB;IACD;QACE,EAAE,EAAE,2BAA2B;QAC/B,SAAS,EAAE,KAAK;QAChB,cAAc,EAAE,uBAAuB;QACvC,aAAa,EAAE,CAAC,aAAa,EAAE,wBAAwB,CAAC;QACxD,KAAK,EAAE,YAAY;KACpB;IACD;QACE,EAAE,EAAE,iBAAiB;QACrB,SAAS,EAAE,KAAK;QAChB,cAAc,EAAE,uBAAuB;QACvC,aAAa,EAAE,CAAC,aAAa,EAAE,wBAAwB,CAAC;QACxD,KAAK,EAAE,YAAY;KACpB;IACD;QACE,EAAE,EAAE,UAAU;QACd,SAAS,EAAE,KAAK;QAChB,cAAc,EAAE,uBAAuB;QACvC,aAAa,EAAE,CAAC,aAAa,EAAE,wBAAwB,CAAC;QACxD,KAAK,EAAE,YAAY;KACpB;IACD;QACE,EAAE,EAAE,aAAa;QACjB,SAAS,EAAE,mBAAmB;QAC9B,cAAc,EAAE,YAAY;QAC5B,KAAK,EAAE,YAAY;QACnB,gBAAgB,EAAE,aAAa;QAC/B,KAAK,EAAE,wEAAwE;KAChF;IACD;QACE,EAAE,EAAE,cAAc;QAClB,SAAS,EAAE,mBAAmB;QAC9B,cAAc,EAAE,YAAY;QAC5B,KAAK,EAAE,YAAY;QACnB,KAAK,EAAE,6HAA6H;KACrI;CACF,CAAC;AAEF,MAAM,2BAA2B,GAE7B,MAAM,CAAC,WAAW,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;AAEhF,MAAM,UAAU,wBAAwB,CAAC,EAAU;IACjD,MAAM,UAAU,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC3C,OAAO,0BAA0B,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC;AAC9D,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,EAAU;IAC9C,MAAM,UAAU,GAAG,wBAAwB,CAAC,EAAE,CAA6B,CAAC;IAC5E,OAAO,2BAA2B,CAAC,UAAU,CAAC,CAAC;AACjD,CAAC;AAED,MAAM,UAAU,4BAA4B,CAAC,EAAU;IACrD,MAAM,UAAU,GAAG,wBAAwB,CAAC,EAAE,CAAC,CAAC;IAChD,OAAO,qBAAqB,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;AACjD,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,EAAU;IACnD,MAAM,KAAK,GAAG,qBAAqB,CAAC,EAAE,CAAC,CAAC;IACxC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,0BAA0B,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC5D,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,EAAU;IACnD,OAAO,gCAAgC,CAAC,GAAG,CAAC,wBAAwB,CAAC,EAAE,CAAC,CAAC,CAAC;AAC5E,CAAC"}
|
|
@@ -7,10 +7,12 @@
|
|
|
7
7
|
* - Includes session token summary (input/output per model)
|
|
8
8
|
*/
|
|
9
9
|
import type { QuotaToastEntry, QuotaToastError, SessionTokensData } from "./entries.js";
|
|
10
|
+
import type { PercentDisplayMode } from "./types.js";
|
|
10
11
|
export declare function formatQuotaCommand(params: {
|
|
11
12
|
entries: QuotaToastEntry[];
|
|
12
13
|
errors: QuotaToastError[];
|
|
13
14
|
sessionTokens?: SessionTokensData;
|
|
14
15
|
generatedAtMs?: number;
|
|
16
|
+
percentDisplayMode?: PercentDisplayMode;
|
|
15
17
|
}): string;
|
|
16
18
|
//# sourceMappingURL=quota-command-format.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"quota-command-format.d.ts","sourceRoot":"","sources":["../../src/lib/quota-command-format.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"quota-command-format.d.ts","sourceRoot":"","sources":["../../src/lib/quota-command-format.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACxF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AA0GrD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE;IACzC,OAAO,EAAE,eAAe,EAAE,CAAC;IAC3B,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,aAAa,CAAC,EAAE,iBAAiB,CAAC;IAClC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;CACzC,GAAG,MAAM,CAET"}
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* - Includes session token summary (input/output per model)
|
|
8
8
|
*/
|
|
9
9
|
import { isValueEntry } from "./entries.js";
|
|
10
|
-
import { bar,
|
|
10
|
+
import { bar, formatDisplayedPercentLabel, padRight, resolveDisplayedPercent } from "./format-utils.js";
|
|
11
11
|
import { formatGroupedHeader } from "./grouped-header-format.js";
|
|
12
12
|
import { groupQuotaEntries } from "./grouped-entry-normalization.js";
|
|
13
13
|
import { renderPlainTextReport } from "./report-document.js";
|
|
@@ -56,8 +56,9 @@ function buildQuotaCommandDocument(params) {
|
|
|
56
56
|
lines.push(` ${labelCol} ${row.value}${suffix}`);
|
|
57
57
|
continue;
|
|
58
58
|
}
|
|
59
|
-
const pct =
|
|
60
|
-
|
|
59
|
+
const pct = resolveDisplayedPercent(row.percentRemaining, params.percentDisplayMode);
|
|
60
|
+
const pctLabel = formatDisplayedPercentLabel(row.percentRemaining, params.percentDisplayMode);
|
|
61
|
+
lines.push(` ${labelCol} ${bar(pct, barWidth)} ${pctLabel}${suffix}`);
|
|
61
62
|
}
|
|
62
63
|
return {
|
|
63
64
|
id: `group-${index}`,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"quota-command-format.js","sourceRoot":"","sources":["../../src/lib/quota-command-format.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;
|
|
1
|
+
{"version":3,"file":"quota-command-format.js","sourceRoot":"","sources":["../../src/lib/quota-command-format.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { type SessionTokenError } from "./quota-status.js";
|
|
2
|
+
import { type SessionModelMeta } from "./quota-render-data.js";
|
|
3
|
+
import { type QuotaRuntimeClient } from "./quota-runtime-context.js";
|
|
4
|
+
import type { RuntimeContextRootHints } from "./config-file-utils.js";
|
|
5
|
+
export type QuotaDialogCommandId = "quota" | "quota_status" | "quota_announcements" | "pricing_refresh" | TokenReportCommandId;
|
|
6
|
+
export type QuotaDialogCommandSpec = {
|
|
7
|
+
id: QuotaDialogCommandId;
|
|
8
|
+
slashName: string;
|
|
9
|
+
title: string;
|
|
10
|
+
description: string;
|
|
11
|
+
dialogSize: "medium" | "large" | "xlarge";
|
|
12
|
+
requiresSession?: boolean;
|
|
13
|
+
acceptsArguments?: boolean;
|
|
14
|
+
};
|
|
15
|
+
export type QuotaDialogCommandOutputResult = {
|
|
16
|
+
state: "output";
|
|
17
|
+
command: QuotaDialogCommandId;
|
|
18
|
+
title: string;
|
|
19
|
+
output: string;
|
|
20
|
+
dialogSize: "medium" | "large" | "xlarge";
|
|
21
|
+
} | {
|
|
22
|
+
state: "noop";
|
|
23
|
+
command: QuotaDialogCommandId;
|
|
24
|
+
reason: "disabled";
|
|
25
|
+
};
|
|
26
|
+
type TokenReportCommandId = "tokens_today" | "tokens_daily" | "tokens_weekly" | "tokens_monthly" | "tokens_all" | "tokens_session" | "tokens_session_all" | "tokens_between";
|
|
27
|
+
export declare const QUOTA_DIALOG_COMMANDS: readonly QuotaDialogCommandSpec[];
|
|
28
|
+
export declare function isQuotaDialogCommand(command: string): command is QuotaDialogCommandId;
|
|
29
|
+
export declare function buildQuotaDialogCommandOutput(params: {
|
|
30
|
+
command: QuotaDialogCommandId;
|
|
31
|
+
arguments?: string;
|
|
32
|
+
client: QuotaRuntimeClient;
|
|
33
|
+
roots: RuntimeContextRootHints;
|
|
34
|
+
sessionID?: string;
|
|
35
|
+
sessionMeta?: SessionModelMeta;
|
|
36
|
+
resolveSessionMeta?: (sessionID: string) => Promise<SessionModelMeta>;
|
|
37
|
+
generatedAtMs?: number;
|
|
38
|
+
lastSessionTokenError?: SessionTokenError;
|
|
39
|
+
setLastSessionTokenError?: (error: SessionTokenError | undefined) => void;
|
|
40
|
+
log?: (message: string, extra?: Record<string, unknown>) => Promise<void>;
|
|
41
|
+
}): Promise<QuotaDialogCommandOutputResult>;
|
|
42
|
+
export {};
|
|
43
|
+
//# sourceMappingURL=quota-dialog-commands.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"quota-dialog-commands.d.ts","sourceRoot":"","sources":["../../src/lib/quota-dialog-commands.ts"],"names":[],"mappings":"AAQA,OAAO,EAA0B,KAAK,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AA4BnF,OAAO,EAQL,KAAK,gBAAgB,EACtB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAIL,KAAK,kBAAkB,EAExB,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAMtE,MAAM,MAAM,oBAAoB,GAC5B,OAAO,GACP,cAAc,GACd,qBAAqB,GACrB,iBAAiB,GACjB,oBAAoB,CAAC;AAEzB,MAAM,MAAM,sBAAsB,GAAG;IACnC,EAAE,EAAE,oBAAoB,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,QAAQ,GAAG,OAAO,GAAG,QAAQ,CAAC;IAC1C,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,8BAA8B,GACtC;IACE,KAAK,EAAE,QAAQ,CAAC;IAChB,OAAO,EAAE,oBAAoB,CAAC;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,QAAQ,GAAG,OAAO,GAAG,QAAQ,CAAC;CAC3C,GACD;IACE,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,oBAAoB,CAAC;IAC9B,MAAM,EAAE,UAAU,CAAC;CACpB,CAAC;AAEN,KAAK,oBAAoB,GACrB,cAAc,GACd,cAAc,GACd,eAAe,GACf,gBAAgB,GAChB,YAAY,GACZ,gBAAgB,GAChB,oBAAoB,GACpB,gBAAgB,CAAC;AAkHrB,eAAO,MAAM,qBAAqB,EAAE,SAAS,sBAAsB,EA2CzD,CAAC;AAWX,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,IAAI,oBAAoB,CAErF;AAshBD,wBAAsB,6BAA6B,CAAC,MAAM,EAAE;IAC1D,OAAO,EAAE,oBAAoB,CAAC;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,kBAAkB,CAAC;IAC3B,KAAK,EAAE,uBAAuB,CAAC;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,gBAAgB,CAAC;IAC/B,kBAAkB,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,gBAAgB,CAAC,CAAC;IACtE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,qBAAqB,CAAC,EAAE,iBAAiB,CAAC;IAC1C,wBAAwB,CAAC,EAAE,CAAC,KAAK,EAAE,iBAAiB,GAAG,SAAS,KAAK,IAAI,CAAC;IAC1E,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3E,GAAG,OAAO,CAAC,8BAA8B,CAAC,CAsH1C"}
|