linkshell-cli 0.2.65 → 0.2.67

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. package/README.md +3 -0
  2. package/dist/cli/src/index.js +42 -2
  3. package/dist/cli/src/index.js.map +1 -1
  4. package/dist/cli/src/runtime/acp/acp-client.d.ts +41 -0
  5. package/dist/cli/src/runtime/acp/acp-client.js +102 -0
  6. package/dist/cli/src/runtime/acp/acp-client.js.map +1 -0
  7. package/dist/cli/src/runtime/acp/agent-session.d.ts +42 -0
  8. package/dist/cli/src/runtime/acp/agent-session.js +492 -0
  9. package/dist/cli/src/runtime/acp/agent-session.js.map +1 -0
  10. package/dist/cli/src/runtime/acp/json-rpc.d.ts +21 -0
  11. package/dist/cli/src/runtime/acp/json-rpc.js +150 -0
  12. package/dist/cli/src/runtime/acp/json-rpc.js.map +1 -0
  13. package/dist/cli/src/runtime/acp/provider-resolver.d.ts +13 -0
  14. package/dist/cli/src/runtime/acp/provider-resolver.js +22 -0
  15. package/dist/cli/src/runtime/acp/provider-resolver.js.map +1 -0
  16. package/dist/cli/src/runtime/bridge-session.d.ts +7 -0
  17. package/dist/cli/src/runtime/bridge-session.js +61 -0
  18. package/dist/cli/src/runtime/bridge-session.js.map +1 -1
  19. package/dist/cli/src/utils/daemon.d.ts +6 -0
  20. package/dist/cli/src/utils/daemon.js +22 -0
  21. package/dist/cli/src/utils/daemon.js.map +1 -1
  22. package/dist/cli/src/utils/keep-awake.d.ts +6 -0
  23. package/dist/cli/src/utils/keep-awake.js +48 -0
  24. package/dist/cli/src/utils/keep-awake.js.map +1 -0
  25. package/dist/cli/tsconfig.tsbuildinfo +1 -1
  26. package/dist/shared-protocol/src/index.d.ts +1076 -28
  27. package/dist/shared-protocol/src/index.js +108 -0
  28. package/dist/shared-protocol/src/index.js.map +1 -1
  29. package/package.json +4 -4
  30. package/src/index.ts +49 -2
  31. package/src/runtime/acp/acp-client.ts +133 -0
  32. package/src/runtime/acp/agent-session.ts +589 -0
  33. package/src/runtime/acp/json-rpc.ts +177 -0
  34. package/src/runtime/acp/provider-resolver.ts +37 -0
  35. package/src/runtime/bridge-session.ts +72 -0
  36. package/src/utils/daemon.ts +28 -0
  37. package/src/utils/keep-awake.ts +61 -0
