@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.
Files changed (40) hide show
  1. package/README.md +369 -292
  2. package/dist/lib/config.d.ts +1 -1
  3. package/dist/lib/config.d.ts.map +1 -1
  4. package/dist/lib/config.js +83 -1
  5. package/dist/lib/config.js.map +1 -1
  6. package/dist/lib/format.d.ts.map +1 -1
  7. package/dist/lib/format.js +2 -45
  8. package/dist/lib/format.js.map +1 -1
  9. package/dist/lib/init-installer.d.ts +4 -1
  10. package/dist/lib/init-installer.d.ts.map +1 -1
  11. package/dist/lib/init-installer.js +179 -42
  12. package/dist/lib/init-installer.js.map +1 -1
  13. package/dist/lib/quota-entry-display.d.ts +5 -0
  14. package/dist/lib/quota-entry-display.d.ts.map +1 -0
  15. package/dist/lib/quota-entry-display.js +45 -0
  16. package/dist/lib/quota-entry-display.js.map +1 -0
  17. package/dist/lib/tui-compact-format.d.ts +8 -0
  18. package/dist/lib/tui-compact-format.d.ts.map +1 -0
  19. package/dist/lib/tui-compact-format.js +175 -0
  20. package/dist/lib/tui-compact-format.js.map +1 -0
  21. package/dist/lib/tui-native-provider-quota.d.ts +7 -0
  22. package/dist/lib/tui-native-provider-quota.d.ts.map +1 -0
  23. package/dist/lib/tui-native-provider-quota.js +25 -0
  24. package/dist/lib/tui-native-provider-quota.js.map +1 -0
  25. package/dist/lib/tui-panel-state.d.ts +15 -1
  26. package/dist/lib/tui-panel-state.d.ts.map +1 -1
  27. package/dist/lib/tui-panel-state.js +13 -0
  28. package/dist/lib/tui-panel-state.js.map +1 -1
  29. package/dist/lib/tui-runtime.d.ts +28 -1
  30. package/dist/lib/tui-runtime.d.ts.map +1 -1
  31. package/dist/lib/tui-runtime.js +140 -29
  32. package/dist/lib/tui-runtime.js.map +1 -1
  33. package/dist/lib/types.d.ts +14 -0
  34. package/dist/lib/types.d.ts.map +1 -1
  35. package/dist/lib/types.js +10 -0
  36. package/dist/lib/types.js.map +1 -1
  37. package/dist/tui.d.ts +0 -1
  38. package/dist/tui.d.ts.map +1 -1
  39. package/dist/tui.tsx +383 -45
  40. 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: "loading" | "disabled" | "ready";
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":"AAGA,MAAM,MAAM,iBAAiB,GAAG;IAC9B,MAAM,EAAE,SAAS,GAAG,UAAU,GAAG,OAAO,CAAC;IACzC,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB,CAAC;AAEF,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAE1E;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,iBAAiB,GAAG,MAAM,EAAE,CAWvE"}
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;AAO/C,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"}
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;AAE9D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAmB/D,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,wBAAsB,gBAAgB,CAAC,MAAM,EAAE;IAC7C,GAAG,EAAE,YAAY,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CA6C7B"}
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"}
@@ -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
- export async function loadSidebarPanel(params) {
86
- const quotaClient = createTuiQuotaClient(params.api);
87
- const runtime = await resolveQuotaRuntimeContext({
88
- client: quotaClient,
89
- roots: getTuiRuntimeRootHints(params.api),
90
- sessionID: params.sessionID,
91
- resolveSessionMeta: (sessionID) => getTuiSessionModelMeta(params.api, sessionID),
92
- includeSessionMeta: (config) => config.onlyCurrentModel,
93
- });
94
- if (!runtime.config.enabled) {
95
- return {
96
- status: "disabled",
97
- lines: [],
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 request = createQuotaRuntimeRequestContext(runtime);
101
- const formatStyle = resolveQuotaFormatStyle(runtime.config.formatStyle);
102
- const result = await collectQuotaRenderData({
103
- client: runtime.client,
104
- config: runtime.config,
105
- configMeta: runtime.configMeta,
106
- request,
107
- surfaceExplicitProviderIssues: true,
108
- formatStyle,
109
- providers: runtime.providers,
110
- });
111
- if (result.selection?.waitingForCurrentSelection) {
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":"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"}
1
+ {"version":3,"file":"tui-runtime.js","sourceRoot":"","sources":["../../src/lib/tui-runtime.ts"],"names":[],"mappings":"AAMA,OAAO,EACL,0BAA0B,GAE3B,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,gCAAgC,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAC;AAC1G,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAE,2BAA2B,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,EAAE,4BAA4B,EAAE,MAAM,gCAAgC,CAAC;AAC9E,OAAO,EAAE,2BAA2B,EAAE,MAAM,yBAAyB,CAAC;AAEtE,MAAM,wBAAwB,GAAG,mBAAmB,CAAC;AAErD,SAAS,sBAAsB,CAAC,GAAiB;IAC/C,OAAO;QACL,YAAY,EAAE,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ;QACrC,eAAe,EAAE,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS;QACzC,iBAAiB,EAAE,OAAO,CAAC,GAAG,EAAE;KACjC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,GAAiB;IACnD,OAAO,0BAA0B,CAAC,sBAAsB,CAAC,GAAG,CAAC,CAAC,CAAC,aAAa,CAAC;AAC/E,CAAC;AAED,SAAS,oBAAoB,CAAC,GAAiB;IAC7C,OAAO;QACL,MAAM,EAAE;YACN,SAAS,EAAE,KAAK,IAAI,EAAE;gBACpB,IAAI,CAAC;oBACH,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC;wBACjC,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;wBACrD,OAAO;4BACL,IAAI,EAAE;gCACJ,SAAS,EAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,IAAI,EAAE;6BAC1C;yBACF,CAAC;oBACJ,CAAC;gBACH,CAAC;gBAAC,MAAM,CAAC;oBACP,8CAA8C;gBAChD,CAAC;gBAED,OAAO;oBACL,IAAI,EAAE;wBACJ,SAAS,EAAE,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC;qBACvE;iBACF,CAAC;YACJ,CAAC;YACD,GAAG,EAAE,KAAK,IAAI,EAAE;gBACd,IAAI,CAAC;oBACH,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC;wBAC3B,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;wBAC/C,OAAO;4BACL,IAAI,EACF,QAAQ,EAAE,IAAI,IAAI,OAAO,QAAQ,CAAC,IAAI,KAAK,QAAQ;gCACjD,CAAC,CAAC,QAAQ,CAAC,IAAI;gCACf,CAAC,CAAC,EAAE;yBACT,CAAC;oBACJ,CAAC;gBACH,CAAC;gBAAC,MAAM,CAAC;oBACP,mCAAmC;gBACrC,CAAC;gBAED,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;YACtB,CAAC;SACF;KACF,CAAC;AACJ,CAAC;AAED,SAAS,0BAA0B,CAAC,GAAiB,EAAE,SAAiB;IACtE,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IACvD,KAAK,IAAI,KAAK,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC;QAC1D,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAEjB,CAAC;QACd,MAAM,UAAU,GAAG,OAAO,EAAE,UAAU,IAAI,OAAO,EAAE,KAAK,EAAE,UAAU,CAAC;QACrE,MAAM,OAAO,GAAG,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC;QAC5D,IAAI,UAAU,IAAI,OAAO,EAAE,CAAC;YAC1B,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC;QACjC,CAAC;IACH,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,GAAiB,EACjB,SAAiB;IAEjB,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC;QAC9E,IAAI,QAAQ,EAAE,IAAI,EAAE,UAAU,IAAI,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;YAC1D,OAAO;gBACL,UAAU,EAAE,QAAQ,CAAC,IAAI,EAAE,UAAU;gBACrC,OAAO,EAAE,QAAQ,CAAC,IAAI,EAAE,OAAO;aAChC,CAAC;QACJ,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,4CAA4C;IAC9C,CAAC;IAED,OAAO,0BAA0B,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;AACpD,CAAC;AAwBD,SAAS,uBAAuB,CAAC,OAA4B;IAC3D,OAAO,OAAO,CAAC,MAAM,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC,OAAO,CAAC;AAC1E,CAAC;AAED,SAAS,uBAAuB,CAAC,OAA4B;IAC3D,OAAO,CACL,OAAO,CAAC,MAAM,CAAC,OAAO;QACtB,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO;QACvC,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAC,aAAa,CAC9C,CAAC;AACJ,CAAC;AAED,SAAS,iCAAiC;IACxC,OAAO;QACL,OAAO,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE,EAAE;QAC1C,OAAO,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE;KAChC,CAAC;AACJ,CAAC;AAED,SAAS,0BAA0B,CAAC,MAKnC;IACC,IAAI,CAAC,MAAM,CAAC,OAAO;QAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;IAEnD,IAAI,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,0BAA0B,EAAE,CAAC;QACxD,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;IAC/B,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI;QAC7B,CAAC,CAAC,2BAA2B,CAAC;YAC1B,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI;YACxB,kBAAkB,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,kBAAkB;YAC5D,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAC,QAAQ;SAC7E,CAAC;QACJ,CAAC,CAAC,EAAE,CAAC;IAEP,OAAO;QACL,MAAM,EAAE,OAAO;QACf,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,wBAAwB;KACpD,CAAC;AACJ,CAAC;AAED,SAAS,yBAAyB,CAAC,MAIlC;IACC,IAAI,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,0BAA0B,EAAE,CAAC;QACxD,OAAO;YACL,MAAM,EAAE,SAAS;YACjB,KAAK,EAAE,EAAE;SACV,CAAC;IACJ,CAAC;IAED,OAAO;QACL,MAAM,EAAE,OAAO;QACf,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI;YACvB,CAAC,CAAC,2BAA2B,CAAC;gBAC1B,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI;gBACxB,MAAM,EAAE,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE;aACtE,CAAC;YACJ,CAAC,CAAC,EAAE;KACP,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,yBAAyB,CAAC,MAGxC;IAIC,MAAM,WAAW,GAAG,uBAAuB,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IAC/E,MAAM,MAAM,GAAG,MAAM,sBAAsB,CAAC;QAC1C,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM;QAC7B,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM;QAC7B,UAAU,EAAE,MAAM,CAAC,OAAO,CAAC,UAAU;QACrC,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,6BAA6B,EAAE,IAAI;QACnC,WAAW;QACX,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC,SAAS;KACpC,CAAC,CAAC;IAEH,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;AACjC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,6BAA6B,CACjD,GAAiB;IAEjB,MAAM,WAAW,GAAG,oBAAoB,CAAC,GAAG,CAAC,CAAC;IAC9C,MAAM,OAAO,GAAG,MAAM,0BAA0B,CAAC;QAC/C,MAAM,EAAE,WAAW;QACnB,KAAK,EAAE,sBAAsB,CAAC,GAAG,CAAC;KACnC,CAAC,CAAC;IACH,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAC;IAChD,MAAM,sBAAsB,GAAG,4BAA4B,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACxE,MAAM,+BAA+B,GACnC,OAAO,CAAC,+BAA+B,IAAI,sBAAsB,CAAC;IACpE,MAAM,cAAc,GAClB,OAAO,CAAC,MAAM,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,IAAI,CAAC,+BAA+B,CAAC;IAEhF,OAAO;QACL,OAAO,EAAE;YACP,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC,OAAO;SAC1E;QACD,OAAO,EAAE;YACP,OAAO,EAAE,cAAc;YACvB,UAAU,EAAE,cAAc,IAAI,OAAO,CAAC,UAAU;YAChD,aAAa,EAAE,cAAc,IAAI,OAAO,CAAC,aAAa;YACtD,sBAAsB;YACtB,+BAA+B;SAChC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mCAAmC,CACvD,GAAiB;IAEjB,OAAO,CAAC,MAAM,6BAA6B,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC;AAC5D,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAAC,MAGjD;IACC,MAAM,WAAW,GAAG,oBAAoB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACrD,MAAM,OAAO,GAAG,MAAM,0BAA0B,CAAC;QAC/C,MAAM,EAAE,WAAW;QACnB,KAAK,EAAE,sBAAsB,CAAC,MAAM,CAAC,GAAG,CAAC;QACzC,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,kBAAkB,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,sBAAsB,CAAC,MAAM,CAAC,GAAG,EAAE,SAAS,CAAC;QAChF,kBAAkB,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,gBAAgB;KACxD,CAAC,CAAC;IAEH,MAAM,cAAc,GAAG,uBAAuB,CAAC,OAAO,CAAC,CAAC;IACxD,MAAM,cAAc,GAAG,uBAAuB,CAAC,OAAO,CAAC,CAAC;IAExD,IAAI,CAAC,cAAc,IAAI,CAAC,cAAc,EAAE,CAAC;QACvC,OAAO,iCAAiC,EAAE,CAAC;IAC7C,CAAC;IAED,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,yBAAyB,CAAC;QAC9D,OAAO;QACP,OAAO,EAAE,gCAAgC,CAAC,OAAO,CAAC;KACnD,CAAC,CAAC;IAEH,OAAO;QACL,OAAO,EAAE,cAAc;YACrB,CAAC,CAAC,yBAAyB,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;YAC7D,CAAC,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE,EAAE;QACrC,OAAO,EAAE,0BAA0B,CAAC;YAClC,OAAO;YACP,MAAM;YACN,OAAO,EAAE,cAAc;SACxB,CAAC;KACH,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAAC,MAE9C;IACC,MAAM,WAAW,GAAG,oBAAoB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACrD,MAAM,OAAO,GAAG,MAAM,0BAA0B,CAAC;QAC/C,MAAM,EAAE,WAAW;QACnB,KAAK,EAAE,sBAAsB,CAAC,MAAM,CAAC,GAAG,CAAC;KAC1C,CAAC,CAAC;IAEH,IACE,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO;QACvB,CAAC,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO;QACxC,CAAC,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAC,UAAU,EAC3C,CAAC;QACD,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;IAChC,CAAC;IAED,MAAM,WAAW,GAAwB;QACvC,GAAG,OAAO;QACV,MAAM,EAAE;YACN,GAAG,OAAO,CAAC,MAAM;YACjB,gBAAgB,EAAE,KAAK;YACvB,iBAAiB,EAAE,KAAK;SACzB;QACD,OAAO,EAAE,EAAE;KACZ,CAAC;IAEF,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,yBAAyB,CAAC;QACjD,OAAO,EAAE,WAAW;QACpB,OAAO,EAAE,gCAAgC,CAAC,WAAW,CAAC;KACvD,CAAC,CAAC;IAEH,OAAO,0BAA0B,CAAC;QAChC,OAAO,EAAE,WAAW;QACpB,MAAM;QACN,OAAO,EAAE,IAAI;KACd,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,MAGtC;IACC,OAAO,CAAC,MAAM,2BAA2B,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;AAC7D,CAAC"}
@@ -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 */