@slkiser/opencode-quota 3.6.2 → 3.7.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 +369 -292
- package/dist/lib/config.d.ts +1 -1
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +83 -1
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/format.d.ts.map +1 -1
- package/dist/lib/format.js +2 -45
- package/dist/lib/format.js.map +1 -1
- package/dist/lib/init-installer.d.ts +4 -1
- package/dist/lib/init-installer.d.ts.map +1 -1
- package/dist/lib/init-installer.js +179 -42
- package/dist/lib/init-installer.js.map +1 -1
- package/dist/lib/quota-entry-display.d.ts +5 -0
- package/dist/lib/quota-entry-display.d.ts.map +1 -0
- package/dist/lib/quota-entry-display.js +45 -0
- package/dist/lib/quota-entry-display.js.map +1 -0
- package/dist/lib/tui-compact-format.d.ts +8 -0
- package/dist/lib/tui-compact-format.d.ts.map +1 -0
- package/dist/lib/tui-compact-format.js +175 -0
- package/dist/lib/tui-compact-format.js.map +1 -0
- package/dist/lib/tui-native-provider-quota.d.ts +7 -0
- package/dist/lib/tui-native-provider-quota.d.ts.map +1 -0
- package/dist/lib/tui-native-provider-quota.js +25 -0
- package/dist/lib/tui-native-provider-quota.js.map +1 -0
- package/dist/lib/tui-panel-state.d.ts +15 -1
- package/dist/lib/tui-panel-state.d.ts.map +1 -1
- package/dist/lib/tui-panel-state.js +13 -0
- package/dist/lib/tui-panel-state.js.map +1 -1
- package/dist/lib/tui-runtime.d.ts +28 -1
- package/dist/lib/tui-runtime.d.ts.map +1 -1
- package/dist/lib/tui-runtime.js +140 -29
- package/dist/lib/tui-runtime.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 +10 -0
- package/dist/lib/types.js.map +1 -1
- package/dist/tui.d.ts +0 -1
- package/dist/tui.d.ts.map +1 -1
- package/dist/tui.tsx +383 -45
- package/package.json +1 -1
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
import { isValueEntry } from "./entries.js";
|
|
2
|
+
import { formatDisplayedPercentLabel } from "./format-utils.js";
|
|
3
|
+
import { sanitizeQuotaRenderData, sanitizeSingleLineDisplayText } from "./display-sanitize.js";
|
|
4
|
+
import { extractSingleWindowWindowLabel } from "./quota-entry-display.js";
|
|
5
|
+
import { formatGroupedHeader } from "./grouped-header-format.js";
|
|
6
|
+
const COMPACT_SEGMENT_SEPARATOR = " | ";
|
|
7
|
+
const COMPACT_WINDOW_SEPARATOR = ", ";
|
|
8
|
+
const ELLIPSIS = "…";
|
|
9
|
+
function normalizeMaxWidth(maxWidth) {
|
|
10
|
+
if (!Number.isFinite(maxWidth))
|
|
11
|
+
return 96;
|
|
12
|
+
return Math.max(0, Math.trunc(maxWidth));
|
|
13
|
+
}
|
|
14
|
+
function compactText(text) {
|
|
15
|
+
return sanitizeSingleLineDisplayText(text);
|
|
16
|
+
}
|
|
17
|
+
function truncateSingleLine(text, maxWidth) {
|
|
18
|
+
const width = normalizeMaxWidth(maxWidth);
|
|
19
|
+
if (width === 0)
|
|
20
|
+
return "";
|
|
21
|
+
const singleLine = compactText(text);
|
|
22
|
+
if (singleLine.length <= width)
|
|
23
|
+
return singleLine;
|
|
24
|
+
if (width === 1)
|
|
25
|
+
return ELLIPSIS;
|
|
26
|
+
return `${singleLine.slice(0, width - ELLIPSIS.length).trimEnd()}${ELLIPSIS}`;
|
|
27
|
+
}
|
|
28
|
+
function formatCompactPercentLabel(percentRemaining, mode) {
|
|
29
|
+
return formatDisplayedPercentLabel(percentRemaining, mode).split(" ")[0] ?? "0%";
|
|
30
|
+
}
|
|
31
|
+
function formatCompactDisplayName(name) {
|
|
32
|
+
return compactText(name.replace(/^\[([^\]]+)\](.*)$/u, "$1$2"));
|
|
33
|
+
}
|
|
34
|
+
function formatCompactProviderLabel(name) {
|
|
35
|
+
const compactName = formatCompactDisplayName(name);
|
|
36
|
+
const withoutParentheticalPunctuation = compactName.replace(/\(([^)]*)\)/gu, (_match, inner) => {
|
|
37
|
+
const normalized = inner.trim();
|
|
38
|
+
if (!normalized)
|
|
39
|
+
return "";
|
|
40
|
+
if (/^personal$/iu.test(normalized))
|
|
41
|
+
return "";
|
|
42
|
+
if (/^pro$/iu.test(normalized))
|
|
43
|
+
return " Pro";
|
|
44
|
+
return ` ${normalized}`;
|
|
45
|
+
});
|
|
46
|
+
return compactText(withoutParentheticalPunctuation).replace(/\s{2,}/gu, " ").trim();
|
|
47
|
+
}
|
|
48
|
+
function formatWindowLabel(label) {
|
|
49
|
+
const compactLabel = compactText(label.replace(/:+$/u, "").trim());
|
|
50
|
+
return compactLabel.toLowerCase() === "weekly" ? "7d" : compactLabel;
|
|
51
|
+
}
|
|
52
|
+
function getBracketedProviderName(name) {
|
|
53
|
+
const match = /^\[([^\]]+)\]/u.exec(name.trim());
|
|
54
|
+
return match?.[1]?.trim() || null;
|
|
55
|
+
}
|
|
56
|
+
function getProviderName(entry) {
|
|
57
|
+
const bracketedProvider = getBracketedProviderName(entry.name);
|
|
58
|
+
if (bracketedProvider)
|
|
59
|
+
return formatCompactProviderLabel(bracketedProvider);
|
|
60
|
+
if (entry.group?.trim()) {
|
|
61
|
+
return formatCompactProviderLabel(formatGroupedHeader(entry.group));
|
|
62
|
+
}
|
|
63
|
+
return formatCompactProviderLabel(entry.name);
|
|
64
|
+
}
|
|
65
|
+
function getWindowLabel(entry) {
|
|
66
|
+
const label = extractSingleWindowWindowLabel(entry.label ?? "") ?? extractSingleWindowWindowLabel(entry.name);
|
|
67
|
+
return label ? formatWindowLabel(label) : null;
|
|
68
|
+
}
|
|
69
|
+
function formatCompactValueEntrySegment(entry) {
|
|
70
|
+
const name = getProviderName(entry);
|
|
71
|
+
const value = compactText(entry.value);
|
|
72
|
+
const segment = [name, value].filter(Boolean).join(" - ");
|
|
73
|
+
return segment || null;
|
|
74
|
+
}
|
|
75
|
+
function formatCompactPercentGroupSegment(group) {
|
|
76
|
+
const windows = group.windows;
|
|
77
|
+
if (windows.length === 0)
|
|
78
|
+
return null;
|
|
79
|
+
const summary = windows.length === 1
|
|
80
|
+
? windows[0].percent
|
|
81
|
+
: windows
|
|
82
|
+
.map((window) => (window.label ? `${window.label} ${window.percent}` : window.percent))
|
|
83
|
+
.join(COMPACT_WINDOW_SEPARATOR);
|
|
84
|
+
return compactText(`${group.provider} ${summary}`);
|
|
85
|
+
}
|
|
86
|
+
function formatCompactEntrySegments(params) {
|
|
87
|
+
const groups = new Map();
|
|
88
|
+
const pendingSegments = [];
|
|
89
|
+
for (const entry of params.entries) {
|
|
90
|
+
if (isValueEntry(entry)) {
|
|
91
|
+
const segment = formatCompactValueEntrySegment(entry);
|
|
92
|
+
if (segment)
|
|
93
|
+
pendingSegments.push({ kind: "value", segment });
|
|
94
|
+
continue;
|
|
95
|
+
}
|
|
96
|
+
const provider = getProviderName(entry);
|
|
97
|
+
const percent = formatCompactPercentLabel(entry.percentRemaining, params.percentDisplayMode);
|
|
98
|
+
const label = getWindowLabel(entry);
|
|
99
|
+
const key = provider.toLowerCase();
|
|
100
|
+
let group = groups.get(key);
|
|
101
|
+
if (!group) {
|
|
102
|
+
group = { provider, windows: [] };
|
|
103
|
+
groups.set(key, group);
|
|
104
|
+
pendingSegments.push({ kind: "percent", key });
|
|
105
|
+
}
|
|
106
|
+
group.windows.push({ label, percent });
|
|
107
|
+
}
|
|
108
|
+
return pendingSegments
|
|
109
|
+
.map((pending) => pending.kind === "value"
|
|
110
|
+
? pending.segment
|
|
111
|
+
: formatCompactPercentGroupSegment(groups.get(pending.key)))
|
|
112
|
+
.filter((segment) => Boolean(segment));
|
|
113
|
+
}
|
|
114
|
+
function formatCompactTokenCount(count) {
|
|
115
|
+
if (!Number.isFinite(count))
|
|
116
|
+
return "0";
|
|
117
|
+
if (Math.abs(count) >= 1_000_000) {
|
|
118
|
+
return `${(count / 1_000_000).toFixed(1).replace(/\.0$/u, "")}M`;
|
|
119
|
+
}
|
|
120
|
+
if (Math.abs(count) >= 1_000) {
|
|
121
|
+
return `${(count / 1_000).toFixed(1).replace(/\.0$/u, "")}K`;
|
|
122
|
+
}
|
|
123
|
+
return String(Math.trunc(count));
|
|
124
|
+
}
|
|
125
|
+
function formatCompactSessionTokensSegment(data) {
|
|
126
|
+
const sessionTokens = data.sessionTokens;
|
|
127
|
+
if (!sessionTokens)
|
|
128
|
+
return null;
|
|
129
|
+
const hasTokenData = sessionTokens.models.length > 0 ||
|
|
130
|
+
sessionTokens.totalInput > 0 ||
|
|
131
|
+
sessionTokens.totalOutput > 0;
|
|
132
|
+
if (!hasTokenData)
|
|
133
|
+
return null;
|
|
134
|
+
return compactText(`tok ${formatCompactTokenCount(sessionTokens.totalInput)} in / ${formatCompactTokenCount(sessionTokens.totalOutput)} out`);
|
|
135
|
+
}
|
|
136
|
+
function formatIssueCount(count) {
|
|
137
|
+
return `+${count} issue${count === 1 ? "" : "s"}`;
|
|
138
|
+
}
|
|
139
|
+
function formatFirstErrorSegment(errors) {
|
|
140
|
+
const first = errors[0];
|
|
141
|
+
if (!first)
|
|
142
|
+
return null;
|
|
143
|
+
const firstError = compactText(`${first.label}: ${first.message}`);
|
|
144
|
+
if (errors.length === 1)
|
|
145
|
+
return firstError;
|
|
146
|
+
return compactText(`${firstError} +${errors.length - 1}`);
|
|
147
|
+
}
|
|
148
|
+
export function buildCompactQuotaStatusLine(params) {
|
|
149
|
+
const maxWidth = normalizeMaxWidth(params.maxWidth);
|
|
150
|
+
if (maxWidth === 0)
|
|
151
|
+
return "";
|
|
152
|
+
const data = sanitizeQuotaRenderData(params.data);
|
|
153
|
+
const percentDisplayMode = params.percentDisplayMode ?? "remaining";
|
|
154
|
+
const segments = formatCompactEntrySegments({ entries: data.entries, percentDisplayMode });
|
|
155
|
+
const sessionTokensSegment = formatCompactSessionTokensSegment(data);
|
|
156
|
+
if (sessionTokensSegment) {
|
|
157
|
+
segments.push(sessionTokensSegment);
|
|
158
|
+
}
|
|
159
|
+
if (data.errors.length > 0) {
|
|
160
|
+
if (segments.length === 0) {
|
|
161
|
+
const errorSegment = formatFirstErrorSegment(data.errors);
|
|
162
|
+
if (errorSegment)
|
|
163
|
+
segments.push(errorSegment);
|
|
164
|
+
}
|
|
165
|
+
else {
|
|
166
|
+
const issueSegment = formatIssueCount(data.errors.length);
|
|
167
|
+
const candidate = [...segments, issueSegment].join(COMPACT_SEGMENT_SEPARATOR);
|
|
168
|
+
if (compactText(candidate).length <= maxWidth) {
|
|
169
|
+
segments.push(issueSegment);
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
return truncateSingleLine(segments.join(COMPACT_SEGMENT_SEPARATOR), maxWidth);
|
|
174
|
+
}
|
|
175
|
+
//# sourceMappingURL=tui-compact-format.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tui-compact-format.js","sourceRoot":"","sources":["../../src/lib/tui-compact-format.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Detect whether an OpenCode client advertises native provider-quota support.
|
|
3
|
+
*
|
|
4
|
+
* This is intentionally a no-fetch duck-typing guard for slot-registration decisions.
|
|
5
|
+
*/
|
|
6
|
+
export declare function hasNativeProviderQuotaClient(client: unknown): boolean;
|
|
7
|
+
//# sourceMappingURL=tui-native-provider-quota.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tui-native-provider-quota.d.ts","sourceRoot":"","sources":["../../src/lib/tui-native-provider-quota.ts"],"names":[],"mappings":"AAQA;;;;GAIG;AACH,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAWrE"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
function isRecord(value) {
|
|
2
|
+
return Boolean(value) && typeof value === "object";
|
|
3
|
+
}
|
|
4
|
+
function isQuotaApiLike(value) {
|
|
5
|
+
return Boolean(value) && (typeof value === "object" || typeof value === "function");
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Detect whether an OpenCode client advertises native provider-quota support.
|
|
9
|
+
*
|
|
10
|
+
* This is intentionally a no-fetch duck-typing guard for slot-registration decisions.
|
|
11
|
+
*/
|
|
12
|
+
export function hasNativeProviderQuotaClient(client) {
|
|
13
|
+
if (!isRecord(client))
|
|
14
|
+
return false;
|
|
15
|
+
const experimental = client.experimental;
|
|
16
|
+
if (!isRecord(experimental))
|
|
17
|
+
return false;
|
|
18
|
+
if (isQuotaApiLike(experimental.providerQuota))
|
|
19
|
+
return true;
|
|
20
|
+
if (isQuotaApiLike(experimental.provider_quota))
|
|
21
|
+
return true;
|
|
22
|
+
const provider = experimental.provider;
|
|
23
|
+
return isRecord(provider) && isQuotaApiLike(provider.quota);
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=tui-native-provider-quota.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tui-native-provider-quota.js","sourceRoot":"","sources":["../../src/lib/tui-native-provider-quota.ts"],"names":[],"mappings":"AAAA,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,CAAC,KAAK,CAAC,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC;AACrD,CAAC;AAED,SAAS,cAAc,CAAC,KAAc;IACpC,OAAO,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,UAAU,CAAC,CAAC;AACtF,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,4BAA4B,CAAC,MAAe;IAC1D,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,OAAO,KAAK,CAAC;IAEpC,MAAM,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;IACzC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC;QAAE,OAAO,KAAK,CAAC;IAE1C,IAAI,cAAc,CAAC,YAAY,CAAC,aAAa,CAAC;QAAE,OAAO,IAAI,CAAC;IAC5D,IAAI,cAAc,CAAC,YAAY,CAAC,cAAc,CAAC;QAAE,OAAO,IAAI,CAAC;IAE7D,MAAM,QAAQ,GAAG,YAAY,CAAC,QAAQ,CAAC;IACvC,OAAO,QAAQ,CAAC,QAAQ,CAAC,IAAI,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC9D,CAAC"}
|
|
@@ -1,7 +1,21 @@
|
|
|
1
|
+
type PanelStatus = "loading" | "disabled" | "ready";
|
|
1
2
|
export type SidebarPanelState = {
|
|
2
|
-
status:
|
|
3
|
+
status: PanelStatus;
|
|
3
4
|
lines: string[];
|
|
4
5
|
};
|
|
6
|
+
export type CompactStatusState = {
|
|
7
|
+
status: "loading";
|
|
8
|
+
text?: string;
|
|
9
|
+
} | {
|
|
10
|
+
status: "disabled";
|
|
11
|
+
text?: string;
|
|
12
|
+
} | {
|
|
13
|
+
status: "ready";
|
|
14
|
+
text: string;
|
|
15
|
+
};
|
|
5
16
|
export declare function shouldRenderSidebarPanel(panel: SidebarPanelState): boolean;
|
|
6
17
|
export declare function getSidebarPanelLines(panel: SidebarPanelState): string[];
|
|
18
|
+
export declare function shouldRenderCompactStatus(panel: CompactStatusState): boolean;
|
|
19
|
+
export declare function getCompactStatusText(panel: CompactStatusState): string;
|
|
20
|
+
export {};
|
|
7
21
|
//# sourceMappingURL=tui-panel-state.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tui-panel-state.d.ts","sourceRoot":"","sources":["../../src/lib/tui-panel-state.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"tui-panel-state.d.ts","sourceRoot":"","sources":["../../src/lib/tui-panel-state.ts"],"names":[],"mappings":"AAMA,KAAK,WAAW,GAAG,SAAS,GAAG,UAAU,GAAG,OAAO,CAAC;AAEpD,MAAM,MAAM,iBAAiB,GAAG;IAC9B,MAAM,EAAE,WAAW,CAAC;IACpB,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAC1B;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GACpC;IAAE,MAAM,EAAE,UAAU,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GACrC;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAEtC,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAE1E;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,iBAAiB,GAAG,MAAM,EAAE,CAWvE;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAE5E;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,kBAAkB,GAAG,MAAM,CAOtE"}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
|
+
import { sanitizeSingleLineDisplayText } from "./display-sanitize.js";
|
|
1
2
|
const SIDEBAR_LOADING_LINE = "Loading…";
|
|
2
3
|
const SIDEBAR_UNAVAILABLE_LINE = "Unavailable";
|
|
4
|
+
const COMPACT_LOADING_TEXT = "Quota loading…";
|
|
3
5
|
export function shouldRenderSidebarPanel(panel) {
|
|
4
6
|
return panel.status !== "disabled";
|
|
5
7
|
}
|
|
@@ -15,4 +17,15 @@ export function getSidebarPanelLines(panel) {
|
|
|
15
17
|
return [];
|
|
16
18
|
}
|
|
17
19
|
}
|
|
20
|
+
export function shouldRenderCompactStatus(panel) {
|
|
21
|
+
return panel.status !== "disabled";
|
|
22
|
+
}
|
|
23
|
+
export function getCompactStatusText(panel) {
|
|
24
|
+
if (panel.status === "disabled")
|
|
25
|
+
return "";
|
|
26
|
+
const text = sanitizeSingleLineDisplayText(panel.text ?? "");
|
|
27
|
+
if (text)
|
|
28
|
+
return text;
|
|
29
|
+
return panel.status === "loading" ? COMPACT_LOADING_TEXT : "";
|
|
30
|
+
}
|
|
18
31
|
//# sourceMappingURL=tui-panel-state.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tui-panel-state.js","sourceRoot":"","sources":["../../src/lib/tui-panel-state.ts"],"names":[],"mappings":"AAAA,MAAM,oBAAoB,GAAG,UAAU,CAAC;AACxC,MAAM,wBAAwB,GAAG,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"tui-panel-state.js","sourceRoot":"","sources":["../../src/lib/tui-panel-state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,6BAA6B,EAAE,MAAM,uBAAuB,CAAC;AAEtE,MAAM,oBAAoB,GAAG,UAAU,CAAC;AACxC,MAAM,wBAAwB,GAAG,aAAa,CAAC;AAC/C,MAAM,oBAAoB,GAAG,gBAAgB,CAAC;AAc9C,MAAM,UAAU,wBAAwB,CAAC,KAAwB;IAC/D,OAAO,KAAK,CAAC,MAAM,KAAK,UAAU,CAAC;AACrC,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,KAAwB;IAC3D,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC,KAAK,CAAC;IAE/C,QAAQ,KAAK,CAAC,MAAM,EAAE,CAAC;QACrB,KAAK,OAAO;YACV,OAAO,CAAC,wBAAwB,CAAC,CAAC;QACpC,KAAK,SAAS;YACZ,OAAO,CAAC,oBAAoB,CAAC,CAAC;QAChC;YACE,OAAO,EAAE,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,KAAyB;IACjE,OAAO,KAAK,CAAC,MAAM,KAAK,UAAU,CAAC;AACrC,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,KAAyB;IAC5D,IAAI,KAAK,CAAC,MAAM,KAAK,UAAU;QAAE,OAAO,EAAE,CAAC;IAE3C,MAAM,IAAI,GAAG,6BAA6B,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;IAC7D,IAAI,IAAI;QAAE,OAAO,IAAI,CAAC;IAEtB,OAAO,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,EAAE,CAAC;AAChE,CAAC"}
|
|
@@ -1,8 +1,35 @@
|
|
|
1
1
|
import type { TuiPluginApi } from "@opencode-ai/plugin/tui";
|
|
2
|
-
import type { SidebarPanelState } from "./tui-panel-state.js";
|
|
2
|
+
import type { CompactStatusState, SidebarPanelState } from "./tui-panel-state.js";
|
|
3
3
|
import type { SessionModelMeta } from "./quota-render-data.js";
|
|
4
4
|
export declare function resolveWorkspaceDir(api: TuiPluginApi): string;
|
|
5
5
|
export declare function getTuiSessionModelMeta(api: TuiPluginApi, sessionID: string): Promise<SessionModelMeta>;
|
|
6
|
+
export type TuiSidebarPanelRegistration = {
|
|
7
|
+
enabled: boolean;
|
|
8
|
+
};
|
|
9
|
+
export type TuiCompactStatusRegistration = {
|
|
10
|
+
enabled: boolean;
|
|
11
|
+
homeBottom: boolean;
|
|
12
|
+
sessionPrompt: boolean;
|
|
13
|
+
hasNativeProviderQuota: boolean;
|
|
14
|
+
suppressedByNativeProviderQuota: boolean;
|
|
15
|
+
};
|
|
16
|
+
export type TuiSurfaceRegistration = {
|
|
17
|
+
sidebar: TuiSidebarPanelRegistration;
|
|
18
|
+
compact: TuiCompactStatusRegistration;
|
|
19
|
+
};
|
|
20
|
+
export type TuiSessionQuotaSurfaces = {
|
|
21
|
+
sidebar: SidebarPanelState;
|
|
22
|
+
compact: CompactStatusState;
|
|
23
|
+
};
|
|
24
|
+
export declare function resolveTuiSurfaceRegistration(api: TuiPluginApi): Promise<TuiSurfaceRegistration>;
|
|
25
|
+
export declare function resolveTuiCompactStatusRegistration(api: TuiPluginApi): Promise<TuiCompactStatusRegistration>;
|
|
26
|
+
export declare function loadTuiSessionQuotaSurfaces(params: {
|
|
27
|
+
api: TuiPluginApi;
|
|
28
|
+
sessionID: string;
|
|
29
|
+
}): Promise<TuiSessionQuotaSurfaces>;
|
|
30
|
+
export declare function loadTuiHomeCompactStatus(params: {
|
|
31
|
+
api: TuiPluginApi;
|
|
32
|
+
}): Promise<CompactStatusState>;
|
|
6
33
|
export declare function loadSidebarPanel(params: {
|
|
7
34
|
api: TuiPluginApi;
|
|
8
35
|
sessionID: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tui-runtime.d.ts","sourceRoot":"","sources":["../../src/lib/tui-runtime.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"tui-runtime.d.ts","sourceRoot":"","sources":["../../src/lib/tui-runtime.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,KAAK,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAElF,OAAO,KAAK,EAAgC,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAwB7F,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,YAAY,GAAG,MAAM,CAE7D;AA6DD,wBAAsB,sBAAsB,CAC1C,GAAG,EAAE,YAAY,EACjB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,gBAAgB,CAAC,CAc3B;AAED,MAAM,MAAM,2BAA2B,GAAG;IACxC,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,4BAA4B,GAAG;IACzC,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,OAAO,CAAC;IACpB,aAAa,EAAE,OAAO,CAAC;IACvB,sBAAsB,EAAE,OAAO,CAAC;IAChC,+BAA+B,EAAE,OAAO,CAAC;CAC1C,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACnC,OAAO,EAAE,2BAA2B,CAAC;IACrC,OAAO,EAAE,4BAA4B,CAAC;CACvC,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,OAAO,EAAE,iBAAiB,CAAC;IAC3B,OAAO,EAAE,kBAAkB,CAAC;CAC7B,CAAC;AA2FF,wBAAsB,6BAA6B,CACjD,GAAG,EAAE,YAAY,GAChB,OAAO,CAAC,sBAAsB,CAAC,CAyBjC;AAED,wBAAsB,mCAAmC,CACvD,GAAG,EAAE,YAAY,GAChB,OAAO,CAAC,4BAA4B,CAAC,CAEvC;AAED,wBAAsB,2BAA2B,CAAC,MAAM,EAAE;IACxD,GAAG,EAAE,YAAY,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAgCnC;AAED,wBAAsB,wBAAwB,CAAC,MAAM,EAAE;IACrD,GAAG,EAAE,YAAY,CAAC;CACnB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAmC9B;AAED,wBAAsB,gBAAgB,CAAC,MAAM,EAAE;IAC7C,GAAG,EAAE,YAAY,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAE7B"}
|
package/dist/lib/tui-runtime.js
CHANGED
|
@@ -2,7 +2,10 @@ import { resolveRuntimeContextRoots, } from "./config-file-utils.js";
|
|
|
2
2
|
import { createQuotaRuntimeRequestContext, resolveQuotaRuntimeContext } from "./quota-runtime-context.js";
|
|
3
3
|
import { collectQuotaRenderData } from "./quota-render-data.js";
|
|
4
4
|
import { resolveQuotaFormatStyle } from "./quota-format-style.js";
|
|
5
|
+
import { buildCompactQuotaStatusLine } from "./tui-compact-format.js";
|
|
6
|
+
import { hasNativeProviderQuotaClient } from "./tui-native-provider-quota.js";
|
|
5
7
|
import { buildSidebarQuotaPanelLines } from "./tui-sidebar-format.js";
|
|
8
|
+
const COMPACT_UNAVAILABLE_TEXT = "Quota unavailable";
|
|
6
9
|
function getTuiRuntimeRootHints(api) {
|
|
7
10
|
return {
|
|
8
11
|
worktreeRoot: api.state.path.worktree,
|
|
@@ -82,33 +85,40 @@ export async function getTuiSessionModelMeta(api, sessionID) {
|
|
|
82
85
|
}
|
|
83
86
|
return getMessageSessionModelMeta(api, sessionID);
|
|
84
87
|
}
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
88
|
+
function isSessionSidebarEnabled(runtime) {
|
|
89
|
+
return runtime.config.enabled && runtime.config.tuiSidebarPanel.enabled;
|
|
90
|
+
}
|
|
91
|
+
function isSessionCompactEnabled(runtime) {
|
|
92
|
+
return (runtime.config.enabled &&
|
|
93
|
+
runtime.config.tuiCompactStatus.enabled &&
|
|
94
|
+
runtime.config.tuiCompactStatus.sessionPrompt);
|
|
95
|
+
}
|
|
96
|
+
function buildDisabledSessionQuotaSurfaces() {
|
|
97
|
+
return {
|
|
98
|
+
sidebar: { status: "disabled", lines: [] },
|
|
99
|
+
compact: { status: "disabled" },
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
function buildCompactStatusFromData(params) {
|
|
103
|
+
if (!params.enabled)
|
|
104
|
+
return { status: "disabled" };
|
|
105
|
+
if (params.result.selection?.waitingForCurrentSelection) {
|
|
106
|
+
return { status: "loading" };
|
|
99
107
|
}
|
|
100
|
-
const
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
}
|
|
111
|
-
|
|
108
|
+
const text = params.result.data
|
|
109
|
+
? buildCompactQuotaStatusLine({
|
|
110
|
+
data: params.result.data,
|
|
111
|
+
percentDisplayMode: params.runtime.config.percentDisplayMode,
|
|
112
|
+
maxWidth: params.maxWidth ?? params.runtime.config.tuiCompactStatus.maxWidth,
|
|
113
|
+
})
|
|
114
|
+
: "";
|
|
115
|
+
return {
|
|
116
|
+
status: "ready",
|
|
117
|
+
text: text.trim() ? text : COMPACT_UNAVAILABLE_TEXT,
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
function buildSidebarPanelFromData(params) {
|
|
121
|
+
if (params.result.selection?.waitingForCurrentSelection) {
|
|
112
122
|
return {
|
|
113
123
|
status: "loading",
|
|
114
124
|
lines: [],
|
|
@@ -116,12 +126,113 @@ export async function loadSidebarPanel(params) {
|
|
|
116
126
|
}
|
|
117
127
|
return {
|
|
118
128
|
status: "ready",
|
|
119
|
-
lines: result.data
|
|
129
|
+
lines: params.result.data
|
|
120
130
|
? buildSidebarQuotaPanelLines({
|
|
121
|
-
data: result.data,
|
|
122
|
-
config: { ...runtime.config, formatStyle },
|
|
131
|
+
data: params.result.data,
|
|
132
|
+
config: { ...params.runtime.config, formatStyle: params.formatStyle },
|
|
123
133
|
})
|
|
124
134
|
: [],
|
|
125
135
|
};
|
|
126
136
|
}
|
|
137
|
+
async function collectTuiQuotaRenderData(params) {
|
|
138
|
+
const formatStyle = resolveQuotaFormatStyle(params.runtime.config.formatStyle);
|
|
139
|
+
const result = await collectQuotaRenderData({
|
|
140
|
+
client: params.runtime.client,
|
|
141
|
+
config: params.runtime.config,
|
|
142
|
+
configMeta: params.runtime.configMeta,
|
|
143
|
+
request: params.request,
|
|
144
|
+
surfaceExplicitProviderIssues: true,
|
|
145
|
+
formatStyle,
|
|
146
|
+
providers: params.runtime.providers,
|
|
147
|
+
});
|
|
148
|
+
return { result, formatStyle };
|
|
149
|
+
}
|
|
150
|
+
export async function resolveTuiSurfaceRegistration(api) {
|
|
151
|
+
const quotaClient = createTuiQuotaClient(api);
|
|
152
|
+
const runtime = await resolveQuotaRuntimeContext({
|
|
153
|
+
client: quotaClient,
|
|
154
|
+
roots: getTuiRuntimeRootHints(api),
|
|
155
|
+
});
|
|
156
|
+
const compact = runtime.config.tuiCompactStatus;
|
|
157
|
+
const hasNativeProviderQuota = hasNativeProviderQuotaClient(api.client);
|
|
158
|
+
const suppressedByNativeProviderQuota = compact.suppressWhenNativeProviderQuota && hasNativeProviderQuota;
|
|
159
|
+
const compactEnabled = runtime.config.enabled && compact.enabled && !suppressedByNativeProviderQuota;
|
|
160
|
+
return {
|
|
161
|
+
sidebar: {
|
|
162
|
+
enabled: runtime.config.enabled && runtime.config.tuiSidebarPanel.enabled,
|
|
163
|
+
},
|
|
164
|
+
compact: {
|
|
165
|
+
enabled: compactEnabled,
|
|
166
|
+
homeBottom: compactEnabled && compact.homeBottom,
|
|
167
|
+
sessionPrompt: compactEnabled && compact.sessionPrompt,
|
|
168
|
+
hasNativeProviderQuota,
|
|
169
|
+
suppressedByNativeProviderQuota,
|
|
170
|
+
},
|
|
171
|
+
};
|
|
172
|
+
}
|
|
173
|
+
export async function resolveTuiCompactStatusRegistration(api) {
|
|
174
|
+
return (await resolveTuiSurfaceRegistration(api)).compact;
|
|
175
|
+
}
|
|
176
|
+
export async function loadTuiSessionQuotaSurfaces(params) {
|
|
177
|
+
const quotaClient = createTuiQuotaClient(params.api);
|
|
178
|
+
const runtime = await resolveQuotaRuntimeContext({
|
|
179
|
+
client: quotaClient,
|
|
180
|
+
roots: getTuiRuntimeRootHints(params.api),
|
|
181
|
+
sessionID: params.sessionID,
|
|
182
|
+
resolveSessionMeta: (sessionID) => getTuiSessionModelMeta(params.api, sessionID),
|
|
183
|
+
includeSessionMeta: (config) => config.onlyCurrentModel,
|
|
184
|
+
});
|
|
185
|
+
const sidebarEnabled = isSessionSidebarEnabled(runtime);
|
|
186
|
+
const compactEnabled = isSessionCompactEnabled(runtime);
|
|
187
|
+
if (!sidebarEnabled && !compactEnabled) {
|
|
188
|
+
return buildDisabledSessionQuotaSurfaces();
|
|
189
|
+
}
|
|
190
|
+
const { result, formatStyle } = await collectTuiQuotaRenderData({
|
|
191
|
+
runtime,
|
|
192
|
+
request: createQuotaRuntimeRequestContext(runtime),
|
|
193
|
+
});
|
|
194
|
+
return {
|
|
195
|
+
sidebar: sidebarEnabled
|
|
196
|
+
? buildSidebarPanelFromData({ runtime, result, formatStyle })
|
|
197
|
+
: { status: "disabled", lines: [] },
|
|
198
|
+
compact: buildCompactStatusFromData({
|
|
199
|
+
runtime,
|
|
200
|
+
result,
|
|
201
|
+
enabled: compactEnabled,
|
|
202
|
+
}),
|
|
203
|
+
};
|
|
204
|
+
}
|
|
205
|
+
export async function loadTuiHomeCompactStatus(params) {
|
|
206
|
+
const quotaClient = createTuiQuotaClient(params.api);
|
|
207
|
+
const runtime = await resolveQuotaRuntimeContext({
|
|
208
|
+
client: quotaClient,
|
|
209
|
+
roots: getTuiRuntimeRootHints(params.api),
|
|
210
|
+
});
|
|
211
|
+
if (!runtime.config.enabled ||
|
|
212
|
+
!runtime.config.tuiCompactStatus.enabled ||
|
|
213
|
+
!runtime.config.tuiCompactStatus.homeBottom) {
|
|
214
|
+
return { status: "disabled" };
|
|
215
|
+
}
|
|
216
|
+
const homeRuntime = {
|
|
217
|
+
...runtime,
|
|
218
|
+
config: {
|
|
219
|
+
...runtime.config,
|
|
220
|
+
onlyCurrentModel: false,
|
|
221
|
+
showSessionTokens: false,
|
|
222
|
+
},
|
|
223
|
+
session: {},
|
|
224
|
+
};
|
|
225
|
+
const { result } = await collectTuiQuotaRenderData({
|
|
226
|
+
runtime: homeRuntime,
|
|
227
|
+
request: createQuotaRuntimeRequestContext(homeRuntime),
|
|
228
|
+
});
|
|
229
|
+
return buildCompactStatusFromData({
|
|
230
|
+
runtime: homeRuntime,
|
|
231
|
+
result,
|
|
232
|
+
enabled: true,
|
|
233
|
+
});
|
|
234
|
+
}
|
|
235
|
+
export async function loadSidebarPanel(params) {
|
|
236
|
+
return (await loadTuiSessionQuotaSurfaces(params)).sidebar;
|
|
237
|
+
}
|
|
127
238
|
//# sourceMappingURL=tui-runtime.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tui-runtime.js","sourceRoot":"","sources":["../../src/lib/tui-runtime.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"tui-runtime.js","sourceRoot":"","sources":["../../src/lib/tui-runtime.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/types.d.ts
CHANGED
|
@@ -13,6 +13,16 @@ export interface PricingSnapshotConfig {
|
|
|
13
13
|
source: PricingSnapshotSource;
|
|
14
14
|
autoRefresh: number;
|
|
15
15
|
}
|
|
16
|
+
export interface TuiSidebarPanelConfig {
|
|
17
|
+
enabled: boolean;
|
|
18
|
+
}
|
|
19
|
+
export interface TuiCompactStatusConfig {
|
|
20
|
+
enabled: boolean;
|
|
21
|
+
homeBottom: boolean;
|
|
22
|
+
sessionPrompt: boolean;
|
|
23
|
+
suppressWhenNativeProviderQuota: boolean;
|
|
24
|
+
maxWidth: number;
|
|
25
|
+
}
|
|
16
26
|
/** Request timeout in milliseconds */
|
|
17
27
|
export declare const REQUEST_TIMEOUT_MS = 5000;
|
|
18
28
|
/** Plugin configuration from opencode-quota/quota-toast.json or legacy experimental.quotaToast. */
|
|
@@ -81,6 +91,10 @@ export interface QuotaToastConfig {
|
|
|
81
91
|
* The `/quota` command keeps its detailed per-model rendering.
|
|
82
92
|
*/
|
|
83
93
|
showSessionTokens: boolean;
|
|
94
|
+
/** TUI sidebar panel visibility when the TUI plugin is installed. */
|
|
95
|
+
tuiSidebarPanel: TuiSidebarPanelConfig;
|
|
96
|
+
/** Opt-in compact quota/status text for TUI prompt/home surfaces. */
|
|
97
|
+
tuiCompactStatus: TuiCompactStatusConfig;
|
|
84
98
|
/** Responsive toast layout breakpoints (not used by the fixed-width TUI sidebar). */
|
|
85
99
|
layout: {
|
|
86
100
|
/** Default max width target for toast formatting */
|