linkshell-cli 0.5.42 → 0.6.1

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 (135) hide show
  1. package/dist/cli/src/commands/host.d.ts +30 -0
  2. package/dist/cli/src/commands/host.js +278 -0
  3. package/dist/cli/src/commands/host.js.map +1 -0
  4. package/dist/cli/src/commands/pair.d.ts +1 -0
  5. package/dist/cli/src/commands/pair.js +51 -0
  6. package/dist/cli/src/commands/pair.js.map +1 -0
  7. package/dist/cli/src/index.js +69 -0
  8. package/dist/cli/src/index.js.map +1 -1
  9. package/dist/cli/src/utils/daemon.d.ts +1 -1
  10. package/dist/cli/src/utils/daemon.js +3 -2
  11. package/dist/cli/src/utils/daemon.js.map +1 -1
  12. package/dist/cli/tsconfig.tsbuildinfo +1 -1
  13. package/dist/host/src/drivers/acp/connection.d.ts +61 -0
  14. package/dist/host/src/drivers/acp/connection.js +121 -0
  15. package/dist/host/src/drivers/acp/connection.js.map +1 -0
  16. package/dist/host/src/drivers/acp/driver.d.ts +110 -0
  17. package/dist/host/src/drivers/acp/driver.js +438 -0
  18. package/dist/host/src/drivers/acp/driver.js.map +1 -0
  19. package/dist/host/src/drivers/acp/mapper.d.ts +49 -0
  20. package/dist/host/src/drivers/acp/mapper.js +411 -0
  21. package/dist/host/src/drivers/acp/mapper.js.map +1 -0
  22. package/dist/host/src/drivers/auth.d.ts +7 -0
  23. package/dist/host/src/drivers/auth.js +57 -0
  24. package/dist/host/src/drivers/auth.js.map +1 -0
  25. package/dist/host/src/drivers/claude/driver.d.ts +76 -0
  26. package/dist/host/src/drivers/claude/driver.js +331 -0
  27. package/dist/host/src/drivers/claude/driver.js.map +1 -0
  28. package/dist/host/src/drivers/claude/transcript.d.ts +335 -0
  29. package/dist/host/src/drivers/claude/transcript.js +516 -0
  30. package/dist/host/src/drivers/claude/transcript.js.map +1 -0
  31. package/dist/host/src/drivers/codex/app-server.d.ts +36 -0
  32. package/dist/host/src/drivers/codex/app-server.js +144 -0
  33. package/dist/host/src/drivers/codex/app-server.js.map +1 -0
  34. package/dist/host/src/drivers/codex/driver.d.ts +89 -0
  35. package/dist/host/src/drivers/codex/driver.js +452 -0
  36. package/dist/host/src/drivers/codex/driver.js.map +1 -0
  37. package/dist/host/src/drivers/codex/mapper.d.ts +61 -0
  38. package/dist/host/src/drivers/codex/mapper.js +623 -0
  39. package/dist/host/src/drivers/codex/mapper.js.map +1 -0
  40. package/dist/host/src/drivers/codex/settings.d.ts +51 -0
  41. package/dist/host/src/drivers/codex/settings.js +107 -0
  42. package/dist/host/src/drivers/codex/settings.js.map +1 -0
  43. package/dist/host/src/drivers/images.d.ts +11 -0
  44. package/dist/host/src/drivers/images.js +34 -0
  45. package/dist/host/src/drivers/images.js.map +1 -0
  46. package/dist/host/src/drivers/nesting.d.ts +6 -0
  47. package/dist/host/src/drivers/nesting.js +25 -0
  48. package/dist/host/src/drivers/nesting.js.map +1 -0
  49. package/dist/host/src/drivers/registry.d.ts +21 -0
  50. package/dist/host/src/drivers/registry.js +30 -0
  51. package/dist/host/src/drivers/registry.js.map +1 -0
  52. package/dist/host/src/drivers/types.d.ts +105 -0
  53. package/dist/host/src/drivers/types.js +2 -0
  54. package/dist/host/src/drivers/types.js.map +1 -0
  55. package/dist/host/src/fs.d.ts +69 -0
  56. package/dist/host/src/fs.js +198 -0
  57. package/dist/host/src/fs.js.map +1 -0
  58. package/dist/host/src/gateway.d.ts +55 -0
  59. package/dist/host/src/gateway.js +263 -0
  60. package/dist/host/src/gateway.js.map +1 -0
  61. package/dist/host/src/host.d.ts +51 -0
  62. package/dist/host/src/host.js +133 -0
  63. package/dist/host/src/host.js.map +1 -0
  64. package/dist/host/src/hub.d.ts +89 -0
  65. package/dist/host/src/hub.js +592 -0
  66. package/dist/host/src/hub.js.map +1 -0
  67. package/dist/host/src/index.d.ts +10 -0
  68. package/dist/host/src/index.js +10 -0
  69. package/dist/host/src/index.js.map +1 -0
  70. package/dist/host/src/ports.d.ts +24 -0
  71. package/dist/host/src/ports.js +201 -0
  72. package/dist/host/src/ports.js.map +1 -0
  73. package/dist/host/src/rpc/client.d.ts +9 -0
  74. package/dist/host/src/rpc/client.js +42 -0
  75. package/dist/host/src/rpc/client.js.map +1 -0
  76. package/dist/host/src/rpc/server.d.ts +52 -0
  77. package/dist/host/src/rpc/server.js +293 -0
  78. package/dist/host/src/rpc/server.js.map +1 -0
  79. package/dist/host/src/screen.d.ts +30 -0
  80. package/dist/host/src/screen.js +230 -0
  81. package/dist/host/src/screen.js.map +1 -0
  82. package/dist/host/src/shell-env.d.ts +8 -0
  83. package/dist/host/src/shell-env.js +39 -0
  84. package/dist/host/src/shell-env.js.map +1 -0
  85. package/dist/host/src/store.d.ts +75 -0
  86. package/dist/host/src/store.js +265 -0
  87. package/dist/host/src/store.js.map +1 -0
  88. package/dist/host/src/terminals.d.ts +55 -0
  89. package/dist/host/src/terminals.js +367 -0
  90. package/dist/host/src/terminals.js.map +1 -0
  91. package/dist/shared-protocol/src/index.d.ts +3345 -3345
  92. package/dist/wire/src/crypto.d.ts +65 -0
  93. package/dist/wire/src/crypto.js +253 -0
  94. package/dist/wire/src/crypto.js.map +1 -0
  95. package/dist/wire/src/index.d.ts +8 -0
  96. package/dist/wire/src/index.js +9 -0
  97. package/dist/wire/src/index.js.map +1 -0
  98. package/dist/wire/src/model.d.ts +704 -0
  99. package/dist/wire/src/model.js +163 -0
  100. package/dist/wire/src/model.js.map +1 -0
  101. package/dist/wire/src/peer.d.ts +42 -0
  102. package/dist/wire/src/peer.js +143 -0
  103. package/dist/wire/src/peer.js.map +1 -0
  104. package/dist/wire/src/relay-client.d.ts +82 -0
  105. package/dist/wire/src/relay-client.js +259 -0
  106. package/dist/wire/src/relay-client.js.map +1 -0
  107. package/dist/wire/src/relay.d.ts +481 -0
  108. package/dist/wire/src/relay.js +129 -0
  109. package/dist/wire/src/relay.js.map +1 -0
  110. package/dist/wire/src/rpc.d.ts +4170 -0
  111. package/dist/wire/src/rpc.js +332 -0
  112. package/dist/wire/src/rpc.js.map +1 -0
  113. package/dist/wire/src/shell.d.ts +2 -0
  114. package/dist/wire/src/shell.js +62 -0
  115. package/dist/wire/src/shell.js.map +1 -0
  116. package/dist/wire/src/updates.d.ts +3325 -0
  117. package/dist/wire/src/updates.js +210 -0
  118. package/dist/wire/src/updates.js.map +1 -0
  119. package/package.json +8 -3
  120. package/src/commands/host.ts +297 -0
  121. package/src/commands/pair.ts +52 -0
  122. package/src/index.ts +74 -0
  123. package/src/utils/daemon.ts +4 -3
  124. package/dist/cli/src/commands/hook.d.ts +0 -6
  125. package/dist/cli/src/commands/hook.js +0 -120
  126. package/dist/cli/src/commands/hook.js.map +0 -1
  127. package/dist/cli/src/runtime/acp/agent-workspace-git.d.ts +0 -63
  128. package/dist/cli/src/runtime/acp/agent-workspace-git.js +0 -297
  129. package/dist/cli/src/runtime/acp/agent-workspace-git.js.map +0 -1
  130. package/dist/cli/src/runtime/acp-relay.d.ts +0 -23
  131. package/dist/cli/src/runtime/acp-relay.js +0 -73
  132. package/dist/cli/src/runtime/acp-relay.js.map +0 -1
  133. package/dist/cli/src/runtime/hook-permission-server.d.ts +0 -36
  134. package/dist/cli/src/runtime/hook-permission-server.js +0 -147
  135. package/dist/cli/src/runtime/hook-permission-server.js.map +0 -1