@@ -0,0 +1,492 @@
1
+ import { createEnvelope, parseTypedPayload, } from "@linkshell/protocol";
2
+ import { AcpClient } from "./acp-client.js";
3
+ import { resolveAgentCommand } from "./provider-resolver.js";
4
+ const PERMISSION_TIMEOUT_MS = 5 * 60_000;
5
+ function id(prefix) {
6
+ return `${prefix}-${Date.now().toString(36)}-${Math.random().toString(36).slice(2, 8)}`;
7
+ }
8
+ function stringify(value) {
9
+ if (typeof value === "string")
10
+ return value;
11
+ try {
12
+ return JSON.stringify(value, null, 2);
13
+ }
14
+ catch {
15
+ return String(value);
16
+ }
17
+ }
18
+ function firstString(value, keys) {
19
+ for (const key of keys) {
20
+ const next = value[key];
21
+ if (typeof next === "string" && next.length > 0)
22
+ return next;
23
+ }
24
+ return undefined;
25
+ }
26
+ export class AgentSessionProxy {
27
+ input;
28
+ client;
29
+ agentSessionId;
30
+ status = "unavailable";
31
+ error;
32
+ initialized = false;
33
+ currentTurnId;
34
+ messages = [];
35
+ toolCalls = new Map();
36
+ pendingPermissions = new Map();
37
+ permissionWaiters = new Map();
38
+ permissionSources = new Map();
39
+ constructor(input) {
40
+ this.input = input;
41
+ }
42
+ async handleEnvelope(envelope) {
43
+ switch (envelope.type) {
44
+ case "agent.initialize":
45
+ await this.initialize();
46
+ this.sendSnapshot();
47
+ break;
48
+ case "agent.session.new": {
49
+ const payload = parseTypedPayload("agent.session.new", envelope.payload);
50
+ await this.ensureSession(payload.cwd ?? this.input.cwd, payload.mcpServers);
51
+ this.sendSnapshot();
52
+ break;
53
+ }
54
+ case "agent.session.load": {
55
+ const payload = parseTypedPayload("agent.session.load", envelope.payload);
56
+ await this.ensureClient();
57
+ if (!this.client)
58
+ return;
59
+ const result = await this.client.loadSession({
60
+ sessionId: payload.agentSessionId,
61
+ cwd: payload.cwd ?? this.input.cwd,
62
+ });
63
+ this.agentSessionId = this.extractSessionId(result) ?? payload.agentSessionId;
64
+ this.status = "idle";
65
+ this.error = undefined;
66
+ this.sendSnapshot();
67
+ break;
68
+ }
69
+ case "agent.session.list":
70
+ await this.sendSessionList();
71
+ break;
72
+ case "agent.prompt": {
73
+ const payload = parseTypedPayload("agent.prompt", envelope.payload);
74
+ await this.sendPrompt(payload);
75
+ break;
76
+ }
77
+ case "agent.cancel": {
78
+ const payload = parseTypedPayload("agent.cancel", envelope.payload);
79
+ this.cancelPendingPermissions();
80
+ this.client?.cancel({
81
+ sessionId: payload.agentSessionId ?? this.agentSessionId,
82
+ turnId: this.currentTurnId,
83
+ });
84
+ this.currentTurnId = undefined;
85
+ this.status = "idle";
86
+ this.sendUpdate({ kind: "status", status: "idle" });
87
+ break;
88
+ }
89
+ case "agent.permission.response": {
90
+ const payload = parseTypedPayload("agent.permission.response", envelope.payload);
91
+ const permission = this.pendingPermissions.get(payload.requestId);
92
+ this.pendingPermissions.delete(payload.requestId);
93
+ const selectedOptionId = payload.optionId ?? selectPermissionOption(permission, payload.outcome);
94
+ const waiter = this.permissionWaiters.get(payload.requestId);
95
+ if (waiter) {
96
+ clearTimeout(waiter.timer);
97
+ this.permissionWaiters.delete(payload.requestId);
98
+ waiter.resolve(formatPermissionResponse(this.permissionSources.get(payload.requestId), payload.outcome, selectedOptionId));
99
+ this.permissionSources.delete(payload.requestId);
100
+ }
101
+ else {
102
+ this.client?.respondPermission({
103
+ sessionId: payload.agentSessionId ?? this.agentSessionId,
104
+ requestId: payload.requestId,
105
+ outcome: payload.outcome === "cancelled" ? "deny" : payload.outcome,
106
+ optionId: selectedOptionId,
107
+ });
108
+ }
109
+ this.status = "running";
110
+ this.sendSnapshot();
111
+ break;
112
+ }
113
+ }
114
+ }
115
+ stop() {
116
+ this.client?.stop();
117
+ this.client = undefined;
118
+ }
119
+ async initialize() {
120
+ if (this.initialized) {
121
+ this.sendCapabilities();
122
+ return;
123
+ }
124
+ await this.ensureClient();
125
+ }
126
+ async ensureClient() {
127
+ if (this.client)
128
+ return;
129
+ const resolved = resolveAgentCommand({
130
+ provider: this.input.provider,
131
+ command: this.input.command,
132
+ });
133
+ if (!resolved) {
134
+ this.status = "unavailable";
135
+ this.error = `Agent GUI requires --agent-command for ${this.input.provider}`;
136
+ this.sendCapabilities();
137
+ return;
138
+ }
139
+ try {
140
+ this.client = new AcpClient({
141
+ command: resolved.command,
142
+ protocol: resolved.protocol,
143
+ framing: resolved.framing,
144
+ cwd: this.input.cwd,
145
+ onNotification: (method, params) => this.handleNotification(method, params),
146
+ onRequest: (method, params) => this.handleRequest(method, params),
147
+ onExit: (message) => this.handleExit(message),
148
+ });
149
+ await this.client.initialize();
150
+ this.initialized = true;
151
+ this.status = "idle";
152
+ this.error = undefined;
153
+ this.sendCapabilities();
154
+ }
155
+ catch (error) {
156
+ this.client?.stop();
157
+ this.client = undefined;
158
+ this.status = "error";
159
+ this.error = error instanceof Error ? error.message : String(error);
160
+ this.sendCapabilities();
161
+ }
162
+ }
163
+ async ensureSession(cwd, mcpServers) {
164
+ await this.ensureClient();
165
+ if (!this.client || this.agentSessionId)
166
+ return;
167
+ try {
168
+ const result = await this.client.newSession({ cwd, mcpServers });
169
+ this.agentSessionId = this.extractSessionId(result) ?? id("agent-session");
170
+ this.status = "idle";
171
+ this.error = undefined;
172
+ this.sendUpdate({ kind: "status", status: "idle" });
173
+ }
174
+ catch (error) {
175
+ this.status = "error";
176
+ this.error = error instanceof Error ? error.message : String(error);
177
+ this.sendUpdate({ kind: "error", error: this.error, status: "error" });
178
+ }
179
+ }
180
+ async sendPrompt(payload) {
181
+ await this.ensureSession(this.input.cwd);
182
+ if (!this.client || !this.agentSessionId)
183
+ return;
184
+ const content = payload.contentBlocks
185
+ .map((block) => (block.type === "text" ? block.text ?? "" : `[${block.mimeType ?? "image"} attachment]`))
186
+ .filter(Boolean)
187
+ .join("\n");
188
+ const userMessage = {
189
+ id: payload.clientMessageId,
190
+ role: "user",
191
+ content,
192
+ createdAt: Date.now(),
193
+ };
194
+ this.messages.push(userMessage);
195
+ this.status = "running";
196
+ this.sendUpdate({ kind: "message", message: userMessage, status: "running" });
197
+ try {
198
+ const result = await this.client.prompt({
199
+ sessionId: payload.agentSessionId ?? this.agentSessionId,
200
+ content: payload.contentBlocks,
201
+ clientMessageId: payload.clientMessageId,
202
+ });
203
+ this.currentTurnId = this.extractTurnId(result) ?? this.currentTurnId;
204
+ if (this.status === "running") {
205
+ this.status = "idle";
206
+ this.sendUpdate({ kind: "status", status: "idle" });
207
+ }
208
+ }
209
+ catch (error) {
210
+ this.status = "error";
211
+ this.error = error instanceof Error ? error.message : String(error);
212
+ this.sendUpdate({ kind: "error", error: this.error, status: "error" });
213
+ }
214
+ }
215
+ handleRequest(method, params) {
216
+ if (method === "session/request_permission" ||
217
+ method.endsWith("/requestApproval") ||
218
+ method === "mcpServer/elicitation/request" ||
219
+ method === "item/tool/requestUserInput") {
220
+ return this.handlePermission(params, true, method);
221
+ }
222
+ if (this.input.verbose) {
223
+ process.stderr.write(`[agent:request] unsupported ${method}\n`);
224
+ }
225
+ return {};
226
+ }
227
+ async sendSessionList() {
228
+ await this.ensureClient();
229
+ if (!this.client)
230
+ return;
231
+ try {
232
+ const result = await this.client.listSessions();
233
+ this.sendUpdate({
234
+ kind: "status",
235
+ status: "idle",
236
+ delta: stringify(result).slice(0, 4000),
237
+ });
238
+ }
239
+ catch (error) {
240
+ this.sendUpdate({
241
+ kind: "error",
242
+ error: error instanceof Error ? error.message : String(error),
243
+ status: "error",
244
+ });
245
+ }
246
+ }
247
+ handleNotification(method, params) {
248
+ if (this.input.verbose) {
249
+ process.stderr.write(`[agent] ${method} ${stringify(params).slice(0, 500)}\n`);
250
+ }
251
+ if (method === "initialized" ||
252
+ method.startsWith("account/") ||
253
+ method.startsWith("mcpServer/startupStatus/")) {
254
+ return;
255
+ }
256
+ if (method === "thread/started") {
257
+ this.agentSessionId = this.extractSessionId(params) ?? this.agentSessionId;
258
+ this.status = "idle";
259
+ this.sendSnapshot();
260
+ return;
261
+ }
262
+ if (method === "turn/started") {
263
+ this.currentTurnId = this.extractTurnId(params) ?? this.currentTurnId;
264
+ this.status = "running";
265
+ this.sendUpdate({ kind: "status", status: "running" });
266
+ return;
267
+ }
268
+ if (method === "turn/completed") {
269
+ this.currentTurnId = undefined;
270
+ this.status = "idle";
271
+ this.sendUpdate({ kind: "status", status: "idle" });
272
+ return;
273
+ }
274
+ if (method === "session/request_permission") {
275
+ this.handlePermission(params, false, method);
276
+ return;
277
+ }
278
+ if (method === "session/update" || method.startsWith("item/")) {
279
+ this.handleUpdate(params);
280
+ return;
281
+ }
282
+ this.handleUpdate({ method, params });
283
+ }
284
+ handlePermission(params, waitForResponse, source) {
285
+ const raw = typeof params === "object" && params ? params : {};
286
+ const requestId = firstString(raw, ["requestId", "id", "permissionId"]) ?? id("perm");
287
+ const rawToolCall = typeof raw.toolCall === "object" && raw.toolCall
288
+ ? raw.toolCall
289
+ : raw;
290
+ const permission = {
291
+ requestId,
292
+ toolName: firstString(rawToolCall, ["toolName", "tool", "name", "title", "kind"]),
293
+ toolInput: stringify(rawToolCall.input ?? rawToolCall.toolInput ?? rawToolCall),
294
+ context: firstString(raw, ["context", "description", "message", "title"]),
295
+ options: parsePermissionOptions(raw.options),
296
+ };
297
+ this.pendingPermissions.set(requestId, permission);
298
+ if (source)
299
+ this.permissionSources.set(requestId, source);
300
+ this.status = "waiting_permission";
301
+ this.input.send(createEnvelope({
302
+ type: "agent.permission.request",
303
+ sessionId: this.input.sessionId,
304
+ payload: { agentSessionId: this.agentSessionId, ...permission },
305
+ }));
306
+ if (!waitForResponse)
307
+ return;
308
+ return new Promise((resolve) => {
309
+ const timer = setTimeout(() => {
310
+ this.pendingPermissions.delete(requestId);
311
+ this.permissionWaiters.delete(requestId);
312
+ this.permissionSources.delete(requestId);
313
+ resolve(formatPermissionResponse(source, "cancelled", "cancelled"));
314
+ this.sendSnapshot();
315
+ }, PERMISSION_TIMEOUT_MS);
316
+ this.permissionWaiters.set(requestId, { resolve, timer });
317
+ });
318
+ }
319
+ handleUpdate(params) {
320
+ const raw = typeof params === "object" && params ? params : {};
321
+ const nested = typeof raw.params === "object" && raw.params ? raw.params : {};
322
+ const text = firstString(raw, ["delta", "text", "content", "message"]) ??
323
+ firstString(nested, ["delta", "text", "content", "message"]) ??
324
+ stringify(raw.update ?? raw.params ?? params);
325
+ const role = raw.role === "user" || raw.role === "system" ? raw.role : "assistant";
326
+ if (firstString(raw, ["toolName", "tool", "name"])) {
327
+ const toolCall = {
328
+ id: firstString(raw, ["toolCallId", "callId", "id"]) ?? id("tool"),
329
+ name: firstString(raw, ["toolName", "tool", "name"]) ?? "tool",
330
+ input: stringify(raw.input ?? raw.toolInput ?? ""),
331
+ output: stringify(raw.output ?? raw.result ?? ""),
332
+ status: raw.status === "completed" || raw.status === "failed" || raw.status === "running"
333
+ ? raw.status
334
+ : "running",
335
+ };
336
+ this.toolCalls.set(toolCall.id, toolCall);
337
+ this.sendUpdate({ kind: "tool_call", toolCall, status: "running" });
338
+ return;
339
+ }
340
+ const message = {
341
+ id: firstString(raw, ["messageId", "id"]) ?? id("msg"),
342
+ role,
343
+ content: text,
344
+ createdAt: Date.now(),
345
+ isStreaming: raw.done === false || raw.isStreaming === true,
346
+ };
347
+ this.messages.push(message);
348
+ if (this.messages.length > 100)
349
+ this.messages.shift();
350
+ this.status = raw.done === true ? "idle" : "running";
351
+ this.sendUpdate({
352
+ kind: "message",
353
+ message,
354
+ status: this.status === "running" ? "running" : "idle",
355
+ });
356
+ }
357
+ handleExit(message) {
358
+ this.cancelPendingPermissions();
359
+ this.status = "error";
360
+ this.error = message;
361
+ this.client = undefined;
362
+ this.sendUpdate({ kind: "error", error: message, status: "error" });
363
+ }
364
+ cancelPendingPermissions() {
365
+ for (const [requestId, waiter] of this.permissionWaiters) {
366
+ clearTimeout(waiter.timer);
367
+ waiter.resolve(formatPermissionResponse(this.permissionSources.get(requestId), "cancelled", "cancelled"));
368
+ this.pendingPermissions.delete(requestId);
369
+ this.permissionSources.delete(requestId);
370
+ }
371
+ this.permissionWaiters.clear();
372
+ }
373
+ sendCapabilities() {
374
+ const enabled = Boolean(this.client && this.initialized && !this.error);
375
+ this.input.send(createEnvelope({
376
+ type: "agent.capabilities",
377
+ sessionId: this.input.sessionId,
378
+ payload: {
379
+ enabled,
380
+ provider: this.input.provider,
381
+ protocolVersion: 1,
382
+ error: enabled ? undefined : this.error,
383
+ supportsSessionList: enabled,
384
+ supportsSessionLoad: enabled,
385
+ supportsImages: false,
386
+ supportsAudio: false,
387
+ supportsPermission: enabled,
388
+ supportsPlan: false,
389
+ supportsCancel: enabled,
390
+ },
391
+ }));
392
+ }
393
+ sendSnapshot() {
394
+ this.input.send(createEnvelope({
395
+ type: "agent.snapshot",
396
+ sessionId: this.input.sessionId,
397
+ payload: {
398
+ agentSessionId: this.agentSessionId,
399
+ messages: this.messages,
400
+ toolCalls: [...this.toolCalls.values()],
401
+ pendingPermissions: [...this.pendingPermissions.values()],
402
+ status: this.status,
403
+ error: this.error,
404
+ },
405
+ }));
406
+ }
407
+ sendUpdate(payload) {
408
+ this.input.send(createEnvelope({
409
+ type: "agent.update",
410
+ sessionId: this.input.sessionId,
411
+ payload: { agentSessionId: this.agentSessionId, ...payload },
412
+ }));
413
+ }
414
+ extractSessionId(value) {
415
+ if (!value || typeof value !== "object")
416
+ return undefined;
417
+ const raw = value;
418
+ if (raw.thread && typeof raw.thread === "object") {
419
+ const threadId = firstString(raw.thread, ["id", "threadId"]);
420
+ if (threadId)
421
+ return threadId;
422
+ }
423
+ return firstString(raw, ["sessionId", "id", "agentSessionId"]);
424
+ }
425
+ extractTurnId(value) {
426
+ if (!value || typeof value !== "object")
427
+ return undefined;
428
+ const raw = value;
429
+ if (raw.turn && typeof raw.turn === "object") {
430
+ const turnId = firstString(raw.turn, ["id", "turnId"]);
431
+ if (turnId)
432
+ return turnId;
433
+ }
434
+ return firstString(raw, ["turnId", "id"]);
435
+ }
436
+ }
437
+ function parsePermissionOptions(value) {
438
+ if (!Array.isArray(value)) {
439
+ return [
440
+ { id: "allow", label: "允许", kind: "allow" },
441
+ { id: "deny", label: "拒绝", kind: "deny" },
442
+ ];
443
+ }
444
+ const options = value
445
+ .map((entry, index) => {
446
+ const raw = typeof entry === "object" && entry ? entry : {};
447
+ const idValue = raw.optionId ?? raw.id ?? raw.kind ?? `option-${index + 1}`;
448
+ const labelValue = raw.name ?? raw.label ?? raw.kind ?? String(idValue);
449
+ const id = String(idValue);
450
+ const label = String(labelValue);
451
+ const normalized = `${id} ${label}`.toLowerCase();
452
+ const kind = normalized.includes("reject") || normalized.includes("deny")
453
+ ? "deny"
454
+ : normalized.includes("allow")
455
+ ? "allow"
456
+ : "other";
457
+ return { id, label, kind };
458
+ })
459
+ .filter((option) => option.id.length > 0 && option.label.length > 0);
460
+ return options.length > 0
461
+ ? options
462
+ : [
463
+ { id: "allow", label: "允许", kind: "allow" },
464
+ { id: "deny", label: "拒绝", kind: "deny" },
465
+ ];
466
+ }
467
+ function selectPermissionOption(permission, outcome) {
468
+ if (outcome === "cancelled")
469
+ return "cancelled";
470
+ const option = permission?.options.find((item) => item.kind === outcome);
471
+ return option?.id ?? outcome;
472
+ }
473
+ function formatPermissionResponse(source, outcome, optionId) {
474
+ if (source === "item/commandExecution/requestApproval" || source === "item/fileChange/requestApproval") {
475
+ return { decision: outcome === "allow" ? "accept" : outcome === "deny" ? "decline" : "cancel" };
476
+ }
477
+ if (source === "item/permissions/requestApproval") {
478
+ if (outcome === "allow") {
479
+ return {
480
+ permissions: { type: "managed", network: { enabled: true }, fileSystem: { type: "fullAccess" } },
481
+ scope: optionId.includes("session") ? "session" : "turn",
482
+ };
483
+ }
484
+ return { permissions: { type: "managed", network: { enabled: false }, fileSystem: { type: "readOnly" } } };
485
+ }
486
+ return {
487
+ outcome: outcome === "cancelled"
488
+ ? { outcome: "cancelled" }
489
+ : { outcome: "selected", optionId },
490
+ };
491
+ }
492
+ //# sourceMappingURL=agent-session.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-session.js","sourceRoot":"","sources":["../../../../../src/runtime/acp/agent-session.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import type { AgentFraming } from "./provider-resolver.js";
2
+ export declare class JsonRpcStdioTransport {
3
+ private readonly command;
4
+ private readonly framing;
5
+ private readonly onNotification;
6
+ private readonly onRequest;
7
+ private readonly onExit;
8
+ private child;
9
+ private nextId;
10
+ private pending;
11
+ private buffer;
12
+ constructor(command: string, framing: AgentFraming, onNotification: (method: string, params: unknown) => void, onRequest: (method: string, params: unknown) => Promise<unknown> | unknown, onExit: (message: string) => void);
13
+ start(cwd: string): void;
14
+ request(method: string, params?: unknown, timeoutMs?: number): Promise<unknown>;
15
+ notify(method: string, params?: unknown): void;
16
+ stop(): void;
17
+ private write;
18
+ private read;
19
+ private dispatch;
20
+ private failAll;
21
+ }