paseo-plugin-zcode-provider 0.3.0 → 0.4.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/NOTICE.md +2 -2
- package/README.md +9 -9
- package/package.json +4 -4
- package/server/account.ts +10 -0
- package/server/build-info.ts +1 -1
- package/server/discovery/manifest.ts +2 -2
- package/server/mapping.ts +31 -0
- package/server/provider.ts +5 -18
- package/server/runtime/pins.ts +3 -3
- package/server/session.ts +7 -10
- package/server/unsupported-capabilities.ts +4 -1
- package/server/vendor/zcode/NOTICE.md +4 -1
- package/server/vendor/zcode/packages/rpc/src/channelClient.ts +1 -0
- package/server/vendor/zcode/packages/rpc/src/channelServer.ts +2 -0
- package/server/vendor/zcode/packages/rpc/src/channels.shared.ts +1 -0
- package/server/vendor/zcode/packages/rpc/src/protocol.ts +3 -2
- package/server/vendor/zcode/packages/shared/src/app-runtime-preferences.ts +18 -0
- package/server/vendor/zcode/packages/shared/src/attachment-source.ts +5 -0
- package/server/vendor/zcode/packages/shared/src/bots.ts +385 -2
- package/server/vendor/zcode/packages/shared/src/browser-use/commands.ts +3 -1
- package/server/vendor/zcode/packages/shared/src/channel-mention.ts +131 -0
- package/server/vendor/zcode/packages/shared/src/conversationSelection.ts +37 -0
- package/server/vendor/zcode/packages/shared/src/dynamic-workflow-feature.ts +137 -0
- package/server/vendor/zcode/packages/shared/src/env.ts +15 -11
- package/server/vendor/zcode/packages/shared/src/highspeed.ts +232 -0
- package/server/vendor/zcode/packages/shared/src/mcp-apps/appTools.ts +148 -0
- package/server/vendor/zcode/packages/shared/src/mcp-apps/contract.ts +262 -0
- package/server/vendor/zcode/packages/shared/src/mcp-apps/instance.ts +12 -0
- package/server/vendor/zcode/packages/shared/src/mcp-apps/resourceMime.ts +73 -0
- package/server/vendor/zcode/packages/shared/src/mcp-apps/sampling.ts +117 -0
- package/server/vendor/zcode/packages/shared/src/mcp-apps/schemas.ts +90 -0
- package/server/vendor/zcode/packages/shared/src/model-execution.ts +58 -1
- package/server/vendor/zcode/packages/shared/src/oauth.ts +3 -0
- package/server/vendor/zcode/packages/shared/src/off-peak-execution.ts +73 -0
- package/server/vendor/zcode/packages/shared/src/protocol.ts +78 -4
- package/server/vendor/zcode/packages/shared/src/remoteTarget.ts +65 -0
- package/server/vendor/zcode/packages/shared/src/request-security-edition/verification-policy.ts +46 -0
- package/server/vendor/zcode/packages/shared/src/server-remote.ts +93 -0
- package/server/vendor/zcode/packages/shared/src/source-server/compatibility.ts +115 -0
- package/server/vendor/zcode/packages/shared/src/source-server/contracts.ts +426 -0
- package/server/vendor/zcode/packages/shared/src/source-server/errorCodes.ts +74 -0
- package/server/vendor/zcode/packages/shared/src/sqlite-migrations/contract.ts +83 -0
- package/server/vendor/zcode/packages/shared/src/subagent-profile.ts +62 -0
- package/server/vendor/zcode/packages/shared/src/subagent-runtime-config.ts +51 -0
- package/server/vendor/zcode/packages/shared/src/subagents-types.ts +164 -0
- package/server/vendor/zcode/packages/shared/src/usage-stats.ts +14 -0
- package/server/vendor/zcode/packages/shared/src/validationAppSettings.ts +136 -3
- package/server/vendor/zcode/packages/shared/src/version.ts +13 -0
- package/server/vendor/zcode/packages/shared/src/zcode-agent-policy.ts +24 -1
- package/server/vendor/zcode/packages/shared/src/zcode-protocol/index.ts +697 -36
- package/server/vendor/zcode/packages/shared/src/zcode-protocol/trace.ts +11 -0
- package/server/vendor/zcode/packages/shared/src/zcode-protocol-legacy-types.ts +14 -2
- package/server/vendor/zcode/packages/shared/src/zcode-protocol-v4/apply.ts +28 -9
- package/server/vendor/zcode/packages/shared/src/zcode-protocol-v4/attachment-ref.ts +3 -0
- package/server/vendor/zcode/packages/shared/src/zcode-protocol-v4/command.ts +73 -53
- package/server/vendor/zcode/packages/shared/src/zcode-protocol-v4/create-session-config.ts +15 -0
- package/server/vendor/zcode/packages/shared/src/zcode-protocol-v4/create-workflow-display.ts +47 -1
- package/server/vendor/zcode/packages/shared/src/zcode-protocol-v4/delta.ts +58 -2
- package/server/vendor/zcode/packages/shared/src/zcode-protocol-v4/input-intent.ts +31 -0
- package/server/vendor/zcode/packages/shared/src/zcode-protocol-v4/rows.ts +28 -13
- package/server/vendor/zcode/packages/shared/src/zcode-protocol-v4/sessions-index-workflow-activity.ts +37 -3
- package/server/vendor/zcode/packages/shared/src/zcode-protocol-v4/sessions-index.ts +36 -0
- package/server/vendor/zcode/packages/shared/src/zcode-protocol-v4/snapshot.ts +21 -0
- package/server/vendor/zcode/packages/shared/src/zcode-protocol-v4/submission.ts +1 -1
- package/server/vendor/zcode/packages/shared/src/zcode-protocol-v4/toolDisplay.ts +32 -4
- package/server/vendor/zcode/packages/shared/src/zcode-protocol-v4/transport.ts +31 -6
- package/server/vendor/zcode/packages/shared/src/zcode-protocol-v4/wire-assembler.ts +4 -1
- package/server/vendor/zcode/packages/shared/src/zcode-protocol-v4/wire-fault.ts +4 -1
- package/server/vendor/zcode/packages/shared/src/zcode-protocol-v4/workflow-artifacts.ts +62 -4
- package/server/vendor/zcode/packages/shared/src/zcode-protocol-v4/workflow-command-rejections.ts +30 -0
- package/server/vendor/zcode/packages/shared/src/zcode-protocol-v4/workflow-row-meta.ts +40 -3
- package/server/vendor/zcode/packages/shared/src/zcode-protocol-v4/workflow-run-settings-command.ts +2 -2
- package/server/vendor/zcode/packages/shared/src/zcode-protocol-v4/workflow-runs-delta.ts +6 -5
- package/server/vendor/zcode/packages/shared/src/zcode-protocol-v4/workflow-runs.ts +103 -26
- package/server/vendor/zcode/packages/shared/src/zcode-task-mode-schema.ts +13 -1
- package/server/vendor/zcode/packages/shared/src/zcode-task-types-core.ts +31 -2
- package/server/vendor/zcode/packages/shared/src/zcodeEndpoint.ts +188 -73
- package/server/vendor/zcode/provenance.json +189 -80
|
@@ -1,8 +1,23 @@
|
|
|
1
|
+
import { requestVerificationReasons } from "../request-security-edition/verification-policy.js";
|
|
2
|
+
import { zcodeProtocolTraceSchema } from "./trace.js";
|
|
3
|
+
// Bot 反向回复的名字解析/待澄清结果与 App、CLI 使用同一严格 schema。
|
|
4
|
+
export { channelReplyRequestSchema, channelReplyResultSchema } from "../channel-mention.js";
|
|
5
|
+
export { zcodeProtocolTraceSchema, type ZCodeProtocolTrace } from "./trace.js";
|
|
1
6
|
import {
|
|
7
|
+
databaseMigrationFactsSchema,
|
|
2
8
|
databaseStartupErrorCodeSchema,
|
|
3
9
|
databaseStartupErrorDetailsSchema,
|
|
4
|
-
databaseMigrationFactsSchema,
|
|
5
10
|
} from "../database-startup.js";
|
|
11
|
+
import {
|
|
12
|
+
MCP_APPS_APP_TOOLS_MAX_PER_INSTANCE,
|
|
13
|
+
MCP_APPS_APP_TOOL_CALL_ID_MAX_CHARS,
|
|
14
|
+
MCP_APPS_APP_TOOL_ERROR_MESSAGE_MAX_CHARS,
|
|
15
|
+
mcpAppsAppToolCallResultSchema,
|
|
16
|
+
mcpAppsAppToolDescriptorSchema,
|
|
17
|
+
} from "../mcp-apps/appTools.js";
|
|
18
|
+
import { mcpAppsSamplingParamsSchema, mcpAppsSamplingResultSchema } from "../mcp-apps/sampling.js";
|
|
19
|
+
import { mcpAppInstanceSchema } from "../mcp-apps/instance.js";
|
|
20
|
+
export { conversationQuoteSchema, conversationQuotesSchema } from "../conversationSelection.js";
|
|
6
21
|
/* oxlint-disable eslint(max-lines) -- ZCode Protocol schema 需要单文件导出,方便 app 与 agent 共享同一份协议契约。 */
|
|
7
22
|
// ── 旧协议删除边界──────────────────────
|
|
8
23
|
// 剩余 ~257 个导出:旧 ZCode Protocol 方法契约、请求/响应/事件 schema、
|
|
@@ -16,53 +31,86 @@ import {
|
|
|
16
31
|
// UI 旧投影(zcodeSessionProjection 等读路径)。
|
|
17
32
|
// 上述旧协议 client/server 组删除时,本文件整体删除。
|
|
18
33
|
// 注:外部零消费 schema 多为存活 schema 联合的内部依赖,随宿主文件一起处理,勿单删。
|
|
34
|
+
import { z } from "zod";
|
|
35
|
+
import { accountProviderUnavailableReasonSchema } from "../account-provider-state.js";
|
|
19
36
|
import { bashOutputDisplaySchema } from "../bash-output-display.js";
|
|
20
|
-
|
|
21
|
-
export * from "../background-bash-output.js";
|
|
37
|
+
import { zcodeAutomationBotDeliveryTargetSchema } from "../bots.js";
|
|
22
38
|
import { executionOutputPreviewSchema } from "../execution-output-preview.js";
|
|
23
|
-
import { z } from "zod";
|
|
24
|
-
export * from "../process-diagnostic.js";
|
|
25
|
-
import { errorAttributionSchema } from "../zcode-protocol-v4/snapshot.js";
|
|
26
|
-
import { modelSelectionSchema } from "../model-selection.js";
|
|
27
39
|
import { completeModelPropertiesDataSchema } from "../model-config.js";
|
|
28
|
-
import { accountProviderUnavailableReasonSchema } from "../account-provider-state.js";
|
|
29
40
|
import { modelExecutionSchema } from "../model-execution.js";
|
|
41
|
+
export type { ModelExecutionSelectionFallback } from "../model-execution.js";
|
|
42
|
+
export * from "../off-peak-execution.js";
|
|
43
|
+
import { modelSelectionSchema } from "../model-selection.js";
|
|
30
44
|
import { APP_USAGE_RANGES, appUsageSnapshotSchema } from "../usage-stats.js";
|
|
31
|
-
import {
|
|
45
|
+
import { DYNAMIC_WORKFLOW_MODES } from "../dynamic-workflow-feature.js";
|
|
46
|
+
import { errorAttributionSchema } from "../zcode-protocol-v4/snapshot.js";
|
|
47
|
+
// 后台详情共享精简的只读响应 schema,不携带命令或计时元数据。
|
|
48
|
+
export * from "../background-bash-output.js";
|
|
49
|
+
export * from "../process-diagnostic.js";
|
|
50
|
+
export { attachmentSourceKindSchema, type AttachmentSourceKind } from "../attachment-source.js";
|
|
51
|
+
import { PROTOCOL_V4_LIMITS } from "../zcode-protocol-v4/core.js";
|
|
52
|
+
|
|
53
|
+
export const zcodeTopicResourceReadParamsSchema = z
|
|
54
|
+
.object({
|
|
55
|
+
requestId: z.string().min(1).max(256),
|
|
56
|
+
taskId: z.string().min(1).max(256),
|
|
57
|
+
inputId: z.string().min(1).max(256),
|
|
58
|
+
authorizationId: z.string().min(1).max(256),
|
|
59
|
+
messageId: z.string().min(1).max(256),
|
|
60
|
+
resourceIndex: z.number().int().nonnegative(),
|
|
61
|
+
})
|
|
62
|
+
.strict();
|
|
63
|
+
export const zcodeTopicResourceReadResultSchema = z
|
|
64
|
+
.object({
|
|
65
|
+
ref: z.string().min(1),
|
|
66
|
+
fileName: z.string().min(1).max(1024),
|
|
67
|
+
mime: z.string().min(1).max(256),
|
|
68
|
+
bytes: z.number().int().min(0).max(PROTOCOL_V4_LIMITS.attachmentMaxBytes),
|
|
69
|
+
})
|
|
70
|
+
.strict();
|
|
71
|
+
export const zcodeTopicResourceCancelParamsSchema = z
|
|
72
|
+
.object({ requestId: z.string().min(1).max(256), taskId: z.string().min(1).max(256) })
|
|
73
|
+
.strict();
|
|
74
|
+
export const zcodeTopicResourceCancelResultSchema = z.object({ cancelled: z.boolean() }).strict();
|
|
75
|
+
export type ZCodeTopicResourceReadParams = z.infer<typeof zcodeTopicResourceReadParamsSchema>;
|
|
76
|
+
export type ZCodeTopicResourceReadResult = z.infer<typeof zcodeTopicResourceReadResultSchema>;
|
|
77
|
+
export { activeWorkSummarySchema, type ActiveWorkSummary } from "../zcode-protocol-v4/snapshot.js";
|
|
32
78
|
// browser-use 命令/结果契约单一来源:agent 构造、协议校验和 main executor 共用同一 schema。
|
|
33
|
-
import { browserClientModeSchema, browserCommandSchema } from "../browser-use/commands.js";
|
|
34
79
|
import {
|
|
35
80
|
browserBackendListResultSchema,
|
|
36
81
|
browserSessionContextKindSchema,
|
|
37
82
|
} from "../browser-use/backend.js";
|
|
83
|
+
import { browserClientModeSchema, browserCommandSchema } from "../browser-use/commands.js";
|
|
38
84
|
import { browserCommandResultSchema } from "../browser-use/result.js";
|
|
85
|
+
import { appToolSearchModeSchema } from "../app-runtime-preferences.js";
|
|
39
86
|
import { integratedTerminalShellSelectionSchema } from "../validationAppSettings.js";
|
|
40
87
|
import { zcodeTaskModeSchema } from "../zcode-task-mode-schema.js";
|
|
41
88
|
import { OFFICIAL_MCP_AUTH_PORT_FAILURE_REASONS } from "../official-mcp-auth.js";
|
|
42
89
|
import {
|
|
90
|
+
zcodeSyntheticUserMessageSourceSchema as legacyZcodeSyntheticUserMessageSourceSchema,
|
|
43
91
|
zcodeDeliveryKindSchema,
|
|
92
|
+
zcodeInteractionRequestOriginSchema,
|
|
93
|
+
zcodeMessagePartSchema,
|
|
44
94
|
zcodeMessageVisibilitySchema,
|
|
45
|
-
|
|
46
|
-
zcodeWorkspaceRefSchema,
|
|
95
|
+
zcodeMessageWithPartsSchema,
|
|
47
96
|
zcodePermissionDecisionSchema,
|
|
48
97
|
zcodePermissionResponseSchema,
|
|
49
98
|
zcodePermissionUpdateSchema,
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
zcodeSessionKindSchema,
|
|
99
|
+
zcodeSessionApiRetryStatusSchema,
|
|
100
|
+
zcodeSessionContextUsageSchema,
|
|
53
101
|
zcodeSessionGoalSchema,
|
|
54
102
|
zcodeSessionGoalVerificationSchema,
|
|
55
103
|
zcodeSessionGoalVerificationTimelineSchema,
|
|
56
|
-
zcodeInteractionRequestOriginSchema,
|
|
57
|
-
zcodeToolStateSchema,
|
|
58
|
-
zcodeSessionApiRetryStatusSchema,
|
|
59
|
-
zcodeSessionContextUsageSchema,
|
|
60
104
|
zcodeSessionInfoSchema,
|
|
105
|
+
zcodeSessionKindSchema,
|
|
106
|
+
zcodeSessionModeSchema,
|
|
61
107
|
zcodeSessionRuntimeStateSchema,
|
|
62
|
-
|
|
63
|
-
|
|
108
|
+
zcodeSessionStatusSchema,
|
|
109
|
+
zcodeToolStateSchema,
|
|
110
|
+
zcodeWorkspaceRefSchema,
|
|
64
111
|
} from "../zcode-protocol-legacy-types.js";
|
|
65
112
|
|
|
113
|
+
export * from "../localTtft.js";
|
|
66
114
|
export {
|
|
67
115
|
hookExecutionProjectionSchema,
|
|
68
116
|
hookInvocationRowSchema,
|
|
@@ -70,11 +118,19 @@ export {
|
|
|
70
118
|
type HookInvocationRow,
|
|
71
119
|
} from "../zcode-protocol-v4/rows.js";
|
|
72
120
|
|
|
121
|
+
export {
|
|
122
|
+
sessionsIndexReconcileParamsSchema,
|
|
123
|
+
sessionsIndexReconcileResultSchema,
|
|
124
|
+
type SessionsIndexReconcileParams,
|
|
125
|
+
type SessionsIndexReconcileResult,
|
|
126
|
+
} from "../zcode-protocol-v4/sessions-index.js";
|
|
127
|
+
|
|
73
128
|
export const ZCODE_PROTOCOL_NAME = "ZCode Protocol" as const;
|
|
74
129
|
export const ZCODE_PROTOCOL_VERSION = 1 as const;
|
|
75
130
|
// V4 wire 与 legacy 主协议并存;禁止为了 V4 physical framing 改写 legacy 版本。
|
|
76
131
|
export const ZCODE_PROTOCOL_V4_WIRE_VERSION = 3 as const;
|
|
77
132
|
export const zcodeRuntimeCapabilitiesSchema = z.object({
|
|
133
|
+
historyFirst: z.boolean().optional(),
|
|
78
134
|
independentPlanState: z.boolean().optional(),
|
|
79
135
|
});
|
|
80
136
|
export const zcodeProtocolErrorCodes = {
|
|
@@ -142,7 +198,8 @@ const zcodeCreateWorkflowCausalityGraphDisplaySchema = z
|
|
|
142
198
|
z
|
|
143
199
|
.object({
|
|
144
200
|
id: z.string().min(1).max(64),
|
|
145
|
-
|
|
201
|
+
// `hole`:开着的留白自己的站点(docs/dynamic-workflow/presentation.md「Holes on the timeline」);镜像 v4。
|
|
202
|
+
kind: z.enum(["ask", "world-read", "hole"]),
|
|
146
203
|
label: z.string().min(1).max(128),
|
|
147
204
|
// 内联 `agent()` receiver 让 label 落到兜底串时,那个名字的静态形状。
|
|
148
205
|
labelPattern: zcodeWorkflowNamePatternSchema.optional(),
|
|
@@ -157,6 +214,8 @@ const zcodeCreateWorkflowCausalityGraphDisplaySchema = z
|
|
|
157
214
|
// 与图的 phases / phaseEdges / exits 同进同退:全在场或全缺席。
|
|
158
215
|
phase: z.string().min(1).max(64).optional(),
|
|
159
216
|
repeat: z.enum(["stack", "serial"]).optional(),
|
|
217
|
+
// 这个站点是某次补全写进来的:值是那个留白的站点 id;镜像 v4。
|
|
218
|
+
fill: z.string().min(1).max(64).optional(),
|
|
160
219
|
})
|
|
161
220
|
.strict(),
|
|
162
221
|
)
|
|
@@ -215,12 +274,35 @@ const zcodeCreateWorkflowCausalityGraphDisplaySchema = z
|
|
|
215
274
|
// 为空时缺席。是节点事实而不是边——控制没有从那里转移过来,所以不进 phaseEdges。
|
|
216
275
|
// 时间轴据此把相邻阶段折成一条分叉的「带」,侧栏迷你轨道画成双线段。
|
|
217
276
|
alongside: z.array(z.string().min(1).max(64)).min(1).max(32).optional(),
|
|
277
|
+
// 这个阶段是某次补全写进来的:值是那个留白的站点 id;镜像 v4。
|
|
278
|
+
fill: z.string().min(1).max(64).optional(),
|
|
218
279
|
})
|
|
219
280
|
.strict(),
|
|
220
281
|
)
|
|
221
282
|
.max(32)
|
|
222
283
|
.optional(),
|
|
223
284
|
phaseEdges: z.array(zcodeWorkflowEdgeSchema).max(128).optional(),
|
|
285
|
+
// 阶段流(docs/dynamic-workflow/presentation.md「Streams」):两端互为 alongside 的 data 边,
|
|
286
|
+
// 只有 {from, to}——不是 runs after,不进 phaseEdges、不带 back。与词汇表同进同退。
|
|
287
|
+
phaseStreams: z
|
|
288
|
+
.array(z.object({ from: z.string().min(1).max(64), to: z.string().min(1).max(64) }).strict())
|
|
289
|
+
.max(128)
|
|
290
|
+
.optional(),
|
|
291
|
+
// 还开着的留白,源码序(docs/dynamic-workflow/authoring.md「Holes」);镜像 v4。
|
|
292
|
+
holes: z
|
|
293
|
+
.array(
|
|
294
|
+
z
|
|
295
|
+
.object({
|
|
296
|
+
siteId: z.string().min(1).max(64),
|
|
297
|
+
name: z.string().min(1).max(128),
|
|
298
|
+
type: z.string().min(1).max(128),
|
|
299
|
+
phase: z.string().min(1).max(64).optional(),
|
|
300
|
+
tail: z.boolean().optional(),
|
|
301
|
+
})
|
|
302
|
+
.strict(),
|
|
303
|
+
)
|
|
304
|
+
.max(32)
|
|
305
|
+
.optional(),
|
|
224
306
|
// 控制流可在其后正常完成的阶段(阶段视图的「阶段 → 返回物」箭头);组内可为空数组。
|
|
225
307
|
exits: z.array(z.string().min(1).max(64)).max(32).optional(),
|
|
226
308
|
sink: z.array(z.string().min(1).max(64)).max(64).optional(),
|
|
@@ -247,6 +329,18 @@ export const zcodeCreateWorkflowToolResultDisplaySchema = z
|
|
|
247
329
|
.max(100),
|
|
248
330
|
causalityGraph: zcodeCreateWorkflowCausalityGraphDisplaySchema.optional(),
|
|
249
331
|
truncated: z.boolean().optional(),
|
|
332
|
+
// FillWorkflowHole 行补的是哪处留白(docs/dynamic-workflow/presentation.md「The fill row」);镜像 v4。
|
|
333
|
+
// 修复原因:dwf-recursive 只给 contracts 与 v4 加了留白字段,v3 的 .strict() 拒掉整条 tool.updated,
|
|
334
|
+
// 桌面端 v3 订阅于是把含留白的 CreateWorkflow / FillWorkflowHole 结果当无效事件丢掉。
|
|
335
|
+
fill: z
|
|
336
|
+
.object({
|
|
337
|
+
siteId: z.string().min(1).max(64),
|
|
338
|
+
name: z.string().min(1).max(128),
|
|
339
|
+
draftPath: z.string().min(1).max(1_024).optional(),
|
|
340
|
+
line: z.number().int().positive().optional(),
|
|
341
|
+
})
|
|
342
|
+
.strict()
|
|
343
|
+
.optional(),
|
|
250
344
|
})
|
|
251
345
|
.strict();
|
|
252
346
|
|
|
@@ -273,15 +367,42 @@ const zcodeToolResultObjectSchema = jsonObjectSchema.superRefine((result, contex
|
|
|
273
367
|
export const zcodeProtocolRequestIdSchema = z.union([z.string(), z.number().int()]);
|
|
274
368
|
export type ZCodeProtocolRequestId = z.infer<typeof zcodeProtocolRequestIdSchema>;
|
|
275
369
|
|
|
276
|
-
|
|
370
|
+
// 远程历史附件仅通过现有连接的私有反向频道传输,单块保持在 RPC 帧预算内。
|
|
371
|
+
export const TOPIC_RESOURCE_RELAY_CHUNK_BYTES = 384 * 1024;
|
|
372
|
+
export const TOPIC_RESOURCE_RELAY_CHANNEL = "host-topic-resource";
|
|
373
|
+
export const zcodeTopicResourceRelayRequestSchema = zcodeTopicResourceReadParamsSchema
|
|
374
|
+
.extend({
|
|
375
|
+
workspacePath: z.string().min(1).max(4096),
|
|
376
|
+
workspaceIdentity: z.string().min(1).max(4096),
|
|
377
|
+
remoteSessionId: z.string().min(1).max(256),
|
|
378
|
+
trace: zcodeProtocolTraceSchema.optional(),
|
|
379
|
+
})
|
|
380
|
+
.strict();
|
|
381
|
+
export type ZCodeTopicResourceRelayRequest = z.infer<typeof zcodeTopicResourceRelayRequestSchema>;
|
|
382
|
+
export const zcodeTopicResourceRelayKeySchema = zcodeTopicResourceCancelParamsSchema;
|
|
383
|
+
export const zcodeTopicResourceRelayChunkRequestSchema = zcodeTopicResourceRelayKeySchema
|
|
384
|
+
.extend({
|
|
385
|
+
index: z.number().int().nonnegative(),
|
|
386
|
+
})
|
|
387
|
+
.strict();
|
|
388
|
+
export const zcodeTopicResourceRelayMetadataSchema = z
|
|
277
389
|
.object({
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
390
|
+
fileName: z.string().min(1).max(1024),
|
|
391
|
+
mime: z.string().min(1).max(256),
|
|
392
|
+
bytes: z.number().int().min(0).max(PROTOCOL_V4_LIMITS.attachmentMaxBytes),
|
|
393
|
+
totalChunks: z
|
|
394
|
+
.number()
|
|
395
|
+
.int()
|
|
396
|
+
.min(0)
|
|
397
|
+
.max(Math.ceil(PROTOCOL_V4_LIMITS.attachmentMaxBytes / TOPIC_RESOURCE_RELAY_CHUNK_BYTES)),
|
|
398
|
+
checksum: z.string().regex(/^sha256:[a-f0-9]{64}$/),
|
|
399
|
+
})
|
|
400
|
+
.strict();
|
|
401
|
+
export const zcodeTopicResourceRelayChunkSchema = z
|
|
402
|
+
.object({
|
|
403
|
+
dataBase64: z.string().max((TOPIC_RESOURCE_RELAY_CHUNK_BYTES / 3) * 4),
|
|
282
404
|
})
|
|
283
405
|
.strict();
|
|
284
|
-
export type ZCodeProtocolTrace = z.infer<typeof zcodeProtocolTraceSchema>;
|
|
285
406
|
|
|
286
407
|
export const zcodeProtocolRequestSchema = z
|
|
287
408
|
.object({
|
|
@@ -340,6 +461,7 @@ export const zcodeProtocolNotifications = {
|
|
|
340
461
|
toolExecResource: "process/toolExecResource",
|
|
341
462
|
pluginOperationProgress: "plugins/operationProgress",
|
|
342
463
|
processResourceSample: "process/resourceSample",
|
|
464
|
+
processNetworkRequests: "process/networkRequests",
|
|
343
465
|
} as const;
|
|
344
466
|
|
|
345
467
|
/** 启动控制面独立于 task stream;数据库身份不可携带路径/凭据。 */
|
|
@@ -583,6 +705,7 @@ export type ZCodeProcessChildProcessesResult = z.infer<
|
|
|
583
705
|
export type ZCodeDeliveryKind = z.infer<typeof zcodeDeliveryKindSchema>;
|
|
584
706
|
// TurnStarted 与持久 message 必须共用同一来源词表;否则 live event 能通过而 cold
|
|
585
707
|
// message 在 app/agent 边界被拒绝,造成 continuous/replayable 语义分叉。
|
|
708
|
+
// 持久消息与输入沿用同一 source schema;agent_listing_delta 只作 provider context,不触发新 turn。
|
|
586
709
|
const zcodeTurnInputSourceSchema = legacyZcodeSyntheticUserMessageSourceSchema;
|
|
587
710
|
export const zcodeSessionPersistenceSchema = z.enum(["immediate", "deferred"]);
|
|
588
711
|
export type ZCodeSessionPersistence = z.infer<typeof zcodeSessionPersistenceSchema>;
|
|
@@ -635,6 +758,7 @@ export const zcodeProtocolMcpServerSchema = z.union([
|
|
|
635
758
|
env: z.array(zcodeProtocolMcpEntrySchema),
|
|
636
759
|
isolation: z.enum(["session", "workspace"]).optional(),
|
|
637
760
|
protocolVersion: z.enum(["legacy", "auto", "2026-07-28"]).optional(),
|
|
761
|
+
alwaysLoad: z.boolean().optional(),
|
|
638
762
|
timeoutMs: z.number().int().positive().optional(),
|
|
639
763
|
})
|
|
640
764
|
.strict(),
|
|
@@ -647,6 +771,7 @@ export const zcodeProtocolMcpServerSchema = z.union([
|
|
|
647
771
|
oauth: zcodeProtocolMcpOAuthSchema.optional(),
|
|
648
772
|
isolation: z.enum(["session", "workspace"]).optional(),
|
|
649
773
|
protocolVersion: z.enum(["legacy", "auto", "2026-07-28"]).optional(),
|
|
774
|
+
alwaysLoad: z.boolean().optional(),
|
|
650
775
|
timeoutMs: z.number().int().positive().optional(),
|
|
651
776
|
})
|
|
652
777
|
.strict(),
|
|
@@ -723,6 +848,231 @@ export const zcodeMcpListResultSchema = z
|
|
|
723
848
|
.strict();
|
|
724
849
|
export type ZCodeMcpListResult = z.infer<typeof zcodeMcpListResultSchema>;
|
|
725
850
|
|
|
851
|
+
// 插件 UI:UI 发起的 MCP 资源读取与工具调用,
|
|
852
|
+
// 按 pluginId 限定 server 归属,agent 侧 fail closed。
|
|
853
|
+
export const zcodeMcpUiOpenInstanceParamsSchema = z
|
|
854
|
+
.object({
|
|
855
|
+
accountContext: z.string().max(256).optional(),
|
|
856
|
+
workspace: zcodeWorkspaceRefSchema,
|
|
857
|
+
sessionId: nonEmptyString,
|
|
858
|
+
pluginId: nonEmptyString,
|
|
859
|
+
serverName: nonEmptyString,
|
|
860
|
+
scopeId: nonEmptyString.max(4096),
|
|
861
|
+
resourceUri: nonEmptyString.max(2048),
|
|
862
|
+
ownerWebContentsId: z.number().int().positive(),
|
|
863
|
+
})
|
|
864
|
+
.strict();
|
|
865
|
+
export const zcodeMcpUiOpenInstanceResultSchema = mcpAppInstanceSchema;
|
|
866
|
+
export type ZCodeMcpUiOpenInstanceParams = z.infer<typeof zcodeMcpUiOpenInstanceParamsSchema>;
|
|
867
|
+
const zcodeMcpUiPluginScopeShape = {
|
|
868
|
+
instance: mcpAppInstanceSchema,
|
|
869
|
+
|
|
870
|
+
workspace: zcodeWorkspaceRefSchema,
|
|
871
|
+
sessionId: nonEmptyString,
|
|
872
|
+
pluginId: nonEmptyString,
|
|
873
|
+
serverName: nonEmptyString,
|
|
874
|
+
};
|
|
875
|
+
export const zcodeMcpUiCloseInstanceParamsSchema = z
|
|
876
|
+
.object({ ...zcodeMcpUiPluginScopeShape, onlyIfIdle: z.boolean().optional() })
|
|
877
|
+
.strict();
|
|
878
|
+
export const zcodeMcpUiCloseInstanceResultSchema = z.object({ closed: z.boolean() }).strict();
|
|
879
|
+
export const zcodeMcpReadResourceParamsSchema = z
|
|
880
|
+
.object({ ...zcodeMcpUiPluginScopeShape, uri: nonEmptyString.max(2048) })
|
|
881
|
+
.strict();
|
|
882
|
+
export type ZCodeMcpReadResourceParams = z.infer<typeof zcodeMcpReadResourceParamsSchema>;
|
|
883
|
+
export const zcodeMcpResourceContentSchema = z
|
|
884
|
+
.object({
|
|
885
|
+
uri: z.string(),
|
|
886
|
+
mimeType: z.string().optional(),
|
|
887
|
+
text: z.string().optional(),
|
|
888
|
+
blob: z.string().optional(),
|
|
889
|
+
_meta: z.record(z.string(), z.unknown()).optional(),
|
|
890
|
+
})
|
|
891
|
+
.strict();
|
|
892
|
+
export const zcodeMcpReadResourceResultSchema = z
|
|
893
|
+
.object({ contents: z.array(zcodeMcpResourceContentSchema) })
|
|
894
|
+
.strict();
|
|
895
|
+
export type ZCodeMcpReadResourceResult = z.infer<typeof zcodeMcpReadResourceResultSchema>;
|
|
896
|
+
|
|
897
|
+
/**
|
|
898
|
+
* 插件页面发起的 `resources/read` 代理。
|
|
899
|
+
* 与 `mcp/readResource`(宿主取 ui:// HTML)参数同形,但结果去掉 `_meta`、受 8 MiB 与 mimeType 白名单约束。
|
|
900
|
+
*/
|
|
901
|
+
export const zcodeMcpUiReadResourceParamsSchema = zcodeMcpReadResourceParamsSchema;
|
|
902
|
+
export type ZCodeMcpUiReadResourceParams = z.infer<typeof zcodeMcpUiReadResourceParamsSchema>;
|
|
903
|
+
export const zcodeMcpUiResourceContentSchema = z
|
|
904
|
+
.object({
|
|
905
|
+
uri: z.string(),
|
|
906
|
+
mimeType: z.string().optional(),
|
|
907
|
+
text: z.string().optional(),
|
|
908
|
+
blob: z.string().optional(),
|
|
909
|
+
})
|
|
910
|
+
.strict();
|
|
911
|
+
export const zcodeMcpUiReadResourceResultSchema = z
|
|
912
|
+
.object({ contents: z.array(zcodeMcpUiResourceContentSchema) })
|
|
913
|
+
.strict();
|
|
914
|
+
export type ZCodeMcpUiReadResourceResult = z.infer<typeof zcodeMcpUiReadResourceResultSchema>;
|
|
915
|
+
|
|
916
|
+
export const zcodeMcpUiSamplingParamsSchema = z
|
|
917
|
+
.object({
|
|
918
|
+
...zcodeMcpUiPluginScopeShape,
|
|
919
|
+
operationId: nonEmptyString.max(128),
|
|
920
|
+
request: mcpAppsSamplingParamsSchema,
|
|
921
|
+
})
|
|
922
|
+
.strict();
|
|
923
|
+
export const zcodeMcpUiCancelSamplingParamsSchema = z
|
|
924
|
+
.object({ ...zcodeMcpUiPluginScopeShape, operationId: nonEmptyString.max(128) })
|
|
925
|
+
.strict();
|
|
926
|
+
export const zcodeMcpUiSamplingResultSchema = mcpAppsSamplingResultSchema;
|
|
927
|
+
export type ZCodeMcpUiSamplingParams = z.infer<typeof zcodeMcpUiSamplingParamsSchema>;
|
|
928
|
+
export type ZCodeMcpUiCancelSamplingParams = z.infer<typeof zcodeMcpUiCancelSamplingParamsSchema>;
|
|
929
|
+
|
|
930
|
+
export const zcodeMcpUiCallToolParamsSchema = z
|
|
931
|
+
.object({
|
|
932
|
+
...zcodeMcpUiPluginScopeShape,
|
|
933
|
+
toolName: nonEmptyString,
|
|
934
|
+
arguments: z.record(z.string(), z.unknown()).optional(),
|
|
935
|
+
/** 宿主生成的调用 id,配合 `mcp/uiCancelCall` 取消进行中的调用。 */
|
|
936
|
+
callId: nonEmptyString.max(128),
|
|
937
|
+
})
|
|
938
|
+
.strict();
|
|
939
|
+
export type ZCodeMcpUiCallToolParams = z.infer<typeof zcodeMcpUiCallToolParamsSchema>;
|
|
940
|
+
/** 取消页面发起的工具调用(卡片卸载、会话切换);agent 侧 abort 到 MCP client。 */
|
|
941
|
+
export const zcodeMcpUiCancelCallParamsSchema = z
|
|
942
|
+
.object({ ...zcodeMcpUiPluginScopeShape, callId: nonEmptyString.max(128) })
|
|
943
|
+
.strict();
|
|
944
|
+
export type ZCodeMcpUiCancelCallParams = z.infer<typeof zcodeMcpUiCancelCallParamsSchema>;
|
|
945
|
+
export const zcodeMcpUiCancelCallResultSchema = z.object({ cancelled: z.boolean() }).strict();
|
|
946
|
+
export type ZCodeMcpUiCancelCallResult = z.infer<typeof zcodeMcpUiCancelCallResultSchema>;
|
|
947
|
+
/** 页面发起的 resources/list、resources/templates/list、subscribe、unsubscribe 代理。 */
|
|
948
|
+
export const zcodeMcpUiListResourcesParamsSchema = z
|
|
949
|
+
.object({ ...zcodeMcpUiPluginScopeShape, cursor: nonEmptyString.max(2048).optional() })
|
|
950
|
+
.strict();
|
|
951
|
+
export type ZCodeMcpUiListResourcesParams = z.infer<typeof zcodeMcpUiListResourcesParamsSchema>;
|
|
952
|
+
const zcodeMcpUiResourceDescriptorSchema = z
|
|
953
|
+
.object({
|
|
954
|
+
uri: z.string(),
|
|
955
|
+
name: z.string().optional(),
|
|
956
|
+
title: z.string().optional(),
|
|
957
|
+
description: z.string().optional(),
|
|
958
|
+
mimeType: z.string().optional(),
|
|
959
|
+
// MCP Resource 的标准字段;规范把资源级 csp / prefersBorder 放在这里,宿主读 HTML 项缺 _meta 时回退用。
|
|
960
|
+
_meta: z.record(z.string(), z.unknown()).optional(),
|
|
961
|
+
})
|
|
962
|
+
.strict();
|
|
963
|
+
export const zcodeMcpUiListResourcesResultSchema = z
|
|
964
|
+
.object({
|
|
965
|
+
resources: z.array(zcodeMcpUiResourceDescriptorSchema),
|
|
966
|
+
nextCursor: z.string().optional(),
|
|
967
|
+
})
|
|
968
|
+
.strict();
|
|
969
|
+
export type ZCodeMcpUiListResourcesResult = z.infer<typeof zcodeMcpUiListResourcesResultSchema>;
|
|
970
|
+
export const zcodeMcpUiListResourceTemplatesResultSchema = z
|
|
971
|
+
.object({
|
|
972
|
+
resourceTemplates: z.array(
|
|
973
|
+
z
|
|
974
|
+
.object({
|
|
975
|
+
uriTemplate: z.string(),
|
|
976
|
+
name: z.string().optional(),
|
|
977
|
+
title: z.string().optional(),
|
|
978
|
+
description: z.string().optional(),
|
|
979
|
+
mimeType: z.string().optional(),
|
|
980
|
+
})
|
|
981
|
+
.strict(),
|
|
982
|
+
),
|
|
983
|
+
nextCursor: z.string().optional(),
|
|
984
|
+
})
|
|
985
|
+
.strict();
|
|
986
|
+
export type ZCodeMcpUiListResourceTemplatesResult = z.infer<
|
|
987
|
+
typeof zcodeMcpUiListResourceTemplatesResultSchema
|
|
988
|
+
>;
|
|
989
|
+
/** 订阅者身份 = 会话 + 沙箱作用域 + 实例代际(initId);dispose 只退订本代际,新实例不受影响。 */
|
|
990
|
+
export const zcodeMcpUiResourceSubscriptionParamsSchema = z
|
|
991
|
+
.object({
|
|
992
|
+
...zcodeMcpUiPluginScopeShape,
|
|
993
|
+
scopeId: nonEmptyString.max(256),
|
|
994
|
+
generation: z.number().int().nonnegative(),
|
|
995
|
+
uri: nonEmptyString.max(2048),
|
|
996
|
+
})
|
|
997
|
+
.strict();
|
|
998
|
+
export type ZCodeMcpUiResourceSubscriptionParams = z.infer<
|
|
999
|
+
typeof zcodeMcpUiResourceSubscriptionParamsSchema
|
|
1000
|
+
>;
|
|
1001
|
+
export const zcodeMcpUiResourceSubscriptionResultSchema = z.object({}).strict();
|
|
1002
|
+
/**
|
|
1003
|
+
* App-Provided Tools:实例身份 = 会话 + 沙箱作用域 + 代际(与资源订阅同一三元组)。
|
|
1004
|
+
* 登记按实例整体替换;调用认领 / 回传按 callId 幂等。
|
|
1005
|
+
*/
|
|
1006
|
+
const zcodeMcpUiAppToolInstanceShape = {
|
|
1007
|
+
...zcodeMcpUiPluginScopeShape,
|
|
1008
|
+
scopeId: nonEmptyString.max(256),
|
|
1009
|
+
generation: z.number().int().nonnegative(),
|
|
1010
|
+
};
|
|
1011
|
+
export const zcodeMcpUiRegisterAppToolsParamsSchema = z
|
|
1012
|
+
.object({
|
|
1013
|
+
...zcodeMcpUiAppToolInstanceShape,
|
|
1014
|
+
tools: z.array(mcpAppsAppToolDescriptorSchema).max(MCP_APPS_APP_TOOLS_MAX_PER_INSTANCE),
|
|
1015
|
+
})
|
|
1016
|
+
.strict();
|
|
1017
|
+
export type ZCodeMcpUiRegisterAppToolsParams = z.infer<
|
|
1018
|
+
typeof zcodeMcpUiRegisterAppToolsParamsSchema
|
|
1019
|
+
>;
|
|
1020
|
+
export const zcodeMcpUiRegisterAppToolsResultSchema = z
|
|
1021
|
+
.object({ tools: z.array(z.object({ name: z.string(), modelName: z.string() }).strict()) })
|
|
1022
|
+
.strict();
|
|
1023
|
+
export type ZCodeMcpUiRegisterAppToolsResult = z.infer<
|
|
1024
|
+
typeof zcodeMcpUiRegisterAppToolsResultSchema
|
|
1025
|
+
>;
|
|
1026
|
+
export const zcodeMcpUiUnregisterAppToolsParamsSchema = z
|
|
1027
|
+
.object(zcodeMcpUiAppToolInstanceShape)
|
|
1028
|
+
.strict();
|
|
1029
|
+
export type ZCodeMcpUiUnregisterAppToolsParams = z.infer<
|
|
1030
|
+
typeof zcodeMcpUiUnregisterAppToolsParamsSchema
|
|
1031
|
+
>;
|
|
1032
|
+
export const zcodeMcpUiUnregisterAppToolsResultSchema = z
|
|
1033
|
+
.object({ removed: z.number().int().nonnegative() })
|
|
1034
|
+
.strict();
|
|
1035
|
+
export type ZCodeMcpUiUnregisterAppToolsResult = z.infer<
|
|
1036
|
+
typeof zcodeMcpUiUnregisterAppToolsResultSchema
|
|
1037
|
+
>;
|
|
1038
|
+
export const zcodeMcpUiClaimAppToolCallParamsSchema = z
|
|
1039
|
+
.object({
|
|
1040
|
+
...zcodeMcpUiAppToolInstanceShape,
|
|
1041
|
+
callId: nonEmptyString.max(MCP_APPS_APP_TOOL_CALL_ID_MAX_CHARS),
|
|
1042
|
+
})
|
|
1043
|
+
.strict();
|
|
1044
|
+
export type ZCodeMcpUiClaimAppToolCallParams = z.infer<
|
|
1045
|
+
typeof zcodeMcpUiClaimAppToolCallParamsSchema
|
|
1046
|
+
>;
|
|
1047
|
+
export const zcodeMcpUiAppToolAcceptedResultSchema = z.object({ accepted: z.boolean() }).strict();
|
|
1048
|
+
export type ZCodeMcpUiAppToolAcceptedResult = z.infer<typeof zcodeMcpUiAppToolAcceptedResultSchema>;
|
|
1049
|
+
export const zcodeMcpUiResolveAppToolCallParamsSchema = z
|
|
1050
|
+
.object({
|
|
1051
|
+
...zcodeMcpUiAppToolInstanceShape,
|
|
1052
|
+
callId: nonEmptyString.max(MCP_APPS_APP_TOOL_CALL_ID_MAX_CHARS),
|
|
1053
|
+
result: mcpAppsAppToolCallResultSchema.optional(),
|
|
1054
|
+
error: z
|
|
1055
|
+
.object({ message: z.string().max(MCP_APPS_APP_TOOL_ERROR_MESSAGE_MAX_CHARS) })
|
|
1056
|
+
.strict()
|
|
1057
|
+
.optional(),
|
|
1058
|
+
})
|
|
1059
|
+
.strict()
|
|
1060
|
+
.refine((value) => (value.result === undefined) !== (value.error === undefined), {
|
|
1061
|
+
message: "exactly one of result or error is required",
|
|
1062
|
+
});
|
|
1063
|
+
export type ZCodeMcpUiResolveAppToolCallParams = z.infer<
|
|
1064
|
+
typeof zcodeMcpUiResolveAppToolCallParamsSchema
|
|
1065
|
+
>;
|
|
1066
|
+
export const zcodeMcpUiCallToolResultSchema = z
|
|
1067
|
+
.object({
|
|
1068
|
+
content: z.array(z.record(z.string(), z.unknown())),
|
|
1069
|
+
structuredContent: z.unknown().optional(),
|
|
1070
|
+
isError: z.boolean().optional(),
|
|
1071
|
+
_meta: z.record(z.string(), z.unknown()).optional(),
|
|
1072
|
+
})
|
|
1073
|
+
.strict();
|
|
1074
|
+
export type ZCodeMcpUiCallToolResult = z.infer<typeof zcodeMcpUiCallToolResultSchema>;
|
|
1075
|
+
|
|
726
1076
|
export const zcodeSessionImportMessageSchema = z
|
|
727
1077
|
.object({
|
|
728
1078
|
role: z.enum(["user", "assistant"]),
|
|
@@ -842,7 +1192,15 @@ export const zcodeProviderAccountAccessSchema = z
|
|
|
842
1192
|
.object({
|
|
843
1193
|
type: z.literal("zhipu-account"),
|
|
844
1194
|
accountType: z.enum(["zai", "bigmodel"]),
|
|
845
|
-
|
|
1195
|
+
// `highspeed` 指加速卡这一账号访问类别(隐藏 Provider + 免签网关),与模型名
|
|
1196
|
+
// GLM-5.1-Highspeed 无关,仅字面重合。见 docs/highspeed/highspeed-access-mode-migration.md。
|
|
1197
|
+
mode: z.enum([
|
|
1198
|
+
"start-plan",
|
|
1199
|
+
"individual-coding-plan",
|
|
1200
|
+
"team-coding-plan",
|
|
1201
|
+
"off-peak",
|
|
1202
|
+
"highspeed",
|
|
1203
|
+
]),
|
|
846
1204
|
entitled: z.boolean(),
|
|
847
1205
|
})
|
|
848
1206
|
.strict();
|
|
@@ -1168,6 +1526,8 @@ export const zcodeSessionTitleUpdatedEventPayloadSchema = z
|
|
|
1168
1526
|
.strict();
|
|
1169
1527
|
export const zcodeTurnStartedEventPayloadSchema = z
|
|
1170
1528
|
.object({
|
|
1529
|
+
// CLI 的高精度执行时间可含小数;漏声明会使 strict 校验丢弃整条开始事件,Bot 因此无法清空上一轮回复。
|
|
1530
|
+
executionStartedAt: z.number().nonnegative().optional(),
|
|
1171
1531
|
turnNumber: z.number().int().nonnegative(),
|
|
1172
1532
|
input: z.string(),
|
|
1173
1533
|
inputId: nonEmptyString.optional(),
|
|
@@ -1392,6 +1752,7 @@ export const zcodePermissionRequestedEventPayloadSchema = z
|
|
|
1392
1752
|
reason: z.string(),
|
|
1393
1753
|
input: z.unknown(),
|
|
1394
1754
|
suggestedPermissionUpdates: z.array(zcodePermissionUpdateSchema).optional(),
|
|
1755
|
+
approvalMode: z.literal("user-once").optional(),
|
|
1395
1756
|
origin: zcodeInteractionRequestOriginSchema.optional(),
|
|
1396
1757
|
options: z.array(zcodePermissionOptionSchema).min(1),
|
|
1397
1758
|
childSessionId: nonEmptyString.optional(),
|
|
@@ -1556,8 +1917,12 @@ export const zcodeSessionSubagentsResultSchema = z
|
|
|
1556
1917
|
})
|
|
1557
1918
|
.strict();
|
|
1558
1919
|
export type ZCodeSessionSubagentsResult = z.infer<typeof zcodeSessionSubagentsResultSchema>;
|
|
1920
|
+
/** 服务端 feature key 的取值域在协议里的 zod 形态(packages/shared/src/dynamic-workflow-feature.ts)。 */
|
|
1921
|
+
export const zcodeDynamicWorkflowModeSchema = z.enum(DYNAMIC_WORKFLOW_MODES);
|
|
1922
|
+
|
|
1559
1923
|
export const zcodeSessionCreateParamsSchema = z
|
|
1560
1924
|
.object({
|
|
1925
|
+
additionalDirectories: z.array(nonEmptyString).max(256).optional(),
|
|
1561
1926
|
sessionId: nonEmptyString.optional(),
|
|
1562
1927
|
workspace: zcodeWorkspaceRefSchema,
|
|
1563
1928
|
parentSessionId: nonEmptyString.optional(),
|
|
@@ -1576,12 +1941,16 @@ export const zcodeSessionCreateParamsSchema = z
|
|
|
1576
1941
|
// 动态工作流灰度:与 offPeakToolEnabled 同一
|
|
1577
1942
|
// 模式——host 裁决后下发,缺省不下发 = 不注册工作流工具簇(fail-closed)。
|
|
1578
1943
|
dynamicWorkflowEnabled: z.boolean().optional(),
|
|
1944
|
+
// 灰度 mode 随布尔同行下发(launch.md「On demand: activation」):`onDemand` 让 CLI 把十个
|
|
1945
|
+
// 工具推迟到会话首次 `/workflow` 才注册;缺席 = 按布尔行事(alwaysOn),供旧 Host 配对。
|
|
1946
|
+
dynamicWorkflowMode: zcodeDynamicWorkflowModeSchema.optional(),
|
|
1579
1947
|
})
|
|
1580
1948
|
.strict();
|
|
1581
1949
|
export type ZCodeSessionCreateParams = z.infer<typeof zcodeSessionCreateParamsSchema>;
|
|
1582
1950
|
|
|
1583
1951
|
export const zcodeSessionResumeParamsSchema = z
|
|
1584
1952
|
.object({
|
|
1953
|
+
additionalDirectories: z.array(nonEmptyString).max(256).optional(),
|
|
1585
1954
|
sessionId: nonEmptyString,
|
|
1586
1955
|
workspace: zcodeWorkspaceRefSchema.optional(),
|
|
1587
1956
|
// 旧 session 尚无 runtime/model_selection entry 时,由同 task 的索引元数据提供迁移 hint。
|
|
@@ -1594,6 +1963,7 @@ export const zcodeSessionResumeParamsSchema = z
|
|
|
1594
1963
|
offPeakToolEnabled: z.boolean().optional(),
|
|
1595
1964
|
// 与 create 同语义;resume 不带会导致冷恢复丢工作流工具簇。
|
|
1596
1965
|
dynamicWorkflowEnabled: z.boolean().optional(),
|
|
1966
|
+
dynamicWorkflowMode: zcodeDynamicWorkflowModeSchema.optional(),
|
|
1597
1967
|
})
|
|
1598
1968
|
.strict();
|
|
1599
1969
|
export type ZCodeSessionResumeParams = z.infer<typeof zcodeSessionResumeParamsSchema>;
|
|
@@ -1601,9 +1971,7 @@ export type ZCodeSessionResumeParams = z.infer<typeof zcodeSessionResumeParamsSc
|
|
|
1601
1971
|
export const zcodeSessionListParamsSchema = z
|
|
1602
1972
|
.object({
|
|
1603
1973
|
workspace: zcodeWorkspaceRefSchema.optional(),
|
|
1604
|
-
// 显式身份查询包含隐藏会话;普通列表仍只返回主任务,避免索引修复激活 runtime。
|
|
1605
1974
|
sessionIds: z.array(nonEmptyString).min(1).max(64).optional(),
|
|
1606
|
-
includeArchived: z.boolean().default(false),
|
|
1607
1975
|
limit: z.number().int().positive().optional(),
|
|
1608
1976
|
})
|
|
1609
1977
|
.strict();
|
|
@@ -1652,6 +2020,9 @@ export const zcodeSessionReadParamsSchema = z
|
|
|
1652
2020
|
deliveryKind: zcodeDeliveryKindSchema.optional(),
|
|
1653
2021
|
messageLimit: z.number().int().positive().optional(),
|
|
1654
2022
|
afterSeq: z.number().int().nonnegative().optional(),
|
|
2023
|
+
// "index":仅 task index resync 使用,返回剥离 tool/reasoning/data URL 大载荷的同结构 snapshot,
|
|
2024
|
+
// 结果禁止回写 UI 状态;缺省等同 "full"。
|
|
2025
|
+
contentProfile: z.enum(["full", "index"]).optional(),
|
|
1655
2026
|
})
|
|
1656
2027
|
.strict();
|
|
1657
2028
|
export type ZCodeSessionReadParams = z.infer<typeof zcodeSessionReadParamsSchema>;
|
|
@@ -1682,6 +2053,15 @@ export type ZCodeSessionRuntimePreferencesScope = z.infer<
|
|
|
1682
2053
|
typeof zcodeSessionRuntimePreferencesScopeSchema
|
|
1683
2054
|
>;
|
|
1684
2055
|
|
|
2056
|
+
// subagents/readRuntimeConfig 返回 Host 已解析的完整快照或显式内置回退,不再传 Markdown。
|
|
2057
|
+
export {
|
|
2058
|
+
subagentRuntimeConfigSchema,
|
|
2059
|
+
type SubagentRuntimeConfig,
|
|
2060
|
+
} from "../subagent-runtime-config.js";
|
|
2061
|
+
export const zcodeSubagentsReadRuntimeConfigParamsSchema = z
|
|
2062
|
+
.object({ sessionId: nonEmptyString })
|
|
2063
|
+
.strict();
|
|
2064
|
+
|
|
1685
2065
|
export const ZCODE_SESSION_RUNTIME_PREFERENCES_REQUEST_TIMEOUT_MS = 15_000;
|
|
1686
2066
|
|
|
1687
2067
|
export const zcodeSessionRequestRuntimePreferencesParamsSchema = z
|
|
@@ -1702,7 +2082,10 @@ export type ZCodeModelContextBudgetStrategy = z.infer<typeof zcodeModelContextBu
|
|
|
1702
2082
|
|
|
1703
2083
|
export const zcodeSessionRuntimePreferencesResultSchema = z
|
|
1704
2084
|
.object({
|
|
2085
|
+
additionalDirectories: z.array(nonEmptyString).max(256).optional(),
|
|
1705
2086
|
nativeSearchEnhancementsEnabled: z.boolean(),
|
|
2087
|
+
toolSearchMode: appToolSearchModeSchema.default("off"),
|
|
2088
|
+
subagentRuntimeConfigEnabled: z.boolean().optional(),
|
|
1706
2089
|
memoryEnabled: z.boolean().default(false),
|
|
1707
2090
|
askUserQuestionAutoResolutionEnabled: z.boolean().default(true),
|
|
1708
2091
|
integratedTerminalShell: integratedTerminalShellSelectionSchema.optional(),
|
|
@@ -2178,6 +2561,23 @@ export const zcodeProviderUpdateAccountConfigResultSchema = z
|
|
|
2178
2561
|
export type ZCodeProviderUpdateAccountConfigResult = z.infer<
|
|
2179
2562
|
typeof zcodeProviderUpdateAccountConfigResultSchema
|
|
2180
2563
|
>;
|
|
2564
|
+
/** Worker 从所属 Environment 的正式 Config Store 重建进程内 Provider Registry。 */
|
|
2565
|
+
export const zcodeProviderRefreshRegistryParamsSchema = z
|
|
2566
|
+
.object({
|
|
2567
|
+
reason: nonEmptyString,
|
|
2568
|
+
})
|
|
2569
|
+
.strict();
|
|
2570
|
+
export const zcodeProviderRefreshRegistryResultSchema = z
|
|
2571
|
+
.object({
|
|
2572
|
+
refreshed: z.literal(true),
|
|
2573
|
+
})
|
|
2574
|
+
.strict();
|
|
2575
|
+
export type ZCodeProviderRefreshRegistryParams = z.infer<
|
|
2576
|
+
typeof zcodeProviderRefreshRegistryParamsSchema
|
|
2577
|
+
>;
|
|
2578
|
+
export type ZCodeProviderRefreshRegistryResult = z.infer<
|
|
2579
|
+
typeof zcodeProviderRefreshRegistryResultSchema
|
|
2580
|
+
>;
|
|
2181
2581
|
export const zcodeInteractionPreferencesSchema = z
|
|
2182
2582
|
.object({
|
|
2183
2583
|
askUserQuestionAutoResolutionEnabled: z.boolean(),
|
|
@@ -2260,6 +2660,8 @@ export const zcodeWorkspaceUpdateDynamicWorkflowPolicyParamsSchema = z
|
|
|
2260
2660
|
.object({
|
|
2261
2661
|
workspace: zcodeWorkspaceRefSchema,
|
|
2262
2662
|
enabled: z.boolean(),
|
|
2663
|
+
// launch.md「On demand: activation」:mode 与布尔同行;缺席时 CLI 按布尔行事(alwaysOn)。
|
|
2664
|
+
mode: zcodeDynamicWorkflowModeSchema.optional(),
|
|
2263
2665
|
})
|
|
2264
2666
|
.strict();
|
|
2265
2667
|
export type ZCodeWorkspaceUpdateDynamicWorkflowPolicyParams = z.infer<
|
|
@@ -2378,7 +2780,7 @@ export const zcodeUserInputResponseSchema = z
|
|
|
2378
2780
|
.strict();
|
|
2379
2781
|
export type ZCodeUserInputResponse = z.infer<typeof zcodeUserInputResponseSchema>;
|
|
2380
2782
|
|
|
2381
|
-
export const zcodeProviderRuntimeHeadersRequestReasonSchema = z.enum(
|
|
2783
|
+
export const zcodeProviderRuntimeHeadersRequestReasonSchema = z.enum(requestVerificationReasons);
|
|
2382
2784
|
export const zcodeProviderRuntimeHeadersRequestParamsSchema = z
|
|
2383
2785
|
.object({
|
|
2384
2786
|
requestId: nonEmptyString,
|
|
@@ -2388,6 +2790,14 @@ export const zcodeProviderRuntimeHeadersRequestParamsSchema = z
|
|
|
2388
2790
|
modelSelection: modelSelectionSchema,
|
|
2389
2791
|
providerId: nonEmptyString,
|
|
2390
2792
|
accountAccess: zcodeProviderAccountAccessSchema.optional(),
|
|
2793
|
+
expectedAccountScope: z
|
|
2794
|
+
.string()
|
|
2795
|
+
.regex(/^[a-f0-9]{64}$/)
|
|
2796
|
+
.optional(),
|
|
2797
|
+
rejectedProjectTokenFingerprint: z
|
|
2798
|
+
.string()
|
|
2799
|
+
.regex(/^[a-f0-9]{64}$/)
|
|
2800
|
+
.optional(),
|
|
2391
2801
|
reason: zcodeProviderRuntimeHeadersRequestReasonSchema,
|
|
2392
2802
|
})
|
|
2393
2803
|
.strict();
|
|
@@ -2415,6 +2825,11 @@ export const zcodeProviderRuntimeHeadersResponseSchema = z.discriminatedUnion("h
|
|
|
2415
2825
|
requestAuth: z
|
|
2416
2826
|
.object({
|
|
2417
2827
|
apiKey: nonEmptyString.optional(),
|
|
2828
|
+
apiKeyId: z.string().trim().min(1).optional(),
|
|
2829
|
+
accountScope: z
|
|
2830
|
+
.string()
|
|
2831
|
+
.regex(/^[a-f0-9]{64}$/)
|
|
2832
|
+
.optional(),
|
|
2418
2833
|
headers: z.record(nonEmptyString, nonEmptyString).optional(),
|
|
2419
2834
|
})
|
|
2420
2835
|
.strict(),
|
|
@@ -2532,6 +2947,21 @@ export const zcodePluginComponentGroupSchema = z
|
|
|
2532
2947
|
.strict();
|
|
2533
2948
|
export type ZCodePluginComponentGroup = z.infer<typeof zcodePluginComponentGroupSchema>;
|
|
2534
2949
|
|
|
2950
|
+
export const zcodePluginUiSurfaceSchema = z
|
|
2951
|
+
.object({
|
|
2952
|
+
pluginId: nonEmptyString,
|
|
2953
|
+
pluginName: nonEmptyString,
|
|
2954
|
+
id: nonEmptyString.max(128),
|
|
2955
|
+
title: z.union([nonEmptyString, z.record(z.string(), z.string())]),
|
|
2956
|
+
icon: z.string().optional(),
|
|
2957
|
+
// 运行时 namespaced server 名(plugin:<name>:<server>),可直接用于 mcp/uiReadResource。
|
|
2958
|
+
server: nonEmptyString,
|
|
2959
|
+
resourceUri: nonEmptyString.max(2048),
|
|
2960
|
+
availability: z.literal("session"),
|
|
2961
|
+
})
|
|
2962
|
+
.strict();
|
|
2963
|
+
export type ZCodePluginUiSurface = z.infer<typeof zcodePluginUiSurfaceSchema>;
|
|
2964
|
+
|
|
2535
2965
|
export const zcodePluginInfoSchema = z
|
|
2536
2966
|
.object({
|
|
2537
2967
|
id: nonEmptyString,
|
|
@@ -2551,6 +2981,7 @@ export const zcodePluginInfoSchema = z
|
|
|
2551
2981
|
// 权威组件清单(名称 + 可选描述),由 CLI 对插件根目录枚举得出,与启用态无关。
|
|
2552
2982
|
// 详情 UI 直接展示,取代旧的「数量取协议、名称靠 UI 侧 join」脆弱方案。optional 兼容旧 payload。
|
|
2553
2983
|
components: z.array(zcodePluginComponentGroupSchema).optional(),
|
|
2984
|
+
uiSurfaces: z.array(zcodePluginUiSurfaceSchema).optional(),
|
|
2554
2985
|
declaredMcpServerNames: z.array(z.string()).optional(),
|
|
2555
2986
|
hostMcpServerNames: z.array(z.string()).optional(),
|
|
2556
2987
|
mcpServerNames: z.array(z.string()),
|
|
@@ -2591,7 +3022,22 @@ export const zcodePluginsListResultSchema = z
|
|
|
2591
3022
|
.strict();
|
|
2592
3023
|
export type ZCodePluginsListResult = z.infer<typeof zcodePluginsListResultSchema>;
|
|
2593
3024
|
|
|
2594
|
-
// ──
|
|
3025
|
+
// ── 插件 UI 面板入口──
|
|
3026
|
+
// 工作区级只读投影:已启用插件清单 `ui.surfaces[]` 的合法条目;插件启停后 host 重新拉取。
|
|
3027
|
+
export const zcodePluginsListUiSurfacesParamsSchema = z
|
|
3028
|
+
.object({ workspace: zcodeWorkspaceRefSchema })
|
|
3029
|
+
.strict();
|
|
3030
|
+
export type ZCodePluginsListUiSurfacesParams = z.infer<
|
|
3031
|
+
typeof zcodePluginsListUiSurfacesParamsSchema
|
|
3032
|
+
>;
|
|
3033
|
+
export const zcodePluginsListUiSurfacesResultSchema = z
|
|
3034
|
+
.object({ surfaces: z.array(zcodePluginUiSurfaceSchema) })
|
|
3035
|
+
.strict();
|
|
3036
|
+
export type ZCodePluginsListUiSurfacesResult = z.infer<
|
|
3037
|
+
typeof zcodePluginsListUiSurfacesResultSchema
|
|
3038
|
+
>;
|
|
3039
|
+
|
|
3040
|
+
// ── Plugin 对话引用 catalog(docs/plugin-reference-mention.md)──
|
|
2595
3041
|
// Session-scoped 只读投影:带 sessionId → 该 Session 创建时冻结的身份 catalog;
|
|
2596
3042
|
// 不带 → workspace 当前 catalog(新建草稿 Picker)。身份与能力字段保持
|
|
2597
3043
|
// identifiers-only,不携带 rootPath/配置等;可选 icon/displayName(I18n)/description(I18n)
|
|
@@ -2938,6 +3384,99 @@ export const zcodeWorkflowsMoveResultSchema = z.union([
|
|
|
2938
3384
|
]);
|
|
2939
3385
|
export type ZCodeWorkflowsMoveResult = z.infer<typeof zcodeWorkflowsMoveResultSchema>;
|
|
2940
3386
|
|
|
3387
|
+
// ── 从一次 run 保存工作流(docs/dynamic-workflow/transcript-and-notifications.md「Saving the
|
|
3388
|
+
// run, and running it again」)──
|
|
3389
|
+
// 完成卡的「直接保存」走这条:**不收脚本,只收 runId**——要写的那份正文是这次 run 实际执行的
|
|
3390
|
+
// 脚本,agent 从 journal 记录(`scriptText`)里读。脚本不经 GUI 走一圈有两个后果值得写下来:
|
|
3391
|
+
// 修订过的 run 存下的是**结算它的**那一份,而工具行入参被快照裁成预览的老对话也照样存得出
|
|
3392
|
+
// 同样的字节。名字合法性、覆盖、遮��与类型检查全部复用 SaveWorkflow 的同一套实现(不变式 3)。
|
|
3393
|
+
/** 另一档已有同名定义(遮蔽事实);与 contracts 的 SavedWorkflowShadowing 逐字对齐。 */
|
|
3394
|
+
export const zcodeSavedWorkflowShadowingSchema = z.enum(["hides_global", "hidden_by_project"]);
|
|
3395
|
+
export type ZCodeSavedWorkflowShadowing = z.infer<typeof zcodeSavedWorkflowShadowingSchema>;
|
|
3396
|
+
|
|
3397
|
+
export const zcodeWorkflowsSaveParamsSchema = z
|
|
3398
|
+
.object({
|
|
3399
|
+
// 两用:既是载体运行时,也是这次 run 的项目——journal 在它那里,项目根也在它那里。
|
|
3400
|
+
// 全局档同样带它(与 list/get 的「全局只当载体」不同):脚本必须从这个 agent 的 journal 读。
|
|
3401
|
+
workspace: zcodeWorkspaceRefSchema,
|
|
3402
|
+
runId: nonEmptyString,
|
|
3403
|
+
name: nonEmptyString,
|
|
3404
|
+
meta: zcodeSavedWorkflowMetaSchema,
|
|
3405
|
+
// 缺省 `project`。
|
|
3406
|
+
scope: zcodeSavedWorkflowScopeSchema.optional(),
|
|
3407
|
+
// 只有 GUI 已经把覆盖警告摆给用户看过时才为 true;缺省即「目标已存在就拒绝」——
|
|
3408
|
+
// 覆盖是用户的决定,不是一次保存的副作用(与 `workflows/move` 不覆盖同一条纪律)。
|
|
3409
|
+
overwrite: z.boolean().optional(),
|
|
3410
|
+
})
|
|
3411
|
+
.strict();
|
|
3412
|
+
export type ZCodeWorkflowsSaveParams = z.infer<typeof zcodeWorkflowsSaveParamsSchema>;
|
|
3413
|
+
export const zcodeWorkflowsSaveResultSchema = z.union([
|
|
3414
|
+
z
|
|
3415
|
+
.object({
|
|
3416
|
+
ok: z.literal(true),
|
|
3417
|
+
name: nonEmptyString,
|
|
3418
|
+
scope: zcodeSavedWorkflowScopeSchema,
|
|
3419
|
+
path: nonEmptyString,
|
|
3420
|
+
/** 写的那一刻重新判定,不回抄入参里的 `overwrite`(与 SaveWorkflow 的 `overwritten` 同源)。 */
|
|
3421
|
+
overwritten: z.boolean(),
|
|
3422
|
+
shadowing: zcodeSavedWorkflowShadowingSchema.optional(),
|
|
3423
|
+
})
|
|
3424
|
+
.strict(),
|
|
3425
|
+
z
|
|
3426
|
+
.object({
|
|
3427
|
+
ok: z.literal(false),
|
|
3428
|
+
// run_not_found:journal 里没有这条 run;script_missing:老记录没存脚本原文;
|
|
3429
|
+
// target_exists:目标已存在而调用方没说覆盖;compile_failed:类型检查没过,一个字节都没写。
|
|
3430
|
+
reason: z.enum([
|
|
3431
|
+
"invalid_name",
|
|
3432
|
+
"run_not_found",
|
|
3433
|
+
"script_missing",
|
|
3434
|
+
"target_exists",
|
|
3435
|
+
"compile_failed",
|
|
3436
|
+
"write_error",
|
|
3437
|
+
]),
|
|
3438
|
+
path: z.string().optional(),
|
|
3439
|
+
detail: z.string().optional(),
|
|
3440
|
+
})
|
|
3441
|
+
.strict(),
|
|
3442
|
+
]);
|
|
3443
|
+
export type ZCodeWorkflowsSaveResult = z.infer<typeof zcodeWorkflowsSaveResultSchema>;
|
|
3444
|
+
|
|
3445
|
+
// ── 一次 run 对应哪个已保存工作流 ──
|
|
3446
|
+
// 完成卡的「已保存」芯片与「再次运行」都问这一个问题,而答案**推导得来、不记在卡上**:重开
|
|
3447
|
+
// 会话、换一个窗口保存、在对话里保存,都走同一条判定。判定住在 agent 一侧,因为两份事实
|
|
3448
|
+
// (run 的 journal 记录与磁盘上的定义)都在那里;返回解析好的 entry,用户后来删掉的那一份
|
|
3449
|
+
// 因此会自动不再算数。
|
|
3450
|
+
/** 转写自对话的候选:模型用 `SaveWorkflow` 存过、并在入参里认领了这次 run。 */
|
|
3451
|
+
export const zcodeWorkflowsForRunCandidateSchema = z
|
|
3452
|
+
.object({ name: nonEmptyString, scope: zcodeSavedWorkflowScopeSchema.optional() })
|
|
3453
|
+
.strict();
|
|
3454
|
+
export type ZCodeWorkflowsForRunCandidate = z.infer<typeof zcodeWorkflowsForRunCandidateSchema>;
|
|
3455
|
+
/** 候选上界:一次 run 在一段对话里被存过的次数远小于它。 */
|
|
3456
|
+
export const ZCODE_WORKFLOWS_FOR_RUN_MAX_CANDIDATES = 8;
|
|
3457
|
+
export const zcodeWorkflowsForRunParamsSchema = z
|
|
3458
|
+
.object({
|
|
3459
|
+
workspace: zcodeWorkspaceRefSchema,
|
|
3460
|
+
runId: nonEmptyString,
|
|
3461
|
+
candidates: z
|
|
3462
|
+
.array(zcodeWorkflowsForRunCandidateSchema)
|
|
3463
|
+
.max(ZCODE_WORKFLOWS_FOR_RUN_MAX_CANDIDATES)
|
|
3464
|
+
.optional(),
|
|
3465
|
+
})
|
|
3466
|
+
.strict();
|
|
3467
|
+
export type ZCodeWorkflowsForRunParams = z.infer<typeof zcodeWorkflowsForRunParamsSchema>;
|
|
3468
|
+
export const zcodeWorkflowsForRunResultSchema = z
|
|
3469
|
+
.object({
|
|
3470
|
+
/** 命中的定义;缺席即这次 run 还没有对应的已保存工作流。 */
|
|
3471
|
+
entry: zcodeSavedWorkflowEntrySchema.optional(),
|
|
3472
|
+
/** 命中的是哪一条规则(诊断与测试用;UI 只看 entry 在不在)。 */
|
|
3473
|
+
match: z.enum(["candidate", "script", "name"]).optional(),
|
|
3474
|
+
/** 这次 run 跑时用的实参(journal 原样),供「再次运行」预填实参窗。 */
|
|
3475
|
+
runArgs: z.record(z.string(), z.unknown()).optional(),
|
|
3476
|
+
})
|
|
3477
|
+
.strict();
|
|
3478
|
+
export type ZCodeWorkflowsForRunResult = z.infer<typeof zcodeWorkflowsForRunResultSchema>;
|
|
3479
|
+
|
|
2941
3480
|
// 推荐 Prompt 的可信插件解析:UI 不拆解 stableId,也不从旧目录快照推断可安装性。
|
|
2942
3481
|
export const zcodePluginSuggestedReferenceStatusSchema = z.enum([
|
|
2943
3482
|
"ready",
|
|
@@ -3008,6 +3547,7 @@ export const zcodePluginStoreListingSchema = z
|
|
|
3008
3547
|
descriptionI18n: z.record(z.string(), z.string()).optional(),
|
|
3009
3548
|
icon: z.string().optional(),
|
|
3010
3549
|
category: z.string().optional(),
|
|
3550
|
+
publisherType: z.enum(["official", "community"]).optional(),
|
|
3011
3551
|
author: z.string().optional(),
|
|
3012
3552
|
authorUrl: z.string().optional(),
|
|
3013
3553
|
homepage: z.string().optional(),
|
|
@@ -3499,8 +4039,14 @@ export type ZCodeAutomationDeleteProtocolResult = z.infer<typeof zcodeAutomation
|
|
|
3499
4039
|
// ---- Off-Peak(闲时任务)会话内创建协议----
|
|
3500
4040
|
// 与 automation 兄弟并列(独立域,禁止互相复用标记/表)。workspace 由 host 端从
|
|
3501
4041
|
// 当前 session 注入,不进协议参数(对称 automation/create)。permissionMode 只开放产品
|
|
3502
|
-
//
|
|
3503
|
-
export const zcodeOffPeakPermissionModeSchema = z.enum([
|
|
4042
|
+
// 四档词表(D29-4);缺省解析在 host 端(D49-4:yolo / allowed_models 末位 / 最高推理档)。
|
|
4043
|
+
export const zcodeOffPeakPermissionModeSchema = z.enum([
|
|
4044
|
+
"build",
|
|
4045
|
+
"edit",
|
|
4046
|
+
"plan",
|
|
4047
|
+
"yolo",
|
|
4048
|
+
"guarded",
|
|
4049
|
+
]);
|
|
3504
4050
|
export type ZCodeOffPeakProtocolPermissionMode = z.infer<typeof zcodeOffPeakPermissionModeSchema>;
|
|
3505
4051
|
|
|
3506
4052
|
export const zcodeOffPeakCreateParamsSchema = z
|
|
@@ -3568,6 +4114,7 @@ export const zcodeProtocolMethods = {
|
|
|
3568
4114
|
sessionList: "session/list",
|
|
3569
4115
|
sessionSubagents: "session/subagents",
|
|
3570
4116
|
sessionRequestRuntimePreferences: "session/requestRuntimePreferences",
|
|
4117
|
+
subagentsReadRuntimeConfig: "subagents/readRuntimeConfig",
|
|
3571
4118
|
sessionRead: "session/read",
|
|
3572
4119
|
sessionMessages: "session/messages",
|
|
3573
4120
|
sessionEvents: "session/events",
|
|
@@ -3601,6 +4148,7 @@ export const zcodeProtocolMethods = {
|
|
|
3601
4148
|
workspaceHookTrustGrant: "workspace/hooks/trustGrant",
|
|
3602
4149
|
// 进程级 Account Provider Config 与 workspace 运行目录分离。
|
|
3603
4150
|
providerUpdateAccountConfig: "provider/updateAccountConfig",
|
|
4151
|
+
providerRefreshRegistry: "provider/refreshRegistry",
|
|
3604
4152
|
workspaceUpdateInteractionPreferences: "workspace/updateInteractionPreferences",
|
|
3605
4153
|
workspaceUpdateModelIoPreferences: "workspace/updateModelIoPreferences",
|
|
3606
4154
|
// Off-Peak 工具面门禁是 workspace 级事实(灰度 + 本地/远程),由 host 在 agent 就绪时同步;
|
|
@@ -3614,8 +4162,27 @@ export const zcodeProtocolMethods = {
|
|
|
3614
4162
|
workspaceCancelGenerateText: "workspace/cancelGenerateText",
|
|
3615
4163
|
providerTestModelConnectivity: "provider/testModelConnectivity",
|
|
3616
4164
|
mcpList: "mcp/list",
|
|
4165
|
+
mcpReadResource: "mcp/readResource",
|
|
4166
|
+
mcpUiOpenInstance: "mcp/uiOpenInstance",
|
|
4167
|
+
mcpUiCloseInstance: "mcp/uiCloseInstance",
|
|
4168
|
+
mcpUiValidateInstance: "mcp/uiValidateInstance",
|
|
4169
|
+
mcpUiSampling: "mcp/uiSampling",
|
|
4170
|
+
mcpUiCancelSampling: "mcp/uiCancelSampling",
|
|
4171
|
+
mcpUiCallTool: "mcp/uiCallTool",
|
|
4172
|
+
mcpUiCancelCall: "mcp/uiCancelCall",
|
|
4173
|
+
mcpUiReadResource: "mcp/uiReadResource",
|
|
4174
|
+
mcpUiListResources: "mcp/uiListResources",
|
|
4175
|
+
mcpUiListResourceTemplates: "mcp/uiListResourceTemplates",
|
|
4176
|
+
mcpUiSubscribeResource: "mcp/uiSubscribeResource",
|
|
4177
|
+
mcpUiUnsubscribeResource: "mcp/uiUnsubscribeResource",
|
|
4178
|
+
// App-Provided Tools:页面工具登记 / 注销,与模型调用的认领 / 回传(信箱投递走 v4 live 增量)。
|
|
4179
|
+
mcpUiRegisterAppTools: "mcp/uiRegisterAppTools",
|
|
4180
|
+
mcpUiUnregisterAppTools: "mcp/uiUnregisterAppTools",
|
|
4181
|
+
mcpUiClaimAppToolCall: "mcp/uiClaimAppToolCall",
|
|
4182
|
+
mcpUiResolveAppToolCall: "mcp/uiResolveAppToolCall",
|
|
3617
4183
|
pluginsList: "plugins/list",
|
|
3618
4184
|
pluginsReferenceCatalog: "plugins/referenceCatalog",
|
|
4185
|
+
pluginsListUiSurfaces: "plugins/listUiSurfaces",
|
|
3619
4186
|
pluginsReferenceCatalogWithCategory: "plugins/referenceCatalogWithCategory",
|
|
3620
4187
|
skillsReferenceCatalog: "skills/referenceCatalog",
|
|
3621
4188
|
// 已保存工作流的 GUI 中枢:workspace 级、无会话。
|
|
@@ -3626,6 +4193,10 @@ export const zcodeProtocolMethods = {
|
|
|
3626
4193
|
workflowsRuns: "workflows/runs",
|
|
3627
4194
|
// 在项目档 / 全局档之间移动同名文件。
|
|
3628
4195
|
workflowsMove: "workflows/move",
|
|
4196
|
+
// 完成卡的「直接保存」与「已保存」判定(docs/dynamic-workflow/transcript-and-notifications.md):
|
|
4197
|
+
// 前者按 runId 从 journal 取脚本落盘,后者回答「这次 run 对应哪个已保存工作流」。
|
|
4198
|
+
workflowsSave: "workflows/save",
|
|
4199
|
+
workflowsForRun: "workflows/forRun",
|
|
3629
4200
|
pluginsResolveSuggestedReference: "plugins/resolveSuggestedReference",
|
|
3630
4201
|
pluginsSetEnabled: "plugins/setEnabled",
|
|
3631
4202
|
pluginsOverview: "plugins/overview",
|
|
@@ -3642,6 +4213,9 @@ export const zcodeProtocolMethods = {
|
|
|
3642
4213
|
pluginsValidate: "plugins/validate",
|
|
3643
4214
|
pluginsDescribe: "plugins/describe",
|
|
3644
4215
|
automationCreate: "automation/create",
|
|
4216
|
+
topicResourceRead: "topic/resource/read",
|
|
4217
|
+
channelReply: "bot/channel/reply",
|
|
4218
|
+
topicResourceCancel: "topic/resource/cancel",
|
|
3645
4219
|
automationUpdate: "automation/update",
|
|
3646
4220
|
automationCheckTaskBinding: "automation/checkTaskBinding",
|
|
3647
4221
|
automationList: "automation/list",
|
|
@@ -3657,6 +4231,7 @@ export const zcodeProtocolMethods = {
|
|
|
3657
4231
|
sessionUsage: "session/usage",
|
|
3658
4232
|
// 资源管理器:CLI 回报其 MCP 子进程 pid 与插件归属(纯内存,无 I/O),采样在 Host 侧完成。
|
|
3659
4233
|
processChildProcesses: "process/childProcesses",
|
|
4234
|
+
processNetworkCapture: "process/networkCapture",
|
|
3660
4235
|
interactionRequestPermission: "interaction/requestPermission",
|
|
3661
4236
|
interactionRequestUserInput: "interaction/requestUserInput",
|
|
3662
4237
|
interactionRequestProviderRuntimeHeaders: "interaction/requestProviderRuntimeHeaders",
|
|
@@ -3673,6 +4248,18 @@ export const zcodeProtocolEmptyResultSchema = z.object({}).strict();
|
|
|
3673
4248
|
// 最新 V4 主链已不再依赖旧版全量方法表;这里仅保留仍被兼容测试和 browser broker
|
|
3674
4249
|
// 消费的最小契约集合,避免重新引入已移除的 legacy 方法。
|
|
3675
4250
|
export const zcodeProtocolSessionMethodContracts = {
|
|
4251
|
+
[zcodeProtocolMethods.mcpUiOpenInstance]: {
|
|
4252
|
+
params: zcodeMcpUiOpenInstanceParamsSchema,
|
|
4253
|
+
result: zcodeMcpUiOpenInstanceResultSchema,
|
|
4254
|
+
},
|
|
4255
|
+
[zcodeProtocolMethods.mcpUiCloseInstance]: {
|
|
4256
|
+
params: zcodeMcpUiCloseInstanceParamsSchema,
|
|
4257
|
+
result: zcodeMcpUiCloseInstanceResultSchema,
|
|
4258
|
+
},
|
|
4259
|
+
[zcodeProtocolMethods.mcpUiValidateInstance]: {
|
|
4260
|
+
params: zcodeMcpUiCloseInstanceParamsSchema,
|
|
4261
|
+
result: zcodeMcpUiResourceSubscriptionResultSchema,
|
|
4262
|
+
},
|
|
3676
4263
|
[zcodeProtocolMethods.workspaceHookTrustGrant]: {
|
|
3677
4264
|
params: zcodeWorkspaceHookTrustGrantParamsSchema,
|
|
3678
4265
|
result: zcodeWorkspaceHookTrustGrantResultSchema,
|
|
@@ -3681,6 +4268,62 @@ export const zcodeProtocolSessionMethodContracts = {
|
|
|
3681
4268
|
params: zcodeMcpListParamsSchema,
|
|
3682
4269
|
result: zcodeMcpListResultSchema,
|
|
3683
4270
|
},
|
|
4271
|
+
[zcodeProtocolMethods.mcpReadResource]: {
|
|
4272
|
+
params: zcodeMcpReadResourceParamsSchema,
|
|
4273
|
+
result: zcodeMcpReadResourceResultSchema,
|
|
4274
|
+
},
|
|
4275
|
+
[zcodeProtocolMethods.mcpUiSampling]: {
|
|
4276
|
+
params: zcodeMcpUiSamplingParamsSchema,
|
|
4277
|
+
result: zcodeMcpUiSamplingResultSchema,
|
|
4278
|
+
},
|
|
4279
|
+
[zcodeProtocolMethods.mcpUiCancelSampling]: {
|
|
4280
|
+
params: zcodeMcpUiCancelSamplingParamsSchema,
|
|
4281
|
+
result: zcodeMcpUiCancelCallResultSchema,
|
|
4282
|
+
},
|
|
4283
|
+
[zcodeProtocolMethods.mcpUiCallTool]: {
|
|
4284
|
+
params: zcodeMcpUiCallToolParamsSchema,
|
|
4285
|
+
result: zcodeMcpUiCallToolResultSchema,
|
|
4286
|
+
},
|
|
4287
|
+
[zcodeProtocolMethods.mcpUiCancelCall]: {
|
|
4288
|
+
params: zcodeMcpUiCancelCallParamsSchema,
|
|
4289
|
+
result: zcodeMcpUiCancelCallResultSchema,
|
|
4290
|
+
},
|
|
4291
|
+
[zcodeProtocolMethods.mcpUiReadResource]: {
|
|
4292
|
+
params: zcodeMcpUiReadResourceParamsSchema,
|
|
4293
|
+
result: zcodeMcpUiReadResourceResultSchema,
|
|
4294
|
+
},
|
|
4295
|
+
[zcodeProtocolMethods.mcpUiListResources]: {
|
|
4296
|
+
params: zcodeMcpUiListResourcesParamsSchema,
|
|
4297
|
+
result: zcodeMcpUiListResourcesResultSchema,
|
|
4298
|
+
},
|
|
4299
|
+
[zcodeProtocolMethods.mcpUiListResourceTemplates]: {
|
|
4300
|
+
params: zcodeMcpUiListResourcesParamsSchema,
|
|
4301
|
+
result: zcodeMcpUiListResourceTemplatesResultSchema,
|
|
4302
|
+
},
|
|
4303
|
+
[zcodeProtocolMethods.mcpUiSubscribeResource]: {
|
|
4304
|
+
params: zcodeMcpUiResourceSubscriptionParamsSchema,
|
|
4305
|
+
result: zcodeMcpUiResourceSubscriptionResultSchema,
|
|
4306
|
+
},
|
|
4307
|
+
[zcodeProtocolMethods.mcpUiUnsubscribeResource]: {
|
|
4308
|
+
params: zcodeMcpUiResourceSubscriptionParamsSchema,
|
|
4309
|
+
result: zcodeMcpUiResourceSubscriptionResultSchema,
|
|
4310
|
+
},
|
|
4311
|
+
[zcodeProtocolMethods.mcpUiRegisterAppTools]: {
|
|
4312
|
+
params: zcodeMcpUiRegisterAppToolsParamsSchema,
|
|
4313
|
+
result: zcodeMcpUiRegisterAppToolsResultSchema,
|
|
4314
|
+
},
|
|
4315
|
+
[zcodeProtocolMethods.mcpUiUnregisterAppTools]: {
|
|
4316
|
+
params: zcodeMcpUiUnregisterAppToolsParamsSchema,
|
|
4317
|
+
result: zcodeMcpUiUnregisterAppToolsResultSchema,
|
|
4318
|
+
},
|
|
4319
|
+
[zcodeProtocolMethods.mcpUiClaimAppToolCall]: {
|
|
4320
|
+
params: zcodeMcpUiClaimAppToolCallParamsSchema,
|
|
4321
|
+
result: zcodeMcpUiAppToolAcceptedResultSchema,
|
|
4322
|
+
},
|
|
4323
|
+
[zcodeProtocolMethods.mcpUiResolveAppToolCall]: {
|
|
4324
|
+
params: zcodeMcpUiResolveAppToolCallParamsSchema,
|
|
4325
|
+
result: zcodeMcpUiAppToolAcceptedResultSchema,
|
|
4326
|
+
},
|
|
3684
4327
|
[zcodeProtocolMethods.interactionBrowserList]: {
|
|
3685
4328
|
params: zcodeBrowserListParamsSchema,
|
|
3686
4329
|
result: zcodeBrowserListResultSchema,
|
|
@@ -3696,6 +4339,12 @@ export const zcodeProtocolSessionMethodContracts = {
|
|
|
3696
4339
|
export type ZCodeProtocolSessionMethodContract =
|
|
3697
4340
|
(typeof zcodeProtocolSessionMethodContracts)[keyof typeof zcodeProtocolSessionMethodContracts];
|
|
3698
4341
|
|
|
4342
|
+
// 启动入口的独立存储命令与严格结果 schema,和 CLI 共用一份契约。
|
|
4343
|
+
export {
|
|
4344
|
+
STORAGE_MIGRATION_COMMAND,
|
|
4345
|
+
storageMigrationReportSchema,
|
|
4346
|
+
} from "../sqlite-migrations/contract.js";
|
|
4347
|
+
|
|
3699
4348
|
/** 仅存储准备子进程的私有控制帧,原始路径不进入业务事件或遥测。 */
|
|
3700
4349
|
export const zcodeStoragePreparationFrameSchema = z.discriminatedUnion("method", [
|
|
3701
4350
|
z
|
|
@@ -3714,7 +4363,19 @@ export const zcodeStoragePreparationFrameSchema = z.discriminatedUnion("method",
|
|
|
3714
4363
|
export const zcodeStoragePathReadySchema = z
|
|
3715
4364
|
.object({ method: z.literal("startup/storagePathReady"), reuse: z.boolean().optional() })
|
|
3716
4365
|
.strict();
|
|
3717
|
-
export * from "../localTtft.js";
|
|
3718
4366
|
|
|
3719
4367
|
// 桌面本地 TTFT 的严格事实合同;检查点不能替代实际内容帧。
|
|
3720
4368
|
export { localTtftFactsSchema } from "../localTtft.js";
|
|
4369
|
+
// 群来源由可信 Host 注入,V4 命令与持久化输入使用相同运行时校验。
|
|
4370
|
+
export {
|
|
4371
|
+
botIdentitySchema,
|
|
4372
|
+
botTopicInputMessageSchema,
|
|
4373
|
+
botGroupInputSourceSchema,
|
|
4374
|
+
type BotGroupInputSource,
|
|
4375
|
+
} from "../bots.js";
|
|
4376
|
+
export {
|
|
4377
|
+
botTopicContextSchema,
|
|
4378
|
+
botTopicMessageSchema,
|
|
4379
|
+
type BotTopicHistoryBatch,
|
|
4380
|
+
type BotTopicMessage,
|
|
4381
|
+
} from "../bots.js";
|