zcode-acp-server 0.14.3 → 0.17.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 (93) hide show
  1. package/README.md +109 -9
  2. package/README.zh-CN.md +91 -9
  3. package/dist/backend/index.d.ts +1 -0
  4. package/dist/backend/index.d.ts.map +1 -1
  5. package/dist/backend/index.js +1 -0
  6. package/dist/backend/index.js.map +1 -1
  7. package/dist/backend/sandbox.d.ts +92 -23
  8. package/dist/backend/sandbox.d.ts.map +1 -1
  9. package/dist/backend/sandbox.js +265 -70
  10. package/dist/backend/sandbox.js.map +1 -1
  11. package/dist/cli.d.ts +2 -0
  12. package/dist/cli.d.ts.map +1 -1
  13. package/dist/cli.js +10 -1
  14. package/dist/cli.js.map +1 -1
  15. package/dist/config/auto-compact.d.ts.map +1 -1
  16. package/dist/config/auto-compact.js +6 -4
  17. package/dist/config/auto-compact.js.map +1 -1
  18. package/dist/config/mcp-discovery.d.ts.map +1 -1
  19. package/dist/config/mcp-discovery.js +7 -5
  20. package/dist/config/mcp-discovery.js.map +1 -1
  21. package/dist/handlers/background-tasks.d.ts.map +1 -1
  22. package/dist/handlers/background-tasks.js +2 -2
  23. package/dist/handlers/background-tasks.js.map +1 -1
  24. package/dist/handlers/dispatch.d.ts.map +1 -1
  25. package/dist/handlers/dispatch.js +4 -4
  26. package/dist/handlers/dispatch.js.map +1 -1
  27. package/dist/handlers/replay.d.ts.map +1 -1
  28. package/dist/handlers/replay.js +11 -5
  29. package/dist/handlers/replay.js.map +1 -1
  30. package/dist/handlers/sandbox-allow.d.ts +71 -0
  31. package/dist/handlers/sandbox-allow.d.ts.map +1 -0
  32. package/dist/handlers/sandbox-allow.js +299 -0
  33. package/dist/handlers/sandbox-allow.js.map +1 -0
  34. package/dist/handlers/server-requests.d.ts.map +1 -1
  35. package/dist/handlers/server-requests.js +7 -5
  36. package/dist/handlers/server-requests.js.map +1 -1
  37. package/dist/handlers/session.d.ts +14 -1
  38. package/dist/handlers/session.d.ts.map +1 -1
  39. package/dist/handlers/session.js +193 -20
  40. package/dist/handlers/session.js.map +1 -1
  41. package/dist/handlers/slash.d.ts.map +1 -1
  42. package/dist/handlers/slash.js +15 -13
  43. package/dist/handlers/slash.js.map +1 -1
  44. package/dist/i18n.d.ts +111 -0
  45. package/dist/i18n.d.ts.map +1 -0
  46. package/dist/i18n.js +222 -0
  47. package/dist/i18n.js.map +1 -0
  48. package/dist/index.d.ts +18 -0
  49. package/dist/index.d.ts.map +1 -1
  50. package/dist/index.js +114 -15
  51. package/dist/index.js.map +1 -1
  52. package/dist/interaction/adapter.d.ts.map +1 -1
  53. package/dist/interaction/adapter.js +10 -7
  54. package/dist/interaction/adapter.js.map +1 -1
  55. package/dist/remote/config.d.ts +7 -0
  56. package/dist/remote/config.d.ts.map +1 -1
  57. package/dist/remote/config.js +2 -0
  58. package/dist/remote/config.js.map +1 -1
  59. package/dist/remote/endpoint.d.ts.map +1 -1
  60. package/dist/remote/endpoint.js +66 -11
  61. package/dist/remote/endpoint.js.map +1 -1
  62. package/dist/remote/hub-server.d.ts +15 -0
  63. package/dist/remote/hub-server.d.ts.map +1 -1
  64. package/dist/remote/hub-server.js +205 -1
  65. package/dist/remote/hub-server.js.map +1 -1
  66. package/dist/repl/App.d.ts.map +1 -1
  67. package/dist/repl/App.js +3 -2
  68. package/dist/repl/App.js.map +1 -1
  69. package/dist/repl/model.d.ts +2 -0
  70. package/dist/repl/model.d.ts.map +1 -1
  71. package/dist/repl/model.js.map +1 -1
  72. package/dist/repl/run.d.ts.map +1 -1
  73. package/dist/repl/run.js +5 -0
  74. package/dist/repl/run.js.map +1 -1
  75. package/dist/server.d.ts +78 -1
  76. package/dist/server.d.ts.map +1 -1
  77. package/dist/server.js +114 -3
  78. package/dist/server.js.map +1 -1
  79. package/dist/tasks-index.d.ts +27 -0
  80. package/dist/tasks-index.d.ts.map +1 -1
  81. package/dist/tasks-index.js +72 -3
  82. package/dist/tasks-index.js.map +1 -1
  83. package/docs/REMOTE-CLIENTS.md +43 -0
  84. package/docs/TROUBLESHOOTING.md +9 -3
  85. package/package.json +13 -12
  86. package/dist/remote/session-liveness.d.ts +0 -19
  87. package/dist/remote/session-liveness.d.ts.map +0 -1
  88. package/dist/remote/session-liveness.js +0 -70
  89. package/dist/remote/session-liveness.js.map +0 -1
  90. package/dist/repl/mouse.d.ts +0 -49
  91. package/dist/repl/mouse.d.ts.map +0 -1
  92. package/dist/repl/mouse.js +0 -165
  93. package/dist/repl/mouse.js.map +0 -1
@@ -2,12 +2,20 @@
2
2
  * Seatbelt sandbox for the zcode backend subprocess (ADR-0011).
3
3
  *
4
4
  * The backend runs every Bash/Edit/Write tool with the user's full
