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,430 +0,0 @@
1
- import { JsonRpcStdioTransport } from "./json-rpc.js";
2
- function asRecord(value) {
3
- return value && typeof value === "object" && !Array.isArray(value)
4
- ? value
5
- : undefined;
6
- }
7
- function truthy(value) {
8
- return value === true || value === "true" || value === 1;
9
- }
10
- function collectAdvertisedMethods(...sources) {
11
- const methods = new Set();
12
- for (const source of sources) {
13
- if (!source)
14
- continue;
15
- const lists = [source.methods, source.supportedMethods, source.sessionMethods];
16
- for (const list of lists) {
17
- if (!Array.isArray(list))
18
- continue;
19
- for (const item of list) {
20
- if (typeof item === "string" && item.trim())
21
- methods.add(item.trim());
22
- }
23
- }
24
- for (const [key, value] of Object.entries(source)) {
25
- if (key.includes("/") && truthy(value))
26
- methods.add(key);
27
- }
28
- }
29
- return [...methods];
30
- }
31
- /** Parse ACP `initialize` result. Unadvertised optional methods stay false. */
32
- export function parseAcpInitializeCapabilities(result) {
33
- const raw = asRecord(result) ?? {};
34
- const agentCaps = asRecord(raw.agentCapabilities) ?? asRecord(raw.capabilities) ?? {};
35
- const sessionCaps = asRecord(raw.sessionCapabilities) ?? asRecord(agentCaps.sessionCapabilities) ?? {};
36
- const promptCaps = asRecord(agentCaps.promptCapabilities) ?? {};
37
- const mcpCaps = asRecord(agentCaps.mcpCapabilities);
38
- const methods = collectAdvertisedMethods(raw, agentCaps, sessionCaps);
39
- const has = (...keys) => keys.some((key) => truthy(agentCaps[key]) || truthy(sessionCaps[key]) || methods.includes(key));
40
- return {
41
- protocolVersion: typeof raw.protocolVersion === "number" ? raw.protocolVersion : undefined,
42
- loadSession: has("loadSession", "session/load"),
43
- listSession: has("listSession", "listSessions", "session/list"),
44
- forkSession: has("forkSession", "session/fork"),
45
- setModel: has("setModel", "session/set_model"),
46
- // ACP v1 MUST session/cancel. AgentCapabilities has no cancel flag, so a
47
- // real-shaped initialize that omits it still supports cancel.
48
- cancel: true,
49
- images: truthy(promptCaps.image) || has("image", "images"),
50
- audio: truthy(promptCaps.audio) || has("audio"),
51
- embeddedContext: truthy(promptCaps.embeddedContext),
52
- mcp: Boolean(mcpCaps && Object.keys(mcpCaps).length > 0) || has("mcp"),
53
- methods,
54
- };
55
- }
56
- function normalizeMcpServers(value) {
57
- if (Array.isArray(value))
58
- return value;
59
- if (!value || typeof value !== "object")
60
- return [];
61
- return Object.entries(value).map(([name, config]) => {
62
- if (config && typeof config === "object" && !Array.isArray(config)) {
63
- return { name, ...config };
64
- }
65
- return { name, config };
66
- });
67
- }
68
- // Codex prefers a named permission profile (`permissions: ":workspace"`) and
69
- // rejects combining it with the legacy tagged `sandboxPolicy`. Map our three
70
- // LinkShell modes onto official profile ids; keep sandboxPolicy only for
71
- // full_access, which has no stable named profile in the public docs.
72
- function permissionOverridesForMode(mode) {
73
- if (!mode)
74
- return {};
75
- switch (mode) {
76
- case "read_only":
77
- return { permissions: ":read-only" };
78
- case "workspace_write":
79
- return { permissions: ":workspace" };
80
- case "full_access":
81
- return { sandboxPolicy: { type: "dangerFullAccess" } };
82
- default:
83
- return {};
84
- }
85
- }
86
- function approvalPolicyForMode(mode) {
87
- if (!mode)
88
- return undefined;
89
- switch (mode) {
90
- case "read_only":
91
- case "workspace_write":
92
- // Ask before escaping the sandbox → triggers a permission request the
93
- // host forwards to the client as agent.v2.permission.request.
94
- return "on-request";
95
- case "full_access":
96
- return "never";
97
- default:
98
- return undefined;
99
- }
100
- }
101
- export class AcpClient {
102
- transport;
103
- protocol;
104
- lastInitializeResult;
105
- advertised = parseAcpInitializeCapabilities(undefined);
106
- constructor(input) {
107
- this.protocol = input.protocol;
108
- this.transport = new JsonRpcStdioTransport(input.command, input.framing, input.onNotification, input.onRequest, input.onExit);
109
- this.transport.start(input.cwd);
110
- }
111
- async initialize() {
112
- if (this.protocol === "codex-app-server") {
113
- const result = await this.transport.request("initialize", {
114
- clientInfo: { name: "LinkShell", version: "0.1" },
115
- capabilities: { experimentalApi: true },
116
- });
117
- this.transport.notify("initialized", {});
118
- this.lastInitializeResult = result;
119
- this.advertised = {
120
- ...parseAcpInitializeCapabilities(result),
121
- loadSession: true,
122
- listSession: true,
123
- forkSession: true,
124
- setModel: true,
125
- cancel: true,
126
- images: true,
127
- mcp: true,
128
- };
129
- return result;
130
- }
131
- const result = await this.transport.request("initialize", {
132
- protocolVersion: 1,
133
- clientInfo: { name: "LinkShell", version: "0.1" },
134
- clientCapabilities: {
135
- fs: { readTextFile: false, writeTextFile: false },
136
- terminal: false,
137
- },
138
- });
139
- this.lastInitializeResult = result;
140
- this.advertised = { ...parseAcpInitializeCapabilities(result), cancel: true };
141
- return result;
142
- }
143
- newSession(input) {
144
- if (this.protocol === "codex-app-server") {
145
- return this.transport.request("thread/start", {
146
- cwd: input.cwd,
147
- sessionStartSource: "startup",
148
- });
149
- }
150
- return this.transport.request("session/new", {
151
- cwd: input.cwd,
152
- mcpServers: normalizeMcpServers(input.mcpServers),
153
- });
154
- }
155
- loadSession(input) {
156
- if (this.protocol === "codex-app-server") {
157
- return this.transport.request("thread/resume", {
158
- threadId: input.sessionId,
159
- cwd: input.cwd,
160
- excludeTurns: false,
161
- });
162
- }
163
- if (!this.advertised.loadSession) {
164
- return Promise.reject(new Error("Provider did not advertise session/load."));
165
- }
166
- return this.transport.request("session/load", {
167
- sessionId: input.sessionId,
168
- cwd: input.cwd,
169
- mcpServers: normalizeMcpServers(input.mcpServers),
170
- });
171
- }
172
- readSession(input) {
173
- if (this.protocol === "codex-app-server") {
174
- return this.transport.request("thread/read", {
175
- threadId: input.sessionId,
176
- includeTurns: input.includeTurns ?? true,
177
- });
178
- }
179
- return Promise.reject(new Error("Provider does not support readSession."));
180
- }
181
- listTurns(input) {
182
- if (this.protocol === "codex-app-server") {
183
- return this.transport.request("thread/turns/list", {
184
- threadId: input.sessionId,
185
- limit: input.limit ?? 50,
186
- cursor: input.cursor,
187
- sortDirection: input.sortDirection ?? "desc",
188
- itemsView: input.itemsView ?? "full",
189
- });
190
- }
191
- return Promise.reject(new Error("Provider does not support listTurns."));
192
- }
193
- async listSessions() {
194
- if (this.protocol !== "codex-app-server") {
195
- if (!this.advertised.listSession) {
196
- return Promise.reject(new Error("Provider did not advertise session/list."));
197
- }
198
- return this.transport.request("session/list", {});
199
- }
200
- const allThreads = [];
201
- let cursor;
202
- for (let page = 0; page < 10; page++) {
203
- const result = await this.transport.request("thread/list", {
204
- limit: 100,
205
- ...(cursor ? { cursor } : {}),
206
- });
207
- const raw = result && typeof result === "object" ? result : undefined;
208
- const threads = Array.isArray(result) ? result :
209
- Array.isArray(raw?.data) ? raw.data :
210
- Array.isArray(raw?.threads) ? raw.threads :
211
- Array.isArray(raw?.sessions) ? raw.sessions :
212
- Array.isArray(raw?.items) ? raw.items :
213
- [];
214
- allThreads.push(...threads);
215
- const nextCursor = (typeof raw?.nextCursor === "string" && raw.nextCursor) ||
216
- (typeof raw?.next_cursor === "string" && raw.next_cursor) ||
217
- undefined;
218
- if (!nextCursor || threads.length === 0)
219
- break;
220
- cursor = nextCursor;
221
- }
222
- return { data: allThreads };
223
- }
224
- updateThreadSettings(input) {
225
- if (this.protocol !== "codex-app-server") {
226
- return Promise.reject(new Error("Provider does not support updateThreadSettings."));
227
- }
228
- const model = input.model?.trim();
229
- const collaborationMode = input.collaborationMode && input.collaborationMode !== "default"
230
- ? {
231
- mode: input.collaborationMode,
232
- settings: {
233
- model: model || "default",
234
- ...(input.reasoningEffort ? { reasoning_effort: input.reasoningEffort } : {}),
235
- },
236
- }
237
- : undefined;
238
- const permission = permissionOverridesForMode(input.permissionMode);
239
- const approvalPolicy = approvalPolicyForMode(input.permissionMode);
240
- return this.transport.request("thread/settings/update", {
241
- threadId: input.sessionId,
242
- ...(model ? { model } : {}),
243
- ...(input.reasoningEffort ? { effort: input.reasoningEffort } : {}),
244
- ...permission,
245
- ...(approvalPolicy ? { approvalPolicy } : {}),
246
- ...(collaborationMode ? { collaborationMode } : {}),
247
- });
248
- }
249
- setThreadName(input) {
250
- if (this.protocol !== "codex-app-server") {
251
- return Promise.reject(new Error("Provider does not support setThreadName."));
252
- }
253
- return this.transport.request("thread/name/set", {
254
- threadId: input.sessionId,
255
- name: input.name,
256
- });
257
- }
258
- archiveThread(input) {
259
- if (this.protocol !== "codex-app-server") {
260
- return Promise.reject(new Error("Provider does not support archiveThread."));
261
- }
262
- return this.transport.request("thread/archive", { threadId: input.sessionId });
263
- }
264
- unarchiveThread(input) {
265
- if (this.protocol !== "codex-app-server") {
266
- return Promise.reject(new Error("Provider does not support unarchiveThread."));
267
- }
268
- return this.transport.request("thread/unarchive", { threadId: input.sessionId });
269
- }
270
- deleteThread(input) {
271
- if (this.protocol !== "codex-app-server") {
272
- return Promise.reject(new Error("Provider does not support deleteThread."));
273
- }
274
- return this.transport.request("thread/delete", { threadId: input.sessionId });
275
- }
276
- forkThread(input) {
277
- if (this.protocol === "codex-app-server") {
278
- return this.transport.request("thread/fork", {
279
- threadId: input.sessionId,
280
- ...(input.lastTurnId ? { lastTurnId: input.lastTurnId } : {}),
281
- });
282
- }
283
- if (!this.advertised.forkSession) {
284
- return Promise.reject(new Error("Provider did not advertise session/fork."));
285
- }
286
- return this.transport.request("session/fork", {
287
- sessionId: input.sessionId,
288
- ...(input.lastTurnId ? { lastTurnId: input.lastTurnId } : {}),
289
- });
290
- }
291
- setSessionModel(input) {
292
- if (this.protocol === "codex-app-server") {
293
- return this.updateThreadSettings({ sessionId: input.sessionId, model: input.modelId });
294
- }
295
- if (!this.advertised.setModel) {
296
- return Promise.reject(new Error("Provider did not advertise session/set_model."));
297
- }
298
- return this.transport.request("session/set_model", {
299
- sessionId: input.sessionId,
300
- modelId: input.modelId,
301
- });
302
- }
303
- startReview(input) {
304
- if (this.protocol !== "codex-app-server") {
305
- return Promise.reject(new Error("Provider does not support startReview."));
306
- }
307
- const prompt = input.prompt?.trim();
308
- return this.transport.request("review/start", {
309
- threadId: input.sessionId,
310
- target: prompt
311
- ? { type: "custom", instructions: prompt }
312
- : { type: "uncommittedChanges" },
313
- });
314
- }
315
- listSkills(input) {
316
- if (this.protocol !== "codex-app-server") {
317
- return Promise.reject(new Error("Provider does not support listSkills."));
318
- }
319
- return this.transport.request("skills/list", { cwds: [input.cwd] });
320
- }
321
- listMcpServers(input) {
322
- if (this.protocol !== "codex-app-server") {
323
- return Promise.reject(new Error("Provider does not support listMcpServers."));
324
- }
325
- return this.transport.request("mcpServerStatus/list", {
326
- detail: "full",
327
- ...(input?.threadId ? { threadId: input.threadId } : {}),
328
- });
329
- }
330
- startMcpOAuth(input) {
331
- if (this.protocol !== "codex-app-server") {
332
- return Promise.reject(new Error("Provider does not support startMcpOAuth."));
333
- }
334
- return this.transport.request("mcpServer/oauth/login", { name: input.serverName });
335
- }
336
- listModels() {
337
- if (this.protocol === "codex-app-server") {
338
- return this.transport.request("model/list", {});
339
- }
340
- return Promise.resolve(undefined);
341
- }
342
- prompt(input) {
343
- if (this.protocol === "codex-app-server") {
344
- const model = input.model?.trim() || "default";
345
- const collaborationSettings = {
346
- model,
347
- ...(input.reasoningEffort ? { reasoning_effort: input.reasoningEffort } : {}),
348
- };
349
- const collaborationMode = input.collaborationMode && input.collaborationMode !== "default"
350
- ? {
351
- mode: input.collaborationMode,
352
- settings: collaborationSettings,
353
- }
354
- : undefined;
355
- const permission = permissionOverridesForMode(input.permissionMode);
356
- const approvalPolicy = approvalPolicyForMode(input.permissionMode);
357
- const turnStartParams = {
358
- threadId: input.sessionId,
359
- model,
360
- effort: input.reasoningEffort,
361
- // Named profile when we have one; sandboxPolicy only for full_access.
362
- // Omitted entirely when no mode is set so Codex uses config.toml.
363
- ...permission,
364
- ...(approvalPolicy ? { approvalPolicy } : {}),
365
- collaborationMode,
366
- input: input.content.map((block) => {
367
- const raw = block;
368
- if (raw.type === "image" && raw.data) {
369
- return { type: "image", url: raw.data };
370
- }
371
- return { type: "text", text: raw.text ?? "" };
372
- }),
373
- };
374
- return this.transport.request("turn/start", turnStartParams, null);
375
- }
376
- return this.transport.request("session/prompt", {
377
- sessionId: input.sessionId,
378
- prompt: input.content,
379
- _meta: {
380
- linkshellClientMessageId: input.clientMessageId,
381
- model: input.model,
382
- reasoningEffort: input.reasoningEffort,
383
- permissionMode: input.permissionMode,
384
- },
385
- }, 60_000);
386
- }
387
- steer(input) {
388
- if (this.protocol !== "codex-app-server") {
389
- return Promise.reject(new Error("Active-turn steering is only supported by Codex app-server."));
390
- }
391
- return this.transport.request("turn/steer", {
392
- threadId: input.sessionId,
393
- expectedTurnId: input.turnId,
394
- input: input.content.map((block) => {
395
- const raw = block;
396
- if (raw.type === "image" && raw.data) {
397
- return { type: "image", url: raw.data };
398
- }
399
- return { type: "text", text: raw.text ?? "" };
400
- }),
401
- }, null);
402
- }
403
- cancel(input) {
404
- if (this.protocol === "codex-app-server") {
405
- if (!input.sessionId || !input.turnId)
406
- return;
407
- this.transport.request("turn/interrupt", {
408
- threadId: input.sessionId,
409
- turnId: input.turnId,
410
- }).catch(() => { });
411
- return;
412
- }
413
- if (!this.advertised.cancel)
414
- return;
415
- this.transport.notify("session/cancel", { sessionId: input.sessionId });
416
- }
417
- respondPermission(input) {
418
- this.transport.notify("session/respond_permission", input);
419
- }
420
- compact(input) {
421
- if (this.protocol === "codex-app-server") {
422
- return this.transport.request("thread/compact/start", { threadId: input.sessionId });
423
- }
424
- return Promise.reject(new Error("Native compact is not supported by this provider."));
425
- }
426
- stop() {
427
- this.transport.stop();
428
- }
429
- }
430
- //# sourceMappingURL=acp-client.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"acp-client.js","sourceRoot":"","sources":["../../../../../src/runtime/acp/acp-client.ts"],"names":[],"mappings":"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"}
@@ -1,48 +0,0 @@
1
- /**
2
- * Host-side agent process discovery, modeled on Open Island's
3
- * ActiveAgentProcessDiscovery: `ps` is the authoritative "is it alive?"
4
- * signal. We classify well-known CLIs (Claude, Codex, Gemini, Copilot,
5
- * OpenCode, Cursor Agent, Kimi) and ignore LinkShell's own control-plane
6
- * subprocesses (codex app-server, Claude stream-json / SDK).
7
- *
8
- * This does not invent a remote conversation protocol for those agents.
9
- * Live processes become visible conversations; prompting still requires
10
- * an official adapter (Codex app-server / Claude stream-json or SDK).
11
- */
12
- export declare const KNOWN_AGENT_PROVIDERS: readonly ["codex", "claude", "gemini", "copilot", "opencode", "cursor", "grok", "kimi", "custom"];
13
- export type KnownAgentProvider = (typeof KNOWN_AGENT_PROVIDERS)[number];
14
- export declare const PROTOCOL_AGENT_PROVIDERS: Set<string>;
15
- export interface AgentProcessSnapshot {
16
- provider: string;
17
- pid: string;
18
- command: string;
19
- tty?: string;
20
- cwd?: string;
21
- sessionId?: string;
22
- parentPid?: string;
23
- }
24
- export interface RunningProcess {
25
- pid: string;
26
- parentPid: string;
27
- tty?: string;
28
- command: string;
29
- }
30
- export type ProcessCommandRunner = (executable: string, args: string[]) => string | undefined;
31
- export declare function agentProviderLabel(provider: string): string;
32
- export declare function isProtocolAgentProvider(provider: string): boolean;
33
- export declare function firstCommandToken(command: string): string;
34
- export declare function commandBinaryName(command: string): string;
35
- /** LinkShell-owned control planes must not appear as user sessions. */
36
- export declare function isControlPlaneCommand(command: string): boolean;
37
- export declare function classifyAgentCommand(command: string): string | undefined;
38
- export declare function parsePsOutput(output: string): RunningProcess[];
39
- export declare function sessionIdFromCommand(command: string): string | undefined;
40
- export declare function liveConversationId(snapshot: Pick<AgentProcessSnapshot, "provider" | "pid" | "sessionId">): string;
41
- export declare function isLiveConversationId(conversationId: string): boolean;
42
- export declare function discoverAgentProcesses(input?: {
43
- run?: ProcessCommandRunner;
44
- processes?: RunningProcess[];
45
- includeCwd?: boolean;
46
- }): AgentProcessSnapshot[];
47
- /** Non-blocking `ps` scan for the live poll. Never calls lsof. */
48
- export declare function discoverAgentProcessesAsync(): Promise<AgentProcessSnapshot[]>;