@linkshell/host 0.1.0 → 0.1.2

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 (78) hide show
  1. package/dist/host/src/carry.d.ts +15 -0
  2. package/dist/host/src/carry.js +83 -0
  3. package/dist/host/src/carry.js.map +1 -0
  4. package/dist/host/src/drivers/acp/driver.d.ts +21 -3
  5. package/dist/host/src/drivers/acp/driver.js +99 -13
  6. package/dist/host/src/drivers/acp/driver.js.map +1 -1
  7. package/dist/host/src/drivers/acp/mapper.d.ts +5 -1
  8. package/dist/host/src/drivers/acp/mapper.js +58 -6
  9. package/dist/host/src/drivers/acp/mapper.js.map +1 -1
  10. package/dist/host/src/drivers/claude/driver.d.ts +76 -8
  11. package/dist/host/src/drivers/claude/driver.js +510 -29
  12. package/dist/host/src/drivers/claude/driver.js.map +1 -1
  13. package/dist/host/src/drivers/claude/holders.d.ts +9 -0
  14. package/dist/host/src/drivers/claude/holders.js +61 -0
  15. package/dist/host/src/drivers/claude/holders.js.map +1 -0
  16. package/dist/host/src/drivers/claude/transcript.d.ts +108 -64
  17. package/dist/host/src/drivers/claude/transcript.js +260 -22
  18. package/dist/host/src/drivers/claude/transcript.js.map +1 -1
  19. package/dist/host/src/drivers/codex/commands.d.ts +27 -0
  20. package/dist/host/src/drivers/codex/commands.js +23 -0
  21. package/dist/host/src/drivers/codex/commands.js.map +1 -0
  22. package/dist/host/src/drivers/codex/driver.d.ts +21 -1
  23. package/dist/host/src/drivers/codex/driver.js +140 -1
  24. package/dist/host/src/drivers/codex/driver.js.map +1 -1
  25. package/dist/host/src/drivers/codex/mapper.d.ts +4 -0
  26. package/dist/host/src/drivers/codex/mapper.js +29 -5
  27. package/dist/host/src/drivers/codex/mapper.js.map +1 -1
  28. package/dist/host/src/drivers/types.d.ts +45 -4
  29. package/dist/host/src/fs.d.ts +26 -4
  30. package/dist/host/src/fs.js +71 -17
  31. package/dist/host/src/fs.js.map +1 -1
  32. package/dist/host/src/gateway.d.ts +3 -0
  33. package/dist/host/src/gateway.js +10 -1
  34. package/dist/host/src/gateway.js.map +1 -1
  35. package/dist/host/src/host.d.ts +7 -3
  36. package/dist/host/src/host.js +53 -21
  37. package/dist/host/src/host.js.map +1 -1
  38. package/dist/host/src/hub.d.ts +98 -14
  39. package/dist/host/src/hub.js +639 -27
  40. package/dist/host/src/hub.js.map +1 -1
  41. package/dist/host/src/index.d.ts +1 -1
  42. package/dist/host/src/index.js +1 -1
  43. package/dist/host/src/index.js.map +1 -1
  44. package/dist/host/src/legacy.d.ts +7 -0
  45. package/dist/host/src/legacy.js +36 -0
  46. package/dist/host/src/legacy.js.map +1 -0
  47. package/dist/host/src/rpc/server.d.ts +4 -2
  48. package/dist/host/src/rpc/server.js +62 -5
  49. package/dist/host/src/rpc/server.js.map +1 -1
  50. package/dist/host/src/screen.d.ts +11 -0
  51. package/dist/host/src/screen.js +54 -2
  52. package/dist/host/src/screen.js.map +1 -1
  53. package/dist/host/src/shell-env.d.ts +6 -0
  54. package/dist/host/src/shell-env.js +48 -0
  55. package/dist/host/src/shell-env.js.map +1 -1
  56. package/dist/host/src/slim.d.ts +17 -0
  57. package/dist/host/src/slim.js +66 -0
  58. package/dist/host/src/slim.js.map +1 -0
  59. package/dist/host/src/store.d.ts +81 -3
  60. package/dist/host/src/store.js +249 -16
  61. package/dist/host/src/store.js.map +1 -1
  62. package/dist/host/src/terminals.js +19 -4
  63. package/dist/host/src/terminals.js.map +1 -1
  64. package/dist/host/src/worktrees.d.ts +36 -0
  65. package/dist/host/src/worktrees.js +96 -0
  66. package/dist/host/src/worktrees.js.map +1 -0
  67. package/dist/host/tsconfig.tsbuildinfo +1 -1
  68. package/dist/wire/src/model.d.ts +195 -0
  69. package/dist/wire/src/model.js +68 -0
  70. package/dist/wire/src/model.js.map +1 -1
  71. package/dist/wire/src/relay-client.d.ts +2 -0
  72. package/dist/wire/src/relay-client.js +12 -0
  73. package/dist/wire/src/relay-client.js.map +1 -1
  74. package/dist/wire/src/rpc.d.ts +6543 -160
  75. package/dist/wire/src/rpc.js +154 -6
  76. package/dist/wire/src/rpc.js.map +1 -1
  77. package/dist/wire/src/updates.d.ts +79 -79
  78. package/package.json +3 -2
