zcode-acp-server 0.46.7 → 0.47.1

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 (55) hide show
  1. package/README.md +1 -1
  2. package/dist/code-fingerprint.json +2 -2
  3. package/dist/remote/endpoint.d.ts.map +1 -1
  4. package/dist/remote/endpoint.js +23 -0
  5. package/dist/remote/endpoint.js.map +1 -1
  6. package/dist/remote/hub-server.d.ts.map +1 -1
  7. package/dist/remote/hub-server.js +115 -2
  8. package/dist/remote/hub-server.js.map +1 -1
  9. package/dist/remote/settings-endpoint.d.ts +47 -0
  10. package/dist/remote/settings-endpoint.d.ts.map +1 -0
  11. package/dist/remote/settings-endpoint.js +1046 -0
  12. package/dist/remote/settings-endpoint.js.map +1 -0
  13. package/dist/settings/agents-config.d.ts +158 -0
  14. package/dist/settings/agents-config.d.ts.map +1 -0
  15. package/dist/settings/agents-config.js +598 -0
  16. package/dist/settings/agents-config.js.map +1 -0
  17. package/dist/settings/app-update.d.ts +193 -0
  18. package/dist/settings/app-update.d.ts.map +1 -0
  19. package/dist/settings/app-update.js +659 -0
  20. package/dist/settings/app-update.js.map +1 -0
  21. package/dist/settings/atomic-write.d.ts +106 -0
  22. package/dist/settings/atomic-write.d.ts.map +1 -0
  23. package/dist/settings/atomic-write.js +228 -0
  24. package/dist/settings/atomic-write.js.map +1 -0
  25. package/dist/settings/cli-config.d.ts +162 -0
  26. package/dist/settings/cli-config.d.ts.map +1 -0
  27. package/dist/settings/cli-config.js +369 -0
  28. package/dist/settings/cli-config.js.map +1 -0
  29. package/dist/settings/coding-plan.d.ts +106 -0
  30. package/dist/settings/coding-plan.d.ts.map +1 -0
  31. package/dist/settings/coding-plan.js +299 -0
  32. package/dist/settings/coding-plan.js.map +1 -0
  33. package/dist/settings/file-lock.d.ts +39 -0
  34. package/dist/settings/file-lock.d.ts.map +1 -0
  35. package/dist/settings/file-lock.js +282 -0
  36. package/dist/settings/file-lock.js.map +1 -0
  37. package/dist/settings/provider-config.d.ts +123 -0
  38. package/dist/settings/provider-config.d.ts.map +1 -0
  39. package/dist/settings/provider-config.js +311 -0
  40. package/dist/settings/provider-config.js.map +1 -0
  41. package/dist/settings/skills.d.ts +72 -0
  42. package/dist/settings/skills.d.ts.map +1 -0
  43. package/dist/settings/skills.js +245 -0
  44. package/dist/settings/skills.js.map +1 -0
  45. package/dist/settings/usage-stats.d.ts +74 -0
  46. package/dist/settings/usage-stats.d.ts.map +1 -0
  47. package/dist/settings/usage-stats.js +235 -0
  48. package/dist/settings/usage-stats.js.map +1 -0
  49. package/dist/utils.d.ts +14 -0
  50. package/dist/utils.d.ts.map +1 -1
  51. package/dist/utils.js +22 -0
  52. package/dist/utils.js.map +1 -1
  53. package/docs/ARCHITECTURE.md +65 -0
  54. package/docs/REMOTE-CLIENTS.md +285 -0
  55. package/package.json +1 -1
package/dist/utils.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
@@ -196,6 +196,20 @@ API only because the ZCode backend itself sends them for inference.
196
196
  | `runtime-model.ts` | runtimeModel overlay construction and application |
197
197
  | `model-cache.ts` | Model ID cache and usage initialization |
198
198
 
