@jeffreyjyz/opencode-command-code 0.3.10 → 0.3.11
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/dist/index.js +1 -1
- package/dist/sidebar/useRows.d.ts +12 -1
- package/dist/tui.js +38 -4
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -4063,7 +4063,7 @@ var commandCodeV2 = {
|
|
|
4063
4063
|
// package.json
|
|
4064
4064
|
var package_default = {
|
|
4065
4065
|
name: "@jeffreyjyz/opencode-command-code",
|
|
4066
|
-
version: "0.3.
|
|
4066
|
+
version: "0.3.11",
|
|
4067
4067
|
description: "Command Code provider + usage dashboard for opencode: two providers (Anthropic wire for Claude, OpenAI wire for everything else) against api.commandcode.ai, live model list, plan gating, /cmd-usage. Requires the cmduse CLI for usage rendering.",
|
|
4068
4068
|
type: "module",
|
|
4069
4069
|
main: "dist/index.js",
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type SidebarRow, type Usage } from "./rows";
|
|
1
|
+
import { type ModelUsage, type SidebarRow, type Usage } from "./rows";
|
|
2
2
|
/** Which provider a session is on, as far as this panel is concerned. */
|
|
3
3
|
export type SessionKind = "ours" | "other" | "unknown";
|
|
4
4
|
/**
|
|
@@ -11,4 +11,15 @@ export declare function sessionKind(providerID: string | undefined): SessionKind
|
|
|
11
11
|
export declare function rememberSnapshot(snapshot: Usage): void;
|
|
12
12
|
/** Rows to paint before this panel's first fetch of the session completes. */
|
|
13
13
|
export declare function seededRows(): SidebarRow[];
|
|
14
|
+
/**
|
|
15
|
+
* Keep the last figure for a model. Keyed canonically because the session's id
|
|
16
|
+
* and the stored `modelID` differ by vendor prefix and punctuation.
|
|
17
|
+
*/
|
|
18
|
+
export declare function rememberModelUsage(id: string, usage: ModelUsage): void;
|
|
19
|
+
/**
|
|
20
|
+
* The remembered figure for `id`, or undefined when that model is unseen. An
|
|
21
|
+
* undefined id is the frame during a session switch: keeping the previous row up
|
|
22
|
+
* beats blanking it, the same call `wasOurs` makes for the account block.
|
|
23
|
+
*/
|
|
24
|
+
export declare function seededModelUsage(id: string | undefined): ModelUsage | undefined;
|
|
14
25
|
export declare function useRows(activeModelId: () => string | undefined, providerID: () => string | undefined): import("solid-js").Accessor<SidebarRow[]>;
|
package/dist/tui.js
CHANGED
|
@@ -2021,19 +2021,40 @@ function rememberSnapshot(snapshot) {
|
|
|
2021
2021
|
function seededRows() {
|
|
2022
2022
|
return lastSnapshot ? usageRows(lastSnapshot) : [];
|
|
2023
2023
|
}
|
|
2024
|
+
var lastModelUsage;
|
|
2025
|
+
function rememberModelUsage(id, usage) {
|
|
2026
|
+
lastModelUsage = {
|
|
2027
|
+
key: modelKey(id),
|
|
2028
|
+
usage
|
|
2029
|
+
};
|
|
2030
|
+
}
|
|
2031
|
+
function seededModelUsage(id) {
|
|
2032
|
+
if (!lastModelUsage)
|
|
2033
|
+
return;
|
|
2034
|
+
if (id === undefined)
|
|
2035
|
+
return lastModelUsage.usage;
|
|
2036
|
+
return lastModelUsage.key === modelKey(id) ? lastModelUsage.usage : undefined;
|
|
2037
|
+
}
|
|
2024
2038
|
function useRows(activeModelId, providerID) {
|
|
2025
2039
|
const [usage, setUsage] = createSignal(seededRows());
|
|
2026
2040
|
const [meta, setMeta] = createSignal(new Map);
|
|
2027
|
-
const [modelUsage, setModelUsage] = createSignal();
|
|
2041
|
+
const [modelUsage, setModelUsage] = createSignal(lastModelUsage);
|
|
2028
2042
|
const [wasOurs, setWasOurs] = createSignal(false);
|
|
2029
2043
|
loadMeta().then(setMeta).catch(() => {});
|
|
2044
|
+
const refreshModelUsage = (id, sinceMs) => {
|
|
2045
|
+
if (!id)
|
|
2046
|
+
return;
|
|
2047
|
+
const fresh = loadModelUsage(id, sinceMs);
|
|
2048
|
+
if (fresh)
|
|
2049
|
+
rememberModelUsage(id, fresh);
|
|
2050
|
+
setModelUsage(lastModelUsage);
|
|
2051
|
+
};
|
|
2030
2052
|
const refresh = async () => {
|
|
2031
2053
|
try {
|
|
2032
2054
|
const snapshot = await loadUsage();
|
|
2033
2055
|
rememberSnapshot(snapshot);
|
|
2034
2056
|
setUsage(usageRows(snapshot));
|
|
2035
|
-
|
|
2036
|
-
setModelUsage(id ? loadModelUsage(id, periodStart(snapshot)) ?? undefined : undefined);
|
|
2057
|
+
refreshModelUsage(activeModelId(), periodStart(snapshot));
|
|
2037
2058
|
} catch {}
|
|
2038
2059
|
};
|
|
2039
2060
|
createEffect(() => {
|
|
@@ -2045,6 +2066,19 @@ function useRows(activeModelId, providerID) {
|
|
|
2045
2066
|
const timer = setInterval(() => void refresh(), POLL_MS);
|
|
2046
2067
|
onCleanup(() => clearInterval(timer));
|
|
2047
2068
|
});
|
|
2069
|
+
createEffect(() => {
|
|
2070
|
+
const id = activeModelId();
|
|
2071
|
+
if (sessionKind(providerID()) !== "ours" || !id)
|
|
2072
|
+
return;
|
|
2073
|
+
refreshModelUsage(id, periodStart(lastSnapshot ?? {}));
|
|
2074
|
+
});
|
|
2075
|
+
const usageFor = (id) => {
|
|
2076
|
+
const seen = modelUsage();
|
|
2077
|
+
if (seen && (id === undefined || seen.key === modelKey(id))) {
|
|
2078
|
+
return seen.usage;
|
|
2079
|
+
}
|
|
2080
|
+
return seededModelUsage(id);
|
|
2081
|
+
};
|
|
2048
2082
|
return createMemo(() => {
|
|
2049
2083
|
const kind = sessionKind(providerID());
|
|
2050
2084
|
if (kind === "other")
|
|
@@ -2058,7 +2092,7 @@ function useRows(activeModelId, providerID) {
|
|
|
2058
2092
|
tier: found.tier ?? (id ? tierFor(id) : undefined),
|
|
2059
2093
|
minPlan: id ? minPlan(id) : undefined
|
|
2060
2094
|
} : undefined;
|
|
2061
|
-
return [...usage(), separator(), ...modelRows(model,
|
|
2095
|
+
return [...usage(), separator(), ...modelRows(model, usageFor(id))];
|
|
2062
2096
|
});
|
|
2063
2097
|
}
|
|
2064
2098
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jeffreyjyz/opencode-command-code",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.11",
|
|
4
4
|
"description": "Command Code provider + usage dashboard for opencode: two providers (Anthropic wire for Claude, OpenAI wire for everything else) against api.commandcode.ai, live model list, plan gating, /cmd-usage. Requires the cmduse CLI for usage rendering.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|