@linkshell/wire 0.2.8 → 0.2.10
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/acp.d.ts +510 -0
- package/dist/acp.js +39 -0
- package/dist/acp.js.map +1 -0
- 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/goal.d.ts +2 -2
- package/dist/index.d.ts +3 -0
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/model.d.ts +1387 -83
- package/dist/model.js +20 -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 +4 -4
- package/dist/rpc.d.ts +21012 -4507
- package/dist/rpc.js +41 -3
- package/dist/rpc.js.map +1 -1
- package/dist/updates.d.ts +3854 -1120
- package/dist/updates.js +42 -40
- 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/content.ts +63 -0
- package/src/editor.ts +27 -0
- package/src/index.ts +3 -0
- package/src/model.ts +20 -1
- package/src/peer.ts +23 -9
- package/src/questions.ts +39 -0
- package/src/rpc.ts +44 -2
- package/src/updates.ts +44 -46
package/dist/updates.js
CHANGED
|
@@ -2,46 +2,12 @@ import { z } from "zod";
|
|
|
2
2
|
import { asyncQuestionSchema } from "./async-questions.js";
|
|
3
3
|
import { sessionGoalSchema } from "./goal.js";
|
|
4
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";
|
|
5
7
|
import { workflowAgentStateSchema, workflowSchema } from "./workflow.js";
|
|
6
8
|
// Session updates mirror ACP's `SessionUpdate` shapes (discriminated by
|
|
7
9
|
// `sessionUpdate`) so one renderer works for every agent. LinkShell-specific
|
|
8
10
|
// updates use the `ls_` prefix.
|
|
9
|
-
export const contentBlockSchema = z.discriminatedUnion("type", [
|
|
10
|
-
z.object({ type: z.literal("text"), text: z.string() }),
|
|
11
|
-
z.object({
|
|
12
|
-
type: z.literal("image"),
|
|
13
|
-
mimeType: z.string(),
|
|
14
|
-
data: z.string().optional(),
|
|
15
|
-
uri: z.string().optional(),
|
|
16
|
-
}),
|
|
17
|
-
z.object({
|
|
18
|
-
type: z.literal("resource_link"),
|
|
19
|
-
uri: z.string(),
|
|
20
|
-
name: z.string(),
|
|
21
|
-
/** What the link names: a file (default), a skill the user invoked, or another agent. */
|
|
22
|
-
kind: z.enum(["file", "skill", "agent"]).optional(),
|
|
23
|
-
}),
|
|
24
|
-
]);
|
|
25
|
-
export const toolCallStatusSchema = z.enum(["pending", "in_progress", "completed", "failed"]);
|
|
26
|
-
export const toolCallContentSchema = z.discriminatedUnion("type", [
|
|
27
|
-
z.object({ type: z.literal("content"), content: contentBlockSchema }),
|
|
28
|
-
/** ACP diff: full before/after text. */
|
|
29
|
-
z.object({
|
|
30
|
-
type: z.literal("diff"),
|
|
31
|
-
path: z.string(),
|
|
32
|
-
oldText: z.string().nullable().optional(),
|
|
33
|
-
newText: z.string(),
|
|
34
|
-
}),
|
|
35
|
-
/** Unified diff, for agents (Codex) that report patches rather than file text. */
|
|
36
|
-
z.object({
|
|
37
|
-
type: z.literal("patch"),
|
|
38
|
-
path: z.string(),
|
|
39
|
-
change: z.enum(["add", "delete", "update"]),
|
|
40
|
-
movePath: z.string().optional(),
|
|
41
|
-
diff: z.string(),
|
|
42
|
-
}),
|
|
43
|
-
z.object({ type: z.literal("terminal"), terminalId: z.string() }),
|
|
44
|
-
]);
|
|
45
11
|
export const toolCallLocationSchema = z.object({
|
|
46
12
|
path: z.string(),
|
|
47
13
|
line: z.number().int().optional(),
|
|
@@ -62,6 +28,8 @@ export const toolDetailSchema = z.discriminatedUnion("type", [
|
|
|
62
28
|
agentType: z.string().optional(),
|
|
63
29
|
/** A named agent's address, distinct from its role. */
|
|
64
30
|
name: z.string().optional(),
|
|
31
|
+
nativeSessionId: z.string().optional(),
|
|
32
|
+
canCancel: z.boolean().optional(),
|
|
65
33
|
model: z.string().optional(),
|
|
66
34
|
/** Agent outcome when a tool's coarse completed/failed state is insufficient. */
|
|
67
35
|
state: workflowAgentStateSchema.optional(),
|
|
@@ -81,16 +49,26 @@ export const planEntrySchema = z.object({
|
|
|
81
49
|
priority: z.enum(["high", "medium", "low"]).default("medium"),
|
|
82
50
|
status: z.enum(["pending", "in_progress", "completed"]),
|
|
83
51
|
});
|
|
84
|
-
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"]);
|
|
85
53
|
export const sessionConfigOptionSchema = z.object({
|
|
86
54
|
/** Agent-defined id; "model" and "mode" are the common ones. */
|
|
87
55
|
id: z.string(),
|
|
88
56
|
name: z.string(),
|
|
89
|
-
|
|
57
|
+
description: z.string().optional(),
|
|
58
|
+
type: z.enum(["select", "boolean"]).optional(),
|
|
59
|
+
category: z.enum(["model", "model_config", "mode", "effort", "other"]).default("other"),
|
|
90
60
|
current: z.string(),
|
|
91
|
-
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() })),
|
|
92
62
|
});
|
|
93
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
|
+
}),
|
|
94
72
|
z.object({
|
|
95
73
|
sessionUpdate: z.literal("user_message_chunk"),
|
|
96
74
|
messageId: z.string().optional(),
|
|
@@ -114,9 +92,11 @@ export const sessionUpdateSchema = z.discriminatedUnion("sessionUpdate", [
|
|
|
114
92
|
/** Set when a sub-agent made this call: the sub-agent's own (spawn) tool call. */
|
|
115
93
|
parentToolCallId: z.string().optional(),
|
|
116
94
|
title: z.string(),
|
|
95
|
+
name: z.string().optional(),
|
|
117
96
|
kind: toolKindSchema,
|
|
118
97
|
status: toolCallStatusSchema,
|
|
119
98
|
rawInput: z.unknown().optional(),
|
|
99
|
+
rawOutput: z.unknown().optional(),
|
|
120
100
|
content: z.array(toolCallContentSchema).optional(),
|
|
121
101
|
locations: z.array(toolCallLocationSchema).optional(),
|
|
122
102
|
detail: toolDetailSchema.optional(),
|
|
@@ -127,16 +107,28 @@ export const sessionUpdateSchema = z.discriminatedUnion("sessionUpdate", [
|
|
|
127
107
|
parentToolCallId: z.string().optional(),
|
|
128
108
|
status: toolCallStatusSchema.optional(),
|
|
129
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(),
|
|
130
114
|
detail: toolDetailSchema.optional(),
|
|
131
115
|
/** Replaces the tool call's content when present. */
|
|
132
116
|
content: z.array(toolCallContentSchema).optional(),
|
|
133
117
|
/** Streamed output appended to the tool call's running output. */
|
|
134
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(),
|
|
135
122
|
rawOutput: z.unknown().optional(),
|
|
136
123
|
}),
|
|
137
124
|
z.object({
|
|
138
125
|
sessionUpdate: z.literal("plan"),
|
|
139
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(),
|
|
140
132
|
}),
|
|
141
133
|
z.object({
|
|
142
134
|
sessionUpdate: z.literal("ls_goal"),
|
|
@@ -152,13 +144,16 @@ export const sessionUpdateSchema = z.discriminatedUnion("sessionUpdate", [
|
|
|
152
144
|
}),
|
|
153
145
|
z.object({
|
|
154
146
|
sessionUpdate: z.literal("session_info_update"),
|
|
155
|
-
title: z.string().optional(),
|
|
147
|
+
title: z.string().nullable().optional(),
|
|
148
|
+
updatedAt: z.string().nullable().optional(),
|
|
156
149
|
model: z.string().optional(),
|
|
157
150
|
}),
|
|
158
151
|
z.object({
|
|
159
152
|
sessionUpdate: z.literal("usage_update"),
|
|
160
153
|
usedTokens: z.number().optional(),
|
|
161
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(),
|
|
162
157
|
}),
|
|
163
158
|
// ── LinkShell extensions ──
|
|
164
159
|
z.object({
|
|
@@ -199,9 +194,13 @@ export const sessionUpdateSchema = z.discriminatedUnion("sessionUpdate", [
|
|
|
199
194
|
z.object({
|
|
200
195
|
sessionUpdate: z.literal("ls_permission"),
|
|
201
196
|
requestId: z.string(),
|
|
197
|
+
childSessionId: z.string().optional(),
|
|
202
198
|
toolCallId: z.string().optional(),
|
|
203
199
|
title: z.string(),
|
|
204
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(),
|
|
205
204
|
options: z.array(permissionOptionSchema).min(1),
|
|
206
205
|
/**
|
|
207
206
|
* The agent is asking the user something: answer with `sessions.answer`.
|
|
@@ -225,6 +224,7 @@ export const sessionUpdateSchema = z.discriminatedUnion("sessionUpdate", [
|
|
|
225
224
|
z.object({
|
|
226
225
|
sessionUpdate: z.literal("ls_status"),
|
|
227
226
|
state: sessionStateSchema,
|
|
227
|
+
turnActive: z.boolean().optional(),
|
|
228
228
|
}),
|
|
229
229
|
/** A background task as it is now (the whole record each time: the latest for its id holds). */
|
|
230
230
|
z.object({
|
|
@@ -238,6 +238,8 @@ export const sessionUpdateSchema = z.discriminatedUnion("sessionUpdate", [
|
|
|
238
238
|
hint: z.string().optional(),
|
|
239
239
|
}),
|
|
240
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() });
|
|
241
243
|
/** One entry in a session's append-only event log. */
|
|
242
244
|
export const sessionEventSchema = z.object({
|
|
243
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,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,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,oBAAoB,CAAC;QAC9C,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,mBAAmB,CAAC;KACxC,CAAC;IACF,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,mBAAmB,CAAC,CAAC,QAAQ,EAAE;KACnD,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"]);
|
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
package/src/model.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
import { asyncQuestionSchema } from "./async-questions.js";
|
|
3
3
|
import { workflowAgentStateSchema, workflowSchema } from "./workflow.js";
|
|
4
|
+
import { toolCallContentSchema } from "./content.js";
|
|
4
5
|
|
|
5
6
|
/**
|
|
6
7
|
* How far LinkShell can take a given agent. The UI renders capabilities from
|
|
@@ -21,6 +22,10 @@ export const agentCapabilitiesSchema = z.object({
|
|
|
21
22
|
steer: z.boolean(),
|
|
22
23
|
permissions: z.boolean(),
|
|
23
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(),
|
|
24
29
|
/**
|
|
25
30
|
* The agent forks sessions itself, keeping everything it knew. Every agent's
|
|
26
31
|
* sessions can be forked: without this (or from a single reply, where the
|
|
@@ -67,7 +72,7 @@ export type AgentInfo = z.infer<typeof agentInfoSchema>;
|
|
|
67
72
|
export const sessionDriverSchema = z.enum(["desktop", "remote", "none"]);
|
|
68
73
|
export type SessionDriver = z.infer<typeof sessionDriverSchema>;
|
|
69
74
|
|
|
70
|
-
export const sessionStateSchema = z.enum(["idle", "running", "waiting", "error", "offline"]);
|
|
75
|
+
export const sessionStateSchema = z.enum(["idle", "running", "waiting", "error", "offline", "unknown"]);
|
|
71
76
|
export type SessionState = z.infer<typeof sessionStateSchema>;
|
|
72
77
|
|
|
73
78
|
export const toolKindSchema = z.enum([
|
|
@@ -79,6 +84,7 @@ export const toolKindSchema = z.enum([
|
|
|
79
84
|
"execute",
|
|
80
85
|
"think",
|
|
81
86
|
"fetch",
|
|
87
|
+
"switch_mode",
|
|
82
88
|
"other",
|
|
83
89
|
]);
|
|
84
90
|
export type ToolKind = z.infer<typeof toolKindSchema>;
|
|
@@ -106,6 +112,14 @@ export type SessionActivity = z.infer<typeof sessionActivitySchema>;
|
|
|
106
112
|
*/
|
|
107
113
|
export const questionSchema = z.object({
|
|
108
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(),
|
|
109
123
|
/** A short label for the question ("Auth method"). */
|
|
110
124
|
header: z.string().optional(),
|
|
111
125
|
text: z.string(),
|
|
@@ -131,9 +145,12 @@ export type QuestionAnswer = z.infer<typeof questionAnswerSchema>;
|
|
|
131
145
|
|
|
132
146
|
export const pendingPermissionSchema = z.object({
|
|
133
147
|
requestId: z.string(),
|
|
148
|
+
childSessionId: z.string().optional(),
|
|
134
149
|
toolCallId: z.string().optional(),
|
|
135
150
|
title: z.string(),
|
|
136
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(),
|
|
137
154
|
options: z.array(permissionOptionSchema).min(1),
|
|
138
155
|
/** Set when this is a question to answer (`sessions.answer`) rather than a permission to give. */
|
|
139
156
|
questions: z.array(questionSchema).optional(),
|
|
@@ -150,6 +167,8 @@ export type QueuedMessage = z.infer<typeof queuedMessageSchema>;
|
|
|
150
167
|
|
|
151
168
|
/** A sub-agent a session started: the tool call it runs under, and how it is doing. */
|
|
152
169
|
export const subagentInfoSchema = z.object({
|
|
170
|
+
nativeSessionId: z.string().optional(),
|
|
171
|
+
canCancel: z.boolean().optional(),
|
|
153
172
|
toolCallId: z.string(),
|
|
154
173
|
parentToolCallId: z.string().optional(),
|
|
155
174
|
/** What it was asked to do. */
|
package/src/peer.ts
CHANGED
|
@@ -91,13 +91,21 @@ export class RpcPeer {
|
|
|
91
91
|
receive(text: string): void {
|
|
92
92
|
for (const line of text.split("\n")) {
|
|
93
93
|
if (!line.trim()) continue;
|
|
94
|
-
let message: Record<string, unknown
|
|
94
|
+
let message: Record<string, unknown> | Record<string, unknown>[];
|
|
95
95
|
try {
|
|
96
|
-
message = JSON.parse(line) as
|
|
96
|
+
message = JSON.parse(line) as typeof message;
|
|
97
97
|
} catch {
|
|
98
98
|
continue;
|
|
99
99
|
}
|
|
100
|
-
|
|
100
|
+
if (Array.isArray(message)) {
|
|
101
|
+
if (!message.length || message.length > 128) {
|
|
102
|
+
this.write({ jsonrpc: "2.0", id: null, error: { code: -32600, message: "invalid JSON-RPC batch" } });
|
|
103
|
+
continue;
|
|
104
|
+
}
|
|
105
|
+
const responses: Record<string, unknown>[] = [];
|
|
106
|
+
void Promise.all(message.map((entry) => Promise.resolve(this.dispatch(entry, (response) => { responses.push(response); }))))
|
|
107
|
+
.then(() => { if (responses.length) this.write(responses); });
|
|
108
|
+
} else void this.dispatch(message);
|
|
101
109
|
}
|
|
102
110
|
}
|
|
103
111
|
|
|
@@ -116,7 +124,13 @@ export class RpcPeer {
|
|
|
116
124
|
return this.closed;
|
|
117
125
|
}
|
|
118
126
|
|
|
119
|
-
|
|
127
|
+
hasPendingRequest(id: RpcId): boolean { return this.pending.has(id); }
|
|
128
|
+
|
|
129
|
+
private dispatch(message: Record<string, unknown>, respond = (response: Record<string, unknown>) => this.write(response)): void | Promise<void> {
|
|
130
|
+
if (!message || typeof message !== "object" || Array.isArray(message)) {
|
|
131
|
+
respond({ jsonrpc: "2.0", id: null, error: { code: -32600, message: "invalid JSON-RPC request" } });
|
|
132
|
+
return;
|
|
133
|
+
}
|
|
120
134
|
const id = message.id as RpcId | undefined;
|
|
121
135
|
const method = typeof message.method === "string" ? message.method : undefined;
|
|
122
136
|
|
|
@@ -139,27 +153,27 @@ export class RpcPeer {
|
|
|
139
153
|
|
|
140
154
|
const handler = this.options.onRequest;
|
|
141
155
|
if (!handler) {
|
|
142
|
-
|
|
156
|
+
respond({ jsonrpc: "2.0", id, error: { code: RPC_METHOD_NOT_FOUND, message: `no handler for ${method}` } });
|
|
143
157
|
return;
|
|
144
158
|
}
|
|
145
|
-
Promise.resolve()
|
|
159
|
+
return Promise.resolve()
|
|
146
160
|
.then(() => handler(method, message.params, id))
|
|
147
161
|
.then(
|
|
148
162
|
(result) => {
|
|
149
163
|
if (result === ABANDON) return;
|
|
150
|
-
|
|
164
|
+
respond({ jsonrpc: "2.0", id, result: result ?? {} });
|
|
151
165
|
},
|
|
152
166
|
(error: unknown) => {
|
|
153
167
|
const rpcError =
|
|
154
168
|
error instanceof RpcError
|
|
155
169
|
? error
|
|
156
170
|
: new RpcError(RPC_APP_ERROR, error instanceof Error ? error.message : String(error), { code: "internal" });
|
|
157
|
-
|
|
171
|
+
respond({ jsonrpc: "2.0", id, error: rpcError.toObject() });
|
|
158
172
|
},
|
|
159
173
|
);
|
|
160
174
|
}
|
|
161
175
|
|
|
162
|
-
private write(message: Record<string, unknown>): void {
|
|
176
|
+
private write(message: Record<string, unknown> | Record<string, unknown>[]): void {
|
|
163
177
|
if (this.closed) return;
|
|
164
178
|
try {
|
|
165
179
|
this.options.send(JSON.stringify(message));
|
package/src/questions.ts
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import type { Question, QuestionAnswer } from "./model.js";
|
|
2
|
+
|
|
3
|
+
/** Shared validation keeps the phone's feedback and the host's acceptance identical. */
|
|
4
|
+
export function questionAnswerError(question: Question, answer: QuestionAnswer | undefined): string | undefined {
|
|
5
|
+
const label = question.header ?? question.text;
|
|
6
|
+
const values = answer?.values ?? [];
|
|
7
|
+
const c = question.constraints;
|
|
8
|
+
if (values.length > 1 && question.kind !== "choices") return `${label}只能填写一个答案`;
|
|
9
|
+
if (question.kind !== "text" && question.options && values.some((value) => !question.options!.some((option) => option.value === value))) return `${label}包含无效选项`;
|
|
10
|
+
const present = c?.type === "array" ? answer !== undefined : c?.type === "string" ? values[0] !== undefined || !!answer?.other?.trim() : values.some((value) => value !== "") || !!answer?.other?.trim();
|
|
11
|
+
if (!present) return question.required ? `还没回答:${label}` : undefined;
|
|
12
|
+
if (!c) return;
|
|
13
|
+
const value = values[0] ?? "";
|
|
14
|
+
if (c.type === "number" || c.type === "integer") {
|
|
15
|
+
const number = Number(value);
|
|
16
|
+
if (!value.trim() || !Number.isFinite(number) || (c.type === "integer" && !Number.isInteger(number))) return `${label}需要填写${c.type === "integer" ? "整数" : "数字"}`;
|
|
17
|
+
if (c.minimum !== undefined && number < c.minimum) return `${label}不能小于 ${c.minimum}`;
|
|
18
|
+
if (c.maximum !== undefined && number > c.maximum) return `${label}不能大于 ${c.maximum}`;
|
|
19
|
+
}
|
|
20
|
+
if (c.type === "array") {
|
|
21
|
+
if (new Set(values).size !== values.length) return `${label}不能重复选择`;
|
|
22
|
+
if (c.minItems !== undefined && values.length < c.minItems) return `${label}至少选择 ${c.minItems} 项`;
|
|
23
|
+
if (c.maxItems !== undefined && values.length > c.maxItems) return `${label}最多选择 ${c.maxItems} 项`;
|
|
24
|
+
}
|
|
25
|
+
if (c.type === "string") {
|
|
26
|
+
const length = [...value].length;
|
|
27
|
+
if (c.minLength !== undefined && length < c.minLength) return `${label}至少需要 ${c.minLength} 个字符`;
|
|
28
|
+
if (c.maxLength !== undefined && length > c.maxLength) return `${label}最多允许 ${c.maxLength} 个字符`;
|
|
29
|
+
if (c.pattern) {
|
|
30
|
+
try { if (!new RegExp(c.pattern, "u").test(value)) return `${label}格式不符合要求`; }
|
|
31
|
+
catch { return `${label}的格式规则无效`; }
|
|
32
|
+
}
|
|
33
|
+
if (c.format === "email" && !/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(value)) return `${label}需要有效的邮箱地址`;
|
|
34
|
+
if (c.format === "uri") { try { new URL(value); } catch { return `${label}需要完整的网址`; } }
|
|
35
|
+
if (c.format === "date" && (!/^\d{4}-\d{2}-\d{2}$/.test(value) || !Number.isFinite(Date.parse(value)) || new Date(value).toISOString().slice(0, 10) !== value)) return `${label}需要有效日期(YYYY-MM-DD)`;
|
|
36
|
+
if (c.format === "date-time" && (!/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/i.test(value) || !Number.isFinite(Date.parse(value)))) return `${label}需要包含时区的有效日期时间`;
|
|
37
|
+
}
|
|
38
|
+
return;
|
|
39
|
+
}
|