@@ -0,0 +1,623 @@
1
+ import { unwrapShellCommand } from "@linkshell/wire";
2
+ import { imageFromPath, inlineImage } from "../images.js";
3
+ const str = (value) => (typeof value === "string" ? value : undefined);
4
+ const num = (value) => (typeof value === "number" ? value : undefined);
5
+ const obj = (value) => value && typeof value === "object" && !Array.isArray(value) ? value : undefined;
6
+ const arr = (value) => (Array.isArray(value) ? value : []);
7
+ export function threadStateOf(status) {
8
+ switch (status?.type) {
9
+ case "active":
10
+ return status.activeFlags?.some((flag) => flag === "waitingOnApproval" || flag === "waitingOnUserInput")
11
+ ? "waiting"
12
+ : "running";
13
+ case "systemError":
14
+ return "error";
15
+ default:
16
+ return "idle";
17
+ }
18
+ }
19
+ export function threadToDiscovered(thread) {
20
+ return {
21
+ nativeId: thread.id,
22
+ cwd: thread.cwd,
23
+ title: thread.name ?? undefined,
24
+ preview: thread.preview || undefined,
25
+ model: thread.model ?? undefined,
26
+ createdAt: thread.createdAt * 1000,
27
+ updatedAt: thread.updatedAt * 1000,
28
+ state: threadStateOf(thread.status),
29
+ };
30
+ }
31
+ function stopReasonOf(status) {
32
+ switch (status) {
33
+ case "interrupted":
34
+ return "cancelled";
35
+ case "failed":
36
+ return "error";
37
+ default:
38
+ return "end_turn";
39
+ }
40
+ }
41
+ function userContent(item) {
42
+ const blocks = [];
43
+ for (const raw of arr(item.content)) {
44
+ const input = obj(raw);
45
+ if (!input)
46
+ continue;
47
+ switch (input.type) {
48
+ case "text":
49
+ if (str(input.text))
50
+ blocks.push({ type: "text", text: str(input.text) });
51
+ break;
52
+ case "image":
53
+ if (str(input.url))
54
+ blocks.push({ type: "image", mimeType: "image/*", uri: str(input.url) });
55
+ break;
56
+ case "localImage":
57
+ if (str(input.path)) {
58
+ blocks.push(imageFromPath(str(input.path)) ?? { type: "resource_link", uri: `file://${str(input.path)}`, name: str(input.path) });
59
+ }
60
+ break;
61
+ case "skill":
62
+ if (str(input.name))
63
+ blocks.push({ type: "resource_link", kind: "skill", uri: str(input.path) ?? `skill:${str(input.name)}`, name: str(input.name) });
64
+ break;
65
+ case "mention":
66
+ if (str(input.name))
67
+ blocks.push({ type: "resource_link", uri: str(input.path) ?? str(input.name), name: str(input.name) });
68
+ break;
69
+ default:
70
+ break;
71
+ }
72
+ }
73
+ return blocks;
74
+ }
75
+ function commandStatus(status) {
76
+ switch (status) {
77
+ case "completed":
78
+ return "completed";
79
+ case "failed":
80
+ case "declined":
81
+ return "failed";
82
+ default:
83
+ return "in_progress";
84
+ }
85
+ }
86
+ function patchContent(changes) {
87
+ const content = [];
88
+ for (const raw of arr(changes)) {
89
+ const change = obj(raw);
90
+ const path = str(change?.path);
91
+ if (!change || !path)
92
+ continue;
93
+ const kind = obj(change.kind);
94
+ const type = str(kind?.type);
95
+ content.push({
96
+ type: "patch",
97
+ path,
98
+ change: type === "add" || type === "delete" ? type : "update",
99
+ movePath: str(kind?.move_path) ?? undefined,
100
+ diff: str(change.diff) ?? "",
101
+ });
102
+ }
103
+ return content;
104
+ }
105
+ function fileChangeTitle(content) {
106
+ const paths = content.flatMap((entry) => (entry.type === "patch" ? [entry.path] : []));
107
+ if (paths.length === 0)
108
+ return "Edit files";
109
+ const names = paths.map((path) => path.split("/").pop() ?? path);
110
+ return names.length <= 2 ? `Edit ${names.join(", ")}` : `Edit ${names[0]} and ${names.length - 1} more files`;
111
+ }
112
+ function imageContent(data, mimeType) {
113
+ const image = inlineImage(data, mimeType);
114
+ return image ? { type: "content", content: image } : undefined;
115
+ }
116
+ function imageFileContent(path) {
117
+ const image = imageFromPath(path);
118
+ return image ? { type: "content", content: image } : undefined;
119
+ }
120
+ /** An MCP tool's result: its text and image blocks, or its error. */
121
+ function mcpOutput(item) {
122
+ const error = obj(item.error);
123
+ if (error)
124
+ return str(error.message) ? [{ type: "content", content: { type: "text", text: str(error.message) } }] : [];
125
+ const out = [];
126
+ const texts = [];
127
+ for (const raw of arr(obj(item.result)?.content)) {
128
+ const entry = obj(raw);
129
+ if (!entry)
130
+ continue;
131
+ if (entry.type === "image") {
132
+ const image = imageContent(str(entry.data), str(entry.mimeType) ?? "image/png");
133
+ if (image)
134
+ out.push(image);
135
+ }
136
+ else if (entry.type === "resource_link" && str(entry.uri)) {
137
+ out.push({ type: "content", content: { type: "resource_link", uri: str(entry.uri), name: str(entry.name) ?? str(entry.uri) } });
138
+ }
139
+ else if (str(entry.text)) {
140
+ texts.push(str(entry.text));
141
+ }
142
+ }
143
+ return texts.length > 0 ? [{ type: "content", content: { type: "text", text: texts.join("\n") } }, ...out] : out;
144
+ }
145
+ /** Drops the `/bin/zsh -lc '…'` wrapper Codex puts around every command. */
146
+ export function unwrapShell(command) {
147
+ return unwrapShellCommand(command);
148
+ }
149
+ /** A readable title and kind for a command, from Codex's own parse of it. */
150
+ function describeCommand(item) {
151
+ const actions = arr(item.commandActions).map(obj).filter((action) => Boolean(action));
152
+ const command = unwrapShell(str(item.command) ?? "");
153
+ if (actions.length === 1) {
154
+ const action = actions[0];
155
+ switch (action.type) {
156
+ case "read":
157
+ return { title: `Read ${str(action.name) ?? str(action.path) ?? command}`, kind: "read" };
158
+ case "listFiles":
159
+ return { title: `List ${str(action.path) ?? "files"}`, kind: "read" };
160
+ case "search":
161
+ return { title: `Search ${str(action.query) ? `“${str(action.query)}”` : ""}${str(action.path) ? ` in ${str(action.path)}` : ""}`.trim(), kind: "search" };
162
+ default:
163
+ break;
164
+ }
165
+ }
166
+ return { title: command || "Run command", kind: "execute" };
167
+ }
168
+ const COLLAB_ACTIONS = {
169
+ spawnAgent: "spawn",
170
+ sendInput: "message",
171
+ sendMessage: "message",
172
+ followupTask: "message",
173
+ wait: "wait",
174
+ closeAgent: "stop",
175
+ interruptAgent: "stop",
176
+ resumeAgent: "resume",
177
+ listAgents: "list",
178
+ };
179
+ /** Threads a spawnAgent call created: their work nests under the call. */
180
+ export function spawnedThreads(item) {
181
+ const record = obj(item);
182
+ if (record?.type !== "collabAgentToolCall" || record.tool !== "spawnAgent")
183
+ return [];
184
+ return arr(record.receiverThreadIds).filter((id) => typeof id === "string");
185
+ }
186
+ /** Updates that open a tool-like item. Returns undefined for non-tool items. */
187
+ function toolStart(item) {
188
+ const id = str(item.id);
189
+ if (!id)
190
+ return undefined;
191
+ const base = { sessionUpdate: "tool_call", toolCallId: id };
192
+ switch (item.type) {
193
+ case "commandExecution": {
194
+ const { title, kind } = describeCommand(item);
195
+ return {
196
+ ...base,
197
+ title,
198
+ kind,
199
+ status: commandStatus(item.status),
200
+ rawInput: { command: unwrapShell(str(item.command) ?? ""), cwd: item.cwd },
201
+ };
202
+ }
203
+ case "fileChange": {
204
+ const content = patchContent(item.changes);
205
+ return { ...base, title: fileChangeTitle(content), kind: "edit", status: commandStatus(item.status), content };
206
+ }
207
+ case "mcpToolCall":
208
+ return {
209
+ ...base,
210
+ title: `${str(item.server) ?? "mcp"} · ${str(item.tool) ?? "tool"}`,
211
+ kind: "other",
212
+ status: commandStatus(item.status),
213
+ rawInput: item.arguments,
214
+ detail: { type: "mcp", server: str(item.server) ?? "mcp", tool: str(item.tool) ?? "tool" },
215
+ };
216
+ case "dynamicToolCall":
217
+ return {
218
+ ...base,
219
+ title: str(item.tool) ?? "Tool",
220
+ kind: "other",
221
+ status: commandStatus(item.status),
222
+ rawInput: item.arguments,
223
+ };
224
+ case "webSearch":
225
+ return {
226
+ ...base,
227
+ title: str(item.query) ? `Search: ${str(item.query)}` : "Web search",
228
+ kind: "fetch",
229
+ status: "completed",
230
+ rawInput: { query: item.query },
231
+ detail: { type: "web_search", query: str(item.query) },
232
+ };
233
+ case "imageView": {
234
+ const image = imageFileContent(str(item.path));
235
+ return {
236
+ ...base,
237
+ title: `View ${str(item.path)?.split("/").pop() ?? "image"}`,
238
+ kind: "read",
239
+ status: "completed",
240
+ rawInput: { path: item.path },
241
+ locations: str(item.path) ? [{ path: str(item.path) }] : undefined,
242
+ content: image ? [image] : undefined,
243
+ };
244
+ }
245
+ case "contextCompaction":
246
+ return { ...base, title: "Context compacted", kind: "think", status: "completed", detail: { type: "compaction" } };
247
+ case "enteredReviewMode":
248
+ case "exitedReviewMode":
249
+ return {
250
+ ...base,
251
+ title: item.type === "enteredReviewMode" ? "Review started" : "Review finished",
252
+ kind: "think",
253
+ status: "completed",
254
+ rawInput: { review: item.review },
255
+ detail: { type: "review", phase: item.type === "enteredReviewMode" ? "started" : "finished" },
256
+ };
257
+ case "collabAgentToolCall": {
258
+ const action = COLLAB_ACTIONS[str(item.tool) ?? ""] ?? "message";
259
+ return {
260
+ ...base,
261
+ title: str(item.prompt) ? `Sub-agent: ${str(item.prompt)}` : "Sub-agent",
262
+ kind: "other",
263
+ status: item.status === "interrupted" ? "failed" : commandStatus(item.status),
264
+ rawInput: action === "spawn" ? undefined : { agents: item.receiverThreadIds },
265
+ detail: { type: "subagent", action, task: str(item.prompt), model: str(item.model) },
266
+ };
267
+ }
268
+ case "subAgentActivity":
269
+ // Lifecycle echoes of the collab calls above; the sub-agent's own turn state says the same.
270
+ return undefined;
271
+ case "imageGeneration":
272
+ return {
273
+ ...base,
274
+ title: "Generate image",
275
+ kind: "other",
276
+ status: commandStatus(item.status),
277
+ rawInput: str(item.revisedPrompt) ? { prompt: item.revisedPrompt } : undefined,
278
+ detail: { type: "image_generation", prompt: str(item.revisedPrompt) },
279
+ };
280
+ default:
281
+ return undefined;
282
+ }
283
+ }
284
+ /** Updates that close a tool-like item with its final status and output. */
285
+ function toolFinish(item, options) {
286
+ const id = str(item.id);
287
+ if (!id)
288
+ return undefined;
289
+ const update = {
290
+ sessionUpdate: "tool_call_update",
291
+ toolCallId: id,
292
+ status: item.status === undefined ? "completed" : commandStatus(item.status) === "in_progress" ? "completed" : commandStatus(item.status),
293
+ };
294
+ switch (item.type) {
295
+ case "commandExecution":
296
+ update.rawOutput = { exitCode: num(item.exitCode) ?? null, durationMs: num(item.durationMs) ?? null, declined: item.status === "declined" };
297
+ if (options.includeOutput && str(item.aggregatedOutput))
298
+ update.appendOutput = str(item.aggregatedOutput);
299
+ break;
300
+ case "fileChange":
301
+ update.content = patchContent(item.changes);
302
+ break;
303
+ case "mcpToolCall":
304
+ case "dynamicToolCall": {
305
+ const content = mcpOutput(item);
306
+ if (content.length > 0)
307
+ update.content = content;
308
+ break;
309
+ }
310
+ case "imageGeneration": {
311
+ const image = imageContent(str(item.result), "image/png") ?? imageFileContent(str(item.savedPath));
312
+ if (image)
313
+ update.content = [image];
314
+ else if (str(obj(item.failure)?.message))
315
+ update.content = [{ type: "content", content: { type: "text", text: str(obj(item.failure)?.message) } }];
316
+ break;
317
+ }
318
+ default:
319
+ break;
320
+ }
321
+ return update;
322
+ }
323
+ /** One native item as complete history. */
324
+ export function itemToHistory(raw) {
325
+ const id = str(raw.id);
326
+ if (!id)
327
+ return undefined;
328
+ switch (raw.type) {
329
+ case "userMessage": {
330
+ // A message sent through LinkShell carries the client's id; clients match
331
+ // their optimistic copy by `local-<clientMessageId>` (same as ACP drivers).
332
+ const messageId = str(raw.clientId) ? `local-${str(raw.clientId)}` : id;
333
+ const updates = userContent(raw).map((content) => ({ sessionUpdate: "user_message_chunk", messageId, content }));
334
+ return updates.length > 0 ? { itemId: id, updates } : undefined;
335
+ }
336
+ case "agentMessage":
337
+ case "plan": {
338
+ const text = str(raw.text) ?? "";
339
+ if (!text)
340
+ return undefined;
341
+ return {
342
+ itemId: id,
343
+ updates: [
344
+ { sessionUpdate: "agent_message_chunk", messageId: id, content: { type: "text", text } },
345
+ { sessionUpdate: "ls_message_done", messageId: id, role: "agent" },
346
+ ],
347
+ };
348
+ }
349
+ case "reasoning": {
350
+ const text = [...arr(raw.summary), ...(arr(raw.summary).length === 0 ? arr(raw.content) : [])]
351
+ .filter((part) => typeof part === "string")
352
+ .join("\n\n");
353
+ if (!text)
354
+ return undefined;
355
+ return {
356
+ itemId: id,
357
+ updates: [
358
+ { sessionUpdate: "agent_thought_chunk", messageId: id, content: { type: "text", text } },
359
+ { sessionUpdate: "ls_message_done", messageId: id, role: "thought" },
360
+ ],
361
+ };
362
+ }
363
+ default: {
364
+ const start = toolStart(raw);
365
+ if (!start)
366
+ return undefined;
367
+ const finish = toolFinish(raw, { includeOutput: true });
368
+ return { itemId: id, updates: finish ? [start, finish] : [start] };
369
+ }
370
+ }
371
+ }
372
+ export function threadToHistory(thread) {
373
+ const history = [];
374
+ for (const turn of thread.turns ?? []) {
375
+ // Codex reports turn times in seconds.
376
+ const started = typeof turn.startedAt === "number" ? turn.startedAt : undefined;
377
+ const ts = started === undefined ? undefined : started < 1e12 ? started * 1000 : started;
378
+ for (const item of turn.items) {
379
+ const entry = itemToHistory(item);
380
+ if (entry)
381
+ history.push(ts === undefined ? entry : { ...entry, ts });
382
+ }
383
+ if (turn.status === "failed" && turn.error?.message) {
384
+ history.push({
385
+ itemId: `turn-error:${turn.id}`,
386
+ updates: [
387
+ {
388
+ sessionUpdate: "ls_error",
389
+ code: "turn_failed",
390
+ message: turn.error.message,
391
+ hint: turn.error.additionalDetails ?? undefined,
392
+ },
393
+ ],
394
+ });
395
+ }
396
+ }
397
+ return history;
398
+ }
399
+ function planEntries(plan) {
400
+ return arr(plan).flatMap((raw) => {
401
+ const step = obj(raw);
402
+ const content = str(step?.step);
403
+ if (!step || !content)
404
+ return [];
405
+ const status = step.status === "completed" ? "completed" : step.status === "inProgress" ? "in_progress" : "pending";
406
+ return [{ content, priority: "medium", status }];
407
+ });
408
+ }
409
+ /** Maps one app-server notification to session updates. */
410
+ export function mapNotification(method, rawParams, stateOf) {
411
+ const params = obj(rawParams);
412
+ const threadId = str(params?.threadId);
413
+ if (!params || !threadId)
414
+ return [];
415
+ const state = stateOf(threadId);
416
+ const out = (update, itemId) => ({ threadId, update, itemId });
417
+ switch (method) {
418
+ case "turn/started": {
419
+ const turn = obj(params.turn);
420
+ state.activeTurnId = str(turn?.id);
421
+ return [out({ sessionUpdate: "ls_turn", state: "started", turnId: state.activeTurnId })];
422
+ }
423
+ case "turn/completed": {
424
+ const turn = obj(params.turn);
425
+ state.activeTurnId = undefined;
426
+ const updates = [
427
+ out({
428
+ sessionUpdate: "ls_turn",
429
+ state: "ended",
430
+ turnId: turn?.id,
431
+ stopReason: stopReasonOf(turn?.status ?? "completed"),
432
+ }),
433
+ ];
434
+ if (turn?.status === "failed" && turn.error?.message) {
435
+ updates.push(out({
436
+ sessionUpdate: "ls_error",
437
+ code: "turn_failed",
438
+ message: turn.error.message,
439
+ hint: turn.error.additionalDetails ?? undefined,
440
+ }));
441
+ }
442
+ return updates;
443
+ }
444
+ case "thread/status/changed":
445
+ return [out({ sessionUpdate: "ls_status", state: threadStateOf(obj(params.status)) })];
446
+ case "thread/name/updated": {
447
+ const title = str(params.threadName);
448
+ return title ? [out({ sessionUpdate: "session_info_update", title })] : [];
449
+ }
450
+ case "thread/tokenUsage/updated": {
451
+ const usage = obj(params.tokenUsage);
452
+ return [
453
+ out({
454
+ sessionUpdate: "usage_update",
455
+ usedTokens: num(obj(usage?.last)?.totalTokens) ?? num(obj(usage?.total)?.totalTokens),
456
+ contextWindow: num(usage?.modelContextWindow),
457
+ }),
458
+ ];
459
+ }
460
+ case "turn/plan/updated":
461
+ return [out({ sessionUpdate: "plan", entries: planEntries(params.plan) })];
462
+ case "error": {
463
+ if (params.willRetry === true)
464
+ return [];
465
+ const error = obj(params.error);
466
+ return [
467
+ out({
468
+ sessionUpdate: "ls_error",
469
+ code: "agent_error",
470
+ message: str(error?.message) ?? "Codex reported an error",
471
+ hint: str(error?.additionalDetails) ?? undefined,
472
+ }),
473
+ ];
474
+ }
475
+ case "serverRequest/resolved":
476
+ return params.requestId === undefined
477
+ ? []
478
+ : [out({ sessionUpdate: "ls_permission_resolved", requestId: String(params.requestId) })];
479
+ case "item/agentMessage/delta":
480
+ case "item/plan/delta": {
481
+ const itemId = str(params.itemId);
482
+ const delta = str(params.delta);
483
+ return itemId && delta
484
+ ? [out({ sessionUpdate: "agent_message_chunk", messageId: itemId, content: { type: "text", text: delta } })]
485
+ : [];
486
+ }
487
+ case "item/reasoning/summaryTextDelta":
488
+ case "item/reasoning/textDelta": {
489
+ const itemId = str(params.itemId);
490
+ const delta = str(params.delta);
491
+ return itemId && delta
492
+ ? [out({ sessionUpdate: "agent_thought_chunk", messageId: itemId, content: { type: "text", text: delta } })]
493
+ : [];
494
+ }
495
+ case "item/commandExecution/outputDelta": {
496
+ const itemId = str(params.itemId);
497
+ const delta = str(params.delta);
498
+ return itemId && delta ? [out({ sessionUpdate: "tool_call_update", toolCallId: itemId, appendOutput: delta })] : [];
499
+ }
500
+ case "item/fileChange/patchUpdated": {
501
+ const itemId = str(params.itemId);
502
+ return itemId
503
+ ? [out({ sessionUpdate: "tool_call_update", toolCallId: itemId, content: patchContent(params.changes) })]
504
+ : [];
505
+ }
506
+ case "item/started": {
507
+ const item = obj(params.item);
508
+ if (!item)
509
+ return [];
510
+ if (item.type === "userMessage") {
511
+ const history = itemToHistory(item);
512
+ if (!history)
513
+ return [];
514
+ return history.updates.map((update, index) => out(update, index === history.updates.length - 1 ? history.itemId : undefined));
515
+ }
516
+ const start = toolStart(item);
517
+ return start ? [out(start)] : [];
518
+ }
519
+ case "item/completed": {
520
+ const item = obj(params.item);
521
+ const itemId = str(item?.id);
522
+ if (!item || !itemId)
523
+ return [];
524
+ switch (item.type) {
525
+ case "userMessage":
526
+ return [];
527
+ case "agentMessage":
528
+ case "plan":
529
+ return [out({ sessionUpdate: "ls_message_done", messageId: itemId, role: "agent" }, itemId)];
530
+ case "reasoning":
531
+ return [out({ sessionUpdate: "ls_message_done", messageId: itemId, role: "thought" }, itemId)];
532
+ default: {
533
+ const finish = toolFinish(item, { includeOutput: false });
534
+ return finish ? [out(finish, itemId)] : [];
535
+ }
536
+ }
537
+ }
538
+ default:
539
+ return [];
540
+ }
541
+ }
542
+ // ── Approvals ────────────────────────────────────────────────────────
543
+ export const APPROVAL_METHODS = new Set([
544
+ "item/commandExecution/requestApproval",
545
+ "item/fileChange/requestApproval",
546
+ "item/permissions/requestApproval",
547
+ ]);
548
+ const DECISION_OPTIONS = [
549
+ { optionId: "accept", name: "Allow", kind: "allow_once" },
550
+ { optionId: "acceptForSession", name: "Allow for this session", kind: "allow_always" },
551
+ { optionId: "decline", name: "Decline", kind: "reject_once" },
552
+ { optionId: "cancel", name: "Decline and stop", kind: "reject_once" },
553
+ ];
554
+ const PERMISSION_OPTIONS = [
555
+ { optionId: "turn", name: "Allow this turn", kind: "allow_once" },
556
+ { optionId: "session", name: "Allow for this session", kind: "allow_always" },
557
+ { optionId: "deny", name: "Deny", kind: "reject_once" },
558
+ ];
559
+ export function mapApprovalRequest(method, rawParams, requestId) {
560
+ const params = obj(rawParams);
561
+ const threadId = str(params?.threadId);
562
+ if (!params || !threadId || !APPROVAL_METHODS.has(method))
563
+ return undefined;
564
+ const toolCallId = str(params.itemId);
565
+ const reason = str(params.reason) ?? undefined;
566
+ if (method === "item/permissions/requestApproval") {
567
+ const requested = obj(params.permissions) ?? {};
568
+ return {
569
+ threadId,
570
+ update: {
571
+ sessionUpdate: "ls_permission",
572
+ requestId,
573
+ toolCallId,
574
+ title: "Grant additional permissions",
575
+ detail: reason ?? Object.keys(requested).filter((key) => requested[key]).join(", "),
576
+ options: PERMISSION_OPTIONS,
577
+ },
578
+ respond: (optionId) => optionId === "deny"
579
+ ? { permissions: {}, scope: "turn" }
580
+ : { permissions: requested, scope: optionId === "session" ? "session" : "turn" },
581
+ };
582
+ }
583
+ const isCommand = method === "item/commandExecution/requestApproval";
584
+ return {
585
+ threadId,
586
+ update: {
587
+ sessionUpdate: "ls_permission",
588
+ requestId,
589
+ toolCallId,
590
+ title: isCommand ? "Run command" : "Apply file changes",
591
+ detail: isCommand
592
+ ? (str(params.command) ? unwrapShell(str(params.command)) : reason)
593
+ : (reason ?? str(params.grantRoot) ?? undefined),
594
+ options: DECISION_OPTIONS,
595
+ },
596
+ respond: (optionId) => ({ decision: optionId }),
597
+ };
598
+ }
599
+ export function toCodexInput(content) {
600
+ return content.flatMap((block) => {
601
+ switch (block.type) {
602
+ case "text":
603
+ return [{ type: "text", text: block.text, text_elements: [] }];
604
+ case "image":
605
+ if (block.uri)
606
+ return [{ type: "image", url: block.uri }];
607
+ if (block.data)
608
+ return [{ type: "image", url: `data:${block.mimeType};base64,${block.data}` }];
609
+ return [];
610
+ case "resource_link": {
611
+ if (block.kind === "skill")
612
+ return [{ type: "skill", name: block.name, path: block.uri.replace(/^file:\/\//, "") }];
613
+ const path = block.uri.startsWith("file://") ? block.uri.slice("file://".length) : block.uri;
614
+ return /\.(png|jpe?g|gif|webp|heic)$/i.test(path)
615
+ ? [{ type: "localImage", path }]
616
+ : [{ type: "text", text: `@${path}`, text_elements: [] }];
617
+ }
618
+ default:
619
+ return [];
620
+ }
621
+ });
622
+ }
623
+ //# sourceMappingURL=mapper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mapper.js","sourceRoot":"","sources":["../../../../../../host/src/drivers/codex/mapper.ts"],"names":[],"mappings":"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"}