@@ -0,0 +1,15 @@
1
+ import type { SessionEvent, SessionUpdate } from "@linkshell/wire";
2
+ /** What of a session's log is the conversation itself: what was said and done, not state that was true then. */
3
+ export declare function isConversation(update: SessionUpdate): boolean;
4
+ /**
5
+ * An event as the fork's log keeps it. Its ids are the original session's: an
6
+ * agent that numbers its messages per session would give the fork's first reply
7
+ * the id of the original's first, so copied ones are set apart. Nothing is left
8
+ * open either — a call still running when the fork was made isn't running here.
9
+ */
10
+ export declare function copied(update: SessionUpdate): SessionUpdate;
11
+ /**
12
+ * The conversation as text for the agent: what the user and the agent said,
13
+ * and one line per thing the agent did. The latest part, when it is too long.
14
+ */
15
+ export declare function conversationDigest(events: SessionEvent[], maxBytes?: number): string;
@@ -0,0 +1,83 @@
1
+ // A fork for agents that can't fork a session themselves: the new session
2
+ // shows the conversation so far (copied from our log) and the agent is told
3
+ // it, as text, ahead of the first message sent there.
4
+ /** What of a session's log is the conversation itself: what was said and done, not state that was true then. */
5
+ export function isConversation(update) {
6
+ switch (update.sessionUpdate) {
7
+ case "user_message_chunk":
8
+ case "agent_message_chunk":
9
+ case "agent_thought_chunk":
10
+ case "ls_message_done":
11
+ case "tool_call":
12
+ case "tool_call_update":
13
+ case "plan":
14
+ return true;
15
+ default:
16
+ return false;
17
+ }
18
+ }
19
+ /**
20
+ * An event as the fork's log keeps it. Its ids are the original session's: an
21
+ * agent that numbers its messages per session would give the fork's first reply
22
+ * the id of the original's first, so copied ones are set apart. Nothing is left
23
+ * open either — a call still running when the fork was made isn't running here.
24
+ */
25
+ export function copied(update) {
26
+ const mark = (id) => `fork:${id}`;
27
+ const next = { ...update };
28
+ if (typeof next.messageId === "string" && next.messageId)
29
+ next.messageId = mark(next.messageId);
30
+ if (typeof next.toolCallId === "string")
31
+ next.toolCallId = mark(next.toolCallId);
32
+ if (typeof next.parentToolCallId === "string")
33
+ next.parentToolCallId = mark(next.parentToolCallId);
34
+ if ((next.sessionUpdate === "tool_call" || next.sessionUpdate === "tool_call_update") && (next.status === "pending" || next.status === "in_progress")) {
35
+ next.status = "completed";
36
+ }
37
+ return next;
38
+ }
39
+ const MAX_MESSAGE = 6000;
40
+ function clip(text) {
41
+ return text.length > MAX_MESSAGE ? `${text.slice(0, MAX_MESSAGE)} …[cut]` : text;
42
+ }
43
+ /**
44
+ * The conversation as text for the agent: what the user and the agent said,
45
+ * and one line per thing the agent did. The latest part, when it is too long.
46
+ */
47
+ export function conversationDigest(events, maxBytes = 60_000) {
48
+ const entries = [];
49
+ const last = () => entries[entries.length - 1];
50
+ for (const { update } of events) {
51
+ if ("parentToolCallId" in update && update.parentToolCallId)
52
+ continue;
53
+ if (update.sessionUpdate === "user_message_chunk" || update.sessionUpdate === "agent_message_chunk") {
54
+ const label = update.sessionUpdate === "user_message_chunk" ? "User" : "Assistant";
55
+ const text = update.content.type === "text" ? update.content.text : update.content.type === "image" ? "[image]" : `[${update.content.name}]`;
56
+ const key = `${label}:${update.messageId ?? ""}`;
57
+ if (last()?.key === key)
58
+ last().text += text;
59
+ else
60
+ entries.push({ key, label, text });
61
+ }
62
+ else if (update.sessionUpdate === "tool_call") {
63
+ entries.push({ key: `tool:${update.toolCallId}`, label: "Tool", text: update.title });
64
+ }
65
+ }
66
+ const lines = entries.map((entry) => (entry.label === "Tool" ? `[did: ${clip(entry.text).slice(0, 300)}]` : `${entry.label}: ${clip(entry.text.trim())}`)).filter((line) => !/^(User|Assistant): $/.test(line));
67
+ let size = 0;
68
+ let from = lines.length;
69
+ while (from > 0 && size + Buffer.byteLength(lines[from - 1]) + 2 <= maxBytes) {
70
+ size += Buffer.byteLength(lines[from - 1]) + 2;
71
+ from -= 1;
72
+ }
73
+ const kept = lines.slice(from);
74
+ if (kept.length === 0)
75
+ return "";
76
+ return [
77
+ "This session continues an earlier conversation with the user, forked from another session. It is given here as a record of what was said and done; files may have changed since.",
78
+ ...(from > 0 ? ["(The beginning of the conversation is left out.)"] : []),
79
+ "",
80
+ kept.join("\n\n"),
81
+ ].join("\n");
82
+ }
83
+ //# sourceMappingURL=carry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"carry.js","sourceRoot":"","sources":["../../../src/carry.ts"],"names":[],"mappings":"AAEA,0EAA0E;AAC1E,4EAA4E;AAC5E,sDAAsD;AAEtD,gHAAgH;AAChH,MAAM,UAAU,cAAc,CAAC,MAAqB;IAClD,QAAQ,MAAM,CAAC,aAAa,EAAE,CAAC;QAC7B,KAAK,oBAAoB,CAAC;QAC1B,KAAK,qBAAqB,CAAC;QAC3B,KAAK,qBAAqB,CAAC;QAC3B,KAAK,iBAAiB,CAAC;QACvB,KAAK,WAAW,CAAC;QACjB,KAAK,kBAAkB,CAAC;QACxB,KAAK,MAAM;YACT,OAAO,IAAI,CAAC;QACd;YACE,OAAO,KAAK,CAAC;IACjB,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,MAAM,CAAC,MAAqB;IAC1C,MAAM,IAAI,GAAG,CAAC,EAAU,EAAE,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC;IAC1C,MAAM,IAAI,GAAG,EAAE,GAAG,MAAM,EAA6G,CAAC;IACtI,IAAI,OAAO,IAAI,CAAC,SAAS,KAAK,QAAQ,IAAI,IAAI,CAAC,SAAS;QAAE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAChG,IAAI,OAAO,IAAI,CAAC,UAAU,KAAK,QAAQ;QAAE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACjF,IAAI,OAAO,IAAI,CAAC,gBAAgB,KAAK,QAAQ;QAAE,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IACnG,IAAI,CAAC,IAAI,CAAC,aAAa,KAAK,WAAW,IAAI,IAAI,CAAC,aAAa,KAAK,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,KAAK,aAAa,CAAC,EAAE,CAAC;QACtJ,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC;IAC5B,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,WAAW,GAAG,IAAI,CAAC;AAEzB,SAAS,IAAI,CAAC,IAAY;IACxB,OAAO,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;AACnF,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAC,MAAsB,EAAE,QAAQ,GAAG,MAAM;IAC1E,MAAM,OAAO,GAAmD,EAAE,CAAC;IACnE,MAAM,IAAI,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC/C,KAAK,MAAM,EAAE,MAAM,EAAE,IAAI,MAAM,EAAE,CAAC;QAChC,IAAI,kBAAkB,IAAI,MAAM,IAAI,MAAM,CAAC,gBAAgB;YAAE,SAAS;QACtE,IAAI,MAAM,CAAC,aAAa,KAAK,oBAAoB,IAAI,MAAM,CAAC,aAAa,KAAK,qBAAqB,EAAE,CAAC;YACpG,MAAM,KAAK,GAAG,MAAM,CAAC,aAAa,KAAK,oBAAoB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC;YACnF,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC;YAC7I,MAAM,GAAG,GAAG,GAAG,KAAK,IAAI,MAAM,CAAC,SAAS,IAAI,EAAE,EAAE,CAAC;YACjD,IAAI,IAAI,EAAE,EAAE,GAAG,KAAK,GAAG;gBAAE,IAAI,EAAG,CAAC,IAAI,IAAI,IAAI,CAAC;;gBACzC,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1C,CAAC;aAAM,IAAI,MAAM,CAAC,aAAa,KAAK,WAAW,EAAE,CAAC;YAChD,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,QAAQ,MAAM,CAAC,UAAU,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;QACxF,CAAC;IACH,CAAC;IACD,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAChN,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,IAAI,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC;IACxB,OAAO,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,CAAE,CAAC,GAAG,CAAC,IAAI,QAAQ,EAAE,CAAC;QAC9E,IAAI,IAAI,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,CAAE,CAAC,GAAG,CAAC,CAAC;QAChD,IAAI,IAAI,CAAC,CAAC;IACZ,CAAC;IACD,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC/B,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACjC,OAAO;QACL,kLAAkL;QAClL,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,kDAAkD,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACzE,EAAE;QACF,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;KAClB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import { type AgentAuth, type AgentCapabilities, type AgentTier, type ContentBlock, type SessionUpdate } from "@linkshell/wire";
2
- import type { AgentDriver, AttachContext, DiscoveredSession, DriverHost, DriverStatus, HistoryItem } from "../types.js";
2
+ import type { AgentDriver, AttachContext, DiscoveredSession, DriverHost, DriverStatus, ForkOptions, HistoryItem } from "../types.js";
3
3
  import { AcpConnection } from "./connection.js";
