linkshell-cli 0.2.14 → 0.2.16
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/cli/src/runtime/bridge-session.d.ts +4 -0
- package/dist/cli/src/runtime/bridge-session.js +209 -14
- package/dist/cli/src/runtime/bridge-session.js.map +1 -1
- package/dist/cli/tsconfig.tsbuildinfo +1 -1
- package/dist/shared-protocol/src/index.d.ts +110 -0
- package/dist/shared-protocol/src/index.js +17 -0
- package/dist/shared-protocol/src/index.js.map +1 -1
- package/package.json +1 -1
- package/src/runtime/bridge-session.ts +226 -14
|
@@ -417,6 +417,61 @@ export declare const terminalBrowseResultPayloadSchema: z.ZodObject<{
|
|
|
417
417
|
}[];
|
|
418
418
|
error?: string | undefined;
|
|
419
419
|
}>;
|
|
420
|
+
export declare const terminalStatusPayloadSchema: z.ZodObject<{
|
|
421
|
+
phase: z.ZodEnum<["thinking", "tool_use", "outputting", "waiting", "idle", "error"]>;
|
|
422
|
+
toolName: z.ZodOptional<z.ZodString>;
|
|
423
|
+
toolInput: z.ZodOptional<z.ZodString>;
|
|
424
|
+
permissionRequest: z.ZodOptional<z.ZodString>;
|
|
425
|
+
summary: z.ZodOptional<z.ZodString>;
|
|
426
|
+
topPermission: z.ZodOptional<z.ZodObject<{
|
|
427
|
+
requestId: z.ZodString;
|
|
428
|
+
toolName: z.ZodString;
|
|
429
|
+
toolInput: z.ZodString;
|
|
430
|
+
permissionRequest: z.ZodString;
|
|
431
|
+
timestamp: z.ZodNumber;
|
|
432
|
+
}, "strip", z.ZodTypeAny, {
|
|
433
|
+
timestamp: number;
|
|
434
|
+
toolName: string;
|
|
435
|
+
toolInput: string;
|
|
436
|
+
permissionRequest: string;
|
|
437
|
+
requestId: string;
|
|
438
|
+
}, {
|
|
439
|
+
timestamp: number;
|
|
440
|
+
toolName: string;
|
|
441
|
+
toolInput: string;
|
|
442
|
+
permissionRequest: string;
|
|
443
|
+
requestId: string;
|
|
444
|
+
}>>;
|
|
445
|
+
pendingPermissionCount: z.ZodOptional<z.ZodNumber>;
|
|
446
|
+
}, "strip", z.ZodTypeAny, {
|
|
447
|
+
phase: "idle" | "error" | "thinking" | "tool_use" | "outputting" | "waiting";
|
|
448
|
+
toolName?: string | undefined;
|
|
449
|
+
toolInput?: string | undefined;
|
|
450
|
+
permissionRequest?: string | undefined;
|
|
451
|
+
summary?: string | undefined;
|
|
452
|
+
topPermission?: {
|
|
453
|
+
timestamp: number;
|
|
454
|
+
toolName: string;
|
|
455
|
+
toolInput: string;
|
|
456
|
+
permissionRequest: string;
|
|
457
|
+
requestId: string;
|
|
458
|
+
} | undefined;
|
|
459
|
+
pendingPermissionCount?: number | undefined;
|
|
460
|
+
}, {
|
|
461
|
+
phase: "idle" | "error" | "thinking" | "tool_use" | "outputting" | "waiting";
|
|
462
|
+
toolName?: string | undefined;
|
|
463
|
+
toolInput?: string | undefined;
|
|
464
|
+
permissionRequest?: string | undefined;
|
|
465
|
+
summary?: string | undefined;
|
|
466
|
+
topPermission?: {
|
|
467
|
+
timestamp: number;
|
|
468
|
+
toolName: string;
|
|
469
|
+
toolInput: string;
|
|
470
|
+
permissionRequest: string;
|
|
471
|
+
requestId: string;
|
|
472
|
+
} | undefined;
|
|
473
|
+
pendingPermissionCount?: number | undefined;
|
|
474
|
+
}>;
|
|
420
475
|
export declare const fileUploadPayloadSchema: z.ZodObject<{
|
|
421
476
|
data: z.ZodString;
|
|
422
477
|
filename: z.ZodString;
|
|
@@ -802,6 +857,61 @@ export declare const protocolMessageSchemas: {
|
|
|
802
857
|
}, {
|
|
803
858
|
terminalId: string;
|
|
804
859
|
}>;
|
|
860
|
+
readonly "terminal.status": z.ZodObject<{
|
|
861
|
+
phase: z.ZodEnum<["thinking", "tool_use", "outputting", "waiting", "idle", "error"]>;
|
|
862
|
+
toolName: z.ZodOptional<z.ZodString>;
|
|
863
|
+
toolInput: z.ZodOptional<z.ZodString>;
|
|
864
|
+
permissionRequest: z.ZodOptional<z.ZodString>;
|
|
865
|
+
summary: z.ZodOptional<z.ZodString>;
|
|
866
|
+
topPermission: z.ZodOptional<z.ZodObject<{
|
|
867
|
+
requestId: z.ZodString;
|
|
868
|
+
toolName: z.ZodString;
|
|
869
|
+
toolInput: z.ZodString;
|
|
870
|
+
permissionRequest: z.ZodString;
|
|
871
|
+
timestamp: z.ZodNumber;
|
|
872
|
+
}, "strip", z.ZodTypeAny, {
|
|
873
|
+
timestamp: number;
|
|
874
|
+
toolName: string;
|
|
875
|
+
toolInput: string;
|
|
876
|
+
permissionRequest: string;
|
|
877
|
+
requestId: string;
|
|
878
|
+
}, {
|
|
879
|
+
timestamp: number;
|
|
880
|
+
toolName: string;
|
|
881
|
+
toolInput: string;
|
|
882
|
+
permissionRequest: string;
|
|
883
|
+
requestId: string;
|
|
884
|
+
}>>;
|
|
885
|
+
pendingPermissionCount: z.ZodOptional<z.ZodNumber>;
|
|
886
|
+
}, "strip", z.ZodTypeAny, {
|
|
887
|
+
phase: "idle" | "error" | "thinking" | "tool_use" | "outputting" | "waiting";
|
|
888
|
+
toolName?: string | undefined;
|
|
889
|
+
toolInput?: string | undefined;
|
|
890
|
+
permissionRequest?: string | undefined;
|
|
891
|
+
summary?: string | undefined;
|
|
892
|
+
topPermission?: {
|
|
893
|
+
timestamp: number;
|
|
894
|
+
toolName: string;
|
|
895
|
+
toolInput: string;
|
|
896
|
+
permissionRequest: string;
|
|
897
|
+
requestId: string;
|
|
898
|
+
} | undefined;
|
|
899
|
+
pendingPermissionCount?: number | undefined;
|
|
900
|
+
}, {
|
|
901
|
+
phase: "idle" | "error" | "thinking" | "tool_use" | "outputting" | "waiting";
|
|
902
|
+
toolName?: string | undefined;
|
|
903
|
+
toolInput?: string | undefined;
|
|
904
|
+
permissionRequest?: string | undefined;
|
|
905
|
+
summary?: string | undefined;
|
|
906
|
+
topPermission?: {
|
|
907
|
+
timestamp: number;
|
|
908
|
+
toolName: string;
|
|
909
|
+
toolInput: string;
|
|
910
|
+
permissionRequest: string;
|
|
911
|
+
requestId: string;
|
|
912
|
+
} | undefined;
|
|
913
|
+
pendingPermissionCount?: number | undefined;
|
|
914
|
+
}>;
|
|
805
915
|
};
|
|
806
916
|
export type ProtocolMessageType = keyof typeof protocolMessageSchemas;
|
|
807
917
|
export declare function createEnvelope<T>(input: {
|
|
@@ -168,6 +168,22 @@ export const terminalBrowseResultPayloadSchema = z.object({
|
|
|
168
168
|
entries: z.array(terminalBrowseEntrySchema),
|
|
169
169
|
error: z.string().optional(),
|
|
170
170
|
});
|
|
171
|
+
// ── Terminal status payloads (from Claude Code hooks) ────────────────
|
|
172
|
+
export const terminalStatusPayloadSchema = z.object({
|
|
173
|
+
phase: z.enum(["thinking", "tool_use", "outputting", "waiting", "idle", "error"]),
|
|
174
|
+
toolName: z.string().optional(),
|
|
175
|
+
toolInput: z.string().optional(),
|
|
176
|
+
permissionRequest: z.string().optional(),
|
|
177
|
+
summary: z.string().optional(),
|
|
178
|
+
topPermission: z.object({
|
|
179
|
+
requestId: z.string(),
|
|
180
|
+
toolName: z.string(),
|
|
181
|
+
toolInput: z.string(),
|
|
182
|
+
permissionRequest: z.string(),
|
|
183
|
+
timestamp: z.number(),
|
|
184
|
+
}).optional(),
|
|
185
|
+
pendingPermissionCount: z.number().optional(),
|
|
186
|
+
});
|
|
171
187
|
// ── File upload payloads ────────────────────────────────────────────
|
|
172
188
|
export const fileUploadPayloadSchema = z.object({
|
|
173
189
|
data: z.string(), // base64 encoded
|
|
@@ -211,6 +227,7 @@ export const protocolMessageSchemas = {
|
|
|
211
227
|
"terminal.browse": terminalBrowsePayloadSchema,
|
|
212
228
|
"terminal.browse.result": terminalBrowseResultPayloadSchema,
|
|
213
229
|
"terminal.kill": terminalKillPayloadSchema,
|
|
230
|
+
"terminal.status": terminalStatusPayloadSchema,
|
|
214
231
|
};
|
|
215
232
|
// ── UUID helper (works in Node, Web, and Expo) ─────────────────────
|
|
216
233
|
function generateId() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../shared-protocol/src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../shared-protocol/src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import * as pty from "node-pty";
|
|
2
|
+
import * as http from "node:http";
|
|
2
3
|
import WebSocket from "ws";
|
|
3
4
|
import { hostname, platform, homedir } from "node:os";
|
|
4
|
-
import { writeFileSync, readdirSync, statSync } from "node:fs";
|
|
5
|
+
import { writeFileSync, readdirSync, statSync, unlinkSync } from "node:fs";
|
|
5
6
|
import { tmpdir } from "node:os";
|
|
6
7
|
import { join, basename, resolve } from "node:path";
|
|
7
8
|
import {
|
|
@@ -47,6 +48,9 @@ interface TerminalInstance {
|
|
|
47
48
|
scrollback: ScrollbackBuffer;
|
|
48
49
|
outputSeq: number;
|
|
49
50
|
status: "running" | "exited";
|
|
51
|
+
hookServer?: http.Server;
|
|
52
|
+
hookPort?: number;
|
|
53
|
+
hookConfigPath?: string;
|
|
50
54
|
}
|
|
51
55
|
|
|
52
56
|
function getPairingGatewayParam(gatewayHttpUrl: string): string | undefined {
|
|
@@ -116,6 +120,13 @@ export class BridgeSession {
|
|
|
116
120
|
private sessionId = "";
|
|
117
121
|
private exited = false;
|
|
118
122
|
private stopped = false;
|
|
123
|
+
private permissionStacks = new Map<string, Array<{
|
|
124
|
+
requestId: string;
|
|
125
|
+
toolName: string;
|
|
126
|
+
toolInput: string;
|
|
127
|
+
permissionRequest: string;
|
|
128
|
+
timestamp: number;
|
|
129
|
+
}>>();
|
|
119
130
|
private screenCapture: ScreenFallback | undefined;
|
|
120
131
|
private screenShare: ScreenShare | undefined;
|
|
121
132
|
|
|
@@ -137,7 +148,7 @@ export class BridgeSession {
|
|
|
137
148
|
if (!this.sessionId) {
|
|
138
149
|
await this.createPairing();
|
|
139
150
|
}
|
|
140
|
-
this.spawnTerminal(DEFAULT_TERMINAL_ID, process.cwd());
|
|
151
|
+
await this.spawnTerminal(DEFAULT_TERMINAL_ID, process.cwd());
|
|
141
152
|
this.connectGateway();
|
|
142
153
|
}
|
|
143
154
|
|
|
@@ -241,7 +252,9 @@ export class BridgeSession {
|
|
|
241
252
|
this.log(
|
|
242
253
|
`recv ${envelope.type}${envelope.seq !== undefined ? ` seq=${envelope.seq}` : ""}`,
|
|
243
254
|
);
|
|
244
|
-
this.handleMessage(envelope)
|
|
255
|
+
this.handleMessage(envelope).catch((err) => {
|
|
256
|
+
this.log(`handleMessage error: ${err}`);
|
|
257
|
+
});
|
|
245
258
|
});
|
|
246
259
|
|
|
247
260
|
this.socket.on("close", (code, reasonBuffer) => {
|
|
@@ -261,7 +274,7 @@ export class BridgeSession {
|
|
|
261
274
|
});
|
|
262
275
|
}
|
|
263
276
|
|
|
264
|
-
private handleMessage(envelope: Envelope): void {
|
|
277
|
+
private async handleMessage(envelope: Envelope): Promise<void> {
|
|
265
278
|
const tid = envelope.terminalId ?? DEFAULT_TERMINAL_ID;
|
|
266
279
|
switch (envelope.type) {
|
|
267
280
|
case "terminal.input": {
|
|
@@ -292,13 +305,23 @@ export class BridgeSession {
|
|
|
292
305
|
}));
|
|
293
306
|
} else {
|
|
294
307
|
const newId = `term-${Date.now()}-${Math.random().toString(36).slice(2, 6)}`;
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
308
|
+
try {
|
|
309
|
+
await this.spawnTerminal(newId, normalizedCwd, p.provider);
|
|
310
|
+
this.send(createEnvelope({
|
|
311
|
+
type: "terminal.spawned",
|
|
312
|
+
sessionId: this.sessionId,
|
|
313
|
+
terminalId: newId,
|
|
314
|
+
payload: { terminalId: newId, cwd: normalizedCwd, projectName: basename(normalizedCwd) },
|
|
315
|
+
}));
|
|
316
|
+
} catch (err) {
|
|
317
|
+
this.log(`failed to spawn terminal ${newId}: ${err}`);
|
|
318
|
+
this.send(createEnvelope({
|
|
319
|
+
type: "terminal.exit",
|
|
320
|
+
sessionId: this.sessionId,
|
|
321
|
+
terminalId: newId,
|
|
322
|
+
payload: { exitCode: 1, signal: 0 },
|
|
323
|
+
}));
|
|
324
|
+
}
|
|
302
325
|
}
|
|
303
326
|
this.sendTerminalList();
|
|
304
327
|
break;
|
|
@@ -436,17 +459,32 @@ export class BridgeSession {
|
|
|
436
459
|
}
|
|
437
460
|
}
|
|
438
461
|
|
|
439
|
-
private spawnTerminal(terminalId: string, cwd: string, providerOverride?: string): void {
|
|
462
|
+
private async spawnTerminal(terminalId: string, cwd: string, providerOverride?: string): Promise<void> {
|
|
440
463
|
const cleanEnv: Record<string, string> = {};
|
|
441
464
|
for (const [k, v] of Object.entries(this.options.providerConfig.env)) {
|
|
442
465
|
if (v !== undefined) cleanEnv[k] = v;
|
|
443
466
|
}
|
|
444
467
|
|
|
468
|
+
const provider = providerOverride ?? this.options.providerConfig.provider;
|
|
469
|
+
const args = [...this.options.providerConfig.args];
|
|
470
|
+
|
|
471
|
+
// For Claude provider: set up hook server for structured status
|
|
472
|
+
let hookServer: http.Server | undefined;
|
|
473
|
+
let hookPort: number | undefined;
|
|
474
|
+
let hookConfigPath: string | undefined;
|
|
475
|
+
|
|
476
|
+
if (provider === "claude") {
|
|
477
|
+
const { server, port, configPath } = await this.setupHookServer(terminalId, args);
|
|
478
|
+
hookServer = server;
|
|
479
|
+
hookPort = port;
|
|
480
|
+
hookConfigPath = configPath;
|
|
481
|
+
}
|
|
482
|
+
|
|
445
483
|
const term: TerminalInstance = {
|
|
446
484
|
id: terminalId,
|
|
447
485
|
pty: pty.spawn(
|
|
448
486
|
this.options.providerConfig.command,
|
|
449
|
-
|
|
487
|
+
args,
|
|
450
488
|
{
|
|
451
489
|
name: "xterm-256color",
|
|
452
490
|
cols: this.options.cols,
|
|
@@ -457,10 +495,13 @@ export class BridgeSession {
|
|
|
457
495
|
),
|
|
458
496
|
cwd,
|
|
459
497
|
projectName: basename(cwd),
|
|
460
|
-
provider
|
|
498
|
+
provider,
|
|
461
499
|
scrollback: new ScrollbackBuffer(1000),
|
|
462
500
|
outputSeq: 0,
|
|
463
501
|
status: "running",
|
|
502
|
+
hookServer,
|
|
503
|
+
hookPort,
|
|
504
|
+
hookConfigPath,
|
|
464
505
|
};
|
|
465
506
|
|
|
466
507
|
term.pty.onData((data) => {
|
|
@@ -484,6 +525,7 @@ export class BridgeSession {
|
|
|
484
525
|
|
|
485
526
|
term.pty.onExit(({ exitCode, signal }) => {
|
|
486
527
|
term.status = "exited";
|
|
528
|
+
this.cleanupHookServer(term);
|
|
487
529
|
this.send(createEnvelope({
|
|
488
530
|
type: "terminal.exit",
|
|
489
531
|
sessionId: this.sessionId,
|
|
@@ -508,6 +550,175 @@ export class BridgeSession {
|
|
|
508
550
|
this.log(`spawned terminal ${terminalId} in ${cwd}`);
|
|
509
551
|
}
|
|
510
552
|
|
|
553
|
+
private async setupHookServer(terminalId: string, args: string[]): Promise<{
|
|
554
|
+
server: http.Server;
|
|
555
|
+
port: number;
|
|
556
|
+
configPath: string;
|
|
557
|
+
}> {
|
|
558
|
+
const server = http.createServer((req, res) => {
|
|
559
|
+
if (req.method !== "POST" || req.url !== "/hook") {
|
|
560
|
+
res.writeHead(404);
|
|
561
|
+
res.end();
|
|
562
|
+
return;
|
|
563
|
+
}
|
|
564
|
+
let body = "";
|
|
565
|
+
req.on("data", (chunk: Buffer) => { body += chunk.toString(); });
|
|
566
|
+
req.on("end", () => {
|
|
567
|
+
res.writeHead(200);
|
|
568
|
+
res.end("ok");
|
|
569
|
+
try {
|
|
570
|
+
const event = JSON.parse(body);
|
|
571
|
+
this.handleHookEvent(terminalId, event);
|
|
572
|
+
} catch (e) {
|
|
573
|
+
this.log(`hook parse error: ${e}`);
|
|
574
|
+
}
|
|
575
|
+
});
|
|
576
|
+
});
|
|
577
|
+
|
|
578
|
+
// Listen on random port — await binding before reading address
|
|
579
|
+
const port = await new Promise<number>((resolve, reject) => {
|
|
580
|
+
server.listen(0, "127.0.0.1", () => {
|
|
581
|
+
const addr = server.address() as { port: number };
|
|
582
|
+
resolve(addr.port);
|
|
583
|
+
});
|
|
584
|
+
server.on("error", reject);
|
|
585
|
+
});
|
|
586
|
+
this.log(`hook server for ${terminalId} listening on port ${port}`);
|
|
587
|
+
|
|
588
|
+
// Write temporary hook config
|
|
589
|
+
const configPath = join(tmpdir(), `linkshell-hooks-${terminalId}.json`);
|
|
590
|
+
const curlCmd = `curl -s -X POST http://127.0.0.1:${port}/hook -H 'Content-Type: application/json' -d "$(cat)"`;
|
|
591
|
+
const hookEntry = { hooks: [{ type: "command", command: curlCmd }] };
|
|
592
|
+
const config = {
|
|
593
|
+
hooks: {
|
|
594
|
+
PreToolUse: [hookEntry],
|
|
595
|
+
PostToolUse: [hookEntry],
|
|
596
|
+
PostToolUseFailure: [hookEntry],
|
|
597
|
+
Stop: [hookEntry],
|
|
598
|
+
PermissionRequest: [hookEntry],
|
|
599
|
+
},
|
|
600
|
+
};
|
|
601
|
+
writeFileSync(configPath, JSON.stringify(config));
|
|
602
|
+
this.log(`hook config written to ${configPath}`);
|
|
603
|
+
|
|
604
|
+
// Inject --settings into Claude CLI args
|
|
605
|
+
args.push("--settings", configPath);
|
|
606
|
+
|
|
607
|
+
return { server, port, configPath };
|
|
608
|
+
}
|
|
609
|
+
|
|
610
|
+
private handleHookEvent(terminalId: string, event: Record<string, unknown>): void {
|
|
611
|
+
const hookName = event.hook_event_name as string | undefined;
|
|
612
|
+
if (!hookName) return;
|
|
613
|
+
|
|
614
|
+
let phase: string;
|
|
615
|
+
let toolName: string | undefined;
|
|
616
|
+
let toolInput: string | undefined;
|
|
617
|
+
let permissionRequest: string | undefined;
|
|
618
|
+
let summary: string | undefined;
|
|
619
|
+
|
|
620
|
+
switch (hookName) {
|
|
621
|
+
case "PreToolUse":
|
|
622
|
+
phase = "tool_use";
|
|
623
|
+
toolName = event.tool_name as string | undefined;
|
|
624
|
+
if (event.tool_input && typeof event.tool_input === "object") {
|
|
625
|
+
const input = event.tool_input as Record<string, unknown>;
|
|
626
|
+
toolInput = JSON.stringify(input).slice(0, 200);
|
|
627
|
+
}
|
|
628
|
+
break;
|
|
629
|
+
case "PostToolUse":
|
|
630
|
+
phase = "thinking";
|
|
631
|
+
toolName = event.tool_name as string | undefined;
|
|
632
|
+
// Pop permission stack: tool completed, remove matching request
|
|
633
|
+
{
|
|
634
|
+
const stack = this.permissionStacks.get(terminalId);
|
|
635
|
+
if (stack && stack.length > 0) {
|
|
636
|
+
const idx = stack.findIndex((r) => r.toolName === toolName);
|
|
637
|
+
if (idx >= 0) stack.splice(idx, 1);
|
|
638
|
+
if (stack.length === 0) this.permissionStacks.delete(terminalId);
|
|
639
|
+
}
|
|
640
|
+
}
|
|
641
|
+
break;
|
|
642
|
+
case "PostToolUseFailure":
|
|
643
|
+
phase = "error";
|
|
644
|
+
toolName = event.tool_name as string | undefined;
|
|
645
|
+
// Pop permission stack on failure too
|
|
646
|
+
{
|
|
647
|
+
const stack = this.permissionStacks.get(terminalId);
|
|
648
|
+
if (stack && stack.length > 0) {
|
|
649
|
+
const idx = stack.findIndex((r) => r.toolName === toolName);
|
|
650
|
+
if (idx >= 0) stack.splice(idx, 1);
|
|
651
|
+
if (stack.length === 0) this.permissionStacks.delete(terminalId);
|
|
652
|
+
}
|
|
653
|
+
}
|
|
654
|
+
break;
|
|
655
|
+
case "Stop":
|
|
656
|
+
phase = "idle";
|
|
657
|
+
if (event.stop_reason) summary = String(event.stop_reason);
|
|
658
|
+
// Clear all pending permissions on stop
|
|
659
|
+
this.permissionStacks.delete(terminalId);
|
|
660
|
+
break;
|
|
661
|
+
case "PermissionRequest":
|
|
662
|
+
phase = "waiting";
|
|
663
|
+
toolName = event.tool_name as string | undefined;
|
|
664
|
+
if (event.tool_input && typeof event.tool_input === "object") {
|
|
665
|
+
const input = event.tool_input as Record<string, unknown>;
|
|
666
|
+
permissionRequest = JSON.stringify(input).slice(0, 300);
|
|
667
|
+
}
|
|
668
|
+
// Push to permission stack
|
|
669
|
+
{
|
|
670
|
+
const requestId = `pr-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`;
|
|
671
|
+
if (!this.permissionStacks.has(terminalId)) {
|
|
672
|
+
this.permissionStacks.set(terminalId, []);
|
|
673
|
+
}
|
|
674
|
+
this.permissionStacks.get(terminalId)!.push({
|
|
675
|
+
requestId,
|
|
676
|
+
toolName: toolName ?? "unknown",
|
|
677
|
+
toolInput: toolInput ?? (permissionRequest ?? ""),
|
|
678
|
+
permissionRequest: permissionRequest ?? "",
|
|
679
|
+
timestamp: Date.now(),
|
|
680
|
+
});
|
|
681
|
+
}
|
|
682
|
+
break;
|
|
683
|
+
default:
|
|
684
|
+
return;
|
|
685
|
+
}
|
|
686
|
+
|
|
687
|
+
this.log(`hook event: ${hookName} → phase=${phase} tool=${toolName ?? "none"}`);
|
|
688
|
+
|
|
689
|
+
// Build topPermission from stack
|
|
690
|
+
const stack = this.permissionStacks.get(terminalId);
|
|
691
|
+
const topPermission = stack && stack.length > 0 ? stack[stack.length - 1] : undefined;
|
|
692
|
+
const pendingPermissionCount = stack?.length ?? 0;
|
|
693
|
+
|
|
694
|
+
this.send(createEnvelope({
|
|
695
|
+
type: "terminal.status",
|
|
696
|
+
sessionId: this.sessionId,
|
|
697
|
+
terminalId,
|
|
698
|
+
payload: {
|
|
699
|
+
phase,
|
|
700
|
+
...(toolName && { toolName }),
|
|
701
|
+
...(toolInput && { toolInput }),
|
|
702
|
+
...(permissionRequest && { permissionRequest }),
|
|
703
|
+
...(summary && { summary }),
|
|
704
|
+
...(topPermission && { topPermission }),
|
|
705
|
+
...(pendingPermissionCount > 0 && { pendingPermissionCount }),
|
|
706
|
+
},
|
|
707
|
+
}));
|
|
708
|
+
}
|
|
709
|
+
|
|
710
|
+
private cleanupHookServer(term: TerminalInstance): void {
|
|
711
|
+
if (term.hookServer) {
|
|
712
|
+
term.hookServer.close();
|
|
713
|
+
term.hookServer = undefined;
|
|
714
|
+
this.log(`hook server closed for ${term.id}`);
|
|
715
|
+
}
|
|
716
|
+
if (term.hookConfigPath) {
|
|
717
|
+
try { unlinkSync(term.hookConfigPath); } catch { /* ignore */ }
|
|
718
|
+
term.hookConfigPath = undefined;
|
|
719
|
+
}
|
|
720
|
+
}
|
|
721
|
+
|
|
511
722
|
private send(message: Envelope): void {
|
|
512
723
|
if (!this.socket || this.socket.readyState !== WebSocket.OPEN) {
|
|
513
724
|
return;
|
|
@@ -640,6 +851,7 @@ export class BridgeSession {
|
|
|
640
851
|
this.socket?.close();
|
|
641
852
|
this.socket = undefined;
|
|
642
853
|
for (const term of this.terminals.values()) {
|
|
854
|
+
this.cleanupHookServer(term);
|
|
643
855
|
if (term.status === "running") term.pty.kill();
|
|
644
856
|
}
|
|
645
857
|
this.terminals.clear();
|