5
- * privileges; one careless command destroys real data. When
6
- * ZCODE_ACP_SANDBOX=1, the bridge wraps the single backend spawn point with
7
- * a generated `sandbox-exec` profile using a writes-only restriction model:
8
- * reads and process execution stay open, file writes are denied everywhere
9
- * except an explicit whitelist. Children inherit the sandbox, so one wrap
10
- * covers the backend, its tool subprocesses, and model workers.
5
+ * privileges; one careless command destroys real data. The bridge wraps the
6
+ * single backend spawn point with a generated `sandbox-exec` profile using a
7
+ * writes-only restriction model: reads and process execution stay open, file
8
+ * writes are denied everywhere except an explicit whitelist. Children inherit
9
+ * the sandbox, so one wrap covers the backend, its tool subprocesses, and
10
+ * model workers deletion (rm/mv/truncate) is a write-class syscall, so it
11
+ * is stopped by the write denial regardless of which binary performs it
12
+ * (name-banning executables would be trivially bypassed and is deliberately
13
+ * not done).
14
+ *
15
+ * Arming is dual-switch (see sandboxActive): ZCODE_ACP_SANDBOX=1 forces it
16
+ * globally, or a workspace opts in via `enabled: true` in its own
17
+ * .zcode/acp/sandbox.json — the template is auto-created with enabled:false,
18
+ * so opting in is always an explicit user edit.
11
19
  *
12
20
  * Whitelist (frozen at spawn, rebuilt on backend restart):
13
21
  * - workspace roots of all live sessions (union of server.sessionCwds)
@@ -16,6 +24,7 @@
16
24
  * - system temp + regenerable cache dirs (zero-value targets, constant
17
25
  * toolchain traffic)
18
26
  * - each project's `.zcode/acp/sandbox.json` `allow` list
27
+ * - bridge-lifetime once-allows granted via the dynamic allow flow
19
28
  *
20
29
  * `<workspace>/.zcode/acp/` is a DENY island inside every allowed workspace:
21
30
  * the sandbox forbids writes there while the bridge — outside the sandbox —
@@ -25,7 +34,7 @@
25
34
  * macOS-only: Seatbelt is a macOS facility. Setting the env elsewhere warns
26
35
  * once and runs unsandboxed (see sandboxActive()).
27
36
  */
28
- import { mkdirSync, readFileSync, realpathSync, writeFileSync } from "node:fs";
37
+ import { lstatSync, mkdirSync, mkdtempSync, readFileSync, realpathSync, rmSync, writeFileSync, } from "node:fs";
29
38
  import os from "node:os";
30
39
  import path from "node:path";
31
40
  import process from "node:process";
@@ -46,48 +55,180 @@ const ZCODE_STATE_DIRS = ["~/.zcode", "~/.zcode-beta", "~/.zcode-plugin"];
46
55
  export function sandboxConfigPath(workspaceRoot) {
47
56
  return path.join(workspaceRoot, ".zcode", "acp", "sandbox.json");
48
57
  }
58
+ /** Roots whose template auto-creation already failed — warn once, not per call. */
59
+ const templateFailedRoots = new Set();
60
+ /** Config issues already warned — once per root(+issue), not per read. */
61
+ const warnedConfigIssues = new Set();
62
+ /**
63
+ * Last enabled value successfully parsed per config file. A config that
64
+ * becomes unreadable (EACCES/ENOTDIR) or VANISHES after parsing enabled:true
65
+ * must fail closed: the sandboxed agent can produce all of those from inside
66
+ * the sandbox (chmod 0000 `.zcode`, replace `.zcode` with a file, rename it
67
+ * away) — falling back to the disabled template would silently disarm.
68
+ */
69
+ const lastEnabledSeen = new Map();
70
+ function defaultConfig(enabled) {
71
+ return { enabled, allow: [], deny: [], strictGit: false };
72
+ }
73
+ /**
74
+ * The config file must be a REGULAR file whose real location is exactly
75
+ * <root>/.zcode/acp/sandbox.json. A symlinked or hardlinked-away config
76
+ * pierces the deny island: the agent writes the link target inside the
77
+ * allowed workspace and thereby edits its own allowlist. Missing files are
78
+ * fine — that is the auto-create path.
79
+ */
80
+ function configIntegrityOk(workspaceRoot, file) {
81
+ try {
82
+ const st = lstatSync(file);
83
+ if (!st.isFile() || st.nlink > 1)
84
+ return false;
85
+ return realpathSync(file) === sandboxConfigPath(resolveReal(workspaceRoot));
86
+ }
87
+ catch {
88
+ return true; // missing (or unreadable parents) → template path
89
+ }
90
+ }
49
91
  /**
50
- * Read the project sandbox config, auto-creating it with defaults on first
51
- * sandboxed run. Tolerates absent/garbage files (falls back to defaults)
52
- * a broken config must never keep the sandbox from arming.
92
+ * Read the project sandbox config, auto-creating the template (enabled:
93
+ * false) on first touch so the user finds the file and can flip the switch
94
+ * the PRESENCE of the file is never the switch, only `enabled` is, so the
95
+ * auto-create cannot arm anything by itself. A malformed or non-object file
96
+ * falls back to enabled:true WITHOUT rewriting it: corruption must fail
97
+ * CLOSED (the user opted in; losing that to a half-saved file would silently
98
+ * disarm), and clobbering the user's mid-edit bytes with a template would be
99
+ * worse than the transient read. A symlinked/hardlinked config is treated
100
+ * the same way (armed, persistence disabled) — see configIntegrityOk. So is
101
+ * a config that was armed and then became unreadable or disappeared — only
102
+ * the agent could do that from inside the sandbox.
53
103
  */
