linkshell-cli 0.5.42 → 0.6.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.
- package/dist/cli/src/commands/host.d.ts +23 -0
- package/dist/cli/src/commands/host.js +264 -0
- package/dist/cli/src/commands/host.js.map +1 -0
- package/dist/cli/src/commands/pair.d.ts +1 -0
- package/dist/cli/src/commands/pair.js +48 -0
- package/dist/cli/src/commands/pair.js.map +1 -0
- package/dist/cli/src/index.js +68 -0
- package/dist/cli/src/index.js.map +1 -1
- package/dist/cli/src/utils/daemon.d.ts +1 -1
- package/dist/cli/src/utils/daemon.js +3 -2
- package/dist/cli/src/utils/daemon.js.map +1 -1
- package/dist/cli/tsconfig.tsbuildinfo +1 -1
- package/dist/host/src/drivers/acp/connection.d.ts +61 -0
- package/dist/host/src/drivers/acp/connection.js +121 -0
- package/dist/host/src/drivers/acp/connection.js.map +1 -0
- package/dist/host/src/drivers/acp/driver.d.ts +110 -0
- package/dist/host/src/drivers/acp/driver.js +438 -0
- package/dist/host/src/drivers/acp/driver.js.map +1 -0
- package/dist/host/src/drivers/acp/mapper.d.ts +49 -0
- package/dist/host/src/drivers/acp/mapper.js +411 -0
- package/dist/host/src/drivers/acp/mapper.js.map +1 -0
- package/dist/host/src/drivers/auth.d.ts +7 -0
- package/dist/host/src/drivers/auth.js +57 -0
- package/dist/host/src/drivers/auth.js.map +1 -0
- package/dist/host/src/drivers/claude/driver.d.ts +76 -0
- package/dist/host/src/drivers/claude/driver.js +331 -0
- package/dist/host/src/drivers/claude/driver.js.map +1 -0
- package/dist/host/src/drivers/claude/transcript.d.ts +335 -0
- package/dist/host/src/drivers/claude/transcript.js +516 -0
- package/dist/host/src/drivers/claude/transcript.js.map +1 -0
- package/dist/host/src/drivers/codex/app-server.d.ts +36 -0
- package/dist/host/src/drivers/codex/app-server.js +144 -0
- package/dist/host/src/drivers/codex/app-server.js.map +1 -0
- package/dist/host/src/drivers/codex/driver.d.ts +89 -0
- package/dist/host/src/drivers/codex/driver.js +452 -0
- package/dist/host/src/drivers/codex/driver.js.map +1 -0
- package/dist/host/src/drivers/codex/mapper.d.ts +61 -0
- package/dist/host/src/drivers/codex/mapper.js +623 -0
- package/dist/host/src/drivers/codex/mapper.js.map +1 -0
- package/dist/host/src/drivers/codex/settings.d.ts +51 -0
- package/dist/host/src/drivers/codex/settings.js +107 -0
- package/dist/host/src/drivers/codex/settings.js.map +1 -0
- package/dist/host/src/drivers/images.d.ts +11 -0
- package/dist/host/src/drivers/images.js +34 -0
- package/dist/host/src/drivers/images.js.map +1 -0
- package/dist/host/src/drivers/nesting.d.ts +6 -0
- package/dist/host/src/drivers/nesting.js +25 -0
- package/dist/host/src/drivers/nesting.js.map +1 -0
- package/dist/host/src/drivers/registry.d.ts +21 -0
- package/dist/host/src/drivers/registry.js +30 -0
- package/dist/host/src/drivers/registry.js.map +1 -0
- package/dist/host/src/drivers/types.d.ts +105 -0
- package/dist/host/src/drivers/types.js +2 -0
- package/dist/host/src/drivers/types.js.map +1 -0
- package/dist/host/src/fs.d.ts +69 -0
- package/dist/host/src/fs.js +198 -0
- package/dist/host/src/fs.js.map +1 -0
- package/dist/host/src/gateway.d.ts +55 -0
- package/dist/host/src/gateway.js +263 -0
- package/dist/host/src/gateway.js.map +1 -0
- package/dist/host/src/host.d.ts +51 -0
- package/dist/host/src/host.js +133 -0
- package/dist/host/src/host.js.map +1 -0
- package/dist/host/src/hub.d.ts +89 -0
- package/dist/host/src/hub.js +592 -0
- package/dist/host/src/hub.js.map +1 -0
- package/dist/host/src/index.d.ts +10 -0
- package/dist/host/src/index.js +10 -0
- package/dist/host/src/index.js.map +1 -0
- package/dist/host/src/ports.d.ts +24 -0
- package/dist/host/src/ports.js +201 -0
- package/dist/host/src/ports.js.map +1 -0
- package/dist/host/src/rpc/client.d.ts +9 -0
- package/dist/host/src/rpc/client.js +42 -0
- package/dist/host/src/rpc/client.js.map +1 -0
- package/dist/host/src/rpc/server.d.ts +52 -0
- package/dist/host/src/rpc/server.js +293 -0
- package/dist/host/src/rpc/server.js.map +1 -0
- package/dist/host/src/screen.d.ts +30 -0
- package/dist/host/src/screen.js +230 -0
- package/dist/host/src/screen.js.map +1 -0
- package/dist/host/src/shell-env.d.ts +8 -0
- package/dist/host/src/shell-env.js +39 -0
- package/dist/host/src/shell-env.js.map +1 -0
- package/dist/host/src/store.d.ts +75 -0
- package/dist/host/src/store.js +265 -0
- package/dist/host/src/store.js.map +1 -0
- package/dist/host/src/terminals.d.ts +55 -0
- package/dist/host/src/terminals.js +367 -0
- package/dist/host/src/terminals.js.map +1 -0
- package/dist/shared-protocol/src/index.d.ts +3345 -3345
- package/dist/wire/src/crypto.d.ts +65 -0
- package/dist/wire/src/crypto.js +253 -0
- package/dist/wire/src/crypto.js.map +1 -0
- package/dist/wire/src/index.d.ts +8 -0
- package/dist/wire/src/index.js +9 -0
- package/dist/wire/src/index.js.map +1 -0
- package/dist/wire/src/model.d.ts +704 -0
- package/dist/wire/src/model.js +163 -0
- package/dist/wire/src/model.js.map +1 -0
- package/dist/wire/src/peer.d.ts +42 -0
- package/dist/wire/src/peer.js +143 -0
- package/dist/wire/src/peer.js.map +1 -0
- package/dist/wire/src/relay-client.d.ts +82 -0
- package/dist/wire/src/relay-client.js +259 -0
- package/dist/wire/src/relay-client.js.map +1 -0
- package/dist/wire/src/relay.d.ts +481 -0
- package/dist/wire/src/relay.js +129 -0
- package/dist/wire/src/relay.js.map +1 -0
- package/dist/wire/src/rpc.d.ts +4170 -0
- package/dist/wire/src/rpc.js +332 -0
- package/dist/wire/src/rpc.js.map +1 -0
- package/dist/wire/src/shell.d.ts +2 -0
- package/dist/wire/src/shell.js +62 -0
- package/dist/wire/src/shell.js.map +1 -0
- package/dist/wire/src/updates.d.ts +3325 -0
- package/dist/wire/src/updates.js +210 -0
- package/dist/wire/src/updates.js.map +1 -0
- package/package.json +8 -3
- package/src/commands/host.ts +283 -0
- package/src/commands/pair.ts +47 -0
- package/src/index.ts +73 -0
- package/src/utils/daemon.ts +4 -3
- package/dist/cli/src/commands/hook.d.ts +0 -6
- package/dist/cli/src/commands/hook.js +0 -120
- package/dist/cli/src/commands/hook.js.map +0 -1
- package/dist/cli/src/runtime/acp/agent-workspace-git.d.ts +0 -63
- package/dist/cli/src/runtime/acp/agent-workspace-git.js +0 -297
- package/dist/cli/src/runtime/acp/agent-workspace-git.js.map +0 -1
- package/dist/cli/src/runtime/acp-relay.d.ts +0 -23
- package/dist/cli/src/runtime/acp-relay.js +0 -73
- package/dist/cli/src/runtime/acp-relay.js.map +0 -1
- package/dist/cli/src/runtime/hook-permission-server.d.ts +0 -36
- package/dist/cli/src/runtime/hook-permission-server.js +0 -147
- 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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"}
|