linkshell-cli 0.8.2 → 0.10.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.
Files changed (173) hide show
  1. package/README.md +11 -6
  2. package/dist/cli/src/commands/gateway.d.ts +2 -0
  3. package/dist/cli/src/commands/gateway.js +29 -0
  4. package/dist/cli/src/commands/gateway.js.map +1 -0
  5. package/dist/cli/src/commands/host.d.ts +4 -0
  6. package/dist/cli/src/commands/host.js +12 -2
  7. package/dist/cli/src/commands/host.js.map +1 -1
  8. package/dist/cli/src/commands/screen.d.ts +10 -0
  9. package/dist/cli/src/commands/screen.js +82 -74
  10. package/dist/cli/src/commands/screen.js.map +1 -1
  11. package/dist/cli/src/commands/setup.d.ts +11 -1
  12. package/dist/cli/src/commands/setup.js +102 -38
  13. package/dist/cli/src/commands/setup.js.map +1 -1
  14. package/dist/cli/src/index.js +28 -338
  15. package/dist/cli/src/index.js.map +1 -1
  16. package/dist/cli/src/utils/daemon.d.ts +0 -7
  17. package/dist/cli/src/utils/daemon.js +1 -18
  18. package/dist/cli/src/utils/daemon.js.map +1 -1
  19. package/dist/cli/tsconfig.tsbuildinfo +1 -1
  20. package/dist/gateway/src/accounts.d.ts +6 -0
  21. package/dist/gateway/src/accounts.js +32 -0
  22. package/dist/gateway/src/accounts.js.map +1 -0
  23. package/dist/gateway/src/index.d.ts +4 -0
  24. package/dist/gateway/src/index.js +5 -0
  25. package/dist/gateway/src/index.js.map +1 -0
  26. package/dist/gateway/src/main.d.ts +1 -0
  27. package/dist/gateway/src/main.js +57 -0
  28. package/dist/gateway/src/main.js.map +1 -0
  29. package/dist/gateway/src/rate-limit.d.ts +22 -0
  30. package/dist/gateway/src/rate-limit.js +66 -0
  31. package/dist/gateway/src/rate-limit.js.map +1 -0
  32. package/dist/gateway/src/relay.d.ts +84 -0
  33. package/dist/gateway/src/relay.js +434 -0
  34. package/dist/gateway/src/relay.js.map +1 -0
  35. package/dist/gateway/src/serve.d.ts +34 -0
  36. package/dist/gateway/src/serve.js +102 -0
  37. package/dist/gateway/src/serve.js.map +1 -0
  38. package/dist/gateway/src/store.d.ts +35 -0
  39. package/dist/gateway/src/store.js +109 -0
  40. package/dist/gateway/src/store.js.map +1 -0
  41. package/dist/gateway/src/subscription.d.ts +18 -0
  42. package/dist/gateway/src/subscription.js +46 -0
  43. package/dist/gateway/src/subscription.js.map +1 -0
  44. package/dist/host/src/drivers/claude/transcript.d.ts +23 -23
  45. package/dist/host/src/fs.d.ts +3 -3
  46. package/dist/host/src/input.d.ts +112 -27
  47. package/dist/host/src/input.js +214 -144
  48. package/dist/host/src/input.js.map +1 -1
  49. package/dist/host/src/rpc/server.js +1 -1
  50. package/dist/host/src/rpc/server.js.map +1 -1
  51. package/dist/host/src/screen-pacer.d.ts +25 -11
  52. package/dist/host/src/screen-pacer.js +28 -6
  53. package/dist/host/src/screen-pacer.js.map +1 -1
  54. package/dist/host/src/screen-viewer.d.ts +5 -0
  55. package/dist/host/src/screen-viewer.js +1231 -55
  56. package/dist/host/src/screen-viewer.js.map +1 -1
  57. package/dist/host/src/screen.d.ts +19 -10
  58. package/dist/host/src/screen.js +314 -108
  59. package/dist/host/src/screen.js.map +1 -1
  60. package/dist/host/src/terminals.d.ts +1 -1
  61. package/dist/host/src/terminals.js +1 -0
  62. package/dist/host/src/terminals.js.map +1 -1
  63. package/dist/wire/src/model.d.ts +6 -6
  64. package/dist/wire/src/relay.d.ts +8 -8
  65. package/dist/wire/src/rpc.d.ts +818 -818
  66. package/dist/wire/src/updates.d.ts +18 -18
  67. package/package.json +6 -15
  68. package/src/commands/gateway.ts +31 -0
  69. package/src/commands/host.ts +15 -2
  70. package/src/commands/screen.ts +78 -72
  71. package/src/commands/setup.ts +102 -60
  72. package/src/index.ts +29 -433
  73. package/src/utils/daemon.ts +2 -27
  74. package/dist/cli/src/config.d.ts +0 -14
  75. package/dist/cli/src/config.js +0 -23
  76. package/dist/cli/src/config.js.map +0 -1
  77. package/dist/cli/src/machine-id.d.ts +0 -6
  78. package/dist/cli/src/machine-id.js +0 -50
  79. package/dist/cli/src/machine-id.js.map +0 -1
  80. package/dist/cli/src/providers.d.ts +0 -13
  81. package/dist/cli/src/providers.js +0 -77
  82. package/dist/cli/src/providers.js.map +0 -1
  83. package/dist/cli/src/runtime/acp/acp-client.d.ts +0 -128
  84. package/dist/cli/src/runtime/acp/acp-client.js +0 -430
  85. package/dist/cli/src/runtime/acp/acp-client.js.map +0 -1
  86. package/dist/cli/src/runtime/acp/agent-process-discovery.d.ts +0 -48
  87. package/dist/cli/src/runtime/acp/agent-process-discovery.js +0 -278
  88. package/dist/cli/src/runtime/acp/agent-process-discovery.js.map +0 -1
  89. package/dist/cli/src/runtime/acp/agent-session.d.ts +0 -62
  90. package/dist/cli/src/runtime/acp/agent-session.js +0 -1081
  91. package/dist/cli/src/runtime/acp/agent-session.js.map +0 -1
  92. package/dist/cli/src/runtime/acp/agent-workspace.d.ts +0 -311
  93. package/dist/cli/src/runtime/acp/agent-workspace.js +0 -6083
  94. package/dist/cli/src/runtime/acp/agent-workspace.js.map +0 -1
  95. package/dist/cli/src/runtime/acp/claude-sdk-client.d.ts +0 -121
  96. package/dist/cli/src/runtime/acp/claude-sdk-client.js +0 -1147
  97. package/dist/cli/src/runtime/acp/claude-sdk-client.js.map +0 -1
  98. package/dist/cli/src/runtime/acp/claude-stream-json-client.d.ts +0 -53
  99. package/dist/cli/src/runtime/acp/claude-stream-json-client.js +0 -552
  100. package/dist/cli/src/runtime/acp/claude-stream-json-client.js.map +0 -1
  101. package/dist/cli/src/runtime/acp/json-rpc.d.ts +0 -22
  102. package/dist/cli/src/runtime/acp/json-rpc.js +0 -160
  103. package/dist/cli/src/runtime/acp/json-rpc.js.map +0 -1
  104. package/dist/cli/src/runtime/acp/provider-resolver.d.ts +0 -16
  105. package/dist/cli/src/runtime/acp/provider-resolver.js +0 -132
  106. package/dist/cli/src/runtime/acp/provider-resolver.js.map +0 -1
  107. package/dist/cli/src/runtime/bridge-session.d.ts +0 -97
  108. package/dist/cli/src/runtime/bridge-session.js +0 -1364
  109. package/dist/cli/src/runtime/bridge-session.js.map +0 -1
  110. package/dist/cli/src/runtime/hook-command.d.ts +0 -9
  111. package/dist/cli/src/runtime/hook-command.js +0 -80
  112. package/dist/cli/src/runtime/hook-command.js.map +0 -1
  113. package/dist/cli/src/runtime/screen-fallback.d.ts +0 -22
  114. package/dist/cli/src/runtime/screen-fallback.js +0 -202
  115. package/dist/cli/src/runtime/screen-fallback.js.map +0 -1
  116. package/dist/cli/src/runtime/screen-share.d.ts +0 -34
  117. package/dist/cli/src/runtime/screen-share.js +0 -376
  118. package/dist/cli/src/runtime/screen-share.js.map +0 -1
  119. package/dist/cli/src/runtime/scrollback.d.ts +0 -11
  120. package/dist/cli/src/runtime/scrollback.js +0 -33
  121. package/dist/cli/src/runtime/scrollback.js.map +0 -1
  122. package/dist/cli/src/runtime/usage-report.d.ts +0 -34
  123. package/dist/cli/src/runtime/usage-report.js +0 -332
  124. package/dist/cli/src/runtime/usage-report.js.map +0 -1
  125. package/dist/cli/src/utils/keep-awake.d.ts +0 -6
  126. package/dist/cli/src/utils/keep-awake.js +0 -48
  127. package/dist/cli/src/utils/keep-awake.js.map +0 -1
  128. package/dist/cli/src/utils/lan-ip.d.ts +0 -9
  129. package/dist/cli/src/utils/lan-ip.js +0 -61
  130. package/dist/cli/src/utils/lan-ip.js.map +0 -1
  131. package/dist/host/src/input-helper.d.ts +0 -1
  132. package/dist/host/src/input-helper.js +0 -564
  133. package/dist/host/src/input-helper.js.map +0 -1
  134. package/dist/shared-protocol/src/index.d.ts +0 -17029
  135. package/dist/shared-protocol/src/index.js +0 -1064
  136. package/dist/shared-protocol/src/index.js.map +0 -1
  137. package/scripts/copy-web.mjs +0 -34
  138. package/src/config.ts +0 -36
  139. package/src/machine-id.ts +0 -61
  140. package/src/providers.ts +0 -97
  141. package/src/runtime/acp/acp-client.ts +0 -521
  142. package/src/runtime/acp/agent-process-discovery.ts +0 -308
  143. package/src/runtime/acp/agent-session.ts +0 -1186
  144. package/src/runtime/acp/agent-workspace.ts +0 -6590
  145. package/src/runtime/acp/claude-sdk-client.ts +0 -1221
  146. package/src/runtime/acp/claude-stream-json-client.ts +0 -633
  147. package/src/runtime/acp/json-rpc.ts +0 -184
  148. package/src/runtime/acp/provider-resolver.ts +0 -154
  149. package/src/runtime/bridge-session.ts +0 -1549
  150. package/src/runtime/hook-command.ts +0 -73
  151. package/src/runtime/screen-fallback.ts +0 -235
  152. package/src/runtime/screen-share.ts +0 -426
  153. package/src/runtime/scrollback.ts +0 -43
  154. package/src/runtime/usage-report.ts +0 -342
  155. package/src/utils/keep-awake.ts +0 -61
  156. package/src/utils/lan-ip.ts +0 -61
  157. package/web/assets/FileBrowser-wOAfY-xj.js +0 -2
  158. package/web/assets/PortPreview-Cbvv7yzA.js +0 -2
  159. package/web/assets/TerminalPanel-CTSklkct.js +0 -1
  160. package/web/assets/UsageDashboard-CJ1AsNmd.js +0 -1
  161. package/web/assets/index-BsnDaeCt.css +0 -33
  162. package/web/assets/index-q85psYZ5.js +0 -36
  163. package/web/assets/vendor-highlight-NXWAAyIv.js +0 -5
  164. package/web/assets/vendor-react-M7xG3qiw.js +0 -49
  165. package/web/assets/vendor-xterm-D15THcI4.js +0 -9
  166. package/web/index.html +0 -37
  167. package/web/logos/claude.png +0 -0
  168. package/web/logos/codex.png +0 -0
  169. package/web/logos/copilot.png +0 -0
  170. package/web/logos/gemini.png +0 -0
  171. package/web/logos/linkshell-1024.png +0 -0
  172. package/web/logos/linkshell-splash.png +0 -0
  173. package/web/logos/linkshell.png +0 -0
