oc-go-usage-display 1.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/LICENSE +21 -0
- package/README.md +90 -0
- package/bin/lib.js +312 -0
- package/bin/oc-go-usage-display-init.js +35 -0
- package/bin/oc-go-usage-display-show.js +65 -0
- package/bin/oc-go-usage-display-status.js +64 -0
- package/bin/oc-go-usage-display-update.js +66 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +527 -0
- package/dist/index.js.map +1 -0
- package/dist/tui.d.ts +8 -0
- package/dist/tui.d.ts.map +1 -0
- package/dist/tui.js +419 -0
- package/dist/tui.js.map +1 -0
- package/package.json +66 -0
package/dist/tui.js
ADDED
|
@@ -0,0 +1,419 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "@opentui/solid/jsx-runtime";
|
|
2
|
+
import { For, Show, createEffect, createSignal } from "solid-js";
|
|
3
|
+
import * as fs from "node:fs";
|
|
4
|
+
import * as os from "node:os";
|
|
5
|
+
import * as path from "node:path";
|
|
6
|
+
// ---------------------------------------------------------------------------
|
|
7
|
+
// Constants
|
|
8
|
+
// ---------------------------------------------------------------------------
|
|
9
|
+
const API_USAGE_URL = "https://opencode.ai/zen/go/v1/usage";
|
|
10
|
+
const POLL_INTERVAL_MS = 60_000;
|
|
11
|
+
const FETCH_TIMEOUT_MS = 10_000;
|
|
12
|
+
const SLOT_ORDER = 50;
|
|
13
|
+
const KV_DISPLAY_KEY = "display";
|
|
14
|
+
const KV_COLLAPSED_SIDEBAR_KEY = "collapsed_sidebar";
|
|
15
|
+
const KV_COLLAPSED_STATUSLINE_KEY = "collapsed_statusline";
|
|
16
|
+
const KV_COLLAPSED_LEGACY_KEY = "collapsed";
|
|
17
|
+
const LOG_SERVICE = "oc-go-usage-display";
|
|
18
|
+
const CONFIG_DIR = path.join(os.homedir(), ".config", "opencode");
|
|
19
|
+
function dataShareAuthPath() {
|
|
20
|
+
const xdgDataHome = toNonEmptyString(process.env.XDG_DATA_HOME);
|
|
21
|
+
if (xdgDataHome)
|
|
22
|
+
return path.join(xdgDataHome, "opencode", "auth.json");
|
|
23
|
+
return path.join(os.homedir(), ".local", "share", "opencode", "auth.json");
|
|
24
|
+
}
|
|
25
|
+
function authJsonPaths() {
|
|
26
|
+
return [dataShareAuthPath(), path.join(CONFIG_DIR, "auth.json")];
|
|
27
|
+
}
|
|
28
|
+
// ---------------------------------------------------------------------------
|
|
29
|
+
// Small pure helpers
|
|
30
|
+
// ---------------------------------------------------------------------------
|
|
31
|
+
function isRecord(value) {
|
|
32
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
33
|
+
}
|
|
34
|
+
function toFiniteNumber(value) {
|
|
35
|
+
if (typeof value !== "number" || !Number.isFinite(value))
|
|
36
|
+
return null;
|
|
37
|
+
return value;
|
|
38
|
+
}
|
|
39
|
+
function toNonEmptyString(value) {
|
|
40
|
+
if (typeof value !== "string")
|
|
41
|
+
return null;
|
|
42
|
+
const trimmed = value.trim();
|
|
43
|
+
return trimmed.length > 0 ? trimmed : null;
|
|
44
|
+
}
|
|
45
|
+
function isDisplayMode(value) {
|
|
46
|
+
return value === "sidebar" || value === "statusline" || value === "both";
|
|
47
|
+
}
|
|
48
|
+
function surfaceSelectionFromDisplayMode(mode) {
|
|
49
|
+
return { sidebar: mode !== "statusline", statusline: mode !== "sidebar" };
|
|
50
|
+
}
|
|
51
|
+
function parseBooleanFlag(value) {
|
|
52
|
+
if (typeof value === "boolean")
|
|
53
|
+
return value;
|
|
54
|
+
if (typeof value === "number") {
|
|
55
|
+
if (value === 1)
|
|
56
|
+
return true;
|
|
57
|
+
if (value === 0)
|
|
58
|
+
return false;
|
|
59
|
+
return null;
|
|
60
|
+
}
|
|
61
|
+
if (typeof value !== "string")
|
|
62
|
+
return null;
|
|
63
|
+
const normalized = value.trim().toLowerCase();
|
|
64
|
+
if (normalized === "1" || normalized === "true")
|
|
65
|
+
return true;
|
|
66
|
+
if (normalized === "0" || normalized === "false")
|
|
67
|
+
return false;
|
|
68
|
+
return null;
|
|
69
|
+
}
|
|
70
|
+
function formatResetDuration(totalSec) {
|
|
71
|
+
if (totalSec === null || !Number.isFinite(totalSec) || totalSec < 0)
|
|
72
|
+
return null;
|
|
73
|
+
const sec = Math.floor(totalSec);
|
|
74
|
+
const hours = Math.floor(sec / 3600);
|
|
75
|
+
const minutes = Math.floor((sec % 3600) / 60);
|
|
76
|
+
if (hours > 0)
|
|
77
|
+
return `${hours}h${minutes}m`;
|
|
78
|
+
if (minutes > 0)
|
|
79
|
+
return `${minutes}m`;
|
|
80
|
+
return `${sec}s`;
|
|
81
|
+
}
|
|
82
|
+
function isSnapshotEmpty(snapshot) {
|
|
83
|
+
return snapshot.rolling === null && snapshot.weekly === null && snapshot.monthly === null;
|
|
84
|
+
}
|
|
85
|
+
function formatCompactLine(snapshot) {
|
|
86
|
+
const rolling = snapshot.rolling === null ? "5h n/a" : `5h ${snapshot.rolling.percent}%`;
|
|
87
|
+
const weekly = snapshot.weekly === null ? "7d n/a" : `7d ${snapshot.weekly.percent}%`;
|
|
88
|
+
return `Go ${rolling} | ${weekly}`;
|
|
89
|
+
}
|
|
90
|
+
function buildUsageRows(snapshot) {
|
|
91
|
+
const rows = [];
|
|
92
|
+
if (snapshot.rolling !== null) {
|
|
93
|
+
const reset = formatResetDuration(snapshot.rolling.resetInSec) ?? snapshot.rolling.resetText;
|
|
94
|
+
rows.push({ label: "5h", value: `${snapshot.rolling.percent}%${reset ? ` · resets ${reset}` : ""}` });
|
|
95
|
+
}
|
|
96
|
+
if (snapshot.weekly !== null)
|
|
97
|
+
rows.push({ label: "7d", value: `${snapshot.weekly.percent}%` });
|
|
98
|
+
if (snapshot.monthly !== null)
|
|
99
|
+
rows.push({ label: "30d", value: `${snapshot.monthly.percent}%` });
|
|
100
|
+
return rows;
|
|
101
|
+
}
|
|
102
|
+
// ---------------------------------------------------------------------------
|
|
103
|
+
// Settings boundary (new toggles > legacy display; tui.json options > env >
|
|
104
|
+
// api.kv > default both on)
|
|
105
|
+
// ---------------------------------------------------------------------------
|
|
106
|
+
function resolveSurfaceSelection(options, api) {
|
|
107
|
+
if (options !== undefined) {
|
|
108
|
+
const sidebarOption = parseBooleanFlag(options.sidebar);
|
|
109
|
+
const statuslineOption = parseBooleanFlag(options.statusline);
|
|
110
|
+
if (sidebarOption !== null || statuslineOption !== null) {
|
|
111
|
+
return { sidebar: sidebarOption ?? true, statusline: statuslineOption ?? true };
|
|
112
|
+
}
|
|
113
|
+
if (isDisplayMode(options.display))
|
|
114
|
+
return surfaceSelectionFromDisplayMode(options.display);
|
|
115
|
+
}
|
|
116
|
+
const sidebarEnv = parseBooleanFlag(process.env.OPENCODE_GO_SIDEBAR);
|
|
117
|
+
const statuslineEnv = parseBooleanFlag(process.env.OPENCODE_GO_STATUSLINE);
|
|
118
|
+
if (sidebarEnv !== null || statuslineEnv !== null) {
|
|
119
|
+
return { sidebar: sidebarEnv ?? true, statusline: statuslineEnv ?? true };
|
|
120
|
+
}
|
|
121
|
+
const displayEnv = toNonEmptyString(process.env.OPENCODE_GO_DISPLAY);
|
|
122
|
+
if (displayEnv !== null && isDisplayMode(displayEnv)) {
|
|
123
|
+
return surfaceSelectionFromDisplayMode(displayEnv);
|
|
124
|
+
}
|
|
125
|
+
try {
|
|
126
|
+
const stored = api.kv.get(KV_DISPLAY_KEY, "both");
|
|
127
|
+
if (isDisplayMode(stored))
|
|
128
|
+
return surfaceSelectionFromDisplayMode(stored);
|
|
129
|
+
}
|
|
130
|
+
catch {
|
|
131
|
+
// Persisted settings are best-effort; fall through to the default.
|
|
132
|
+
}
|
|
133
|
+
return { sidebar: true, statusline: true };
|
|
134
|
+
}
|
|
135
|
+
function readCollapsedFlag(api, key) {
|
|
136
|
+
try {
|
|
137
|
+
return api.kv.get(key, false) === true;
|
|
138
|
+
}
|
|
139
|
+
catch {
|
|
140
|
+
return false;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
function migrateLegacyCollapsedFlag(api) {
|
|
144
|
+
let legacyCollapsed = false;
|
|
145
|
+
try {
|
|
146
|
+
legacyCollapsed = api.kv.get(KV_COLLAPSED_LEGACY_KEY, false) === true;
|
|
147
|
+
}
|
|
148
|
+
catch {
|
|
149
|
+
return;
|
|
150
|
+
}
|
|
151
|
+
if (!legacyCollapsed)
|
|
152
|
+
return;
|
|
153
|
+
try {
|
|
154
|
+
api.kv.set(KV_COLLAPSED_SIDEBAR_KEY, true);
|
|
155
|
+
api.kv.set(KV_COLLAPSED_STATUSLINE_KEY, true);
|
|
156
|
+
api.kv.set(KV_COLLAPSED_LEGACY_KEY, false);
|
|
157
|
+
}
|
|
158
|
+
catch {
|
|
159
|
+
// Collapse state is best-effort persistence only.
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
// ---------------------------------------------------------------------------
|
|
163
|
+
// Data boundary (auth.json -> Bearer usage fetch; throws nothing)
|
|
164
|
+
// ---------------------------------------------------------------------------
|
|
165
|
+
function readAuthJsonApiKey() {
|
|
166
|
+
for (const authPath of authJsonPaths()) {
|
|
167
|
+
let raw;
|
|
168
|
+
try {
|
|
169
|
+
raw = fs.readFileSync(authPath, "utf8");
|
|
170
|
+
}
|
|
171
|
+
catch {
|
|
172
|
+
continue;
|
|
173
|
+
}
|
|
174
|
+
let parsed;
|
|
175
|
+
try {
|
|
176
|
+
parsed = JSON.parse(raw);
|
|
177
|
+
}
|
|
178
|
+
catch {
|
|
179
|
+
continue;
|
|
180
|
+
}
|
|
181
|
+
if (!isRecord(parsed))
|
|
182
|
+
continue;
|
|
183
|
+
const goEntry = parsed["opencode-go"];
|
|
184
|
+
const fallbackEntry = parsed["opencode"];
|
|
185
|
+
const goKey = isRecord(goEntry) ? toNonEmptyString(goEntry.key) : null;
|
|
186
|
+
if (goKey)
|
|
187
|
+
return goKey;
|
|
188
|
+
const fallbackKey = isRecord(fallbackEntry) ? toNonEmptyString(fallbackEntry.key) : null;
|
|
189
|
+
if (fallbackKey)
|
|
190
|
+
return fallbackKey;
|
|
191
|
+
}
|
|
192
|
+
return null;
|
|
193
|
+
}
|
|
194
|
+
function extractWindow(candidate) {
|
|
195
|
+
if (!isRecord(candidate))
|
|
196
|
+
return null;
|
|
197
|
+
const percent = toFiniteNumber(candidate.percent ??
|
|
198
|
+
candidate.usagePercent ??
|
|
199
|
+
candidate.usedPercent ??
|
|
200
|
+
candidate.value ??
|
|
201
|
+
candidate.usage);
|
|
202
|
+
if (percent === null)
|
|
203
|
+
return null;
|
|
204
|
+
return {
|
|
205
|
+
percent: Math.round(percent),
|
|
206
|
+
resetInSec: toFiniteNumber(candidate.resetInSec ?? candidate.resetInSeconds ?? null),
|
|
207
|
+
resetText: toNonEmptyString(candidate.resetText ?? candidate.reset ?? null),
|
|
208
|
+
};
|
|
209
|
+
}
|
|
210
|
+
function extractSnapshotFromApiPayload(payload) {
|
|
211
|
+
if (!isRecord(payload))
|
|
212
|
+
return null;
|
|
213
|
+
const containers = [payload];
|
|
214
|
+
for (const key of ["usage", "data", "go"]) {
|
|
215
|
+
if (isRecord(payload[key]))
|
|
216
|
+
containers.push(payload[key]);
|
|
217
|
+
}
|
|
218
|
+
for (const container of containers) {
|
|
219
|
+
if (!isRecord(container))
|
|
220
|
+
continue;
|
|
221
|
+
const rolling = extractWindow(container.rolling ?? container.rollingUsage ?? container["5h"]);
|
|
222
|
+
const weekly = extractWindow(container.weekly ?? container.weeklyUsage ?? container["7d"]);
|
|
223
|
+
const monthly = extractWindow(container.monthly ?? container.monthlyUsage ?? container["30d"]);
|
|
224
|
+
if (rolling !== null || weekly !== null || monthly !== null) {
|
|
225
|
+
return { rolling, weekly, monthly, source: "api", fetchedAt: Date.now() };
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
return null;
|
|
229
|
+
}
|
|
230
|
+
async function fetchJsonWithTimeout(url, apiKey) {
|
|
231
|
+
const controller = new AbortController();
|
|
232
|
+
const timer = setTimeout(() => controller.abort(), FETCH_TIMEOUT_MS);
|
|
233
|
+
try {
|
|
234
|
+
const response = await fetch(url, {
|
|
235
|
+
signal: controller.signal,
|
|
236
|
+
headers: { Authorization: `Bearer ${apiKey}`, Accept: "application/json" },
|
|
237
|
+
});
|
|
238
|
+
if (response.status === 401 || response.status === 403)
|
|
239
|
+
return { __rejected: true };
|
|
240
|
+
if (!response.ok)
|
|
241
|
+
return null;
|
|
242
|
+
try {
|
|
243
|
+
return (await response.json());
|
|
244
|
+
}
|
|
245
|
+
catch {
|
|
246
|
+
return null;
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
catch {
|
|
250
|
+
return null;
|
|
251
|
+
}
|
|
252
|
+
finally {
|
|
253
|
+
clearTimeout(timer);
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
function mockSnapshot() {
|
|
257
|
+
return {
|
|
258
|
+
rolling: { percent: 42, resetInSec: 7543, resetText: null },
|
|
259
|
+
weekly: { percent: 15, resetInSec: null, resetText: null },
|
|
260
|
+
monthly: { percent: 61, resetInSec: null, resetText: null },
|
|
261
|
+
source: "mock",
|
|
262
|
+
fetchedAt: Date.now(),
|
|
263
|
+
};
|
|
264
|
+
}
|
|
265
|
+
async function loadUsageSnapshot() {
|
|
266
|
+
if (process.env.OPENCODE_GO_MOCK === "1")
|
|
267
|
+
return mockSnapshot();
|
|
268
|
+
const apiKey = toNonEmptyString(process.env.OPENCODE_GO_API_KEY) ?? readAuthJsonApiKey();
|
|
269
|
+
if (apiKey === null)
|
|
270
|
+
return null;
|
|
271
|
+
const payload = await fetchJsonWithTimeout(API_USAGE_URL, apiKey);
|
|
272
|
+
if (payload === null)
|
|
273
|
+
return null;
|
|
274
|
+
if (isRecord(payload) && payload.__rejected === true)
|
|
275
|
+
return null;
|
|
276
|
+
return extractSnapshotFromApiPayload(payload);
|
|
277
|
+
}
|
|
278
|
+
async function logUsageError(api, message) {
|
|
279
|
+
try {
|
|
280
|
+
await api.client.app.log({ service: LOG_SERVICE, level: "error", message });
|
|
281
|
+
}
|
|
282
|
+
catch {
|
|
283
|
+
// Logging is best-effort; the usage display must never break the host.
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
// ---------------------------------------------------------------------------
|
|
287
|
+
// TUI plugin
|
|
288
|
+
// ---------------------------------------------------------------------------
|
|
289
|
+
const goUsageTui = async (api, options) => {
|
|
290
|
+
const surfaces = resolveSurfaceSelection(options, api);
|
|
291
|
+
migrateLegacyCollapsedFlag(api);
|
|
292
|
+
const [usageSnapshot, setUsageSnapshot] = createSignal(null);
|
|
293
|
+
const [isSidebarCollapsed, setIsSidebarCollapsed] = createSignal(readCollapsedFlag(api, KV_COLLAPSED_SIDEBAR_KEY));
|
|
294
|
+
const [isStatuslineCollapsed, setIsStatuslineCollapsed] = createSignal(readCollapsedFlag(api, KV_COLLAPSED_STATUSLINE_KEY));
|
|
295
|
+
let cachedAt = 0;
|
|
296
|
+
let refreshInFlight = false;
|
|
297
|
+
async function refreshUsage() {
|
|
298
|
+
if (refreshInFlight)
|
|
299
|
+
return;
|
|
300
|
+
if (Date.now() - cachedAt < POLL_INTERVAL_MS && usageSnapshot() !== null)
|
|
301
|
+
return;
|
|
302
|
+
refreshInFlight = true;
|
|
303
|
+
try {
|
|
304
|
+
const snapshot = await loadUsageSnapshot();
|
|
305
|
+
if (snapshot === null) {
|
|
306
|
+
if (usageSnapshot() === null) {
|
|
307
|
+
await logUsageError(api, "Go usage unavailable (not configured or request failed)");
|
|
308
|
+
}
|
|
309
|
+
return;
|
|
310
|
+
}
|
|
311
|
+
cachedAt = Date.now();
|
|
312
|
+
setUsageSnapshot(snapshot);
|
|
313
|
+
}
|
|
314
|
+
catch {
|
|
315
|
+
// Keep stale data; the panel simply shows the last known snapshot.
|
|
316
|
+
}
|
|
317
|
+
finally {
|
|
318
|
+
refreshInFlight = false;
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
function toggleSidebarCollapsed() {
|
|
322
|
+
const next = !isSidebarCollapsed();
|
|
323
|
+
setIsSidebarCollapsed(next);
|
|
324
|
+
try {
|
|
325
|
+
api.kv.set(KV_COLLAPSED_SIDEBAR_KEY, next);
|
|
326
|
+
}
|
|
327
|
+
catch {
|
|
328
|
+
// Collapse state is best-effort persistence only.
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
function toggleStatuslineCollapsed() {
|
|
332
|
+
const next = !isStatuslineCollapsed();
|
|
333
|
+
setIsStatuslineCollapsed(next);
|
|
334
|
+
try {
|
|
335
|
+
api.kv.set(KV_COLLAPSED_STATUSLINE_KEY, next);
|
|
336
|
+
}
|
|
337
|
+
catch {
|
|
338
|
+
// Collapse state is best-effort persistence only.
|
|
339
|
+
}
|
|
340
|
+
}
|
|
341
|
+
function GoSidebarPanel(props) {
|
|
342
|
+
createEffect(() => {
|
|
343
|
+
const snapshot = usageSnapshot();
|
|
344
|
+
if (snapshot !== null && snapshot.source === "unavailable") {
|
|
345
|
+
void logUsageError(api, "Go usage snapshot unavailable");
|
|
346
|
+
}
|
|
347
|
+
});
|
|
348
|
+
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] })) })) })] }));
|
|
349
|
+
}
|
|
350
|
+
function GoStatusline() {
|
|
351
|
+
return (_jsx(Show, { when: usageSnapshot(), fallback: null, children: (snapshot) => {
|
|
352
|
+
if (isSnapshotEmpty(snapshot()))
|
|
353
|
+
return null;
|
|
354
|
+
return _jsx("text", { children: formatCompactLine(snapshot()) });
|
|
355
|
+
} }));
|
|
356
|
+
}
|
|
357
|
+
if (surfaces.sidebar) {
|
|
358
|
+
api.slots.register({
|
|
359
|
+
order: SLOT_ORDER,
|
|
360
|
+
slots: {
|
|
361
|
+
sidebar_content(ctx, props) {
|
|
362
|
+
if (props.session_id.length === 0)
|
|
363
|
+
return null;
|
|
364
|
+
if (api.route.current.name !== "session")
|
|
365
|
+
return null;
|
|
366
|
+
if (isSidebarCollapsed())
|
|
367
|
+
return null;
|
|
368
|
+
return _jsx(GoSidebarPanel, { theme: ctx.theme });
|
|
369
|
+
},
|
|
370
|
+
},
|
|
371
|
+
});
|
|
372
|
+
}
|
|
373
|
+
if (surfaces.statusline) {
|
|
374
|
+
api.slots.register({
|
|
375
|
+
order: SLOT_ORDER,
|
|
376
|
+
slots: {
|
|
377
|
+
session_prompt_right(_ctx, props) {
|
|
378
|
+
if (props.session_id.length === 0)
|
|
379
|
+
return null;
|
|
380
|
+
if (isStatuslineCollapsed())
|
|
381
|
+
return null;
|
|
382
|
+
return _jsx(GoStatusline, {});
|
|
383
|
+
},
|
|
384
|
+
},
|
|
385
|
+
});
|
|
386
|
+
}
|
|
387
|
+
const unregisterToggleCommand = api.command.register(() => [
|
|
388
|
+
{
|
|
389
|
+
title: "Go usage: toggle sidebar",
|
|
390
|
+
value: "oc-go-usage-display.toggle-sidebar",
|
|
391
|
+
category: "Go",
|
|
392
|
+
onSelect: () => toggleSidebarCollapsed(),
|
|
393
|
+
},
|
|
394
|
+
{
|
|
395
|
+
title: "Go usage: toggle statusline",
|
|
396
|
+
value: "oc-go-usage-display.toggle-statusline",
|
|
397
|
+
category: "Go",
|
|
398
|
+
onSelect: () => toggleStatuslineCollapsed(),
|
|
399
|
+
},
|
|
400
|
+
]);
|
|
401
|
+
const unsubscribeSession = api.event.on("session.updated", () => {
|
|
402
|
+
void refreshUsage();
|
|
403
|
+
});
|
|
404
|
+
const unsubscribeMessage = api.event.on("message.updated", () => {
|
|
405
|
+
void refreshUsage();
|
|
406
|
+
});
|
|
407
|
+
const pollTimer = setInterval(() => {
|
|
408
|
+
void refreshUsage();
|
|
409
|
+
}, POLL_INTERVAL_MS);
|
|
410
|
+
api.lifecycle.onDispose(() => {
|
|
411
|
+
clearInterval(pollTimer);
|
|
412
|
+
unsubscribeSession();
|
|
413
|
+
unsubscribeMessage();
|
|
414
|
+
unregisterToggleCommand();
|
|
415
|
+
});
|
|
416
|
+
await refreshUsage();
|
|
417
|
+
};
|
|
418
|
+
export default { id: "oc-go-usage-display", tui: goUsageTui };
|
|
419
|
+
//# sourceMappingURL=tui.js.map
|
package/dist/tui.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tui.js","sourceRoot":"","sources":["../src/tui.tsx"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "oc-go-usage-display",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "OpenCode Go subscription usage opencode-plugin: go_usage tool (server) and Go Usage sidebar panel + session_prompt_right statusline (TUI).",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "./dist/index.js",
|
|
7
|
+
"exports": {
|
|
8
|
+
"./server": {
|
|
9
|
+
"import": "./dist/index.js",
|
|
10
|
+
"types": "./dist/index.d.ts"
|
|
11
|
+
},
|
|
12
|
+
"./tui": {
|
|
13
|
+
"import": "./dist/tui.js",
|
|
14
|
+
"types": "./dist/tui.d.ts"
|
|
15
|
+
},
|
|
16
|
+
"./package.json": "./package.json"
|
|
17
|
+
},
|
|
18
|
+
"oc-plugin": [
|
|
19
|
+
"server",
|
|
20
|
+
"tui"
|
|
21
|
+
],
|
|
22
|
+
"bin": {
|
|
23
|
+
"oc-go-usage-display-init": "bin/oc-go-usage-display-init.js",
|
|
24
|
+
"oc-go-usage-display-show": "bin/oc-go-usage-display-show.js",
|
|
25
|
+
"oc-go-usage-display-status": "bin/oc-go-usage-display-status.js",
|
|
26
|
+
"oc-go-usage-display-update": "bin/oc-go-usage-display-update.js"
|
|
27
|
+
},
|
|
28
|
+
"files": [
|
|
29
|
+
"dist",
|
|
30
|
+
"README.md",
|
|
31
|
+
"LICENSE",
|
|
32
|
+
"bin"
|
|
33
|
+
],
|
|
34
|
+
"repository": {
|
|
35
|
+
"type": "git",
|
|
36
|
+
"url": "git+https://github.com/christophkroeppl/oc-go-usage-display.git"
|
|
37
|
+
},
|
|
38
|
+
"keywords": [
|
|
39
|
+
"opencode-plugin",
|
|
40
|
+
"opencode",
|
|
41
|
+
"opencode-go",
|
|
42
|
+
"usage",
|
|
43
|
+
"tui"
|
|
44
|
+
],
|
|
45
|
+
"license": "MIT",
|
|
46
|
+
"engines": {
|
|
47
|
+
"node": ">=22"
|
|
48
|
+
},
|
|
49
|
+
"scripts": {
|
|
50
|
+
"build": "tsc -p tsconfig.json",
|
|
51
|
+
"check": "tsc --noEmit -p tsconfig.json",
|
|
52
|
+
"typecheck": "tsc --noEmit -p tsconfig.json"
|
|
53
|
+
},
|
|
54
|
+
"peerDependencies": {
|
|
55
|
+
"@opencode-ai/plugin": "^1.4.0"
|
|
56
|
+
},
|
|
57
|
+
"dependencies": {
|
|
58
|
+
"@opentui/solid": "0.5.11",
|
|
59
|
+
"solid-js": "1.9.12"
|
|
60
|
+
},
|
|
61
|
+
"devDependencies": {
|
|
62
|
+
"@opencode-ai/plugin": "^1.4.0",
|
|
63
|
+
"@types/node": "^22.0.0",
|
|
64
|
+
"typescript": "^5.6.0"
|
|
65
|
+
}
|
|
66
|
+
}
|