zcode-acp-server 0.18.2 → 0.19.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/handlers/sandbox-allow.d.ts +67 -5
- package/dist/handlers/sandbox-allow.d.ts.map +1 -1
- package/dist/handlers/sandbox-allow.js +136 -29
- package/dist/handlers/sandbox-allow.js.map +1 -1
- package/dist/handlers/session.d.ts.map +1 -1
- package/dist/handlers/session.js +28 -8
- package/dist/handlers/session.js.map +1 -1
- package/dist/i18n.d.ts +3 -2
- package/dist/i18n.d.ts.map +1 -1
- package/dist/i18n.js +4 -4
- package/dist/i18n.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -4
- package/dist/index.js.map +1 -1
- package/dist/remote/config.d.ts +18 -0
- package/dist/remote/config.d.ts.map +1 -1
- package/dist/remote/config.js +13 -1
- package/dist/remote/config.js.map +1 -1
- package/dist/remote/endpoint.d.ts.map +1 -1
- package/dist/remote/endpoint.js +4 -0
- package/dist/remote/endpoint.js.map +1 -1
- package/dist/remote/hub-server.d.ts +49 -3
- package/dist/remote/hub-server.d.ts.map +1 -1
- package/dist/remote/hub-server.js +381 -44
- package/dist/remote/hub-server.js.map +1 -1
- package/dist/remote/session-list-endpoint.d.ts +51 -0
- package/dist/remote/session-list-endpoint.d.ts.map +1 -0
- package/dist/remote/session-list-endpoint.js +153 -0
- package/dist/remote/session-list-endpoint.js.map +1 -0
- package/dist/server.d.ts +15 -3
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +14 -2
- package/dist/server.js.map +1 -1
- package/docs/REMOTE-CLIENTS.md +88 -26
- package/docs/REMOTE.md +30 -8
- package/docs/SANDBOX.md +3 -1
- package/package.json +1 -1
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
* directory-granularity with a restart is the closest achievable form.
|
|
13
13
|
*/
|
|
14
14
|
import type * as acp from "@agentclientprotocol/sdk";
|
|
15
|
-
import type {
|
|
15
|
+
import type { ZcodeAcpServer } from "../server.js";
|
|
16
16
|
/** A sandbox write-denial observed in tool output. */
|
|
17
17
|
export interface SandboxDenial {
|
|
18
18
|
/** The absolute path the OS refused to write (as printed by the tool). */
|
|
@@ -43,6 +43,68 @@ export declare const READ_ONLY_TOOLS: Set<string>;
|
|
|
43
43
|
* matched — the ask falls back to a generic hint.
|
|
44
44
|
*/
|
|
45
45
|
export declare function extractSandboxDenial(text: string): SandboxDenial | null;
|
|
46
|
+
/**
|
|
47
|
+
* How long approvals collect into one restart batch (ADR-0011). The old flow
|
|
48
|
+
* restarted the backend on EVERY approval; a second popup still pending on
|
|
49
|
+
* another denied path was killed by that restart and — worse — its debounce
|
|
50
|
+
* mark permanently muted the re-ask, so the model kept hitting a bare EPERM
|
|
51
|
+
* with no way out. Approvals inside one window now share a single restart
|
|
52
|
+
* and continuation.
|
|
53
|
+
*/
|
|
54
|
+
export declare const SANDBOX_RESTART_BATCH_MS = 3000;
|
|
55
|
+
/**
|
|
56
|
+
* Cooldown before a FAILED ask (timeout, dead channel, killed by another
|
|
57
|
+
* grant's restart) may re-ask the same path. No cooldown at all would storm
|
|
58
|
+
* on instantly-rejecting clients; the old permanent mute left the model
|
|
59
|
+
* hitting a bare EPERM with no way out. A USER decision pins the path
|
|
60
|
+
* forever instead (see handleSandboxDenial).
|
|
61
|
+
*/
|
|
62
|
+
declare const SANDBOX_ASK_RETRY_MS = 60000;
|
|
63
|
+
export { SANDBOX_ASK_RETRY_MS };
|
|
64
|
+
/**
|
|
65
|
+
* Collects approved grants and fires ONE flush per batch window. Kept here
|
|
66
|
+
* (not in server.ts) so tests drive the batching against a stub flush
|
|
67
|
+
* without constructing a whole ZcodeAcpServer.
|
|
68
|
+
*/
|
|
69
|
+
export declare class SandboxRestartBatcher {
|
|
70
|
+
private readonly flush;
|
|
71
|
+
private readonly batchMs;
|
|
72
|
+
private readonly grants;
|
|
73
|
+
private timer;
|
|
74
|
+
constructor(flush: (grants: Map<string, string[]>) => void, batchMs?: number);
|
|
75
|
+
/** Add one approved path for a session; the first add arms the window. */
|
|
76
|
+
add(acpSid: string, grantedReal: string): void;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* What flushSandboxGrants needs from the server (satisfied structurally by
|
|
80
|
+
* ZcodeAcpServer; tests stub it). Keeping the flush standalone makes the
|
|
81
|
+
* cancel-wave / continuation / kill sequencing unit-testable without a
|
|
82
|
+
* whole server.
|
|
83
|
+
*/
|
|
84
|
+
export interface SandboxFlushTarget {
|
|
85
|
+
cancelAllPendingTurns(): void;
|
|
86
|
+
readonly sandboxContinuations: Map<string, string>;
|
|
87
|
+
/** acpSid → live zcode session id. */
|
|
88
|
+
readonly sessionMap: Map<string, string>;
|
|
89
|
+
/** In-flight turns; entries are deleted when the turn's prompt returns. */
|
|
90
|
+
readonly pendingTurns: Map<number | string, {
|
|
91
|
+
zcodeSid: string;
|
|
92
|
+
}>;
|
|
93
|
+
/** The backend to close; the flush nulls it (respawn stays lazy). */
|
|
94
|
+
backend: {
|
|
95
|
+
close(): Promise<void>;
|
|
96
|
+
readonly isDead: boolean;
|
|
97
|
+
} | null;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* One batched sandbox allow-restart (ADR-0011; driven by
|
|
101
|
+
* SandboxRestartBatcher): cancel every in-flight turn — they share the
|
|
102
|
+
* backend and would otherwise hang on the dead reader — queue one
|
|
103
|
+
* continuation per session listing ALL granted paths, and close the backend
|
|
104
|
+
* once. The next ensureBackend() respawns under the widened profile
|
|
105
|
+
* (persisted config entries + bridge-lifetime once-allows).
|
|
106
|
+
*/
|
|
107
|
+
export declare function flushSandboxGrants(target: SandboxFlushTarget, grants: Map<string, string[]>): void;
|
|
46
108
|
/**
|
|
47
109
|
* Extract the path from an ordinary filesystem-permission failure (EACCES —
|
|
48
110
|
* "Permission denied"), as printed by POSIX tools (`ls: /a/b: Permission
|
|
@@ -63,9 +125,9 @@ export declare function extractPermDeniedPath(text: string): string | null;
|
|
|
63
125
|
export declare function protectedSandboxPaths(cwdRoots: Iterable<string>): string[];
|
|
64
126
|
/**
|
|
65
127
|
* Ask the user to allow the directory behind a sandbox denial and, on
|
|
66
|
-
* approval,
|
|
67
|
-
*
|
|
68
|
-
* exactly as it was.
|
|
128
|
+
* approval, queue the grant into the batched restart (see
|
|
129
|
+
* SandboxRestartBatcher — one restart per window, not one per approval).
|
|
130
|
+
* Best-effort: any failure keeps the sandbox exactly as it was.
|
|
69
131
|
*/
|
|
70
|
-
export declare function handleSandboxDenial(server: ZcodeAcpServer, cx: acp.AgentContext, acpSid: string,
|
|
132
|
+
export declare function handleSandboxDenial(server: ZcodeAcpServer, cx: acp.AgentContext, acpSid: string, denial: SandboxDenial, toolCallId: string): Promise<void>;
|
|
71
133
|
//# sourceMappingURL=sandbox-allow.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sandbox-allow.d.ts","sourceRoot":"","sources":["../../src/handlers/sandbox-allow.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAIH,OAAO,KAAK,KAAK,GAAG,MAAM,0BAA0B,CAAC;AAYrD,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"sandbox-allow.d.ts","sourceRoot":"","sources":["../../src/handlers/sandbox-allow.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAIH,OAAO,KAAK,KAAK,GAAG,MAAM,0BAA0B,CAAC;AAYrD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAGnD,sDAAsD;AACtD,MAAM,WAAW,aAAa;IAC5B,0EAA0E;IAC1E,IAAI,EAAE,MAAM,CAAC;IACb;iEAC6D;IAC7D,OAAO,EAAE,OAAO,CAAC;CAClB;AAID,mEAAmE;AACnE,eAAO,MAAM,gBAAgB,cAAc,CAAC;AAE5C;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,aAW1B,CAAC;AAEH;;;;;;;;;;GAUG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CAmBvE;AAKD;;;;;;;GAOG;AACH,eAAO,MAAM,wBAAwB,OAAO,CAAC;AAE7C;;;;;;GAMG;AACH,QAAA,MAAM,oBAAoB,QAAS,CAAC;AACpC,OAAO,EAAE,oBAAoB,EAAE,CAAC;AAEhC;;;;GAIG;AACH,qBAAa,qBAAqB;IAK9B,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAL1B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA+B;IACtD,OAAO,CAAC,KAAK,CAA+B;gBAGzB,KAAK,EAAE,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,KAAK,IAAI,EAC9C,OAAO,GAAE,MAAiC;IAG7D,0EAA0E;IAC1E,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI;CAc/C;AAED;;;;;GAKG;AACH,MAAM,WAAW,kBAAkB;IACjC,qBAAqB,IAAI,IAAI,CAAC;IAC9B,QAAQ,CAAC,oBAAoB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnD,sCAAsC;IACtC,QAAQ,CAAC,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,2EAA2E;IAC3E,QAAQ,CAAC,YAAY,EAAE,GAAG,CAAC,MAAM,GAAG,MAAM,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAClE,qEAAqE;IACrE,OAAO,EAAE;QAAE,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;QAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAA;KAAE,GAAG,IAAI,CAAC;CACtE;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,kBAAkB,EAC1B,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,GAC5B,IAAI,CAyCN;AAED;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAMjE;AAkBD;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,MAAM,EAAE,CAQ1E;AAeD;;;;;GAKG;AACH,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,cAAc,EACtB,EAAE,EAAE,GAAG,CAAC,YAAY,EACpB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,aAAa,EACrB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC,CA6Kf"}
|
|
@@ -78,6 +78,107 @@ export function extractSandboxDenial(text) {
|
|
|
78
78
|
}
|
|
79
79
|
/** How long the allow popup may hang before it counts as a rejection. */
|
|
80
80
|
const ASK_TIMEOUT_MS = 120_000;
|
|
81
|
+
/**
|
|
82
|
+
* How long approvals collect into one restart batch (ADR-0011). The old flow
|
|
83
|
+
* restarted the backend on EVERY approval; a second popup still pending on
|
|
84
|
+
* another denied path was killed by that restart and — worse — its debounce
|
|
85
|
+
* mark permanently muted the re-ask, so the model kept hitting a bare EPERM
|
|
86
|
+
* with no way out. Approvals inside one window now share a single restart
|
|
87
|
+
* and continuation.
|
|
88
|
+
*/
|
|
89
|
+
export const SANDBOX_RESTART_BATCH_MS = 3000;
|
|
90
|
+
/**
|
|
91
|
+
* Cooldown before a FAILED ask (timeout, dead channel, killed by another
|
|
92
|
+
* grant's restart) may re-ask the same path. No cooldown at all would storm
|
|
93
|
+
* on instantly-rejecting clients; the old permanent mute left the model
|
|
94
|
+
* hitting a bare EPERM with no way out. A USER decision pins the path
|
|
95
|
+
* forever instead (see handleSandboxDenial).
|
|
96
|
+
*/
|
|
97
|
+
const SANDBOX_ASK_RETRY_MS = 60_000;
|
|
98
|
+
export { SANDBOX_ASK_RETRY_MS };
|
|
99
|
+
/**
|
|
100
|
+
* Collects approved grants and fires ONE flush per batch window. Kept here
|
|
101
|
+
* (not in server.ts) so tests drive the batching against a stub flush
|
|
102
|
+
* without constructing a whole ZcodeAcpServer.
|
|
103
|
+
*/
|
|
104
|
+
export class SandboxRestartBatcher {
|
|
105
|
+
flush;
|
|
106
|
+
batchMs;
|
|
107
|
+
grants = new Map();
|
|
108
|
+
timer = null;
|
|
109
|
+
constructor(flush, batchMs = SANDBOX_RESTART_BATCH_MS) {
|
|
110
|
+
this.flush = flush;
|
|
111
|
+
this.batchMs = batchMs;
|
|
112
|
+
}
|
|
113
|
+
/** Add one approved path for a session; the first add arms the window. */
|
|
114
|
+
add(acpSid, grantedReal) {
|
|
115
|
+
const list = this.grants.get(acpSid) ?? [];
|
|
116
|
+
if (!list.includes(grantedReal))
|
|
117
|
+
list.push(grantedReal);
|
|
118
|
+
this.grants.set(acpSid, list);
|
|
119
|
+
if (this.timer)
|
|
120
|
+
return;
|
|
121
|
+
this.timer = setTimeout(() => {
|
|
122
|
+
this.timer = null;
|
|
123
|
+
if (this.grants.size === 0)
|
|
124
|
+
return;
|
|
125
|
+
const batch = new Map(this.grants);
|
|
126
|
+
this.grants.clear();
|
|
127
|
+
this.flush(batch);
|
|
128
|
+
}, this.batchMs);
|
|
129
|
+
this.timer.unref?.();
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* One batched sandbox allow-restart (ADR-0011; driven by
|
|
134
|
+
* SandboxRestartBatcher): cancel every in-flight turn — they share the
|
|
135
|
+
* backend and would otherwise hang on the dead reader — queue one
|
|
136
|
+
* continuation per session listing ALL granted paths, and close the backend
|
|
137
|
+
* once. The next ensureBackend() respawns under the widened profile
|
|
138
|
+
* (persisted config entries + bridge-lifetime once-allows).
|
|
139
|
+
*/
|
|
140
|
+
export function flushSandboxGrants(target, grants) {
|
|
141
|
+
const m = messages();
|
|
142
|
+
const count = [...grants.values()].reduce((n, ps) => n + ps.length, 0);
|
|
143
|
+
target.cancelAllPendingTurns();
|
|
144
|
+
// Continuations ONLY for sessions with a turn still in flight: those turn
|
|
145
|
+
// loops unwind on the cancelled flag and prompt() consumes the
|
|
146
|
+
// continuation as it returns. A session whose turn already finished
|
|
147
|
+
// naturally during the batch window has nobody to consume the entry — an
|
|
148
|
+
// orphan would later hijack an UNRELATED cancelled prompt (ESC, preempt,
|
|
149
|
+
// drain gate) into an automatic "continue" round.
|
|
150
|
+
const liveZcode = new Set();
|
|
151
|
+
for (const t of target.pendingTurns.values())
|
|
152
|
+
liveZcode.add(t.zcodeSid);
|
|
153
|
+
for (const [sid, paths] of grants) {
|
|
154
|
+
const z = target.sessionMap.get(sid);
|
|
155
|
+
if (z !== undefined && liveZcode.has(z)) {
|
|
156
|
+
target.sandboxContinuations.set(sid, m.sandboxContinuationPrompt(paths));
|
|
157
|
+
}
|
|
158
|
+
else {
|
|
159
|
+
log(`sandbox: no in-flight turn — ${paths.length} grant(s) apply on next spawn`);
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
const dying = target.backend;
|
|
163
|
+
if (!dying || dying.isDead) {
|
|
164
|
+
// Already gone (e.g. a late approval after an earlier batch restarted):
|
|
165
|
+
// the grants live in the config / once-allows, and the next
|
|
166
|
+
// ensureBackend() spawns with them — respawning here just to close the
|
|
167
|
+
// new process again would churn.
|
|
168
|
+
log(`sandbox: backend already gone — ${count} grant(s) apply on next spawn`);
|
|
169
|
+
return;
|
|
170
|
+
}
|
|
171
|
+
// Drop the reference BEFORE the async kill: the turn loops unwind on the
|
|
172
|
+
// cancelled flag while the kill is still in flight, and prompt()'s
|
|
173
|
+
// continuation round reaches ensureBackend() the moment its first round
|
|
174
|
+
// returns — with the old reference still held it would adopt the dying
|
|
175
|
+
// backend instead of respawning under the widened profile.
|
|
176
|
+
target.backend = null;
|
|
177
|
+
log(`sandbox: restarting backend with ${count} granted path(s)`);
|
|
178
|
+
dying
|
|
179
|
+
.close()
|
|
180
|
+
.catch((e) => warn(`sandbox: backend kill failed: ${e instanceof Error ? e.message : String(e)}`));
|
|
181
|
+
}
|
|
81
182
|
/**
|
|
82
183
|
* Extract the path from an ordinary filesystem-permission failure (EACCES —
|
|
83
184
|
* "Permission denied"), as printed by POSIX tools (`ls: /a/b: Permission
|
|
@@ -139,11 +240,11 @@ function underAny(target, bases) {
|
|
|
139
240
|
}
|
|
140
241
|
/**
|
|
141
242
|
* Ask the user to allow the directory behind a sandbox denial and, on
|
|
142
|
-
* approval,
|
|
143
|
-
*
|
|
144
|
-
* exactly as it was.
|
|
243
|
+
* approval, queue the grant into the batched restart (see
|
|
244
|
+
* SandboxRestartBatcher — one restart per window, not one per approval).
|
|
245
|
+
* Best-effort: any failure keeps the sandbox exactly as it was.
|
|
145
246
|
*/
|
|
146
|
-
export async function handleSandboxDenial(server, cx, acpSid,
|
|
247
|
+
export async function handleSandboxDenial(server, cx, acpSid, denial, toolCallId) {
|
|
147
248
|
// Process-level fact, not the config wish: the caller gates on the same
|
|
148
249
|
// flag, so a sandbox armed only via project config (no env) still flows.
|
|
149
250
|
if (!server.backendSandboxed)
|
|
@@ -155,20 +256,27 @@ export async function handleSandboxDenial(server, cx, acpSid, turn, denial, tool
|
|
|
155
256
|
const cwd = server.sessionCwds.get(acpSid);
|
|
156
257
|
const wsRoot = cwd;
|
|
157
258
|
const targetReal = resolveReal(path.isAbsolute(raw) ? raw : path.resolve(cwd ?? process.cwd(), raw));
|
|
158
|
-
// Debounce: one ask per path per session
|
|
159
|
-
//
|
|
259
|
+
// Debounce: one ask per path per session. The mark carries the ask
|
|
260
|
+
// timestamp — a USER decision pins it forever (Infinity); an ask that died
|
|
261
|
+
// of the environment merely cools down for SANDBOX_ASK_RETRY_MS and may
|
|
262
|
+
// re-ask afterwards.
|
|
160
263
|
let asked = server.sandboxAskedPaths.get(acpSid);
|
|
161
264
|
if (!asked) {
|
|
162
|
-
asked = new
|
|
265
|
+
asked = new Map();
|
|
163
266
|
server.sandboxAskedPaths.set(acpSid, asked);
|
|
164
267
|
}
|
|
165
|
-
|
|
268
|
+
const prior = asked.get(targetReal);
|
|
269
|
+
if (prior !== undefined &&
|
|
270
|
+
(prior === Number.POSITIVE_INFINITY || Date.now() - prior < SANDBOX_ASK_RETRY_MS)) {
|
|
166
271
|
return;
|
|
167
|
-
|
|
272
|
+
}
|
|
273
|
+
asked.set(targetReal, Date.now());
|
|
168
274
|
// Island / strictGit denials are unallowable by construction (their denies
|
|
169
275
|
// win the last-match). Tell the USER why instead of a doomed popup — the
|
|
170
|
-
// model only ever sees the bare EPERM in its tool output.
|
|
276
|
+
// model only ever sees the bare EPERM in its tool output. Structural:
|
|
277
|
+
// hinted once, pinned forever.
|
|
171
278
|
if (underAny(targetReal, protectedSandboxPaths(server.sandboxRoots()))) {
|
|
279
|
+
asked.set(targetReal, Number.POSITIVE_INFINITY);
|
|
172
280
|
await sendTextChunk(cx, acpSid, m.sandboxProtectedHint, randomUUID());
|
|
173
281
|
return;
|
|
174
282
|
}
|
|
@@ -178,12 +286,14 @@ export async function handleSandboxDenial(server, cx, acpSid, turn, denial, tool
|
|
|
178
286
|
// the config is the only way to grant something this broad.
|
|
179
287
|
const home = resolveReal(os.homedir());
|
|
180
288
|
if (targetReal === "/" || targetReal === home || home.startsWith(targetReal + path.sep)) {
|
|
289
|
+
asked.set(targetReal, Number.POSITIVE_INFINITY);
|
|
181
290
|
await sendTextChunk(cx, acpSid, m.sandboxOverBroadHint(targetReal), randomUUID());
|
|
182
291
|
return;
|
|
183
292
|
}
|
|
184
293
|
// A persisted "永不放行" decision — VISIBLE config, never hidden bridge
|
|
185
294
|
// memory: no popup, and the asked-mark above keeps later repeats silent.
|
|
186
295
|
if (wsRoot && underAny(targetReal, readSandboxConfig(wsRoot).deny.map(resolveReal))) {
|
|
296
|
+
asked.set(targetReal, Number.POSITIVE_INFINITY);
|
|
187
297
|
await sendTextChunk(cx, acpSid, m.sandboxDenyListedHint(targetReal), randomUUID());
|
|
188
298
|
return;
|
|
189
299
|
}
|
|
@@ -241,11 +351,18 @@ export async function handleSandboxDenial(server, cx, acpSid, turn, denial, tool
|
|
|
241
351
|
decision = "reject_once";
|
|
242
352
|
}
|
|
243
353
|
catch (e) {
|
|
244
|
-
// Popup failed/timed out or the client
|
|
245
|
-
//
|
|
354
|
+
// Popup failed/timed out or the client channel died — including a kill
|
|
355
|
+
// by ANOTHER grant's batched restart. This ask never got a user
|
|
356
|
+
// decision; the timestamp stays as-is, so the path merely cools down
|
|
357
|
+
// (SANDBOX_ASK_RETRY_MS) and may re-ask afterwards — never permanently
|
|
358
|
+
// muted, never free to storm.
|
|
246
359
|
warn(`sandbox: allow ask for ${targetReal} failed: ${e instanceof Error ? e.message : String(e)}`);
|
|
247
360
|
return;
|
|
248
361
|
}
|
|
362
|
+
// A real outcome reached the client and came back (including an unknown
|
|
363
|
+
// optionId the user picked): the user SAW this ask — pin the debounce
|
|
364
|
+
// forever, whatever they chose.
|
|
365
|
+
asked.set(targetReal, Number.POSITIVE_INFINITY);
|
|
249
366
|
if (decision === "reject_always") {
|
|
250
367
|
// The user's denial is persisted VISIBLY into the project config — never
|
|
251
368
|
// silently remembered in bridge memory. If the config can't be written,
|
|
@@ -277,23 +394,13 @@ export async function handleSandboxDenial(server, cx, acpSid, turn, denial, tool
|
|
|
277
394
|
else {
|
|
278
395
|
server.sandboxOnceAllows.add(targetReal);
|
|
279
396
|
}
|
|
280
|
-
// Arm the restart:
|
|
281
|
-
//
|
|
282
|
-
//
|
|
283
|
-
//
|
|
284
|
-
//
|
|
285
|
-
|
|
286
|
-
turn.cancelled = true;
|
|
287
|
-
turn.stopSent = true; // no stop pair needed: the whole process group dies
|
|
288
|
-
server.cancelAllPendingTurns();
|
|
289
|
-
server.sandboxContinuations.set(acpSid, m.sandboxContinuationPrompt(targetReal));
|
|
397
|
+
// Arm the BATCHED restart: this grant joins the current window; the flush
|
|
398
|
+
// (see SandboxRestartBatcher) cancels every pending turn, queues a
|
|
399
|
+
// continuation per session listing ALL granted paths, and closes the
|
|
400
|
+
// backend once (next ensureBackend() respawns with the widened profile —
|
|
401
|
+
// once-allows and the persisted config are both folded in).
|
|
402
|
+
server.sandboxRestartBatcher.add(acpSid, targetReal);
|
|
290
403
|
await sendTextChunk(cx, acpSid, m.sandboxRestartHint(targetReal), randomUUID());
|
|
291
|
-
log(`sandbox: allow granted for ${targetReal} (${decision}) —
|
|
292
|
-
try {
|
|
293
|
-
await server.ensureBackend().close();
|
|
294
|
-
}
|
|
295
|
-
catch (e) {
|
|
296
|
-
warn(`sandbox: backend kill failed: ${e instanceof Error ? e.message : String(e)}`);
|
|
297
|
-
}
|
|
404
|
+
log(`sandbox: allow granted for ${targetReal} (${decision}) — restart batched`);
|
|
298
405
|
}
|
|
299
406
|
//# sourceMappingURL=sandbox-allow.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sandbox-allow.js","sourceRoot":"","sources":["../../src/handlers/sandbox-allow.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sandbox-allow.js","sourceRoot":"","sources":["../../src/handlers/sandbox-allow.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/handlers/session.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAMH,OAAO,KAAK,KAAK,GAAG,MAAM,0BAA0B,CAAC;AAGrD,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAuB1E,OAAO,EAML,gBAAgB,EACjB,MAAM,yBAAyB,CAAC;AAGjC,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AA+GhE;;;;;GAKG;AACH,wBAAsB,UAAU,CAC9B,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE,GAAG,CAAC,iBAAiB,GAC5B,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAgCjC;AAED;;;;;;GAMG;AACH,wBAAsB,iBAAiB,CAAC,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CA2H/F;AAED,6CAA6C;AAC7C,wBAAsB,YAAY,CAChC,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE,GAAG,CAAC,mBAAmB,GAC9B,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAuBnC;AA8ED,6EAA6E;AAC7E,wBAAsB,aAAa,CACjC,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE,GAAG,CAAC,oBAAoB,EAChC,EAAE,EAAE,GAAG,CAAC,YAAY,GACnB,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAsEpC;AAED;;;GAGG;AACH,wBAAsB,WAAW,CAC/B,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE,GAAG,CAAC,kBAAkB,EAC9B,EAAE,EAAE,GAAG,CAAC,YAAY,GACnB,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAmGlC;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,MAAM,CAC1B,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE,GAAG,CAAC,aAAa,EACzB,EAAE,EAAE,GAAG,CAAC,YAAY,EACpB,SAAS,EAAE,MAAM,GAAG,MAAM,GACzB,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,
|
|
1
|
+
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/handlers/session.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAMH,OAAO,KAAK,KAAK,GAAG,MAAM,0BAA0B,CAAC;AAGrD,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAuB1E,OAAO,EAML,gBAAgB,EACjB,MAAM,yBAAyB,CAAC;AAGjC,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AA+GhE;;;;;GAKG;AACH,wBAAsB,UAAU,CAC9B,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE,GAAG,CAAC,iBAAiB,GAC5B,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAgCjC;AAED;;;;;;GAMG;AACH,wBAAsB,iBAAiB,CAAC,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CA2H/F;AAED,6CAA6C;AAC7C,wBAAsB,YAAY,CAChC,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE,GAAG,CAAC,mBAAmB,GAC9B,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAuBnC;AA8ED,6EAA6E;AAC7E,wBAAsB,aAAa,CACjC,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE,GAAG,CAAC,oBAAoB,EAChC,EAAE,EAAE,GAAG,CAAC,YAAY,GACnB,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAsEpC;AAED;;;GAGG;AACH,wBAAsB,WAAW,CAC/B,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE,GAAG,CAAC,kBAAkB,EAC9B,EAAE,EAAE,GAAG,CAAC,YAAY,GACnB,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAmGlC;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,MAAM,CAC1B,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE,GAAG,CAAC,aAAa,EACzB,EAAE,EAAE,GAAG,CAAC,YAAY,EACpB,SAAS,EAAE,MAAM,GAAG,MAAM,GACzB,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAwD7B;AAgZD;;;GAGG;AACH,wBAAsB,sBAAsB,CAC1C,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE,GAAG,CAAC,6BAA6B,EACzC,EAAE,EAAE,GAAG,CAAC,YAAY,GACnB,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAa7C;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAsB,MAAM,CAC1B,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE,GAAG,CAAC,kBAAkB,GAC7B,OAAO,CAAC,IAAI,CAAC,CAsBf;AAyJD,qEAAqE;AACrE,UAAU,SAAS;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,WAAW,CAAC;IAClB,QAAQ,EAAE,mBAAmB,CAAC;IAC9B,OAAO,EAAE,WAAW,CAAC;IACrB,MAAM,EAAE,gBAAgB,CAAC;IACzB,EAAE,EAAE,GAAG,CAAC,YAAY,CAAC;IACrB,mEAAmE;IACnE,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAsB,uBAAuB,CAC3C,MAAM,EAAE,cAAc,EACtB,IAAI,EAAE,SAAS,GACd,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC,CA0ClC;AAyCD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,cAAc,EACtB,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,MAAM,GAAG,MAAM,GAC7B,OAAO,CAsBT;AAID;2EAC2E;AAC3E,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,GAAG,CAAC,YAAY,EAAE,GAAG,SAAS,GAAG,MAAM,CA2ChF;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,OAAO,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAYD;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,GAAG,CAAC,YAAY,EAAE,GAAG,SAAS,GAAG,eAAe,EAAE,CAwC5F;AA4JD;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAG7D;AAcD;;;;;;;;GAQG;AACH,wBAAsB,YAAY,CAChC,MAAM,EAAE,cAAc,EACtB,QAAQ,EAAE,mBAAmB,EAC7B,OAAO,EAAE,WAAW,EACpB,MAAM,EAAE,gBAAgB,EACxB,EAAE,EAAE,GAAG,CAAC,YAAY,EACpB,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,WAAW,EACjB,SAAS,EAAE,OAAO,GACjB,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAwc7B;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,iCAAiC,CAC/C,EAAE,EAAE;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,EACpB,WAAW,EAAE,OAAO,EACpB,SAAS,EAAE,OAAO,GACjB,OAAO,CAET;AAkDD;;;;;GAKG;AACH,wBAAgB,YAAY,CAC1B,KAAK,EAAE,OAAO,EAAE,GAAG,SAAS,EAC5B,UAAU,EAAE,KAAK,CAAC;IAAE,OAAO,CAAC,EAAE,OAAO,EAAE,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,EAAE,CAAA;CAAE,CAAC,GAAG,SAAS,GACxE,OAAO,EAAE,CASX;AAkBD;;;;;;;GAOG;AACH,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,cAAc,EACtB,EAAE,EAAE,GAAG,CAAC,YAAY,EACpB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,CAAC,CAmBf;AAiED,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,cAAc,EACtB,EAAE,EAAE,GAAG,CAAC,YAAY,EACpB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,gBAAgB,EACxB,UAAU,EAAE,MAAM,EAClB,OAAO,UAAO,GACb,OAAO,CAAC,IAAI,CAAC,CAiCf"}
|
package/dist/handlers/session.js
CHANGED
|
@@ -567,16 +567,27 @@ export async function loadSession(server, params, cx) {
|
|
|
567
567
|
* the orphaned continuation bubble.
|
|
568
568
|
*/
|
|
569
569
|
export async function prompt(server, params, cx, requestId) {
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
570
|
+
let result = await runPrompt(server, params, cx, requestId);
|
|
571
|
+
// Sandbox-allow continuation chaining, BOUNDED: each batched restart
|
|
572
|
+
// cancels the in-flight round and queues a continuation for prompt() to
|
|
573
|
+
// consume. A LATER batch (the user approving a second popup seconds after
|
|
574
|
+
// the first window flushed) cancels the continuation round itself and
|
|
575
|
+
// queues its own continuation — with single-shot consumption that entry
|
|
576
|
+
// would be orphaned and later hijack an UNRELATED cancelled prompt (ESC,
|
|
577
|
+
// preempt, drain gate). Loop so each cancelled round adopts the newest
|
|
578
|
+
// continuation; the bound keeps a pathological cycle from chaining
|
|
579
|
+
// forever.
|
|
580
|
+
for (let hop = 0; hop < 3; hop++) {
|
|
581
|
+
const continuation = server.sandboxContinuations.get(params.sessionId);
|
|
582
|
+
if (!continuation || result.stopReason !== "cancelled")
|
|
583
|
+
break;
|
|
573
584
|
server.sandboxContinuations.delete(params.sessionId);
|
|
574
585
|
// Same request, fresh round: runPrompt re-enters the whole machinery
|
|
575
586
|
// (ensureBackend respawns; ensureRealSession/subscribe-recovery reloads
|
|
576
587
|
// the session into it). The user's preempt/ESC during the continuation
|
|
577
588
|
// still cancels it — the round registers itself in pendingTurns.
|
|
578
589
|
try {
|
|
579
|
-
|
|
590
|
+
result = await runPrompt(server, { sessionId: params.sessionId, prompt: [{ type: "text", text: continuation }] }, cx, `sandbox-cont-${randomUUID()}`, true);
|
|
580
591
|
}
|
|
581
592
|
catch (e) {
|
|
582
593
|
// The chained round runs right after a sandbox-allow respawn, inside
|
|
@@ -589,9 +600,18 @@ export async function prompt(server, params, cx, requestId) {
|
|
|
589
600
|
const err = e instanceof Error ? e.message : String(e);
|
|
590
601
|
warn(`sandbox: continuation prompt failed: ${err}`);
|
|
591
602
|
await sendTextChunk(cx, params.sessionId, messages().sandboxContinuationFailed(err), randomUUID()).catch(() => undefined);
|
|
603
|
+
// A leftover continuation for THIS cancelled round is now orphaned —
|
|
604
|
+
// drop it rather than let a later cancelled prompt adopt it.
|
|
605
|
+
server.sandboxContinuations.delete(params.sessionId);
|
|
592
606
|
return { stopReason: "cancelled" };
|
|
593
607
|
}
|
|
594
608
|
}
|
|
609
|
+
// prompt() is returning: nothing may consume this session's continuation
|
|
610
|
+
// afterwards, so unconditionally drop any entry that slipped in late
|
|
611
|
+
// (e.g. a flush timer firing inside the end_turn epilogue window, before
|
|
612
|
+
// the finally deletes the pendingTurns entry) — leaving it would let an
|
|
613
|
+
// unrelated cancelled prompt adopt it later.
|
|
614
|
+
server.sandboxContinuations.delete(params.sessionId);
|
|
595
615
|
return result;
|
|
596
616
|
}
|
|
597
617
|
/** One prompt round: subscribe-before-send, run the event-driven turn loop. */
|
|
@@ -1829,7 +1849,7 @@ export async function runEventTurn(server, listener, monitor, differ, cx, acpSid
|
|
|
1829
1849
|
// ordinary filesystem permissions.
|
|
1830
1850
|
const denial = extractSandboxDenial(outputText);
|
|
1831
1851
|
if (denial) {
|
|
1832
|
-
await handleSandboxDenial(server, cx, acpSid,
|
|
1852
|
+
await handleSandboxDenial(server, cx, acpSid, denial, toolCallId);
|
|
1833
1853
|
if (turn.cancelled)
|
|
1834
1854
|
return { stopReason: "cancelled" };
|
|
1835
1855
|
}
|
|
@@ -1837,11 +1857,11 @@ export async function runEventTurn(server, listener, monitor, differ, cx, acpSid
|
|
|
1837
1857
|
// No path parsed — one generic hint per session, not one per retry.
|
|
1838
1858
|
let asked = server.sandboxAskedPaths.get(acpSid);
|
|
1839
1859
|
if (!asked) {
|
|
1840
|
-
asked = new
|
|
1860
|
+
asked = new Map();
|
|
1841
1861
|
server.sandboxAskedPaths.set(acpSid, asked);
|
|
1842
1862
|
}
|
|
1843
|
-
if (
|
|
1844
|
-
asked.
|
|
1863
|
+
if (asked.get(GENERIC_HINT_KEY) === undefined) {
|
|
1864
|
+
asked.set(GENERIC_HINT_KEY, Number.POSITIVE_INFINITY);
|
|
1845
1865
|
await sendTextChunk(cx, acpSid, messages().sandboxGenericDenialHint, chunkMsgId);
|
|
1846
1866
|
}
|
|
1847
1867
|
}
|