@threadbase-sh/streamer 1.67.3 → 1.68.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/api/handlers/sessions.handlers.d.ts +40 -0
- package/dist/api/handlers/sessions.handlers.d.ts.map +1 -1
- package/dist/api/routes/sessions.routes.d.ts.map +1 -1
- package/dist/api/types/api-deps.d.ts +1 -0
- package/dist/api/types/api-deps.d.ts.map +1 -1
- package/dist/cli.cjs +145 -16
- package/dist/cli.cjs.map +1 -1
- package/dist/index.cjs +128 -10
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +128 -10
- package/dist/index.js.map +1 -1
- package/dist/pty-manager.d.ts.map +1 -1
- package/dist/server-wiring.d.ts.map +1 -1
- package/dist/services/questions/detectPermissionGate.d.ts +16 -0
- package/dist/services/questions/detectPermissionGate.d.ts.map +1 -1
- package/dist/services/questions/permissionAnswerKeys.d.ts +8 -0
- package/dist/services/questions/permissionAnswerKeys.d.ts.map +1 -0
- package/dist/types.d.ts +7 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -207,6 +207,46 @@ export declare class SessionHandlers {
|
|
|
207
207
|
options: PermissionOption[];
|
|
208
208
|
cursor?: number;
|
|
209
209
|
} | null): void;
|
|
210
|
+
/**
|
|
211
|
+
* Answer a permission gate — the validated counterpart of POST /:id/input.
|
|
212
|
+
*
|
|
213
|
+
* `/input` is a raw-bytes conduit (arrow-key nav uses it too) and stays that
|
|
214
|
+
* way; this route is the semantic one, mirroring the /answer split. Two
|
|
215
|
+
* things make it more than validation theatre:
|
|
216
|
+
*
|
|
217
|
+
* - The client sends `{ contentKey, optionIndex }` and NO keystrokes. The
|
|
218
|
+
* keys are derived here from our own copy of the gate, so the client's
|
|
219
|
+
* key-derivation can never drift from the server's.
|
|
220
|
+
* - `contentKey` binds the answer to a specific gate. `isPermissionAnswer`
|
|
221
|
+
* matches structurally, and approval gates repeat constantly ("2. Yes /
|
|
222
|
+
* 3. No" for every tool call), so without this a delayed answer to gate A
|
|
223
|
+
* could be written as gate B's answer — a user approving a bash command
|
|
224
|
+
* they never saw, with a 200 and a normal permission_cancelled. Treat the
|
|
225
|
+
* check as a security boundary.
|
|
226
|
+
*
|
|
227
|
+
* Every refusal happens BEFORE sendKeys. On success we deliberately broadcast
|
|
228
|
+
* nothing: the PTY-side close (isPermissionAnswer in pty-manager) recognises
|
|
229
|
+
* the bytes we just wrote and fires permission_cancelled itself.
|
|
230
|
+
*/
|
|
231
|
+
handlePermissionAnswer(sessionId: string, req: IncomingMessage, res: ServerResponse): Promise<void>;
|
|
232
|
+
/**
|
|
233
|
+
* Is THIS gate still the one on screen?
|
|
234
|
+
*
|
|
235
|
+
* Deliberately stricter than questionMenuStillOpen's "is a menu up": the
|
|
236
|
+
* staleness window this exists to cover (the ~300ms scrape throttle plus the
|
|
237
|
+
* wait for the next PTY chunk) is exactly where pendingPermission still says
|
|
238
|
+
* gate A while the screen has moved to gate B — and since approval gates
|
|
239
|
+
* repeat their shape, "some gate is open" would wave that through.
|
|
240
|
+
*
|
|
241
|
+
* Reads 60 lines because that is the window the detector that produced the
|
|
242
|
+
* pending gate uses (pty-manager's scrape); `detail` walks up to 6 lines
|
|
243
|
+
* above the prompt, so a shorter window can truncate it and manufacture a
|
|
244
|
+
* mismatch on a healthy gate.
|
|
245
|
+
*
|
|
246
|
+
* Best-effort, like questionMenuStillOpen: a session we hold no PTY for, or
|
|
247
|
+
* one that raced away mid-read, is not ours to veto.
|
|
248
|
+
*/
|
|
249
|
+
private permissionGateStillOpen;
|
|
210
250
|
handleSendAnswer(sessionId: string, req: IncomingMessage, res: ServerResponse): Promise<void>;
|
|
211
251
|
private questionMenuStillOpen;
|
|
212
252
|
handleUploadFile(sessionId: string, req: IncomingMessage, res: ServerResponse): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sessions.handlers.d.ts","sourceRoot":"","sources":["../../../src/api/handlers/sessions.handlers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAE3C,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,MAAM,CAAC;AAE5D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AACpC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAI5D,OAAO,KAAK,EAAE,gBAAgB,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACxF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAE3C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AACrE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAE3C,OAAO,EAIL,KAAK,YAAY,EAClB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"sessions.handlers.d.ts","sourceRoot":"","sources":["../../../src/api/handlers/sessions.handlers.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sessions.routes.d.ts","sourceRoot":"","sources":["../../../src/api/routes/sessions.routes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AACrC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAKjD,eAAO,MAAM,eAAe,MAAM,CAAC;AAGnC,eAAO,MAAM,mBAAmB,SAAU,OAAO,
|
|
1
|
+
{"version":3,"file":"sessions.routes.d.ts","sourceRoot":"","sources":["../../../src/api/routes/sessions.routes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AACrC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAKjD,eAAO,MAAM,eAAe,MAAM,CAAC;AAGnC,eAAO,MAAM,mBAAmB,SAAU,OAAO,wDAqGhD,CAAC"}
|
|
@@ -84,6 +84,7 @@ export type ApiDeps = {
|
|
|
84
84
|
handleGetOutput: (sessionId: string, res: ServerResponse) => void;
|
|
85
85
|
handleSendInput: (sessionId: string, req: IncomingMessage, res: ServerResponse) => Promise<void>;
|
|
86
86
|
handleSendAnswer: (sessionId: string, req: IncomingMessage, res: ServerResponse) => Promise<void>;
|
|
87
|
+
handlePermissionAnswer: (sessionId: string, req: IncomingMessage, res: ServerResponse) => Promise<void>;
|
|
87
88
|
handleCancel: (sessionId: string, res: ServerResponse) => void;
|
|
88
89
|
handleStopSession: (sessionId: string, res: ServerResponse) => Promise<void>;
|
|
89
90
|
handleSetSessionName: (sessionId: string, req: IncomingMessage, res: ServerResponse) => Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-deps.d.ts","sourceRoot":"","sources":["../../../src/api/types/api-deps.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"api-deps.d.ts","sourceRoot":"","sources":["../../../src/api/types/api-deps.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.cjs
CHANGED
|
@@ -107463,6 +107463,9 @@ var init_codexScreen = __esm({
|
|
|
107463
107463
|
function permissionContentKey(gate) {
|
|
107464
107464
|
return `${gate.prompt ?? ""}::${gate.detail ?? ""}::${gate.options.map((o) => `${o.index}.${o.label}`).join(",")}::${gate.cursor ?? ""}`;
|
|
107465
107465
|
}
|
|
107466
|
+
function permissionGateKey(gate) {
|
|
107467
|
+
return permissionContentKey({ ...gate, cursor: void 0 });
|
|
107468
|
+
}
|
|
107466
107469
|
function hasPermissionOsc(rawData) {
|
|
107467
107470
|
return OSC_777_PERMISSION_RE.test(rawData);
|
|
107468
107471
|
}
|
|
@@ -107622,6 +107625,24 @@ var init_detectQuestionFromScreen = __esm({
|
|
|
107622
107625
|
}
|
|
107623
107626
|
});
|
|
107624
107627
|
|
|
107628
|
+
// src/services/questions/permissionAnswerKeys.ts
|
|
107629
|
+
function permissionAnswerKeys(index) {
|
|
107630
|
+
if (!Number.isInteger(index) || index < 0) {
|
|
107631
|
+
throw new Error(`Invalid permission option index: ${index}`);
|
|
107632
|
+
}
|
|
107633
|
+
return `${index}${ENTER}`;
|
|
107634
|
+
}
|
|
107635
|
+
function isPermissionAnswer(gate, keys) {
|
|
107636
|
+
return gate.options.some((o) => keys === (o.answerKeys ?? permissionAnswerKeys(o.index)));
|
|
107637
|
+
}
|
|
107638
|
+
var ENTER;
|
|
107639
|
+
var init_permissionAnswerKeys = __esm({
|
|
107640
|
+
"src/services/questions/permissionAnswerKeys.ts"() {
|
|
107641
|
+
"use strict";
|
|
107642
|
+
ENTER = "\r";
|
|
107643
|
+
}
|
|
107644
|
+
});
|
|
107645
|
+
|
|
107625
107646
|
// node_modules/libheif-js/libheif-wasm/libheif-bundle.js
|
|
107626
107647
|
var require_libheif_bundle = __commonJS({
|
|
107627
107648
|
"node_modules/libheif-js/libheif-wasm/libheif-bundle.js"(exports2, module2) {
|
|
@@ -120990,8 +121011,8 @@ function detectShellPrompt(lines) {
|
|
|
120990
121011
|
return {
|
|
120991
121012
|
prompt: last.text,
|
|
120992
121013
|
options: [
|
|
120993
|
-
{ index: 1, label: "Yes", answerKeys: `y${
|
|
120994
|
-
{ index: 2, label: "No", answerKeys: `n${
|
|
121014
|
+
{ index: 1, label: "Yes", answerKeys: `y${ENTER3}` },
|
|
121015
|
+
{ index: 2, label: "No", answerKeys: `n${ENTER3}` }
|
|
120995
121016
|
]
|
|
120996
121017
|
};
|
|
120997
121018
|
}
|
|
@@ -121015,7 +121036,7 @@ function detectShellPrompt(lines) {
|
|
|
121015
121036
|
if (!m2) break;
|
|
121016
121037
|
const num = Number.parseInt(m2[1], 10);
|
|
121017
121038
|
if (!Number.isFinite(num)) break;
|
|
121018
|
-
options.unshift({ index: num, label: m2[2].trim(), answerKeys: `${num}${
|
|
121039
|
+
options.unshift({ index: num, label: m2[2].trim(), answerKeys: `${num}${ENTER3}` });
|
|
121019
121040
|
firstRow = i;
|
|
121020
121041
|
}
|
|
121021
121042
|
if (options.length >= 2) {
|
|
@@ -121032,16 +121053,16 @@ function detectShellPrompt(lines) {
|
|
|
121032
121053
|
if (PRESS_ENTER_RE.test(last.text) || CONTINUE_RE.test(last.text)) {
|
|
121033
121054
|
return {
|
|
121034
121055
|
prompt: last.text,
|
|
121035
|
-
options: [{ index: 1, label: "Continue", answerKeys:
|
|
121056
|
+
options: [{ index: 1, label: "Continue", answerKeys: ENTER3 }]
|
|
121036
121057
|
};
|
|
121037
121058
|
}
|
|
121038
121059
|
return null;
|
|
121039
121060
|
}
|
|
121040
|
-
var
|
|
121061
|
+
var ENTER3, YN_RE, PRESS_ENTER_RE, CONTINUE_RE, NUMBERED_RE, CLAUDE_CHROME_RE, BOX_ONLY_RE3;
|
|
121041
121062
|
var init_detectShellPrompt = __esm({
|
|
121042
121063
|
"src/services/questions/detectShellPrompt.ts"() {
|
|
121043
121064
|
"use strict";
|
|
121044
|
-
|
|
121065
|
+
ENTER3 = "\r";
|
|
121045
121066
|
YN_RE = /[[(]\s*y\s*\/\s*n\s*[\])]/i;
|
|
121046
121067
|
PRESS_ENTER_RE = /press\s+(enter|return|any key)/i;
|
|
121047
121068
|
CONTINUE_RE = /\bcontinue\b\s*\??\s*$/i;
|
|
@@ -121120,6 +121141,7 @@ var init_pty_manager = __esm({
|
|
|
121120
121141
|
init_detectQuestionFromScreen();
|
|
121121
121142
|
init_detectShellPrompt();
|
|
121122
121143
|
init_parseAgentPhase();
|
|
121144
|
+
init_permissionAnswerKeys();
|
|
121123
121145
|
init_debounce();
|
|
121124
121146
|
init_deriveSessionName();
|
|
121125
121147
|
OUTPUT_BUFFER_MAX2 = 65536;
|
|
@@ -121142,10 +121164,12 @@ var init_pty_manager = __esm({
|
|
|
121142
121164
|
onLiveQuestion;
|
|
121143
121165
|
onLiveQuestionGone;
|
|
121144
121166
|
onUserMessage;
|
|
121145
|
-
// Per-session permission-gate state
|
|
121146
|
-
//
|
|
121147
|
-
//
|
|
121148
|
-
|
|
121167
|
+
// Per-session permission-gate state: the gate currently open on a session's
|
|
121168
|
+
// screen. Set between an OSC 777 / paint-time claim (gate open) and the next
|
|
121169
|
+
// prompt-ready without a fresh 777 (gate closed). Prevents re-broadcasting
|
|
121170
|
+
// open/close on every chunk. Holds the gate itself rather than just the id so
|
|
121171
|
+
// sendKeys can tell whether the bytes it is writing are that gate's answer.
|
|
121172
|
+
permissionOpen = /* @__PURE__ */ new Map();
|
|
121149
121173
|
// Last chunk's raw tail per session — prepended to the next chunk before
|
|
121150
121174
|
// the OSC regex test so a split escape still matches. Consumed on match.
|
|
121151
121175
|
oscTail = /* @__PURE__ */ new Map();
|
|
@@ -121380,6 +121404,11 @@ var init_pty_manager = __esm({
|
|
|
121380
121404
|
);
|
|
121381
121405
|
session.process.write(keys);
|
|
121382
121406
|
session.lastActivityAt = /* @__PURE__ */ new Date();
|
|
121407
|
+
const openGate = this.permissionOpen.get(sessionId);
|
|
121408
|
+
if (openGate && isPermissionAnswer(openGate, keys)) {
|
|
121409
|
+
this.permissionOpen.delete(sessionId);
|
|
121410
|
+
this.onPermissionChange?.(sessionId, null);
|
|
121411
|
+
}
|
|
121383
121412
|
}
|
|
121384
121413
|
sendInput(sessionId, input) {
|
|
121385
121414
|
const session = this.sessions.get(sessionId);
|
|
@@ -121726,7 +121755,7 @@ var init_pty_manager = __esm({
|
|
|
121726
121755
|
}
|
|
121727
121756
|
if (oscPermission && !askFooterOnScreen) {
|
|
121728
121757
|
const gate = scrapePermissionGate(lines);
|
|
121729
|
-
this.permissionOpen.
|
|
121758
|
+
this.permissionOpen.set(sessionId, gate ?? { options: [] });
|
|
121730
121759
|
this.onPermissionChange?.(sessionId, gate ?? { options: [] });
|
|
121731
121760
|
} else if (this.permissionOpen.has(sessionId) && !askFooterOnScreen) {
|
|
121732
121761
|
const gate = detectGateScreen(lines);
|
|
@@ -121740,6 +121769,7 @@ var init_pty_manager = __esm({
|
|
|
121740
121769
|
this.closedGateKey.delete(sessionId);
|
|
121741
121770
|
}
|
|
121742
121771
|
} else if (gate) {
|
|
121772
|
+
this.permissionOpen.set(sessionId, gate);
|
|
121743
121773
|
this.onPermissionChange?.(sessionId, gate);
|
|
121744
121774
|
}
|
|
121745
121775
|
} else if (!askFooterOnScreen && !oscWaitingForInput) {
|
|
@@ -121747,7 +121777,7 @@ var init_pty_manager = __esm({
|
|
|
121747
121777
|
if (gate) {
|
|
121748
121778
|
const key = permissionContentKey({ ...gate, cursor: void 0 });
|
|
121749
121779
|
if (this.closedGateKey.get(sessionId) !== key) {
|
|
121750
|
-
this.permissionOpen.
|
|
121780
|
+
this.permissionOpen.set(sessionId, gate);
|
|
121751
121781
|
this.onPermissionChange?.(sessionId, gate);
|
|
121752
121782
|
}
|
|
121753
121783
|
} else {
|
|
@@ -136537,6 +136567,10 @@ var createSessionRoutes = (deps) => {
|
|
|
136537
136567
|
await deps.handleSendAnswer(c.req.param("id"), c.env.incoming, c.env.outgoing);
|
|
136538
136568
|
return alreadyHandled6();
|
|
136539
136569
|
});
|
|
136570
|
+
app.post("/:id/permission/answer", async (c) => {
|
|
136571
|
+
await deps.handlePermissionAnswer(c.req.param("id"), c.env.incoming, c.env.outgoing);
|
|
136572
|
+
return alreadyHandled6();
|
|
136573
|
+
});
|
|
136540
136574
|
app.post("/:id/files", async (c) => {
|
|
136541
136575
|
await deps.handleUploadFile(c.req.param("id"), c.env.incoming, c.env.outgoing);
|
|
136542
136576
|
return alreadyHandled6();
|
|
@@ -147676,9 +147710,12 @@ function parseStatusLine(lines) {
|
|
|
147676
147710
|
return info;
|
|
147677
147711
|
}
|
|
147678
147712
|
|
|
147713
|
+
// src/api/handlers/sessions.handlers.ts
|
|
147714
|
+
init_permissionAnswerKeys();
|
|
147715
|
+
|
|
147679
147716
|
// src/services/questions/answersToKeystrokes.ts
|
|
147680
147717
|
var DOWN = "\x1B[B";
|
|
147681
|
-
var
|
|
147718
|
+
var ENTER2 = "\r";
|
|
147682
147719
|
var UnknownOptionError = class extends Error {
|
|
147683
147720
|
constructor(question, value) {
|
|
147684
147721
|
super(`No option labelled "${value}" for question "${question}"`);
|
|
@@ -147699,7 +147736,7 @@ function answersToKeystrokes(questions, answers) {
|
|
|
147699
147736
|
const label = Array.isArray(raw2) ? raw2[0] : raw2;
|
|
147700
147737
|
const target = q2.options.findIndex((o) => o.label === label);
|
|
147701
147738
|
if (target < 0) throw new UnknownOptionError(q2.question, label);
|
|
147702
|
-
out += DOWN.repeat(target) +
|
|
147739
|
+
out += DOWN.repeat(target) + ENTER2;
|
|
147703
147740
|
}
|
|
147704
147741
|
return out;
|
|
147705
147742
|
}
|
|
@@ -148611,9 +148648,98 @@ var SessionHandlers = class {
|
|
|
148611
148648
|
...gate.prompt ? { prompt: gate.prompt } : {},
|
|
148612
148649
|
...gate.detail ? { detail: gate.detail } : {},
|
|
148613
148650
|
options: gate.options,
|
|
148614
|
-
...gate.cursor !== void 0 ? { cursor: gate.cursor } : {}
|
|
148651
|
+
...gate.cursor !== void 0 ? { cursor: gate.cursor } : {},
|
|
148652
|
+
contentKey: permissionGateKey(gate)
|
|
148615
148653
|
});
|
|
148616
148654
|
}
|
|
148655
|
+
/**
|
|
148656
|
+
* Answer a permission gate — the validated counterpart of POST /:id/input.
|
|
148657
|
+
*
|
|
148658
|
+
* `/input` is a raw-bytes conduit (arrow-key nav uses it too) and stays that
|
|
148659
|
+
* way; this route is the semantic one, mirroring the /answer split. Two
|
|
148660
|
+
* things make it more than validation theatre:
|
|
148661
|
+
*
|
|
148662
|
+
* - The client sends `{ contentKey, optionIndex }` and NO keystrokes. The
|
|
148663
|
+
* keys are derived here from our own copy of the gate, so the client's
|
|
148664
|
+
* key-derivation can never drift from the server's.
|
|
148665
|
+
* - `contentKey` binds the answer to a specific gate. `isPermissionAnswer`
|
|
148666
|
+
* matches structurally, and approval gates repeat constantly ("2. Yes /
|
|
148667
|
+
* 3. No" for every tool call), so without this a delayed answer to gate A
|
|
148668
|
+
* could be written as gate B's answer — a user approving a bash command
|
|
148669
|
+
* they never saw, with a 200 and a normal permission_cancelled. Treat the
|
|
148670
|
+
* check as a security boundary.
|
|
148671
|
+
*
|
|
148672
|
+
* Every refusal happens BEFORE sendKeys. On success we deliberately broadcast
|
|
148673
|
+
* nothing: the PTY-side close (isPermissionAnswer in pty-manager) recognises
|
|
148674
|
+
* the bytes we just wrote and fires permission_cancelled itself.
|
|
148675
|
+
*/
|
|
148676
|
+
async handlePermissionAnswer(sessionId, req, res) {
|
|
148677
|
+
const body = await readBody2(req);
|
|
148678
|
+
const contentKey = body?.contentKey;
|
|
148679
|
+
const optionIndex = body?.optionIndex;
|
|
148680
|
+
if (typeof contentKey !== "string" || !Number.isInteger(optionIndex) || optionIndex < 0) {
|
|
148681
|
+
json2(res, 400, { ok: false, reason: "Expected { contentKey: string, optionIndex: number }" });
|
|
148682
|
+
return;
|
|
148683
|
+
}
|
|
148684
|
+
const gateClosed = () => {
|
|
148685
|
+
this.pendingPermission.delete(sessionId);
|
|
148686
|
+
this.pendingPermissionKey.delete(sessionId);
|
|
148687
|
+
this.wsHub.broadcast({ type: "permission_cancelled", sessionId });
|
|
148688
|
+
json2(res, 409, { ok: false, reason: "gate_closed" });
|
|
148689
|
+
};
|
|
148690
|
+
const gate = this.pendingPermission.get(sessionId);
|
|
148691
|
+
if (!gate) {
|
|
148692
|
+
gateClosed();
|
|
148693
|
+
return;
|
|
148694
|
+
}
|
|
148695
|
+
if (permissionGateKey(gate) !== contentKey) {
|
|
148696
|
+
json2(res, 409, { ok: false, reason: "gate_mismatch" });
|
|
148697
|
+
return;
|
|
148698
|
+
}
|
|
148699
|
+
const option = gate.options[optionIndex];
|
|
148700
|
+
if (!option) {
|
|
148701
|
+
json2(res, 409, { ok: false, reason: "unknown_option" });
|
|
148702
|
+
return;
|
|
148703
|
+
}
|
|
148704
|
+
if (!await this.permissionGateStillOpen(sessionId, contentKey)) {
|
|
148705
|
+
gateClosed();
|
|
148706
|
+
return;
|
|
148707
|
+
}
|
|
148708
|
+
try {
|
|
148709
|
+
this.ptyManager.sendKeys(sessionId, option.answerKeys ?? permissionAnswerKeys(option.index));
|
|
148710
|
+
} catch (err) {
|
|
148711
|
+
const message = err instanceof Error ? err.message : "Failed to send answer";
|
|
148712
|
+
json2(res, 400, { ok: false, reason: message });
|
|
148713
|
+
return;
|
|
148714
|
+
}
|
|
148715
|
+
json2(res, 200, { ok: true });
|
|
148716
|
+
}
|
|
148717
|
+
/**
|
|
148718
|
+
* Is THIS gate still the one on screen?
|
|
148719
|
+
*
|
|
148720
|
+
* Deliberately stricter than questionMenuStillOpen's "is a menu up": the
|
|
148721
|
+
* staleness window this exists to cover (the ~300ms scrape throttle plus the
|
|
148722
|
+
* wait for the next PTY chunk) is exactly where pendingPermission still says
|
|
148723
|
+
* gate A while the screen has moved to gate B — and since approval gates
|
|
148724
|
+
* repeat their shape, "some gate is open" would wave that through.
|
|
148725
|
+
*
|
|
148726
|
+
* Reads 60 lines because that is the window the detector that produced the
|
|
148727
|
+
* pending gate uses (pty-manager's scrape); `detail` walks up to 6 lines
|
|
148728
|
+
* above the prompt, so a shorter window can truncate it and manufacture a
|
|
148729
|
+
* mismatch on a healthy gate.
|
|
148730
|
+
*
|
|
148731
|
+
* Best-effort, like questionMenuStillOpen: a session we hold no PTY for, or
|
|
148732
|
+
* one that raced away mid-read, is not ours to veto.
|
|
148733
|
+
*/
|
|
148734
|
+
async permissionGateStillOpen(sessionId, contentKey) {
|
|
148735
|
+
if (!this.ptyManager.hasSession(sessionId)) return true;
|
|
148736
|
+
try {
|
|
148737
|
+
const onScreen = scrapePermissionGate(await this.ptyManager.getOutputLines(sessionId, 60));
|
|
148738
|
+
return onScreen !== null && permissionGateKey(onScreen) === contentKey;
|
|
148739
|
+
} catch {
|
|
148740
|
+
return true;
|
|
148741
|
+
}
|
|
148742
|
+
}
|
|
148617
148743
|
async handleSendAnswer(sessionId, req, res) {
|
|
148618
148744
|
const body = await readBody2(req);
|
|
148619
148745
|
const pending = this.pendingQuestions.get(sessionId);
|
|
@@ -150980,6 +151106,7 @@ function handleListProjects(url2, res) {
|
|
|
150980
151106
|
// src/server-wiring.ts
|
|
150981
151107
|
init_logger();
|
|
150982
151108
|
init_pty_shared();
|
|
151109
|
+
init_detectPermissionGate();
|
|
150983
151110
|
init_capabilities();
|
|
150984
151111
|
function wsAllows(principal, required2) {
|
|
150985
151112
|
return principal === null || hasCapability(principal, required2);
|
|
@@ -151249,6 +151376,7 @@ function createApiDeps(deps) {
|
|
|
151249
151376
|
handleGetOutput: (id, res) => deps.sessionHandlers.handleGetOutput(id, res),
|
|
151250
151377
|
handleSendInput: (id, req, res) => deps.sessionHandlers.handleSendInput(id, req, res),
|
|
151251
151378
|
handleSendAnswer: (id, req, res) => deps.sessionHandlers.handleSendAnswer(id, req, res),
|
|
151379
|
+
handlePermissionAnswer: (id, req, res) => deps.sessionHandlers.handlePermissionAnswer(id, req, res),
|
|
151252
151380
|
handleCancel: (id, res) => deps.sessionHandlers.handleCancel(id, res),
|
|
151253
151381
|
handleStopSession: (id, res) => deps.sessionHandlers.handleStopSession(id, res),
|
|
151254
151382
|
handleSetSessionName: (id, req, res) => deps.sessionHandlers.handleSetSessionName(id, req, res),
|
|
@@ -151332,7 +151460,8 @@ function createApiDeps(deps) {
|
|
|
151332
151460
|
...pendingGate.prompt ? { prompt: pendingGate.prompt } : {},
|
|
151333
151461
|
...pendingGate.detail ? { detail: pendingGate.detail } : {},
|
|
151334
151462
|
options: pendingGate.options,
|
|
151335
|
-
...pendingGate.cursor !== void 0 ? { cursor: pendingGate.cursor } : {}
|
|
151463
|
+
...pendingGate.cursor !== void 0 ? { cursor: pendingGate.cursor } : {},
|
|
151464
|
+
contentKey: permissionGateKey(pendingGate)
|
|
151336
151465
|
})
|
|
151337
151466
|
);
|
|
151338
151467
|
}
|