@threadbase-sh/streamer 1.67.4 → 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 +130 -28
- package/dist/cli.cjs.map +1 -1
- package/dist/index.cjs +100 -2
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +100 -2
- package/dist/index.js.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/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":"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;AAoBjE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AAE5E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AACvE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,KAAK,EACV,WAAW,EACX,iBAAiB,EACjB,cAAc,EACd,gBAAgB,EAChB,eAAe,EAChB,MAAM,aAAa,CAAC;AAErB,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAiB1C,eAAO,MAAM,2BAA2B,MAAM,CAAC;AAS/C,eAAO,MAAM,qBAAqB,OAAQ,CAAC;AA+B3C,wBAAsB,kBAAkB,CACtC,GAAG,EAAE,MAAM,EACX,SAAS,EAAE,MAAM,EACjB,MAAM,GAAE,MAA2B,GAClC,OAAO,CAAC,OAAO,CAAC,CAWlB;AAsCD;;;;;;;;;;;;;GAaG;AACH,MAAM,MAAM,mBAAmB,GAAG;IAChC,YAAY,EAAE,YAAY,CAAC;IAC3B,UAAU,EAAE,kBAAkB,CAAC;IAC/B,KAAK,EAAE,KAAK,CAAC;IACb,cAAc,EAAE,cAAc,CAAC;IAC/B,eAAe,EAAE,eAAe,CAAC;IACjC,YAAY,EAAE,mBAAmB,CAAC;IAClC,mBAAmB,EAAE,mBAAmB,CAAC;IACzC,WAAW,EAAE,gBAAgB,CAAC;IAC9B,gBAAgB,EAAE,YAAY,CAAC;IAC/B,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,gBAAgB,EAAE,GAAG,CACnB,MAAM,EACN;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,WAAW,EAAE,CAAC;QAAC,MAAM,EAAE,KAAK,GAAG,OAAO,CAAA;KAAE,CACzE,CAAC;IACF,kBAAkB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,iBAAiB,EAAE,GAAG,CACpB,MAAM,EACN;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,gBAAgB,EAAE,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CACnF,CAAC;IACF,oBAAoB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1C,iBAAiB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC/B,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,kBAAkB,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC;IAChD,WAAW,EAAE,WAAW,CAAC;IACzB,WAAW,EAAE,WAAW,GAAG,IAAI,CAAC;IAChC,mBAAmB,EAAE,MAAM,CAAC;IAC5B,wBAAwB,EAAE,OAAO,CAAC;IAClC,QAAQ,EAAE,MAAM,CAAC;IAKjB,KAAK,EAAE,MAAM,iBAAiB,GAAG,IAAI,CAAC;IACtC,GAAG,EAAE,MAAM,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;IAChC,WAAW,EAAE,MAAM,gBAAgB,CAAC;IACpC,eAAe,EAAE,MAAM,MAAM,GAAG,SAAS,CAAC;IAC1C,MAAM,EAAE,MAAM,OAAO,CAAC,UAAU,CAAC,OAAO,UAAU,CAAC,CAAC,GAAG,IAAI,CAAC;IAC5D,YAAY,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;IAIlC,cAAc,EAAE,MAAM;QAAE,OAAO,EAAE,iBAAiB,EAAE,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IACjF,iBAAiB,EAAE,CAAC,KAAK,EAAE;QAAE,OAAO,EAAE,iBAAiB,EAAE,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,KAAK,IAAI,CAAC;IAC/F,iBAAiB,EAAE,MAAM,OAAO,CAAC,iBAAiB,EAAE,CAAC,GAAG,IAAI,CAAC;IAC7D,oBAAoB,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,iBAAiB,EAAE,CAAC,GAAG,IAAI,KAAK,IAAI,CAAC;IAG3E,iBAAiB,EAAE,CAAC,GAAG,EAAE,cAAc,KAAK,OAAO,CAAC;IACpD,cAAc,EAAE,MAAM,GAAG,CAAC,MAAM,CAAC,CAAC;IAClC,uBAAuB,EAAE,CAAC,QAAQ,EAAE,SAAS,eAAe,EAAE,KAAK,SAAS,eAAe,EAAE,CAAC;IAC9F,6BAA6B,EAAE,CAAC,GAAG,EAAE,eAAe,KAAK,IAAI,CAAC;IAC9D,0BAA0B,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC;IACpD,0BAA0B,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC;IAC3D,kBAAkB,EAAE,MAAM;QACxB,cAAc,EAAE,cAAc,CAAC;QAC/B,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,WAAW,CAAC;KACrB,CAAC;IACF,yBAAyB,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CACrD,aAAa,GACb;QACE,EAAE,EAAE,IAAI,CAAC;QACT,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;QACzB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;QAC3B,IAAI,EAAE,GAAG,CAAC;QACV,WAAW,EAAE,MAAM,CAAC;QACpB,QAAQ,EAAE,YAAY,CAAC;KACxB,CACJ,CAAC;IACF,qBAAqB,EAAE,CACrB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,KACd,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,GAAG,QAAQ,GAAG,SAAS,CAAC;QAAC,OAAO,EAAE,cAAc,GAAG,IAAI,CAAA;KAAE,CAAC,CAAC;IAC1F,aAAa,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3C,kBAAkB,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IAChD,yBAAyB,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,IAAI,CAAC;IACvF,aAAa,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;IAC/C,gBAAgB,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;CAChE,CAAC;AAEF;;;;;;;GAOG;AACH,qBAAa,eAAe;IACd,OAAO,CAAC,IAAI;IAAxB,YAAoB,IAAI,EAAE,mBAAmB,EAAI;IAEjD,OAAO,KAAK,YAAY,GAEvB;IAED,OAAO,KAAK,UAAU,GAErB;IAED,OAAO,KAAK,KAAK,GAEhB;IAED,OAAO,KAAK,cAAc,GAEzB;IAED,OAAO,KAAK,eAAe,GAE1B;IAED,OAAO,KAAK,YAAY,GAEvB;IAED,OAAO,KAAK,mBAAmB,GAE9B;IAED,OAAO,KAAK,WAAW,GAEtB;IAED,OAAO,KAAK,gBAAgB,GAE3B;IAED,OAAO,KAAK,cAAc,GAEzB;IAED,OAAO,KAAK,gBAAgB,GAE3B;IAED,OAAO,KAAK,kBAAkB,GAE7B;IAED,OAAO,KAAK,iBAAiB,GAE5B;IAED,OAAO,KAAK,oBAAoB,GAE/B;IAED,OAAO,KAAK,iBAAiB,GAE5B;IAED,OAAO,KAAK,cAAc,GAEzB;IAED,OAAO,KAAK,kBAAkB,GAE7B;IAED,OAAO,KAAK,WAAW,GAEtB;IAED,OAAO,KAAK,WAAW,GAEtB;IAED,OAAO,KAAK,mBAAmB,GAE9B;IAED,OAAO,KAAK,wBAAwB,GAEnC;IAED,OAAO,KAAK,QAAQ,GAEnB;IAED,OAAO,KAAK,KAAK,GAEhB;IAED,OAAO,KAAK,GAAG,GAEd;IAED,OAAO,KAAK,UAAU,GAErB;IAED,OAAO,KAAK,WAAW,GAEtB;IAED,OAAO,KAAK,eAAe,GAE1B;IAED,OAAO,KAAK,MAAM,GAEjB;IAED,OAAO,KAAK,YAAY,GAEvB;IAED,OAAO,KAAK,cAAc,GAEzB;IAED,OAAO,KAAK,cAAc,QAEzB;IAED,OAAO,KAAK,iBAAiB,GAE5B;IAED,OAAO,KAAK,iBAAiB,QAE5B;IAEK,kBAAkB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CA4CrE;IAED;;;OAGG;YACW,gBAAgB;IA+BxB,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CA+C5E;IAEK,YAAY,CAAC,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAsE3E;IAED;;;;;;;;;;;;;OAaG;IACG,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAqH5F;IAED;;;;;;;;;;;OAWG;IACG,aAAa,CAAC,IAAI,EAAE;QACxB,SAAS,EAAE,MAAM,CAAC;QAClB,KAAK,CAAC,EAAE,OAAO,CAAC;QAChB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,GAAG,OAAO,CAAC,aAAa,CAAC,CAyKzB;IAEK,eAAe,CACnB,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,eAAe,EACpB,GAAG,EAAE,cAAc,GAClB,OAAO,CAAC,IAAI,CAAC,CAsHf;IAOD,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,GAAG,IAAI,CAOpE;IAKD,sBAAsB,CACpB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE;QACJ,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,gBAAgB,EAAE,CAAC;QAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,GAAG,IAAI,GACP,IAAI,CA0BN;IAED;;;;;;;;;;;;;;;;;;;;OAoBG;IACG,sBAAsB,CAC1B,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,eAAe,EACpB,GAAG,EAAE,cAAc,GAClB,OAAO,CAAC,IAAI,CAAC,CAuDf;IAED;;;;;;;;;;;;;;;;OAgBG;YACW,uBAAuB;IAU/B,gBAAgB,CACpB,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,eAAe,EACpB,GAAG,EAAE,cAAc,GAClB,OAAO,CAAC,IAAI,CAAC,CAiCf;YAIa,qBAAqB;IAS7B,gBAAgB,CACpB,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,eAAe,EACpB,GAAG,EAAE,cAAc,GAClB,OAAO,CAAC,IAAI,CAAC,CA4Df;IAED,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,cAAc,GAAG,IAAI,CAS5D;IAED,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,cAAc,GAAG,IAAI,CASzD;IAEK,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CA6D7E;IAED;;;;;OAKG;IACH,OAAO,CAAC,wBAAwB;IAOhC,OAAO,CAAC,wBAAwB;IAiBhC,OAAO,CAAC,yBAAyB;IAYjC;;;;OAIG;IACH,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAO3C;IAEK,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAuHvE;IAEK,kBAAkB,CAAC,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAwIjF;IAEK,oBAAoB,CACxB,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,eAAe,EACpB,GAAG,EAAE,cAAc,GAClB,OAAO,CAAC,IAAI,CAAC,CAmBf;IAED,qBAAqB,CAAC,GAAG,EAAE,cAAc,GAAG,IAAI,CAM/C;CACF"}
|
|
@@ -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;
|
|
@@ -121051,24 +121072,6 @@ var init_detectShellPrompt = __esm({
|
|
|
121051
121072
|
}
|
|
121052
121073
|
});
|
|
121053
121074
|
|
|
121054
|
-
// src/services/questions/permissionAnswerKeys.ts
|
|
121055
|
-
function permissionAnswerKeys(index) {
|
|
121056
|
-
if (!Number.isInteger(index) || index < 0) {
|
|
121057
|
-
throw new Error(`Invalid permission option index: ${index}`);
|
|
121058
|
-
}
|
|
121059
|
-
return `${index}${ENTER3}`;
|
|
121060
|
-
}
|
|
121061
|
-
function isPermissionAnswer(gate, keys) {
|
|
121062
|
-
return gate.options.some((o) => keys === (o.answerKeys ?? permissionAnswerKeys(o.index)));
|
|
121063
|
-
}
|
|
121064
|
-
var ENTER3;
|
|
121065
|
-
var init_permissionAnswerKeys = __esm({
|
|
121066
|
-
"src/services/questions/permissionAnswerKeys.ts"() {
|
|
121067
|
-
"use strict";
|
|
121068
|
-
ENTER3 = "\r";
|
|
121069
|
-
}
|
|
121070
|
-
});
|
|
121071
|
-
|
|
121072
121075
|
// src/utils/deriveSessionName.ts
|
|
121073
121076
|
function deriveSessionName(firstMessageText) {
|
|
121074
121077
|
const firstLine = firstMessageText.split("\n", 1)[0]?.trim() ?? "";
|
|
@@ -136564,6 +136567,10 @@ var createSessionRoutes = (deps) => {
|
|
|
136564
136567
|
await deps.handleSendAnswer(c.req.param("id"), c.env.incoming, c.env.outgoing);
|
|
136565
136568
|
return alreadyHandled6();
|
|
136566
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
|
+
});
|
|
136567
136574
|
app.post("/:id/files", async (c) => {
|
|
136568
136575
|
await deps.handleUploadFile(c.req.param("id"), c.env.incoming, c.env.outgoing);
|
|
136569
136576
|
return alreadyHandled6();
|
|
@@ -147703,9 +147710,12 @@ function parseStatusLine(lines) {
|
|
|
147703
147710
|
return info;
|
|
147704
147711
|
}
|
|
147705
147712
|
|
|
147713
|
+
// src/api/handlers/sessions.handlers.ts
|
|
147714
|
+
init_permissionAnswerKeys();
|
|
147715
|
+
|
|
147706
147716
|
// src/services/questions/answersToKeystrokes.ts
|
|
147707
147717
|
var DOWN = "\x1B[B";
|
|
147708
|
-
var
|
|
147718
|
+
var ENTER2 = "\r";
|
|
147709
147719
|
var UnknownOptionError = class extends Error {
|
|
147710
147720
|
constructor(question, value) {
|
|
147711
147721
|
super(`No option labelled "${value}" for question "${question}"`);
|
|
@@ -147726,7 +147736,7 @@ function answersToKeystrokes(questions, answers) {
|
|
|
147726
147736
|
const label = Array.isArray(raw2) ? raw2[0] : raw2;
|
|
147727
147737
|
const target = q2.options.findIndex((o) => o.label === label);
|
|
147728
147738
|
if (target < 0) throw new UnknownOptionError(q2.question, label);
|
|
147729
|
-
out += DOWN.repeat(target) +
|
|
147739
|
+
out += DOWN.repeat(target) + ENTER2;
|
|
147730
147740
|
}
|
|
147731
147741
|
return out;
|
|
147732
147742
|
}
|
|
@@ -148638,9 +148648,98 @@ var SessionHandlers = class {
|
|
|
148638
148648
|
...gate.prompt ? { prompt: gate.prompt } : {},
|
|
148639
148649
|
...gate.detail ? { detail: gate.detail } : {},
|
|
148640
148650
|
options: gate.options,
|
|
148641
|
-
...gate.cursor !== void 0 ? { cursor: gate.cursor } : {}
|
|
148651
|
+
...gate.cursor !== void 0 ? { cursor: gate.cursor } : {},
|
|
148652
|
+
contentKey: permissionGateKey(gate)
|
|
148642
148653
|
});
|
|
148643
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
|
+
}
|
|
148644
148743
|
async handleSendAnswer(sessionId, req, res) {
|
|
148645
148744
|
const body = await readBody2(req);
|
|
148646
148745
|
const pending = this.pendingQuestions.get(sessionId);
|
|
@@ -151007,6 +151106,7 @@ function handleListProjects(url2, res) {
|
|
|
151007
151106
|
// src/server-wiring.ts
|
|
151008
151107
|
init_logger();
|
|
151009
151108
|
init_pty_shared();
|
|
151109
|
+
init_detectPermissionGate();
|
|
151010
151110
|
init_capabilities();
|
|
151011
151111
|
function wsAllows(principal, required2) {
|
|
151012
151112
|
return principal === null || hasCapability(principal, required2);
|
|
@@ -151276,6 +151376,7 @@ function createApiDeps(deps) {
|
|
|
151276
151376
|
handleGetOutput: (id, res) => deps.sessionHandlers.handleGetOutput(id, res),
|
|
151277
151377
|
handleSendInput: (id, req, res) => deps.sessionHandlers.handleSendInput(id, req, res),
|
|
151278
151378
|
handleSendAnswer: (id, req, res) => deps.sessionHandlers.handleSendAnswer(id, req, res),
|
|
151379
|
+
handlePermissionAnswer: (id, req, res) => deps.sessionHandlers.handlePermissionAnswer(id, req, res),
|
|
151279
151380
|
handleCancel: (id, res) => deps.sessionHandlers.handleCancel(id, res),
|
|
151280
151381
|
handleStopSession: (id, res) => deps.sessionHandlers.handleStopSession(id, res),
|
|
151281
151382
|
handleSetSessionName: (id, req, res) => deps.sessionHandlers.handleSetSessionName(id, req, res),
|
|
@@ -151359,7 +151460,8 @@ function createApiDeps(deps) {
|
|
|
151359
151460
|
...pendingGate.prompt ? { prompt: pendingGate.prompt } : {},
|
|
151360
151461
|
...pendingGate.detail ? { detail: pendingGate.detail } : {},
|
|
151361
151462
|
options: pendingGate.options,
|
|
151362
|
-
...pendingGate.cursor !== void 0 ? { cursor: pendingGate.cursor } : {}
|
|
151463
|
+
...pendingGate.cursor !== void 0 ? { cursor: pendingGate.cursor } : {},
|
|
151464
|
+
contentKey: permissionGateKey(pendingGate)
|
|
151363
151465
|
})
|
|
151364
151466
|
);
|
|
151365
151467
|
}
|