zcode-acp-server 0.76.3 → 0.77.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.
Files changed (37) hide show
  1. package/README.md +46 -8
  2. package/README.zh-CN.md +6 -6
  3. package/dist/account-setup.d.ts +9 -0
  4. package/dist/account-setup.d.ts.map +1 -0
  5. package/dist/account-setup.js +80 -0
  6. package/dist/account-setup.js.map +1 -0
  7. package/dist/backend/credentials.d.ts +3 -3
  8. package/dist/backend/credentials.d.ts.map +1 -1
  9. package/dist/backend/credentials.js +5 -5
  10. package/dist/backend/credentials.js.map +1 -1
  11. package/dist/cli.d.ts +3 -0
  12. package/dist/cli.d.ts.map +1 -1
  13. package/dist/cli.js +9 -1
  14. package/dist/cli.js.map +1 -1
  15. package/dist/code-fingerprint.json +2 -2
  16. package/dist/config/account-provider.d.ts +32 -0
  17. package/dist/config/account-provider.d.ts.map +1 -1
  18. package/dist/config/account-provider.js +36 -6
  19. package/dist/config/account-provider.js.map +1 -1
  20. package/dist/config/bridge-accounts.d.ts +40 -0
  21. package/dist/config/bridge-accounts.d.ts.map +1 -0
  22. package/dist/config/bridge-accounts.js +193 -0
  23. package/dist/config/bridge-accounts.js.map +1 -0
  24. package/dist/config/options.d.ts.map +1 -1
  25. package/dist/config/options.js +2 -1
  26. package/dist/config/options.js.map +1 -1
  27. package/dist/config/provider-registry.d.ts.map +1 -1
  28. package/dist/config/provider-registry.js +2 -2
  29. package/dist/config/provider-registry.js.map +1 -1
  30. package/dist/handlers/session.d.ts +0 -26
  31. package/dist/handlers/session.d.ts.map +1 -1
  32. package/dist/handlers/session.js +0 -111
  33. package/dist/handlers/session.js.map +1 -1
  34. package/dist/tasks-index.d.ts.map +1 -1
  35. package/dist/tasks-index.js +5 -2
  36. package/dist/tasks-index.js.map +1 -1
  37. package/package.json +1 -1