199
+ ### `settings/` — ZCode configuration management (ADR-0025–0028)
200
+
201
+ | File | Responsibility |
202
+ | -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------ |
203
+ | `file-lock.ts` | ZCode's cross-process file lock (`<path>.lock` + owner files + stale reclaim) so the bridge and a running desktop app never overwrite each other |
204
+ | `atomic-write.ts` | Locked read-modify-write of a config file: unknown keys preserved, self-validation, backup, temp + rename |
205
+ | `provider-config.ts` | `~/.zcode/v2/provider_config.json`: provider enable/rename, model add/remove, contextWindow / reasoningLevel |
206
+ | `cli-config.ts` | `~/.zcode/cli/config.json`: skills enablement, MCP servers, hooks tree, plugin enablement |
207
+ | `agents-config.ts` | `~/.zcode/v2/agents-state.json` + `~/.zcode/agents/*.md`: subagent CRUD (frontmatter only), enable, model override |
208
+ | `skills.ts` | Skill discovery + enable/delete/copy-to-user with realpath escape guards |
209
+ | `usage-stats.ts` | Local `~/.zcode/cli/db.sqlite` aggregation: per-model tokens + daily buckets |
210
+ | `coding-plan.ts` | Credential decryption + coding-plan reset card status/opportunity/use |
211
+ | `app-update.ts` | ZCode desktop app release check + verified download + bundle swap where the location allows (ADR-0028) |
212
+
199
213
  ### `remote/` — Remote access (opt-in via `ZCODE_ACP_REMOTE=1`)
200
214
 
201
215
  | File | Responsibility |
@@ -206,6 +220,7 @@ API only because the ZCode backend itself sends them for inference.
206
220
  | `file-endpoint.ts` | Read-only `GET /fs/list` + `GET /fs/file` on the loopback server (ADR-0004): Session Root scoping, byte/line windows, streaming |
207
221
  | `status-endpoint.ts` | `GET /status` on the loopback server (ADR-0005): in-memory per-session running state (`pendingTurns` derivation), zero backend RPC |
208
222
  | `session-close-endpoint.ts` | `POST /sessions/{id}/close` on the loopback server (ADR-0006): running-guarded discovery retirement with self-healing re-appearance |
223
+ | `settings-endpoint.ts` | `settings/*` routes on the loopback server (ADR-0025): the ZCode configuration API, mounted again by the hub behind the token |
209
224
  | `hub-server.ts` | The hub singleton: token auth, instance discovery, byte-level WS proxying, heartbeat pruning, on-demand `?probe=1` liveness, idle exit, version self-upgrade, `GET /api/quota` direct query (ADR-0005), POST close proxy (ADR-0006) |
210
225
 
211
226
  When enabled, the same `AgentApp` serves the stdio editor and a loopback
@@ -248,6 +263,56 @@ surface's first write op: `POST /api/instances/{id}/sessions/{sid}/close`
248
263
  retires a conversation from discovery (running-guarded, self-healing if the
249
264
  editor still has it open).
250
265
 
