zcode-acp-server 0.40.1 → 0.42.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 +3 -3
- package/README.zh-CN.md +1 -1
- package/assets/martty-plugins/quota-dock/plugin.json +3 -3
- package/dist/bin/quota.d.ts +1 -1
- package/dist/bin/quota.d.ts.map +1 -1
- package/dist/bin/quota.js +28 -17
- package/dist/bin/quota.js.map +1 -1
- package/dist/code-fingerprint.json +2 -2
- package/dist/config/user-config.d.ts +10 -0
- package/dist/config/user-config.d.ts.map +1 -1
- package/dist/config/user-config.js +31 -4
- package/dist/config/user-config.js.map +1 -1
- package/dist/handlers/account.d.ts +27 -6
- package/dist/handlers/account.d.ts.map +1 -1
- package/dist/handlers/account.js +41 -8
- package/dist/handlers/account.js.map +1 -1
- package/dist/quota/combined.d.ts +13 -9
- package/dist/quota/combined.d.ts.map +1 -1
- package/dist/quota/combined.js +54 -29
- package/dist/quota/combined.js.map +1 -1
- package/dist/quota/format.d.ts +12 -2
- package/dist/quota/format.d.ts.map +1 -1
- package/dist/quota/format.js +29 -3
- package/dist/quota/format.js.map +1 -1
- package/dist/quota/live.d.ts.map +1 -1
- package/dist/quota/live.js +12 -6
- package/dist/quota/live.js.map +1 -1
- package/dist/quota/ollama-cloud/cache.d.ts +16 -0
- package/dist/quota/ollama-cloud/cache.d.ts.map +1 -0
- package/dist/quota/ollama-cloud/cache.js +30 -0
- package/dist/quota/ollama-cloud/cache.js.map +1 -0
- package/dist/quota/ollama-cloud/client.d.ts +36 -0
- package/dist/quota/ollama-cloud/client.d.ts.map +1 -0
- package/dist/quota/ollama-cloud/client.js +56 -0
- package/dist/quota/ollama-cloud/client.js.map +1 -0
- package/dist/quota/ollama-cloud/config.d.ts +25 -0
- package/dist/quota/ollama-cloud/config.d.ts.map +1 -0
- package/dist/quota/ollama-cloud/config.js +31 -0
- package/dist/quota/ollama-cloud/config.js.map +1 -0
- package/dist/quota/ollama-cloud/format.d.ts +30 -0
- package/dist/quota/ollama-cloud/format.d.ts.map +1 -0
- package/dist/quota/ollama-cloud/format.js +57 -0
- package/dist/quota/ollama-cloud/format.js.map +1 -0
- package/dist/quota/ollama-cloud/index.d.ts +47 -0
- package/dist/quota/ollama-cloud/index.d.ts.map +1 -0
- package/dist/quota/ollama-cloud/index.js +183 -0
- package/dist/quota/ollama-cloud/index.js.map +1 -0
- package/dist/quota/ollama-cloud/types.d.ts +53 -0
- package/dist/quota/ollama-cloud/types.d.ts.map +1 -0
- package/dist/quota/ollama-cloud/types.js +16 -0
- package/dist/quota/ollama-cloud/types.js.map +1 -0
- package/dist/quota/opencode-go/config.d.ts +11 -11
- package/dist/quota/opencode-go/config.js +11 -11
- package/dist/quota/opencode-go/index.d.ts.map +1 -1
- package/dist/quota/opencode-go/index.js +16 -7
- package/dist/quota/opencode-go/index.js.map +1 -1
- package/dist/remote/hub-server.d.ts.map +1 -1
- package/dist/remote/hub-server.js +10 -4
- package/dist/remote/hub-server.js.map +1 -1
- package/docs/CLI.md +48 -13
- package/docs/REMOTE-CLIENTS.md +18 -2
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -166,7 +166,7 @@ the primary client. Discovery API, tunnels, auth, and semantics:
|
|
|
166
166
|
## Unified CLI (`zcode-acp`)
|
|
167
167
|
|
|
168
168
|
One command for every surface: an interactive terminal chat TUI (`zcode-acp`,
|
|
169
|
-
powered by Martty), plan quota cards (`zcode-acp quota`, GLM + Opencode Go),
|
|
169
|
+
powered by Martty), plan quota cards (`zcode-acp quota`, GLM + Opencode Go + Ollama Cloud),
|
|
170
170
|
the remote hub daemon (`zcode-acp hub`), and the stdio server editors invoke
|
|
171
171
|
(`zcode-acp server`). TUI keys and quota setup: [docs/CLI.md](docs/CLI.md).
|
|
172
172
|
|
|
@@ -205,7 +205,7 @@ The server is organised in layers that mirror the ACP protocol:
|
|
|
205
205
|
- `handlers/` — ACP method handlers (`session/new`, `session/prompt`, ...) and the turn engine
|
|
206
206
|
- `config/` — model / mode / thought-level configOptions and runtime model switching
|
|
207
207
|
- `remote/` — opt-in remote access: loopback ACP endpoint, multi-client broadcast, hub registration
|
|
208
|
-
- `quota/` — GLM Coding Plan / Opencode Go usage API client (`/quota` command, `zcode-acp quota` subcommand)
|
|
208
|
+
- `quota/` — GLM Coding Plan / Opencode Go / Ollama Cloud usage API client (`/quota` command, `zcode-acp quota` subcommand)
|
|
209
209
|
- `server.ts` — shared state and handler registration
|
|
210
210
|
- `index.ts` — stdio wiring via the ACP SDK
|
|
211
211
|
|
|
@@ -244,7 +244,7 @@ Thanks to everyone who has contributed (updated automatically from the
|
|
|
244
244
|
<a href="https://github.com/william0wang/zcode-acp/graphs/contributors">
|
|
245
245
|
<!-- release-please re-stamps &v= on every release: the new URL busts the
|
|
246
246
|
contrib.rocks and GitHub camo image caches. -->
|
|
247
|
-
<img src="https://contrib.rocks/image?repo=william0wang/zcode-acp&v=0.
|
|
247
|
+
<img src="https://contrib.rocks/image?repo=william0wang/zcode-acp&v=0.42.0" alt="Contributors" /> <!-- x-release-please-version -->
|
|
248
248
|
</a>
|
|
249
249
|
|
|
250
250
|
## Related Projects
|
package/README.zh-CN.md
CHANGED
|
@@ -136,7 +136,7 @@ ZCode CLI 内置于桌面应用中,默认不会加到 `PATH`。用 `ZCODE_BIN`
|
|
|
136
136
|
## 统一 CLI(zcode-acp)
|
|
137
137
|
|
|
138
138
|
本包所有能力收敛在一条命令下:交互式终端聊天 REPL(原生滚动回溯)、套餐
|
|
139
|
-
用量卡片(`zcode-acp quota`,GLM + Opencode Go)、远程 hub 守护进程
|
|
139
|
+
用量卡片(`zcode-acp quota`,GLM + Opencode Go + Ollama Cloud)、远程 hub 守护进程
|
|
140
140
|
(`zcode-acp hub`)以及编辑器调用的 stdio server(`zcode-acp server`)。
|
|
141
141
|
REPL 按键、补全、历史与配额配置详见 [docs/CLI.md](docs/CLI.md)。
|
|
142
142
|
|
|
@@ -3,12 +3,12 @@
|
|
|
3
3
|
"id": "zcode-acp-quota",
|
|
4
4
|
"kind": "ui",
|
|
5
5
|
"name": "zcode-acp quota dock",
|
|
6
|
-
"purpose": "Reads the read-only quota config option and
|
|
6
|
+
"purpose": "Reads the read-only quota config option and renders it in the composer dock.",
|
|
7
7
|
"source": {
|
|
8
8
|
"pluginId": "plugin-zcode-acp-quota",
|
|
9
|
-
"packageId": "pkg-zcode-acp-quota-
|
|
9
|
+
"packageId": "pkg-zcode-acp-quota-5"
|
|
10
10
|
},
|
|
11
11
|
"code": {
|
|
12
|
-
"client": "// zcode-acp quota-dock plugin
|
|
12
|
+
"client": "// zcode-acp quota-dock plugin v5 (seeded by zcode-acp-server, ADR-0021)\n// v2: sticky last-known quota text (a mid-turn options push without the\n// quota option no longer drops the node) + order:-1 so compact width\n// truncation sacrifices trailing stats sections before QUOTA.\n// v5: quota-only — the per-turn TPS segment was removed (martty's own UI\n// now shows throughput) and the dock renders the quota line only (GLM /\n// Opencode Go / Ollama Cloud segments, whichever are configured).\nreturn {\n inject: [\"tuiSlots\", \"acpSessionConfig\"],\n apply: (ctx) => {\n let panel\n let quotaText = null\n const readQuota = (options) => {\n const list = options || ctx.acpSessionConfig.list()\n const found = (list || []).filter((o) => o && o.id === \"quota\")[0]\n if (!found || typeof found.currentValue !== \"string\") return\n // Sticky: only an explicit empty string clears; a missing option keeps\n // the last-known text so full-replace pushes without quota cannot\n // erase the dock line.\n quotaText = found.currentValue.length > 0 ? found.currentValue : null\n }\n const nodes = () => {\n if (!quotaText) return []\n return [{ id: \"zcode-acp-quota-gauge\", kind: \"generic\", title: quotaText, body: \"\" }]\n }\n const render = () => { if (panel) { try { panel.update(nodes()) } catch (err) {} } }\n const stopSlot = ctx.tuiSlots.inject(\"conversation.composer.dock\", () => {\n panel = ctx.tuiSlots.register({ name: \"conversation.composer.dock\", id: \"zcode-acp-quota\", order: -1 }, nodes())\n return () => panel.dispose()\n })\n readQuota()\n const stopSub = ctx.acpSessionConfig.subscribe((snap) => { readQuota(snap && snap.options); render() })\n return () => { stopSub && stopSub(); stopSlot && stopSlot() }\n },\n}"
|
|
13
13
|
}
|
|
14
14
|
}
|
package/dist/bin/quota.d.ts
CHANGED
|
@@ -27,7 +27,7 @@ export interface CliOptions {
|
|
|
27
27
|
/** True when the user wants per-model MCP detail sub-lines shown. */
|
|
28
28
|
detail: boolean;
|
|
29
29
|
help: boolean;
|
|
30
|
-
/** Which provider(s) to query — first positional arg (`glm`/`go`), else `all`. */
|
|
30
|
+
/** Which provider(s) to query — first positional arg (`glm`/`go`/`oc`), else `all`. */
|
|
31
31
|
provider: Provider;
|
|
32
32
|
/** True when the user explicitly asked for the plain monochrome layout. */
|
|
33
33
|
plain: boolean;
|
package/dist/bin/quota.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"quota.d.ts","sourceRoot":"","sources":["../../src/bin/quota.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;;;;;;;;GAiBG;AAKH,OAAO,EAIL,KAAK,QAAQ,EACd,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"quota.d.ts","sourceRoot":"","sources":["../../src/bin/quota.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;;;;;;;;GAiBG;AAKH,OAAO,EAIL,KAAK,QAAQ,EACd,MAAM,sBAAsB,CAAC;AAwB9B,qDAAqD;AACrD,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,OAAO,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,+EAA+E;IAC/E,eAAe,EAAE,OAAO,CAAC;IACzB,qEAAqE;IACrE,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,OAAO,CAAC;IACd,uFAAuF;IACvF,QAAQ,EAAE,QAAQ,CAAC;IACnB,2EAA2E;IAC3E,KAAK,EAAE,OAAO,CAAC;CAChB;AA6CD;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAM/F;AAED;;;;;;;GAOG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,UAAU,CAiE7D;AAqKD;;;;;;GAMG;AACH,wBAAsB,IAAI,CAAC,IAAI,GAAE,SAAS,MAAM,EAA0B,GAAG,OAAO,CAAC,IAAI,CAAC,CAwBzF"}
|
package/dist/bin/quota.js
CHANGED
|
@@ -20,11 +20,13 @@
|
|
|
20
20
|
import process from "node:process";
|
|
21
21
|
import { clearCache as clearGlmCache } from "../quota/cache.js";
|
|
22
22
|
import { defaultGoWindows, formatCombinedCardPlain, queryCombined, } from "../quota/combined.js";
|
|
23
|
+
import { clearOcCache } from "../quota/ollama-cloud/index.js";
|
|
23
24
|
import { clearGoCache } from "../quota/opencode-go/index.js";
|
|
24
|
-
/** Clear
|
|
25
|
+
/** Clear all provider caches — used by watch mode per tick for live values. */
|
|
25
26
|
function clearAllCaches() {
|
|
26
27
|
clearGlmCache();
|
|
27
28
|
clearGoCache();
|
|
29
|
+
clearOcCache();
|
|
28
30
|
}
|
|
29
31
|
/** Minimum watch interval (ms). Equals the quota cache TTL. */
|
|
30
32
|
const MIN_INTERVAL_MS = 10_000;
|
|
@@ -40,20 +42,27 @@ const ANSI = {
|
|
|
40
42
|
/** Human-readable usage text. */
|
|
41
43
|
const HELP_TEXT = `Usage: zcode-acp quota [provider] [options]
|
|
42
44
|
|
|
43
|
-
Query usage from the terminal. By default shows
|
|
44
|
-
|
|
45
|
+
Query usage from the terminal. By default shows GLM Coding Plan, Opencode Go,
|
|
46
|
+
and Ollama Cloud (when configured) in one card; pass a provider to focus on one.
|
|
45
47
|
|
|
46
48
|
Providers:
|
|
47
|
-
(none)
|
|
49
|
+
(none) All configured providers (GLM + Opencode Go + Ollama Cloud).
|
|
48
50
|
glm GLM Coding Plan only.
|
|
49
51
|
go Opencode Go only (rolling + weekly + monthly).
|
|
52
|
+
oc Ollama Cloud only (5h + weekly).
|
|
50
53
|
|
|
51
54
|
GLM credentials: read from ~/.zcode/v2/config.json (created by the ZCode app).
|
|
52
|
-
|
|
53
|
-
|
|
55
|
+
Non-GLM credentials resolve per field, highest precedence first:
|
|
56
|
+
1. ~/.config/zcode-acp/config.json "quota" section, e.g.
|
|
57
|
+
{"quota":{"ollamaApiKey":"…","opencodeGoWorkspaceId":"wrk_…","opencodeGoAuthCookie":"Fe26.2**…"}}
|
|
58
|
+
2. Environment variables (one-off overrides)
|
|
59
|
+
3. ~/.pi/agent/opencode-go.json (legacy Pi-extension reuse, Opencode Go only)
|
|
60
|
+
Opencode Go:
|
|
54
61
|
OPENCODE_GO_WORKSPACE_ID e.g. wrk_abc123 (from the opencode.ai workspace URL)
|
|
55
62
|
OPENCODE_GO_AUTH_COOKIE the "auth" cookie value (starts with Fe26.2**)
|
|
56
63
|
Get the cookie via browser DevTools → Application → Cookies → opencode.ai.
|
|
64
|
+
Ollama Cloud:
|
|
65
|
+
OLLAMA_API_KEY an Ollama Cloud API key (cloud.ollama.ai → API keys)
|
|
57
66
|
|
|
58
67
|
Options:
|
|
59
68
|
-w, --watch Watch mode: clear the screen and refresh periodically.
|
|
@@ -65,12 +74,13 @@ Options:
|
|
|
65
74
|
-h, --help Show this help and exit.
|
|
66
75
|
|
|
67
76
|
Examples:
|
|
68
|
-
zcode-acp quota #
|
|
77
|
+
zcode-acp quota # all providers, print once and exit (color bars)
|
|
69
78
|
zcode-acp quota go # Opencode Go only (3 windows)
|
|
79
|
+
zcode-acp quota oc # Ollama Cloud only (5h + weekly)
|
|
70
80
|
zcode-acp quota glm -w # GLM only, live monitor every 30s
|
|
71
|
-
zcode-acp quota -w -i 60 #
|
|
72
|
-
zcode-acp quota -d #
|
|
73
|
-
zcode-acp quota --plain #
|
|
81
|
+
zcode-acp quota -w -i 60 # all, refresh every 60s
|
|
82
|
+
zcode-acp quota -d # all, include per-model MCP breakdown
|
|
83
|
+
zcode-acp quota --plain # all, classic monochrome bars`;
|
|
74
84
|
/**
|
|
75
85
|
* Clamp a raw interval (seconds, optional) to a valid ms value. Returns the
|
|
76
86
|
* clamped value plus whether a user-supplied value was raised to the floor.
|
|
@@ -141,7 +151,7 @@ export function parseArgs(argv) {
|
|
|
141
151
|
if (Number.isFinite(n))
|
|
142
152
|
interval = n;
|
|
143
153
|
}
|
|
144
|
-
else if (arg === "glm" || arg === "go") {
|
|
154
|
+
else if (arg === "glm" || arg === "go" || arg === "oc") {
|
|
145
155
|
// First positional provider token. Only honor the first; a second
|
|
146
156
|
// (e.g. `zcode-acp quota glm go`) is ignored to keep parsing simple.
|
|
147
157
|
if (provider === "all")
|
|
@@ -283,12 +293,13 @@ async function runOnce(provider, detail, color) {
|
|
|
283
293
|
const out = renderCard(combined, provider, detail, color).text;
|
|
284
294
|
// Failure = every selected provider ended up unavailable (not merely
|
|
285
295
|
// not_configured, which is a deliberate "skip me" state).
|
|
286
|
-
const
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
296
|
+
const selected = [
|
|
297
|
+
[provider === "all" || provider === "glm", combined.glm.kind === "unavailable"],
|
|
298
|
+
[provider === "all" || provider === "go", combined.go.kind === "unavailable"],
|
|
299
|
+
[provider === "all" || provider === "oc", combined.oc.kind === "unavailable"],
|
|
300
|
+
];
|
|
301
|
+
const anySelected = selected.some(([sel]) => sel);
|
|
302
|
+
const selectedFailed = anySelected && selected.every(([sel, failed]) => !sel || failed);
|
|
292
303
|
if (selectedFailed) {
|
|
293
304
|
process.stderr.write(out + "\n");
|
|
294
305
|
process.exit(1);
|
package/dist/bin/quota.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"quota.js","sourceRoot":"","sources":["../../src/bin/quota.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,OAAO,MAAM,cAAc,CAAC;AAEnC,OAAO,EAAE,UAAU,IAAI,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAChE,OAAO,EACL,gBAAgB,EAChB,uBAAuB,EACvB,aAAa,GAEd,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAE7D
|
|
1
|
+
{"version":3,"file":"quota.js","sourceRoot":"","sources":["../../src/bin/quota.ts"],"names":[],"mappings":"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"}
|
|
@@ -40,8 +40,18 @@ export interface RemoteUserConfig {
|
|
|
40
40
|
bridgePort?: number;
|
|
41
41
|
terminal?: TerminalPrefs;
|
|
42
42
|
}
|
|
43
|
+
/** The `quota` section of the user config file. */
|
|
44
|
+
export interface QuotaUserConfig {
|
|
45
|
+
/** Ollama Cloud API key for the `zcode-acp quota` card (cloud.ollama.ai). */
|
|
46
|
+
ollamaApiKey?: string;
|
|
47
|
+
/** Opencode Go workspace id (`wrk_…`) — see the quota CLI docs. */
|
|
48
|
+
opencodeGoWorkspaceId?: string;
|
|
49
|
+
/** Opencode Go `auth` cookie value (`Fe26.2**…`). */
|
|
50
|
+
opencodeGoAuthCookie?: string;
|
|
51
|
+
}
|
|
43
52
|
export interface UserConfig {
|
|
44
53
|
remote?: RemoteUserConfig;
|
|
54
|
+
quota?: QuotaUserConfig;
|
|
45
55
|
}
|
|
46
56
|
/** Resolve the config file path: $XDG_CONFIG_HOME/zcode-acp or ~/.config/zcode-acp. */
|
|
47
57
|
export declare function userConfigPath(env?: NodeJS.ProcessEnv): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"user-config.d.ts","sourceRoot":"","sources":["../../src/config/user-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAQH,4EAA4E;AAC5E,MAAM,WAAW,aAAa;IAC5B,wEAAwE;IACxE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,kFAAkF;IAClF,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,kFAAkF;IAClF,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,oDAAoD;AACpD,MAAM,WAAW,gBAAgB;IAC/B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,aAAa,CAAC;CAC1B;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,CAAC,EAAE,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"user-config.d.ts","sourceRoot":"","sources":["../../src/config/user-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAQH,4EAA4E;AAC5E,MAAM,WAAW,aAAa;IAC5B,wEAAwE;IACxE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,kFAAkF;IAClF,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,kFAAkF;IAClF,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,oDAAoD;AACpD,MAAM,WAAW,gBAAgB;IAC/B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,aAAa,CAAC;CAC1B;AAED,mDAAmD;AACnD,MAAM,WAAW,eAAe;IAC9B,6EAA6E;IAC7E,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,mEAAmE;IACnE,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,qDAAqD;IACrD,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B,KAAK,CAAC,EAAE,eAAe,CAAC;CACzB;AAED,uFAAuF;AACvF,wBAAgB,cAAc,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,CAG3E;AAMD;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,UAAU,CA+C/E"}
|
|
@@ -55,12 +55,39 @@ export function loadUserConfig(env = process.env) {
|
|
|
55
55
|
return {};
|
|
56
56
|
}
|
|
57
57
|
const remote = parsed["remote"];
|
|
58
|
-
if (remote === undefined)
|
|
58
|
+
if (remote === undefined && parsed["quota"] === undefined)
|
|
59
59
|
return {};
|
|
60
|
-
|
|
60
|
+
const result = {};
|
|
61
|
+
if (remote !== undefined && isPlainObject(remote)) {
|
|
62
|
+
result.remote = parseRemoteSection(remote, file);
|
|
63
|
+
}
|
|
64
|
+
else if (remote !== undefined) {
|
|
61
65
|
warn(`config: "remote" in ${file} is not an object — ignoring the section`);
|
|
62
|
-
return {};
|
|
63
66
|
}
|
|
67
|
+
const quota = parsed["quota"];
|
|
68
|
+
if (quota !== undefined) {
|
|
69
|
+
if (!isPlainObject(quota)) {
|
|
70
|
+
warn(`config: "quota" in ${file} is not an object — ignoring the section`);
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
const q = {};
|
|
74
|
+
for (const [jsonKey, prop] of [
|
|
75
|
+
["ollamaApiKey", "ollamaApiKey"],
|
|
76
|
+
["opencodeGoWorkspaceId", "opencodeGoWorkspaceId"],
|
|
77
|
+
["opencodeGoAuthCookie", "opencodeGoAuthCookie"],
|
|
78
|
+
]) {
|
|
79
|
+
const v = quota[jsonKey];
|
|
80
|
+
if (typeof v === "string" && v.trim())
|
|
81
|
+
q[prop] = v.trim();
|
|
82
|
+
}
|
|
83
|
+
if (Object.keys(q).length > 0)
|
|
84
|
+
result.quota = q;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
return result;
|
|
88
|
+
}
|
|
89
|
+
/** Parse the validated `remote` section object into {@link RemoteUserConfig}. */
|
|
90
|
+
function parseRemoteSection(remote, file) {
|
|
64
91
|
const out = {};
|
|
65
92
|
if (typeof remote["enabled"] === "boolean")
|
|
66
93
|
out.enabled = remote["enabled"];
|
|
@@ -106,6 +133,6 @@ export function loadUserConfig(env = process.env) {
|
|
|
106
133
|
else if (terminal !== undefined) {
|
|
107
134
|
warn(`config: remote.terminal in ${file} is not an object — ignoring`);
|
|
108
135
|
}
|
|
109
|
-
return
|
|
136
|
+
return out;
|
|
110
137
|
}
|
|
111
138
|
//# sourceMappingURL=user-config.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"user-config.js","sourceRoot":"","sources":["../../src/config/user-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"user-config.js","sourceRoot":"","sources":["../../src/config/user-config.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,12 +8,16 @@
|
|
|
8
8
|
*
|
|
9
9
|
* The response mirrors the CLI card's data model so clients can reproduce it
|
|
10
10
|
* exactly: one GLM section (plan level + per-window items with per-model
|
|
11
|
-
* details)
|
|
12
|
-
* relative reset countdown converted to an absolute timestamp)
|
|
13
|
-
*
|
|
14
|
-
* the
|
|
15
|
-
*
|
|
11
|
+
* details), one Opencode Go section (rolling/weekly/monthly windows, the
|
|
12
|
+
* relative reset countdown converted to an absolute timestamp), and one
|
|
13
|
+
* Ollama Cloud section (session/weekly/monthly fractions as percents, with
|
|
14
|
+
* the derived reset moments when available — the API itself returns none).
|
|
15
|
+
* Provider failures are reported per-section as
|
|
16
|
+
* `kind` strings rather than throwing — the client renders the same status
|
|
17
|
+
* line the CLI would (a `not_configured` section is simply omitted, matching
|
|
18
|
+
* the CLI).
|
|
16
19
|
*/
|
|
20
|
+
import type { OcQueryResult } from "../quota/ollama-cloud/types.js";
|
|
17
21
|
import type { GoQueryResult, GoWindowKey } from "../quota/opencode-go/types.js";
|
|
18
22
|
import type { QuotaItem, QuotaResult } from "../quota/types.js";
|
|
19
23
|
/** GLM section — `items` present only on success. */
|
|
@@ -34,10 +38,27 @@ export interface GoUsageStats {
|
|
|
34
38
|
kind: GoQueryResult["kind"];
|
|
35
39
|
windows?: GoWindowEntry[];
|
|
36
40
|
}
|
|
41
|
+
/**
|
|
42
|
+
* One Ollama Cloud window with the derived reset moment (epoch ms) when
|
|
43
|
+
* available — the API returns no timestamps, so resets are computed at query
|
|
44
|
+
* time (window anchoring, or /api/me's billing period for monthly).
|
|
45
|
+
*/
|
|
46
|
+
export interface OcWindowEntry {
|
|
47
|
+
key: "session" | "weekly" | "monthly";
|
|
48
|
+
label: string;
|
|
49
|
+
usagePercent: number;
|
|
50
|
+
resetsAt?: number;
|
|
51
|
+
}
|
|
52
|
+
/** Ollama Cloud section — `windows` present only on success. */
|
|
53
|
+
export interface OcUsageStats {
|
|
54
|
+
kind: OcQueryResult["kind"];
|
|
55
|
+
windows?: OcWindowEntry[];
|
|
56
|
+
}
|
|
37
57
|
export interface UsageStatsResult {
|
|
38
58
|
glm: GlmUsageStats;
|
|
39
59
|
opencode: GoUsageStats;
|
|
60
|
+
ollama: OcUsageStats;
|
|
40
61
|
}
|
|
41
|
-
/** `account/usage_stats` handler —
|
|
62
|
+
/** `account/usage_stats` handler — all providers, queried in parallel. */
|
|
42
63
|
export declare function accountUsageStats(): Promise<UsageStatsResult>;
|
|
43
64
|
//# sourceMappingURL=account.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"account.d.ts","sourceRoot":"","sources":["../../src/handlers/account.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"account.d.ts","sourceRoot":"","sources":["../../src/handlers/account.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAChF,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhE,qDAAqD;AACrD,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,SAAS,EAAE,CAAC;CACrB;AAED,4EAA4E;AAC5E,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,WAAW,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,+DAA+D;AAC/D,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAC5B,OAAO,CAAC,EAAE,aAAa,EAAE,CAAC;CAC3B;AAED;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,SAAS,GAAG,QAAQ,GAAG,SAAS,CAAC;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,gEAAgE;AAChE,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAC5B,OAAO,CAAC,EAAE,aAAa,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,aAAa,CAAC;IACnB,QAAQ,EAAE,YAAY,CAAC;IACvB,MAAM,EAAE,YAAY,CAAC;CACtB;AAmED,0EAA0E;AAC1E,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,gBAAgB,CAAC,CAGnE"}
|
package/dist/handlers/account.js
CHANGED
|
@@ -8,11 +8,14 @@
|
|
|
8
8
|
*
|
|
9
9
|
* The response mirrors the CLI card's data model so clients can reproduce it
|
|
10
10
|
* exactly: one GLM section (plan level + per-window items with per-model
|
|
11
|
-
* details)
|
|
12
|
-
* relative reset countdown converted to an absolute timestamp)
|
|
13
|
-
*
|
|
14
|
-
* the
|
|
15
|
-
*
|
|
11
|
+
* details), one Opencode Go section (rolling/weekly/monthly windows, the
|
|
12
|
+
* relative reset countdown converted to an absolute timestamp), and one
|
|
13
|
+
* Ollama Cloud section (session/weekly/monthly fractions as percents, with
|
|
14
|
+
* the derived reset moments when available — the API itself returns none).
|
|
15
|
+
* Provider failures are reported per-section as
|
|
16
|
+
* `kind` strings rather than throwing — the client renders the same status
|
|
17
|
+
* line the CLI would (a `not_configured` section is simply omitted, matching
|
|
18
|
+
* the CLI).
|
|
16
19
|
*/
|
|
17
20
|
import { queryCombined } from "../quota/combined.js";
|
|
18
21
|
/** Window labels matching the CLI's card (`5h` / `Week` / `Month`). */
|
|
@@ -51,9 +54,39 @@ function toGoStats(result, now = Date.now()) {
|
|
|
51
54
|
});
|
|
52
55
|
return { kind: "success", windows };
|
|
53
56
|
}
|
|
54
|
-
/**
|
|
57
|
+
/**
|
|
58
|
+
* Ollama windows as percents — the API's 0..1 fractions converted once here
|
|
59
|
+
* so remote clients can render the same bar the CLI does. Which windows exist
|
|
60
|
+
* depends on the plan (legacy: session+weekly; credit: monthly). The derived
|
|
61
|
+
* reset moments pass through when present.
|
|
62
|
+
*/
|
|
63
|
+
function toOcStats(result) {
|
|
64
|
+
if (result.kind !== "success")
|
|
65
|
+
return { kind: result.kind };
|
|
66
|
+
const LABELS = { session: "5h", weekly: "Week", monthly: "Month" };
|
|
67
|
+
const RESETS = {
|
|
68
|
+
session: "sessionResetAt",
|
|
69
|
+
weekly: "weeklyResetAt",
|
|
70
|
+
monthly: "monthlyResetAt",
|
|
71
|
+
};
|
|
72
|
+
const windows = ["session", "weekly", "monthly"].flatMap((key) => {
|
|
73
|
+
if (result[key] === undefined)
|
|
74
|
+
return [];
|
|
75
|
+
const reset = result[RESETS[key]];
|
|
76
|
+
return [
|
|
77
|
+
{
|
|
78
|
+
key,
|
|
79
|
+
label: LABELS[key],
|
|
80
|
+
usagePercent: result[key] * 100,
|
|
81
|
+
...(typeof reset === "number" && { resetsAt: reset }),
|
|
82
|
+
},
|
|
83
|
+
];
|
|
84
|
+
});
|
|
85
|
+
return { kind: "success", windows };
|
|
86
|
+
}
|
|
87
|
+
/** `account/usage_stats` handler — all providers, queried in parallel. */
|
|
55
88
|
export async function accountUsageStats() {
|
|
56
|
-
const { glm, go } = await queryCombined("all");
|
|
57
|
-
return { glm: toGlmStats(glm), opencode: toGoStats(go) };
|
|
89
|
+
const { glm, go, oc } = await queryCombined("all");
|
|
90
|
+
return { glm: toGlmStats(glm), opencode: toGoStats(go), ollama: toOcStats(oc) };
|
|
58
91
|
}
|
|
59
92
|
//# sourceMappingURL=account.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"account.js","sourceRoot":"","sources":["../../src/handlers/account.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"account.js","sourceRoot":"","sources":["../../src/handlers/account.ts"],"names":[],"mappings":"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"}
|
package/dist/quota/combined.d.ts
CHANGED
|
@@ -2,27 +2,31 @@
|
|
|
2
2
|
* Combined multi-provider quota — the orchestration layer used by the
|
|
3
3
|
* `zcode-acp quota` CLI when no provider subcommand is given (default mode).
|
|
4
4
|
*
|
|
5
|
-
* Queries GLM Coding Plan
|
|
6
|
-
* merged card with one section per provider. The `/quota`
|
|
7
|
-
* NOT use this — it stays on the single-provider GLM
|
|
5
|
+
* Queries GLM Coding Plan, Opencode Go, and Ollama Cloud in parallel and
|
|
6
|
+
* renders a single merged card with one section per provider. The `/quota`
|
|
7
|
+
* slash command does NOT use this — it stays on the single-provider GLM
|
|
8
|
+
* {@link formatQuota}.
|
|
8
9
|
*
|
|
9
10
|
* Design notes:
|
|
10
|
-
* - `Promise.all` so a slow
|
|
11
|
-
* - A `not_configured`
|
|
12
|
-
* no error line) in `all` mode, so GLM-only users see no noise. In
|
|
13
|
-
* mode it surfaces as a help line because the user
|
|
11
|
+
* - `Promise.all` so a slow provider scrape doesn't delay the others.
|
|
12
|
+
* - A `not_configured` non-GLM result is silently dropped (no header,
|
|
13
|
+
* no error line) in `all` mode, so GLM-only users see no noise. In that
|
|
14
|
+
* provider's own mode it surfaces as a help line because the user
|
|
15
|
+
* explicitly asked.
|
|
14
16
|
* - The divider width is computed from the widest body line so the frame
|
|
15
17
|
* stays balanced regardless of which windows/counts are present.
|
|
16
18
|
*/
|
|
17
19
|
import type { FormatOptions } from "./format.js";
|
|
20
|
+
import type { OcQueryResult } from "./ollama-cloud/types.js";
|
|
18
21
|
import type { GoQueryResult, GoWindowKey } from "./opencode-go/types.js";
|
|
19
22
|
import type { QuotaResult } from "./types.js";
|
|
20
23
|
/** Which provider(s) to query. */
|
|
21
|
-
export type Provider = "all" | "glm" | "go";
|
|
22
|
-
/** The combined result of
|
|
24
|
+
export type Provider = "all" | "glm" | "go" | "oc";
|
|
25
|
+
/** The combined result of all providers. */
|
|
23
26
|
export interface CombinedResult {
|
|
24
27
|
glm: QuotaResult;
|
|
25
28
|
go: GoQueryResult;
|
|
29
|
+
oc: OcQueryResult;
|
|
26
30
|
}
|
|
27
31
|
/**
|
|
28
32
|
* Which Opencode Go windows to render. All three (rolling + weekly + monthly)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"combined.d.ts","sourceRoot":"","sources":["../../src/quota/combined.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"combined.d.ts","sourceRoot":"","sources":["../../src/quota/combined.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAIjD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAE7D,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACzE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,kCAAkC;AAClC,MAAM,MAAM,QAAQ,GAAG,KAAK,GAAG,KAAK,GAAG,IAAI,GAAG,IAAI,CAAC;AAEnD,4CAA4C;AAC5C,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,WAAW,CAAC;IACjB,EAAE,EAAE,aAAa,CAAC;IAClB,EAAE,EAAE,aAAa,CAAC;CACnB;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,GAAG,WAAW,EAAE,CAOlE;AAED;;;;;;GAMG;AACH,wBAAsB,aAAa,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,cAAc,CAAC,CAoB/E;AAqBD;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,cAAc,EACxB,IAAI,GAAE;IACJ,QAAQ,EAAE,QAAQ,CAAC;IACnB,GAAG,CAAC,EAAE,aAAa,CAAC;IACpB,SAAS,CAAC,EAAE,WAAW,EAAE,CAAC;IAC1B,kEAAkE;IAClE,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB;gFAC4E;IAC5E,aAAa,CAAC,EAAE,MAAM,CAAC;CACF,GACtB,MAAM,CAWR;AAED,8EAA8E;AAC9E,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,cAAc,EACxB,IAAI,GAAE;IACJ,QAAQ,EAAE,QAAQ,CAAC;IACnB,GAAG,CAAC,EAAE,aAAa,CAAC;IACpB,SAAS,CAAC,EAAE,WAAW,EAAE,CAAC;IAC1B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;CACF,GACtB,MAAM,CASR"}
|