package/README.md CHANGED
@@ -241,9 +241,47 @@ powered by Martty), plan quota cards (`zcode-acp quota`, GLM + Opencode Go + Oll
241
241
  the remote hub daemon (`zcode-acp hub`), and the stdio server editors invoke
242
242
  (`zcode-acp server`). TUI keys and quota setup: [docs/CLI.md](docs/CLI.md).
243
243
 
244
+ ## Manual Coding Plan account setup
245
+
246
+ With a supported ZCode CLI installed, run this command in your own terminal:
247
+
248
+ ```bash
249
+ zcode-acp setup --provider zai # or: bigmodel
250
+ ```
251
+
252
+ Enter your individual Coding Plan API key at the hidden prompt. Do not put a
253
+ key in command arguments or environment flags. Setup saves an owner-only
254
+ `~/.zcode/v2/acp-accounts.json` file (`ZCODE_HOME` relocates the `.zcode` root),
255
+ using atomic replacement and an exclusive setup lock. It never modifies the
256
+ Desktop's `config.json`, `setting.json`, or `provider_config.json`.
257
+
258
+ An explicitly configured bridge account overrides that family's Desktop key
259
+ and enablement **in memory**. Other providers and their order are preserved;
260
+ use `ZCODE_PROVIDER=builtin:zai-coding-plan` (or `builtin:bigmodel-coding-plan`)
261
+ to select a specific account for model discovery and quota queries. The
262
+ installed public catalog supplies the plan's models. Runtime account headers,
263
+ model discovery, and quota use the same merged credential source. Saving does
264
+ not verify plan membership or key validity; the first provider request does.
265
+ Restart connected clients after setup. To return to Desktop-only credentials,
266
+ remove the selected family entry from the private account file, preserving
267
+ version `1` and the other account entries.
268
+
269
+ This is manual terminal setup, not an interactive ACP authentication method.
270
+ T3 Code and other clients can continue using the agent-handled authentication
271
+ already advertised by the bridge. No OAuth/captcha flow or alternative remote
272
+ login mechanism is added.
273
+
274
+ If setup is killed while saving, it may leave an `acp-accounts.json.lock`
275
+ directory. After confirming no setup process is running, remove that empty
276
+ lock directory and retry. It may also leave an `acp-accounts.json.<id>.tmp`
277
+ file. That file is owner-only but can hold the key, so delete it. Setup refuses a malformed, linked, or broadly
278
+ readable account file and never overwrites it. The bridge ignores such a
279
+ file with a warning and keeps using Desktop credentials. Fix or remove the
280
+ file, then run setup again.
281
+
244
282
  ## ACP Registry
245
283
 
246
- This server is compatible with the [ACP Registry](https://agentclientprotocol.com/get-started/registry). It advertises a single `agent`-type auth method at `initialize` time — the GLM API key is read from `~/.zcode/v2/config.json` by the ZCode backend, so **no editor-side credentials are required**.
284
+ This server is compatible with the [ACP Registry](https://agentclientprotocol.com/get-started/registry). It advertises a single `agent`-type auth method at `initialize` time — credentials come from Desktop configuration or a private bridge account created by manual terminal setup, so **no editor-side credentials are required**.
247
285
 
248
286
  The registry submission assets live under [`registry/zcode-acp/`](registry/zcode-acp/) (`agent.json` + `icon.svg`). Once the package is published to npm, copy that directory into a fork of [`agentclientprotocol/registry`](https://github.com/agentclientprotocol/registry) and open a PR — the CI validates the `agent.json` schema, icon, and that `initialize` returns a non-empty `authMethods`.
249
287
 
@@ -315,7 +353,7 @@ Thanks to everyone who has contributed (updated automatically from the
315
353
  <a href="https://github.com/william0wang/zcode-acp/graphs/contributors">
316
354
  <!-- release-please re-stamps &v= on every release: the new URL busts the
317
355
  contrib.rocks and GitHub camo image caches. -->
318
- <img src="https://contrib.rocks/image?repo=william0wang/zcode-acp&v=0.76.3" alt="Contributors" /> <!-- x-release-please-version -->
356
+ <img src="https://contrib.rocks/image?repo=william0wang/zcode-acp&v=0.77.0" alt="Contributors" /> <!-- x-release-please-version -->
319
357
  </a>
320
358
 
321
359
  ## Related Projects
@@ -340,12 +378,12 @@ ZCode backend over **local pipes**; that data reaches the GLM cloud API only
340
378
  because the ZCode backend itself sends it there for inference — this server
341
379
  adds no extra destinations.
342
380
 
343
- | Concern | What & why |
344
- | ----------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
345
- | Network | Only one outbound request in the whole codebase: the quota GET (`open.bigmodel.cn` / `api.z.ai`), carrying just your API key — needed to fetch your usage numbers, sends no user content |
346
- | Credentials | API key read from `~/.zcode/v2/config.json` to authenticate the ZCode subprocess and quota request. Never logged, never written elsewhere. OAuth handled entirely by the ZCode subprocess |
347
- | Disk | No new files created. Writes only to the existing `~/.zcode/v2/tasks-index.sqlite` — this **syncs sessions to the ZCode app** so they appear in its history list and full-text search (stores the session title and first prompt) |
348
- | Logging | Diagnostics to stderr for troubleshooting bridge issues. Even with `ZCODE_ACP_DEBUG=1`, no prompts/code/keys are ever logged |
381
+ | Concern | What & why |
382
+ | ----------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
383
+ | Network | Only one outbound request in the whole codebase: the quota GET (`open.bigmodel.cn` / `api.z.ai`), carrying just your API key — needed to fetch your usage numbers, sends no user content |
384
+ | Credentials | Desktop credentials or owner-only `~/.zcode/v2/acp-accounts.json` authenticate native requests and quota queries. Manual setup writes only the private bridge file; Desktop settings are preserved. Never logged. OAuth remains handled by ZCode |
385
+ | Disk | No new files unless you run `zcode-acp setup`. Setup writes the owner-only (0600) `~/.zcode/v2/acp-accounts.json` by atomic replacement, with a transient `acp-accounts.json.lock` directory and `.tmp` file while it saves. Otherwise writes only to the existing `~/.zcode/v2/tasks-index.sqlite` — this **syncs sessions to the ZCode app** so they appear in its history list and full-text search (stores the session title and first prompt) |
386
+ | Logging | Diagnostics to stderr for troubleshooting bridge issues. Even with `ZCODE_ACP_DEBUG=1`, no prompts/code/keys are ever logged |
349
387
 
350
388
  ## License
351
389
 
package/README.zh-CN.md CHANGED
@@ -265,12 +265,12 @@ commit 约定和 PR 检查清单。重要变更记录在 [CHANGELOG.md](CHANGELO
265
265
  你的提示词、代码、文件内容通过**本地管道**在编辑器与 ZCode 后端之间中转;这些数据会到达
266
266
  GLM 云端 API,仅因 ZCode 后端本身为推理而发送——本服务端不增加任何额外去向。
267
267
 
268
- | 方面 | 做什么 & 为什么 |
269
- | ---- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- |
270
- | 网络 | 全代码库仅一处对外请求:配额 GET(`open.bigmodel.cn` / `api.z.ai`),只带 API key —— 为查询用量数字,不发送用户内容 |
271
- | 凭据 | API key 从 `~/.zcode/v2/config.json` 读取,用于认证 ZCode 子进程和配额请求。从不记录日志、从不写入别处。OAuth 完全由 ZCode 子进程处理 |
272
- | 磁盘 | 不创建任何新文件。只写入已存在的 `~/.zcode/v2/tasks-index.sqlite` —— 这是**将会话同步到 ZCode App**,使其出现在历史列表和全文搜索中(存会话标题和首条提示词) |
273
- | 日志 | 诊断信息输出到 stderr,用于排查桥接问题。即使开启 `ZCODE_ACP_DEBUG=1`,也绝不记录提示词/代码/密钥 |
268
+ | 方面 | 做什么 & 为什么 |
269
+ | ---- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
270
+ | 网络 | 全代码库仅一处对外请求:配额 GET(`open.bigmodel.cn` / `api.z.ai`),只带 API key —— 为查询用量数字,不发送用户内容 |
271
+ | 凭据 | Desktop 凭据或仅所有者可读写的 `~/.zcode/v2/acp-accounts.json` 用于认证原生请求和配额查询。手动 setup 只写入这个私有文件,不修改 Desktop 设置。从不记录日志。OAuth 仍由 ZCode 处理 |
272
+ | 磁盘 | 除非运行 `zcode-acp setup`,否则不创建任何新文件。setup 以原子替换方式写入仅所有者可读写(0600)的 `~/.zcode/v2/acp-accounts.json`,保存期间临时使用 `acp-accounts.json.lock` 目录和 `.tmp` 文件。其余只写入已存在的 `~/.zcode/v2/tasks-index.sqlite` —— 这是**将会话同步到 ZCode App**,使其出现在历史列表和全文搜索中(存会话标题和首条提示词) |
273
+ | 日志 | 诊断信息输出到 stderr,用于排查桥接问题。即使开启 `ZCODE_ACP_DEBUG=1`,也绝不记录提示词/代码/密钥 |
274
274
 
275
275
  ## 许可证
276
276
 
@@ -0,0 +1,9 @@
1
+ import type { ReadStream, WriteStream } from "node:tty";
2
+ /** Read a bounded ASCII key without echo, restoring terminal state on every exit. */
3
+ export declare function readHiddenApiKey(input: ReadStream, output: Pick<WriteStream, "write">): Promise<string>;
4
+ export declare function runAccountSetup(args: string[], input?: NodeJS.ReadStream & {
5
+ fd: 0;
6
+ }, output?: NodeJS.WriteStream & {
7
+ fd: 2;
8
+ }): Promise<void>;
9
+ //# sourceMappingURL=account-setup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"account-setup.d.ts","sourceRoot":"","sources":["../src/account-setup.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AASxD,qFAAqF;AACrF,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,UAAU,EACjB,MAAM,EAAE,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,GACjC,OAAO,CAAC,MAAM,CAAC,CAmDjB;AAED,wBAAsB,eAAe,CACnC,IAAI,EAAE,MAAM,EAAE,EACd,KAAK;;CAAgB,EACrB,MAAM;;CAAiB,GACtB,OAAO,CAAC,IAAI,CAAC,CAkBf"}
@@ -0,0 +1,80 @@
1
+ /** Manual terminal setup; no interactive ACP authentication is advertised. */
2
+ import { emitKeypressEvents } from "node:readline";
3
+ import { codingPlanCatalog, readBridgeAccounts, saveBridgeAccount, } from "./config/bridge-accounts.js";
4
+ /** Read a bounded ASCII key without echo, restoring terminal state on every exit. */
5
+ export function readHiddenApiKey(input, output) {
6
+ if (!input.isTTY || typeof input.setRawMode !== "function")
7
+ return Promise.reject(new Error("Run account setup in an interactive terminal"));
8
+ return new Promise((resolve, reject) => {
9
+ const wasRaw = input.isRaw;
10
+ // A fresh stdin has readableFlowing=null even though isPaused() is false.
11
+ // Starting reads must not leave that otherwise idle handle alive after setup.
12
+ const wasFlowing = input.readableFlowing === true;
13
+ let value = "";
14
+ let done = false;
15
+ const finish = (error) => {
16
+ if (done)
17
+ return;
18
+ done = true;
19
+ input.off("keypress", onKey);
20
+ input.off("end", onEnd);
21
+ input.off("error", onError);
22
+ input.setRawMode(wasRaw);
23
+ if (!wasFlowing) {
24
+ input.pause();
25
+ // Pausing consumption alone can leave stdin referenced by Node.
26
+ input.unref?.();
27
+ }
28
+ output.write("\n");
29
+ if (error)
30
+ reject(error);
31
+ else
32
+ resolve(value);
33
+ value = "";
34
+ };
35
+ const onEnd = () => finish(new Error("Account setup cancelled"));
36
+ const onError = () => finish(new Error("Cannot read terminal input"));
37
+ const onKey = (text, key) => {
38
+ if (key.ctrl && (key.name === "c" || key.name === "d"))
39
+ return onEnd();
40
+ if (key.name === "return" || key.name === "enter")
41
+ return finish();
42
+ if (key.name === "backspace") {
43
+ value = value.slice(0, -1);
44
+ return;
45
+ }
46
+ if (key.ctrl || key.meta || !text)
47
+ return;
48
+ if (!/^[!-~]+$/u.test(text))
49
+ return finish(new Error("Invalid Coding Plan API key"));
50
+ if (value.length + text.length > 4096)
51
+ return finish(new Error("Coding Plan API key is too long"));
52
+ value += text;
53
+ };
54
+ emitKeypressEvents(input);
55
+ input.on("keypress", onKey);
56
+ input.once("end", onEnd);
57
+ input.once("error", onError);
58
+ output.write("Coding Plan API key (hidden): ");
59
+ input.setRawMode(true);
60
+ if (!wasFlowing)
61
+ input.ref?.();
62
+ input.resume();
63
+ });
64
+ }
65
+ export async function runAccountSetup(args, input = process.stdin, output = process.stderr) {
66
+ const parts = args.length === 1 ? args[0].split("=") : args;
67
+ if (parts.length !== 2 || parts[0] !== "--provider" || !["zai", "bigmodel"].includes(parts[1]))
68
+ throw new Error("Usage: zcode-acp setup --provider zai|bigmodel");
69
+ const family = parts[1];
70
+ if (!input.isTTY || !output.isTTY)
71
+ throw new Error("Run account setup in an interactive terminal");
72
+ // Refuse before asking for a secret that could not be used or saved.
73
+ codingPlanCatalog(family);
74
+ readBridgeAccounts();
75
+ output.write("Use your individual Coding Plan API key. This saves a private bridge account; Desktop settings are preserved.\n");
76
+ const apiKey = await readHiddenApiKey(input, output);
77
+ await saveBridgeAccount(family, apiKey);
78
+ output.write("Bridge account saved. Restart connected clients; the first model request verifies the key.\n");
79
+ }
80
+ //# sourceMappingURL=account-setup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"account-setup.js","sourceRoot":"","sources":["../src/account-setup.ts"],"names":[],"mappings":"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"}
@@ -4,8 +4,8 @@
4
4
  * Vendored from the reference Python implementation so this package stays
5
5
  * self-contained. The ZCode desktop app stores provider credentials in
6
6
  * `~/.zcode/v2/config.json`; GUI-launched processes don't inherit shell env
7
- * vars, so we read the config and inject the active provider's settings into
8
- * the subprocess environment.
7
+ * vars, so we read Desktop config plus optional bridge accounts and inject
8
+ * the active provider's settings into the subprocess environment.
9
9
  */
10
10
  /** Credentials extracted from the active provider. */
11
11
  export interface ZcodeCredentials {
@@ -22,7 +22,7 @@ export interface ZcodeCredentials {
22
22
  */
23
23
  providerBaseURL?: string;
24
24
  }
25
- /** Read the active provider's credentials from config.json. Best-effort. */
25
+ /** Read the active provider from Desktop config plus optional bridge accounts. */
26
26
  export declare function loadZcodeCredentials(): ZcodeCredentials;
27
27
  /**
28
28
  * Merge process.env with config credentials.
@@ -1 +1 @@
1
- {"version":3,"file":"credentials.d.ts","sourceRoot":"","sources":["../../src/backend/credentials.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAmBH,sDAAsD;AACtD,MAAM,WAAW,gBAAgB;IAC/B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;;;;;;;OAQG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,4EAA4E;AAC5E,wBAAgB,oBAAoB,IAAI,gBAAgB,CA+BvD;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,gBAAgB,GAAG,MAAM,CAAC,UAAU,CAc5E"}
1
+ {"version":3,"file":"credentials.d.ts","sourceRoot":"","sources":["../../src/backend/credentials.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAmBH,sDAAsD;AACtD,MAAM,WAAW,gBAAgB;IAC/B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;;;;;;;OAQG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,kFAAkF;AAClF,wBAAgB,oBAAoB,IAAI,gBAAgB,CA+BvD;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,gBAAgB,GAAG,MAAM,CAAC,UAAU,CAc5E"}
@@ -4,17 +4,17 @@
4
4
  * Vendored from the reference Python implementation so this package stays
5
5
  * self-contained. The ZCode desktop app stores provider credentials in
6
6
  * `~/.zcode/v2/config.json`; GUI-launched processes don't inherit shell env
7
- * vars, so we read the config and inject the active provider's settings into
8
- * the subprocess environment.
7
+ * vars, so we read Desktop config plus optional bridge accounts and inject
8
+ * the active provider's settings into the subprocess environment.
9
9
  */
10
- import { readFileSync } from "node:fs";
11
10
  import process from "node:process";
11
+ import { readCredentialConfig } from "../config/bridge-accounts.js";
12
12
  import { DEFAULT_MODEL_ID, providerSelectable } from "../config/options.js";
13
13
  import { log, ZCODE_CREDS_PATH } from "../utils.js";
14
- /** Read the active provider's credentials from config.json. Best-effort. */
14
+ /** Read the active provider from Desktop config plus optional bridge accounts. */
15
15
  export function loadZcodeCredentials() {
16
16
  try {
17
- const cfg = JSON.parse(readFileSync(ZCODE_CREDS_PATH, "utf8"));
17
+ const cfg = readCredentialConfig(ZCODE_CREDS_PATH);
18
18
  // ZCODE_PROVIDER pins the provider by id; unset keeps the historical
19
19
  // "first enabled provider wins" behaviour.
20
20
  const pinned = process.env.ZCODE_PROVIDER;
@@ -1 +1 @@
1
- {"version":3,"file":"credentials.js","sourceRoot":"","sources":["../../src/backend/credentials.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,OAAO,MAAM,cAAc,CAAC;AAEnC,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC5E,OAAO,EAAE,GAAG,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AA6BpD,4EAA4E;AAC5E,MAAM,UAAU,oBAAoB;IAClC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAgB,CAAC;QAC9E,qEAAqE;QACrE,2CAA2C;QAC3C,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;QAC1C,KAAK,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC,EAAE,CAAC;YACjE,gEAAgE;YAChE,oEAAoE;YACpE,sEAAsE;YACtE,mEAAmE;YACnE,+DAA+D;YAC/D,oEAAoE;YACpE,IAAI,CAAC,MAAM,IAAI,CAAC,kBAAkB,CAAC,UAAU,EAAE,CAA6C,CAAC;gBAC3F,SAAS;YACX,IAAI,CAAC,EAAE,OAAO,IAAI,CAAC,CAAC,MAAM,IAAI,UAAU,KAAK,MAAM,CAAC,EAAE,CAAC;gBACrD,MAAM,IAAI,GAAG,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC;gBAC7B,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC;gBAC9B,OAAO;oBACL,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,gBAAgB;oBACvD,eAAe,EAAE,IAAI,CAAC,OAAO,IAAI,EAAE;oBACnC,iBAAiB,EAAE,IAAI,CAAC,MAAM,IAAI,EAAE;iBACrC,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,GAAG,CACD,+BAA+B,gBAAgB,KAAK,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CACjG,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAuB;IACvD,MAAM,MAAM,GAAsB,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,GAAG,KAAK,EAAE,CAAC;IAC/D,OAAO,MAAM,CAAC,cAAc,CAAC;IAC7B,KAAK,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,mBAAmB,CAAU,EAAE,CAAC;QAC9D,MAAM,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACzB,IAAI,CAAC;YAAE,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACvB,CAAC;IACD,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC;QAC/B,GAAG,CACD,kDAAkD,OAAO,CAAC,GAAG,CAAC,cAAc,UAAU;YACpF,wGAAwG,CAC3G,CAAC;IACJ,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"credentials.js","sourceRoot":"","sources":["../../src/backend/credentials.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,OAAO,MAAM,cAAc,CAAC;AAEnC,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC5E,OAAO,EAAE,GAAG,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AA6BpD,kFAAkF;AAClF,MAAM,UAAU,oBAAoB;IAClC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,oBAAoB,CAAC,gBAAgB,CAAgB,CAAC;QAClE,qEAAqE;QACrE,2CAA2C;QAC3C,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;QAC1C,KAAK,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC,EAAE,CAAC;YACjE,gEAAgE;YAChE,oEAAoE;YACpE,sEAAsE;YACtE,mEAAmE;YACnE,+DAA+D;YAC/D,oEAAoE;YACpE,IAAI,CAAC,MAAM,IAAI,CAAC,kBAAkB,CAAC,UAAU,EAAE,CAA6C,CAAC;gBAC3F,SAAS;YACX,IAAI,CAAC,EAAE,OAAO,IAAI,CAAC,CAAC,MAAM,IAAI,UAAU,KAAK,MAAM,CAAC,EAAE,CAAC;gBACrD,MAAM,IAAI,GAAG,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC;gBAC7B,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC;gBAC9B,OAAO;oBACL,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,gBAAgB;oBACvD,eAAe,EAAE,IAAI,CAAC,OAAO,IAAI,EAAE;oBACnC,iBAAiB,EAAE,IAAI,CAAC,MAAM,IAAI,EAAE;iBACrC,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,GAAG,CACD,+BAA+B,gBAAgB,KAAK,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CACjG,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAuB;IACvD,MAAM,MAAM,GAAsB,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,GAAG,KAAK,EAAE,CAAC;IAC/D,OAAO,MAAM,CAAC,cAAc,CAAC;IAC7B,KAAK,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,mBAAmB,CAAU,EAAE,CAAC;QAC9D,MAAM,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACzB,IAAI,CAAC;YAAE,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACvB,CAAC;IACD,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC;QAC/B,GAAG,CACD,kDAAkD,OAAO,CAAC,GAAG,CAAC,cAAc,UAAU;YACpF,wGAAwG,CAC3G,CAAC;IACJ,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
package/dist/cli.d.ts CHANGED
@@ -27,6 +27,9 @@ export type Invocation = {
27
27
  } | {
28
28
  kind: "quota";
29
29
  args: string[];
30
+ } | {
31
+ kind: "setup";
32
+ args: string[];
30
33
  } | {
31
34
  kind: "unknown";
32
35
  sub: string;
package/dist/cli.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;;GAWG;AAYH,sFAAsF;AACtF,MAAM,MAAM,UAAU,GAClB;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,GAClD;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,GAClB;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,GACjB;IAAE,IAAI,EAAE,KAAK,CAAA;CAAE,GACf;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,EAAE,CAAA;CAAE,GACjC;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC;AAErC;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,UAAU,CAsBxF"}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;;GAWG;AAaH,sFAAsF;AACtF,MAAM,MAAM,UAAU,GAClB;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,GAClD;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,GAClB;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,GACjB;IAAE,IAAI,EAAE,KAAK,CAAA;CAAE,GACf;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,EAAE,CAAA;CAAE,GACjC;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,EAAE,CAAA;CAAE,GACjC;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC;AAErC;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,UAAU,CAwBxF"}
package/dist/cli.js CHANGED
@@ -13,6 +13,7 @@
13
13
  */
14
14
  import { basename } from "node:path";
15
15
  import process from "node:process";
16
+ import { runAccountSetup } from "./account-setup.js";
16
17
  import { main as runHub } from "./bin/hub.js";
17
18
  import { main as runQuota } from "./bin/quota.js";
18
19
  import { main as runServer, runHeadless } from "./index.js";
@@ -46,6 +47,8 @@ export function resolveInvocation(invokedAs, argv) {
46
47
  return { kind: "serve" };
47
48
  case "hub":
48
49
  return { kind: "hub" };
50
+ case "setup":
51
+ return { kind: "setup", args: argv.slice(1) };
49
52
  case "quota":
50
53
  return { kind: "quota", args: argv.slice(1) };
51
54
  default:
@@ -61,6 +64,8 @@ Commands:
61
64
  (none) | tui Interactive agent chat (Martty TUI): stream output,
62
65
  tool rows, model picker, session resume. /exit quits.
63
66
  'tui --check' runs a headless wiring check and exits.
67
+ setup --provider zai|bigmodel
68
+ Save an individual Coding Plan API key (hidden terminal input).
64
69
  quota [args...] Plan usage cards (was the zcode-quota bin): -w watch,
65
70
  -i <sec>, -d detail, -p plain, provider glm|go.
66
71
  hub Run the remote-access hub daemon (was zcode-acp-hub;
@@ -88,7 +93,7 @@ async function main() {
88
93
  // Long-running surfaces hand over to `bun --smol` when available (idle RSS
89
94
  // ~47 MB vs ~81 MB on Node); the instant paths (help/version/unknown) skip
90
95
  // the re-exec hop entirely.
91
- if (invocation.kind !== "help" && invocation.kind !== "unknown") {
96
+ if (invocation.kind !== "help" && invocation.kind !== "unknown" && invocation.kind !== "setup") {
92
97
  if (await reexecToBunIfEligible(process.argv[1] ?? "", process.argv.slice(2)))
93
98
  return;
94
99
  }
@@ -124,6 +129,9 @@ async function main() {
124
129
  case "hub":
125
130
  await runHub();
126
131
  return;
132
+ case "setup":
133
+ await runAccountSetup(invocation.args);
134
+ return;
127
135
  case "quota":
128
136
  await runQuota(invocation.args);
129
137
  return;
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
1
  {
2
- "fingerprint": "79fc564150857017b844b43cd98b4f5cc5caba05cf9ae30372824f1d43736537",
3
- "fileCount": 127
2
+ "fingerprint": "b40f0708d0cbc346cfb0d94ea40da1b34d8e713c99235728bcd0cb60ee81bd75",
3
+ "fileCount": 129
4
4
  }
@@ -24,6 +24,38 @@
24
24
  * ignores it, so the path we hash must be the same one the CLI resolved.
25
25
  */
26
26
  import type { ZcodeBackend } from "../backend/client.js";
27
+ /** One provider rule in the bundled table. */
28
+ export interface BuiltinProviderRule {
29
+ providerId: string;
30
+ providerName?: string;
31
+ config?: {
32
+ group?: string;
33
+ builtinModelIds?: string[];
34
+ access?: {
35
+ type?: string;
36
+ mode?: string;
37
+ accountType?: string;
38
+ };
39
+ };
40
+ }
41
+ export interface BuiltinTable {
42
+ revision?: number;
43
+ config?: {
44
+ providerConfigRules?: {
45
+ providerRules?: BuiltinProviderRule[];
46
+ };
47
+ };
48
+ }
49
+ /**
50
+ * The parsed table, memoized by path, inode, size, mtime, and ctime. The
51
+ * runtime-headers path reads it several times before every model request, and
52
+ * the file is ~180 KB. Inode and ctime catch a same-size rewrite or rename
53
+ * that keeps the mtime, because utimes cannot set ctime.
54
+ */
55
+ export declare function readBuiltinTable(): {
56
+ table: BuiltinTable;
57
+ file: string;
58
+ } | null;
27
59
  /**
28
60
  * Map a config.json builtin provider id to the account-provider id the
29
61
  * registry actually exposes. `builtin:<family>-coding-plan` is the
@@ -1 +1 @@
1
- {"version":3,"file":"account-provider.d.ts","sourceRoot":"","sources":["../../src/config/account-provider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAQH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAgFzD;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAiB/D;AAED,+EAA+E;AAC/E,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAuB9D;AAyHD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,wBAAwB,CACtC,iBAAiB,EAAE,MAAM,GAAG,SAAS,GACpC;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAyB3B;AAED,0EAA0E,CAAC,MAAM,WAAW,sBAAsB;IAChH,QAAQ,EAAE,MAAM,CAAC;IACjB,2BAA2B,EAAE,MAAM,CAAC;IACpC,SAAS,EAAE,MAAM,CACf,MAAM,EACN;QAAE,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;QAAC,MAAM,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,QAAQ,EAAE,OAAO,CAAA;SAAE,CAAA;KAAE,CAC5E,CAAC;IACF,MAAM,EAAE,MAAM,CACZ,MAAM,EACN;QACE,YAAY,EAAE,WAAW,GAAG,SAAS,GAAG,aAAa,GAAG,SAAS,CAAC;QAClE,QAAQ,EAAE,OAAO,CAAC;QAClB,OAAO,EAAE,OAAO,CAAC;KAClB,CACF,CAAC;CACH;AAED;;;;GAIG;AACH,wBAAgB,0BAA0B,IAAI,sBAAsB,GAAG,IAAI,CA6B1E;AAED;;;;;GAKG;AACH,wBAAsB,yBAAyB,CAC7C,OAAO,EAAE,YAAY,EACrB,MAAM,EAAE,MAAM,MAAM,GACnB,OAAO,CAAC,OAAO,CAAC,CA2BlB"}
1
+ {"version":3,"file":"account-provider.d.ts","sourceRoot":"","sources":["../../src/config/account-provider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAQH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAQzD,8CAA8C;AAC9C,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE;QACP,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;QAC3B,MAAM,CAAC,EAAE;YAAE,IAAI,CAAC,EAAE,MAAM,CAAC;YAAC,IAAI,CAAC,EAAE,MAAM,CAAC;YAAC,WAAW,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;KACjE,CAAC;CACH;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE;QAAE,mBAAmB,CAAC,EAAE;YAAE,aAAa,CAAC,EAAE,mBAAmB,EAAE,CAAA;SAAE,CAAA;KAAE,CAAC;CAC9E;AAqCD;;;;;GAKG;AACH,wBAAgB,gBAAgB,IAAI;IAAE,KAAK,EAAE,YAAY,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAiB/E;AAaD;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAiB/D;AAED,+EAA+E;AAC/E,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAuB9D;AAwID;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,wBAAwB,CACtC,iBAAiB,EAAE,MAAM,GAAG,SAAS,GACpC;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CA0B3B;AAED,0EAA0E,CAAC,MAAM,WAAW,sBAAsB;IAChH,QAAQ,EAAE,MAAM,CAAC;IACjB,2BAA2B,EAAE,MAAM,CAAC;IACpC,SAAS,EAAE,MAAM,CACf,MAAM,EACN;QAAE,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;QAAC,MAAM,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,QAAQ,EAAE,OAAO,CAAA;SAAE,CAAA;KAAE,CAC5E,CAAC;IACF,MAAM,EAAE,MAAM,CACZ,MAAM,EACN;QACE,YAAY,EAAE,WAAW,GAAG,SAAS,GAAG,aAAa,GAAG,SAAS,CAAC;QAClE,QAAQ,EAAE,OAAO,CAAC;QAClB,OAAO,EAAE,OAAO,CAAC;KAClB,CACF,CAAC;CACH;AAED;;;;GAIG;AACH,wBAAgB,0BAA0B,IAAI,sBAAsB,GAAG,IAAI,CA6B1E;AAED;;;;;GAKG;AACH,wBAAsB,yBAAyB,CAC7C,OAAO,EAAE,YAAY,EACrB,MAAM,EAAE,MAAM,MAAM,GACnB,OAAO,CAAC,OAAO,CAAC,CA2BlB"}
@@ -24,12 +24,13 @@
24
24
  * ignores it, so the path we hash must be the same one the CLI resolved.
25
25
  */
26
26
  import { createHash } from "node:crypto";
27
- import { existsSync, readFileSync } from "node:fs";
27
+ import { existsSync, readFileSync, statSync } from "node:fs";
28
28
  import os from "node:os";
29
29
  import path from "node:path";
30
30
  import { readCredentialStoreSync } from "../backend/credential-store.js";
31
31
  import { BUILTIN_PROVIDER_ENV, builtinProviderEnv } from "../backend/resolve.js";
32
32
  import { log, warn, ZCODE_CREDS_PATH } from "../utils.js";
33
+ import { bridgeOverlays, readCredentialConfig } from "./bridge-accounts.js";
33
34
  /** The bundled provider-table file the CLI boots from. */
34
35
  const PROVIDER_CONFIG_NAME = "zcode-builtin.json";
35
36
  /**
@@ -57,12 +58,25 @@ function builtinTablePath() {
57
58
  : "/Applications/ZCode.app/Contents/Resources/config/provider/zcode-builtin.json";
58
59
  return existsSync(bundled) ? bundled : null;
59
60
  }
60
- function readBuiltinTable() {
61
+ let tableCache = null;
62
+ /**
63
+ * The parsed table, memoized by path, inode, size, mtime, and ctime. The
64
+ * runtime-headers path reads it several times before every model request, and
65
+ * the file is ~180 KB. Inode and ctime catch a same-size rewrite or rename
66
+ * that keeps the mtime, because utimes cannot set ctime.
67
+ */
68
+ export function readBuiltinTable() {
61
69
  const file = builtinTablePath();
62
70
  if (!file)
63
71
  return null;
64
72
  try {
65
- return { table: JSON.parse(readFileSync(file, "utf8")), file };
73
+ const { ino, size, mtimeMs, ctimeMs } = statSync(file);
74
+ const key = `${file}\0${ino}:${size}:${mtimeMs}:${ctimeMs}`;
75
+ if (tableCache?.key !== key) {
76
+ const table = JSON.parse(readFileSync(file, "utf8"));
77
+ tableCache = { key, table };
78
+ }
79
+ return { table: tableCache.table, file };
66
80
  }
67
81
  catch (e) {
68
82
  warn(`account-provider: unreadable provider table (${e instanceof Error ? e.message : String(e)})`);
@@ -173,12 +187,27 @@ function storeIndividualCodingPlanKey(accountProviderId) {
173
187
  * 4. `setting.json` — last resort: the Settings UI's remembered pick per
174
188
  * family. A SELECTION record, not an entitlement.
175
189
  *
190
+ * Bridge accounts (`acp-accounts.json`, written by `zcode-acp setup`) sit
191
+ * above the whole ladder: an explicit user key entitles its family's
192
+ * individual coding plan even over an `unavailable` verdict, because
193
+ * deliberate user input beats a possibly stale cache. Only families the
194
+ * credential overlay applied count (see bridgeOverlays), so a family whose
195
+ * installed catalog is unusable gains nothing. They never count as a
196
+ * verdict, so an account for one family leaves source 3 open for the other.
197
+ *
176
198
  * Verified 2026-09 against the desktop's own pushed account snapshot: sources
177
199
  * 1+2 produced exactly its entitlement set (bigmodel individual true, every
178
200
  * zai/start/team plan false); source 3 restores the same outcome on fresh
179
201
  * desktop-only layouts (verified 2026-10 against a real store).
180
202
  */
181
203
  function entitledBuiltinProviders() {
204
+ const out = desktopEntitledBuiltinProviders();
205
+ for (const family of Object.keys(bridgeOverlays()))
206
+ out.add(`builtin:${family}-coding-plan`);
207
+ return out;
208
+ }
209
+ /** Sources 1-4 above, read from the raw desktop files only. */
210
+ function desktopEntitledBuiltinProviders() {
182
211
  const out = new Set();
183
212
  const credsDir = path.dirname(ZCODE_CREDS_PATH);
184
213
  let sawVerdict = false;
@@ -276,10 +305,11 @@ export function codingPlanRequestAuthFor(accountProviderId) {
276
305
  return null;
277
306
  if (!entitledBuiltinProviders().has(legacyId))
278
307
  return null;
279
- // config.json first (the pre-3.12 builtin: provider's own spelling); a fresh
280
- // desktop-only layout has none — fall through to the stored plan key.
308
+ // A bridge account's key, then config.json (the pre-3.12 builtin: provider's
309
+ // own spelling), merged by readCredentialConfig. A fresh desktop-only layout
310
+ // has neither, so the stored plan key answers.
281
311
  try {
282
- const cfg = JSON.parse(readFileSync(ZCODE_CREDS_PATH, "utf8"));
312
+ const cfg = readCredentialConfig(ZCODE_CREDS_PATH);
283
313
  const apiKey = cfg.provider?.[legacyId]?.options?.apiKey?.trim();
284
314
  if (apiKey)
285
315
  return { apiKey };
@@ -1 +1 @@
1
- {"version":3,"file":"account-provider.js","sourceRoot":"","sources":["../../src/config/account-provider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"account-provider.js","sourceRoot":"","sources":["../../src/config/account-provider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ export type CodingPlanFamily = "zai" | "bigmodel";
2
+ type Accounts = Partial<Record<CodingPlanFamily, {
3
+ apiKey: string;
4
+ }>>;
5
+ interface Provider {
6
+ name?: string;
7
+ kind?: string;
8
+ enabled?: boolean;
9
+ options?: {
10
+ apiKey?: string;
11
+ baseURL?: string;
12
+ };
13
+ models?: Record<string, unknown>;
14
+ }
15
+ export interface CredentialConfig {
16
+ provider?: Record<string, Provider>;
17
+ }
18
+ export declare function bridgeAccountsPath(): string;
19
+ export declare function readBridgeAccounts(file?: string): Accounts;
20
+ export declare function saveBridgeAccount(family: CodingPlanFamily, apiKey: string, file?: string): Promise<void>;
21
+ /** Use the installed public catalog rather than inventing plan model IDs. */
22
+ export declare function codingPlanCatalog(family: CodingPlanFamily): {
23
+ models: string[];
24
+ baseURL: string;
25
+ name: string;
26
+ };
27
+ type Overlay = {
28
+ apiKey: string;
29
+ catalog: ReturnType<typeof codingPlanCatalog>;
30
+ };
31
+ /**
32
+ * The saved accounts whose family the installed catalog supports. The overlay
33
+ * and the entitlement rung both read this, so a skipped family is neither
34
+ * overlaid nor entitled.
35
+ */
36
+ export declare function bridgeOverlays(): Partial<Record<CodingPlanFamily, Overlay>>;
37
+ /** Desktop entries retain their order; explicit bridge keys override only their plan. */
38
+ export declare function readCredentialConfig(legacyFile: string): CredentialConfig;
39
+ export {};
40
+ //# sourceMappingURL=bridge-accounts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bridge-accounts.d.ts","sourceRoot":"","sources":["../../src/config/bridge-accounts.ts"],"names":[],"mappings":"AASA,MAAM,MAAM,gBAAgB,GAAG,KAAK,GAAG,UAAU,CAAC;AAClD,KAAK,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,gBAAgB,EAAE;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC,CAAC;AACtE,UAAU,QAAQ;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAChD,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AACD,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;CACrC;AAED,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C;AAYD,wBAAgB,kBAAkB,CAAC,IAAI,SAAuB,GAAG,QAAQ,CAqDxE;AAED,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,gBAAgB,EACxB,MAAM,EAAE,MAAM,EACd,IAAI,SAAuB,GAC1B,OAAO,CAAC,IAAI,CAAC,CAmCf;AAED,6EAA6E;AAC7E,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,gBAAgB,GAAG;IAC3D,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CACd,CAsBA;AAoBD,KAAK,OAAO,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAA;CAAE,CAAC;AAEjF;;;;GAIG;AACH,wBAAgB,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC,CAa3E;AAED,yFAAyF;AACzF,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,gBAAgB,CAgCzE"}