4
4
  import { AcpItemTracker, type SourcedConfigOption } from "./mapper.js";
5
5
  export interface AcpAgentSpec {
@@ -22,9 +22,14 @@ export interface AcpAgentSpec {
22
22
  */
23
23
  discover?: boolean;
24
24
  }
25
+ /** `items` with the ones named in `ids` first, in that order; the rest keep theirs. */
26
+ export declare function inOrder<T extends {
27
+ clientMessageId: string;
28
+ }>(items: T[], ids: string[]): T[];
25
29
  interface PendingPrompt {
26
30
  content: ContentBlock[];
27
31
  clientMessageId: string;
32
+ context?: string;
28
33
  }
29
34
  export interface AcpSessionState {
30
35
  cwd: string;
@@ -60,6 +65,8 @@ export declare class AcpDriver implements AgentDriver {
60
65
  readonly tier: AgentTier;
61
66
  capabilities: AgentCapabilities;
62
67
  protected host?: DriverHost;
68
+ /** Set when the agent refused a session for want of a login (ACP auth_required). */
69
+ private signedOut?;
63
70
  protected connection?: AcpConnection;
64
71
  protected current: DriverStatus;
65
72
  protected readonly sessions: Map<string, AcpSessionState>;
@@ -77,14 +84,18 @@ export declare class AcpDriver implements AgentDriver {
77
84
  start(host: DriverHost): Promise<DriverStatus>;
78
85
  stop(): Promise<void>;
79
86
  listSessions(limit: number): Promise<DiscoveredSession[]>;
87
+ /** ACP's session/fork, for agents that offer it: the whole conversation, in `cwd`. */
88
+ fork(nativeId: string, options: ForkOptions): Promise<DiscoveredSession>;
80
89
  createSession(options: {
81
90
  cwd: string;
82
91
  model?: string;
83
92
  }): Promise<DiscoveredSession>;
84
93
  attach(nativeId: string, context: AttachContext): Promise<HistoryItem[]>;
85
94
  detach(nativeId: string): Promise<void>;
86
- prompt(nativeId: string, content: ContentBlock[], clientMessageId: string): Promise<"started" | "steered" | "queued">;
95
+ prompt(nativeId: string, content: ContentBlock[], clientMessageId: string, context?: string): Promise<"started" | "steered" | "queued">;
87
96
  cancel(nativeId: string): Promise<void>;
97
+ /** Stops the running turn only: the first queued message starts as soon as it has ended. */
98
+ sendQueuedNow(nativeId: string): Promise<void>;
88
99
  respondPermission(nativeId: string, requestId: string, optionId: string): Promise<void>;
89
100
  setConfig(nativeId: string, optionId: string, value: string): Promise<void>;
90
101
  protected detectVersion(): Promise<string | undefined>;
@@ -103,8 +114,15 @@ export declare class AcpDriver implements AgentDriver {
103
114
  private onRequest;
104
115
  private cancelPermissions;
105
116
  private echoUserMessage;
106
- protected startTurn(nativeId: string, state: AcpSessionState, content: ContentBlock[], clientMessageId: string): void;
117
+ protected startTurn(nativeId: string, state: AcpSessionState, content: ContentBlock[], clientMessageId: string, context?: string): void;
107
118
  private sendPrompt;
119
+ /** The agent's own delete, when it has one (ACP session/delete). */
120
+ delete(nativeId: string): Promise<void>;
121
+ /** ACP's auth_required, said the way the app says it for Claude and Codex. */
122
+ private signInError;
123
+ unqueue(nativeId: string, clientMessageId: string): boolean;
124
+ reorderQueue(nativeId: string, clientMessageIds: string[]): void;
125
+ private reportQueue;
108
126
  protected rpc<T = unknown>(method: string, params: unknown, timeoutMs?: number): Promise<T>;
109
127
  }
110
128
  export {};
@@ -2,8 +2,16 @@ import { execFile } from "node:child_process";
2
2
  import { promisify } from "node:util";
3
3
  import { RpcError, } from "@linkshell/wire";
4
4
  import { AcpConnection } from "./connection.js";
5
- import { AcpItemTracker, mapPermissionRequest, normalizeAcpUpdate, toAcpPrompt, toConfigOptions, toHistory, toStopReason, } from "./mapper.js";
5
+ import { AcpItemTracker, mapPermissionRequest, normalizeAcpUpdate, toAcpPrompt, withContext, toConfigOptions, toHistory, toStopReason, } from "./mapper.js";
6
6
  const execFileAsync = promisify(execFile);
7
+ /** `items` with the ones named in `ids` first, in that order; the rest keep theirs. */
8
+ export function inOrder(items, ids) {
9
+ const rank = new Map(ids.map((id, index) => [id, index]));
10
+ return items
11
+ .map((item, index) => ({ item, index }))
12
+ .sort((a, b) => (rank.get(a.item.clientMessageId) ?? ids.length) - (rank.get(b.item.clientMessageId) ?? ids.length) || a.index - b.index)
13
+ .map((entry) => entry.item);
14
+ }
7
15
  /** Turns agent failures into something a person can act on. */
8
16
  export function describeAgentError(label, message) {
9
17
  const lower = message.toLowerCase();
@@ -39,6 +47,8 @@ export class AcpDriver {
39
47
  modes: false,
40
48
  };
41
49
  host;
50
+ /** Set when the agent refused a session for want of a login (ACP auth_required). */
51
+ signedOut;
42
52
  connection;
43
53
  current = { installed: false };
44
54
  sessions = new Map();
@@ -60,7 +70,9 @@ export class AcpDriver {
60
70
  return { ...(this.options.env ?? process.env), ...this.spec.env };
61
71
  }
62
72
  async authStatus() {
63
- return this.spec.authStatus ? this.spec.authStatus(this.env) : { state: "unknown" };
73
+ if (this.spec.authStatus)
74
+ return this.spec.authStatus(this.env);
75
+ return this.signedOut ?? { state: "unknown" };
64
76
  }
65
77
  async start(host) {
66
78
  this.host = host;
@@ -101,11 +113,30 @@ export class AcpDriver {
101
113
  } while (cursor);
102
114
  return found;
103
115
  }
116
+ /** ACP's session/fork, for agents that offer it: the whole conversation, in `cwd`. */
117
+ async fork(nativeId, options) {
118
+ if (!this.connection?.alive)
119
+ await this.ensureStarted();
120
+ if (!this.connection?.capabilities.sessionCapabilities?.fork)
121
+ throw RpcError.app("not_supported", `${this.label} 不支持从会话分叉`);
122
+ if (options.upTo)
123
+ throw RpcError.app("not_supported", `${this.label} 只能分叉整个会话`);
124
+ const response = await this.rpc("session/fork", { sessionId: nativeId, cwd: options.cwd, mcpServers: [] });
125
+ const now = Date.now();
126
+ return { nativeId: response.sessionId, cwd: options.cwd, createdAt: now, updatedAt: now };
127
+ }
104
128
  async createSession(options) {
105
- const response = await this.rpc("session/new", {
106
- cwd: options.cwd,
107
- mcpServers: [],
108
- });
129
+ let response;
130
+ try {
131
+ response = await this.rpc("session/new", {
132
+ cwd: options.cwd,
133
+ mcpServers: [],
134
+ });
135
+ }
136
+ catch (error) {
137
+ throw this.signInError(error);
138
+ }
139
+ this.signedOut = undefined;
109
140
  const state = this.stateFor(response.sessionId, options.cwd);
110
141
  state.loaded = true;
111
142
  state.config = toConfigOptions(response);
@@ -163,7 +194,7 @@ export class AcpDriver {
163
194
  await this.rpc("session/close", { sessionId: nativeId }).catch(() => { });
164
195
  }
165
196
  }
166
- async prompt(nativeId, content, clientMessageId) {
197
+ async prompt(nativeId, content, clientMessageId, context) {
167
198
  const state = this.sessions.get(nativeId);
168
199
  if (!state?.loaded)
169
200
  throw RpcError.app("not_ready", "session is not open");
@@ -173,20 +204,31 @@ export class AcpDriver {
173
204
  if (state.turnActive) {
174
205
  if (this.capabilities.steer) {
175
206
  this.echoUserMessage(nativeId, content, clientMessageId);
176
- void this.sendPrompt(nativeId, state, prompt);
207
+ void this.sendPrompt(nativeId, state, withContext(prompt, context));
177
208
  return "steered";
178
209
  }
179
- state.queue.push({ content, clientMessageId });
210
+ state.queue.push({ content, clientMessageId, context });
211
+ this.reportQueue(nativeId, state);
180
212
  return "queued";
181
213
  }
182
- this.startTurn(nativeId, state, content, clientMessageId);
214
+ this.startTurn(nativeId, state, content, clientMessageId, context);
183
215
  return "started";
184
216
  }
185
217
  async cancel(nativeId) {
186
218
  const state = this.sessions.get(nativeId);
187
219
  if (!state)
188
220
  return;
221
+ // Stopping stops what's waiting too; the apps put queued text back in the composer.
189
222
  state.queue = [];
223
+ this.reportQueue(nativeId, state);
224
+ this.cancelPermissions(state);
225
+ this.connection?.notify("session/cancel", { sessionId: nativeId });
226
+ }
227
+ /** Stops the running turn only: the first queued message starts as soon as it has ended. */
228
+ async sendQueuedNow(nativeId) {
229
+ const state = this.sessions.get(nativeId);
230
+ if (!state?.turnActive || state.queue.length === 0)
231
+ return;
190
232
  this.cancelPermissions(state);
191
233
  this.connection?.notify("session/cancel", { sessionId: nativeId });
192
234
  }
@@ -395,11 +437,11 @@ export class AcpDriver {
395
437
  }
396
438
  this.closeMessage(nativeId);
397
439
  }
398
- startTurn(nativeId, state, content, clientMessageId) {
440
+ startTurn(nativeId, state, content, clientMessageId, context) {
399
441
  state.turnActive = true;
400
442
  this.echoUserMessage(nativeId, content, clientMessageId);
401
443
  this.emit(nativeId, { sessionUpdate: "ls_turn", state: "started" });
402
- void this.sendPrompt(nativeId, state, toAcpPrompt(content));
444
+ void this.sendPrompt(nativeId, state, withContext(toAcpPrompt(content), context));
403
445
  }
404
446
  async sendPrompt(nativeId, state, prompt) {
405
447
  state.inflight += 1;
@@ -423,8 +465,52 @@ export class AcpDriver {
423
465
  this.cancelPermissions(state);
424
466
  this.emit(nativeId, { sessionUpdate: "ls_turn", state: "ended", stopReason });
425
467
  const next = state.queue.shift();
468
+ if (next)
469
+ this.reportQueue(nativeId, state);
426
470
  if (next && state.loaded)
427
- this.startTurn(nativeId, state, next.content, next.clientMessageId);
471
+ this.startTurn(nativeId, state, next.content, next.clientMessageId, next.context);
472
+ }
473
+ /** The agent's own delete, when it has one (ACP session/delete). */
474
+ async delete(nativeId) {
475
+ if (!this.connection?.alive)
476
+ await this.ensureStarted();
477
+ if (this.connection?.capabilities.sessionCapabilities?.delete)
478
+ await this.rpc("session/delete", { sessionId: nativeId });
479
+ this.sessions.delete(nativeId);
480
+ }
481
+ /** ACP's auth_required, said the way the app says it for Claude and Codex. */
482
+ signInError(error) {
483
+ // -32000 is also LinkShell's own application error (which carries an app code).
484
+ const agentAuth = error instanceof RpcError && error.code === -32000 && !error.appCode;
485
+ const message = error instanceof Error ? error.message : String(error);
486
+ if (!agentAuth && !/auth(entication)? required|not (logged|signed) in/i.test(message))
487
+ return error;
488
+ const hint = `${this.label} 未登录:在电脑终端运行 ${this.spec.command} 并登录`;
489
+ this.signedOut = { state: "missing", hint };
490
+ return RpcError.app("not_logged_in", `${hint},然后再试。`);
491
+ }
492
+ unqueue(nativeId, clientMessageId) {
493
+ const state = this.sessions.get(nativeId);
494
+ const index = state?.queue.findIndex((entry) => entry.clientMessageId === clientMessageId) ?? -1;
495
+ if (!state || index < 0)
496
+ return false;
497
+ state.queue.splice(index, 1);
498
+ this.reportQueue(nativeId, state);
499
+ return true;
500
+ }
501
+ reorderQueue(nativeId, clientMessageIds) {
502
+ const state = this.sessions.get(nativeId);
503
+ if (!state)
504
+ return;
505
+ state.queue = inOrder(state.queue, clientMessageIds);
506
+ this.reportQueue(nativeId, state);
507
+ }
508
+ reportQueue(nativeId, state) {
509
+ this.host?.queue(this.id, nativeId, state.queue.map((entry) => ({
510
+ clientMessageId: entry.clientMessageId,
511
+ text: entry.content.map((block) => (block.type === "text" ? block.text : "")).join("").trim(),
512
+ images: entry.content.filter((block) => block.type === "image").length,
513
+ })));
428
514
  }
429
515
  async rpc(method, params, timeoutMs) {
430
516
  if (!this.stopped && this.current.installed)
@@ -1 +1 @@
1
- {"version":3,"file":"driver.js","sourceRoot":"","sources":["../../../../../src/drivers/acp/driver.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"driver.js","sourceRoot":"","sources":["../../../../../src/drivers/acp/driver.ts"],"names":[],"mappings":"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"}
@@ -37,7 +37,11 @@ export declare class AcpItemTracker {
37
37
  * items. Pass the session's tracker so live messages that follow continue the
38
38
  * same numbering.
39
39
  */
40
- export declare function toHistory(updates: SessionUpdate[], tracker?: AcpItemTracker, timeOf?: (update: SessionUpdate) => number | undefined): HistoryItem[];
40
+ export declare function toHistory(updates: SessionUpdate[], tracker?: AcpItemTracker, timeOf?: (update: SessionUpdate) => number | undefined,
41
+ /** Receives what isn't a finished item yet (a turn under way: its start, tool calls still running), in order. */
42
+ unfinished?: SessionUpdate[]): HistoryItem[];
43
+ /** A prompt with `context` ahead of it: sent to the agent, not shown as what the user said. */
44
+ export declare function withContext(prompt: Json[], context: string | undefined): Json[];
41
45
  export declare function toAcpPrompt(content: ContentBlock[]): Json[];
42
46
  export declare function toStopReason(value: unknown): StopReason;
43
47
  export interface AcpPermissionRequest {
@@ -119,7 +119,11 @@ export function toConfigOptions(response) {
119
119
  options.push({ id: "model", name: "Model", category: "model", current: str(models.currentModelId) ?? values[0].value, values, source: "models" });
120
120
  }
121
121
  }
122
- return options;
122
+ // Copilot lists "auto" three times; a menu shows each choice once.
123
+ return options.map((option) => ({
124
+ ...option,
125
+ values: option.values.filter((value, index, all) => all.findIndex((other) => other.value === value.value) === index),
126
+ }));
123
127
  }
124
128
  /**
125
129
  * Agent-specific tool metadata some ACP adapters attach in `_meta`. Only
@@ -134,6 +138,9 @@ function toolDetail(update) {
134
138
  const claudeTool = str(obj(obj(update._meta)?.claudeCode)?.toolName);
135
139
  if (claudeTool)
136
140
  return describeClaudeTool(claudeTool, obj(update.rawInput) ?? {}).detail;
141
+ // Claude's adapter reports `/compact` (and compacting by itself) as a call of no tool.
142
+ if (update.kind === "think" && str(update.title) === "Compact conversation")
143
+ return { type: "compaction" };
137
144
  return undefined;
138
145
  }
139
146
  /** Maps one ACP `session/update` payload. Returns undefined for kinds LinkShell doesn't carry. */
@@ -151,7 +158,10 @@ export function normalizeAcpUpdate(raw) {
151
158
  const messageId = str(update.messageId);
152
159
  if (update.sessionUpdate === "user_message_chunk") {
153
160
  // A sub-agent's prompt is its spawning call's input; don't show it as the user's.
154
- return parentOf(update) ? undefined : { sessionUpdate: "user_message_chunk", messageId, content };
161
+ if (parentOf(update))
162
+ return undefined;
163
+ const said = withoutContext(content);
164
+ return said ? { sessionUpdate: "user_message_chunk", messageId, content: said } : undefined;
155
165
  }
156
166
  // Agent chunks without an id get one from the ItemTracker.
157
167
  return { sessionUpdate: update.sessionUpdate, messageId: messageId ?? "", content, parentToolCallId: parentOf(update) };
@@ -200,16 +210,22 @@ export function normalizeAcpUpdate(raw) {
200
210
  return [{ content: str(plan?.content), status, priority }];
201
211
  }),
202
212
  };
203
- case "available_commands_update":
213
+ case "available_commands_update": {
214
+ // Skills come with a paragraph each, and some agents list one twice: a
215
+ // device needs the name and a line about it.
216
+ const seen = new Set();
204
217
  return {
205
218
  sessionUpdate: "available_commands_update",
206
219
  availableCommands: arr(update.availableCommands).flatMap((entry) => {
207
220
  const command = obj(entry);
208
- if (!str(command?.name))
221
+ const name = str(command?.name);
222
+ if (!name || seen.has(name))
209
223
  return [];
210
- return [{ name: str(command?.name), description: str(command?.description) ?? "", hint: str(obj(command?.input)?.hint) }];
224
+ seen.add(name);
225
+ return [{ name, description: brief(str(command?.description) ?? ""), hint: str(obj(command?.input)?.hint) }];
211
226
  }),
212
227
  };
228
+ }
213
229
  case "current_mode_update":
214
230
  return str(update.currentModeId) ? { sessionUpdate: "current_mode_update", currentModeId: str(update.currentModeId) } : undefined;
215
231
  case "config_option_update": {
@@ -322,7 +338,9 @@ export class AcpItemTracker {
322
338
  * items. Pass the session's tracker so live messages that follow continue the
323
339
  * same numbering.
324
340
  */
325
- export function toHistory(updates, tracker = new AcpItemTracker(), timeOf) {
341
+ export function toHistory(updates, tracker = new AcpItemTracker(), timeOf,
342
+ /** Receives what isn't a finished item yet (a turn under way: its start, tool calls still running), in order. */
343
+ unfinished) {
326
344
  const tracked = [
327
345
  ...updates.flatMap((update) => {
328
346
  const ts = timeOf?.(update);
@@ -334,8 +352,18 @@ export function toHistory(updates, tracker = new AcpItemTracker(), timeOf) {
334
352
  let group = [];
335
353
  let groupTs;
336
354
  const toolGroups = new Map();
355
+ // Calls whose item is already in the history, and how many later words on each there have been.
356
+ const closed = new Map();
357
+ const position = new Map(tracked.map((entry, index) => [entry.update, index]));
337
358
  for (const { update, itemId, ts } of tracked) {
338
359
  if (update.sessionUpdate === "tool_call" || update.sessionUpdate === "tool_call_update") {
360
+ const late = closed.get(update.toolCallId);
361
+ if (late !== undefined && update.sessionUpdate === "tool_call_update") {
362
+ // More about a call that already ended (a background task reporting back): history too, not something under way.
363
+ closed.set(update.toolCallId, late + 1);
364
+ history.push({ itemId: `tool:${update.toolCallId}+${late + 1}`, updates: [update], ts });
365
+ continue;
366
+ }
339
367
  const entry = toolGroups.get(update.toolCallId) ?? { updates: [], ts };
340
368
  entry.updates.push(update);
341
369
  entry.ts ??= ts;
@@ -343,6 +371,7 @@ export function toHistory(updates, tracker = new AcpItemTracker(), timeOf) {
343
371
  if (itemId) {
344
372
  history.push({ itemId, updates: entry.updates, ts: entry.ts });
345
373
  toolGroups.delete(update.toolCallId);
374
+ closed.set(update.toolCallId, 0);
346
375
  }
347
376
  continue;
348
377
  }
@@ -354,8 +383,26 @@ export function toHistory(updates, tracker = new AcpItemTracker(), timeOf) {
354
383
  groupTs = undefined;
355
384
  }
356
385
  }
386
+ if (unfinished) {
387
+ const rest = [...group, ...[...toolGroups.values()].flatMap((entry) => entry.updates)];
388
+ unfinished.push(...rest.sort((a, b) => (position.get(a) ?? 0) - (position.get(b) ?? 0)));
389
+ }
357
390
  return history;
358
391
  }
392
+ const CONTEXT_OPEN = "<previous-conversation>";
393
+ const CONTEXT_CLOSE = "</previous-conversation>";
394
+ /** A prompt with `context` ahead of it: sent to the agent, not shown as what the user said. */
395
+ export function withContext(prompt, context) {
396
+ return context ? [{ type: "text", text: `${CONTEXT_OPEN}\n${context}\n${CONTEXT_CLOSE}` }, ...prompt] : prompt;
397
+ }
398
+ /** What the user said, when an agent replays a prompt that carried context. */
399
+ function withoutContext(content) {
400
+ if (content.type !== "text" || !content.text.startsWith(CONTEXT_OPEN))
401
+ return content;
402
+ const end = content.text.indexOf(CONTEXT_CLOSE);
403
+ const rest = end < 0 ? "" : content.text.slice(end + CONTEXT_CLOSE.length).trimStart();
404
+ return rest ? { type: "text", text: rest } : undefined;
405
+ }
359
406
  export function toAcpPrompt(content) {
360
407
  return content.flatMap((block) => {
361
408
  switch (block.type) {
@@ -408,4 +455,9 @@ export function mapPermissionRequest(params, requestId) {
408
455
  },
409
456
  };
410
457
  }
458
+ /** The first line or so of a description. */
459
+ function brief(text) {
460
+ const line = text.replace(/\s+/g, " ").trim();
461
+ return line.length > 160 ? `${line.slice(0, 159)}…` : line;
462
+ }
411
463
  //# sourceMappingURL=mapper.js.map