54
104
  export function readSandboxConfig(workspaceRoot) {
55
105
  const file = sandboxConfigPath(workspaceRoot);
106
+ if (!configIntegrityOk(workspaceRoot, file)) {
107
+ if (!warnedConfigIssues.has(file)) {
108
+ warnedConfigIssues.add(file);
109
+ warn(`sandbox: ${file} is symlinked/hardlinked outside the deny island — reading as armed; fix the link (persistence stays disabled until then)`);
110
+ }
111
+ return defaultConfig(true);
112
+ }
113
+ let text;
56
114
  try {
57
- const parsed = JSON.parse(readFileSync(file, "utf8"));
58
- return {
59
- allow: Array.isArray(parsed.allow) ? parsed.allow.filter((p) => typeof p === "string") : [],
60
- strictGit: parsed.strictGit === true,
61
- };
115
+ text = readFileSync(file, "utf8");
62
116
  }
63
- catch {
64
- // Missing or malformed → (re)create the default template.
65
- try {
66
- mkdirSync(path.dirname(file), { recursive: true });
67
- writeFileSync(file, JSON.stringify({ allow: [], strictGit: false }, null, 2) + "\n");
117
+ catch (e) {
118
+ const code = e.code;
119
+ // ENOENT on a never-armed project is the normal pre-template state.
120
+ // Everything else — EACCES/ENOTDIR (agent tampered with `.zcode`), or a
121
+ // miss on a config this bridge already read as armed — fails closed.
122
+ if (code === "ENOENT" && lastEnabledSeen.get(file) !== true) {
123
+ // Write the discovery template (best-effort; a read-only workspace
124
+ // just never gets one — the sandbox can still be env-armed).
125
+ if (!templateFailedRoots.has(workspaceRoot)) {
126
+ try {
127
+ mkdirSync(path.dirname(file), { recursive: true });
128
+ writeFileSync(file, JSON.stringify(defaultConfig(false), null, 2) + "\n");
129
+ }
130
+ catch (err) {
131
+ templateFailedRoots.add(workspaceRoot);
132
+ warn(`sandbox: could not create ${file}: ${err instanceof Error ? err.message : String(err)}`);
133
+ }
134
+ }
135
+ return defaultConfig(false);
68
136
  }
69
- catch (e) {
70
- warn(`sandbox: could not create ${file}: ${e instanceof Error ? e.message : String(e)}`);
137
+ const issue = code ?? "vanished";
138
+ if (!warnedConfigIssues.has(`${file}:${issue}`)) {
139
+ warnedConfigIssues.add(`${file}:${issue}`);
140
+ warn(`sandbox: ${file} unreadable (${issue}) — reading as armed`);
71
141
  }
72
- return { allow: [], strictGit: false };
142
+ return defaultConfig(true);
143
+ }
144
+ let parsed;
145
+ try {
146
+ parsed = JSON.parse(text);
147
+ }
148
+ catch {
149
+ lastEnabledSeen.set(file, true);
150
+ return defaultConfig(true);
73
151
  }
152
+ if (parsed === null || typeof parsed !== "object" || Array.isArray(parsed)) {
153
+ lastEnabledSeen.set(file, true);
154
+ return defaultConfig(true);
155
+ }
156
+ const cfg = parsed;
157
+ const allow = Array.isArray(cfg.allow) ? cfg.allow.filter((p) => typeof p === "string") : [];
158
+ const deny = Array.isArray(cfg.deny) ? cfg.deny.filter((p) => typeof p === "string") : [];
159
+ // Relative (or `~user`) entries would silently anchor to the BRIDGE's cwd —
160
+ // a committed config must speak in absolute paths or `~/` only.
161
+ const absoluteAllow = allow.filter((p) => p.startsWith("/") || p.startsWith("~/"));
162
+ const absoluteDeny = deny.filter((p) => p.startsWith("/") || p.startsWith("~/"));
163
+ if (absoluteAllow.length !== allow.length && !warnedConfigIssues.has(`${file}:relative`)) {
164
+ warnedConfigIssues.add(`${file}:relative`);
165
+ warn(`sandbox: dropped ${allow.length - absoluteAllow.length} non-absolute allow entries in ${file}`);
166
+ }
167
+ if (absoluteDeny.length !== deny.length && !warnedConfigIssues.has(`${file}:relative-deny`)) {
168
+ warnedConfigIssues.add(`${file}:relative-deny`);
169
+ warn(`sandbox: dropped ${deny.length - absoluteDeny.length} non-absolute deny entries in ${file}`);
170
+ }
171
+ lastEnabledSeen.set(file, cfg.enabled === true);
172
+ return {
173
+ enabled: cfg.enabled === true,
174
+ allow: absoluteAllow,
175
+ deny: absoluteDeny,
176
+ strictGit: cfg.strictGit === true,
177
+ };
74
178
  }
75
179
  /**
76
180
  * Bridge-side persistence for "always allow" (the deny island keeps the
77
- * agent from writing this file itself). Dedupes by exact string.
181
+ * agent from writing this file itself). Round-trips the whole config so the
182
+ * enabled flag survives the write. Dedupes by exact string. Returns false
183
+ * when persistence is impossible (symlinked config, unwritable path) — the
184
+ * caller then downgrades to a bridge-lifetime once-allow.
78
185
  */
79
186
  export function appendSandboxAllow(workspaceRoot, allowedPath) {
187
+ const file = sandboxConfigPath(workspaceRoot);
188
+ if (!configIntegrityOk(workspaceRoot, file)) {
189
+ warn(`sandbox: refusing to persist through a symlinked/hardlinked ${file}`);
190
+ return false;
191
+ }
80
192
  const cfg = readSandboxConfig(workspaceRoot);
81
193
  if (cfg.allow.includes(allowedPath))
82
- return;
194
+ return true;
83
195
  cfg.allow.push(allowedPath);
84
196
  try {
85
- mkdirSync(path.dirname(sandboxConfigPath(workspaceRoot)), { recursive: true });
86
- writeFileSync(sandboxConfigPath(workspaceRoot), JSON.stringify({ allow: cfg.allow, strictGit: cfg.strictGit }, null, 2) + "\n");
87
- log(`sandbox: allowlisted ${allowedPath} in ${sandboxConfigPath(workspaceRoot)}`);
197
+ mkdirSync(path.dirname(file), { recursive: true });
198
+ writeFileSync(file, JSON.stringify({ enabled: cfg.enabled, allow: cfg.allow, deny: cfg.deny, strictGit: cfg.strictGit }, null, 2) + "\n");
199
+ log(`sandbox: allowlisted ${allowedPath} in ${file}`);
200
+ return true;
88
201
  }
89
202
  catch (e) {
90
203
  warn(`sandbox: could not persist allowlist: ${e instanceof Error ? e.message : String(e)}`);
204
+ return false;
205
+ }
206
+ }
207
+ /**
208
+ * Bridge-side persistence for the popup's "永不放行" choice — the visible
209
+ * counterpart of appendSandboxAllow: a denied path is RECORDED in the
210
+ * config (never hidden in bridge memory), so the ask never resurfaces for
211
+ * it and the user can review or undo the decision by editing the file.
212
+ */
213
+ export function appendSandboxDeny(workspaceRoot, deniedPath) {
214
+ const file = sandboxConfigPath(workspaceRoot);
215
+ if (!configIntegrityOk(workspaceRoot, file)) {
216
+ warn(`sandbox: refusing to persist through a symlinked/hardlinked ${file}`);
217
+ return false;
218
+ }
219
+ const cfg = readSandboxConfig(workspaceRoot);
220
+ if (cfg.deny.includes(deniedPath))
221
+ return true;
222
+ cfg.deny.push(deniedPath);
223
+ try {
224
+ mkdirSync(path.dirname(file), { recursive: true });
225
+ writeFileSync(file, JSON.stringify({ enabled: cfg.enabled, allow: cfg.allow, deny: cfg.deny, strictGit: cfg.strictGit }, null, 2) + "\n");
226
+ log(`sandbox: denylisted ${deniedPath} in ${file}`);
227
+ return true;
228
+ }
229
+ catch (e) {
230
+ warn(`sandbox: could not persist denylist: ${e instanceof Error ? e.message : String(e)}`);
231
+ return false;
91
232
  }
92
233
  }
93
234
  /** Expand a leading `~` to the real home dir. */
@@ -130,36 +271,44 @@ function sb(p) {
130
271
  return `"${p.replace(/\\/g, "\\\\").replace(/"/g, '\\"')}"`;
131
272
  }
132
273
  /**
133
- * Build the SBPL profile text. Deny-rules take precedence over allow-rules
134
- * (verified empirically), which is what makes the `.zcode/acp/` deny island
135
- * inside an allowed workspace stick.
274
+ * Build the SBPL profile text. SBPL resolves overlapping rules by LAST
275
+ * match (verified empirically: an allow emitted after a deny re-permits the
276
+ * write), so the layout is: base deny-all, then every allow, then the deny
277
+ * carve-outs (island, strictGit) LAST so nothing can override them.
136
278
  */
137
279
  export function buildSandboxProfile(input) {
138
- const lines = [
139
- "(version 1)",
140
- "(allow default)",
141
- "(deny file-write*)",
142
- ];
280
+ const allows = [];
281
+ const denies = [];
143
282
  for (const ws of input.workspaces) {
144
- lines.push(`(allow file-write* (subpath ${sb(ws.root)}))`);
283
+ // Resolve here too (idempotent): direct callers may pass symlinked
284
+ // roots (/tmp → /private/tmp) that would silently fail subpath match.
285
+ const root = resolveReal(ws.root);
286
+ allows.push(`(allow file-write* (subpath ${sb(root)}))`);
145
287
  // Deny island: the sandbox config lives INSIDE the writable workspace —
146
288
  // without this carve-out the agent could grant itself permissions.
147
- lines.push(`(deny file-write* (subpath ${sb(path.join(ws.root, ".zcode", "acp"))}))`);
289
+ denies.push(`(deny file-write* (subpath ${sb(path.join(root, ".zcode", "acp"))}))`);
148
290
  if (ws.config.strictGit) {
149
- lines.push(`(deny file-write* (subpath ${sb(path.join(ws.root, ".git"))}))`);
291
+ denies.push(`(deny file-write* (subpath ${sb(path.join(root, ".git"))}))`);
150
292
  }
151
293
  for (const allowed of ws.config.allow) {
152
- lines.push(`(allow file-write* (subpath ${sb(resolveReal(allowed))}))`);
294
+ allows.push(`(allow file-write* (subpath ${sb(resolveReal(allowed))}))`);
153
295
  }
154
296
  }
155
297
  for (const p of [...ZCODE_STATE_DIRS, ...DEFAULT_CACHE_DIRS]) {
156
- lines.push(`(allow file-write* (subpath ${sb(resolveReal(p))}))`);
298
+ allows.push(`(allow file-write* (subpath ${sb(resolveReal(p))}))`);
157
299
  }
158
300
  for (const allowed of input.extraAllow) {
159
- lines.push(`(allow file-write* (subpath ${sb(resolveReal(allowed))}))`);
301
+ allows.push(`(allow file-write* (subpath ${sb(resolveReal(allowed))}))`);
160
302
  }
161
- lines.push(`(allow file-write* (subpath ${sb(resolveReal(process.env.TMPDIR ?? os.tmpdir()))}))`);
162
- return lines.join("\n") + "\n";
303
+ allows.push(`(allow file-write* (subpath ${sb(resolveReal(process.env.TMPDIR ?? os.tmpdir()))}))`);
304
+ // /dev/null: git and idiom-level shell redirects write here constantly —
305
+ // without this allow, `git commit` and every `2>/dev/null` fail with
306
+ // "could not open '/dev/null'" (observed in review probes).
307
+ allows.push(`(allow file-write-data (literal "/dev/null"))`);
308
+ if (input.profileDir) {
309
+ denies.push(`(deny file-write* (subpath ${sb(input.profileDir)}))`);
310
+ }
311
+ return (["(version 1)", "(allow default)", "(deny file-write*)", ...allows, ...denies].join("\n") + "\n");
163
312
  }
164
313
  /** Resolved arm input for the CURRENT spawn: union of all live workspaces. */
165
314
  export function collectSandboxWorkspaces(cwdRoots) {
@@ -186,44 +335,90 @@ export function collectSandboxWorkspaces(cwdRoots) {
186
335
  extraAllow: [...new Set(extraAllow.map(resolveReal))].filter((p) => !own.has(p)),
187
336
  };
188
337
  }
189
- let sandboxDecision = null;
338
+ let envDecision = null;
339
+ let platformWarned = false;
340
+ /** Raw env request, uncached — the non-macOS warn must fire even when the cached darwin decision is false. */
341
+ function envWanted() {
342
+ const raw = process.env[SANDBOX_ENV];
343
+ return raw === "1" || raw === "true";
344
+ }
345
+ /** Env arm decision (env wanted AND darwin), cached — env can't change mid-run. */
346
+ function sandboxEnvOn() {
347
+ if (envDecision === null)
348
+ envDecision = envWanted() && process.platform === "darwin";
349
+ return envDecision;
350
+ }
190
351
  /**
191
- * Whether the sandbox is active for this bridge run: env set AND macOS.
192
- * Non-macOS with the env set warns once and returns false (unsandboxed).
193
- * Decided once; later env changes don't re-arm mid-run.
352
+ * The project-level switch: `enabled: true` inside the workspace's sandbox
353
+ * config (auto-created on first touch, template ships false). Reading also
354
+ * materializes the template for discovery. Once the sandbox is armed the
355
+ * deny island keeps the agent from flipping the switch back off.
194
356
  */
195
- export function sandboxActive() {
196
- if (sandboxDecision !== null)
197
- return sandboxDecision;
198
- const raw = process.env[SANDBOX_ENV];
199
- const wanted = raw === "1" || raw === "true";
200
- if (!wanted) {
201
- sandboxDecision = false;
357
+ export function projectSandboxEnabled(workspaceRoot) {
358
+ return readSandboxConfig(workspaceRoot).enabled;
359
+ }
360
+ /**
361
+ * Whether the sandbox should arm for this bridge: ZCODE_ACP_SANDBOX=1
362
+ * (global, cached) OR any given workspace root opted in via
363
+ * sandbox.json `enabled` (project switch, re-checked per call so a flip
364
+ * mid-run is seen). macOS-only: elsewhere a requested sandbox warns once and
365
+ * runs unsandboxed.
366
+ */
367
+ export function sandboxActive(roots = [process.cwd()]) {
368
+ if (sandboxEnvOn())
369
+ return true;
370
+ const wanted = envWanted() || [...roots].some(projectSandboxEnabled);
371
+ if (!wanted)
202
372
  return false;
203
- }
204
373
  if (process.platform !== "darwin") {
205
- warn(`sandbox: ${SANDBOX_ENV}=1 set but Seatbelt is macOS-only — running WITHOUT sandbox`);
206
- sandboxDecision = false;
374
+ if (!platformWarned) {
375
+ platformWarned = true;
376
+ warn(`sandbox: requested (${SANDBOX_ENV}=1 or project config) but Seatbelt is macOS-only — running WITHOUT sandbox`);
377
+ }
207
378
  return false;
208
379
  }
209
- sandboxDecision = true;
210
380
  return true;
211
381
  }
212
- /** Test hook: reset the cached platform/env decision. */
382
+ /** Test hook: reset cached decisions and warn-once sets. */
213
383
  export function resetSandboxDecisionForTest() {
214
- sandboxDecision = null;
384
+ envDecision = null;
385
+ platformWarned = false;
386
+ templateFailedRoots.clear();
387
+ warnedConfigIssues.clear();
388
+ lastEnabledSeen.clear();
215
389
  }
390
+ /** Previous respawn's profile dir — removed once superseded (its backend is dead). */
391
+ let lastProfileDir = null;
216
392
  /**
217
- * Wrap a backend argv with sandbox-exec. Writes the profile to a temp file
218
- * owned by this bridge process (regenerated per backend respawn).
393
+ * Arm a backend argv: build the profile into a FRESH unpredictable dir and
394
+ * wrap with sandbox-exec. The dir sits DIRECTLY under $HOME with a
395
+ * `.zcode-acp-sbx-` prefix — OUTSIDE every whitelisted path (it is a SIBLING
396
+ * of `~/.zcode`, not inside it). That location is the load-bearing defense:
397
+ * $TMPDIR and the cache dirs are agent-writable, and a PRIOR sandboxed
398
+ * generation (a setsid survivor of the old process group) keeps its own
399
+ * profile's allows — so a profile placed there could be raced, symlinked,
400
+ * FIFO'd, or occupied no matter how fresh its name (reproduced across
401
+ * generations even with mkdtemp + O_EXCL + a self-deny, which each generation
402
+ * only applies to its own dir). The agent can also kill the backend at will
403
+ * (signals are not file-writes) to control respawn timing; with the profile
404
+ * unreachable from ANY generation, that primitive buys nothing. O_EXCL ("wx")
405
+ * additionally refuses pre-placed symlinks from a pre-arming process, and
406
+ * the profile still self-denies its own dir last (defense in depth for the
407
+ * workspace-root-is-$HOME edge, where home itself is writable).
219
408
  */
220
- export function wrapWithSandbox(argv, profile) {
221
- const tmpBase = realpathSync(os.tmpdir());
222
- const dir = mkdirSync(path.join(tmpBase, "zcode-acp-sandbox"), {
223
- recursive: true,
224
- });
225
- const file = path.join(dir ?? tmpBase, `profile-${process.pid}.sb`);
226
- writeFileSync(file, profile);
409
+ export function armSandboxArgv(argv, input) {
410
+ const dir = mkdtempSync(path.join(os.homedir(), ".zcode-acp-sbx-"));
411
+ const file = path.join(dir, "profile.sb");
412
+ writeFileSync(file, buildSandboxProfile({ ...input, profileDir: dir }), { flag: "wx" });
413
+ if (lastProfileDir && lastProfileDir !== dir) {
414
+ try {
415
+ rmSync(lastProfileDir, { recursive: true, force: true });
416
+ }
417
+ catch {
418
+ // best-effort cleanup of a superseded profile
419
+ }
420
+ }
421
+ lastProfileDir = dir;
227
422
  log(`sandbox: backend wrapped with sandbox-exec (profile: ${file})`);
228
423
  return ["sandbox-exec", "-f", file, ...argv];
229
424
  }
@@ -1 +1 @@
1
- {"version":3,"file":"sandbox.js","sourceRoot":"","sources":["../../src/backend/sandbox.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sandbox.js","sourceRoot":"","sources":["../../src/backend/sandbox.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AAEH,OAAO,EACL,SAAS,EACT,SAAS,EACT,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,MAAM,EACN,aAAa,GACd,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,OAAO,MAAM,cAAc,CAAC;AAEnC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAExC,uEAAuE;AACvE,MAAM,CAAC,MAAM,WAAW,GAAG,mBAAmB,CAAC;AAE/C,qEAAqE;AACrE,MAAM,kBAAkB,GAAG;IACzB,kBAAkB;IAClB,UAAU;IACV,QAAQ;IACR,gBAAgB;IAChB,aAAa;CACd,CAAC;AAEF,8EAA8E;AAC9E,MAAM,gBAAgB,GAAG,CAAC,UAAU,EAAE,eAAe,EAAE,iBAAiB,CAAC,CAAC;AAqB1E,sEAAsE;AACtE,MAAM,UAAU,iBAAiB,CAAC,aAAqB;IACrD,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC;AACnE,CAAC;AAED,mFAAmF;AACnF,MAAM,mBAAmB,GAAG,IAAI,GAAG,EAAU,CAAC;AAC9C,0EAA0E;AAC1E,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAAU,CAAC;AAC7C;;;;;;GAMG;AACH,MAAM,eAAe,GAAG,IAAI,GAAG,EAAmB,CAAC;AAEnD,SAAS,aAAa,CAAC,OAAgB;IACrC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;AAC5D,CAAC;AAED;;;;;;GAMG;AACH,SAAS,iBAAiB,CAAC,aAAqB,EAAE,IAAY;IAC5D,IAAI,CAAC;QACH,MAAM,EAAE,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;QAC3B,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,KAAK,GAAG,CAAC;YAAE,OAAO,KAAK,CAAC;QAC/C,OAAO,YAAY,CAAC,IAAI,CAAC,KAAK,iBAAiB,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC;IAC9E,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC,CAAC,kDAAkD;IACjE,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,iBAAiB,CAAC,aAAqB;IACrD,MAAM,IAAI,GAAG,iBAAiB,CAAC,aAAa,CAAC,CAAC;IAC9C,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE,IAAI,CAAC,EAAE,CAAC;QAC5C,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAClC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAC7B,IAAI,CACF,YAAY,IAAI,2HAA2H,CAC5I,CAAC;QACJ,CAAC;QACD,OAAO,aAAa,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IACD,IAAI,IAAY,CAAC;IACjB,IAAI,CAAC;QACH,IAAI,GAAG,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACpC,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,IAAI,GAAI,CAA2B,CAAC,IAAI,CAAC;QAC/C,oEAAoE;QACpE,wEAAwE;QACxE,qEAAqE;QACrE,IAAI,IAAI,KAAK,QAAQ,IAAI,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;YAC5D,mEAAmE;YACnE,6DAA6D;YAC7D,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,CAAC;gBAC5C,IAAI,CAAC;oBACH,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;oBACnD,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;gBAC5E,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,mBAAmB,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;oBACvC,IAAI,CACF,6BAA6B,IAAI,KAAK,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CACzF,CAAC;gBACJ,CAAC;YACH,CAAC;YACD,OAAO,aAAa,CAAC,KAAK,CAAC,CAAC;QAC9B,CAAC;QACD,MAAM,KAAK,GAAG,IAAI,IAAI,UAAU,CAAC;QACjC,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,GAAG,IAAI,IAAI,KAAK,EAAE,CAAC,EAAE,CAAC;YAChD,kBAAkB,CAAC,GAAG,CAAC,GAAG,IAAI,IAAI,KAAK,EAAE,CAAC,CAAC;YAC3C,IAAI,CAAC,YAAY,IAAI,gBAAgB,KAAK,sBAAsB,CAAC,CAAC;QACpE,CAAC;QACD,OAAO,aAAa,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IACD,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IAAC,MAAM,CAAC;QACP,eAAe,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAChC,OAAO,aAAa,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IACD,IAAI,MAAM,KAAK,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3E,eAAe,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAChC,OAAO,aAAa,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IACD,MAAM,GAAG,GAAG,MAAgC,CAAC;IAC7C,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC7F,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC1F,4EAA4E;IAC5E,gEAAgE;IAChE,MAAM,aAAa,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;IACnF,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;IACjF,IAAI,aAAa,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,GAAG,IAAI,WAAW,CAAC,EAAE,CAAC;QACzF,kBAAkB,CAAC,GAAG,CAAC,GAAG,IAAI,WAAW,CAAC,CAAC;QAC3C,IAAI,CACF,oBAAoB,KAAK,CAAC,MAAM,GAAG,aAAa,CAAC,MAAM,kCAAkC,IAAI,EAAE,CAChG,CAAC;IACJ,CAAC;IACD,IAAI,YAAY,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,GAAG,IAAI,gBAAgB,CAAC,EAAE,CAAC;QAC5F,kBAAkB,CAAC,GAAG,CAAC,GAAG,IAAI,gBAAgB,CAAC,CAAC;QAChD,IAAI,CACF,oBAAoB,IAAI,CAAC,MAAM,GAAG,YAAY,CAAC,MAAM,iCAAiC,IAAI,EAAE,CAC7F,CAAC;IACJ,CAAC;IACD,eAAe,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC;IAChD,OAAO;QACL,OAAO,EAAE,GAAG,CAAC,OAAO,KAAK,IAAI;QAC7B,KAAK,EAAE,aAAa;QACpB,IAAI,EAAE,YAAY;QAClB,SAAS,EAAE,GAAG,CAAC,SAAS,KAAK,IAAI;KAClC,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB,CAAC,aAAqB,EAAE,WAAmB;IAC3E,MAAM,IAAI,GAAG,iBAAiB,CAAC,aAAa,CAAC,CAAC;IAC9C,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE,IAAI,CAAC,EAAE,CAAC;QAC5C,IAAI,CAAC,+DAA+D,IAAI,EAAE,CAAC,CAAC;QAC5E,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,GAAG,GAAG,iBAAiB,CAAC,aAAa,CAAC,CAAC;IAC7C,IAAI,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC;QAAE,OAAO,IAAI,CAAC;IACjD,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC5B,IAAI,CAAC;QACH,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACnD,aAAa,CACX,IAAI,EACJ,IAAI,CAAC,SAAS,CACZ,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,EACpF,IAAI,EACJ,CAAC,CACF,GAAG,IAAI,CACT,CAAC;QACF,GAAG,CAAC,wBAAwB,WAAW,OAAO,IAAI,EAAE,CAAC,CAAC;QACtD,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,IAAI,CAAC,yCAAyC,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC5F,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAAC,aAAqB,EAAE,UAAkB;IACzE,MAAM,IAAI,GAAG,iBAAiB,CAAC,aAAa,CAAC,CAAC;IAC9C,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE,IAAI,CAAC,EAAE,CAAC;QAC5C,IAAI,CAAC,+DAA+D,IAAI,EAAE,CAAC,CAAC;QAC5E,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,GAAG,GAAG,iBAAiB,CAAC,aAAa,CAAC,CAAC;IAC7C,IAAI,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;QAAE,OAAO,IAAI,CAAC;IAC/C,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC1B,IAAI,CAAC;QACH,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACnD,aAAa,CACX,IAAI,EACJ,IAAI,CAAC,SAAS,CACZ,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,EACpF,IAAI,EACJ,CAAC,CACF,GAAG,IAAI,CACT,CAAC;QACF,GAAG,CAAC,uBAAuB,UAAU,OAAO,IAAI,EAAE,CAAC,CAAC;QACpD,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,IAAI,CAAC,wCAAwC,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC3F,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,iDAAiD;AACjD,SAAS,UAAU,CAAC,CAAS;IAC3B,OAAO,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACtE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,WAAW,CAAC,CAAS;IACnC,MAAM,QAAQ,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;IAC/B,IAAI,CAAC;QACH,OAAO,YAAY,CAAC,QAAQ,CAAC,CAAC;IAChC,CAAC;IAAC,MAAM,CAAC;QACP,uEAAuE;QACvE,sEAAsE;QACtE,IAAI,GAAG,GAAG,QAAQ,CAAC;QACnB,MAAM,IAAI,GAAa,EAAE,CAAC;QAC1B,SAAS,CAAC;YACR,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YACjC,IAAI,MAAM,KAAK,GAAG;gBAAE,OAAO,QAAQ,CAAC;YACpC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;YACjC,GAAG,GAAG,MAAM,CAAC;YACb,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;gBAC/B,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC;YAClC,CAAC;YAAC,MAAM,CAAC;gBACP,kBAAkB;YACpB,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC;AAED,iDAAiD;AACjD,SAAS,EAAE,CAAC,CAAS;IACnB,OAAO,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC;AAC9D,CAAC;AAgBD;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAAsB;IACxD,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,KAAK,MAAM,EAAE,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;QAClC,mEAAmE;QACnE,sEAAsE;QACtE,MAAM,IAAI,GAAG,WAAW,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;QAClC,MAAM,CAAC,IAAI,CAAC,+BAA+B,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzD,wEAAwE;QACxE,mEAAmE;QACnE,MAAM,CAAC,IAAI,CAAC,8BAA8B,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC;QACpF,IAAI,EAAE,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;YACxB,MAAM,CAAC,IAAI,CAAC,8BAA8B,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC;QAC7E,CAAC;QACD,KAAK,MAAM,OAAO,IAAI,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;YACtC,MAAM,CAAC,IAAI,CAAC,+BAA+B,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC;QAC3E,CAAC;IACH,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,CAAC,GAAG,gBAAgB,EAAE,GAAG,kBAAkB,CAAC,EAAE,CAAC;QAC7D,MAAM,CAAC,IAAI,CAAC,+BAA+B,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACrE,CAAC;IACD,KAAK,MAAM,OAAO,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;QACvC,MAAM,CAAC,IAAI,CAAC,+BAA+B,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC;IAC3E,CAAC;IACD,MAAM,CAAC,IAAI,CACT,+BAA+B,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CACtF,CAAC;IACF,yEAAyE;IACzE,qEAAqE;IACrE,4DAA4D;IAC5D,MAAM,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAC;IAC7D,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;QACrB,MAAM,CAAC,IAAI,CAAC,8BAA8B,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IACtE,CAAC;IACD,OAAO,CACL,CAAC,aAAa,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,GAAG,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CACjG,CAAC;AACJ,CAAC;AAED,8EAA8E;AAC9E,MAAM,UAAU,wBAAwB,CAAC,QAA0B;IAIjE,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,UAAU,GAAmD,EAAE,CAAC;IACtE,MAAM,UAAU,GAAa,EAAE,CAAC;IAChC,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;QAC5B,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;QAC/B,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,SAAS;QAC7B,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACf,MAAM,MAAM,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;QACvC,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;QACxC,oEAAoE;QACpE,8DAA8D;QAC9D,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,KAAK;YAAE,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC/D,CAAC;IACD,yEAAyE;IACzE,yEAAyE;IACzE,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAClF,OAAO;QACL,UAAU;QACV,UAAU,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;KACjF,CAAC;AACJ,CAAC;AAED,IAAI,WAAW,GAAmB,IAAI,CAAC;AACvC,IAAI,cAAc,GAAG,KAAK,CAAC;AAE3B,8GAA8G;AAC9G,SAAS,SAAS;IAChB,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IACrC,OAAO,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,MAAM,CAAC;AACvC,CAAC;AAED,mFAAmF;AACnF,SAAS,YAAY;IACnB,IAAI,WAAW,KAAK,IAAI;QAAE,WAAW,GAAG,SAAS,EAAE,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ,CAAC;IACrF,OAAO,WAAW,CAAC;AACrB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CAAC,aAAqB;IACzD,OAAO,iBAAiB,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC;AAClD,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,aAAa,CAAC,QAA0B,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;IACrE,IAAI,YAAY,EAAE;QAAE,OAAO,IAAI,CAAC;IAChC,MAAM,MAAM,GAAG,SAAS,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;IACrE,IAAI,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IAC1B,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAClC,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,cAAc,GAAG,IAAI,CAAC;YACtB,IAAI,CACF,uBAAuB,WAAW,4EAA4E,CAC/G,CAAC;QACJ,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,4DAA4D;AAC5D,MAAM,UAAU,2BAA2B;IACzC,WAAW,GAAG,IAAI,CAAC;IACnB,cAAc,GAAG,KAAK,CAAC;IACvB,mBAAmB,CAAC,KAAK,EAAE,CAAC;IAC5B,kBAAkB,CAAC,KAAK,EAAE,CAAC;IAC3B,eAAe,CAAC,KAAK,EAAE,CAAC;AAC1B,CAAC;AAED,sFAAsF;AACtF,IAAI,cAAc,GAAkB,IAAI,CAAC;AAEzC;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,cAAc,CAAC,IAAc,EAAE,KAAsB;IACnE,MAAM,GAAG,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,iBAAiB,CAAC,CAAC,CAAC;IACpE,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;IAC1C,aAAa,CAAC,IAAI,EAAE,mBAAmB,CAAC,EAAE,GAAG,KAAK,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IACxF,IAAI,cAAc,IAAI,cAAc,KAAK,GAAG,EAAE,CAAC;QAC7C,IAAI,CAAC;YACH,MAAM,CAAC,cAAc,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3D,CAAC;QAAC,MAAM,CAAC;YACP,8CAA8C;QAChD,CAAC;IACH,CAAC;IACD,cAAc,GAAG,GAAG,CAAC;IACrB,GAAG,CAAC,wDAAwD,IAAI,GAAG,CAAC,CAAC;IACrE,OAAO,CAAC,cAAc,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC;AAC/C,CAAC"}
package/dist/cli.d.ts CHANGED
@@ -18,6 +18,8 @@ export type Invocation = {
18
18
  explicit: boolean;
19
19
  } | {
20
20
  kind: "server";
21
+ } | {
22
+ kind: "serve";
21
23
  } | {
22
24
  kind: "hub";
23
25
  } | {
package/dist/cli.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;GAUG;AAWH,sFAAsF;AACtF,MAAM,MAAM,UAAU,GAClB;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAA;CAAE,GACnC;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,GAClB;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;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,UAAU,CAkBxF"}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;GAUG;AAWH,sFAAsF;AACtF,MAAM,MAAM,UAAU,GAClB;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAA;CAAE,GACnC;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;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,UAAU,CAoBxF"}
package/dist/cli.js CHANGED
@@ -14,7 +14,7 @@ import { basename } from "node:path";
14
14
  import process from "node:process";
15
15
  import { main as runHub } from "./bin/hub.js";
16
16
  import { main as runQuota } from "./bin/quota.js";
17
- import { main as runServer } from "./index.js";
17
+ import { main as runServer, runHeadless } from "./index.js";
18
18
  import { runRepl } from "./repl/run.js";
19
19
  import { AGENT_INFO } from "./utils.js";
20
20
  /**
@@ -38,6 +38,8 @@ export function resolveInvocation(invokedAs, argv) {
38
38
  switch (sub) {
39
39
  case "server":
40
40
  return { kind: "server" };
41
+ case "serve":
42
+ return { kind: "serve" };
41
43
  case "hub":
42
44
  return { kind: "hub" };
43
45
  case "quota":
@@ -58,6 +60,10 @@ Commands:
58
60
  -i <sec>, -d detail, -p plain, provider glm|go.
59
61
  hub Run the remote-access hub daemon (was zcode-acp-hub;
60
62
  usually auto-spawned by bridges, rarely run by hand).
63
+ serve Headless bridge for remote session-create (ADR-0014):
64
+ no stdio editor, lives for remote WS clients until idle.
65
+ Normally spawned by the hub, not run by hand (needs
66
+ ZCODE_ACP_REMOTE=1 + ZCODE_ACP_REMOTE_TOKEN).
61
67
  server The editor-facing ACP bridge over stdio (was
62
68
  zcode-acp-server; editors normally launch it via the bin
63
69
  alias without this subcommand).
@@ -96,6 +102,9 @@ async function main() {
96
102
  case "server":
97
103
  await runServer();
98
104
  return;
105
+ case "serve":
106
+ await runHeadless();
107
+ return;
99
108
  case "hub":
100
109
  await runHub();
101
110
  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 +1 @@
1
- {"version":3,"file":"auto-compact.d.ts","sourceRoot":"","sources":["../../src/config/auto-compact.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH,OAAO,KAAK,KAAK,GAAG,MAAM,0BAA0B,CAAC;AAGrD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAInD,qFAAqF;AACrF,wBAAgB,oBAAoB,IAAI,MAAM,CAG7C;AAED;;;;GAIG;AACH,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,cAAc,EACtB,EAAE,EAAE,GAAG,CAAC,YAAY,EACpB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,CAAC,CA2Df"}
1
+ {"version":3,"file":"auto-compact.d.ts","sourceRoot":"","sources":["../../src/config/auto-compact.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH,OAAO,KAAK,KAAK,GAAG,MAAM,0BAA0B,CAAC;AAIrD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAInD,qFAAqF;AACrF,wBAAgB,oBAAoB,IAAI,MAAM,CAG7C;AAED;;;;GAIG;AACH,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,cAAc,EACtB,EAAE,EAAE,GAAG,CAAC,YAAY,EACpB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,CAAC,CAuDf"}
@@ -12,6 +12,7 @@
12
12
  */
13
13
  import { randomUUID } from "node:crypto";
14
14
  import { compact } from "../handlers/extensions.js";
15
+ import { messages } from "../i18n.js";
15
16
  import { log, warn } from "../utils.js";
16
17
  import { sendTextChunk } from "../handlers/io.js";
17
18
  /** ENV: `ZCODE_ACP_AUTO_COMPACT_THRESHOLD` — absolute token count (0 = disabled). */
@@ -47,20 +48,21 @@ export async function maybeAutoCompact(server, cx, acpSid, zcodeSid) {
47
48
  if (used < threshold)
48
49
  return;
49
50
  log(`auto-compact: contextUsed=${used} >= threshold=${threshold}, compacting…`);
50
- await sendTextChunk(cx, acpSid, `🔄 auto-compact: context usage ${used.toLocaleString()} ≥ threshold ${threshold.toLocaleString()}, compressing…`, msgId);
51
+ const m = messages();
52
+ await sendTextChunk(cx, acpSid, m.autoCompactStart(used.toLocaleString(), threshold.toLocaleString()), msgId);
51
53
  // compact() handles: session/compact → waitForTurnIdle → emitInitialUsage.
52
54
  const result = (await compact(server, { sessionId: acpSid }, cx));
53
55
  if (result.__lockTimeout) {
54
- await sendTextChunk(cx, acpSid, "⚠ auto-compact timed out (300s) — backend may still be processing", msgId);
56
+ await sendTextChunk(cx, acpSid, m.autoCompactTimeout, msgId);
55
57
  }
56
58
  else {
57
- await sendTextChunk(cx, acpSid, "✓ auto-compact: context compressed", msgId);
59
+ await sendTextChunk(cx, acpSid, m.autoCompactDone, msgId);
58
60
  }
59
61
  log("auto-compact: done");
60
62
  }
61
63
  catch (e) {
62
64
  warn(`auto-compact: compact failed (${e instanceof Error ? e.message : String(e)})`);
63
- await sendTextChunk(cx, acpSid, `⚠ auto-compact failed: ${e instanceof Error ? e.message : String(e)}`, msgId);
65
+ await sendTextChunk(cx, acpSid, messages().autoCompactFailed(e instanceof Error ? e.message : String(e)), msgId);
64
66
  // Best-effort: never break the prompt response.
65
67
  }
66
68
  }
@@ -1 +1 @@
1
- {"version":3,"file":"auto-compact.js","sourceRoot":"","sources":["../../src/config/auto-compact.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auto-compact.js","sourceRoot":"","sources":["../../src/config/auto-compact.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-discovery.d.ts","sourceRoot":"","sources":["../../src/config/mcp-discovery.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAQH,iDAAiD;AACjD,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAsBD;;;;GAIG;AACH,wBAAgB,cAAc,IAAI,aAAa,EAAE,CAmFhD;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,aAAa,EAAE,GAAG,MAAM,CA2BjE"}
1
+ {"version":3,"file":"mcp-discovery.d.ts","sourceRoot":"","sources":["../../src/config/mcp-discovery.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AASH,iDAAiD;AACjD,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAsBD;;;;GAIG;AACH,wBAAgB,cAAc,IAAI,aAAa,EAAE,CAmFhD;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,aAAa,EAAE,GAAG,MAAM,CA4BjE"}