266
+ ### `settings/` — ZCode configuration management (ADR-0025–0028)
267
+
268
+ The settings API exposes the desktop app's management surface as JSON so a
269
+ native client can render it: models, skills, MCP servers, hooks, subagents,
270
+ app usage, coding-plan reset cards, and app updates. All of it is machine-level
271
+ state under `~/.zcode/` that the desktop app owns, which drives two design
272
+ choices.
273
+
274
+ First, **the bridge is not the owner of these files** — it is a second writer
275
+ next to a running desktop app. Every write therefore goes through
276
+ `file-lock.ts`, a re-implementation of ZCode's own cross-process lock
277
+ (`<path>.lock` directory + per-holder owner file + stale reclaim), and through
278
+ `atomic-write.ts`'s read-modify-write that preserves unknown keys, self-
279
+ validates, backs up, then temp-file + rename (ADR-0026). Without the shared
280
+ lock a settings write landing during an app write silently discards the app's
281
+ change.
282
+
283
+ Second, **the API layer is mounted twice from one factory**
284
+ (`remote/settings-endpoint.ts`): on the bridge's loopback server unauthenticated
285
+ (exactly like `/status` and `/fs` — any local process can already write these
286
+ files) and on the hub under `/api/settings/*` behind the token, plus the
287
+ per-instance proxy `…/settings/*`. Writing the routing once and mounting twice
288
+ is what keeps the two in sync (ADR-0025).
289
+
290
+ Each write reports an **effect class**: `immediate` for the provider table
291
+ (absorbed by the backend's ~1s poll) and skills enablement (read live), versus
292
+ `needs-restart` for MCP servers, hooks, and subagent markdown, which the agent
293
+ reads once at start. The client either prompts or calls
294
+ `POST /api/instances/{id}/backend/restart`, which reuses the sandbox
295
+ arm-flip's cancel-then-respawn path.
296
+
297
+ App usage stats are aggregated locally from the agent database
298
+ (`~/.zcode/cli/db/db.sqlite`) rather than proxying the backend's `usage/stats`
299
+ RPC, so usage works with no backend process alive and degrades to
300
+ `{available: false}` on a machine that never ran an agent (ADR-0027). Coding-
301
+ plan reset cards are the one irreversible operation: they require the nonce
302
+ from a fresh status read, are restricted to `account:*` providers, and carry an
303
+ idempotency key so a retry cannot burn two cards.
304
+
305
+ App updates (ADR-0028) reproduce the desktop app's own discovery half — the same
306
+ manifest endpoint, platform/channel spelling, and sha512 verification — but stop
307
+ short of privileged escalation. Whether the bundle can be swapped is probed at
308
+ install time with `accessSync(dirname(app), W_OK)` rather than assumed: a
309
+ writable location is replaced directly (old bundle renamed aside first, deleted
310
+ only after the new one is in place, so a failed install leaves the previous
311
+ version intact), and anything else is reported as `needs-user-install` with the
312
+ artifact path so the client can hand the user a one-step instruction. The
313
+ running app is never killed. No claim is made about which branch a given machine
314
+ takes — that is what the probe is for.
315
+
251
316
  ## Key State Machines
252
317
 
253
318
  ### Turn state
@@ -393,6 +393,291 @@ section — so clients can reproduce the CLI layout exactly:
393
393
  later. Only transport-level failures reject the request.
394
394
  - Cached ~10s server-side (same caches as the `/quota` command).
395
395
 
396
+ ## Settings API
397
+
398
+ The machine's ZCode configuration, exposed as JSON so a native client can
399
+ render the management UI that the desktop app provides (ADR-0025). Plain HTTP,
400
+ no ACP connection needed. **User scope only** — `~/.zcode/`; project-level
401
+ (`<ws>/.zcode/`) configuration is not part of this contract yet.
402
+
403
+ Two mounts, identical routes and identical semantics:
404
+
405
+ - `{hub}/api/settings/*` — token-gated (`Authorization: Bearer …` or
406
+ `?token=…`), the only public entry.
407
+ - `http://127.0.0.1:{bridgePort}/settings/*` — the bridge's own loopback
408
+ server, **unauthenticated** like `/status` and `/fs`. Any local process can
409
+ already write these files, so the HTTP route grants no new capability. The
410
+ bind is `127.0.0.1` only.
411
+ - Per-instance proxying is available too:
412
+ `{hub}/api/instances/{id}/settings/*` relays to that bridge's loopback
413
+ mount (same body passthrough as session close/rename).
414
+
415
+ Every write answers with an **effect class** — read it before deciding whether
416
+ to prompt the user:
417
+
418
+ | `effect` | Meaning |
419
+ | --------------- | ----------------------------------------------------------------------- |
420
+ | `immediate` | Applied to the running backend within ~1s (provider table poll, skills) |
421
+ | `needs-restart` | Read once at agent start — needs a new backend process to take effect |
422
+
423
+ `needs-restart` applies to MCP servers, hooks, and subagent markdown. After
424
+ such a write, either prompt the user or call
425
+ `POST {hub}/api/instances/{id}/backend/restart`, which cancels in-flight turns
426
+ and respawns that bridge's backend (see below). `GET /api/settings/pending-restart`
427
+ reports whether this process has recorded any `needs-restart` write since it
428
+ started.
429
+
430
+ ### Read endpoints
431
+
432
+ | Endpoint | Purpose |
433
+ | ---------------------------- | ------------------------------------------------------------------------ |
434
+ | `GET /settings/all` | One-shot snapshot of every section (first screen) |
435
+ | `GET /settings/models` | Selectable models, unioned across `config.json` + `provider_config.json` |
436
+ | `GET /settings/skills` | Discovered skills with their enabled state |
437
+ | `GET /settings/mcp` | Configured MCP servers (user config + enabled plugins) |
438
+ | `GET /settings/hooks` | The full hooks tree, 7 event names |
439
+ | `GET /settings/agents` | Subagents with enabled state and model override |
440
+ | `GET /settings/usage?range=` | `7d` \| `30d` \| `all` per-model token usage |
441
+ | `GET /settings/quota` | Same payload as `/api/quota` (account-level, hub only) |
442
+ | `GET /settings/reset-cards` | Coding-plan reset card status (`?providerId=` required) |
443
+ | `GET /settings/backups` | Config backups available for restore |
444
+ | `GET /settings/app-update` | ZCode desktop app version check (`?channel=stable\|preview`) |
445
+
446
+ `/settings/all` degrades per section: a failure to read the local config files
447
+ is a whole-request `500` (the environment is broken), while `usage` and
448
+ `resetCards` report their own state — no database and no credentials are normal,
449
+ not errors. `resetCards` in the snapshot carries **eligibility only**
450
+ (`providers` + whether the credential store decrypts); the cards themselves need
451
+ a `providerId` and a network read, so fetch them from
452
+ `GET /settings/reset-cards?providerId=…`.
453
+
454
+ ### Write endpoints
455
+
456
+ | Endpoint | Effect | Purpose |
457
+ | ----------------------------------------- | --------------- | ------------------------------------------- |
458
+ | `PUT /settings/providers/{id}` | `immediate` | Enable/disable, rename |
459
+ | `POST /settings/models` | `immediate` | Add a model to an existing provider |
460
+ | `DELETE /settings/models/{pid}/{mid}` | `immediate` | Remove a model |
461
+ | `POST /settings/skills/enable` | `immediate` | `{path, enable}` |
462
+ | `DELETE /settings/skills/{path}` | `immediate` | Delete a skill directory |
463
+ | `POST /settings/skills/copy-to-user` | `immediate` | Copy a workspace skill to `~/.zcode/skills` |
464
+ | `PUT /settings/mcp/{name}` | `needs-restart` | Create or update an MCP server |
465
+ | `DELETE /settings/mcp/{name}` | `needs-restart` | Remove an MCP server |
466
+ | `POST /settings/mcp/enable` | `needs-restart` | `{name, enable}` |
467
+ | `PUT /settings/hooks/{event}/{index}` | `needs-restart` | Edit one existing hook entry |
468
+ | `POST /settings/hooks/enabled` | `needs-restart` | `{enabled}` — the whole hooks tree |
469
+ | `PUT /settings/agents/{id}` | `needs-restart` | Create or update a subagent |
470
+ | `DELETE /settings/agents/{id}` | `needs-restart` | Delete a subagent |
471
+ | `POST /settings/agents/{id}/enable` | `needs-restart` | `{enable}` |
472
+ | `POST /settings/reset-cards/use` | — | Consume a reset card (see below) |
473
+ | `POST /settings/reset-cards/opportunity` | — | Request an opportunity (see below) |
474
+ | `POST /settings/reset-cards/history-read` | — | Mark the reset history read |
475
+ | `POST /settings/backups/restore` | per file | Restore a backup |
476
+ | `POST /settings/app-update/install` | — | Download and stage a new app build |
477
+
478
+ Notes that clients must honor:
479
+
480
+ - **Methods include PUT and DELETE**, and the hub's CORS preflight allows all
481
+ four (`GET, POST, PUT, DELETE, OPTIONS`) — a browser-based client can issue
482
+ them without a plugin fetch shim.
483
+ - **Providers cannot be created or deleted** through this API — only enabled
484
+ state, display name, and the models inside an existing provider. Adding a
485
+ brand-new provider stays a desktop-app (or hand-edit) operation.
486
+ - **MCP writes are type-checked**: `type` / `url` / `command` must be strings,
487
+ `args` an array of strings, `env` / `headers` objects of strings, `enabled` a
488
+ boolean — anything else is a `400`. Unknown keys still pass through, but a
489
+ malformed known field is refused rather than persisted: the agent runtime
490
+ validates each server on its own and silently SKIPS the one that fails, so a
491
+ bad entry would make the server you just added vanish at the next start with
492
+ no error anywhere. `type` may be omitted — the runtime infers `stdio` from a
493
+ `command` and `http` from a `url`, and also accepts a legacy `remote`.
494
+ - **Hooks are read-complete but write-limited**: the tree is returned in full,
495
+ and writes may only modify an existing entry's `command` / `timeoutMs` /
496
+ `enabled`. Adding or removing events, matchers, or hook entries is not
497
+ supported. Unknown keys on a hook object are preserved verbatim.
498
+ - **Subagents**: `name`, `description`, `color`, `model`, `thoughtLevel` are
499
+ editable; the system-prompt body is not. Built-in agents (`general-purpose`,
500
+ `Explore`) cannot be edited or deleted — only their model override can change.
501
+ Send `{"providerId": null, "modelId": null}` on a built-in agent to CLEAR its
502
+ override and return it to the workspace default.
503
+ - **Reset cards are irreversible.** `POST /settings/reset-cards/use` requires
504
+ the `nonce` returned by `GET /settings/reset-cards`, is restricted to
505
+ `account:*` providers (`403` otherwise), and carries an idempotency key so a
506
+ retry cannot burn two cards. `credentials_unavailable` means the machine's
507
+ encrypted credential store could not be decrypted.
508
+ - Every write is a locked read-modify-write of the real file: unknown keys are
509
+ preserved, a backup is taken first, and a write that fails self-validation
510
+ never lands. Concurrent writers are serialized by ZCode's own cross-process
511
+ lock, so the last write wins and no change is silently dropped.
512
+
513
+ ### Restarting the backend
514
+
515
+ ```text
516
+ POST {hub}/api/instances/{id}/backend/restart → 200 { "ok": true, "cancelledTurns": 2 }
517
+ ```
518
+
519
+ Cancels that bridge's in-flight turns, kills its `zcode app-server` child, and
520
+ lets the next prompt respawn it — the same path the sandbox arm-flip uses.
521
+ `cancelledTurns` is how many conversations were interrupted; surface it before
522
+ the user commits to the action. The response also carries `closed`: `false`
523
+ means the old child refused to die, the pending flag stays armed (the writes
524
+ were NOT applied), and the restart is worth retrying.
525
+
526
+ `GET /api/instances/{id}/settings/pending-restart` reports whether that bridge
527
+ process has recorded any `needs-restart` write since it last restarted its
528
+ backend, so a client can ask "is a restart needed?" on a fresh screen instead of
529
+ tracking it itself. The flag is cleared by a successful backend restart.
530
+
531
+ Use the **per-instance** spelling, not the hub-local
532
+ `GET /api/settings/pending-restart`: the counter lives in the bridge that served
533
+ the write, and the hub has no backend of its own to restart, so its copy can
534
+ never be cleared. The hub-local route therefore answers `409` with a pointer to
535
+ the per-instance spelling rather than a `pendingRestart` boolean — reporting
536
+ `true` would strand a client on "restart needed" with no request able to clear
537
+ it, and reporting `false` would be a claim it cannot verify.
538
+
539
+ ### Reset cards (coding-plan quota)
540
+
541
+ Three calls, in this order:
542
+
543
+ ```text
544
+ GET /settings/reset-cards?providerId=account:bigmodel-individual-coding-plan
545
+ POST /settings/reset-cards/use { providerId, resetType, nonce, idempotencyKey }
546
+ POST /settings/reset-cards/history-read { providerId }
547
+ ```
548
+
549
+ ```json
550
+ → { "ok": true, "resetCards": {
551
+ "availableFiveHour": [{ "expireAt": 1790000000000 }],
552
+ "availableWeek": [],
553
+ "latestFiveHour": { "usedAt": 1789000000000 },
554
+ "latestWeek": null,
555
+ "hasUnreadHistory": true,
556
+ "nonce": "3f6c…" } }
557
+ ```
558
+
559
+ - `resetType` is `FIVE_HOUR` or `WEEK`.
560
+ - The `nonce` is issued per status read. Sending one that was never issued (or
561
+ that a newer status read replaced) answers `409` — refresh the status and
562
+ retry. This is what stops a screen the user left open an hour ago from
563
+ spending a card they have since seen change.
564
+ - The nonce is burned only **after** the spend settles, never before it. A spend
565
+ that reached the server and failed on the way back (timeout, dropped
566
+ response, upstream error) leaves the nonce valid, so the retry is judged by
567
+ the backend and its idempotency key — not rejected out of hand with a `409`
568
+ the user cannot act on.
569
+ - A spend already in flight for the same provider is refused with `409` ("a
570
+ reset for this provider is already in progress"). The deferred burn is safe
571
+ for a RETRY of the same gesture — same key, so the backend answers with the
572
+ outcome it already recorded — but a second INDEPENDENT gesture (a double tap,
573
+ another client that read the same status) brings its own key, and nothing
574
+ upstream could stop it burning a second card. Serialize the UI on the busy
575
+ state the client already tracks.
576
+ - The `idempotencyKey` is what makes a retry safe: the same key always answers
577
+ the same outcome, so a dropped response cannot burn a second card. Generate
578
+ it once per user gesture and reuse it on retry — a FRESH key per attempt is
579
+ exactly what defeats it.
580
+ - Status codes carry the retry advice. A `409` is a nonce problem (refresh). A
581
+ `502`/`504` means the reset API was unreachable or failed — the card may have
582
+ been spent, so retry with the same key rather than assuming the write failed.
583
+ A `400` is a request the server rejected outright.
584
+ - A denial is `{ok: true, granted: false, nextTryAt: <ms>}` — a countdown to
585
+ render, not an error.
586
+ - `credentials_unavailable` means the machine's encrypted credential store
587
+ could not be decrypted (missing file, wrong `ZCODE_CREDENTIAL_SECRET`, or a
588
+ different machine's store).
589
+ - Known limit: a **team** plan needs organization/project scope headers whose
590
+ ids are not in the credential store a headless process can read, so team-plan
591
+ resets answer a backend error. Personal plans work.
592
+
593
+ ### Usage payload
594
+
595
+ ```json
596
+ {
597
+ "available": true,
598
+ "range": "7d",
599
+ "summary": { "totalTokens": 1587917357, "requestCount": 20630, "models": 7 },
600
+ "models": [
601
+ {
602
+ "modelId": "GLM-5.3",
603
+ "totalTokens": 1587917357,
604
+ "inputTokens": 0,
605
+ "outputTokens": 0,
606
+ "reasoningTokens": 0,
607
+ "cacheReadTokens": 0,
608
+ "requestCount": 11419,
609
+ "share": 0.53
610
+ }
611
+ ],
612
+ "daily": [{ "date": "2026-09-22", "models": [{ "modelId": "GLM-5.3", "totalTokens": 100 }] }]
613
+ }
614
+ ```
615
+
616
+ `available: false` with zero values means the local agent database does not
617
+ exist on this machine (never ran an agent) — render an empty state, not an
618
+ error. Tool statistics and the activity heatmap are not in the first version.
619
+
620
+ ### Updating the ZCode desktop app
621
+
622
+ The bridge checks the official release feed and stages the verified download, so
623
+ a client can offer "update available" without the user opening the app.
624
+
625
+ ```text
626
+ GET /settings/app-update?channel=stable
627
+ POST /settings/app-update/install { version, url, channel? }
628
+ ```
629
+
630
+ ```json
631
+ → { "ok": true, "appUpdate": {
632
+ "updateAvailable": true,
633
+ "currentVersion": "3.14.1",
634
+ "latestVersion": "3.14.3",
635
+ "channel": "preview",
636
+ "platform": "darwin-aarch64",
637
+ "appPath": "/Applications/ZCode.app",
638
+ "releaseName": "Release v3.14.3",
639
+ "releaseNotes": "## 新功能\n…",
640
+ "files": [{ "url": "https://cdn-zcode.z.ai/…/ZCode-3.14.3-mac-arm64.zip", "sha512": "…" }],
641
+ "install": { "stage": "idle", "version": null, "receivedBytes": 0, "totalBytes": null } } }
642
+ ```
643
+
644
+ - `channel` is `stable` (default) or `preview`. The preview channel is the app's
645
+ own opt-in setting; do not switch a user into it silently.
646
+ - `updateAvailable: false` with `currentVersion: null` means **no ZCode app is
647
+ installed on this machine** — hide the row, do not show an error.
648
+ - Pass `version` and `url` from the same `GET` response you just read. The bridge
649
+ then **re-reads the manifest itself** and refuses (`409`) unless that exact URL
650
+ is a current manifest entry with a checksum, and `version` is what the channel
651
+ is actually serving — so a client cannot ask for an old build (a silent
652
+ downgrade) or skip verification. A `sha512` in the request body is ignored for
653
+ the same reason: the manifest's checksum is the one that counts.
654
+ - Only `https://cdn-zcode.z.ai/…` URLs are accepted (`400` otherwise).
655
+ - The install answers `202 Accepted` immediately and runs in the background;
656
+ poll `GET /settings/app-update` (its `install` field) for progress. A second
657
+ install while one is running answers `409`.
658
+
659
+ `install.stage` is the outcome, and clients must render each one differently:
660
+
661
+ | `stage` | Meaning and what to show |
662
+ | -------------------- | ----------------------------------------------------------------------------- |
663
+ | `downloading` | `receivedBytes` / `totalBytes` progress |
664
+ | `installing` | Verified, swapping the bundle |
665
+ | `done` | Installed. `restartRequired: true` — ask the user to quit and reopen the app |
666
+ | `needs-user-install` | `artifactPath` holds the verified bundle; the install location needs the user |
667
+ | `failed` | `error` carries the reason |
668
+
669
+ **`needs-user-install` is an outcome, not a failure.** The bridge probes whether
670
+ the install location is writable and swaps the bundle only when it is. When it
671
+ is not, the download and checksum still ran, so the verified bundle is left at
672
+ `artifactPath` and the user finishes the job: show the path (or reveal it in
673
+ Finder), and they drag `ZCode.app` over the old one — macOS raises a one-shot
674
+ confirmation for that replacement. Reporting `done` here would be a lie the user
675
+ discovers on relaunch.
676
+
677
+ An app installed in a writable location is replaced directly and answers `done`.
678
+ The old bundle is only deleted after the new one is in place, so a failed install
679
+ leaves the previous version intact.
680
+
396
681
  ## Session running status
397
682
 
398
683
  Two layers (ADR-0005), both plain HTTP — no ACP connection needed:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zcode-acp-server",
3
- "version": "0.46.7",
3
+ "version": "0.47.1",
4
4
  "description": "Agent Client Protocol (ACP) server bridging headless ZCode to editors like Zed and JetBrains.",
5
5
  "type": "module",
6
6
  "license": "Apache-2.0",