oc-go-usage-display 1.1.0 → 2.0.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 +245 -93
- package/bin/lib.js +395 -37
- package/bin/oc-go-usage-display-init.js +42 -13
- package/bin/oc-go-usage-display-remove.js +22 -17
- package/bin/oc-go-usage-display-show.js +47 -39
- package/bin/oc-go-usage-display-status.js +31 -52
- package/bin/oc-go-usage-display-update.js +27 -14
- package/dist/helpers.d.ts +116 -0
- package/dist/helpers.d.ts.map +1 -0
- package/dist/helpers.js +568 -0
- package/dist/helpers.js.map +1 -0
- package/dist/index.d.ts +5 -13
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +249 -159
- package/dist/index.js.map +1 -1
- package/dist/plugins/oc-go-usage-display.kilo.ts +678 -0
- package/dist/plugins/oc-go-usage-display.kilo.tsx +1272 -0
- package/dist/plugins/oc-go-usage-display.ts +678 -0
- package/dist/plugins/oc-go-usage-display.tsx +1018 -0
- package/dist/shared.d.ts +75 -7
- package/dist/shared.d.ts.map +1 -1
- package/dist/shared.js +448 -25
- package/dist/shared.js.map +1 -1
- package/dist/tui-shared.d.ts +109 -0
- package/dist/tui-shared.d.ts.map +1 -0
- package/dist/tui-shared.js +372 -0
- package/dist/tui-shared.js.map +1 -0
- package/dist/tui.d.ts +0 -17
- package/dist/tui.d.ts.map +1 -1
- package/dist/tui.js +229 -282
- package/dist/tui.js.map +1 -1
- package/dist/tui.kilo.d.ts +8 -0
- package/dist/tui.kilo.d.ts.map +1 -0
- package/dist/tui.kilo.js +502 -0
- package/dist/tui.kilo.js.map +1 -0
- package/package.json +46 -14
- package/src/helpers.ts +733 -0
- package/src/index.ts +316 -175
- package/src/shared.ts +545 -28
- package/src/tui-shared.tsx +705 -0
- package/src/tui.kilo.tsx +816 -0
- package/src/tui.tsx +352 -366
package/dist/tui.js
CHANGED
|
@@ -1,321 +1,268 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "@opentui/solid/jsx-runtime";
|
|
2
|
-
import { For, Show,
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
//
|
|
8
|
-
//
|
|
9
|
-
const
|
|
10
|
-
const POLL_INTERVAL_MS = 60_000;
|
|
11
|
-
const FETCH_TIMEOUT_MS = 10_000;
|
|
2
|
+
import { For, Show, createMemo, createSignal } from "solid-js";
|
|
3
|
+
import { buildGoModelFooters, buildModelMixSummary, relevantReset, formatPercentCell, meterSeverityForPercent, modelDisplayName, shortModelName, weightGoModels, } from "./helpers.js";
|
|
4
|
+
import { aggregateModelUsageFromMessages, errorMessage, MODELS_EMPTY_LABEL, OPENCODE_MODEL_NAME_MAX_CHARS, TOP_GO_MODELS_LABEL, } from "./shared.js";
|
|
5
|
+
import { CollapsibleSection, GoStatusline, GoUsageBlock, MeterBar, createCollapseState, createUsageStore, isGoUsageProvider, logUsageError, makeProviderResolver, readModelDisplayName, reactiveChild, resolveSurfaceSelection, } from "./tui-shared.js";
|
|
6
|
+
import { EVENT_TTL_MS, POLL_INTERVAL_MS } from "./tui-shared.js";
|
|
7
|
+
// This entry is the opencode build, so it resolves `OPENCODE_OC_GO_*` and never
|
|
8
|
+
// reads a Kilo-prefixed name.
|
|
9
|
+
const HOST = "opencode";
|
|
12
10
|
const SLOT_ORDER = 50;
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
const
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
if (typeof value === "boolean")
|
|
29
|
-
return value;
|
|
30
|
-
if (typeof value === "number") {
|
|
31
|
-
if (value === 1)
|
|
32
|
-
return true;
|
|
33
|
-
if (value === 0)
|
|
34
|
-
return false;
|
|
35
|
-
return null;
|
|
11
|
+
// The factory body lives here so the exported `goUsageTui` can wrap the whole
|
|
12
|
+
// initialization in a single fail-safe boundary. A throwing factory would
|
|
13
|
+
// destabilize the host's plugin load, so it must never reject.
|
|
14
|
+
async function initializeTui(api, options) {
|
|
15
|
+
const surfaces = resolveSurfaceSelection(options, api, HOST);
|
|
16
|
+
const usageStore = createUsageStore(api, HOST);
|
|
17
|
+
const collapse = createCollapseState(api);
|
|
18
|
+
const [activeProviderId, setActiveProviderId] = createSignal(undefined);
|
|
19
|
+
try {
|
|
20
|
+
const modelString = api.state?.config?.model;
|
|
21
|
+
if (typeof modelString === "string" && modelString.length > 0) {
|
|
22
|
+
const providerPart = modelString.split("/")[0];
|
|
23
|
+
if (providerPart !== undefined && providerPart.length > 0)
|
|
24
|
+
setActiveProviderId(providerPart);
|
|
25
|
+
}
|
|
36
26
|
}
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
const normalized = value.trim().toLowerCase();
|
|
40
|
-
if (normalized === "1" || normalized === "true")
|
|
41
|
-
return true;
|
|
42
|
-
if (normalized === "0" || normalized === "false")
|
|
43
|
-
return false;
|
|
44
|
-
return null;
|
|
45
|
-
}
|
|
46
|
-
export function isSnapshotEmpty(snapshot) {
|
|
47
|
-
return snapshot.rolling === null && snapshot.weekly === null && snapshot.monthly === null;
|
|
48
|
-
}
|
|
49
|
-
export function formatCompactLine(snapshot) {
|
|
50
|
-
const rolling = snapshot.rolling === null ? "5h n/a" : `5h ${snapshot.rolling.percent}%`;
|
|
51
|
-
const weekly = snapshot.weekly === null ? "7d n/a" : `7d ${snapshot.weekly.percent}%`;
|
|
52
|
-
const monthly = snapshot.monthly === null ? "30d n/a" : `30d ${snapshot.monthly.percent}%`;
|
|
53
|
-
return `Go ${rolling} | ${weekly} | ${monthly}`;
|
|
54
|
-
}
|
|
55
|
-
export function buildUsageRows(snapshot) {
|
|
56
|
-
const rows = [];
|
|
57
|
-
if (snapshot.rolling !== null) {
|
|
58
|
-
const reset = formatResetDuration(snapshot.rolling.resetInSec) ?? snapshot.rolling.resetText;
|
|
59
|
-
rows.push({ label: "5h", value: `${snapshot.rolling.percent}%${reset ? ` · resets ${reset}` : ""}` });
|
|
27
|
+
catch {
|
|
28
|
+
// State may not be ready; fall through to the event signal.
|
|
60
29
|
}
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
return { sidebar: sidebarOption ?? true, statusline: statuslineOption ?? true };
|
|
30
|
+
const resolveActiveProviderId = makeProviderResolver(api.state, activeProviderId);
|
|
31
|
+
// The host's message store is where the per-model mix comes from, and it
|
|
32
|
+
// changes without the plan changing. Bumping this token on the same events
|
|
33
|
+
// that refresh the plan keeps the mix from going stale behind a host that
|
|
34
|
+
// reuses the element it was handed instead of re-invoking this subtree (see
|
|
35
|
+
// the reactivity note in `tui-shared`).
|
|
36
|
+
const [stateToken, setStateToken] = createSignal(0);
|
|
37
|
+
function readSessionMessages(sessionId) {
|
|
38
|
+
if (sessionId.length === 0)
|
|
39
|
+
return [];
|
|
40
|
+
try {
|
|
41
|
+
return api.state.session.messages(sessionId);
|
|
42
|
+
}
|
|
43
|
+
catch {
|
|
44
|
+
return [];
|
|
77
45
|
}
|
|
78
|
-
if (isDisplayMode(options.display))
|
|
79
|
-
return surfaceSelectionFromDisplayMode(options.display);
|
|
80
|
-
}
|
|
81
|
-
const sidebarEnv = parseBooleanFlag(process.env.OPENCODE_GO_SIDEBAR);
|
|
82
|
-
const statuslineEnv = parseBooleanFlag(process.env.OPENCODE_GO_STATUSLINE);
|
|
83
|
-
if (sidebarEnv !== null || statuslineEnv !== null) {
|
|
84
|
-
return { sidebar: sidebarEnv ?? true, statusline: statuslineEnv ?? true };
|
|
85
46
|
}
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
47
|
+
// One model row: the display name the catalog gives it, then its weight bar
|
|
48
|
+
// and percent pushed to the right edge so the bars line up down the block.
|
|
49
|
+
function WeightedModelRow(props) {
|
|
50
|
+
const rounded = createMemo(() => Math.round(props.model.share));
|
|
51
|
+
const name = createMemo(() => modelDisplayName(readModelDisplayName(api, props.model.providerID, props.model.modelID), props.model.modelID, OPENCODE_MODEL_NAME_MAX_CHARS));
|
|
52
|
+
return (_jsxs("box", { flexDirection: "row", gap: 1, flexShrink: 0, children: [_jsx("text", { fg: props.theme.current.text, wrapMode: "none", flexShrink: 0, children: name() }), _jsx(MeterBar, { theme: props.theme, percent: props.model.share, severity: meterSeverityForPercent(rounded()) }), _jsx("text", { fg: props.theme.current.textMuted, wrapMode: "none", flexShrink: 0, children: formatPercentCell(rounded()) })] }));
|
|
89
53
|
}
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
54
|
+
// The model mix. Collapsed by default: the one-line summary is the cheap
|
|
55
|
+
// answer, and this block already leads a sidebar that the host's own Context
|
|
56
|
+
// panel follows. The count in the header is every Go model the session used,
|
|
57
|
+
// not the three rows below it, so a truncated ranking says so.
|
|
58
|
+
function TopGoModelsSection(props) {
|
|
59
|
+
const [isExpanded, setIsExpanded] = createSignal(false);
|
|
60
|
+
const weights = createMemo(() => weightGoModels(props.usage()?.models ?? []));
|
|
61
|
+
const rows = () => weights().models;
|
|
62
|
+
// The collapsed line names the same models the expanded rows do, in as few
|
|
63
|
+
// cells as the sidebar has.
|
|
64
|
+
const mix = createMemo(() => buildModelMixSummary(rows().map((model) => ({
|
|
65
|
+
name: shortModelName(modelDisplayName(readModelDisplayName(api, model.providerID, model.modelID), model.modelID, OPENCODE_MODEL_NAME_MAX_CHARS)),
|
|
66
|
+
share: model.share,
|
|
67
|
+
}))));
|
|
68
|
+
const body = createMemo(() => (_jsxs("box", { flexDirection: "column", gap: 1, paddingTop: 1, paddingLeft: 2, children: [_jsx(For, { each: rows(), children: (model) => _jsx(WeightedModelRow, { theme: props.theme, model: model }) }), _jsx(For, { each: buildGoModelFooters(weights()), children: (line) => (_jsx("text", { fg: props.theme.current.textMuted, wrapMode: "none", children: line })) })] })));
|
|
69
|
+
// The whole section is one function child, because two rules apply here and
|
|
70
|
+
// both are about the same thing: the host reuses the element it was handed,
|
|
71
|
+
// so a plain value is read once at mount. That is why the conditions below
|
|
72
|
+
// are read INSIDE this memo (re-running it is what re-reads them) and why
|
|
73
|
+
// `Show` is given a value rather than an accessor -- solid's `Show` memoizes
|
|
74
|
+
// `when` and never calls it, so an accessor here is a function object, and a
|
|
75
|
+
// function object is always truthy. The real host caught exactly that: a
|
|
76
|
+
// session with no assistant messages rendered `Top Go models (0)` with a
|
|
77
|
+
// caret that opened onto nothing.
|
|
78
|
+
const section = createMemo(() => {
|
|
79
|
+
// No models yet is not a fold: there is nothing to fold, and a caret that
|
|
80
|
+
// opens onto an empty box reads as a broken section.
|
|
81
|
+
if (weights().goModels === 0) {
|
|
82
|
+
return (_jsxs("box", { flexDirection: "column", children: [_jsx("text", { fg: props.theme.current.text, wrapMode: "none", children: _jsx("b", { children: TOP_GO_MODELS_LABEL }) }), _jsx("text", { fg: props.theme.current.textMuted, wrapMode: "none", children: MODELS_EMPTY_LABEL })] }));
|
|
83
|
+
}
|
|
84
|
+
return (_jsxs("box", { flexDirection: "column", children: [_jsx(CollapsibleSection, { theme: props.theme, label: TOP_GO_MODELS_LABEL, count: () => weights().goModels, expanded: isExpanded, onToggle: () => setIsExpanded((current) => !current), body: body }), _jsx(Show, { when: !isExpanded(), children: _jsx("text", { fg: props.theme.current.textMuted, wrapMode: "none", paddingLeft: 2, children: reactiveChild(mix) }) })] }));
|
|
85
|
+
});
|
|
86
|
+
return _jsx("box", { flexDirection: "column", children: reactiveChild(section) });
|
|
94
87
|
}
|
|
95
|
-
|
|
96
|
-
|
|
88
|
+
function GoSidebarPanel(props) {
|
|
89
|
+
const planResetLine = createMemo(() => {
|
|
90
|
+
const snapshot = usageStore.snapshot();
|
|
91
|
+
if (snapshot === null || snapshot.source === "unavailable")
|
|
92
|
+
return null;
|
|
93
|
+
return relevantReset(snapshot);
|
|
94
|
+
});
|
|
95
|
+
const sessionUsage = createMemo(() => {
|
|
96
|
+
stateToken();
|
|
97
|
+
return aggregateModelUsageFromMessages(readSessionMessages(props.sessionId));
|
|
98
|
+
});
|
|
99
|
+
return (_jsxs("box", { flexDirection: "column", gap: 1, children: [_jsx(GoUsageBlock, { api: api, theme: props.theme, snapshot: usageStore.snapshot, resetLine: planResetLine }), _jsx(TopGoModelsSection, { theme: props.theme, usage: sessionUsage })] }));
|
|
97
100
|
}
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
101
|
+
if (surfaces.sidebar) {
|
|
102
|
+
// Host-owned slot: `register` returns an id but the SDK exposes no
|
|
103
|
+
// unregister API, so there is nothing to dispose here (the slot dies
|
|
104
|
+
// with the host). Interval/event/command teardown below is the full
|
|
105
|
+
// dispose path.
|
|
106
|
+
try {
|
|
107
|
+
api.slots.register({
|
|
108
|
+
order: SLOT_ORDER,
|
|
109
|
+
slots: {
|
|
110
|
+
sidebar_content(ctx, props) {
|
|
111
|
+
// Individually guarded: a later render must never throw into the host.
|
|
112
|
+
try {
|
|
113
|
+
if (props.session_id.length === 0)
|
|
114
|
+
return null;
|
|
115
|
+
if (!isGoUsageProvider(resolveActiveProviderId(props.session_id)))
|
|
116
|
+
return null;
|
|
117
|
+
if (api.route.current.name !== "session")
|
|
118
|
+
return null;
|
|
119
|
+
if (collapse.isSidebarCollapsed())
|
|
120
|
+
return null;
|
|
121
|
+
return _jsx(GoSidebarPanel, { theme: ctx.theme, sessionId: props.session_id });
|
|
122
|
+
}
|
|
123
|
+
catch {
|
|
124
|
+
return null;
|
|
125
|
+
}
|
|
126
|
+
},
|
|
127
|
+
},
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
catch {
|
|
131
|
+
// Additive slot: a registration failure must not abort the plugin.
|
|
132
|
+
}
|
|
103
133
|
}
|
|
104
|
-
|
|
105
|
-
|
|
134
|
+
if (surfaces.statusline) {
|
|
135
|
+
// Host-owned slot (see sidebar note above): no unregister API exists,
|
|
136
|
+
// so disposal is a no-op for slots.
|
|
137
|
+
try {
|
|
138
|
+
api.slots.register({
|
|
139
|
+
order: SLOT_ORDER,
|
|
140
|
+
slots: {
|
|
141
|
+
session_prompt_right(_ctx, props) {
|
|
142
|
+
// Individually guarded: a later render must never throw into the host.
|
|
143
|
+
try {
|
|
144
|
+
if (props.session_id.length === 0)
|
|
145
|
+
return null;
|
|
146
|
+
if (!isGoUsageProvider(resolveActiveProviderId(props.session_id)))
|
|
147
|
+
return null;
|
|
148
|
+
if (collapse.isStatuslineCollapsed())
|
|
149
|
+
return null;
|
|
150
|
+
return _jsx(GoStatusline, { snapshot: usageStore.snapshot });
|
|
151
|
+
}
|
|
152
|
+
catch {
|
|
153
|
+
return null;
|
|
154
|
+
}
|
|
155
|
+
},
|
|
156
|
+
},
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
catch {
|
|
160
|
+
// Additive slot: a registration failure must not abort the plugin.
|
|
161
|
+
}
|
|
106
162
|
}
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
let
|
|
163
|
+
// `api.command` is a deprecated legacy shim that hosts may omit; guard so
|
|
164
|
+
// the plugin still initializes and disposes safely without it.
|
|
165
|
+
let unregisterToggleCommand = () => { };
|
|
110
166
|
try {
|
|
111
|
-
|
|
167
|
+
const unregister = api.command?.register(() => [
|
|
168
|
+
{
|
|
169
|
+
title: "Go usage: toggle sidebar",
|
|
170
|
+
value: "oc-go-usage-display.toggle-sidebar",
|
|
171
|
+
category: "Go",
|
|
172
|
+
onSelect: () => collapse.toggleSidebar(),
|
|
173
|
+
},
|
|
174
|
+
{
|
|
175
|
+
title: "Go usage: toggle statusline",
|
|
176
|
+
value: "oc-go-usage-display.toggle-statusline",
|
|
177
|
+
category: "Go",
|
|
178
|
+
onSelect: () => collapse.toggleStatusline(),
|
|
179
|
+
},
|
|
180
|
+
]);
|
|
181
|
+
if (typeof unregister === "function")
|
|
182
|
+
unregisterToggleCommand = unregister;
|
|
112
183
|
}
|
|
113
184
|
catch {
|
|
114
|
-
|
|
185
|
+
// Legacy command registration is optional; ignore failures.
|
|
115
186
|
}
|
|
116
|
-
|
|
117
|
-
|
|
187
|
+
let unsubscribeSession = () => { };
|
|
188
|
+
let unsubscribeMessage = () => { };
|
|
118
189
|
try {
|
|
119
|
-
api.
|
|
120
|
-
|
|
121
|
-
|
|
190
|
+
const unsubscribe = api.event.on("session.updated", (event) => {
|
|
191
|
+
const providerId = event?.properties?.info?.model?.providerID;
|
|
192
|
+
if (providerId !== undefined)
|
|
193
|
+
setActiveProviderId(providerId);
|
|
194
|
+
usageStore.refreshSafely(0);
|
|
195
|
+
});
|
|
196
|
+
if (typeof unsubscribe === "function")
|
|
197
|
+
unsubscribeSession = unsubscribe;
|
|
122
198
|
}
|
|
123
199
|
catch {
|
|
124
|
-
//
|
|
200
|
+
// Event subscription is additive; a failure must not abort the plugin.
|
|
125
201
|
}
|
|
126
|
-
}
|
|
127
|
-
// ---------------------------------------------------------------------------
|
|
128
|
-
// Data boundary (auth.json -> Bearer usage fetch; throws nothing)
|
|
129
|
-
// ---------------------------------------------------------------------------
|
|
130
|
-
async function fetchJsonWithTimeout(url, apiKey) {
|
|
131
|
-
const controller = new AbortController();
|
|
132
|
-
const timer = setTimeout(() => controller.abort(), FETCH_TIMEOUT_MS);
|
|
133
202
|
try {
|
|
134
|
-
const
|
|
135
|
-
|
|
136
|
-
|
|
203
|
+
const unsubscribe = api.event.on("message.updated", () => {
|
|
204
|
+
usageStore.refreshSafely(EVENT_TTL_MS);
|
|
205
|
+
// The model's share of the session changes with every finished message,
|
|
206
|
+
// not only when the plan does.
|
|
207
|
+
setStateToken((current) => current + 1);
|
|
137
208
|
});
|
|
138
|
-
if (
|
|
139
|
-
|
|
140
|
-
if (!response.ok)
|
|
141
|
-
return null;
|
|
142
|
-
try {
|
|
143
|
-
return (await response.json());
|
|
144
|
-
}
|
|
145
|
-
catch {
|
|
146
|
-
return null;
|
|
147
|
-
}
|
|
209
|
+
if (typeof unsubscribe === "function")
|
|
210
|
+
unsubscribeMessage = unsubscribe;
|
|
148
211
|
}
|
|
149
212
|
catch {
|
|
150
|
-
|
|
151
|
-
}
|
|
152
|
-
finally {
|
|
153
|
-
clearTimeout(timer);
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
async function loadUsageSnapshot() {
|
|
157
|
-
if (process.env.OPENCODE_GO_MOCK === "1")
|
|
158
|
-
return mockSnapshot();
|
|
159
|
-
const apiKey = toNonEmptyString(process.env.OPENCODE_GO_API_KEY) ?? readAuthJsonApiKey();
|
|
160
|
-
if (apiKey === null)
|
|
161
|
-
return null;
|
|
162
|
-
const payload = await fetchJsonWithTimeout(API_USAGE_URL, apiKey);
|
|
163
|
-
if (payload === null)
|
|
164
|
-
return null;
|
|
165
|
-
// Mirror the server: a rejected key is a distinct unavailable snapshot
|
|
166
|
-
// (surfaced via `apiError`) rather than a silent null.
|
|
167
|
-
if (isRecord(payload) && payload.__rejected === true) {
|
|
168
|
-
return unavailableSnapshot("API key rejected (401/403)");
|
|
213
|
+
// Event subscription is additive; a failure must not abort the plugin.
|
|
169
214
|
}
|
|
170
|
-
|
|
171
|
-
}
|
|
172
|
-
async function logUsageError(api, message) {
|
|
215
|
+
let pollTimer = null;
|
|
173
216
|
try {
|
|
174
|
-
|
|
217
|
+
pollTimer = setInterval(() => usageStore.refreshSafely(), POLL_INTERVAL_MS);
|
|
175
218
|
}
|
|
176
219
|
catch {
|
|
177
|
-
//
|
|
220
|
+
// No poll timer: the on-demand refresh below still runs.
|
|
178
221
|
}
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
//
|
|
182
|
-
//
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
let cachedAt = 0;
|
|
190
|
-
let refreshInFlight = false;
|
|
191
|
-
async function refreshUsage() {
|
|
192
|
-
if (refreshInFlight)
|
|
193
|
-
return;
|
|
194
|
-
if (Date.now() - cachedAt < POLL_INTERVAL_MS && usageSnapshot() !== null)
|
|
195
|
-
return;
|
|
196
|
-
refreshInFlight = true;
|
|
197
|
-
try {
|
|
198
|
-
const snapshot = await loadUsageSnapshot();
|
|
199
|
-
if (snapshot === null) {
|
|
200
|
-
if (usageSnapshot() === null) {
|
|
201
|
-
await logUsageError(api, "Go usage unavailable (not configured or request failed)");
|
|
222
|
+
try {
|
|
223
|
+
api.lifecycle.onDispose(() => {
|
|
224
|
+
// Each teardown step is isolated: one throwing unsubscribe must not
|
|
225
|
+
// prevent the rest (or leak into the host's dispose pass).
|
|
226
|
+
if (pollTimer !== null) {
|
|
227
|
+
try {
|
|
228
|
+
clearInterval(pollTimer);
|
|
229
|
+
}
|
|
230
|
+
catch {
|
|
231
|
+
// noop
|
|
202
232
|
}
|
|
203
|
-
return;
|
|
204
233
|
}
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
refreshInFlight = false;
|
|
213
|
-
}
|
|
214
|
-
}
|
|
215
|
-
function toggleSidebarCollapsed() {
|
|
216
|
-
const next = !isSidebarCollapsed();
|
|
217
|
-
setIsSidebarCollapsed(next);
|
|
218
|
-
try {
|
|
219
|
-
api.kv.set(KV_COLLAPSED_SIDEBAR_KEY, next);
|
|
220
|
-
}
|
|
221
|
-
catch {
|
|
222
|
-
// Collapse state is best-effort persistence only.
|
|
223
|
-
}
|
|
224
|
-
}
|
|
225
|
-
function toggleStatuslineCollapsed() {
|
|
226
|
-
const next = !isStatuslineCollapsed();
|
|
227
|
-
setIsStatuslineCollapsed(next);
|
|
228
|
-
try {
|
|
229
|
-
api.kv.set(KV_COLLAPSED_STATUSLINE_KEY, next);
|
|
230
|
-
}
|
|
231
|
-
catch {
|
|
232
|
-
// Collapse state is best-effort persistence only.
|
|
233
|
-
}
|
|
234
|
-
}
|
|
235
|
-
function GoSidebarPanel(props) {
|
|
236
|
-
createEffect(() => {
|
|
237
|
-
const snapshot = usageSnapshot();
|
|
238
|
-
if (snapshot !== null && snapshot.source === "unavailable") {
|
|
239
|
-
void logUsageError(api, snapshot.apiError ? `Go usage unavailable (${snapshot.apiError})` : "Go usage snapshot unavailable");
|
|
234
|
+
for (const teardown of [unsubscribeSession, unsubscribeMessage, unregisterToggleCommand]) {
|
|
235
|
+
try {
|
|
236
|
+
teardown();
|
|
237
|
+
}
|
|
238
|
+
catch {
|
|
239
|
+
// noop
|
|
240
|
+
}
|
|
240
241
|
}
|
|
241
242
|
});
|
|
242
|
-
return (_jsxs("box", { flexDirection: "column", children: [_jsx("text", { fg: props.theme.current.text, children: _jsx("b", { children: "Go Usage" }) }), _jsx(Show, { when: usageSnapshot(), fallback: _jsx("text", { fg: props.theme.current.textMuted, wrapMode: "none", children: "Go loading\u2026" }), children: (snapshot) => (_jsx(For, { each: buildUsageRows(snapshot()), children: (row) => (_jsxs("text", { fg: props.theme.current.textMuted, wrapMode: "none", children: [row.label, " ", row.value] })) })) })] }));
|
|
243
243
|
}
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
}
|
|
244
|
+
catch {
|
|
245
|
+
// Lifecycle registration is best-effort; never leak a timer into the host.
|
|
246
|
+
if (pollTimer !== null) {
|
|
247
|
+
try {
|
|
248
|
+
clearInterval(pollTimer);
|
|
249
|
+
}
|
|
250
|
+
catch {
|
|
251
|
+
// noop
|
|
252
|
+
}
|
|
253
|
+
}
|
|
250
254
|
}
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
api.slots.register({
|
|
257
|
-
order: SLOT_ORDER,
|
|
258
|
-
slots: {
|
|
259
|
-
sidebar_content(ctx, props) {
|
|
260
|
-
if (props.session_id.length === 0)
|
|
261
|
-
return null;
|
|
262
|
-
if (api.route.current.name !== "session")
|
|
263
|
-
return null;
|
|
264
|
-
if (isSidebarCollapsed())
|
|
265
|
-
return null;
|
|
266
|
-
return _jsx(GoSidebarPanel, { theme: ctx.theme });
|
|
267
|
-
},
|
|
268
|
-
},
|
|
269
|
-
});
|
|
255
|
+
await usageStore.refresh();
|
|
256
|
+
}
|
|
257
|
+
const goUsageTui = async (api, options) => {
|
|
258
|
+
try {
|
|
259
|
+
await initializeTui(api, options);
|
|
270
260
|
}
|
|
271
|
-
|
|
272
|
-
//
|
|
273
|
-
//
|
|
274
|
-
api
|
|
275
|
-
order: SLOT_ORDER,
|
|
276
|
-
slots: {
|
|
277
|
-
session_prompt_right(_ctx, props) {
|
|
278
|
-
if (props.session_id.length === 0)
|
|
279
|
-
return null;
|
|
280
|
-
if (isStatuslineCollapsed())
|
|
281
|
-
return null;
|
|
282
|
-
return _jsx(GoStatusline, {});
|
|
283
|
-
},
|
|
284
|
-
},
|
|
285
|
-
});
|
|
261
|
+
catch (error) {
|
|
262
|
+
// Best-effort and non-blocking: never delay plugin resolution on the host
|
|
263
|
+
// log and never let an initialization error reject into the host.
|
|
264
|
+
void logUsageError(api, `Go usage TUI failed to initialize: ${errorMessage(error)}; continuing without display`);
|
|
286
265
|
}
|
|
287
|
-
// `api.command` is a deprecated legacy shim that hosts may omit; guard so
|
|
288
|
-
// the plugin still initializes and disposes safely without it.
|
|
289
|
-
const unregisterToggleCommand = api.command?.register(() => [
|
|
290
|
-
{
|
|
291
|
-
title: "Go usage: toggle sidebar",
|
|
292
|
-
value: "oc-go-usage-display.toggle-sidebar",
|
|
293
|
-
category: "Go",
|
|
294
|
-
onSelect: () => toggleSidebarCollapsed(),
|
|
295
|
-
},
|
|
296
|
-
{
|
|
297
|
-
title: "Go usage: toggle statusline",
|
|
298
|
-
value: "oc-go-usage-display.toggle-statusline",
|
|
299
|
-
category: "Go",
|
|
300
|
-
onSelect: () => toggleStatuslineCollapsed(),
|
|
301
|
-
},
|
|
302
|
-
]) ?? (() => { });
|
|
303
|
-
const unsubscribeSession = api.event.on("session.updated", () => {
|
|
304
|
-
void refreshUsage();
|
|
305
|
-
});
|
|
306
|
-
const unsubscribeMessage = api.event.on("message.updated", () => {
|
|
307
|
-
void refreshUsage();
|
|
308
|
-
});
|
|
309
|
-
const pollTimer = setInterval(() => {
|
|
310
|
-
void refreshUsage();
|
|
311
|
-
}, POLL_INTERVAL_MS);
|
|
312
|
-
api.lifecycle.onDispose(() => {
|
|
313
|
-
clearInterval(pollTimer);
|
|
314
|
-
unsubscribeSession();
|
|
315
|
-
unsubscribeMessage();
|
|
316
|
-
unregisterToggleCommand();
|
|
317
|
-
});
|
|
318
|
-
await refreshUsage();
|
|
319
266
|
};
|
|
320
267
|
export default { id: "oc-go-usage-display", tui: goUsageTui };
|
|
321
268
|
//# sourceMappingURL=tui.js.map
|
package/dist/tui.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tui.js","sourceRoot":"","sources":["../src/tui.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tui.js","sourceRoot":"","sources":["../src/tui.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tui.kilo.d.ts","sourceRoot":"","sources":["../src/tui.kilo.tsx"],"names":[],"mappings":"AAAA,sCAAsC;AAoEtC,OAAO,KAAK,EACV,SAAS,EAKV,MAAM,sBAAsB,CAAC;;;;;AAquB9B,wBAAwF"}
|