@linkshell/wire 0.2.7 → 0.2.9
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/README.md +7 -1
- package/dist/acp.d.ts +510 -0
- package/dist/acp.js +39 -0
- package/dist/acp.js.map +1 -0
- package/dist/async-questions.d.ts +40 -0
- package/dist/async-questions.js +66 -0
- package/dist/async-questions.js.map +1 -0
- package/dist/computer-preview.d.ts +2 -2
- package/dist/content.d.ts +465 -0
- package/dist/content.js +58 -0
- package/dist/content.js.map +1 -0
- package/dist/editor.d.ts +702 -0
- package/dist/editor.js +23 -0
- package/dist/editor.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/model.d.ts +1413 -85
- package/dist/model.js +23 -1
- package/dist/model.js.map +1 -1
- package/dist/peer.d.ts +1 -0
- package/dist/peer.js +22 -6
- package/dist/peer.js.map +1 -1
- package/dist/questions.d.ts +3 -0
- package/dist/questions.js +65 -0
- package/dist/questions.js.map +1 -0
- package/dist/relay.d.ts +6 -6
- package/dist/rpc.d.ts +19941 -3048
- package/dist/rpc.js +41 -3
- package/dist/rpc.js.map +1 -1
- package/dist/updates.d.ts +3981 -1175
- package/dist/updates.js +48 -41
- package/dist/updates.js.map +1 -1
- package/dist/workflow.d.ts +2 -2
- package/package.json +1 -1
- package/src/acp.ts +49 -0
- package/src/async-questions.ts +69 -0
- package/src/content.ts +63 -0
- package/src/editor.ts +27 -0
- package/src/index.ts +4 -0
- package/src/model.ts +23 -1
- package/src/peer.ts +23 -9
- package/src/questions.ts +39 -0
- package/src/rpc.ts +44 -2
- package/src/updates.ts +50 -47
package/dist/updates.js
CHANGED
|
@@ -1,46 +1,13 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
+
import { asyncQuestionSchema } from "./async-questions.js";
|
|
2
3
|
import { sessionGoalSchema } from "./goal.js";
|
|
3
4
|
import { backgroundTaskSchema, permissionOptionSchema, questionAnswerSchema, questionSchema, sessionDriverSchema, sessionStateSchema, toolKindSchema } from "./model.js";
|
|
5
|
+
import { contentBlockSchema, toolCallContentSchema, toolCallStatusSchema } from "./content.js";
|
|
6
|
+
export * from "./content.js";
|
|
4
7
|
import { workflowAgentStateSchema, workflowSchema } from "./workflow.js";
|
|
5
8
|
// Session updates mirror ACP's `SessionUpdate` shapes (discriminated by
|
|
6
9
|
// `sessionUpdate`) so one renderer works for every agent. LinkShell-specific
|
|
7
10
|
// updates use the `ls_` prefix.
|
|
8
|
-
export const contentBlockSchema = z.discriminatedUnion("type", [
|
|
9
|
-
z.object({ type: z.literal("text"), text: z.string() }),
|
|
10
|
-
z.object({
|
|
11
|
-
type: z.literal("image"),
|
|
12
|
-
mimeType: z.string(),
|
|
13
|
-
data: z.string().optional(),
|
|
14
|
-
uri: z.string().optional(),
|
|
15
|
-
}),
|
|
16
|
-
z.object({
|
|
17
|
-
type: z.literal("resource_link"),
|
|
18
|
-
uri: z.string(),
|
|
19
|
-
name: z.string(),
|
|
20
|
-
/** What the link names: a file (default), a skill the user invoked, or another agent. */
|
|
21
|
-
kind: z.enum(["file", "skill", "agent"]).optional(),
|
|
22
|
-
}),
|
|
23
|
-
]);
|
|
24
|
-
export const toolCallStatusSchema = z.enum(["pending", "in_progress", "completed", "failed"]);
|
|
25
|
-
export const toolCallContentSchema = z.discriminatedUnion("type", [
|
|
26
|
-
z.object({ type: z.literal("content"), content: contentBlockSchema }),
|
|
27
|
-
/** ACP diff: full before/after text. */
|
|
28
|
-
z.object({
|
|
29
|
-
type: z.literal("diff"),
|
|
30
|
-
path: z.string(),
|
|
31
|
-
oldText: z.string().nullable().optional(),
|
|
32
|
-
newText: z.string(),
|
|
33
|
-
}),
|
|
34
|
-
/** Unified diff, for agents (Codex) that report patches rather than file text. */
|
|
35
|
-
z.object({
|
|
36
|
-
type: z.literal("patch"),
|
|
37
|
-
path: z.string(),
|
|
38
|
-
change: z.enum(["add", "delete", "update"]),
|
|
39
|
-
movePath: z.string().optional(),
|
|
40
|
-
diff: z.string(),
|
|
41
|
-
}),
|
|
42
|
-
z.object({ type: z.literal("terminal"), terminalId: z.string() }),
|
|
43
|
-
]);
|
|
44
11
|
export const toolCallLocationSchema = z.object({
|
|
45
12
|
path: z.string(),
|
|
46
13
|
line: z.number().int().optional(),
|
|
@@ -61,6 +28,8 @@ export const toolDetailSchema = z.discriminatedUnion("type", [
|
|
|
61
28
|
agentType: z.string().optional(),
|
|
62
29
|
/** A named agent's address, distinct from its role. */
|
|
63
30
|
name: z.string().optional(),
|
|
31
|
+
nativeSessionId: z.string().optional(),
|
|
32
|
+
canCancel: z.boolean().optional(),
|
|
64
33
|
model: z.string().optional(),
|
|
65
34
|
/** Agent outcome when a tool's coarse completed/failed state is insufficient. */
|
|
66
35
|
state: workflowAgentStateSchema.optional(),
|
|
@@ -80,16 +49,26 @@ export const planEntrySchema = z.object({
|
|
|
80
49
|
priority: z.enum(["high", "medium", "low"]).default("medium"),
|
|
81
50
|
status: z.enum(["pending", "in_progress", "completed"]),
|
|
82
51
|
});
|
|
83
|
-
export const stopReasonSchema = z.enum(["end_turn", "cancelled", "error", "max_tokens", "refusal"]);
|
|
52
|
+
export const stopReasonSchema = z.enum(["end_turn", "cancelled", "error", "max_tokens", "max_turn_requests", "refusal", "unknown"]);
|
|
84
53
|
export const sessionConfigOptionSchema = z.object({
|
|
85
54
|
/** Agent-defined id; "model" and "mode" are the common ones. */
|
|
86
55
|
id: z.string(),
|
|
87
56
|
name: z.string(),
|
|
88
|
-
|
|
57
|
+
description: z.string().optional(),
|
|
58
|
+
type: z.enum(["select", "boolean"]).optional(),
|
|
59
|
+
category: z.enum(["model", "model_config", "mode", "effort", "other"]).default("other"),
|
|
89
60
|
current: z.string(),
|
|
90
|
-
values: z.array(z.object({ value: z.string(), name: z.string(), description: z.string().optional() })),
|
|
61
|
+
values: z.array(z.object({ value: z.string(), name: z.string(), description: z.string().optional(), group: z.string().optional() })),
|
|
91
62
|
});
|
|
92
63
|
export const sessionUpdateSchema = z.discriminatedUnion("sessionUpdate", [
|
|
64
|
+
z.object({
|
|
65
|
+
sessionUpdate: z.literal("ls_message"),
|
|
66
|
+
messageId: z.string(), role: z.enum(["user", "agent", "thought", "session"]),
|
|
67
|
+
parentToolCallId: z.string().optional(),
|
|
68
|
+
content: z.array(contentBlockSchema).optional(),
|
|
69
|
+
append: z.boolean().optional(),
|
|
70
|
+
senderSessionId: z.string().optional(), recipientSessionId: z.string().optional(),
|
|
71
|
+
}),
|
|
93
72
|
z.object({
|
|
94
73
|
sessionUpdate: z.literal("user_message_chunk"),
|
|
95
74
|
messageId: z.string().optional(),
|
|
@@ -113,9 +92,11 @@ export const sessionUpdateSchema = z.discriminatedUnion("sessionUpdate", [
|
|
|
113
92
|
/** Set when a sub-agent made this call: the sub-agent's own (spawn) tool call. */
|
|
114
93
|
parentToolCallId: z.string().optional(),
|
|
115
94
|
title: z.string(),
|
|
95
|
+
name: z.string().optional(),
|
|
116
96
|
kind: toolKindSchema,
|
|
117
97
|
status: toolCallStatusSchema,
|
|
118
98
|
rawInput: z.unknown().optional(),
|
|
99
|
+
rawOutput: z.unknown().optional(),
|
|
119
100
|
content: z.array(toolCallContentSchema).optional(),
|
|
120
101
|
locations: z.array(toolCallLocationSchema).optional(),
|
|
121
102
|
detail: toolDetailSchema.optional(),
|
|
@@ -126,16 +107,28 @@ export const sessionUpdateSchema = z.discriminatedUnion("sessionUpdate", [
|
|
|
126
107
|
parentToolCallId: z.string().optional(),
|
|
127
108
|
status: toolCallStatusSchema.optional(),
|
|
128
109
|
title: z.string().optional(),
|
|
110
|
+
name: z.string().optional(),
|
|
111
|
+
kind: toolKindSchema.optional(),
|
|
112
|
+
rawInput: z.unknown().optional(),
|
|
113
|
+
locations: z.array(toolCallLocationSchema).optional(),
|
|
129
114
|
detail: toolDetailSchema.optional(),
|
|
130
115
|
/** Replaces the tool call's content when present. */
|
|
131
116
|
content: z.array(toolCallContentSchema).optional(),
|
|
132
117
|
/** Streamed output appended to the tool call's running output. */
|
|
133
118
|
appendOutput: z.string().optional(),
|
|
119
|
+
replaceOutput: z.string().optional(),
|
|
120
|
+
/** ACP v2 null/empty content clears every previous diff and attachment. */
|
|
121
|
+
replaceContent: z.boolean().optional(),
|
|
134
122
|
rawOutput: z.unknown().optional(),
|
|
135
123
|
}),
|
|
136
124
|
z.object({
|
|
137
125
|
sessionUpdate: z.literal("plan"),
|
|
138
126
|
entries: z.array(planEntrySchema),
|
|
127
|
+
planId: z.string().optional(),
|
|
128
|
+
title: z.string().optional(),
|
|
129
|
+
markdown: z.string().nullable().optional(),
|
|
130
|
+
path: z.string().nullable().optional(),
|
|
131
|
+
removed: z.boolean().optional(),
|
|
139
132
|
}),
|
|
140
133
|
z.object({
|
|
141
134
|
sessionUpdate: z.literal("ls_goal"),
|
|
@@ -151,15 +144,22 @@ export const sessionUpdateSchema = z.discriminatedUnion("sessionUpdate", [
|
|
|
151
144
|
}),
|
|
152
145
|
z.object({
|
|
153
146
|
sessionUpdate: z.literal("session_info_update"),
|
|
154
|
-
title: z.string().optional(),
|
|
147
|
+
title: z.string().nullable().optional(),
|
|
148
|
+
updatedAt: z.string().nullable().optional(),
|
|
155
149
|
model: z.string().optional(),
|
|
156
150
|
}),
|
|
157
151
|
z.object({
|
|
158
152
|
sessionUpdate: z.literal("usage_update"),
|
|
159
153
|
usedTokens: z.number().optional(),
|
|
160
154
|
contextWindow: z.number().optional(),
|
|
155
|
+
cost: z.object({ amount: z.number(), currency: z.string() }).nullable().optional(),
|
|
156
|
+
tokens: z.object({ totalTokens: z.number(), inputTokens: z.number(), outputTokens: z.number(), thoughtTokens: z.number().nullish(), cachedReadTokens: z.number().nullish(), cachedWriteTokens: z.number().nullish() }).optional(),
|
|
161
157
|
}),
|
|
162
158
|
// ── LinkShell extensions ──
|
|
159
|
+
z.object({
|
|
160
|
+
sessionUpdate: z.literal("ls_async_questions"),
|
|
161
|
+
questions: z.array(asyncQuestionSchema),
|
|
162
|
+
}),
|
|
163
163
|
z.object({
|
|
164
164
|
sessionUpdate: z.literal("ls_message_done"),
|
|
165
165
|
parentToolCallId: z.string().optional(),
|
|
@@ -170,7 +170,7 @@ export const sessionUpdateSchema = z.discriminatedUnion("sessionUpdate", [
|
|
|
170
170
|
* `request_user_input_async`): answered by an ordinary message that quotes
|
|
171
171
|
* them (`asyncQuestionReply`). An app that predates them shows the text only.
|
|
172
172
|
*/
|
|
173
|
-
questions: z.array(
|
|
173
|
+
questions: z.array(asyncQuestionSchema).optional(),
|
|
174
174
|
}),
|
|
175
175
|
/** Selectable session settings (model, permission mode, effort…) as the agent reports them. */
|
|
176
176
|
z.object({
|
|
@@ -194,9 +194,13 @@ export const sessionUpdateSchema = z.discriminatedUnion("sessionUpdate", [
|
|
|
194
194
|
z.object({
|
|
195
195
|
sessionUpdate: z.literal("ls_permission"),
|
|
196
196
|
requestId: z.string(),
|
|
197
|
+
childSessionId: z.string().optional(),
|
|
197
198
|
toolCallId: z.string().optional(),
|
|
198
199
|
title: z.string(),
|
|
199
200
|
detail: z.string().optional(),
|
|
201
|
+
tool: z.object({ title: z.string().optional(), kind: toolKindSchema.optional(), rawInput: z.unknown().optional(), content: z.array(toolCallContentSchema).optional(), locations: z.array(toolCallLocationSchema).optional() }).optional(),
|
|
202
|
+
/** URL interactions stay out of form answers and are opened only after consent. */
|
|
203
|
+
url: z.object({ url: z.string(), elicitationId: z.string() }).optional(),
|
|
200
204
|
options: z.array(permissionOptionSchema).min(1),
|
|
201
205
|
/**
|
|
202
206
|
* The agent is asking the user something: answer with `sessions.answer`.
|
|
@@ -220,6 +224,7 @@ export const sessionUpdateSchema = z.discriminatedUnion("sessionUpdate", [
|
|
|
220
224
|
z.object({
|
|
221
225
|
sessionUpdate: z.literal("ls_status"),
|
|
222
226
|
state: sessionStateSchema,
|
|
227
|
+
turnActive: z.boolean().optional(),
|
|
223
228
|
}),
|
|
224
229
|
/** A background task as it is now (the whole record each time: the latest for its id holds). */
|
|
225
230
|
z.object({
|
|
@@ -233,6 +238,8 @@ export const sessionUpdateSchema = z.discriminatedUnion("sessionUpdate", [
|
|
|
233
238
|
hint: z.string().optional(),
|
|
234
239
|
}),
|
|
235
240
|
]);
|
|
241
|
+
/** Live ACP notices are not session history and never change execution state. */
|
|
242
|
+
export const sessionNoticeSchema = z.object({ severity: z.string(), title: z.string(), description: z.string().optional() });
|
|
236
243
|
/** One entry in a session's append-only event log. */
|
|
237
244
|
export const sessionEventSchema = z.object({
|
|
238
245
|
sessionId: z.string(),
|
package/dist/updates.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"updates.js","sourceRoot":"","sources":["../src/updates.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,cAAc,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACzK,OAAO,EAAE,wBAAwB,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAEzE,wEAAwE;AACxE,6EAA6E;AAC7E,gCAAgC;AAEhC,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,kBAAkB,CAAC,MAAM,EAAE;IAC7D,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;IACvD,CAAC,CAAC,MAAM,CAAC;QACP,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;QACxB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;QACpB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC3B,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;KAC3B,CAAC;IACF,CAAC,CAAC,MAAM,CAAC;QACP,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC;QAChC,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;QACf,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;QAChB,yFAAyF;QACzF,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE;KACpD,CAAC;CACH,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,aAAa,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC;AAG9F,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,kBAAkB,CAAC,MAAM,EAAE;IAChE,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,kBAAkB,EAAE,CAAC;IACrE,wCAAwC;IACxC,CAAC,CAAC,MAAM,CAAC;QACP,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;QACvB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;QAChB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;QACzC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;KACpB,CAAC;IACF,kFAAkF;IAClF,CAAC,CAAC,MAAM,CAAC;QACP,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;QAChB,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAC3C,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC/B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;KACjB,CAAC;IACF,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;CAClE,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7C,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;CAClC,CAAC,CAAC;AAGH;;;;GAIG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,kBAAkB,CAAC,MAAM,EAAE;IAC3D,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;IAC1E,CAAC,CAAC,MAAM,CAAC;QACP,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC;QAC3B,uFAAuF;QACvF,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;QACvF,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC3B,oDAAoD;QACpD,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAChC,uDAAuD;QACvD,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC3B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC5B,iFAAiF;QACjF,KAAK,EAAE,wBAAwB,CAAC,QAAQ,EAAE;QAC1C,mHAAmH;QACnH,QAAQ,EAAE,cAAc,CAAC,QAAQ,EAAE;KACpC,CAAC;IACF,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC;IAC5F,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC;IACzE,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC;IAChF,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;IAC3C,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC,EAAE,CAAC;IAC/E,wFAAwF;IACxF,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC;CAC/F,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IACtC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;IAC7D,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,aAAa,EAAE,WAAW,CAAC,CAAC;CACxD,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,WAAW,EAAE,OAAO,EAAE,YAAY,EAAE,SAAS,CAAC,CAAC,CAAC;AAGpG,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC,MAAM,CAAC;IAChD,gEAAgE;IAChE,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;IACvE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;CACvG,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,kBAAkB,CAAC,eAAe,EAAE;IACvE,CAAC,CAAC,MAAM,CAAC;QACP,aAAa,EAAE,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC;QAC9C,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAChC,OAAO,EAAE,kBAAkB;KAC5B,CAAC;IACF,CAAC,CAAC,MAAM,CAAC;QACP,aAAa,EAAE,CAAC,CAAC,OAAO,CAAC,qBAAqB,CAAC;QAC/C,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QACvC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;QACrB,OAAO,EAAE,kBAAkB;KAC5B,CAAC;IACF,CAAC,CAAC,MAAM,CAAC;QACP,aAAa,EAAE,CAAC,CAAC,OAAO,CAAC,qBAAqB,CAAC;QAC/C,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QACvC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;QACrB,OAAO,EAAE,kBAAkB;KAC5B,CAAC;IACF,CAAC,CAAC,MAAM,CAAC;QACP,aAAa,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC;QACrC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;QACtB,kFAAkF;QAClF,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QACvC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;QACjB,IAAI,EAAE,cAAc;QACpB,MAAM,EAAE,oBAAoB;QAC5B,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;QAChC,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC,QAAQ,EAAE;QAClD,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC,QAAQ,EAAE;QACrD,MAAM,EAAE,gBAAgB,CAAC,QAAQ,EAAE;KACpC,CAAC;IACF,CAAC,CAAC,MAAM,CAAC;QACP,aAAa,EAAE,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC;QAC5C,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;QACtB,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QACvC,MAAM,EAAE,oBAAoB,CAAC,QAAQ,EAAE;QACvC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC5B,MAAM,EAAE,gBAAgB,CAAC,QAAQ,EAAE;QACnC,qDAAqD;QACrD,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC,QAAQ,EAAE;QAClD,kEAAkE;QAClE,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QACnC,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;KAClC,CAAC;IACF,CAAC,CAAC,MAAM,CAAC;QACP,aAAa,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;QAChC,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC;KAClC,CAAC;IACF,CAAC,CAAC,MAAM,CAAC;QACP,aAAa,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC;QACnC,IAAI,EAAE,iBAAiB,CAAC,QAAQ,EAAE;KACnC,CAAC;IACF,CAAC,CAAC,MAAM,CAAC;QACP,aAAa,EAAE,CAAC,CAAC,OAAO,CAAC,2BAA2B,CAAC;QACrD,iBAAiB,EAAE,CAAC,CAAC,KAAK,CACxB,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,CACrF;KACF,CAAC;IACF,CAAC,CAAC,MAAM,CAAC;QACP,aAAa,EAAE,CAAC,CAAC,OAAO,CAAC,qBAAqB,CAAC;QAC/C,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE;KAC1B,CAAC;IACF,CAAC,CAAC,MAAM,CAAC;QACP,aAAa,EAAE,CAAC,CAAC,OAAO,CAAC,qBAAqB,CAAC;QAC/C,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC5B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;KAC7B,CAAC;IACF,CAAC,CAAC,MAAM,CAAC;QACP,aAAa,EAAE,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC;QACxC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QACjC,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;KACrC,CAAC;IACF,6BAA6B;IAC7B,CAAC,CAAC,MAAM,CAAC;QACP,aAAa,EAAE,CAAC,CAAC,OAAO,CAAC,iBAAiB,CAAC;QAC3C,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QACvC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;QACrB,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;QAC1C;;;;WAIG;QACH,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE;KAC7G,CAAC;IACF,+FAA+F;IAC/F,CAAC,CAAC,MAAM,CAAC;QACP,aAAa,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC;QACrC,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,yBAAyB,CAAC;KAC5C,CAAC;IACF,CAAC,CAAC,MAAM,CAAC;QACP,aAAa,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC;QACrC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QAClC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;QACjB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;KAC9B,CAAC;IACF,CAAC,CAAC,MAAM,CAAC;QACP,aAAa,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC;QACnC,4EAA4E;QAC5E,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QACvC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QACnC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC7B,UAAU,EAAE,gBAAgB,CAAC,QAAQ,EAAE;KACxC,CAAC;IACF,CAAC,CAAC,MAAM,CAAC;QACP,aAAa,EAAE,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC;QACzC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;QACrB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QACjC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;QACjB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC7B,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAC/C;;;;WAIG;QACH,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,QAAQ,EAAE;KAC9C,CAAC;IACF,CAAC,CAAC,MAAM,CAAC;QACP,aAAa,EAAE,CAAC,CAAC,OAAO,CAAC,wBAAwB,CAAC;QAClD,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;QACrB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC/B,mDAAmD;QACnD,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC,QAAQ,EAAE;KAClD,CAAC;IACF,CAAC,CAAC,MAAM,CAAC;QACP,aAAa,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC;QACrC,MAAM,EAAE,mBAAmB;QAC3B,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;KAChC,CAAC;IACF,CAAC,CAAC,MAAM,CAAC;QACP,aAAa,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC;QACrC,KAAK,EAAE,kBAAkB;KAC1B,CAAC;IACF,gGAAgG;IAChG,CAAC,CAAC,MAAM,CAAC;QACP,aAAa,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC;QACnC,IAAI,EAAE,oBAAoB;KAC3B,CAAC;IACF,CAAC,CAAC,MAAM,CAAC;QACP,aAAa,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC;QACpC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;QAChB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;QACnB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;KAC5B,CAAC;CACH,CAAC,CAAC;AAIH,sDAAsD;AACtD,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;IAChC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,MAAM,EAAE,mBAAmB;CAC5B,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"updates.js","sourceRoot":"","sources":["../src/updates.ts"],"names":[],"mappings":"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"}
|
package/dist/workflow.d.ts
CHANGED
|
@@ -126,6 +126,7 @@ export declare const workflowSchema: z.ZodObject<{
|
|
|
126
126
|
result?: string | undefined;
|
|
127
127
|
}>, "many">>;
|
|
128
128
|
}, "strip", z.ZodTypeAny, {
|
|
129
|
+
name?: string | undefined;
|
|
129
130
|
completed?: number | undefined;
|
|
130
131
|
state?: "paused" | "running" | "completed" | "failed" | "stopped" | undefined;
|
|
131
132
|
tokens?: number | undefined;
|
|
@@ -133,7 +134,6 @@ export declare const workflowSchema: z.ZodObject<{
|
|
|
133
134
|
startedAt?: number | undefined;
|
|
134
135
|
endedAt?: number | undefined;
|
|
135
136
|
runId?: string | undefined;
|
|
136
|
-
name?: string | undefined;
|
|
137
137
|
started?: number | undefined;
|
|
138
138
|
phases?: {
|
|
139
139
|
id: string;
|
|
@@ -155,6 +155,7 @@ export declare const workflowSchema: z.ZodObject<{
|
|
|
155
155
|
result?: string | undefined;
|
|
156
156
|
}[] | undefined;
|
|
157
157
|
}, {
|
|
158
|
+
name?: string | undefined;
|
|
158
159
|
completed?: number | undefined;
|
|
159
160
|
state?: "paused" | "running" | "completed" | "failed" | "stopped" | undefined;
|
|
160
161
|
tokens?: number | undefined;
|
|
@@ -162,7 +163,6 @@ export declare const workflowSchema: z.ZodObject<{
|
|
|
162
163
|
startedAt?: number | undefined;
|
|
163
164
|
endedAt?: number | undefined;
|
|
164
165
|
runId?: string | undefined;
|
|
165
|
-
name?: string | undefined;
|
|
166
166
|
started?: number | undefined;
|
|
167
167
|
phases?: {
|
|
168
168
|
id: string;
|
package/package.json
CHANGED
package/src/acp.ts
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
|
|
3
|
+
const env = z.record(z.string());
|
|
4
|
+
export const mcpServerSchema = z.discriminatedUnion("type", [
|
|
5
|
+
z.object({ type: z.literal("stdio"), name: z.string().min(1), command: z.string().min(1), args: z.array(z.string()).default([]), env: env.default({}) }),
|
|
6
|
+
z.object({ type: z.literal("http"), name: z.string().min(1), url: z.string().url(), headers: env.default({}) }),
|
|
7
|
+
z.object({ type: z.literal("sse"), name: z.string().min(1), url: z.string().url(), headers: env.default({}) }),
|
|
8
|
+
z.object({ type: z.literal("acp"), name: z.string().min(1), command: z.string().min(1), args: z.array(z.string()).default([]), env: env.default({}) }),
|
|
9
|
+
]);
|
|
10
|
+
export type AcpMcpServer = z.infer<typeof mcpServerSchema>;
|
|
11
|
+
|
|
12
|
+
/** Session tool configuration is persisted on the host, outside the transcript. */
|
|
13
|
+
export const acpAgentSettingsSchema = z.object({
|
|
14
|
+
protocolVersion: z.union([z.literal(1), z.literal(2)]).default(1),
|
|
15
|
+
experimental: z.boolean().default(true),
|
|
16
|
+
mcpServers: z.array(mcpServerSchema).max(32).default([]),
|
|
17
|
+
additionalDirectories: z.array(z.string().min(1)).max(32).default([]),
|
|
18
|
+
});
|
|
19
|
+
export type AcpAgentSettings = z.infer<typeof acpAgentSettingsSchema>;
|
|
20
|
+
|
|
21
|
+
export const acpRemoteAgentSchema = z.object({
|
|
22
|
+
id: z.string().regex(/^[a-z][a-z0-9_-]{0,63}$/),
|
|
23
|
+
label: z.string().min(1).max(80),
|
|
24
|
+
transport: z.enum(["stdio", "http", "websocket"]),
|
|
25
|
+
command: z.string().optional(), args: z.array(z.string()).default([]),
|
|
26
|
+
url: z.string().url().optional(),
|
|
27
|
+
/** Header name to environment-variable name. The UI does not store secrets. */
|
|
28
|
+
headerEnv: env.default({}),
|
|
29
|
+
settings: acpAgentSettingsSchema.default({}),
|
|
30
|
+
});
|
|
31
|
+
export type AcpRemoteAgent = z.infer<typeof acpRemoteAgentSchema>;
|
|
32
|
+
|
|
33
|
+
export const acpAuthMethodSchema = z.object({ id: z.string(), name: z.string(), description: z.string().optional(), type: z.enum(["agent", "terminal"]) });
|
|
34
|
+
export const acpFeaturesSchema = z.object({
|
|
35
|
+
protocolVersion: z.number(),
|
|
36
|
+
authMethods: z.array(acpAuthMethodSchema),
|
|
37
|
+
logout: z.boolean(), providers: z.boolean(), nes: z.boolean(),
|
|
38
|
+
additionalDirectories: z.boolean(), mcpHttp: z.boolean(), mcpSse: z.boolean(),
|
|
39
|
+
});
|
|
40
|
+
export type AcpFeatures = z.infer<typeof acpFeaturesSchema>;
|
|
41
|
+
|
|
42
|
+
export const acpProviderSchema = z.object({
|
|
43
|
+
providerId: z.string(), supported: z.array(z.string()), required: z.boolean(),
|
|
44
|
+
current: z.object({ apiType: z.string(), baseUrl: z.string() }).nullish(),
|
|
45
|
+
});
|
|
46
|
+
export type AcpProvider = z.infer<typeof acpProviderSchema>;
|
|
47
|
+
|
|
48
|
+
/** Editor payloads follow ACP's versioned schema; the host validates before forwarding. */
|
|
49
|
+
export const acpEditorOperationSchema = z.enum(["nes/start", "nes/suggest", "nes/close", "nes/accept", "nes/reject", "document/didOpen", "document/didChange", "document/didClose", "document/didSave", "document/didFocus"]);
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import type { SessionUpdate } from "./updates.js";
|
|
3
|
+
|
|
4
|
+
/** A question an agent's message asks without stopping its turn; `id` is what the answer quotes. */
|
|
5
|
+
export const asyncQuestionSchema = z.object({ id: z.string(), title: z.string(), options: z.array(z.string()) });
|
|
6
|
+
export type AsyncQuestion = z.infer<typeof asyncQuestionSchema>;
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* The message that answers async questions, as Codex Desktop writes it: the
|
|
10
|
+
* agent reads it as the answer, and Desktop (and this app) shows it as one.
|
|
11
|
+
*/
|
|
12
|
+
export function asyncQuestionReply(answers: { question: AsyncQuestion; answer: string }[]): string {
|
|
13
|
+
const entries = answers.map(({ question, answer }) => ({ questionItemId: question.id, question: question.title, answer }));
|
|
14
|
+
return `<send_user_message_question_reply>\n${JSON.stringify(entries)}\n</send_user_message_question_reply>\n`;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export interface QuestionReply {
|
|
18
|
+
/** The question's id, where the reply names it. */
|
|
19
|
+
id?: string;
|
|
20
|
+
question: string;
|
|
21
|
+
answer: string;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* The answers in a reply to async questions, as Codex Desktop writes one (and shows it: each question with
|
|
26
|
+
* its answer). Anything that isn't exactly the envelope is not a reply.
|
|
27
|
+
*/
|
|
28
|
+
export function questionReplies(text: string): QuestionReply[] | undefined {
|
|
29
|
+
const match = /^<send_user_message_question_reply>\s*([\s\S]+?)\s*<\/send_user_message_question_reply>$/.exec(text.replace(/\r\n/g, "\n").trim());
|
|
30
|
+
if (!match) return undefined;
|
|
31
|
+
let parsed: unknown;
|
|
32
|
+
try {
|
|
33
|
+
parsed = JSON.parse(match[1]!);
|
|
34
|
+
} catch {
|
|
35
|
+
return undefined;
|
|
36
|
+
}
|
|
37
|
+
const entries = Array.isArray(parsed) ? parsed : [parsed];
|
|
38
|
+
if (entries.length === 0) return undefined;
|
|
39
|
+
const replies: QuestionReply[] = [];
|
|
40
|
+
for (const entry of entries) {
|
|
41
|
+
if (!entry || typeof entry !== "object") return undefined;
|
|
42
|
+
const { questionItemId, question, answer } = entry as Record<string, unknown>;
|
|
43
|
+
if (typeof question !== "string" || typeof answer !== "string") return undefined;
|
|
44
|
+
replies.push({ ...(typeof questionItemId === "string" ? { id: questionItemId } : {}), question: question.trim(), answer: answer.trim() });
|
|
45
|
+
}
|
|
46
|
+
return replies;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/** What a message answers, by question id, if it is such a reply. */
|
|
50
|
+
export function answeredQuestions(text: string): [id: string, answer: string][] {
|
|
51
|
+
return (questionReplies(text) ?? []).flatMap((reply): [string, string][] => (reply.id ? [[reply.id, reply.answer]] : []));
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
/** Keeps attention separate from running: async questions do not stop the agent. */
|
|
55
|
+
export function updateAsyncQuestions(pending: AsyncQuestion[], update: SessionUpdate): AsyncQuestion[] {
|
|
56
|
+
if ("parentToolCallId" in update && update.parentToolCallId) return pending;
|
|
57
|
+
if (update.sessionUpdate === "ls_async_questions") return update.questions;
|
|
58
|
+
if (update.sessionUpdate === "ls_turn") return [];
|
|
59
|
+
if (update.sessionUpdate === "ls_message_done" && update.role === "agent" && update.questions?.length) {
|
|
60
|
+
const merged = new Map(pending.map((question) => [question.id, question]));
|
|
61
|
+
for (const question of update.questions) merged.set(question.id, question);
|
|
62
|
+
return [...merged.values()];
|
|
63
|
+
}
|
|
64
|
+
if (update.sessionUpdate === "user_message_chunk" && update.content.type === "text") {
|
|
65
|
+
const answered = new Set(answeredQuestions(update.content.text).map(([id]) => id));
|
|
66
|
+
if (answered.size) return pending.filter((question) => !answered.has(question.id));
|
|
67
|
+
}
|
|
68
|
+
return pending;
|
|
69
|
+
}
|
package/src/content.ts
ADDED
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
|
|
3
|
+
const optionalString = z.string().nullish().transform((value) => value ?? undefined);
|
|
4
|
+
const optionalMeta = z.record(z.unknown()).nullish().transform((value) => value ?? undefined);
|
|
5
|
+
const contentMetadata = {
|
|
6
|
+
annotations: z.object({ audience: z.array(z.enum(["user", "assistant"])).nullish().transform((value) => value ?? undefined), priority: z.number().nullish().transform((value) => value ?? undefined), lastModified: optionalString }).passthrough().nullish().transform((value) => value ?? undefined),
|
|
7
|
+
_meta: optionalMeta,
|
|
8
|
+
};
|
|
9
|
+
const contentVariants = z.discriminatedUnion("type", [
|
|
10
|
+
z.object({ type: z.literal("text"), text: z.string(), ...contentMetadata }),
|
|
11
|
+
z.object({
|
|
12
|
+
type: z.literal("image"),
|
|
13
|
+
mimeType: z.string(),
|
|
14
|
+
data: optionalString,
|
|
15
|
+
uri: optionalString,
|
|
16
|
+
...contentMetadata,
|
|
17
|
+
}),
|
|
18
|
+
z.object({ type: z.literal("audio"), mimeType: z.string(), data: optionalString, uri: optionalString, ...contentMetadata }),
|
|
19
|
+
z.object({
|
|
20
|
+
type: z.literal("resource"),
|
|
21
|
+
resource: z.object({ uri: z.string(), mimeType: optionalString, text: optionalString, blob: optionalString, assetUri: optionalString, _meta: optionalMeta }),
|
|
22
|
+
...contentMetadata,
|
|
23
|
+
}),
|
|
24
|
+
z.object({
|
|
25
|
+
type: z.literal("resource_link"),
|
|
26
|
+
uri: z.string(),
|
|
27
|
+
name: z.string(),
|
|
28
|
+
title: optionalString,
|
|
29
|
+
description: optionalString,
|
|
30
|
+
mimeType: optionalString,
|
|
31
|
+
size: z.number().nullish().transform((value) => value ?? undefined),
|
|
32
|
+
...contentMetadata,
|
|
33
|
+
/** What the link names: a file (default), a skill the user invoked, or another agent. */
|
|
34
|
+
kind: z.enum(["file", "skill", "agent"]).optional(),
|
|
35
|
+
}),
|
|
36
|
+
]);
|
|
37
|
+
export type ContentBlock = z.infer<typeof contentVariants>;
|
|
38
|
+
// Hide the nested validator implementation from every exported RPC declaration.
|
|
39
|
+
export const contentBlockSchema: z.ZodType<ContentBlock, z.ZodTypeDef, unknown> = contentVariants;
|
|
40
|
+
|
|
41
|
+
export const toolCallStatusSchema = z.enum(["pending", "in_progress", "completed", "failed"]);
|
|
42
|
+
export type ToolCallStatus = z.infer<typeof toolCallStatusSchema>;
|
|
43
|
+
|
|
44
|
+
export const toolCallContentSchema = z.discriminatedUnion("type", [
|
|
45
|
+
z.object({ type: z.literal("content"), content: contentBlockSchema }),
|
|
46
|
+
/** ACP diff: full before/after text. */
|
|
47
|
+
z.object({
|
|
48
|
+
type: z.literal("diff"),
|
|
49
|
+
path: z.string(),
|
|
50
|
+
oldText: z.string().nullable().optional(),
|
|
51
|
+
newText: z.string(),
|
|
52
|
+
}),
|
|
53
|
+
/** Unified diff, for agents (Codex) that report patches rather than file text. */
|
|
54
|
+
z.object({
|
|
55
|
+
type: z.literal("patch"),
|
|
56
|
+
path: z.string(),
|
|
57
|
+
change: z.enum(["add", "delete", "update"]),
|
|
58
|
+
movePath: z.string().optional(),
|
|
59
|
+
diff: z.string(),
|
|
60
|
+
}),
|
|
61
|
+
z.object({ type: z.literal("terminal"), terminalId: z.string() }),
|
|
62
|
+
]);
|
|
63
|
+
export type ToolCallContent = z.infer<typeof toolCallContentSchema>;
|
package/src/editor.ts
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
|
|
3
|
+
export const textPositionSchema = z.object({ line: z.number().int().nonnegative(), character: z.number().int().nonnegative() });
|
|
4
|
+
export const textRangeSchema = z.object({ start: textPositionSchema, end: textPositionSchema });
|
|
5
|
+
export type TextPosition = z.infer<typeof textPositionSchema>;
|
|
6
|
+
const suggestion = { id: z.string(), uri: z.string() };
|
|
7
|
+
export const editSuggestionSchema = z.discriminatedUnion("kind", [
|
|
8
|
+
z.object({ kind: z.literal("edit"), ...suggestion, edits: z.array(z.object({ range: textRangeSchema, newText: z.string() })), cursorPosition: textPositionSchema.nullish() }),
|
|
9
|
+
z.object({ kind: z.literal("jump"), ...suggestion, position: textPositionSchema }),
|
|
10
|
+
z.object({ kind: z.literal("rename"), ...suggestion, position: textPositionSchema, newName: z.string() }),
|
|
11
|
+
z.object({ kind: z.literal("searchAndReplace"), ...suggestion, search: z.string(), replace: z.string(), isRegex: z.boolean().nullish() }),
|
|
12
|
+
]);
|
|
13
|
+
export type EditSuggestion = z.infer<typeof editSuggestionSchema>;
|
|
14
|
+
export const editorRequestSchema = z.object({
|
|
15
|
+
agent: z.string(), operation: z.enum(["open", "suggest", "preview", "apply", "save", "reject", "close"]),
|
|
16
|
+
editorId: z.string().optional(), cwd: z.string().optional(), path: z.string().optional(),
|
|
17
|
+
text: z.string().max(262144).optional(), position: textPositionSchema.optional(),
|
|
18
|
+
suggestionId: z.string().optional(), previewId: z.string().optional(),
|
|
19
|
+
});
|
|
20
|
+
export type EditorRequest = z.infer<typeof editorRequestSchema>;
|
|
21
|
+
export const editorResultSchema = z.object({
|
|
22
|
+
editorId: z.string().optional(), path: z.string().optional(), text: z.string().optional(), version: z.number().optional(),
|
|
23
|
+
suggestions: z.array(editSuggestionSchema).optional(),
|
|
24
|
+
preview: z.object({ id: z.string(), path: z.string(), before: z.string(), after: z.string(), kind: z.enum(["edit", "jump", "searchAndReplace"]), position: textPositionSchema.optional() }).optional(),
|
|
25
|
+
position: textPositionSchema.optional(),
|
|
26
|
+
});
|
|
27
|
+
export type EditorResult = z.infer<typeof editorResultSchema>;
|
package/src/index.ts
CHANGED
|
@@ -10,3 +10,7 @@ export * from "./relay.js";
|
|
|
10
10
|
export * from "./relay-client.js";
|
|
11
11
|
export * from "./direct.js";
|
|
12
12
|
export * from "./computer-preview.js";
|
|
13
|
+
export * from "./async-questions.js";
|
|
14
|
+
export * from "./questions.js";
|
|
15
|
+
export * from "./acp.js";
|
|
16
|
+
export * from "./editor.js";
|
package/src/model.ts
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
+
import { asyncQuestionSchema } from "./async-questions.js";
|
|
2
3
|
import { workflowAgentStateSchema, workflowSchema } from "./workflow.js";
|
|
4
|
+
import { toolCallContentSchema } from "./content.js";
|
|
3
5
|
|
|
4
6
|
/**
|
|
5
7
|
* How far LinkShell can take a given agent. The UI renders capabilities from
|
|
@@ -20,6 +22,10 @@ export const agentCapabilitiesSchema = z.object({
|
|
|
20
22
|
steer: z.boolean(),
|
|
21
23
|
permissions: z.boolean(),
|
|
22
24
|
images: z.boolean(),
|
|
25
|
+
audio: z.boolean().optional(),
|
|
26
|
+
embeddedContext: z.boolean().optional(),
|
|
27
|
+
/** Host-managed ACP settings and optional protocol features. */
|
|
28
|
+
acp: z.boolean().optional(),
|
|
23
29
|
/**
|
|
24
30
|
* The agent forks sessions itself, keeping everything it knew. Every agent's
|
|
25
31
|
* sessions can be forked: without this (or from a single reply, where the
|
|
@@ -66,7 +72,7 @@ export type AgentInfo = z.infer<typeof agentInfoSchema>;
|
|
|
66
72
|
export const sessionDriverSchema = z.enum(["desktop", "remote", "none"]);
|
|
67
73
|
export type SessionDriver = z.infer<typeof sessionDriverSchema>;
|
|
68
74
|
|
|
69
|
-
export const sessionStateSchema = z.enum(["idle", "running", "waiting", "error", "offline"]);
|
|
75
|
+
export const sessionStateSchema = z.enum(["idle", "running", "waiting", "error", "offline", "unknown"]);
|
|
70
76
|
export type SessionState = z.infer<typeof sessionStateSchema>;
|
|
71
77
|
|
|
72
78
|
export const toolKindSchema = z.enum([
|
|
@@ -78,6 +84,7 @@ export const toolKindSchema = z.enum([
|
|
|
78
84
|
"execute",
|
|
79
85
|
"think",
|
|
80
86
|
"fetch",
|
|
87
|
+
"switch_mode",
|
|
81
88
|
"other",
|
|
82
89
|
]);
|
|
83
90
|
export type ToolKind = z.infer<typeof toolKindSchema>;
|
|
@@ -105,6 +112,14 @@ export type SessionActivity = z.infer<typeof sessionActivitySchema>;
|
|
|
105
112
|
*/
|
|
106
113
|
export const questionSchema = z.object({
|
|
107
114
|
id: z.string(),
|
|
115
|
+
constraints: z.object({
|
|
116
|
+
type: z.enum(["string", "number", "integer", "boolean", "array"]),
|
|
117
|
+
minimum: z.number().optional(), maximum: z.number().optional(),
|
|
118
|
+
minLength: z.number().int().nonnegative().optional(), maxLength: z.number().int().nonnegative().optional(),
|
|
119
|
+
minItems: z.number().int().nonnegative().optional(), maxItems: z.number().int().nonnegative().optional(),
|
|
120
|
+
pattern: z.string().optional(), format: z.string().optional(),
|
|
121
|
+
}).optional(),
|
|
122
|
+
defaults: z.array(z.string()).optional(),
|
|
108
123
|
/** A short label for the question ("Auth method"). */
|
|
109
124
|
header: z.string().optional(),
|
|
110
125
|
text: z.string(),
|
|
@@ -130,9 +145,12 @@ export type QuestionAnswer = z.infer<typeof questionAnswerSchema>;
|
|
|
130
145
|
|
|
131
146
|
export const pendingPermissionSchema = z.object({
|
|
132
147
|
requestId: z.string(),
|
|
148
|
+
childSessionId: z.string().optional(),
|
|
133
149
|
toolCallId: z.string().optional(),
|
|
134
150
|
title: z.string(),
|
|
135
151
|
detail: z.string().optional(),
|
|
152
|
+
tool: z.object({ title: z.string().optional(), kind: toolKindSchema.optional(), rawInput: z.unknown().optional(), content: z.array(toolCallContentSchema).optional(), locations: z.array(z.object({ path: z.string(), line: z.number().int().optional() })).optional() }).optional(),
|
|
153
|
+
url: z.object({ url: z.string(), elicitationId: z.string() }).optional(),
|
|
136
154
|
options: z.array(permissionOptionSchema).min(1),
|
|
137
155
|
/** Set when this is a question to answer (`sessions.answer`) rather than a permission to give. */
|
|
138
156
|
questions: z.array(questionSchema).optional(),
|
|
@@ -149,6 +167,8 @@ export type QueuedMessage = z.infer<typeof queuedMessageSchema>;
|
|
|
149
167
|
|
|
150
168
|
/** A sub-agent a session started: the tool call it runs under, and how it is doing. */
|
|
151
169
|
export const subagentInfoSchema = z.object({
|
|
170
|
+
nativeSessionId: z.string().optional(),
|
|
171
|
+
canCancel: z.boolean().optional(),
|
|
152
172
|
toolCallId: z.string(),
|
|
153
173
|
parentToolCallId: z.string().optional(),
|
|
154
174
|
/** What it was asked to do. */
|
|
@@ -218,6 +238,8 @@ export const sessionSummarySchema = z.object({
|
|
|
218
238
|
archived: z.boolean(),
|
|
219
239
|
activity: sessionActivitySchema.optional(),
|
|
220
240
|
permission: pendingPermissionSchema.optional(),
|
|
241
|
+
/** Unanswered questions in the current turn, even while the agent continues working. */
|
|
242
|
+
asyncQuestions: z.array(asyncQuestionSchema).optional(),
|
|
221
243
|
/**
|
|
222
244
|
* Live only: messages waiting for the current turn to end, when the host
|
|
223
245
|
* holds them (agents that can't take input mid-turn). Oldest first.
|