@@ -1,278 +0,0 @@
1
- import { execFile, execFileSync } from "node:child_process";
2
- import { promisify } from "node:util";
3
- const execFileAsync = promisify(execFile);
4
- /**
5
- * Host-side agent process discovery, modeled on Open Island's
6
- * ActiveAgentProcessDiscovery: `ps` is the authoritative "is it alive?"
7
- * signal. We classify well-known CLIs (Claude, Codex, Gemini, Copilot,
8
- * OpenCode, Cursor Agent, Kimi) and ignore LinkShell's own control-plane
9
- * subprocesses (codex app-server, Claude stream-json / SDK).
10
- *
11
- * This does not invent a remote conversation protocol for those agents.
12
- * Live processes become visible conversations; prompting still requires
13
- * an official adapter (Codex app-server / Claude stream-json or SDK).
14
- */
15
- export const KNOWN_AGENT_PROVIDERS = [
16
- "codex",
17
- "claude",
18
- "gemini",
19
- "copilot",
20
- "opencode",
21
- "cursor",
22
- "grok",
23
- "kimi",
24
- "custom",
25
- ];
26
- export const PROTOCOL_AGENT_PROVIDERS = new Set(["codex", "claude", "gemini", "cursor", "grok"]);
27
- const UUID_RE = /[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}/;
28
- export function agentProviderLabel(provider) {
29
- switch (provider) {
30
- case "codex":
31
- return "Codex";
32
- case "claude":
33
- return "Claude";
34
- case "gemini":
35
- return "Gemini";
36
- case "copilot":
37
- return "Copilot";
38
- case "opencode":
39
- return "OpenCode";
40
- case "cursor":
41
- return "Cursor";
42
- case "grok":
43
- return "Grok";
44
- case "kimi":
45
- return "Kimi";
46
- case "custom":
47
- return "Custom";
48
- default:
49
- return provider;
50
- }
51
- }
52
- export function isProtocolAgentProvider(provider) {
53
- return PROTOCOL_AGENT_PROVIDERS.has(provider);
54
- }
55
- export function firstCommandToken(command) {
56
- return command.trim().split(/\s+/, 1)[0] ?? "";
57
- }
58
- export function commandBinaryName(command) {
59
- const token = firstCommandToken(command);
60
- const parts = token.split(/[/\\]/);
61
- return (parts[parts.length - 1] ?? token).toLowerCase();
62
- }
63
- /** LinkShell-owned control planes must not appear as user sessions. */
64
- export function isControlPlaneCommand(command) {
65
- const lowered = command.toLowerCase();
66
- if (/\bapp-server\b/.test(lowered))
67
- return true;
68
- if (lowered.includes("claude-agent-sdk"))
69
- return true;
70
- if (lowered.includes("stream-json") && (lowered.includes("--print") || lowered.includes("--output-format"))) {
71
- return true;
72
- }
73
- if (/\b--acp\b/.test(lowered))
74
- return true;
75
- if (commandBinaryName(command) === "cursor-agent" && /\sacp(\s|$)/.test(lowered))
76
- return true;
77
- if (commandBinaryName(command) === "grok" && /\bagent\b/.test(lowered) && /\bstdio\b/.test(lowered))
78
- return true;
79
- return false;
80
- }
81
- export function classifyAgentCommand(command) {
82
- if (!command.trim() || isControlPlaneCommand(command))
83
- return undefined;
84
- const lowered = command.toLowerCase();
85
- const first = firstCommandToken(lowered);
86
- const binary = commandBinaryName(command);
87
- if (binary === "codex" || first.endsWith("/codex") || lowered.includes("/codex/codex"))
88
- return "codex";
89
- if (binary === "claude" || first.endsWith("/claude") || lowered.includes("/.local/bin/claude"))
90
- return "claude";
91
- if (binary === "cursor-agent" || first.endsWith("/cursor-agent"))
92
- return "cursor";
93
- if (isOpenCodeCommand(lowered, first))
94
- return "opencode";
95
- if (binary === "gemini" ||
96
- first.endsWith("/gemini") ||
97
- lowered.includes("/bin/gemini") ||
98
- lowered.includes("/google/gemini-cli") ||
99
- lowered.includes("@google/gemini-cli")) {
100
- return "gemini";
101
- }
102
- if (binary === "kimi" && (first === "kimi" || first.endsWith("/kimi")))
103
- return "kimi";
104
- if (binary === "copilot" || first.endsWith("/copilot"))
105
- return "copilot";
106
- if (binary === "grok" || first.endsWith("/grok"))
107
- return "grok";
108
- return undefined;
109
- }
110
- function isOpenCodeCommand(lowered, first) {
111
- if (first === "opencode" ||
112
- first === "opencode-ai" ||
113
- first.endsWith("/opencode") ||
114
- first.endsWith("/opencode-ai")) {
115
- return true;
116
- }
117
- if (!lowered.includes("opencode"))
118
- return false;
119
- const isPackageRunner = first === "npx" || first.endsWith("/npx") ||
120
- first === "pnpx" || first.endsWith("/pnpx") ||
121
- first === "bunx" || first.endsWith("/bunx") ||
122
- ((first === "npm" || first.endsWith("/npm")) && (lowered.includes(" exec ") || lowered.includes(" run "))) ||
123
- ((first === "pnpm" || first.endsWith("/pnpm")) && (lowered.includes(" dlx ") || lowered.includes(" exec ") || lowered.includes(" run "))) ||
124
- first === "yarn" || first.endsWith("/yarn");
125
- if (isPackageRunner) {
126
- const tokens = lowered.split(/\s+/);
127
- const packageIndex = tokens.findIndex((token) => {
128
- if (token.startsWith("@opencode-ai/"))
129
- return true;
130
- const base = token.startsWith("@") ? token : (token.split("@")[0] ?? token);
131
- return base === "opencode" || base === "opencode-ai";
132
- });
133
- if (packageIndex >= 0) {
134
- const installLike = new Set(["install", "i", "add", "remove", "rm", "uninstall", "update", "upgrade", "up", "unlink"]);
135
- const isInstall = tokens.slice(0, packageIndex).some((token) => installLike.has(token));
136
- if (!isInstall)
137
- return true;
138
- }
139
- }
140
- const isNode = first === "node" || first.endsWith("/node") || first === "bun" || first.endsWith("/bun");
141
- if (isNode && (lowered.includes("/opencode-ai/") ||
142
- lowered.includes("/@opencode-ai/") ||
143
- lowered.includes("/node_modules/opencode/") ||
144
- lowered.includes("/node_modules/opencode-ai/") ||
145
- lowered.includes("/node_modules/@opencode-ai/") ||
146
- /\/\.bin\/opencode(-ai)?(\s|$)/.test(lowered))) {
147
- return true;
148
- }
149
- return false;
150
- }
151
- export function parsePsOutput(output) {
152
- const processes = [];
153
- for (const rawLine of output.split(/\r?\n/)) {
154
- const line = rawLine.trim();
155
- if (!line)
156
- continue;
157
- const parts = line.split(/\s+/);
158
- if (parts.length < 4)
159
- continue;
160
- const pid = parts[0];
161
- const parentPid = parts[1];
162
- const ttyRaw = parts[2];
163
- const command = parts.slice(3).join(" ").trim();
164
- if (!command)
165
- continue;
166
- processes.push({
167
- pid,
168
- parentPid,
169
- tty: normalizeTty(ttyRaw),
170
- command,
171
- });
172
- }
173
- return processes;
174
- }
175
- function normalizeTty(raw) {
176
- const trimmed = raw.trim();
177
- if (!trimmed || trimmed === "??")
178
- return undefined;
179
- return trimmed.startsWith("/dev/") ? trimmed : `/dev/${trimmed}`;
180
- }
181
- export function sessionIdFromCommand(command) {
182
- const tokens = command.split(/\s+/);
183
- for (let index = 0; index < tokens.length; index += 1) {
184
- const token = tokens[index];
185
- if (token === "--resume" || token === "-r" || token === "--session-id") {
186
- const next = tokens[index + 1];
187
- const match = next?.match(UUID_RE);
188
- if (match)
189
- return match[0].toLowerCase();
190
- }
191
- if (token.startsWith("--resume=") || token.startsWith("--session-id=")) {
192
- const match = token.split("=", 2)[1]?.match(UUID_RE);
193
- if (match)
194
- return match[0].toLowerCase();
195
- }
196
- }
197
- return undefined;
198
- }
199
- export function liveConversationId(snapshot) {
200
- if (snapshot.sessionId)
201
- return `agent-live-${snapshot.provider}-${snapshot.sessionId}`;
202
- return `agent-live-${snapshot.provider}-${snapshot.pid}`;
203
- }
204
- export function isLiveConversationId(conversationId) {
205
- return conversationId.startsWith("agent-live-");
206
- }
207
- export function discoverAgentProcesses(input) {
208
- const run = input?.run ?? defaultCommandRunner;
209
- const processes = input?.processes ?? parsePsOutput(run("/bin/ps", ["-Ao", "pid=,ppid=,tty=,command="]) ?? "");
210
- const snapshots = [];
211
- const claimed = new Set();
212
- for (const process of processes) {
213
- const provider = classifyAgentCommand(process.command);
214
- if (!provider)
215
- continue;
216
- // Open Island lets OpenCode through without a TTY (IDE terminals).
217
- if (!process.tty && provider !== "opencode")
218
- continue;
219
- const sessionId = sessionIdFromCommand(process.command);
220
- const claimKey = sessionId ? `${provider}:${sessionId}` : `${provider}:${process.tty ?? process.pid}`;
221
- if (claimed.has(claimKey))
222
- continue;
223
- claimed.add(claimKey);
224
- snapshots.push({
225
- provider,
226
- pid: process.pid,
227
- command: process.command,
228
- tty: process.tty,
229
- // lsof is useful but too expensive for the 3s live poll — it stalls the
230
- // PTY/WebSocket loop. Callers that need cwd pass includeCwd.
231
- cwd: input?.includeCwd ? cwdFromLsof(run, process.pid) : undefined,
232
- sessionId,
233
- parentPid: process.parentPid,
234
- });
235
- }
236
- return snapshots;
237
- }
238
- /** Non-blocking `ps` scan for the live poll. Never calls lsof. */
239
- export async function discoverAgentProcessesAsync() {
240
- try {
241
- const { stdout } = await execFileAsync("/bin/ps", ["-Ao", "pid=,ppid=,tty=,command="], {
242
- encoding: "utf8",
243
- timeout: 800,
244
- maxBuffer: 2 * 1024 * 1024,
245
- });
246
- return discoverAgentProcesses({ processes: parsePsOutput(stdout) });
247
- }
248
- catch {
249
- return [];
250
- }
251
- }
252
- function cwdFromLsof(run, pid) {
253
- const output = run("/usr/sbin/lsof", ["-a", "-p", pid, "-Fn"]);
254
- if (!output)
255
- return undefined;
256
- const lines = output.split(/\r?\n/);
257
- for (let index = 0; index < lines.length; index += 1) {
258
- if (lines[index] !== "fcwd")
259
- continue;
260
- const next = lines[index + 1] ?? "";
261
- if (next.startsWith("n/"))
262
- return next.slice(1);
263
- }
264
- return undefined;
265
- }
266
- function defaultCommandRunner(executable, args) {
267
- try {
268
- return execFileSync(executable, args, {
269
- encoding: "utf8",
270
- timeout: 800,
271
- stdio: ["ignore", "pipe", "ignore"],
272
- });
273
- }
274
- catch {
275
- return undefined;
276
- }
277
- }
278
- //# sourceMappingURL=agent-process-discovery.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"agent-process-discovery.js","sourceRoot":"","sources":["../../../../../src/runtime/acp/agent-process-discovery.ts"],"names":[],"mappings":"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"}
@@ -1,62 +0,0 @@
1
- import { type Envelope } from "@linkshell/protocol";
2
- import type { AgentProvider } from "./provider-resolver.js";
3
- export declare class AgentSessionProxy {
4
- private readonly input;
5
- private client;
6
- private activeProvider;
7
- private activeProtocol;
8
- private agentSessionId;
9
- private status;
10
- private error;
11
- private initialized;
12
- private currentTurnId;
13
- private messages;
14
- private toolCalls;
15
- private toolOutputBuffers;
16
- private plan;
17
- private planDeltaBuffers;
18
- private pendingPermissions;
19
- private permissionWaiters;
20
- private permissionSources;
21
- constructor(input: {
22
- sessionId: string;
23
- cwd: string;
24
- availableProviders: AgentProvider[];
25
- command?: string;
26
- send: (envelope: Envelope) => void;
27
- verbose?: boolean;
28
- });
29
- handleEnvelope(envelope: Envelope): Promise<void>;
30
- stop(): void;
31
- private initialize;
32
- private tryStartFirstAvailable;
33
- private ensureClient;
34
- private ensureSession;
35
- private sendPrompt;
36
- private handleRequest;
37
- private sendSessionList;
38
- private handleNotification;
39
- private handlePermission;
40
- private handleAgentMessageDelta;
41
- private handlePlanUpdated;
42
- private handlePlanDelta;
43
- private handleItemStarted;
44
- private handleItemCompleted;
45
- private handleToolDelta;
46
- private handleFilePatchUpdated;
47
- private handleTurnDiffUpdated;
48
- private handleCommandExecDelta;
49
- private handleCompletedMessageItem;
50
- private toolCallFromItem;
51
- private handleUpdate;
52
- private handleExit;
53
- private cancelPendingPermissions;
54
- private upsertMessage;
55
- private withToolCreatedAt;
56
- private findDuplicateFileTool;
57
- private sendCapabilities;
58
- private sendSnapshot;
59
- private sendUpdate;
60
- private extractSessionId;
61
- private extractTurnId;
62
- }