@agentknight/sdk 0.9.35

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.
@@ -0,0 +1,2654 @@
1
+ // ../protocol/dist/sessions/sessions.js
2
+ import { z as z3 } from "zod";
3
+
4
+ // ../protocol/dist/common/primitives.js
5
+ import { z } from "zod";
6
+ var IdSchema = z.string().trim().min(1).max(256);
7
+ var IsoDateSchema = z.iso.datetime({ offset: true });
8
+ var Base64UrlKeyIdSchema = z.string().regex(/^[A-Za-z0-9_-]{22}$/u, "Expected a 16-byte base64url key ID");
9
+ var UsernameSchema = z.string().trim().min(1).max(120);
10
+
11
+ // ../protocol/dist/common/errors.js
12
+ import { z as z2 } from "zod";
13
+ var ProtocolFailureSchema = z2.object({
14
+ code: IdSchema,
15
+ message: z2.string().min(1).max(1024)
16
+ });
17
+ var OperationAckSchema = z2.discriminatedUnion("ok", [
18
+ z2.object({ ok: z2.literal(true), capabilities: z2.array(IdSchema).max(64).optional() }),
19
+ z2.object({
20
+ ok: z2.literal(false),
21
+ code: IdSchema,
22
+ message: z2.string().min(1).max(1024)
23
+ })
24
+ ]);
25
+ var ProtocolErrorSchema = z2.object({
26
+ event: z2.string().min(1).max(128),
27
+ code: IdSchema,
28
+ message: z2.string().min(1).max(1024)
29
+ });
30
+
31
+ // ../protocol/dist/sessions/sessions.js
32
+ var SESSION_DELETE_CAPABILITY = "session-delete";
33
+ var SESSION_LIST_UPDATES_CAPABILITY = "session-list-updates";
34
+ var SESSION_WORKTREE_CREATION_CAPABILITY = "session-worktree-creation";
35
+ var MANAGED_SESSION_SELECTION_CAPABILITY = "coding-agent:managed";
36
+ var AGENT_CONTROLS_CAPABILITY = "coding-agent-controls-v1";
37
+ var GroupChatParticipantSchema = z3.object({
38
+ sessionId: IdSchema,
39
+ title: z3.string().trim().min(1).max(260)
40
+ }).strict();
41
+ var GroupChatInfoSchema = z3.object({
42
+ participants: z3.array(GroupChatParticipantSchema).length(2).refine((participants) => new Set(participants.map((participant) => participant.sessionId)).size === 2, "A group requires two different sessions"),
43
+ state: z3.enum(["ready", "running", "paused", "blocked"])
44
+ }).strict();
45
+ var SessionSummarySchema = z3.object({
46
+ userId: IdSchema,
47
+ sessionId: IdSchema,
48
+ machineId: IdSchema,
49
+ summary: z3.string().max(4096).optional(),
50
+ renameSupported: z3.boolean().optional(),
51
+ workingDirectory: z3.string().max(32768).optional(),
52
+ gitRoot: z3.string().max(32768).optional(),
53
+ repository: z3.string().max(1024).optional(),
54
+ gitRemoteUrl: z3.string().max(32768).optional(),
55
+ branch: z3.string().max(1024).optional(),
56
+ isRemote: z3.boolean(),
57
+ createdAt: IsoDateSchema,
58
+ modifiedAt: IsoDateSchema,
59
+ groupChat: GroupChatInfoSchema.optional()
60
+ });
61
+ var SessionsSnapshotSchema = z3.object({
62
+ userId: IdSchema,
63
+ machineId: IdSchema,
64
+ machineName: z3.string().trim().min(1).max(120),
65
+ platform: z3.string().trim().min(1).max(64),
66
+ agentRunId: IdSchema,
67
+ sequence: z3.number().int().positive(),
68
+ generatedAt: IsoDateSchema,
69
+ complete: z3.boolean(),
70
+ totalCount: z3.number().int().nonnegative(),
71
+ nextCursor: z3.string().min(1).max(1024).optional(),
72
+ sessions: z3.array(SessionSummarySchema)
73
+ }).superRefine((snapshot, context) => {
74
+ if (snapshot.totalCount < snapshot.sessions.length) {
75
+ context.addIssue({
76
+ code: "custom",
77
+ message: "Snapshot totalCount cannot be smaller than its session page",
78
+ path: ["totalCount"]
79
+ });
80
+ }
81
+ if (snapshot.complete === (snapshot.nextCursor !== void 0)) {
82
+ context.addIssue({
83
+ code: "custom",
84
+ message: "Incomplete snapshots require a nextCursor",
85
+ path: ["nextCursor"]
86
+ });
87
+ }
88
+ const sessionIds = /* @__PURE__ */ new Set();
89
+ for (const [index, session] of snapshot.sessions.entries()) {
90
+ if (session.machineId !== snapshot.machineId) {
91
+ context.addIssue({
92
+ code: "custom",
93
+ message: "Session machineId must match snapshot machineId",
94
+ path: ["sessions", index, "machineId"]
95
+ });
96
+ }
97
+ if (session.userId !== snapshot.userId) {
98
+ context.addIssue({
99
+ code: "custom",
100
+ message: "Session userId must match snapshot userId",
101
+ path: ["sessions", index, "userId"]
102
+ });
103
+ }
104
+ if (sessionIds.has(session.sessionId)) {
105
+ context.addIssue({
106
+ code: "custom",
107
+ message: "Session IDs must be unique within a snapshot",
108
+ path: ["sessions", index, "sessionId"]
109
+ });
110
+ }
111
+ sessionIds.add(session.sessionId);
112
+ }
113
+ });
114
+ var SessionListRequestSchema = z3.object({
115
+ requestId: IdSchema,
116
+ machineId: IdSchema,
117
+ cursor: z3.string().min(1).max(1024).optional()
118
+ });
119
+ var SessionListResultSchema = z3.discriminatedUnion("ok", [
120
+ z3.object({
121
+ ok: z3.literal(true),
122
+ requestId: IdSchema,
123
+ machineId: IdSchema,
124
+ snapshot: SessionsSnapshotSchema
125
+ }),
126
+ z3.object({
127
+ ok: z3.literal(false),
128
+ requestId: IdSchema,
129
+ machineId: IdSchema,
130
+ error: ProtocolFailureSchema
131
+ })
132
+ ]);
133
+ var SessionAgentModeSchema = z3.enum([
134
+ "interactive",
135
+ "plan",
136
+ "autopilot"
137
+ ]);
138
+ var AgentConfigurationOptionSchema = z3.object({
139
+ id: IdSchema,
140
+ name: z3.string().trim().min(1).max(260),
141
+ value: z3.string().min(1).max(256),
142
+ options: z3.array(z3.object({
143
+ value: z3.string().min(1).max(256),
144
+ name: z3.string().trim().min(1).max(260)
145
+ }).strict()).min(1).max(100)
146
+ }).strict();
147
+ var AgentConfigurationChangeSchema = z3.object({
148
+ id: IdSchema,
149
+ value: z3.string().min(1).max(256)
150
+ }).strict();
151
+ var WorkspaceOptionSchema = z3.object({
152
+ id: IdSchema,
153
+ name: z3.string().trim().min(1).max(260),
154
+ path: z3.string().trim().min(1).max(32768)
155
+ });
156
+ var REASONING_EFFORTS = [
157
+ "low",
158
+ "medium",
159
+ "high",
160
+ "xhigh",
161
+ "max"
162
+ ];
163
+ var ReasoningEffortSchema = z3.enum(REASONING_EFFORTS);
164
+ var CopilotModelOptionSchema = z3.object({
165
+ id: IdSchema,
166
+ name: z3.string().trim().min(1).max(260),
167
+ isDefault: z3.boolean(),
168
+ supportedReasoningEfforts: z3.array(ReasoningEffortSchema).optional(),
169
+ defaultReasoningEffort: ReasoningEffortSchema.optional(),
170
+ creation: z3.object({
171
+ agentId: IdSchema,
172
+ agentName: z3.string().trim().min(1).max(260),
173
+ modelName: z3.string().trim().min(1).max(260),
174
+ agentModes: z3.array(SessionAgentModeSchema).min(1),
175
+ reasoningEffortConfigurationSupported: z3.boolean(),
176
+ isDefault: z3.boolean()
177
+ }).strict().optional()
178
+ });
179
+ var SessionReasoningEffortSchema = z3.enum([
180
+ "default",
181
+ ...REASONING_EFFORTS
182
+ ]);
183
+ var CurrentReasoningEffortSchema = z3.string().trim().min(1).max(64);
184
+ var SessionToolInfoSchema = z3.object({
185
+ name: z3.string().trim().min(1).max(260),
186
+ description: z3.string().trim().min(1).max(4096).optional(),
187
+ deferred: z3.boolean().optional()
188
+ });
189
+ var SessionSlashCommandInfoSchema = z3.object({
190
+ name: z3.string().trim().min(1).max(260),
191
+ description: z3.string().trim().min(1).max(4096).optional(),
192
+ kind: z3.enum(["builtin", "skill", "client"])
193
+ });
194
+ var SessionSkillInfoSchema = z3.object({
195
+ name: z3.string().trim().min(1).max(260),
196
+ description: z3.string().trim().min(1).max(4096).optional(),
197
+ source: z3.string().trim().min(1).max(260),
198
+ enabled: z3.boolean(),
199
+ userInvocable: z3.boolean(),
200
+ commandName: z3.string().trim().min(1).max(260).optional()
201
+ });
202
+ var SessionEnvironmentInfoSchema = z3.object({
203
+ tools: z3.array(SessionToolInfoSchema).max(512),
204
+ slashCommands: z3.array(SessionSlashCommandInfoSchema).max(512),
205
+ skills: z3.array(SessionSkillInfoSchema).max(512)
206
+ });
207
+ var SessionOptionsRequestSchema = z3.object({
208
+ requestId: IdSchema,
209
+ machineId: IdSchema,
210
+ sessionId: IdSchema.optional(),
211
+ workspaceId: IdSchema.optional(),
212
+ capabilities: z3.array(IdSchema).max(64).optional()
213
+ });
214
+ var SessionOptionsResultSchema = z3.discriminatedUnion("ok", [
215
+ z3.object({
216
+ ok: z3.literal(true),
217
+ requestId: IdSchema,
218
+ machineId: IdSchema,
219
+ sessionId: IdSchema.optional(),
220
+ workspaces: z3.array(WorkspaceOptionSchema),
221
+ models: z3.array(CopilotModelOptionSchema).min(1),
222
+ modelRefreshError: z3.string().min(1).max(4096).optional(),
223
+ agentModes: z3.array(SessionAgentModeSchema).min(1),
224
+ reasoningEffortConfigurationSupported: z3.literal(true).optional(),
225
+ fileAttachmentsSupported: z3.boolean().optional(),
226
+ worktreeCreationSupported: z3.literal(true).optional(),
227
+ worktreeBranches: z3.array(z3.string().min(1).max(1024)).optional(),
228
+ worktreeCurrentBranch: z3.string().min(1).max(1024).optional(),
229
+ currentModelId: IdSchema.optional(),
230
+ currentAgentMode: SessionAgentModeSchema.optional(),
231
+ currentReasoningEffort: CurrentReasoningEffortSchema.optional(),
232
+ environment: SessionEnvironmentInfoSchema.optional(),
233
+ agentName: z3.string().trim().min(1).max(260).optional(),
234
+ configOptions: z3.array(AgentConfigurationOptionSchema).max(32).optional()
235
+ }),
236
+ z3.object({
237
+ ok: z3.literal(false),
238
+ requestId: IdSchema,
239
+ machineId: IdSchema,
240
+ sessionId: IdSchema.optional(),
241
+ error: ProtocolFailureSchema
242
+ })
243
+ ]);
244
+ var SessionCreateRequestSchema = z3.object({
245
+ requestId: IdSchema,
246
+ machineId: IdSchema,
247
+ workspaceId: IdSchema,
248
+ modelId: IdSchema,
249
+ agentMode: SessionAgentModeSchema,
250
+ reasoningEffort: SessionReasoningEffortSchema.optional(),
251
+ worktree: z3.object({
252
+ branchName: z3.string().trim().min(1).max(120).optional(),
253
+ baseBranch: z3.string().trim().min(1).max(1024).optional()
254
+ }).strict().optional()
255
+ });
256
+ var SessionCreateResultSchema = z3.discriminatedUnion("ok", [
257
+ z3.object({
258
+ ok: z3.literal(true),
259
+ requestId: IdSchema,
260
+ machineId: IdSchema,
261
+ session: SessionSummarySchema,
262
+ modelId: IdSchema,
263
+ agentMode: SessionAgentModeSchema,
264
+ reasoningEffort: SessionReasoningEffortSchema.optional()
265
+ }),
266
+ z3.object({
267
+ ok: z3.literal(false),
268
+ requestId: IdSchema,
269
+ machineId: IdSchema,
270
+ error: ProtocolFailureSchema
271
+ })
272
+ ]);
273
+ var SessionDeleteRequestSchema = z3.object({
274
+ requestId: IdSchema,
275
+ machineId: IdSchema,
276
+ sessionId: IdSchema
277
+ }).strict();
278
+ var SessionDeleteResultSchema = z3.discriminatedUnion("ok", [
279
+ z3.object({
280
+ ok: z3.literal(true),
281
+ requestId: IdSchema,
282
+ machineId: IdSchema,
283
+ sessionId: IdSchema
284
+ }).strict(),
285
+ z3.object({
286
+ ok: z3.literal(false),
287
+ requestId: IdSchema,
288
+ machineId: IdSchema,
289
+ sessionId: IdSchema,
290
+ error: ProtocolFailureSchema
291
+ }).strict()
292
+ ]);
293
+ var SessionConfigureRequestSchema = z3.object({
294
+ requestId: IdSchema,
295
+ machineId: IdSchema,
296
+ sessionId: IdSchema,
297
+ modelId: IdSchema.optional(),
298
+ agentMode: SessionAgentModeSchema.optional(),
299
+ reasoningEffort: SessionReasoningEffortSchema.optional(),
300
+ configOption: AgentConfigurationChangeSchema.optional()
301
+ }).refine((request) => request.modelId !== void 0 || request.agentMode !== void 0 || request.reasoningEffort !== void 0 || request.configOption !== void 0, { message: "A modelId, agentMode, reasoningEffort, or configOption change is required" });
302
+ var SessionConfigureResultSchema = z3.discriminatedUnion("ok", [
303
+ z3.object({
304
+ ok: z3.literal(true),
305
+ requestId: IdSchema,
306
+ machineId: IdSchema,
307
+ sessionId: IdSchema,
308
+ modelId: IdSchema.optional(),
309
+ agentMode: SessionAgentModeSchema,
310
+ reasoningEffort: CurrentReasoningEffortSchema.optional(),
311
+ configOptions: z3.array(AgentConfigurationOptionSchema).max(32).optional()
312
+ }),
313
+ z3.object({
314
+ ok: z3.literal(false),
315
+ requestId: IdSchema,
316
+ machineId: IdSchema,
317
+ sessionId: IdSchema,
318
+ error: ProtocolFailureSchema
319
+ })
320
+ ]);
321
+ var SessionRemoteActionSchema = z3.enum([
322
+ "status",
323
+ "enable",
324
+ "disable"
325
+ ]);
326
+ var SessionRemoteStateSchema = z3.enum([
327
+ "off",
328
+ "connecting",
329
+ "active",
330
+ "error"
331
+ ]);
332
+ var SessionRemoteRequestSchema = z3.object({
333
+ requestId: IdSchema,
334
+ machineId: IdSchema,
335
+ sessionId: IdSchema,
336
+ action: SessionRemoteActionSchema
337
+ });
338
+ var SessionRemoteStatusSchema = z3.object({
339
+ state: SessionRemoteStateSchema,
340
+ attachedSessionId: IdSchema.optional(),
341
+ url: z3.url().max(32768).optional(),
342
+ steerable: z3.boolean(),
343
+ error: ProtocolFailureSchema.optional()
344
+ });
345
+ var SessionRemoteResultSchema = z3.discriminatedUnion("ok", [
346
+ z3.object({
347
+ ok: z3.literal(true),
348
+ requestId: IdSchema,
349
+ machineId: IdSchema,
350
+ sessionId: IdSchema,
351
+ status: SessionRemoteStatusSchema
352
+ }),
353
+ z3.object({
354
+ ok: z3.literal(false),
355
+ requestId: IdSchema,
356
+ machineId: IdSchema,
357
+ sessionId: IdSchema,
358
+ error: ProtocolFailureSchema
359
+ })
360
+ ]);
361
+
362
+ // ../protocol/dist/conversation/attachments.js
363
+ import { z as z4 } from "zod";
364
+ var MAX_INLINE_IMAGE_BYTES = 3 * 1024 * 1024;
365
+ var MAX_INLINE_HTML_BYTES = 512 * 1024;
366
+ var MAX_PROMPT_FILE_BYTES = 1024 * 1024;
367
+ var InlineImageMimeTypeSchema = z4.enum([
368
+ "image/gif",
369
+ "image/jpeg",
370
+ "image/png",
371
+ "image/webp"
372
+ ]);
373
+ var Base64DataSchema = z4.string().min(4).max(Math.ceil(MAX_INLINE_IMAGE_BYTES / 3) * 4).regex(/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/, "Expected canonical base64 data");
374
+ var Sha256Schema = z4.string().regex(/^[a-f0-9]{64}$/);
375
+ function decodedBase64ByteLength(value) {
376
+ const padding = value.endsWith("==") ? 2 : value.endsWith("=") ? 1 : 0;
377
+ return value.length / 4 * 3 - padding;
378
+ }
379
+ var PromptImageAttachmentSchema = z4.object({
380
+ name: z4.string().trim().min(1).max(255),
381
+ mimeType: z4.enum(["image/jpeg", "image/png", "image/webp"]),
382
+ data: Base64DataSchema,
383
+ byteLength: z4.number().int().positive().max(MAX_INLINE_IMAGE_BYTES),
384
+ sha256: Sha256Schema
385
+ }).strict().superRefine((attachment, context) => {
386
+ if (decodedBase64ByteLength(attachment.data) !== attachment.byteLength) {
387
+ context.addIssue({
388
+ code: "custom",
389
+ path: ["byteLength"],
390
+ message: "byteLength does not match the base64 payload"
391
+ });
392
+ }
393
+ });
394
+ var PromptFileAttachmentSchema = z4.object({
395
+ name: z4.string().trim().min(1).max(255).regex(/^[^\\/\x00-\x1f\x7f]+$/).refine((name) => name !== "." && name !== "..", "Expected a filename"),
396
+ mimeType: z4.string().max(256).regex(/^[a-zA-Z0-9!#$&^_.+-]+\/[a-zA-Z0-9!#$&^_.+-]+$/),
397
+ data: Base64DataSchema.max(Math.ceil(MAX_PROMPT_FILE_BYTES / 3) * 4),
398
+ byteLength: z4.number().int().positive().max(MAX_PROMPT_FILE_BYTES),
399
+ sha256: Sha256Schema
400
+ }).strict().superRefine((attachment, context) => {
401
+ if (decodedBase64ByteLength(attachment.data) !== attachment.byteLength) {
402
+ context.addIssue({
403
+ code: "custom",
404
+ path: ["byteLength"],
405
+ message: "byteLength does not match the base64 payload"
406
+ });
407
+ }
408
+ });
409
+ var ConversationAttachmentSchema = z4.object({
410
+ kind: z4.enum([
411
+ "file",
412
+ "image",
413
+ "html",
414
+ "selection",
415
+ "github-reference",
416
+ "unknown"
417
+ ]),
418
+ name: z4.string().trim().min(1).max(1024),
419
+ mimeType: z4.string().trim().min(1).max(256).optional(),
420
+ uri: z4.string().trim().min(1).max(32768).optional(),
421
+ data: Base64DataSchema.optional(),
422
+ byteLength: z4.number().int().positive().max(MAX_INLINE_IMAGE_BYTES).optional(),
423
+ sha256: Sha256Schema.optional(),
424
+ imageRef: z4.literal("sha256").optional()
425
+ }).strict().superRefine((attachment, context) => {
426
+ if (attachment.imageRef !== void 0) {
427
+ if (attachment.kind !== "image" || attachment.data !== void 0 || attachment.sha256 === void 0 || attachment.byteLength === void 0 || !InlineImageMimeTypeSchema.safeParse(attachment.mimeType).success) {
428
+ context.addIssue({
429
+ code: "custom",
430
+ message: "Image references require image metadata and must not carry inline data"
431
+ });
432
+ }
433
+ return;
434
+ }
435
+ const contentFields = [
436
+ attachment.data,
437
+ attachment.byteLength,
438
+ attachment.sha256
439
+ ];
440
+ const contentFieldCount = contentFields.filter((field) => field !== void 0).length;
441
+ if (contentFieldCount !== 0 && contentFieldCount !== contentFields.length) {
442
+ context.addIssue({
443
+ code: "custom",
444
+ message: "Inline attachment content requires data, byteLength, and sha256"
445
+ });
446
+ return;
447
+ }
448
+ if (attachment.data === void 0 || attachment.byteLength === void 0) {
449
+ return;
450
+ }
451
+ if (attachment.kind !== "image" && attachment.kind !== "html") {
452
+ context.addIssue({
453
+ code: "custom",
454
+ path: ["data"],
455
+ message: "Only image and html attachments may carry inline content"
456
+ });
457
+ }
458
+ if (attachment.kind === "image" && !InlineImageMimeTypeSchema.safeParse(attachment.mimeType).success) {
459
+ context.addIssue({
460
+ code: "custom",
461
+ path: ["mimeType"],
462
+ message: "Inline images must be GIF, JPEG, PNG, or WebP"
463
+ });
464
+ }
465
+ if (attachment.kind === "html" && (attachment.mimeType !== "text/html" || attachment.byteLength > MAX_INLINE_HTML_BYTES)) {
466
+ context.addIssue({
467
+ code: "custom",
468
+ path: ["mimeType"],
469
+ message: "HTML content must be text/html and at most 512 KiB"
470
+ });
471
+ }
472
+ if (decodedBase64ByteLength(attachment.data) !== attachment.byteLength) {
473
+ context.addIssue({
474
+ code: "custom",
475
+ path: ["byteLength"],
476
+ message: "byteLength does not match the base64 payload"
477
+ });
478
+ }
479
+ });
480
+
481
+ // ../protocol/dist/conversation/conversation.js
482
+ import { z as z5 } from "zod";
483
+ var CONVERSATION_ACTIVITY_STEP_LIMIT = 1e3;
484
+ var CONVERSATION_SOURCE_ID_LIMIT = 1e3;
485
+ var ConversationItemBaseShape = {
486
+ id: IdSchema,
487
+ revision: z5.number().int().positive(),
488
+ turnId: IdSchema,
489
+ timestamp: IsoDateSchema,
490
+ sourceEventIds: z5.array(IdSchema).min(1).max(CONVERSATION_SOURCE_ID_LIMIT),
491
+ sourceMessageIds: z5.array(IdSchema).min(1).max(CONVERSATION_SOURCE_ID_LIMIT).optional(),
492
+ sourceInteractionIds: z5.array(IdSchema).min(1).max(CONVERSATION_SOURCE_ID_LIMIT).optional()
493
+ };
494
+ var MAX_INLINE_IMAGE_MESSAGE_BYTES = 3 * 1024 * 1024;
495
+ var MAX_INLINE_IMAGES_PER_MESSAGE = 4;
496
+ var ActivityStepTimeShape = {
497
+ // First observed event time; completion updates must not move an existing call.
498
+ timestamp: IsoDateSchema.optional()
499
+ };
500
+ var ConversationToolStepSchema = z5.object({
501
+ id: IdSchema,
502
+ kind: z5.literal("tool"),
503
+ name: z5.string().trim().min(1).max(256),
504
+ status: z5.enum(["running", "completed", "failed"]),
505
+ ...ActivityStepTimeShape
506
+ }).strict();
507
+ var ConversationSkillStepSchema = z5.object({
508
+ id: IdSchema,
509
+ kind: z5.literal("skill"),
510
+ name: z5.string().trim().min(1).max(256),
511
+ status: z5.literal("completed"),
512
+ description: z5.string().trim().min(1).max(2048).optional(),
513
+ source: z5.string().trim().min(1).max(256).optional(),
514
+ ...ActivityStepTimeShape
515
+ }).strict();
516
+ var ConversationSubagentStepSchema = z5.object({
517
+ id: IdSchema,
518
+ kind: z5.literal("subagent"),
519
+ name: z5.string().trim().min(1).max(256),
520
+ status: z5.enum(["running", "completed", "failed"]),
521
+ description: z5.string().trim().min(1).max(2048).optional(),
522
+ model: z5.string().trim().min(1).max(256).optional(),
523
+ durationMs: z5.number().int().nonnegative().optional(),
524
+ resultSummary: z5.string().max(4096).optional(),
525
+ error: z5.string().max(4096).optional(),
526
+ ...ActivityStepTimeShape
527
+ }).strict();
528
+ var ConversationPermissionStepSchema = z5.object({
529
+ id: IdSchema,
530
+ kind: z5.literal("permission"),
531
+ name: z5.string().trim().min(1).max(256),
532
+ status: z5.enum(["running", "completed", "failed"]),
533
+ description: z5.string().trim().min(1).max(2048).optional(),
534
+ resultSummary: z5.string().max(4096).optional(),
535
+ error: z5.string().max(4096).optional(),
536
+ ...ActivityStepTimeShape
537
+ }).strict();
538
+ var ConversationActivityStepSchema = z5.discriminatedUnion("kind", [
539
+ ConversationToolStepSchema,
540
+ ConversationSkillStepSchema,
541
+ ConversationSubagentStepSchema,
542
+ ConversationPermissionStepSchema
543
+ ]);
544
+ var ConversationHumanMessageSchema = z5.object({
545
+ ...ConversationItemBaseShape,
546
+ kind: z5.literal("human-message"),
547
+ actor: z5.literal("human"),
548
+ content: z5.string().max(1e5),
549
+ attachments: z5.array(ConversationAttachmentSchema).max(100),
550
+ operationId: IdSchema.optional()
551
+ }).strict();
552
+ var ConversationAssistantMessageSchema = z5.object({
553
+ ...ConversationItemBaseShape,
554
+ kind: z5.literal("assistant-message"),
555
+ actor: z5.enum(["assistant", "subagent"]),
556
+ content: z5.string().max(5e5),
557
+ attachments: z5.array(ConversationAttachmentSchema).max(100).optional(),
558
+ model: z5.string().trim().min(1).max(256).optional(),
559
+ agentId: IdSchema.optional(),
560
+ final: z5.boolean()
561
+ }).strict().superRefine((message, context) => {
562
+ const inlineImages = message.attachments?.filter((attachment) => attachment.kind === "image" && attachment.data !== void 0) ?? [];
563
+ if (inlineImages.length > MAX_INLINE_IMAGES_PER_MESSAGE) {
564
+ context.addIssue({
565
+ code: "custom",
566
+ path: ["attachments"],
567
+ message: "Assistant messages may contain at most 4 inline images"
568
+ });
569
+ }
570
+ const inlineImageBytes = inlineImages.reduce((total, attachment) => total + (attachment.byteLength ?? 0), 0);
571
+ if (inlineImageBytes > MAX_INLINE_IMAGE_MESSAGE_BYTES) {
572
+ context.addIssue({
573
+ code: "custom",
574
+ path: ["attachments"],
575
+ message: "Assistant message images exceed the 3 MiB total limit"
576
+ });
577
+ }
578
+ });
579
+ var ConversationActivityGroupSchema = z5.object({
580
+ ...ConversationItemBaseShape,
581
+ kind: z5.literal("activity-group"),
582
+ actor: z5.enum(["assistant", "subagent"]),
583
+ status: z5.enum(["running", "completed", "failed"]),
584
+ steps: z5.array(ConversationActivityStepSchema).max(CONVERSATION_ACTIVITY_STEP_LIMIT)
585
+ }).strict();
586
+ var ConversationNoticeSchema = z5.object({
587
+ ...ConversationItemBaseShape,
588
+ kind: z5.literal("notice"),
589
+ actor: z5.enum(["system", "assistant", "subagent"]),
590
+ severity: z5.enum(["info", "success", "warning", "error"]),
591
+ title: z5.string().trim().min(1).max(256),
592
+ content: z5.string().max(4096),
593
+ presentation: z5.literal("compact").optional()
594
+ }).strict();
595
+ var ConversationPlanTodoSchema = z5.object({
596
+ id: IdSchema,
597
+ title: z5.string().trim().min(1).max(1024),
598
+ description: z5.string().max(4096).optional(),
599
+ status: z5.string().trim().min(1).max(64),
600
+ dependsOn: z5.array(IdSchema).max(100)
601
+ }).strict();
602
+ var ConversationPlanUpdateSchema = z5.object({
603
+ ...ConversationItemBaseShape,
604
+ kind: z5.literal("plan-update"),
605
+ actor: z5.enum(["assistant", "subagent"]),
606
+ operation: z5.enum(["created", "updated", "deleted"]),
607
+ content: z5.string().max(1e5),
608
+ todos: z5.array(ConversationPlanTodoSchema).max(1e3)
609
+ }).strict();
610
+ var ConversationItemSchema = z5.discriminatedUnion("kind", [
611
+ ConversationHumanMessageSchema,
612
+ ConversationAssistantMessageSchema,
613
+ ConversationActivityGroupSchema,
614
+ ConversationNoticeSchema,
615
+ ConversationPlanUpdateSchema
616
+ ]);
617
+ var ConversationItemUpsertSchema = z5.object({
618
+ userId: IdSchema,
619
+ machineId: IdSchema,
620
+ sessionId: IdSchema,
621
+ item: ConversationItemSchema
622
+ });
623
+ var ConversationActivityStepUpsertSchema = z5.object({
624
+ userId: IdSchema,
625
+ machineId: IdSchema,
626
+ sessionId: IdSchema,
627
+ activityId: IdSchema,
628
+ revision: z5.number().int().positive(),
629
+ turnId: IdSchema,
630
+ timestamp: IsoDateSchema,
631
+ actor: z5.enum(["assistant", "subagent"]),
632
+ status: z5.enum(["running", "completed", "failed"]),
633
+ sourceEventId: IdSchema,
634
+ step: ConversationActivityStepSchema
635
+ }).strict();
636
+
637
+ // ../protocol/dist/conversation/timeline.js
638
+ import { z as z6 } from "zod";
639
+ var SESSION_ASSISTANT_PREVIEW_CAPABILITY = "session-assistant-preview-v1";
640
+ var SessionUserPreviewSchema = z6.object({
641
+ id: IdSchema,
642
+ revision: z6.number().int().positive(),
643
+ timestamp: IsoDateSchema,
644
+ text: z6.string().max(4096)
645
+ });
646
+ var SessionAssistantPreviewSchema = z6.object({
647
+ id: IdSchema,
648
+ revision: z6.number().int().positive(),
649
+ timestamp: IsoDateSchema,
650
+ sourceEventIds: z6.array(IdSchema).min(1).max(1e3),
651
+ text: z6.string().max(4096),
652
+ final: z6.boolean(),
653
+ attachments: z6.array(ConversationAttachmentSchema.refine((attachment) => attachment.kind === "image" && attachment.imageRef === "sha256", "Assistant previews contain image references only")).max(4)
654
+ });
655
+ var SESSION_TIMELINE_PAGE_SIZE = 100;
656
+ var SessionTimelinePageRequestSchema = z6.object({
657
+ requestId: IdSchema,
658
+ machineId: IdSchema,
659
+ sessionId: IdSchema,
660
+ cursor: z6.string().max(32768).optional(),
661
+ metadataOnly: z6.boolean().optional(),
662
+ acceptContentEncodings: z6.array(z6.string().min(1).max(32)).max(8).optional(),
663
+ imageReferences: z6.boolean().optional(),
664
+ pageSize: z6.number().int().min(1).max(SESSION_TIMELINE_PAGE_SIZE).default(SESSION_TIMELINE_PAGE_SIZE),
665
+ assistantPreview: z6.boolean().optional()
666
+ });
667
+ var SessionWatchRequestSchema = z6.object({
668
+ requestId: IdSchema,
669
+ machineId: IdSchema,
670
+ sessionId: IdSchema,
671
+ watching: z6.boolean()
672
+ }).strict();
673
+ var SessionWatchResultSchema = z6.discriminatedUnion("ok", [
674
+ z6.object({
675
+ ok: z6.literal(true),
676
+ requestId: IdSchema,
677
+ machineId: IdSchema,
678
+ sessionId: IdSchema,
679
+ watching: z6.boolean()
680
+ }).strict(),
681
+ z6.object({
682
+ ok: z6.literal(false),
683
+ requestId: IdSchema,
684
+ machineId: IdSchema,
685
+ sessionId: IdSchema,
686
+ watching: z6.boolean(),
687
+ error: ProtocolFailureSchema
688
+ }).strict()
689
+ ]);
690
+ var SessionTimelinePageSchema = z6.object({
691
+ items: z6.array(ConversationItemSchema).max(SESSION_TIMELINE_PAGE_SIZE),
692
+ cursor: z6.string().max(32768),
693
+ hasMore: z6.boolean(),
694
+ cursorStatus: z6.enum(["ok", "expired"]),
695
+ assistantPreview: SessionAssistantPreviewSchema.optional(),
696
+ userPreview: SessionUserPreviewSchema.optional(),
697
+ previewsComplete: z6.boolean().optional()
698
+ });
699
+ var SessionTimelinePageResultSchema = z6.discriminatedUnion("ok", [
700
+ z6.object({
701
+ ok: z6.literal(true),
702
+ requestId: IdSchema,
703
+ machineId: IdSchema,
704
+ sessionId: IdSchema,
705
+ page: SessionTimelinePageSchema
706
+ }),
707
+ z6.object({
708
+ ok: z6.literal(false),
709
+ requestId: IdSchema,
710
+ machineId: IdSchema,
711
+ sessionId: IdSchema,
712
+ error: ProtocolFailureSchema
713
+ })
714
+ ]);
715
+ var SessionTimelineInvalidatedSchema = z6.object({
716
+ userId: IdSchema,
717
+ machineId: IdSchema,
718
+ sessionId: IdSchema,
719
+ reason: z6.enum(["clear", "rewind"]),
720
+ sourceEventId: IdSchema,
721
+ timestamp: IsoDateSchema
722
+ }).strict();
723
+
724
+ // ../protocol/dist/sessions/interactions.js
725
+ import { z as z7 } from "zod";
726
+ var MOBILE_INTERACTION_PERSISTENCE_CAPABILITY = "interaction-persistence";
727
+ var INTERACTION_DISMISS_RESPONSE_CAPABILITY = "interaction-dismiss-response";
728
+ var INTERACTION_SUPERSEDED_ERROR_CODE = "INTERACTION_SUPERSEDED";
729
+ var InteractionFormFieldSchema = z7.object({
730
+ id: IdSchema,
731
+ label: z7.string().trim().min(1).max(1024),
732
+ description: z7.string().max(2048).optional(),
733
+ inputType: z7.enum([
734
+ "text",
735
+ "number",
736
+ "integer",
737
+ "boolean",
738
+ "select",
739
+ "multi-select"
740
+ ]),
741
+ required: z7.boolean(),
742
+ options: z7.array(z7.string().max(1024)).max(100),
743
+ defaultValue: z7.union([
744
+ z7.string().max(4096),
745
+ z7.number().finite(),
746
+ z7.boolean(),
747
+ z7.array(z7.string().max(1024)).max(100)
748
+ ]).optional(),
749
+ minimum: z7.number().finite().optional(),
750
+ maximum: z7.number().finite().optional(),
751
+ minLength: z7.number().int().nonnegative().max(1e6).optional(),
752
+ maxLength: z7.number().int().nonnegative().max(1e6).optional(),
753
+ minItems: z7.number().int().nonnegative().max(100).optional(),
754
+ maxItems: z7.number().int().nonnegative().max(100).optional(),
755
+ format: z7.enum(["email", "uri", "date", "date-time"]).optional()
756
+ }).strict();
757
+ var InteractionPermissionRequestSchema = z7.object({
758
+ kind: z7.literal("permission"),
759
+ permissionKind: IdSchema,
760
+ title: z7.string().trim().min(1).max(256),
761
+ description: z7.string().max(4096),
762
+ canApproveSession: z7.boolean(),
763
+ canApproveAlways: z7.boolean().optional(),
764
+ approvalScope: z7.string().trim().min(1).max(4096).optional()
765
+ }).strict();
766
+ var InteractionUserInputRequestSchema = z7.object({
767
+ kind: z7.literal("user_input"),
768
+ question: z7.string().trim().min(1).max(4096),
769
+ choices: z7.array(z7.string().max(1024)).max(100),
770
+ allowFreeform: z7.boolean()
771
+ }).strict();
772
+ var InteractionElicitationRequestSchema = z7.object({
773
+ kind: z7.literal("elicitation"),
774
+ message: z7.string().trim().min(1).max(4096),
775
+ mode: z7.enum(["form", "url"]),
776
+ source: z7.string().trim().min(1).max(256).optional(),
777
+ url: z7.url().max(32768).optional(),
778
+ fields: z7.array(InteractionFormFieldSchema).max(100)
779
+ }).strict();
780
+ var InteractionMcpOauthRequestSchema = z7.object({
781
+ kind: z7.literal("mcp_oauth"),
782
+ serverName: z7.string().trim().min(1).max(256),
783
+ serverUrl: z7.url().max(32768),
784
+ reason: z7.enum(["initial", "refresh", "reauth", "upscope"]),
785
+ responseMode: z7.literal("cancel-only")
786
+ }).strict();
787
+ var InteractionMcpHeadersRequestSchema = z7.object({
788
+ kind: z7.literal("mcp_headers"),
789
+ serverName: z7.string().trim().min(1).max(256),
790
+ serverUrl: z7.url().max(32768),
791
+ reason: z7.string().trim().min(1).max(256),
792
+ responseMode: z7.literal("none-only")
793
+ }).strict();
794
+ var InteractionAutoModeSwitchRequestSchema = z7.object({
795
+ kind: z7.literal("auto_mode_switch"),
796
+ errorCode: IdSchema.optional(),
797
+ retryAfterSeconds: z7.number().int().nonnegative().optional()
798
+ }).strict();
799
+ var InteractionSessionLimitsRequestSchema = z7.object({
800
+ kind: z7.literal("session_limits"),
801
+ maxAiCredits: z7.number().finite().nonnegative(),
802
+ usedAiCredits: z7.number().finite().nonnegative()
803
+ }).strict();
804
+ var InteractionExitPlanRequestSchema = z7.object({
805
+ kind: z7.literal("exit_plan"),
806
+ summary: z7.string().max(4096),
807
+ planContent: z7.string().max(1e5).optional(),
808
+ actions: z7.array(IdSchema).min(1).max(20),
809
+ recommendedAction: IdSchema
810
+ }).strict();
811
+ var InteractionRequestSchema = z7.discriminatedUnion("kind", [
812
+ InteractionPermissionRequestSchema,
813
+ InteractionUserInputRequestSchema,
814
+ InteractionElicitationRequestSchema,
815
+ InteractionMcpOauthRequestSchema,
816
+ InteractionMcpHeadersRequestSchema,
817
+ InteractionAutoModeSwitchRequestSchema,
818
+ InteractionSessionLimitsRequestSchema,
819
+ InteractionExitPlanRequestSchema
820
+ ]);
821
+ var InteractionPermissionResponseSchema = z7.object({
822
+ kind: z7.literal("permission"),
823
+ decision: z7.enum(["approve-once", "approve-for-session", "approve-always", "reject"]),
824
+ feedback: z7.string().trim().min(1).max(2048).optional()
825
+ }).strict();
826
+ var InteractionUserInputResponseSchema = z7.object({
827
+ kind: z7.literal("user_input"),
828
+ answer: z7.string().max(1e5),
829
+ wasFreeform: z7.boolean()
830
+ }).strict();
831
+ var InteractionFieldValueSchema = z7.union([
832
+ z7.string().max(4096),
833
+ z7.number(),
834
+ z7.boolean(),
835
+ z7.array(z7.string().max(1024)).max(100)
836
+ ]);
837
+ var InteractionElicitationResponseSchema = z7.object({
838
+ kind: z7.literal("elicitation"),
839
+ action: z7.enum(["accept", "decline", "cancel"]),
840
+ values: z7.record(z7.string().max(256), InteractionFieldValueSchema)
841
+ }).strict();
842
+ var InteractionMcpOauthResponseSchema = z7.object({
843
+ kind: z7.literal("mcp_oauth"),
844
+ action: z7.literal("cancel")
845
+ }).strict();
846
+ var InteractionMcpHeadersResponseSchema = z7.object({
847
+ kind: z7.literal("mcp_headers"),
848
+ action: z7.literal("none")
849
+ }).strict();
850
+ var InteractionAutoModeSwitchResponseSchema = z7.object({
851
+ kind: z7.literal("auto_mode_switch"),
852
+ action: z7.enum(["yes", "yes_always", "no"])
853
+ }).strict();
854
+ var InteractionSessionLimitsResponseSchema = z7.object({
855
+ kind: z7.literal("session_limits"),
856
+ action: z7.enum(["add", "set", "unset", "cancel"]),
857
+ additionalAiCredits: z7.number().positive().optional(),
858
+ maxAiCredits: z7.number().positive().optional()
859
+ }).strict().superRefine((response, context) => {
860
+ if (response.action === "add" && response.additionalAiCredits === void 0) {
861
+ context.addIssue({
862
+ code: z7.ZodIssueCode.custom,
863
+ path: ["additionalAiCredits"],
864
+ message: "additionalAiCredits is required for add"
865
+ });
866
+ }
867
+ if (response.action === "set" && response.maxAiCredits === void 0) {
868
+ context.addIssue({
869
+ code: z7.ZodIssueCode.custom,
870
+ path: ["maxAiCredits"],
871
+ message: "maxAiCredits is required for set"
872
+ });
873
+ }
874
+ if (response.action !== "add" && response.additionalAiCredits !== void 0) {
875
+ context.addIssue({
876
+ code: z7.ZodIssueCode.custom,
877
+ path: ["additionalAiCredits"],
878
+ message: "additionalAiCredits is only valid for add"
879
+ });
880
+ }
881
+ if (response.action !== "set" && response.maxAiCredits !== void 0) {
882
+ context.addIssue({
883
+ code: z7.ZodIssueCode.custom,
884
+ path: ["maxAiCredits"],
885
+ message: "maxAiCredits is only valid for set"
886
+ });
887
+ }
888
+ });
889
+ var InteractionExitPlanResponseSchema = z7.object({
890
+ kind: z7.literal("exit_plan"),
891
+ approved: z7.boolean(),
892
+ selectedAction: IdSchema.optional(),
893
+ feedback: z7.string().trim().min(1).max(4096).optional()
894
+ }).strict();
895
+ var InteractionResponseSchema = z7.discriminatedUnion("kind", [
896
+ InteractionPermissionResponseSchema,
897
+ InteractionUserInputResponseSchema,
898
+ InteractionElicitationResponseSchema,
899
+ InteractionMcpOauthResponseSchema,
900
+ InteractionMcpHeadersResponseSchema,
901
+ InteractionAutoModeSwitchResponseSchema,
902
+ InteractionSessionLimitsResponseSchema,
903
+ InteractionExitPlanResponseSchema
904
+ ]);
905
+ var InteractionRequestPayloadSchema = z7.object({
906
+ interactionRequestId: IdSchema,
907
+ userId: IdSchema,
908
+ machineId: IdSchema,
909
+ sessionId: IdSchema,
910
+ request: InteractionRequestSchema
911
+ }).strict();
912
+ var InteractionRespondRequestSchema = z7.object({
913
+ requestId: IdSchema,
914
+ interactionRequestId: IdSchema,
915
+ machineId: IdSchema,
916
+ sessionId: IdSchema,
917
+ response: InteractionResponseSchema
918
+ }).strict();
919
+ var InteractionRespondResultSchema = z7.discriminatedUnion("ok", [
920
+ z7.object({
921
+ ok: z7.literal(true),
922
+ requestId: IdSchema,
923
+ interactionRequestId: IdSchema,
924
+ machineId: IdSchema,
925
+ sessionId: IdSchema
926
+ }).strict(),
927
+ z7.object({
928
+ ok: z7.literal(false),
929
+ requestId: IdSchema,
930
+ interactionRequestId: IdSchema,
931
+ machineId: IdSchema,
932
+ sessionId: IdSchema,
933
+ error: ProtocolFailureSchema
934
+ }).strict()
935
+ ]);
936
+ var PermissionRequestPayloadSchema = z7.object({
937
+ permissionRequestId: IdSchema,
938
+ userId: IdSchema,
939
+ machineId: IdSchema,
940
+ sessionId: IdSchema,
941
+ request: z7.record(z7.string(), z7.unknown())
942
+ });
943
+ var PermissionRespondRequestSchema = z7.object({
944
+ requestId: IdSchema,
945
+ permissionRequestId: IdSchema,
946
+ machineId: IdSchema,
947
+ sessionId: IdSchema,
948
+ decision: z7.enum(["approve-once", "reject"]),
949
+ feedback: z7.string().trim().min(1).max(2048).optional()
950
+ });
951
+ var PermissionRespondResultSchema = z7.discriminatedUnion("ok", [
952
+ z7.object({
953
+ ok: z7.literal(true),
954
+ requestId: IdSchema,
955
+ permissionRequestId: IdSchema,
956
+ machineId: IdSchema,
957
+ sessionId: IdSchema
958
+ }),
959
+ z7.object({
960
+ ok: z7.literal(false),
961
+ requestId: IdSchema,
962
+ permissionRequestId: IdSchema,
963
+ machineId: IdSchema,
964
+ sessionId: IdSchema,
965
+ error: ProtocolFailureSchema
966
+ })
967
+ ]);
968
+
969
+ // ../protocol/dist/common/version.js
970
+ import { z as z8 } from "zod";
971
+ var LEGACY_PROTOCOL_VERSION = 10;
972
+ var PROTOCOL_VERSION = 11;
973
+ var OLDEST_SUPPORTED_PROTOCOL_VERSION = 9;
974
+ var SupportedProtocolVersionSchema = z8.union([
975
+ z8.literal(OLDEST_SUPPORTED_PROTOCOL_VERSION),
976
+ z8.literal(LEGACY_PROTOCOL_VERSION),
977
+ z8.literal(PROTOCOL_VERSION)
978
+ ]);
979
+ var TRANSPORT_V2 = 2;
980
+ var SECURE_SOCKET_IO_NAMESPACE = "/v2";
981
+
982
+ // ../protocol/dist/auth/authentication.js
983
+ import { z as z9 } from "zod";
984
+ var UserRoleSchema = z9.enum(["admin", "user"]);
985
+ var PasswordSchema = z9.string().min(1).max(4096);
986
+ var PcTokenLabelSchema = z9.string().trim().min(1).max(120);
987
+ var AuthUserSchema = z9.object({
988
+ userId: IdSchema,
989
+ username: UsernameSchema,
990
+ role: UserRoleSchema
991
+ }).strict();
992
+ var LoginRequestSchema = z9.object({
993
+ username: UsernameSchema,
994
+ password: PasswordSchema
995
+ });
996
+ var LoginResultSchema = z9.discriminatedUnion("ok", [
997
+ z9.object({
998
+ ok: z9.literal(true),
999
+ accessToken: z9.string().min(32),
1000
+ expiresAt: z9.number().int().positive(),
1001
+ user: AuthUserSchema
1002
+ }),
1003
+ z9.object({
1004
+ ok: z9.literal(false),
1005
+ error: ProtocolFailureSchema
1006
+ })
1007
+ ]);
1008
+ var MobileLoginRequestSchema = z9.object({
1009
+ mobileCredential: z9.string().min(64).max(4096),
1010
+ clientId: IdSchema
1011
+ });
1012
+ var PcAccountRequestSchema = z9.object({
1013
+ userId: IdSchema,
1014
+ machineId: IdSchema
1015
+ }).strict();
1016
+ var PcAccountResultSchema = z9.discriminatedUnion("ok", [
1017
+ z9.object({
1018
+ ok: z9.literal(true),
1019
+ user: AuthUserSchema,
1020
+ method: z9.enum(["microsoft", "token"])
1021
+ }).strict(),
1022
+ z9.object({
1023
+ ok: z9.literal(false),
1024
+ error: ProtocolFailureSchema
1025
+ }).strict()
1026
+ ]);
1027
+ var AdminUserSummarySchema = z9.object({
1028
+ userId: IdSchema,
1029
+ username: UsernameSchema,
1030
+ role: UserRoleSchema,
1031
+ createdAt: z9.number().int().nonnegative(),
1032
+ updatedAt: z9.number().int().nonnegative(),
1033
+ disabledAt: z9.number().int().nonnegative().nullable()
1034
+ }).strict();
1035
+ var AdminFailureResultSchema = z9.object({
1036
+ ok: z9.literal(false),
1037
+ error: ProtocolFailureSchema
1038
+ }).strict();
1039
+ var AdminUserListResultSchema = z9.discriminatedUnion("ok", [
1040
+ z9.object({
1041
+ ok: z9.literal(true),
1042
+ users: z9.array(AdminUserSummarySchema)
1043
+ }).strict(),
1044
+ AdminFailureResultSchema
1045
+ ]);
1046
+ var AdminUserCreateRequestSchema = z9.object({
1047
+ username: UsernameSchema,
1048
+ password: PasswordSchema
1049
+ }).strict();
1050
+ var AdminUserCreateResultSchema = z9.discriminatedUnion("ok", [
1051
+ z9.object({
1052
+ ok: z9.literal(true),
1053
+ user: AdminUserSummarySchema
1054
+ }).strict(),
1055
+ AdminFailureResultSchema
1056
+ ]);
1057
+ var AdminUserStatusRequestSchema = z9.object({
1058
+ userId: IdSchema,
1059
+ disabled: z9.boolean()
1060
+ }).strict();
1061
+ var AdminUserStatusResultSchema = z9.discriminatedUnion("ok", [
1062
+ z9.object({
1063
+ ok: z9.literal(true),
1064
+ user: AdminUserSummarySchema
1065
+ }).strict(),
1066
+ AdminFailureResultSchema
1067
+ ]);
1068
+ var AdminUserPasswordRequestSchema = z9.object({
1069
+ userId: IdSchema,
1070
+ password: PasswordSchema
1071
+ }).strict();
1072
+ var AdminUserPasswordResultSchema = z9.discriminatedUnion("ok", [
1073
+ z9.object({
1074
+ ok: z9.literal(true),
1075
+ user: AdminUserSummarySchema
1076
+ }).strict(),
1077
+ AdminFailureResultSchema
1078
+ ]);
1079
+ var PcServiceTokenSummarySchema = z9.object({
1080
+ tokenId: IdSchema,
1081
+ userId: IdSchema,
1082
+ label: PcTokenLabelSchema,
1083
+ createdAt: z9.number().int().nonnegative(),
1084
+ lastUsedAt: z9.number().int().nonnegative().nullable(),
1085
+ revokedAt: z9.number().int().nonnegative().nullable()
1086
+ }).strict();
1087
+ var AdminPcTokenListRequestSchema = z9.object({
1088
+ userId: IdSchema
1089
+ }).strict();
1090
+ var AdminPcTokenListResultSchema = z9.discriminatedUnion("ok", [
1091
+ z9.object({
1092
+ ok: z9.literal(true),
1093
+ tokens: z9.array(PcServiceTokenSummarySchema)
1094
+ }).strict(),
1095
+ AdminFailureResultSchema
1096
+ ]);
1097
+ var AdminPcTokenIssueRequestSchema = z9.object({
1098
+ userId: IdSchema,
1099
+ label: PcTokenLabelSchema
1100
+ }).strict();
1101
+ var AdminPcTokenIssueResultSchema = z9.discriminatedUnion("ok", [
1102
+ z9.object({
1103
+ ok: z9.literal(true),
1104
+ token: z9.string().min(32).max(256),
1105
+ pcToken: PcServiceTokenSummarySchema
1106
+ }).strict(),
1107
+ AdminFailureResultSchema
1108
+ ]);
1109
+ var AdminPcTokenRevokeRequestSchema = z9.object({
1110
+ tokenId: IdSchema
1111
+ }).strict();
1112
+ var AdminPcTokenRevokeResultSchema = z9.discriminatedUnion("ok", [
1113
+ z9.object({
1114
+ ok: z9.literal(true),
1115
+ pcToken: PcServiceTokenSummarySchema
1116
+ }).strict(),
1117
+ AdminFailureResultSchema
1118
+ ]);
1119
+
1120
+ // ../protocol/dist/auth/pairing.js
1121
+ import { z as z10 } from "zod";
1122
+ var PAIRING_URI_SCHEME = "agentknight";
1123
+ var PAIRING_URI_HOST = "pair";
1124
+ var MOBILE_TRANSFER_MAX_PARTS = 64;
1125
+ var MOBILE_TRANSFER_PART_DATA_MAX_LENGTH = 2600;
1126
+ var MOBILE_TRANSFER_RELAY_TTL_MS = 10 * 60 * 1e3;
1127
+ var MOBILE_TRANSFER_RELAY_MAX_CIPHERTEXT_LENGTH = 128 * 1024;
1128
+ var PairingCreateRequestSchema = z10.object({
1129
+ userId: IdSchema,
1130
+ machineId: IdSchema,
1131
+ stableDeviceId: IdSchema.optional(),
1132
+ machineName: z10.string().trim().min(1).max(120),
1133
+ keyId: Base64UrlKeyIdSchema.optional()
1134
+ });
1135
+ var PairingCreateResultSchema = z10.discriminatedUnion("ok", [
1136
+ z10.object({
1137
+ ok: z10.literal(true),
1138
+ code: z10.string().min(32).max(256),
1139
+ expiresAt: z10.number().int().positive()
1140
+ }),
1141
+ z10.object({
1142
+ ok: z10.literal(false),
1143
+ error: ProtocolFailureSchema
1144
+ })
1145
+ ]);
1146
+ var PairingExchangeRequestSchema = z10.object({
1147
+ code: z10.string().min(32).max(256),
1148
+ clientId: IdSchema
1149
+ });
1150
+ var PairingExchangeResultSchema = z10.discriminatedUnion("ok", [
1151
+ z10.object({
1152
+ ok: z10.literal(true),
1153
+ accessToken: z10.string().min(32),
1154
+ expiresAt: z10.number().int().positive(),
1155
+ mobileCredential: z10.string().min(64).max(4096),
1156
+ mobileCredentialExpiresAt: z10.number().int().positive(),
1157
+ stableDeviceId: IdSchema.optional(),
1158
+ user: AuthUserSchema
1159
+ }),
1160
+ z10.object({
1161
+ ok: z10.literal(false),
1162
+ error: ProtocolFailureSchema
1163
+ })
1164
+ ]);
1165
+ var MobileTransferMachineSchema = z10.object({
1166
+ machineId: IdSchema,
1167
+ mobileCredential: z10.string().min(64).max(4096),
1168
+ contentKey: z10.string().regex(/^[A-Za-z0-9_-]{43}$/u, "Expected a 32-byte base64url key"),
1169
+ relayUrl: z10.url().max(2048).optional(),
1170
+ relayUsername: UsernameSchema.optional(),
1171
+ stableDeviceId: IdSchema.optional(),
1172
+ pairedAt: z10.number().int().nonnegative().optional(),
1173
+ lastSeenAt: z10.number().int().nonnegative().optional(),
1174
+ sleeping: z10.boolean().optional(),
1175
+ selected: z10.boolean().optional()
1176
+ }).strict();
1177
+ var MobileTransferPayloadSchema = z10.object({
1178
+ relayUrl: z10.url().max(2048),
1179
+ username: UsernameSchema,
1180
+ machines: z10.array(MobileTransferMachineSchema).min(1).max(32)
1181
+ }).strict().superRefine((payload, context) => {
1182
+ const normalizeEndpoint = (value) => value.trim().replace(/\/+$/u, "").replace(/^(https?):\/\/(\[[^\]]+\]|[^:/?#]+)(?::([0-9]+))?(?=\/|$)/iu, (_match, scheme, host, rawPort) => {
1183
+ const protocol = scheme.toLowerCase();
1184
+ const port = rawPort === void 0 ? void 0 : Number(rawPort);
1185
+ const isDefaultPort = protocol === "http" && port === 80 || protocol === "https" && port === 443;
1186
+ const authorityPort = port === void 0 || isDefaultPort ? "" : `:${port}`;
1187
+ return `${protocol}://${host.toLowerCase()}${authorityPort}`;
1188
+ });
1189
+ const defaultEndpoint = normalizeEndpoint(payload.relayUrl);
1190
+ const identities = /* @__PURE__ */ new Set();
1191
+ const devices = /* @__PURE__ */ new Map();
1192
+ payload.machines.forEach((machine, index) => {
1193
+ const endpoint = normalizeEndpoint(machine.relayUrl ?? payload.relayUrl);
1194
+ const account = machine.relayUsername ?? (endpoint === defaultEndpoint ? payload.username : null);
1195
+ const identity2 = JSON.stringify([machine.machineId, endpoint, account]);
1196
+ if (identities.has(identity2)) {
1197
+ context.addIssue({
1198
+ code: "custom",
1199
+ message: "Transfer contains duplicate PC authorizations",
1200
+ path: ["machines", index]
1201
+ });
1202
+ }
1203
+ identities.add(identity2);
1204
+ const deviceId = machine.stableDeviceId ?? machine.machineId;
1205
+ const connections = devices.get(deviceId) ?? [];
1206
+ connections.push(machine);
1207
+ devices.set(deviceId, connections);
1208
+ });
1209
+ for (const connections of devices.values()) {
1210
+ if (connections.some((machine) => machine.selected !== void 0) && connections.filter((machine) => machine.selected !== false).length > 1) {
1211
+ context.addIssue({
1212
+ code: "custom",
1213
+ message: "Transfer selects multiple connections for one PC",
1214
+ path: ["machines"]
1215
+ });
1216
+ }
1217
+ }
1218
+ });
1219
+ var MobileTransferPartSchema = z10.object({
1220
+ transferId: z10.string().regex(/^[A-Za-z0-9_-]{43}$/u, "Expected a SHA-256 base64url digest"),
1221
+ part: z10.number().int().min(1).max(MOBILE_TRANSFER_MAX_PARTS),
1222
+ total: z10.number().int().min(2).max(MOBILE_TRANSFER_MAX_PARTS),
1223
+ data: z10.string().min(1).max(MOBILE_TRANSFER_PART_DATA_MAX_LENGTH).regex(/^[A-Za-z0-9_-]+$/u, "Expected base64url data")
1224
+ }).strict().refine(({ part, total }) => part <= total, {
1225
+ message: "Part number must not exceed total parts",
1226
+ path: ["part"]
1227
+ });
1228
+ var MobileTransferUploadRequestSchema = z10.object({
1229
+ ciphertext: z10.string().min(1).max(MOBILE_TRANSFER_RELAY_MAX_CIPHERTEXT_LENGTH).regex(/^[A-Za-z0-9_-]+$/u, "Expected base64url ciphertext")
1230
+ }).strict();
1231
+ var MobileTransferUploadResultSchema = z10.object({
1232
+ token: z10.string().regex(/^[A-Za-z0-9_-]{43}$/u, "Expected a 32-byte base64url token"),
1233
+ expiresAt: z10.number().int().positive()
1234
+ }).strict();
1235
+ var MobileTransferDownloadResultSchema = z10.object({
1236
+ ciphertext: z10.string().min(1).max(MOBILE_TRANSFER_RELAY_MAX_CIPHERTEXT_LENGTH).regex(/^[A-Za-z0-9_-]+$/u, "Expected base64url ciphertext")
1237
+ }).strict();
1238
+
1239
+ // ../protocol/dist/auth/microsoft-enrollment.js
1240
+ import { z as z11 } from "zod";
1241
+ var MicrosoftIdentityReferenceSchema = z11.object({
1242
+ issuer: z11.literal("https://login.microsoftonline.com/9188040d-6c67-4c5b-b112-36a304b66dad/v2.0"),
1243
+ clientId: z11.uuid(),
1244
+ subject: z11.string().min(1).max(255).regex(/^[\x21-\x7e]+$/)
1245
+ }).strict();
1246
+ var PcEnrollmentIdSchema = z11.uuid();
1247
+ var PcEnrollmentStateSchema = z11.enum([
1248
+ "pending",
1249
+ "approved",
1250
+ "issued",
1251
+ "confirmed",
1252
+ "cancelled",
1253
+ "expired"
1254
+ ]);
1255
+ var PcEnrollmentStartRequestSchema = z11.object({
1256
+ machineId: z11.string().min(1).max(128).regex(/^[A-Za-z0-9._:-]+$/),
1257
+ deviceName: z11.string().trim().min(1).max(120).regex(/^[^\x00-\x1f\x7f]+$/),
1258
+ codeChallenge: z11.string().regex(/^[A-Za-z0-9_-]{42}[AEIMQUYcgkosw048]$/)
1259
+ }).strict();
1260
+ var PcEnrollmentVerifierRequestSchema = z11.object({
1261
+ verifier: z11.string().regex(/^[A-Za-z0-9._~-]{43,128}$/)
1262
+ }).strict();
1263
+ var MicrosoftCsrfRequestSchema = z11.object({
1264
+ csrfToken: z11.string().min(1).max(256)
1265
+ }).strict();
1266
+ var PcEnrollmentApproveRequestSchema = MicrosoftCsrfRequestSchema.extend({
1267
+ confirmationCode: z11.string().regex(/^[A-F0-9]{8}$/),
1268
+ localCredentials: z11.object({
1269
+ username: z11.string().trim().min(1).max(120),
1270
+ password: z11.string().min(1).max(4096)
1271
+ }).strict().optional()
1272
+ }).strict();
1273
+ var MicrosoftEnrollmentFailureSchema = z11.object({
1274
+ ok: z11.literal(false),
1275
+ error: z11.object({
1276
+ code: z11.string().min(1).max(128),
1277
+ message: z11.string().min(1).max(1024)
1278
+ }).strict()
1279
+ }).strict();
1280
+ var MicrosoftMutationResultSchema = z11.discriminatedUnion("ok", [
1281
+ z11.object({ ok: z11.literal(true) }).strict(),
1282
+ MicrosoftEnrollmentFailureSchema
1283
+ ]);
1284
+ var PcEnrollmentStartResultSchema = z11.discriminatedUnion("ok", [
1285
+ z11.object({
1286
+ ok: z11.literal(true),
1287
+ enrollmentId: PcEnrollmentIdSchema,
1288
+ confirmationCode: z11.string().regex(/^[A-F0-9]{8}$/),
1289
+ verificationUri: z11.url(),
1290
+ expiresAt: z11.number().int().positive(),
1291
+ intervalSeconds: z11.number().int().positive()
1292
+ }).strict(),
1293
+ MicrosoftEnrollmentFailureSchema
1294
+ ]);
1295
+ var PcEnrollmentStatusResultSchema = z11.discriminatedUnion("ok", [
1296
+ z11.object({
1297
+ ok: z11.literal(true),
1298
+ state: PcEnrollmentStateSchema,
1299
+ expiresAt: z11.number().int().positive()
1300
+ }).strict(),
1301
+ MicrosoftEnrollmentFailureSchema
1302
+ ]);
1303
+ var PcEnrollmentExchangeResultSchema = z11.discriminatedUnion("ok", [
1304
+ z11.object({
1305
+ ok: z11.literal(true),
1306
+ token: z11.string().min(32).max(4096),
1307
+ tokenId: z11.string().min(1).max(256),
1308
+ grantId: z11.uuid(),
1309
+ machineId: PcEnrollmentStartRequestSchema.shape.machineId,
1310
+ user: AuthUserSchema,
1311
+ confirmBy: z11.number().int().positive()
1312
+ }).strict(),
1313
+ MicrosoftEnrollmentFailureSchema
1314
+ ]);
1315
+ var PcBrowserRedirectUriSchema = z11.string().regex(/^http:\/\/127\.0\.0\.1:(?:[1-9]\d{0,3}|[1-5]\d{4}|6[0-4]\d{3}|65[0-4]\d{2}|655[0-2]\d|6553[0-5])\/relay-login\/callback$/);
1316
+ var PcBrowserStateSchema = PcEnrollmentStartRequestSchema.shape.codeChallenge;
1317
+ var PcBrowserAuthorizationCodeSchema = PcEnrollmentStartRequestSchema.shape.codeChallenge;
1318
+ var PcBrowserAuthorizationStartRequestSchema = PcEnrollmentStartRequestSchema.extend({
1319
+ redirectUri: PcBrowserRedirectUriSchema,
1320
+ state: PcBrowserStateSchema
1321
+ }).strict();
1322
+ var PcBrowserAuthorizationStartResultSchema = z11.discriminatedUnion("ok", [
1323
+ z11.object({
1324
+ ok: z11.literal(true),
1325
+ enrollmentId: PcEnrollmentIdSchema,
1326
+ verificationUri: z11.url(),
1327
+ expiresAt: z11.number().int().positive()
1328
+ }).strict(),
1329
+ MicrosoftEnrollmentFailureSchema
1330
+ ]);
1331
+ var PcBrowserAuthorizationExchangeRequestSchema = PcEnrollmentVerifierRequestSchema.extend({
1332
+ code: PcBrowserAuthorizationCodeSchema,
1333
+ redirectUri: PcBrowserRedirectUriSchema
1334
+ }).strict();
1335
+ var PcBrowserAuthorizationCallbackSchema = z11.union([
1336
+ z11.object({ state: PcBrowserStateSchema, code: PcBrowserAuthorizationCodeSchema }).strict(),
1337
+ z11.object({
1338
+ state: PcBrowserStateSchema,
1339
+ error: z11.enum(["access_denied", "expired", "cancelled"])
1340
+ }).strict()
1341
+ ]);
1342
+ var MicrosoftDeviceSchema = z11.object({
1343
+ grantId: z11.uuid(),
1344
+ tokenId: z11.string().min(1).max(256),
1345
+ machineId: PcEnrollmentStartRequestSchema.shape.machineId,
1346
+ deviceName: PcEnrollmentStartRequestSchema.shape.deviceName,
1347
+ createdAt: z11.number().int().nonnegative(),
1348
+ revokedAt: z11.number().int().nonnegative().nullable()
1349
+ }).strict();
1350
+ var MicrosoftDevicesResultSchema = z11.discriminatedUnion("ok", [
1351
+ z11.object({
1352
+ ok: z11.literal(true),
1353
+ identity: MicrosoftIdentityReferenceSchema,
1354
+ devices: z11.array(MicrosoftDeviceSchema)
1355
+ }).strict(),
1356
+ MicrosoftEnrollmentFailureSchema
1357
+ ]);
1358
+ var MicrosoftIdentitySummarySchema = MicrosoftIdentityReferenceSchema.extend({
1359
+ identityId: z11.uuid(),
1360
+ userId: z11.string().min(1).max(256).nullable(),
1361
+ allowed: z11.boolean(),
1362
+ decidedBy: z11.string().min(1).max(256),
1363
+ decidedAt: z11.number().int().nonnegative(),
1364
+ createdAt: z11.number().int().nonnegative(),
1365
+ lastLoginAt: z11.number().int().nonnegative().nullable()
1366
+ }).strict();
1367
+ var MicrosoftIdentityAllowRequestSchema = z11.object({
1368
+ identity: MicrosoftIdentityReferenceSchema,
1369
+ allowed: z11.boolean()
1370
+ }).strict();
1371
+ var MicrosoftIdentityAllowResultSchema = z11.discriminatedUnion("ok", [
1372
+ z11.object({ ok: z11.literal(true), identity: MicrosoftIdentitySummarySchema }).strict(),
1373
+ MicrosoftEnrollmentFailureSchema
1374
+ ]);
1375
+ var MicrosoftIdentitiesResultSchema = z11.discriminatedUnion("ok", [
1376
+ z11.object({ ok: z11.literal(true), identities: z11.array(MicrosoftIdentitySummarySchema) }).strict(),
1377
+ MicrosoftEnrollmentFailureSchema
1378
+ ]);
1379
+ var MicrosoftInvitationEmailSchema = z11.email().max(254).regex(/^[\x21-\x7e]+$/);
1380
+ var MicrosoftInvitationCodeSchema = z11.string().length(24).regex(/^[A-F0-9]{24}$/);
1381
+ var MicrosoftInvitationCreateRequestSchema = z11.object({
1382
+ email: MicrosoftInvitationEmailSchema
1383
+ }).strict();
1384
+ var MicrosoftInvitationCreateResultSchema = z11.discriminatedUnion("ok", [
1385
+ z11.object({
1386
+ ok: z11.literal(true),
1387
+ invitationId: z11.uuid(),
1388
+ email: MicrosoftInvitationEmailSchema,
1389
+ code: MicrosoftInvitationCodeSchema,
1390
+ expiresAt: z11.number().int().nonnegative(),
1391
+ invitationUri: z11.url()
1392
+ }).strict(),
1393
+ MicrosoftEnrollmentFailureSchema
1394
+ ]);
1395
+ var MicrosoftInvitationAcceptRequestSchema = MicrosoftCsrfRequestSchema.extend({
1396
+ code: MicrosoftInvitationCodeSchema
1397
+ }).strict();
1398
+
1399
+ // ../protocol/dist/transport/event-names.js
1400
+ import { z as z12 } from "zod";
1401
+ var PcSecureEventNameSchema = z12.enum([
1402
+ "session.communication",
1403
+ "session.list.result",
1404
+ "session.options.result",
1405
+ "session.create.result",
1406
+ "session.delete.result",
1407
+ "session.configure.result",
1408
+ "session.remote.result",
1409
+ "session.timeline.page.result",
1410
+ "session.watch.result",
1411
+ "session.prompt.result",
1412
+ "session.activity",
1413
+ "session.abort.result",
1414
+ "conversation.item.upsert",
1415
+ "conversation.activity.step.upsert",
1416
+ "session.timeline.invalidated",
1417
+ "interaction.request",
1418
+ "interaction.respond.result",
1419
+ "permission.request",
1420
+ "permission.respond.result",
1421
+ "sessions.snapshot"
1422
+ ]);
1423
+ var MobileSecureEventNameSchema = z12.enum([
1424
+ "session.communication",
1425
+ "session.list",
1426
+ "session.options",
1427
+ "session.create",
1428
+ "session.delete",
1429
+ "session.configure",
1430
+ "session.remote",
1431
+ "session.timeline.page",
1432
+ "session.watch",
1433
+ "session.prompt",
1434
+ "session.abort",
1435
+ "interaction.respond",
1436
+ "permission.respond"
1437
+ ]);
1438
+ var SecureEventNameSchema = z12.enum([
1439
+ "session.communication",
1440
+ "session.list.result",
1441
+ "session.options.result",
1442
+ "session.create.result",
1443
+ "session.delete.result",
1444
+ "session.configure.result",
1445
+ "session.remote.result",
1446
+ "session.timeline.page.result",
1447
+ "session.watch.result",
1448
+ "session.prompt.result",
1449
+ "session.activity",
1450
+ "session.abort.result",
1451
+ "conversation.item.upsert",
1452
+ "conversation.activity.step.upsert",
1453
+ "session.timeline.invalidated",
1454
+ "interaction.request",
1455
+ "interaction.respond.result",
1456
+ "permission.request",
1457
+ "permission.respond.result",
1458
+ "sessions.snapshot",
1459
+ "session.list",
1460
+ "session.options",
1461
+ "session.create",
1462
+ "session.delete",
1463
+ "session.configure",
1464
+ "session.remote",
1465
+ "session.timeline.page",
1466
+ "session.watch",
1467
+ "session.prompt",
1468
+ "session.abort",
1469
+ "interaction.respond",
1470
+ "permission.respond"
1471
+ ]);
1472
+
1473
+ // ../protocol/dist/transport/transport.js
1474
+ import { z as z13 } from "zod";
1475
+ var RoleSchema = z13.enum(["pc", "mobile"]);
1476
+ var V2SocketAuthBaseShape = {
1477
+ transportVersion: z13.coerce.number().pipe(z13.literal(TRANSPORT_V2)),
1478
+ protocolVersion: z13.coerce.number().pipe(SupportedProtocolVersionSchema),
1479
+ token: z13.string().min(1),
1480
+ clientId: IdSchema,
1481
+ machineId: IdSchema,
1482
+ keyId: Base64UrlKeyIdSchema
1483
+ };
1484
+ var V2PcSocketAuthSchema = z13.object({
1485
+ ...V2SocketAuthBaseShape,
1486
+ role: z13.literal("pc"),
1487
+ userId: IdSchema
1488
+ }).strict();
1489
+ var V2MobileSocketAuthSchema = z13.object({
1490
+ ...V2SocketAuthBaseShape,
1491
+ role: z13.literal("mobile"),
1492
+ mobileCredential: z13.string().min(64).max(4096)
1493
+ }).strict();
1494
+ var V2SocketAuthSchema = z13.discriminatedUnion("role", [
1495
+ V2PcSocketAuthSchema,
1496
+ V2MobileSocketAuthSchema
1497
+ ]);
1498
+ var SECURE_MESSAGE_MAX_CIPHERTEXT_LENGTH = 16e6;
1499
+ var SecureMessageBaseShape = {
1500
+ version: z13.literal(1),
1501
+ algorithm: z13.literal("A256GCM"),
1502
+ messageId: IdSchema,
1503
+ machineId: IdSchema,
1504
+ clientId: IdSchema,
1505
+ recipientClientId: IdSchema.optional(),
1506
+ keyId: Base64UrlKeyIdSchema,
1507
+ sentAt: z13.number().int().nonnegative(),
1508
+ nonce: z13.string().regex(/^[A-Za-z0-9_-]{16}$/u, "Expected a 12-byte base64url nonce"),
1509
+ ciphertext: z13.string().min(22).max(SECURE_MESSAGE_MAX_CIPHERTEXT_LENGTH).regex(/^[A-Za-z0-9_-]+$/u, "Expected base64url ciphertext")
1510
+ };
1511
+ var SecureMessageSchema = z13.discriminatedUnion("sender", [
1512
+ z13.object({
1513
+ ...SecureMessageBaseShape,
1514
+ sender: z13.literal("pc"),
1515
+ event: PcSecureEventNameSchema
1516
+ }).strict(),
1517
+ z13.object({
1518
+ ...SecureMessageBaseShape,
1519
+ sender: z13.literal("mobile"),
1520
+ event: MobileSecureEventNameSchema
1521
+ }).strict()
1522
+ ]);
1523
+ var SecureDeliveryErrorSchema = z13.object({
1524
+ messageId: IdSchema,
1525
+ event: SecureEventNameSchema,
1526
+ machineId: IdSchema,
1527
+ code: z13.enum([
1528
+ "MACHINE_OFFLINE",
1529
+ "IDENTITY_MISMATCH",
1530
+ "KEY_ID_MISMATCH",
1531
+ "INVALID_PAYLOAD",
1532
+ "SESSION_DELETE_UNSUPPORTED",
1533
+ "SESSION_COMMUNICATION_UNSUPPORTED"
1534
+ ]),
1535
+ message: z13.string().min(1).max(1024)
1536
+ }).strict();
1537
+
1538
+ // ../protocol/dist/transport/machines.js
1539
+ import { z as z14 } from "zod";
1540
+ var MOBILE_CONNECTED_REPLAY_CAPABILITY = "mobile-connected-replay";
1541
+ var MACHINE_HELLO_SDK_COMPAT_VERSION = "1.0.9";
1542
+ var MachineHelloBaseShape = {
1543
+ userId: IdSchema,
1544
+ machineId: IdSchema,
1545
+ machineName: z14.string().trim().min(1).max(120),
1546
+ platform: z14.string().trim().min(1).max(64),
1547
+ agentRunId: IdSchema,
1548
+ sdkVersion: z14.literal(MACHINE_HELLO_SDK_COMPAT_VERSION),
1549
+ clientVersion: z14.string().trim().min(1).max(64).optional(),
1550
+ capabilities: z14.array(IdSchema).max(64).optional()
1551
+ };
1552
+ var OldestSupportedMachineHelloSchema = z14.object({
1553
+ ...MachineHelloBaseShape,
1554
+ protocolVersion: z14.literal(OLDEST_SUPPORTED_PROTOCOL_VERSION)
1555
+ });
1556
+ var LegacyMachineHelloSchema = z14.object({
1557
+ ...MachineHelloBaseShape,
1558
+ protocolVersion: z14.literal(LEGACY_PROTOCOL_VERSION)
1559
+ });
1560
+ var MachineHelloSchema = z14.object({
1561
+ ...MachineHelloBaseShape,
1562
+ protocolVersion: z14.literal(PROTOCOL_VERSION)
1563
+ });
1564
+ var CompatibleMachineHelloSchema = z14.union([
1565
+ OldestSupportedMachineHelloSchema,
1566
+ LegacyMachineHelloSchema,
1567
+ MachineHelloSchema
1568
+ ]);
1569
+ var V2MachineHelloSchema = z14.union([
1570
+ OldestSupportedMachineHelloSchema.strict(),
1571
+ LegacyMachineHelloSchema.strict(),
1572
+ MachineHelloSchema.strict()
1573
+ ]);
1574
+ var MachineHeartbeatSchema = z14.object({
1575
+ userId: IdSchema,
1576
+ machineId: IdSchema,
1577
+ agentRunId: IdSchema,
1578
+ sentAt: z14.number().int().nonnegative()
1579
+ });
1580
+ var MachinePresenceStateShape = {
1581
+ online: z14.literal(true),
1582
+ connectedAt: z14.number().int().nonnegative(),
1583
+ lastSeen: z14.number().int().nonnegative()
1584
+ };
1585
+ var MachinePresenceSchema = z14.union([
1586
+ OldestSupportedMachineHelloSchema.extend(MachinePresenceStateShape),
1587
+ LegacyMachineHelloSchema.extend(MachinePresenceStateShape),
1588
+ MachineHelloSchema.extend(MachinePresenceStateShape)
1589
+ ]);
1590
+ var MachineOfflineSchema = z14.object({
1591
+ userId: IdSchema,
1592
+ machineId: IdSchema,
1593
+ agentRunId: IdSchema,
1594
+ disconnectedAt: z14.number().int().nonnegative()
1595
+ });
1596
+ var MobileDisconnectedSchema = z14.object({
1597
+ clientId: IdSchema,
1598
+ machineId: IdSchema,
1599
+ disconnectedAt: z14.number().int().nonnegative()
1600
+ });
1601
+ var MobileConnectedSchema = z14.object({
1602
+ clientId: IdSchema,
1603
+ machineId: IdSchema,
1604
+ connectedAt: z14.number().int().nonnegative(),
1605
+ capabilities: z14.array(IdSchema).max(64).optional()
1606
+ });
1607
+ var MachineListRequestSchema = z14.object({
1608
+ requestId: IdSchema
1609
+ });
1610
+ var MachineListResultSchema = z14.object({
1611
+ requestId: IdSchema,
1612
+ machines: z14.array(MachinePresenceSchema),
1613
+ // Absent on older relays; PC presence capabilities alone do not negotiate routing.
1614
+ relayCapabilities: z14.array(IdSchema).max(64).optional()
1615
+ });
1616
+
1617
+ // ../protocol/dist/transport/peer-message.js
1618
+ import { z as z15 } from "zod";
1619
+ var PC_PEER_CHAT_CAPABILITY = "pc-peer-chat-v1";
1620
+ var PeerTextSchema = z15.string().max(16e3).refine((value) => value.trim().length > 0);
1621
+ var PeerMessageBaseShape = {
1622
+ version: z15.literal(1),
1623
+ messageId: IdSchema,
1624
+ sourceSessionId: IdSchema,
1625
+ targetMachineId: IdSchema,
1626
+ targetSessionId: IdSchema
1627
+ };
1628
+ var PeerMessageSchema = z15.discriminatedUnion("kind", [
1629
+ z15.object({
1630
+ ...PeerMessageBaseShape,
1631
+ kind: z15.literal("request"),
1632
+ content: PeerTextSchema,
1633
+ timeoutMs: z15.number().int().min(1e3).max(12e4)
1634
+ }).strict(),
1635
+ z15.object({
1636
+ ...PeerMessageBaseShape,
1637
+ kind: z15.literal("response"),
1638
+ requestId: IdSchema,
1639
+ content: PeerTextSchema
1640
+ }).strict(),
1641
+ z15.object({
1642
+ ...PeerMessageBaseShape,
1643
+ kind: z15.literal("error"),
1644
+ requestId: IdSchema,
1645
+ code: z15.string().trim().min(1).max(80),
1646
+ message: z15.string().trim().min(1).max(1024)
1647
+ }).strict(),
1648
+ z15.object({
1649
+ ...PeerMessageBaseShape,
1650
+ kind: z15.literal("cancel"),
1651
+ requestId: IdSchema
1652
+ }).strict()
1653
+ ]);
1654
+ var PeerDeliverySchema = z15.object({
1655
+ sourceMachineId: IdSchema,
1656
+ message: PeerMessageSchema
1657
+ }).strict();
1658
+
1659
+ // ../protocol/dist/transport/a2a.js
1660
+ import { z as z16 } from "zod";
1661
+ var PC_A2A_CAPABILITY = "pc-a2a-v1";
1662
+ var A2A_BODY_MAX_LENGTH = 65536;
1663
+ var A2aRelayRequestSchema = z16.object({
1664
+ userId: IdSchema,
1665
+ sourceMachineId: IdSchema,
1666
+ targetSessionId: IdSchema,
1667
+ endpointUrl: z16.url().max(2048),
1668
+ kind: z16.enum(["card", "rpc"]),
1669
+ body: z16.string().max(A2A_BODY_MAX_LENGTH),
1670
+ protocolVersion: z16.string().max(32).optional()
1671
+ }).strict().refine((request) => request.kind !== "card" || request.body === "", {
1672
+ path: ["body"],
1673
+ message: "Agent card requests must have an empty body"
1674
+ });
1675
+ var A2aRelayResponseSchema = z16.object({
1676
+ status: z16.number().int().min(200).max(599),
1677
+ body: z16.string().max(A2A_BODY_MAX_LENGTH)
1678
+ }).strict();
1679
+
1680
+ // ../protocol/dist/sessions/session-communication.js
1681
+ import { z as z17 } from "zod";
1682
+ var SESSION_COMMUNICATION_CAPABILITY = "session.communication.v1";
1683
+ var SessionCommunicationIdSchema = z17.string().min(1).max(256).refine((value) => value === value.trim(), "Expected an unpadded identity");
1684
+ var SessionCommunicationIdentityShape = {
1685
+ requestId: SessionCommunicationIdSchema,
1686
+ machineId: SessionCommunicationIdSchema,
1687
+ sessionId: SessionCommunicationIdSchema,
1688
+ operation: z17.string().min(1).max(128).regex(/^[a-z][a-z0-9]*(?:[.-][a-z0-9]+)*$/u),
1689
+ version: z17.number().int().positive().max(2147483647)
1690
+ };
1691
+ var SessionCommunicationDataSchema = z17.record(z17.string(), z17.json());
1692
+ var SessionCommunicationRequestSchema = z17.object({
1693
+ ...SessionCommunicationIdentityShape,
1694
+ kind: z17.literal("request"),
1695
+ data: SessionCommunicationDataSchema
1696
+ }).strict();
1697
+ var SessionCommunicationResponseSchema = z17.object({
1698
+ ...SessionCommunicationIdentityShape,
1699
+ kind: z17.literal("response"),
1700
+ data: SessionCommunicationDataSchema
1701
+ }).strict();
1702
+ var SessionCommunicationErrorSchema = z17.object({
1703
+ ...SessionCommunicationIdentityShape,
1704
+ kind: z17.literal("error"),
1705
+ error: ProtocolFailureSchema
1706
+ }).strict();
1707
+ var SessionCommunicationSchema = z17.discriminatedUnion("kind", [
1708
+ SessionCommunicationRequestSchema,
1709
+ SessionCommunicationResponseSchema,
1710
+ SessionCommunicationErrorSchema
1711
+ ]);
1712
+ function sessionCommunicationOperationCapability(operation, version) {
1713
+ return `${operation}.v${version}`;
1714
+ }
1715
+ function sessionCommunicationError(request, error) {
1716
+ const { data: _data, ...identity2 } = request;
1717
+ return { ...identity2, kind: "error", error };
1718
+ }
1719
+
1720
+ // ../protocol/dist/sessions/session-workspace.js
1721
+ import { z as z18 } from "zod";
1722
+ var SESSION_PROJECT_IDENTITY_OPERATION = "session.project.identity";
1723
+ var SESSION_PROJECT_IDENTITY_VERSION = 1;
1724
+ var SESSION_PROJECT_IDENTITY_MAX_PATH_LENGTH = 32768;
1725
+ var SESSION_PROJECT_IDENTITY_MAX_RESPONSE_BYTES = 640 * 1024;
1726
+ var SESSION_DIRECTORY_LIST_OPERATION = "session.directory.list";
1727
+ var SESSION_DIRECTORY_LIST_VERSION = 1;
1728
+ var SESSION_DIRECTORY_MAX_PATH_LENGTH = 1024;
1729
+ var SESSION_DIRECTORY_MAX_DEPTH = 32;
1730
+ var SESSION_DIRECTORY_MAX_ENTRIES = 500;
1731
+ var SESSION_DIRECTORY_MAX_RESPONSE_BYTES = 128 * 1024;
1732
+ var SESSION_FILE_READ_OPERATION = "session.file.read";
1733
+ var SESSION_FILE_READ_VERSION = 1;
1734
+ var SESSION_FILE_MAX_ORIGINAL_BYTES = 500 * 1024;
1735
+ var SESSION_FILE_GZIP_THRESHOLD_BYTES = 20 * 1024;
1736
+ var SESSION_FILE_MAX_IMAGE_BYTES = 100 * 1024;
1737
+ var SESSION_FILE_MAX_IMAGE_EDGE = 1280;
1738
+ var SESSION_FILE_MAX_IMAGE_PIXELS = 16 * 1024 * 1024;
1739
+ var SESSION_FILE_MAX_TRANSFER_BYTES = SESSION_FILE_MAX_ORIGINAL_BYTES + 1024;
1740
+ var SESSION_FILE_MAX_BASE64_LENGTH = Math.ceil(SESSION_FILE_MAX_TRANSFER_BYTES / 3) * 4;
1741
+ var SESSION_FILE_MAX_RESPONSE_BYTES = SESSION_FILE_MAX_BASE64_LENGTH + 8192;
1742
+ var SESSION_FILE_MEDIA_TYPES = [
1743
+ "text/plain",
1744
+ "text/html",
1745
+ "text/markdown",
1746
+ "text/css",
1747
+ "text/javascript",
1748
+ "application/json",
1749
+ "application/xml",
1750
+ "text/xml",
1751
+ "application/yaml",
1752
+ "image/webp"
1753
+ ];
1754
+ function isSafeSessionDirectoryPath(path) {
1755
+ if (path === "")
1756
+ return true;
1757
+ if (path.length > SESSION_DIRECTORY_MAX_PATH_LENGTH)
1758
+ return false;
1759
+ const segments = path.split("/");
1760
+ return segments.length <= SESSION_DIRECTORY_MAX_DEPTH && segments.every((segment) => segment.length > 0 && segment.length <= 255 && segment !== "." && segment !== ".." && !/[\\:<>"|?*\u0000-\u001f\u007f]/u.test(segment) && !/[. ]$/u.test(segment) && !/~[0-9]/u.test(segment) && !/^(?:con|prn|aux|nul|com[0-9¹²³]|lpt[0-9¹²³])(?:[ .]|$)/iu.test(segment) && !/^(?:conin\$|conout\$)$/iu.test(segment));
1761
+ }
1762
+ var SessionDirectoryListRequestSchema = z18.object({
1763
+ requestId: IdSchema,
1764
+ machineId: IdSchema,
1765
+ sessionId: IdSchema,
1766
+ path: z18.string().max(SESSION_DIRECTORY_MAX_PATH_LENGTH)
1767
+ }).strict();
1768
+ var SessionDirectoryEntrySchema = z18.object({
1769
+ name: z18.string().min(1).max(255),
1770
+ kind: z18.enum(["directory", "file", "blocked"])
1771
+ }).strict();
1772
+ var SessionDirectoryListDataSchema = SessionDirectoryListRequestSchema.pick({ path: true });
1773
+ var SessionDirectoryListResultDataSchema = z18.object({
1774
+ path: z18.string().max(SESSION_DIRECTORY_MAX_PATH_LENGTH),
1775
+ rootRevision: z18.string().min(1).max(128),
1776
+ entries: z18.array(SessionDirectoryEntrySchema).max(SESSION_DIRECTORY_MAX_ENTRIES)
1777
+ }).strict();
1778
+ var SessionDirectoryListResponseSchema = SessionDirectoryListRequestSchema.extend({
1779
+ rootRevision: z18.string().min(1).max(128).optional(),
1780
+ entries: z18.array(SessionDirectoryEntrySchema).max(SESSION_DIRECTORY_MAX_ENTRIES).optional(),
1781
+ error: ProtocolFailureSchema.optional()
1782
+ }).superRefine((response, context) => {
1783
+ if (response.error === void 0 ? response.entries === void 0 || response.rootRevision === void 0 : response.entries !== void 0 || response.rootRevision !== void 0) {
1784
+ context.addIssue({ code: "custom", message: "Expected directory success or failure" });
1785
+ }
1786
+ });
1787
+ var SessionFileReadDataSchema = z18.object({
1788
+ path: z18.string().min(1).max(SESSION_DIRECTORY_MAX_PATH_LENGTH).refine(isSafeSessionDirectoryPath),
1789
+ rootRevision: z18.string().regex(/^[A-Za-z0-9_-]{43}$/u)
1790
+ }).strict();
1791
+ var SessionFileReadResultDataSchema = z18.object({
1792
+ path: SessionFileReadDataSchema.shape.path,
1793
+ rootRevision: SessionFileReadDataSchema.shape.rootRevision,
1794
+ mediaType: z18.enum(SESSION_FILE_MEDIA_TYPES),
1795
+ originalByteLength: z18.number().int().min(0).max(SESSION_FILE_MAX_ORIGINAL_BYTES),
1796
+ // Canonical length after decompression, not the length of the transport bytes.
1797
+ byteLength: z18.number().int().min(0).max(SESSION_FILE_MAX_ORIGINAL_BYTES),
1798
+ encoding: z18.enum(["identity", "gzip"]),
1799
+ data: z18.string().max(SESSION_FILE_MAX_BASE64_LENGTH)
1800
+ }).strict().superRefine((result, context) => {
1801
+ const invalid = () => context.addIssue({ code: "custom", message: "Invalid file content" });
1802
+ if (result.encoding === "gzip" !== result.originalByteLength >= SESSION_FILE_GZIP_THRESHOLD_BYTES)
1803
+ invalid();
1804
+ if (result.mediaType === "image/webp" ? result.byteLength === 0 || result.byteLength > SESSION_FILE_MAX_IMAGE_BYTES || result.originalByteLength === 0 : result.byteLength !== result.originalByteLength)
1805
+ invalid();
1806
+ const base64 = result.data;
1807
+ const padding = base64.endsWith("==") ? 2 : base64.endsWith("=") ? 1 : 0;
1808
+ const length = base64.length / 4 * 3 - padding;
1809
+ if (base64.length % 4 !== 0 || !/^[A-Za-z0-9+/]*={0,2}$/u.test(base64) || length > SESSION_FILE_MAX_TRANSFER_BYTES || padding === 2 && !/[AQgw]==$/u.test(base64) || padding === 1 && !/[AEIMQUYcgkosw048]=$/u.test(base64) || (result.encoding === "identity" ? length !== result.byteLength : length < 20))
1810
+ invalid();
1811
+ });
1812
+ var SessionGitProjectSchema = z18.object({
1813
+ localRepositoryKey: z18.string().length(43).regex(/^[A-Za-z0-9_-]{43}$/),
1814
+ worktreeRoot: z18.string().min(1).max(SESSION_PROJECT_IDENTITY_MAX_PATH_LENGTH),
1815
+ mainWorktreeRoot: z18.string().min(1).max(SESSION_PROJECT_IDENTITY_MAX_PATH_LENGTH).optional(),
1816
+ gitRemoteUrl: z18.string().max(SESSION_PROJECT_IDENTITY_MAX_PATH_LENGTH).optional()
1817
+ }).strict();
1818
+ var SessionProjectIdentityRequestDataSchema = z18.object({}).strict();
1819
+ var SessionProjectIdentityResultDataSchema = z18.object({
1820
+ project: SessionGitProjectSchema.optional()
1821
+ }).strict();
1822
+
1823
+ // ../protocol/dist/sessions/session-resource.js
1824
+ import { z as z19 } from "zod";
1825
+ var SESSION_RESOURCE_READ_OPERATION = "session.resource.read";
1826
+ var SESSION_RESOURCE_READ_VERSION = 1;
1827
+ var SESSION_RESOURCE_MAX_ORIGINAL_BYTES = 499999;
1828
+ var SESSION_RESOURCE_GZIP_THRESHOLD_BYTES = 20 * 1024;
1829
+ var SESSION_RESOURCE_MAX_IMAGE_PIXELS = 16 * 1024 * 1024;
1830
+ var SESSION_RESOURCE_MAX_TRANSFER_BYTES = SESSION_RESOURCE_MAX_ORIGINAL_BYTES + 1024;
1831
+ var SESSION_RESOURCE_MAX_BASE64_LENGTH = Math.ceil(SESSION_RESOURCE_MAX_TRANSFER_BYTES / 3) * 4;
1832
+ var SESSION_RESOURCE_MAX_RESPONSE_BYTES = SESSION_RESOURCE_MAX_BASE64_LENGTH + 8192;
1833
+ var SESSION_RESOURCE_MEDIA_TYPES = [
1834
+ "image/jpeg",
1835
+ "image/png",
1836
+ "image/webp",
1837
+ "text/css",
1838
+ "text/javascript"
1839
+ ];
1840
+ var SessionResourceReadDataSchema = z19.object({
1841
+ path: z19.string().min(1).max(SESSION_DIRECTORY_MAX_PATH_LENGTH).refine(isSafeSessionDirectoryPath),
1842
+ rootRevision: z19.string().regex(/^[A-Za-z0-9_-]{43}$/u)
1843
+ }).strict();
1844
+ var SessionResourceReadResultDataSchema = z19.object({
1845
+ path: SessionResourceReadDataSchema.shape.path,
1846
+ rootRevision: SessionResourceReadDataSchema.shape.rootRevision,
1847
+ mediaType: z19.enum(SESSION_RESOURCE_MEDIA_TYPES),
1848
+ originalByteLength: z19.number().int().min(0).max(SESSION_RESOURCE_MAX_ORIGINAL_BYTES),
1849
+ byteLength: z19.number().int().min(0).max(SESSION_RESOURCE_MAX_ORIGINAL_BYTES),
1850
+ encoding: z19.enum(["identity", "gzip"]),
1851
+ data: z19.string().max(SESSION_RESOURCE_MAX_BASE64_LENGTH)
1852
+ }).strict().superRefine((result, context) => {
1853
+ const invalid = () => context.addIssue({ code: "custom", message: "Invalid resource content" });
1854
+ if (result.encoding === "gzip" !== result.originalByteLength >= SESSION_RESOURCE_GZIP_THRESHOLD_BYTES || result.byteLength !== result.originalByteLength || result.mediaType.startsWith("image/") && result.byteLength === 0)
1855
+ invalid();
1856
+ const base64 = result.data;
1857
+ const padding = base64.endsWith("==") ? 2 : base64.endsWith("=") ? 1 : 0;
1858
+ const length = base64.length / 4 * 3 - padding;
1859
+ if (base64.length % 4 !== 0 || !/^[A-Za-z0-9+/]*={0,2}$/u.test(base64) || length > SESSION_RESOURCE_MAX_TRANSFER_BYTES || padding === 2 && !/[AQgw]==$/u.test(base64) || padding === 1 && !/[AEIMQUYcgkosw048]=$/u.test(base64) || (result.encoding === "identity" ? length !== result.byteLength : length < 20))
1860
+ invalid();
1861
+ });
1862
+
1863
+ // ../protocol/dist/sessions/session-rename.js
1864
+ import { z as z20 } from "zod";
1865
+ var SESSION_RENAME_OPERATION = "session.rename";
1866
+ var SESSION_RENAME_VERSION = 1;
1867
+ var SESSION_RENAME_CAPABILITY = sessionCommunicationOperationCapability(SESSION_RENAME_OPERATION, SESSION_RENAME_VERSION);
1868
+ var SESSION_NAME_MAX_LENGTH = 100;
1869
+ var SessionNameSchema = z20.string().regex(/^[^\u0000-\u001f\u007f]*$/u).trim().min(1).max(SESSION_NAME_MAX_LENGTH);
1870
+ var SessionRenameDataSchema = z20.object({ name: SessionNameSchema }).strict();
1871
+ var SessionRenameResultDataSchema = z20.object({ name: SessionNameSchema }).strict();
1872
+
1873
+ // ../protocol/dist/sessions/group-chat.js
1874
+ import { z as z21 } from "zod";
1875
+ var GROUP_CHAT_CREATE_OPERATION = "group-chat.create";
1876
+ var GROUP_CHAT_CREATE_VERSION = 1;
1877
+ var GROUP_CHAT_CREATE_CAPABILITY = sessionCommunicationOperationCapability(GROUP_CHAT_CREATE_OPERATION, GROUP_CHAT_CREATE_VERSION);
1878
+ var GroupChatCreateDataSchema = z21.object({
1879
+ peerSessionId: IdSchema
1880
+ }).strict();
1881
+ var GroupChatCreateResultDataSchema = z21.object({
1882
+ session: SessionSummarySchema.refine((session) => session.groupChat !== void 0, "Group creation must return a virtual group session")
1883
+ }).strict();
1884
+
1885
+ // ../protocol/dist/sessions/prompts.js
1886
+ import { z as z22 } from "zod";
1887
+ var SESSION_FILE_ATTACHMENTS_CAPABILITY = "session-file-attachments";
1888
+ var SESSION_PROMPT_SUBMISSION_TIME_CAPABILITY = "session-prompt-submission-time";
1889
+ var MAX_PROMPT_IMAGE_BYTES = 3 * 1024 * 1024;
1890
+ var SessionPromptRequestSchema = z22.object({
1891
+ requestId: IdSchema,
1892
+ operationId: IdSchema,
1893
+ machineId: IdSchema,
1894
+ sessionId: IdSchema,
1895
+ prompt: z22.string().trim().max(1e5),
1896
+ attachments: z22.array(PromptImageAttachmentSchema).max(4).optional(),
1897
+ fileAttachments: z22.array(PromptFileAttachmentSchema).max(4).optional(),
1898
+ mode: z22.enum(["enqueue", "immediate"]).default("enqueue")
1899
+ }).strict().superRefine((request, context) => {
1900
+ if (request.prompt.length === 0 && (request.attachments?.length ?? 0) === 0 && (request.fileAttachments?.length ?? 0) === 0) {
1901
+ context.addIssue({
1902
+ code: "custom",
1903
+ path: ["prompt"],
1904
+ message: "A prompt or attachment is required"
1905
+ });
1906
+ }
1907
+ const attachments = [...request.attachments ?? [], ...request.fileAttachments ?? []];
1908
+ if (attachments.length > 4) {
1909
+ context.addIssue({
1910
+ code: "custom",
1911
+ path: ["fileAttachments"],
1912
+ message: "A prompt supports at most 4 attachments"
1913
+ });
1914
+ }
1915
+ const attachmentBytes = attachments.reduce((total, attachment) => total + attachment.byteLength, 0) ?? 0;
1916
+ if (attachmentBytes > MAX_PROMPT_IMAGE_BYTES) {
1917
+ context.addIssue({
1918
+ code: "custom",
1919
+ path: ["attachments"],
1920
+ message: "Prompt attachments exceed the 3 MiB total limit"
1921
+ });
1922
+ }
1923
+ });
1924
+ var SessionPromptResultSchema = z22.discriminatedUnion("ok", [
1925
+ z22.object({
1926
+ ok: z22.literal(true),
1927
+ requestId: IdSchema,
1928
+ operationId: IdSchema,
1929
+ machineId: IdSchema,
1930
+ sessionId: IdSchema,
1931
+ messageId: IdSchema,
1932
+ mode: z22.enum(["enqueue", "immediate"]),
1933
+ deliveryState: z22.enum(["queued", "processing"]),
1934
+ // Negotiated lower bound from the native event clock. Exact text and history
1935
+ // ownership checks still apply; this is not an identity or proof of persistence.
1936
+ submittedAt: IsoDateSchema.optional()
1937
+ }),
1938
+ z22.object({
1939
+ ok: z22.literal(false),
1940
+ requestId: IdSchema,
1941
+ operationId: IdSchema,
1942
+ machineId: IdSchema,
1943
+ sessionId: IdSchema,
1944
+ error: ProtocolFailureSchema
1945
+ })
1946
+ ]);
1947
+ var SessionActivityUpdateSchema = z22.object({
1948
+ userId: IdSchema,
1949
+ machineId: IdSchema,
1950
+ sessionId: IdSchema,
1951
+ state: z22.enum(["working", "idle"]),
1952
+ occurredAt: IsoDateSchema,
1953
+ assistantPreview: SessionAssistantPreviewSchema.optional(),
1954
+ userPreview: SessionUserPreviewSchema.optional()
1955
+ });
1956
+ var SessionAbortRequestSchema = z22.object({
1957
+ requestId: IdSchema,
1958
+ machineId: IdSchema,
1959
+ sessionId: IdSchema
1960
+ });
1961
+ var SessionAbortResultSchema = z22.discriminatedUnion("ok", [
1962
+ z22.object({
1963
+ ok: z22.literal(true),
1964
+ requestId: IdSchema,
1965
+ machineId: IdSchema,
1966
+ sessionId: IdSchema
1967
+ }),
1968
+ z22.object({
1969
+ ok: z22.literal(false),
1970
+ requestId: IdSchema,
1971
+ machineId: IdSchema,
1972
+ sessionId: IdSchema,
1973
+ error: ProtocolFailureSchema
1974
+ })
1975
+ ]);
1976
+
1977
+ // ../protocol/dist/conversation/timeline-sync.js
1978
+ import { z as z23 } from "zod";
1979
+ var TIMELINE_SYNC_OPERATION = "session.timeline.sync";
1980
+ var TIMELINE_IMAGE_OPERATION = "session.image.read";
1981
+ var TIMELINE_SYNC_VERSION = 1;
1982
+ var TIMELINE_SYNC_MAX_EVENTS = 128;
1983
+ var TIMELINE_SYNC_MAX_BYTES = 6 * 1024 * 1024;
1984
+ var TIMELINE_IMAGE_CHUNK_BYTES = 48 * 1024;
1985
+ var TIMELINE_IMAGE_MAX_BYTES = 3 * 1024 * 1024;
1986
+ var identity = z23.string().min(1).max(256);
1987
+ var sequence = z23.number().int().min(0).max(Number.MAX_SAFE_INTEGER);
1988
+ var hash = z23.string().regex(/^[a-f0-9]{64}$/u);
1989
+ var TimelineWatermarkSchema = z23.object({
1990
+ epoch: identity,
1991
+ sequence
1992
+ }).strict();
1993
+ var TimelineSyncRequestSchema = z23.object({
1994
+ watermark: TimelineWatermarkSchema.optional(),
1995
+ waitMs: z23.number().int().min(0).max(2e4).optional(),
1996
+ resume: z23.boolean().optional()
1997
+ }).strict();
1998
+ var TimelineTextAppendSchema = z23.object({
1999
+ itemId: identity,
2000
+ baseRevision: z23.number().int().positive(),
2001
+ revision: z23.number().int().positive(),
2002
+ appendText: z23.string().min(1).max(5e5),
2003
+ sourceEventIds: z23.array(identity).min(1).max(1e3).optional(),
2004
+ sourceMessageIds: z23.array(identity).min(1).max(1e3).optional(),
2005
+ sourceInteractionIds: z23.array(identity).min(1).max(1e3).optional()
2006
+ }).strict();
2007
+ var TimelineSyncEventSchema = z23.discriminatedUnion("kind", [
2008
+ z23.object({ kind: z23.literal("upsert"), sequence, item: ConversationItemSchema }).strict(),
2009
+ z23.object({ kind: z23.literal("append"), sequence, append: TimelineTextAppendSchema }).strict(),
2010
+ z23.object({
2011
+ kind: z23.literal("step"),
2012
+ sequence,
2013
+ upsert: ConversationActivityStepUpsertSchema
2014
+ }).strict()
2015
+ ]);
2016
+ var TimelineResyncReasonSchema = z23.enum([
2017
+ "initial",
2018
+ "epoch-changed",
2019
+ "evicted",
2020
+ "gap",
2021
+ "clear",
2022
+ "rewind",
2023
+ "oversized"
2024
+ ]);
2025
+ var TimelineSyncResponseSchema = z23.discriminatedUnion("status", [
2026
+ z23.object({
2027
+ status: z23.literal("snapshot"),
2028
+ watermark: TimelineWatermarkSchema,
2029
+ page: SessionTimelinePageSchema
2030
+ }).strict(),
2031
+ z23.object({
2032
+ status: z23.literal("replay"),
2033
+ watermark: TimelineWatermarkSchema,
2034
+ afterSequence: sequence,
2035
+ events: z23.array(TimelineSyncEventSchema).max(TIMELINE_SYNC_MAX_EVENTS),
2036
+ hasMore: z23.boolean()
2037
+ }).strict(),
2038
+ z23.object({
2039
+ status: z23.literal("resync"),
2040
+ epoch: identity,
2041
+ reason: TimelineResyncReasonSchema
2042
+ }).strict()
2043
+ ]);
2044
+ var TimelineImageRequestSchema = z23.object({
2045
+ sha256: hash,
2046
+ offset: z23.number().int().min(0).max(TIMELINE_IMAGE_MAX_BYTES - 1)
2047
+ }).strict();
2048
+ var TimelineImageChunkSchema = z23.object({
2049
+ sha256: hash,
2050
+ offset: z23.number().int().min(0).max(TIMELINE_IMAGE_MAX_BYTES - 1),
2051
+ totalBytes: z23.number().int().positive().max(TIMELINE_IMAGE_MAX_BYTES),
2052
+ mimeType: z23.enum(["image/gif", "image/jpeg", "image/png", "image/webp"]),
2053
+ data: z23.string().min(4).max(Math.ceil(TIMELINE_IMAGE_CHUNK_BYTES / 3) * 4).regex(/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/u),
2054
+ eof: z23.boolean()
2055
+ }).strict().superRefine((chunk, context) => {
2056
+ const padding = chunk.data.endsWith("==") ? 2 : chunk.data.endsWith("=") ? 1 : 0;
2057
+ const length = chunk.data.length / 4 * 3 - padding;
2058
+ const end = chunk.offset + length;
2059
+ if (end > chunk.totalBytes || chunk.eof !== (end === chunk.totalBytes) || !chunk.eof && length !== TIMELINE_IMAGE_CHUNK_BYTES) {
2060
+ context.addIssue({ code: "custom", message: "Image chunk length or completion does not match its total" });
2061
+ }
2062
+ });
2063
+
2064
+ // ../protocol/dist/workbench.js
2065
+ import { z as z25 } from "zod";
2066
+
2067
+ // ../protocol/dist/schedules.js
2068
+ import { z as z24 } from "zod";
2069
+ var SCHEDULES_CAPABILITY = "session-schedules-v1";
2070
+ var SCHEDULE_OPERATIONS = [
2071
+ "schedule.snapshot",
2072
+ "schedule.create",
2073
+ "schedule.delete",
2074
+ "schedule.draft.dismiss",
2075
+ "schedule.resume"
2076
+ ];
2077
+ var Id = z24.string().min(1).max(256);
2078
+ var NativeId = z24.number().int().positive().max(Number.MAX_SAFE_INTEGER);
2079
+ var Time = z24.iso.datetime({ offset: true });
2080
+ var WorkbenchScheduleRuleSchema = z24.discriminatedUnion("kind", [
2081
+ z24.object({ kind: z24.literal("once"), at: Time }).strict(),
2082
+ z24.object({
2083
+ kind: z24.literal("interval"),
2084
+ seconds: z24.number().int().min(10).max(86400),
2085
+ recurring: z24.boolean().optional()
2086
+ }).strict(),
2087
+ z24.object({
2088
+ kind: z24.literal("cron"),
2089
+ expression: z24.string().trim().min(9).max(256).regex(/^\S+(?: +\S+){4}$/),
2090
+ timezone: z24.string().min(1).max(128).regex(/^[A-Za-z0-9_+./-]+$/)
2091
+ }).strict()
2092
+ ]);
2093
+ var Content = {
2094
+ rule: WorkbenchScheduleRuleSchema,
2095
+ prompt: z24.string().max(16e3).describe("The execution prompt, or ONLY the user's exact arguments when skill is set. Do not include the skill name, slash prefix, scheduling instructions, or extra explanation in skill arguments."),
2096
+ skill: z24.string().min(1).max(256).regex(/^[A-Za-z0-9][A-Za-z0-9_.:-]*$/).optional().describe("A genuine callable skill name from this session, without the leading slash. Set this field when the user requests a skill; put only its exact arguments in prompt.")
2097
+ };
2098
+ var WorkbenchScheduleProposalSchema = z24.object(Content).strict().refine((value) => value.prompt.trim().length > 0 || value.skill !== void 0, { message: "A prompt or skill is required" });
2099
+ var WorkbenchScheduleDraftSchema = z24.object({
2100
+ id: z24.uuid(),
2101
+ createdAt: Time,
2102
+ ...Content
2103
+ }).strict();
2104
+ var WorkbenchScheduleEntrySchema = z24.object({
2105
+ id: NativeId,
2106
+ prompt: z24.string().max(1e5),
2107
+ displayPrompt: z24.string().max(1e5).optional(),
2108
+ recurring: z24.boolean(),
2109
+ nextRunAt: Time,
2110
+ intervalMs: z24.number().int().positive().optional(),
2111
+ cron: z24.string().max(256).optional(),
2112
+ timezone: z24.string().max(128).optional(),
2113
+ at: Time.optional()
2114
+ }).strict();
2115
+ var WorkbenchScheduleResultSchema = z24.object({
2116
+ id: Id,
2117
+ scheduleId: NativeId,
2118
+ triggerEventId: Id,
2119
+ time: Time,
2120
+ prompt: z24.string().max(16e3),
2121
+ status: z24.enum(["reply", "error", "merged", "pending", "unknown"]),
2122
+ reply: z24.string().max(16e3).optional(),
2123
+ replyEventId: Id.optional(),
2124
+ error: z24.string().max(1024).optional()
2125
+ }).strict();
2126
+ var WorkbenchScheduleSnapshotSchema = z24.object({
2127
+ state: z24.enum(["active", "needs-resume"]),
2128
+ workingDirectory: z24.string().max(32768).optional(),
2129
+ timezone: z24.string().max(128).optional(),
2130
+ entries: z24.array(WorkbenchScheduleEntrySchema).max(256),
2131
+ drafts: z24.array(WorkbenchScheduleDraftSchema).max(100),
2132
+ results: z24.array(WorkbenchScheduleResultSchema).max(100),
2133
+ historyTruncated: z24.boolean(),
2134
+ sampledAt: Time
2135
+ }).strict();
2136
+ var Submission = {
2137
+ operationId: z24.uuid(),
2138
+ operationCreatedAt: z24.iso.datetime(),
2139
+ expectedAgentRunId: Id
2140
+ };
2141
+ var WorkbenchScheduleCreateRequestSchema = z24.object({
2142
+ ...Submission,
2143
+ ...Content,
2144
+ draftId: z24.uuid().optional()
2145
+ }).strict().refine((value) => value.prompt.trim().length > 0 || value.skill !== void 0, { message: "A prompt or skill is required" });
2146
+ var WorkbenchScheduleCreateResultSchema = z24.object({
2147
+ snapshot: WorkbenchScheduleSnapshotSchema,
2148
+ verified: z24.boolean()
2149
+ }).strict();
2150
+ var WorkbenchScheduleDeleteRequestSchema = z24.object({
2151
+ ...Submission,
2152
+ id: NativeId
2153
+ }).strict();
2154
+ var WorkbenchScheduleDeleteResultSchema = z24.object({
2155
+ snapshot: WorkbenchScheduleSnapshotSchema,
2156
+ removed: z24.boolean()
2157
+ }).strict();
2158
+ var WorkbenchScheduleDraftDismissRequestSchema = z24.object({
2159
+ ...Submission,
2160
+ draftId: z24.uuid()
2161
+ }).strict();
2162
+ var ScheduleAndroidSchemas = {
2163
+ WorkbenchScheduleRule: WorkbenchScheduleRuleSchema,
2164
+ WorkbenchScheduleProposal: WorkbenchScheduleProposalSchema,
2165
+ WorkbenchScheduleDraft: WorkbenchScheduleDraftSchema,
2166
+ WorkbenchScheduleEntry: WorkbenchScheduleEntrySchema,
2167
+ WorkbenchScheduleResult: WorkbenchScheduleResultSchema,
2168
+ WorkbenchScheduleSnapshot: WorkbenchScheduleSnapshotSchema,
2169
+ WorkbenchScheduleCreateRequest: WorkbenchScheduleCreateRequestSchema,
2170
+ WorkbenchScheduleCreateResult: WorkbenchScheduleCreateResultSchema,
2171
+ WorkbenchScheduleDeleteRequest: WorkbenchScheduleDeleteRequestSchema,
2172
+ WorkbenchScheduleDeleteResult: WorkbenchScheduleDeleteResultSchema,
2173
+ WorkbenchScheduleDraftDismissRequest: WorkbenchScheduleDraftDismissRequestSchema
2174
+ };
2175
+
2176
+ // ../protocol/dist/workbench.js
2177
+ var Id2 = z25.string().trim().min(1).max(256);
2178
+ var Text = z25.string().max(1e5);
2179
+ var Count = z25.number().int().nonnegative().max(Number.MAX_SAFE_INTEGER);
2180
+ var Failure = z25.object({ code: Id2, message: z25.string().min(1).max(1024) }).strict();
2181
+ var WORKBENCH_VERSION = 1;
2182
+ var RESEARCH_CHAT_CAPABILITY = "research-chat-v1";
2183
+ var WORKBENCH_OPERATIONS = [
2184
+ "operation.get",
2185
+ "question.ask",
2186
+ "research.create",
2187
+ "research.list",
2188
+ "research.timeline",
2189
+ "research.send",
2190
+ "research.abort",
2191
+ "research.delete",
2192
+ "command.list",
2193
+ "command.invoke",
2194
+ "queue.snapshot",
2195
+ "queue.mutate",
2196
+ "insights.read",
2197
+ "context.compact",
2198
+ ...SCHEDULE_OPERATIONS
2199
+ ];
2200
+ var workbenchCapability = (operation) => `${operation}.v${WORKBENCH_VERSION}`;
2201
+ var Submission2 = {
2202
+ operationId: z25.uuid(),
2203
+ operationCreatedAt: z25.iso.datetime(),
2204
+ expectedAgentRunId: Id2
2205
+ };
2206
+ var WorkbenchOperationGetSchema = z25.object({ operationId: z25.uuid() }).strict();
2207
+ var WorkbenchOperationStatusSchema = z25.object({
2208
+ operationId: z25.uuid(),
2209
+ operation: z25.enum(WORKBENCH_OPERATIONS),
2210
+ agentRunId: Id2,
2211
+ state: z25.enum(["running", "succeeded", "failed", "uncertain", "result-expired"]),
2212
+ result: z25.record(z25.string(), z25.json()).optional(),
2213
+ error: Failure.optional()
2214
+ }).strict().superRefine((value, context) => {
2215
+ if (value.state === "succeeded" !== (value.result !== void 0) || (value.state === "failed" || value.state === "uncertain") !== (value.error !== void 0)) {
2216
+ context.addIssue({ code: "custom", message: "Invalid operation state payload" });
2217
+ }
2218
+ });
2219
+ var WorkbenchAskRequestSchema = z25.object({
2220
+ ...Submission2,
2221
+ question: z25.string().trim().min(1).max(16e3)
2222
+ }).strict();
2223
+ var WorkbenchAskResultSchema = z25.object({ answer: Text }).strict();
2224
+ var WorkbenchEmptyRequestSchema = z25.object({}).strict();
2225
+ var WorkbenchSubmitRequestSchema = z25.object(Submission2).strict();
2226
+ var WorkbenchResearchCreateRequestSchema = z25.object({
2227
+ ...Submission2,
2228
+ title: z25.string().trim().min(1).max(120),
2229
+ question: z25.string().trim().min(1).max(16e3),
2230
+ sourceItemId: Id2.optional(),
2231
+ deferInitialPrompt: z25.literal(true).optional()
2232
+ }).strict();
2233
+ var WorkbenchResearchThreadSchema = z25.object({
2234
+ sessionId: Id2,
2235
+ parentSessionId: Id2,
2236
+ title: z25.string().min(1).max(120),
2237
+ createdAt: z25.iso.datetime(),
2238
+ contextAnchor: Id2.optional(),
2239
+ contextTruncated: z25.boolean(),
2240
+ detached: z25.boolean(),
2241
+ state: z25.enum(["creating", "ready", "failed"])
2242
+ }).strict();
2243
+ var WorkbenchResearchCreateResultSchema = z25.object({
2244
+ thread: WorkbenchResearchThreadSchema
2245
+ }).strict();
2246
+ var WorkbenchResearchListResultSchema = z25.object({
2247
+ threads: z25.array(WorkbenchResearchThreadSchema).max(100)
2248
+ }).strict();
2249
+ var WorkbenchResearchTimelineRequestSchema = z25.object({
2250
+ cursor: Id2.optional()
2251
+ }).strict();
2252
+ var WorkbenchResearchSendRequestSchema = z25.object({
2253
+ ...Submission2,
2254
+ prompt: z25.string().trim().min(1).max(16e3)
2255
+ }).strict();
2256
+ var WorkbenchResearchSendResultSchema = z25.object({ messageId: Id2 }).strict();
2257
+ var WorkbenchCompletedResultSchema = z25.object({ completed: z25.boolean() }).strict();
2258
+ var WorkbenchCommandSchema = z25.object({
2259
+ name: z25.string().min(1).max(260),
2260
+ description: z25.string().max(4096),
2261
+ argumentHint: z25.string().max(1024).optional(),
2262
+ kind: z25.enum(["builtin", "skill", "client"]),
2263
+ allowDuringExecution: z25.boolean(),
2264
+ supported: z25.boolean(),
2265
+ reason: z25.string().max(1024).optional()
2266
+ }).strict();
2267
+ var WorkbenchCommandListResultSchema = z25.object({
2268
+ commands: z25.array(WorkbenchCommandSchema).max(512)
2269
+ }).strict();
2270
+ var WorkbenchCommandInvokeRequestSchema = z25.object({
2271
+ ...Submission2,
2272
+ name: z25.string().trim().min(1).max(260),
2273
+ input: z25.string().max(16e3)
2274
+ }).strict();
2275
+ var WorkbenchCommandChoiceSchema = z25.object({
2276
+ name: z25.string().min(1).max(260),
2277
+ label: z25.string().min(1).max(1024),
2278
+ input: z25.string().max(16e3)
2279
+ }).strict();
2280
+ var WorkbenchCommandResultSchema = z25.discriminatedUnion("kind", [
2281
+ z25.object({ kind: z25.literal("text"), text: Text }).strict(),
2282
+ z25.object({ kind: z25.literal("completed") }).strict(),
2283
+ z25.object({ kind: z25.literal("sent"), messageId: Id2 }).strict(),
2284
+ z25.object({
2285
+ kind: z25.literal("select-subcommand"),
2286
+ choices: z25.array(WorkbenchCommandChoiceSchema).min(1).max(100)
2287
+ }).strict()
2288
+ ]);
2289
+ var WorkbenchQueueItemSchema = z25.object({
2290
+ id: Id2,
2291
+ kind: z25.string().min(1).max(64),
2292
+ texts: z25.array(z25.string().max(1e5)).min(1).max(100),
2293
+ actions: z25.array(z25.enum(["edit", "remove", "move", "send-now"])).max(4)
2294
+ }).strict();
2295
+ var WorkbenchQueueSnapshotSchema = z25.object({
2296
+ generation: Id2,
2297
+ revision: Id2,
2298
+ items: z25.array(WorkbenchQueueItemSchema).max(512),
2299
+ steeringMessages: z25.array(z25.string().max(1e5)).max(512)
2300
+ }).strict();
2301
+ var QueueMutation = {
2302
+ ...Submission2,
2303
+ generation: Id2,
2304
+ revision: Id2,
2305
+ id: Id2
2306
+ };
2307
+ var WorkbenchQueueMutationRequestSchema = z25.discriminatedUnion("action", [
2308
+ z25.object({ ...QueueMutation, action: z25.literal("edit"), prompt: z25.string().trim().min(1).max(1e5) }).strict(),
2309
+ z25.object({ ...QueueMutation, action: z25.literal("remove") }).strict(),
2310
+ z25.object({ ...QueueMutation, action: z25.literal("move"), toPosition: z25.number().int().min(0).max(511) }).strict(),
2311
+ z25.object({ ...QueueMutation, action: z25.literal("send-now") }).strict()
2312
+ ]);
2313
+ var WorkbenchQueueMutationResultSchema = z25.object({
2314
+ changed: z25.boolean(),
2315
+ snapshot: WorkbenchQueueSnapshotSchema
2316
+ }).strict();
2317
+ var WorkbenchTokenMetricSchema = z25.object({
2318
+ kind: z25.string().min(1).max(128),
2319
+ count: Count
2320
+ }).strict();
2321
+ var WorkbenchModelUsageSchema = z25.object({
2322
+ model: Id2,
2323
+ requests: Count,
2324
+ premiumRequestCost: z25.number().finite().nonnegative(),
2325
+ tokens: z25.array(WorkbenchTokenMetricSchema).max(32)
2326
+ }).strict();
2327
+ var WorkbenchContextSchema = z25.object({
2328
+ currentTokens: Count,
2329
+ tokenLimit: Count,
2330
+ systemTokens: Count.optional(),
2331
+ conversationTokens: Count.optional(),
2332
+ toolTokens: Count.optional()
2333
+ }).strict();
2334
+ var WorkbenchInsightsSchema = z25.object({
2335
+ sampledAt: z25.iso.datetime(),
2336
+ generation: Id2,
2337
+ model: Id2.optional(),
2338
+ totalUserRequests: Count,
2339
+ premiumRequestCost: z25.number().finite().nonnegative(),
2340
+ nanoAiu: z25.string().regex(/^\d+$/).max(40).optional(),
2341
+ tokens: z25.array(WorkbenchTokenMetricSchema).max(32),
2342
+ models: z25.array(WorkbenchModelUsageSchema).max(100),
2343
+ context: WorkbenchContextSchema.optional(),
2344
+ canCompact: z25.boolean(),
2345
+ compactUnavailableReason: z25.string().max(1024).optional()
2346
+ }).strict();
2347
+ var WorkbenchCompactResultSchema = z25.object({
2348
+ success: z25.boolean(),
2349
+ tokensRemoved: Count,
2350
+ messagesRemoved: Count
2351
+ }).strict();
2352
+ var WorkbenchAndroidSchemas = {
2353
+ WorkbenchOperationGet: WorkbenchOperationGetSchema,
2354
+ WorkbenchOperationStatus: WorkbenchOperationStatusSchema,
2355
+ WorkbenchAskRequest: WorkbenchAskRequestSchema,
2356
+ WorkbenchAskResult: WorkbenchAskResultSchema,
2357
+ WorkbenchSubmitRequest: WorkbenchSubmitRequestSchema,
2358
+ WorkbenchResearchCreateRequest: WorkbenchResearchCreateRequestSchema,
2359
+ WorkbenchResearchThread: WorkbenchResearchThreadSchema,
2360
+ WorkbenchResearchCreateResult: WorkbenchResearchCreateResultSchema,
2361
+ WorkbenchResearchListResult: WorkbenchResearchListResultSchema,
2362
+ WorkbenchResearchTimelineRequest: WorkbenchResearchTimelineRequestSchema,
2363
+ WorkbenchResearchSendRequest: WorkbenchResearchSendRequestSchema,
2364
+ WorkbenchResearchSendResult: WorkbenchResearchSendResultSchema,
2365
+ WorkbenchCompletedResult: WorkbenchCompletedResultSchema,
2366
+ WorkbenchCommand: WorkbenchCommandSchema,
2367
+ WorkbenchCommandListResult: WorkbenchCommandListResultSchema,
2368
+ WorkbenchCommandInvokeRequest: WorkbenchCommandInvokeRequestSchema,
2369
+ WorkbenchCommandChoice: WorkbenchCommandChoiceSchema,
2370
+ WorkbenchCommandResult: WorkbenchCommandResultSchema,
2371
+ WorkbenchQueueItem: WorkbenchQueueItemSchema,
2372
+ WorkbenchQueueSnapshot: WorkbenchQueueSnapshotSchema,
2373
+ WorkbenchQueueMutationRequest: WorkbenchQueueMutationRequestSchema,
2374
+ WorkbenchQueueMutationResult: WorkbenchQueueMutationResultSchema,
2375
+ WorkbenchTokenMetric: WorkbenchTokenMetricSchema,
2376
+ WorkbenchModelUsage: WorkbenchModelUsageSchema,
2377
+ WorkbenchContext: WorkbenchContextSchema,
2378
+ WorkbenchInsights: WorkbenchInsightsSchema,
2379
+ WorkbenchCompactResult: WorkbenchCompactResultSchema
2380
+ };
2381
+
2382
+ // ../protocol/dist/codegen/android-schemas.js
2383
+ var AndroidProtocolSchemas = {
2384
+ ...WorkbenchAndroidSchemas,
2385
+ ...ScheduleAndroidSchemas,
2386
+ SessionCommunication: SessionCommunicationSchema,
2387
+ SessionRenameData: SessionRenameDataSchema,
2388
+ SessionRenameResultData: SessionRenameResultDataSchema,
2389
+ SessionDirectoryListData: SessionDirectoryListDataSchema,
2390
+ SessionDirectoryListResultData: SessionDirectoryListResultDataSchema,
2391
+ SessionFileReadData: SessionFileReadDataSchema,
2392
+ SessionFileReadResultData: SessionFileReadResultDataSchema,
2393
+ SessionResourceReadData: SessionResourceReadDataSchema,
2394
+ SessionResourceReadResultData: SessionResourceReadResultDataSchema,
2395
+ SessionDirectoryListRequest: SessionDirectoryListRequestSchema,
2396
+ SessionDirectoryEntry: SessionDirectoryEntrySchema,
2397
+ SessionDirectoryListResponse: SessionDirectoryListResponseSchema,
2398
+ SessionGitProject: SessionGitProjectSchema,
2399
+ SessionProjectIdentityResultData: SessionProjectIdentityResultDataSchema,
2400
+ V2SocketAuth: V2SocketAuthSchema,
2401
+ SecureMessage: SecureMessageSchema,
2402
+ SecureDeliveryError: SecureDeliveryErrorSchema,
2403
+ AuthUser: AuthUserSchema,
2404
+ LoginRequest: LoginRequestSchema,
2405
+ LoginResult: LoginResultSchema,
2406
+ PcAccountRequest: PcAccountRequestSchema,
2407
+ PcAccountResult: PcAccountResultSchema,
2408
+ PairingExchangeRequest: PairingExchangeRequestSchema,
2409
+ PairingExchangeResult: PairingExchangeResultSchema,
2410
+ MobileTransferMachine: MobileTransferMachineSchema,
2411
+ MobileTransferPayload: MobileTransferPayloadSchema,
2412
+ MobileTransferPart: MobileTransferPartSchema,
2413
+ MobileTransferUploadRequest: MobileTransferUploadRequestSchema,
2414
+ MobileTransferUploadResult: MobileTransferUploadResultSchema,
2415
+ MobileTransferDownloadResult: MobileTransferDownloadResultSchema,
2416
+ MobileLoginRequest: MobileLoginRequestSchema,
2417
+ MachinePresence: MachinePresenceSchema,
2418
+ MachineOffline: MachineOfflineSchema,
2419
+ MachineListRequest: MachineListRequestSchema,
2420
+ MachineListResult: MachineListResultSchema,
2421
+ SessionSummary: SessionSummarySchema,
2422
+ GroupChatParticipant: GroupChatParticipantSchema,
2423
+ GroupChatInfo: GroupChatInfoSchema,
2424
+ GroupChatCreateData: GroupChatCreateDataSchema,
2425
+ GroupChatCreateResultData: GroupChatCreateResultDataSchema,
2426
+ SessionsSnapshot: SessionsSnapshotSchema,
2427
+ SessionListRequest: SessionListRequestSchema,
2428
+ SessionListResult: SessionListResultSchema,
2429
+ WorkspaceOption: WorkspaceOptionSchema,
2430
+ CopilotModelOption: CopilotModelOptionSchema,
2431
+ SessionOptionsRequest: SessionOptionsRequestSchema,
2432
+ SessionOptionsResult: SessionOptionsResultSchema,
2433
+ SessionCreateRequest: SessionCreateRequestSchema,
2434
+ SessionCreateResult: SessionCreateResultSchema,
2435
+ SessionDeleteRequest: SessionDeleteRequestSchema,
2436
+ SessionDeleteResult: SessionDeleteResultSchema,
2437
+ SessionConfigureRequest: SessionConfigureRequestSchema,
2438
+ SessionConfigureResult: SessionConfigureResultSchema,
2439
+ SessionRemoteRequest: SessionRemoteRequestSchema,
2440
+ SessionRemoteStatus: SessionRemoteStatusSchema,
2441
+ SessionRemoteResult: SessionRemoteResultSchema,
2442
+ ConversationAttachment: ConversationAttachmentSchema,
2443
+ PromptImageAttachment: PromptImageAttachmentSchema,
2444
+ ConversationActivityStep: ConversationActivityStepSchema,
2445
+ ConversationPlanTodo: ConversationPlanTodoSchema,
2446
+ ConversationItem: ConversationItemSchema,
2447
+ SessionAssistantPreview: SessionAssistantPreviewSchema,
2448
+ SessionUserPreview: SessionUserPreviewSchema,
2449
+ SessionTimelinePageRequest: SessionTimelinePageRequestSchema,
2450
+ SessionWatchRequest: SessionWatchRequestSchema,
2451
+ SessionWatchResult: SessionWatchResultSchema,
2452
+ SessionTimelinePage: SessionTimelinePageSchema,
2453
+ SessionTimelinePageResult: SessionTimelinePageResultSchema,
2454
+ TimelineWatermark: TimelineWatermarkSchema,
2455
+ TimelineSyncRequest: TimelineSyncRequestSchema,
2456
+ TimelineTextAppend: TimelineTextAppendSchema,
2457
+ TimelineSyncEvent: TimelineSyncEventSchema,
2458
+ TimelineSyncResponse: TimelineSyncResponseSchema,
2459
+ TimelineImageRequest: TimelineImageRequestSchema,
2460
+ TimelineImageChunk: TimelineImageChunkSchema,
2461
+ SessionPromptRequest: SessionPromptRequestSchema,
2462
+ SessionPromptResult: SessionPromptResultSchema,
2463
+ SessionActivityUpdate: SessionActivityUpdateSchema,
2464
+ SessionAbortRequest: SessionAbortRequestSchema,
2465
+ SessionAbortResult: SessionAbortResultSchema,
2466
+ ConversationItemUpsert: ConversationItemUpsertSchema,
2467
+ ConversationActivityStepUpsert: ConversationActivityStepUpsertSchema,
2468
+ SessionTimelineInvalidated: SessionTimelineInvalidatedSchema,
2469
+ InteractionFormField: InteractionFormFieldSchema,
2470
+ InteractionRequest: InteractionRequestSchema,
2471
+ InteractionResponse: InteractionResponseSchema,
2472
+ InteractionRequestPayload: InteractionRequestPayloadSchema,
2473
+ InteractionRespondRequest: InteractionRespondRequestSchema,
2474
+ InteractionRespondResult: InteractionRespondResultSchema,
2475
+ PermissionRequestPayload: PermissionRequestPayloadSchema,
2476
+ PermissionRespondRequest: PermissionRespondRequestSchema,
2477
+ PermissionRespondResult: PermissionRespondResultSchema,
2478
+ ProtocolError: ProtocolErrorSchema
2479
+ };
2480
+
2481
+ export {
2482
+ PROTOCOL_VERSION,
2483
+ TRANSPORT_V2,
2484
+ SECURE_SOCKET_IO_NAMESPACE,
2485
+ IdSchema,
2486
+ OperationAckSchema,
2487
+ PAIRING_URI_SCHEME,
2488
+ PAIRING_URI_HOST,
2489
+ PairingCreateResultSchema,
2490
+ SECURE_MESSAGE_MAX_CIPHERTEXT_LENGTH,
2491
+ SecureMessageSchema,
2492
+ MOBILE_CONNECTED_REPLAY_CAPABILITY,
2493
+ MACHINE_HELLO_SDK_COMPAT_VERSION,
2494
+ MachineHelloSchema,
2495
+ MobileDisconnectedSchema,
2496
+ MobileConnectedSchema,
2497
+ PC_PEER_CHAT_CAPABILITY,
2498
+ PeerMessageSchema,
2499
+ PeerDeliverySchema,
2500
+ PC_A2A_CAPABILITY,
2501
+ A2aRelayRequestSchema,
2502
+ A2aRelayResponseSchema,
2503
+ SESSION_COMMUNICATION_CAPABILITY,
2504
+ SessionCommunicationDataSchema,
2505
+ SessionCommunicationRequestSchema,
2506
+ SessionCommunicationSchema,
2507
+ sessionCommunicationOperationCapability,
2508
+ sessionCommunicationError,
2509
+ SESSION_PROJECT_IDENTITY_OPERATION,
2510
+ SESSION_PROJECT_IDENTITY_VERSION,
2511
+ SESSION_DIRECTORY_LIST_OPERATION,
2512
+ SESSION_DIRECTORY_LIST_VERSION,
2513
+ SESSION_DIRECTORY_MAX_ENTRIES,
2514
+ SESSION_DIRECTORY_MAX_RESPONSE_BYTES,
2515
+ SESSION_FILE_READ_OPERATION,
2516
+ SESSION_FILE_READ_VERSION,
2517
+ SESSION_FILE_MAX_ORIGINAL_BYTES,
2518
+ SESSION_FILE_GZIP_THRESHOLD_BYTES,
2519
+ SESSION_FILE_MAX_IMAGE_BYTES,
2520
+ SESSION_FILE_MAX_IMAGE_EDGE,
2521
+ SESSION_FILE_MAX_IMAGE_PIXELS,
2522
+ isSafeSessionDirectoryPath,
2523
+ SessionDirectoryListDataSchema,
2524
+ SessionDirectoryListResultDataSchema,
2525
+ SessionFileReadDataSchema,
2526
+ SessionFileReadResultDataSchema,
2527
+ SessionGitProjectSchema,
2528
+ SessionProjectIdentityRequestDataSchema,
2529
+ SessionProjectIdentityResultDataSchema,
2530
+ SESSION_RESOURCE_READ_OPERATION,
2531
+ SESSION_RESOURCE_READ_VERSION,
2532
+ SESSION_RESOURCE_MAX_ORIGINAL_BYTES,
2533
+ SESSION_RESOURCE_GZIP_THRESHOLD_BYTES,
2534
+ SESSION_RESOURCE_MAX_IMAGE_PIXELS,
2535
+ SessionResourceReadDataSchema,
2536
+ SessionResourceReadResultDataSchema,
2537
+ SESSION_RENAME_OPERATION,
2538
+ SESSION_RENAME_VERSION,
2539
+ SESSION_NAME_MAX_LENGTH,
2540
+ SessionNameSchema,
2541
+ SessionRenameDataSchema,
2542
+ SessionRenameResultDataSchema,
2543
+ SESSION_DELETE_CAPABILITY,
2544
+ SESSION_LIST_UPDATES_CAPABILITY,
2545
+ SESSION_WORKTREE_CREATION_CAPABILITY,
2546
+ MANAGED_SESSION_SELECTION_CAPABILITY,
2547
+ AGENT_CONTROLS_CAPABILITY,
2548
+ GroupChatParticipantSchema,
2549
+ GroupChatInfoSchema,
2550
+ SessionSummarySchema,
2551
+ SessionsSnapshotSchema,
2552
+ SessionListRequestSchema,
2553
+ SessionListResultSchema,
2554
+ REASONING_EFFORTS,
2555
+ ReasoningEffortSchema,
2556
+ CopilotModelOptionSchema,
2557
+ SessionReasoningEffortSchema,
2558
+ CurrentReasoningEffortSchema,
2559
+ SessionToolInfoSchema,
2560
+ SessionSlashCommandInfoSchema,
2561
+ SessionSkillInfoSchema,
2562
+ SessionOptionsRequestSchema,
2563
+ SessionOptionsResultSchema,
2564
+ SessionCreateRequestSchema,
2565
+ SessionDeleteRequestSchema,
2566
+ SessionConfigureRequestSchema,
2567
+ SessionConfigureResultSchema,
2568
+ SessionRemoteRequestSchema,
2569
+ SessionRemoteStatusSchema,
2570
+ GROUP_CHAT_CREATE_OPERATION,
2571
+ GROUP_CHAT_CREATE_VERSION,
2572
+ GROUP_CHAT_CREATE_CAPABILITY,
2573
+ GroupChatCreateDataSchema,
2574
+ GroupChatCreateResultDataSchema,
2575
+ PromptImageAttachmentSchema,
2576
+ PromptFileAttachmentSchema,
2577
+ ConversationAttachmentSchema,
2578
+ CONVERSATION_ACTIVITY_STEP_LIMIT,
2579
+ CONVERSATION_SOURCE_ID_LIMIT,
2580
+ ConversationItemSchema,
2581
+ ConversationItemUpsertSchema,
2582
+ ConversationActivityStepUpsertSchema,
2583
+ SESSION_ASSISTANT_PREVIEW_CAPABILITY,
2584
+ SessionUserPreviewSchema,
2585
+ SessionAssistantPreviewSchema,
2586
+ SESSION_TIMELINE_PAGE_SIZE,
2587
+ SessionTimelinePageRequestSchema,
2588
+ SessionWatchRequestSchema,
2589
+ SessionTimelinePageSchema,
2590
+ SessionTimelineInvalidatedSchema,
2591
+ SESSION_FILE_ATTACHMENTS_CAPABILITY,
2592
+ SESSION_PROMPT_SUBMISSION_TIME_CAPABILITY,
2593
+ SessionPromptRequestSchema,
2594
+ SessionActivityUpdateSchema,
2595
+ SessionAbortRequestSchema,
2596
+ MOBILE_INTERACTION_PERSISTENCE_CAPABILITY,
2597
+ INTERACTION_DISMISS_RESPONSE_CAPABILITY,
2598
+ INTERACTION_SUPERSEDED_ERROR_CODE,
2599
+ InteractionRequestSchema,
2600
+ InteractionResponseSchema,
2601
+ InteractionRequestPayloadSchema,
2602
+ InteractionRespondRequestSchema,
2603
+ InteractionRespondResultSchema,
2604
+ PermissionRequestPayloadSchema,
2605
+ PermissionRespondRequestSchema,
2606
+ TIMELINE_SYNC_OPERATION,
2607
+ TIMELINE_IMAGE_OPERATION,
2608
+ TIMELINE_SYNC_VERSION,
2609
+ TIMELINE_SYNC_MAX_EVENTS,
2610
+ TIMELINE_SYNC_MAX_BYTES,
2611
+ TIMELINE_IMAGE_CHUNK_BYTES,
2612
+ TIMELINE_IMAGE_MAX_BYTES,
2613
+ TimelineSyncRequestSchema,
2614
+ TimelineSyncResponseSchema,
2615
+ TimelineImageRequestSchema,
2616
+ TimelineImageChunkSchema,
2617
+ SCHEDULES_CAPABILITY,
2618
+ SCHEDULE_OPERATIONS,
2619
+ WorkbenchScheduleProposalSchema,
2620
+ WorkbenchScheduleDraftSchema,
2621
+ WorkbenchScheduleEntrySchema,
2622
+ WorkbenchScheduleSnapshotSchema,
2623
+ WorkbenchScheduleCreateRequestSchema,
2624
+ WorkbenchScheduleCreateResultSchema,
2625
+ WorkbenchScheduleDeleteRequestSchema,
2626
+ WorkbenchScheduleDeleteResultSchema,
2627
+ WorkbenchScheduleDraftDismissRequestSchema,
2628
+ WORKBENCH_VERSION,
2629
+ RESEARCH_CHAT_CAPABILITY,
2630
+ WORKBENCH_OPERATIONS,
2631
+ workbenchCapability,
2632
+ WorkbenchOperationGetSchema,
2633
+ WorkbenchOperationStatusSchema,
2634
+ WorkbenchAskRequestSchema,
2635
+ WorkbenchAskResultSchema,
2636
+ WorkbenchEmptyRequestSchema,
2637
+ WorkbenchSubmitRequestSchema,
2638
+ WorkbenchResearchCreateRequestSchema,
2639
+ WorkbenchResearchCreateResultSchema,
2640
+ WorkbenchResearchListResultSchema,
2641
+ WorkbenchResearchTimelineRequestSchema,
2642
+ WorkbenchResearchSendRequestSchema,
2643
+ WorkbenchResearchSendResultSchema,
2644
+ WorkbenchCompletedResultSchema,
2645
+ WorkbenchCommandSchema,
2646
+ WorkbenchCommandListResultSchema,
2647
+ WorkbenchCommandInvokeRequestSchema,
2648
+ WorkbenchCommandResultSchema,
2649
+ WorkbenchQueueSnapshotSchema,
2650
+ WorkbenchQueueMutationRequestSchema,
2651
+ WorkbenchQueueMutationResultSchema,
2652
+ WorkbenchInsightsSchema,
2653
+ WorkbenchCompactResultSchema
2654
+ };