@moxt-ai/mobius-sdk 0.0.101 → 0.0.102

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.
Files changed (103) hide show
  1. package/dist/client.d.ts +1 -1
  2. package/dist/client.d.ts.map +1 -1
  3. package/dist/client.js +1 -1
  4. package/dist/client.js.map +1 -1
  5. package/dist/index.d.ts +2 -2
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/index.js +1 -1
  8. package/dist/index.js.map +1 -1
  9. package/dist/platform.d.ts +2 -2
  10. package/dist/platform.d.ts.map +1 -1
  11. package/dist/platform.js +2 -2
  12. package/dist/platform.js.map +1 -1
  13. package/dist/project-authentication.js +1 -1
  14. package/dist/project-authentication.js.map +1 -1
  15. package/dist/protocol/codecs/messages.d.ts +32 -0
  16. package/dist/protocol/codecs/messages.d.ts.map +1 -0
  17. package/dist/protocol/codecs/messages.js +249 -0
  18. package/dist/protocol/codecs/messages.js.map +1 -0
  19. package/dist/protocol/control-messages.d.ts +964 -0
  20. package/dist/protocol/control-messages.d.ts.map +1 -0
  21. package/dist/protocol/control-messages.js +754 -0
  22. package/dist/protocol/control-messages.js.map +1 -0
  23. package/dist/protocol/conversation-title.d.ts +2 -0
  24. package/dist/protocol/conversation-title.d.ts.map +1 -0
  25. package/dist/protocol/conversation-title.js +28 -0
  26. package/dist/protocol/conversation-title.js.map +1 -0
  27. package/dist/protocol/daemon-transport.d.ts +3979 -0
  28. package/dist/protocol/daemon-transport.d.ts.map +1 -0
  29. package/dist/protocol/daemon-transport.js +94 -0
  30. package/dist/protocol/daemon-transport.js.map +1 -0
  31. package/dist/protocol/identifier.d.ts +7 -0
  32. package/dist/protocol/identifier.d.ts.map +1 -0
  33. package/dist/protocol/identifier.js +11 -0
  34. package/dist/protocol/identifier.js.map +1 -0
  35. package/dist/protocol/index.d.ts +18 -0
  36. package/dist/protocol/index.d.ts.map +1 -0
  37. package/dist/protocol/index.js +18 -0
  38. package/dist/protocol/index.js.map +1 -0
  39. package/dist/protocol/messages.d.ts +67 -0
  40. package/dist/protocol/messages.d.ts.map +1 -0
  41. package/dist/protocol/messages.js +16 -0
  42. package/dist/protocol/messages.js.map +1 -0
  43. package/dist/protocol/mobius-api.d.ts +10 -0
  44. package/dist/protocol/mobius-api.d.ts.map +1 -0
  45. package/dist/protocol/mobius-api.js +23 -0
  46. package/dist/protocol/mobius-api.js.map +1 -0
  47. package/dist/protocol/native-sessions.d.ts +401 -0
  48. package/dist/protocol/native-sessions.d.ts.map +1 -0
  49. package/dist/protocol/native-sessions.js +154 -0
  50. package/dist/protocol/native-sessions.js.map +1 -0
  51. package/dist/protocol/project-location.d.ts +16 -0
  52. package/dist/protocol/project-location.d.ts.map +1 -0
  53. package/dist/protocol/project-location.js +6 -0
  54. package/dist/protocol/project-location.js.map +1 -0
  55. package/dist/protocol/prompt-usage.d.ts +76 -0
  56. package/dist/protocol/prompt-usage.d.ts.map +1 -0
  57. package/dist/protocol/prompt-usage.js +88 -0
  58. package/dist/protocol/prompt-usage.js.map +1 -0
  59. package/dist/protocol/resource-model.d.ts +339 -0
  60. package/dist/protocol/resource-model.d.ts.map +1 -0
  61. package/dist/protocol/resource-model.js +161 -0
  62. package/dist/protocol/resource-model.js.map +1 -0
  63. package/dist/protocol/runtime-diagnostics.d.ts +19 -0
  64. package/dist/protocol/runtime-diagnostics.d.ts.map +1 -0
  65. package/dist/protocol/runtime-diagnostics.js +24 -0
  66. package/dist/protocol/runtime-diagnostics.js.map +1 -0
  67. package/dist/protocol/runtime-upgrade.d.ts +29 -0
  68. package/dist/protocol/runtime-upgrade.d.ts.map +1 -0
  69. package/dist/protocol/runtime-upgrade.js +38 -0
  70. package/dist/protocol/runtime-upgrade.js.map +1 -0
  71. package/dist/protocol/session-access.d.ts +21 -0
  72. package/dist/protocol/session-access.d.ts.map +1 -0
  73. package/dist/protocol/session-access.js +108 -0
  74. package/dist/protocol/session-access.js.map +1 -0
  75. package/dist/protocol/session-event-log.d.ts +13542 -0
  76. package/dist/protocol/session-event-log.d.ts.map +1 -0
  77. package/dist/protocol/session-event-log.js +584 -0
  78. package/dist/protocol/session-event-log.js.map +1 -0
  79. package/dist/protocol/session-history.d.ts +2907 -0
  80. package/dist/protocol/session-history.d.ts.map +1 -0
  81. package/dist/protocol/session-history.js +58 -0
  82. package/dist/protocol/session-history.js.map +1 -0
  83. package/dist/protocol/session-recording.d.ts +5640 -0
  84. package/dist/protocol/session-recording.d.ts.map +1 -0
  85. package/dist/protocol/session-recording.js +365 -0
  86. package/dist/protocol/session-recording.js.map +1 -0
  87. package/dist/public-request.js +1 -1
  88. package/dist/public-request.js.map +1 -1
  89. package/dist/resources.d.ts +1 -1
  90. package/dist/resources.d.ts.map +1 -1
  91. package/dist/resources.js +1 -1
  92. package/dist/resources.js.map +1 -1
  93. package/dist/server.d.ts +2 -2
  94. package/dist/server.d.ts.map +1 -1
  95. package/dist/server.js +1 -1
  96. package/dist/server.js.map +1 -1
  97. package/dist/service-client.d.ts +1 -1
  98. package/dist/service-client.d.ts.map +1 -1
  99. package/dist/service-client.js +1 -1
  100. package/dist/service-client.js.map +1 -1
  101. package/dist/transport/ws-transport.js +1 -1
  102. package/dist/transport/ws-transport.js.map +1 -1
  103. package/package.json +8 -3
@@ -0,0 +1,754 @@
1
+ import { z } from "zod";
2
+ import { ProtocolMessageError } from "./codecs/messages.js";
3
+ import { identifierStringSchema as IDENTIFIER } from "./identifier.js";
4
+ export const WORKSPACE_LIST_KIND = "workspace.list";
5
+ export const WORKSPACE_ENTRIES_KIND = "workspace.entries";
6
+ export const SESSION_PREPARE_KIND = "session.prepare";
7
+ export const SESSION_READY_KIND = "session.ready";
8
+ export const SESSION_LIST_KIND = "session.list";
9
+ export const SESSION_LISTED_KIND = "session.listed";
10
+ export const SESSION_QUERY_KIND = "session.query";
11
+ export const SESSION_QUERIED_KIND = "session.queried";
12
+ export const SESSION_RESTORE_KIND = "session.restore";
13
+ export const SESSION_RESTORED_KIND = "session.restored";
14
+ export const SESSION_CLOSE_KIND = "session.close";
15
+ export const SESSION_CLOSED_KIND = "session.closed";
16
+ export const SESSION_STATUS_CHANGED_KIND = "session.status.changed";
17
+ export const SESSION_RENAME_KIND = "session.rename";
18
+ export const SESSION_RENAMED_KIND = "session.renamed";
19
+ export const SESSION_CONFIGURE_KIND = "session.configure";
20
+ export const SESSION_CONFIG_UPDATED_KIND = "session.config.updated";
21
+ export const SESSION_COMMANDS_UPDATED_KIND = "session.commands.updated";
22
+ export const SESSION_INFO_UPDATED_KIND = "session.info.updated";
23
+ export const SESSION_PERMISSION_REQUESTED_KIND = "session.permission.requested";
24
+ export const SESSION_PERMISSION_RESPOND_KIND = "session.permission.respond";
25
+ export const SESSION_PERMISSION_RESOLVED_KIND = "session.permission.resolved";
26
+ export const SESSION_ELICITATION_REQUESTED_KIND = "session.elicitation.requested";
27
+ export const SESSION_ELICITATION_RESPOND_KIND = "session.elicitation.respond";
28
+ export const SESSION_ELICITATION_RESOLVED_KIND = "session.elicitation.resolved";
29
+ export const SESSION_OPERATION_FAILED_KIND = "session.operation.failed";
30
+ export const AGENT_CONTENT_KIND = "agent.content";
31
+ export const AGENT_SETTINGS_DISCOVER_KIND = "agent.settings.discover";
32
+ export const AGENT_SETTINGS_DISCOVERED_KIND = "agent.settings.discovered";
33
+ export const AGENT_SETTINGS_DISCOVERY_FAILED_KIND = "agent.settings.discovery.failed";
34
+ export const FILE_READ_KIND = "file.read";
35
+ export const FILE_BEGIN_KIND = "file.begin";
36
+ export const FILE_CHUNK_KIND = "file.chunk";
37
+ export const FILE_END_KIND = "file.end";
38
+ export const FILE_FAILED_KIND = "file.failed";
39
+ const DIRECTORY_IDENTIFIER_PATTERN = /^[a-zA-Z0-9][a-zA-Z0-9_-]{0,2047}$/;
40
+ const DIRECTORY_IDENTIFIER = z.string().min(1).max(2_048).regex(DIRECTORY_IDENTIFIER_PATTERN);
41
+ const SHORT_TEXT = z.string().max(500);
42
+ const LONG_TEXT = z.string().max(100_000);
43
+ const workspaceEntrySchema = z
44
+ .object({
45
+ directoryId: DIRECTORY_IDENTIFIER,
46
+ name: z.string().min(1).max(255),
47
+ })
48
+ .readonly();
49
+ const sessionStatusSchema = z.discriminatedUnion("kind", [
50
+ z.object({ kind: z.literal("idle") }).readonly(),
51
+ z
52
+ .object({
53
+ commandId: IDENTIFIER,
54
+ kind: z.literal("working"),
55
+ })
56
+ .readonly(),
57
+ ]);
58
+ const sessionStatusChangedEventSchema = z
59
+ .object({
60
+ kind: z.literal(SESSION_STATUS_CHANGED_KIND),
61
+ sessionId: IDENTIFIER,
62
+ status: sessionStatusSchema,
63
+ })
64
+ .readonly();
65
+ const sessionMetadataSchema = z
66
+ .object({
67
+ additionalDirectories: z.array(workspaceEntrySchema).max(16).readonly(),
68
+ agentId: IDENTIFIER,
69
+ directoryId: DIRECTORY_IDENTIFIER,
70
+ directoryLabel: z.string().min(1).max(2_048),
71
+ prompted: z.boolean(),
72
+ sessionId: IDENTIFIER,
73
+ status: sessionStatusSchema.default({ kind: "idle" }),
74
+ title: z.string().max(500),
75
+ updatedAt: z.iso.datetime({ offset: true }),
76
+ })
77
+ .readonly();
78
+ const sessionListCommandSchema = z
79
+ .object({
80
+ kind: z.literal(SESSION_LIST_KIND),
81
+ limit: z.number().int().positive().max(500),
82
+ requestId: IDENTIFIER,
83
+ })
84
+ .readonly();
85
+ const sessionsListedEventSchema = z
86
+ .object({
87
+ entries: z.array(sessionMetadataSchema).max(500).readonly(),
88
+ kind: z.literal(SESSION_LISTED_KIND),
89
+ requestId: IDENTIFIER,
90
+ })
91
+ .readonly();
92
+ const sessionQueryCommandSchema = z
93
+ .object({
94
+ kind: z.literal(SESSION_QUERY_KIND),
95
+ requestId: IDENTIFIER,
96
+ sessionIds: z.array(IDENTIFIER).min(1).max(500).readonly(),
97
+ })
98
+ .readonly();
99
+ const sessionsQueriedEventSchema = z
100
+ .object({
101
+ entries: z.array(sessionMetadataSchema).max(500).readonly(),
102
+ kind: z.literal(SESSION_QUERIED_KIND),
103
+ requestId: IDENTIFIER,
104
+ })
105
+ .readonly();
106
+ const sessionRestoreCommandSchema = z
107
+ .object({
108
+ kind: z.literal(SESSION_RESTORE_KIND),
109
+ requestId: IDENTIFIER,
110
+ sessionId: IDENTIFIER,
111
+ })
112
+ .readonly();
113
+ const sessionCloseCommandSchema = z
114
+ .object({
115
+ kind: z.literal(SESSION_CLOSE_KIND),
116
+ requestId: IDENTIFIER,
117
+ sessionId: IDENTIFIER,
118
+ })
119
+ .readonly();
120
+ const fileReadCommandSchema = z
121
+ .object({
122
+ kind: z.literal(FILE_READ_KIND),
123
+ maxBytes: z
124
+ .number()
125
+ .int()
126
+ .positive()
127
+ .max(128 * 1024 * 1024),
128
+ requestId: IDENTIFIER,
129
+ sessionId: IDENTIFIER,
130
+ path: z.string().min(1).max(4_096),
131
+ })
132
+ .readonly();
133
+ const fileBeginEventSchema = z
134
+ .object({
135
+ byteLength: z
136
+ .number()
137
+ .int()
138
+ .positive()
139
+ .max(128 * 1024 * 1024),
140
+ kind: z.literal(FILE_BEGIN_KIND),
141
+ mediaType: z.string().min(1).max(255),
142
+ modifiedAt: z.iso.datetime({ offset: true }),
143
+ name: z.string().min(1).max(500),
144
+ requestId: IDENTIFIER,
145
+ sessionId: IDENTIFIER,
146
+ })
147
+ .readonly();
148
+ const fileChunkEventSchema = z
149
+ .object({
150
+ data: z.string().min(1).max(400_000),
151
+ kind: z.literal(FILE_CHUNK_KIND),
152
+ requestId: IDENTIFIER,
153
+ sequence: z.number().int().nonnegative().max(1_024),
154
+ sessionId: IDENTIFIER,
155
+ })
156
+ .readonly();
157
+ const fileEndEventSchema = z
158
+ .object({
159
+ kind: z.literal(FILE_END_KIND),
160
+ requestId: IDENTIFIER,
161
+ sessionId: IDENTIFIER,
162
+ })
163
+ .readonly();
164
+ const fileFailedEventSchema = z
165
+ .object({
166
+ code: IDENTIFIER,
167
+ kind: z.literal(FILE_FAILED_KIND),
168
+ message: z.string().min(1).max(500),
169
+ requestId: IDENTIFIER,
170
+ sessionId: IDENTIFIER,
171
+ })
172
+ .readonly();
173
+ const configValueSchema = z
174
+ .object({
175
+ description: SHORT_TEXT,
176
+ groupId: z.string().max(128),
177
+ groupName: z.string().max(255),
178
+ name: z.string().min(1).max(255),
179
+ // ACP types a select value id as any string, and Agents use the empty
180
+ // id to mean "the provider's own default" — no explicit setting is
181
+ // sent. Refusing it would drop the whole option, so the id is bounded
182
+ // by length alone.
183
+ value: z.string().max(500),
184
+ })
185
+ .readonly();
186
+ export const sessionConfigOptionSchema = z
187
+ .object({
188
+ booleanValue: z.boolean(),
189
+ category: z.string().max(128),
190
+ currentValue: z.string().max(500),
191
+ description: SHORT_TEXT,
192
+ id: z.string().min(1).max(128),
193
+ name: z.string().min(1).max(255),
194
+ type: z.enum(["boolean", "select"]),
195
+ values: z.array(configValueSchema).max(500).readonly(),
196
+ })
197
+ .readonly();
198
+ const sessionConfigOptionsSchema = z.array(sessionConfigOptionSchema).max(100).readonly();
199
+ export const agentSettingSchema = z
200
+ .object({
201
+ booleanValue: z.boolean(),
202
+ category: z.string().max(128),
203
+ defaultValue: z.string().max(500),
204
+ description: SHORT_TEXT,
205
+ id: z.string().min(1).max(128),
206
+ name: z.string().min(1).max(255),
207
+ type: z.enum(["boolean", "select"]),
208
+ values: z.array(configValueSchema).max(500).readonly(),
209
+ })
210
+ .readonly();
211
+ const agentSettingsSchema = z.array(agentSettingSchema).max(128).readonly();
212
+ export const AGENT_MODEL_EFFORT_RESOLUTION_COMPLETE = "complete";
213
+ export const AGENT_MODEL_EFFORT_RESOLUTION_ON_MODEL_SELECTION = "on_model_selection";
214
+ export const AGENT_MODEL_EFFORT_RESOLUTION_UNAVAILABLE = "unavailable";
215
+ const agentModelEffortResolutionSchema = z.enum([
216
+ AGENT_MODEL_EFFORT_RESOLUTION_COMPLETE,
217
+ AGENT_MODEL_EFFORT_RESOLUTION_ON_MODEL_SELECTION,
218
+ AGENT_MODEL_EFFORT_RESOLUTION_UNAVAILABLE,
219
+ ]);
220
+ export const agentModelEffortSchema = z
221
+ .object({
222
+ effortSettingId: z.string().max(128),
223
+ modelSettingId: z.string().max(128),
224
+ resolution: agentModelEffortResolutionSchema,
225
+ unsupportedModelIds: z.array(z.string().min(1).max(500)).max(500).readonly().default([]),
226
+ valuesByModel: z.record(z.string().min(1).max(500), z.array(configValueSchema).max(500).readonly()).readonly(),
227
+ })
228
+ .readonly();
229
+ const agentSettingsDiscoverCommandSchema = z
230
+ .object({
231
+ agentId: IDENTIFIER,
232
+ kind: z.literal(AGENT_SETTINGS_DISCOVER_KIND),
233
+ model: z.string().min(1).max(500).optional(),
234
+ requestId: IDENTIFIER,
235
+ })
236
+ .readonly();
237
+ const agentSettingsDiscoveredEventSchema = z
238
+ .object({
239
+ agentId: IDENTIFIER,
240
+ agentName: z.string().max(255),
241
+ agentVersion: z.string().max(128),
242
+ kind: z.literal(AGENT_SETTINGS_DISCOVERED_KIND),
243
+ modelEffort: agentModelEffortSchema,
244
+ requestId: IDENTIFIER,
245
+ settings: agentSettingsSchema,
246
+ settingsRevision: z.string().regex(/^[a-f0-9]{64}$/),
247
+ })
248
+ .readonly();
249
+ const agentSettingsDiscoveryFailedEventSchema = z
250
+ .object({
251
+ code: IDENTIFIER,
252
+ kind: z.literal(AGENT_SETTINGS_DISCOVERY_FAILED_KIND),
253
+ message: z.string().min(1).max(500),
254
+ requestId: IDENTIFIER,
255
+ })
256
+ .readonly();
257
+ export const sessionConfigurationSelectionSchema = z
258
+ .object({
259
+ booleanValue: z.boolean(),
260
+ configId: IDENTIFIER,
261
+ value: z.string().max(500),
262
+ valueType: z.enum(["boolean", "select"]),
263
+ })
264
+ .readonly();
265
+ export const AGENT_DEFAULT_EXECUTION_SETTING = "agent_default";
266
+ export const AGENT_PERMISSION_MODE_CONFIG_ID = "permission_mode";
267
+ export const AGENT_PERMISSION_MODES = Object.freeze([
268
+ AGENT_DEFAULT_EXECUTION_SETTING,
269
+ "read-only",
270
+ "workspace-write",
271
+ "danger-full-access",
272
+ ]);
273
+ export const agentExecutionConfigurationSchema = z
274
+ .object({
275
+ model: sessionConfigurationSelectionSchema,
276
+ permissionMode: z.string().refine((value) => AGENT_PERMISSION_MODES.includes(value)),
277
+ reasoningEffort: sessionConfigurationSelectionSchema,
278
+ })
279
+ .superRefine((configuration, context) => {
280
+ if (configuration.model.valueType !== "select" ||
281
+ configuration.model.booleanValue ||
282
+ configuration.model.value.length === 0 ||
283
+ configuration.reasoningEffort.valueType !== "select" ||
284
+ configuration.reasoningEffort.booleanValue ||
285
+ configuration.reasoningEffort.value.length === 0) {
286
+ context.addIssue({
287
+ code: "custom",
288
+ message: "Model and reasoning effort must be explicit select configurations",
289
+ });
290
+ }
291
+ if (configuration.model.configId === configuration.reasoningEffort.configId ||
292
+ configuration.model.configId === AGENT_PERMISSION_MODE_CONFIG_ID ||
293
+ configuration.reasoningEffort.configId === AGENT_PERMISSION_MODE_CONFIG_ID) {
294
+ context.addIssue({
295
+ code: "custom",
296
+ message: "Required execution setting identifiers must differ",
297
+ });
298
+ }
299
+ })
300
+ .readonly();
301
+ function agentDefaultSelection(configId) {
302
+ return Object.freeze({
303
+ booleanValue: false,
304
+ configId,
305
+ value: AGENT_DEFAULT_EXECUTION_SETTING,
306
+ valueType: "select",
307
+ });
308
+ }
309
+ export const DEFAULT_AGENT_EXECUTION_CONFIGURATION = Object.freeze({
310
+ model: agentDefaultSelection("model"),
311
+ permissionMode: AGENT_DEFAULT_EXECUTION_SETTING,
312
+ reasoningEffort: agentDefaultSelection("reasoning_effort"),
313
+ });
314
+ export const sessionConfigurationSelectionsSchema = z
315
+ .array(sessionConfigurationSelectionSchema)
316
+ .max(100)
317
+ .superRefine((selections, context) => {
318
+ const identifiers = new Set();
319
+ for (const [index, selection] of selections.entries()) {
320
+ if (identifiers.has(selection.configId)) {
321
+ context.addIssue({
322
+ code: "custom",
323
+ message: "Session configuration identifiers must be unique",
324
+ path: [index, "configId"],
325
+ });
326
+ }
327
+ identifiers.add(selection.configId);
328
+ }
329
+ })
330
+ .readonly();
331
+ export const sessionCapabilitiesSchema = z
332
+ .object({
333
+ additionalDirectories: z.boolean(),
334
+ audioPrompt: z.boolean(),
335
+ closeSession: z.boolean(),
336
+ deleteSession: z.boolean(),
337
+ embeddedContextPrompt: z.boolean(),
338
+ imagePrompt: z.boolean(),
339
+ listSessions: z.boolean(),
340
+ loadSession: z.boolean(),
341
+ promptQueueing: z.boolean().default(false),
342
+ renameSession: z.boolean().default(false),
343
+ resumeSession: z.boolean(),
344
+ steering: z.boolean().default(false),
345
+ unstableForkSession: z.boolean().default(false),
346
+ })
347
+ .readonly();
348
+ const sessionCommandSchema = z
349
+ .object({
350
+ description: SHORT_TEXT,
351
+ inputHint: z.string().max(255),
352
+ name: z.string().min(1).max(128),
353
+ })
354
+ .readonly();
355
+ export const permissionOptionSchema = z
356
+ .object({
357
+ kind: z.enum(["allow_once", "allow_always", "reject_once", "reject_always"]),
358
+ name: z.string().min(1).max(255),
359
+ optionId: z.string().min(1).max(255),
360
+ })
361
+ .readonly();
362
+ const elicitationOptionSchema = z
363
+ .object({
364
+ description: SHORT_TEXT,
365
+ label: z.string().min(1).max(255),
366
+ value: z.string().max(500),
367
+ })
368
+ .readonly();
369
+ export const elicitationFieldSchema = z
370
+ .object({
371
+ defaultBooleanValue: z.boolean(),
372
+ defaultNumberValue: z.number().finite(),
373
+ defaultStringValue: z.string().max(10_000),
374
+ description: SHORT_TEXT,
375
+ format: z.string().max(64),
376
+ hasDefaultValue: z.boolean(),
377
+ maximum: z.string().max(128),
378
+ maximumLength: z.string().max(128),
379
+ minimum: z.string().max(128),
380
+ minimumLength: z.string().max(128),
381
+ name: z.string().min(1).max(128),
382
+ options: z.array(elicitationOptionSchema).max(200).readonly(),
383
+ pattern: z.string().max(500),
384
+ required: z.boolean(),
385
+ title: z.string().min(1).max(255),
386
+ type: z.enum(["boolean", "integer", "multiselect", "number", "select", "string"]),
387
+ })
388
+ .readonly();
389
+ export const displayContentSchema = z
390
+ .object({
391
+ artifactId: z.string().max(128).default(""),
392
+ data: z.string().max(4_000_000),
393
+ mimeType: z.string().max(255),
394
+ name: z.string().max(500),
395
+ newText: LONG_TEXT,
396
+ oldText: LONG_TEXT,
397
+ path: z.string().max(2_048),
398
+ terminalId: z.string().max(255),
399
+ text: LONG_TEXT,
400
+ type: z.enum(["diff", "image", "resource", "resource_link", "terminal", "text", "video"]),
401
+ uri: z.string().max(4_096),
402
+ })
403
+ .readonly();
404
+ export const promptImageSchema = z
405
+ .object({
406
+ data: z.string().min(1).max(4_000_000),
407
+ mimeType: z.string().min(1).max(255),
408
+ name: z.string().min(1).max(500),
409
+ })
410
+ .readonly();
411
+ const promptResourceSchema = z
412
+ .object({
413
+ mimeType: z.string().max(255),
414
+ name: z.string().min(1).max(500),
415
+ text: z.string().max(1_000_000),
416
+ type: z.enum(["embedded", "link"]),
417
+ uri: z.string().min(1).max(4_096),
418
+ })
419
+ .readonly();
420
+ const workspaceListCommandSchema = z
421
+ .object({
422
+ bindingId: IDENTIFIER,
423
+ directoryId: DIRECTORY_IDENTIFIER,
424
+ kind: z.literal(WORKSPACE_LIST_KIND),
425
+ requestId: IDENTIFIER,
426
+ })
427
+ .readonly();
428
+ const workspaceEntriesEventSchema = z
429
+ .object({
430
+ bindingId: IDENTIFIER,
431
+ directoryId: DIRECTORY_IDENTIFIER,
432
+ directoryLabel: z.string().min(1).max(2_048),
433
+ entries: z.array(workspaceEntrySchema).max(500).readonly(),
434
+ kind: z.literal(WORKSPACE_ENTRIES_KIND),
435
+ parentDirectoryId: z.string().max(2_048),
436
+ requestId: IDENTIFIER,
437
+ })
438
+ .readonly();
439
+ const sessionIdentityFields = {
440
+ additionalDirectoryIds: z.array(DIRECTORY_IDENTIFIER).max(16).readonly(),
441
+ agentId: IDENTIFIER,
442
+ bindingId: IDENTIFIER,
443
+ directoryId: DIRECTORY_IDENTIFIER,
444
+ sessionId: IDENTIFIER,
445
+ };
446
+ const sessionPrepareCommandSchema = z
447
+ .object({
448
+ ...sessionIdentityFields,
449
+ configuration: z
450
+ .object({
451
+ booleanValue: z.boolean(),
452
+ configId: z.string().min(1).max(128),
453
+ value: z.string().max(500),
454
+ valueType: z.enum(["boolean", "select"]),
455
+ })
456
+ .readonly()
457
+ .optional(),
458
+ kind: z.literal(SESSION_PREPARE_KIND),
459
+ requestId: IDENTIFIER,
460
+ sessionState: z.literal("provisioned").optional(),
461
+ /** Marks an inspection-only Session preparation. */
462
+ transient: z.boolean().optional(),
463
+ })
464
+ .superRefine((command, context) => {
465
+ if (command.transient === true && command.sessionState === "provisioned") {
466
+ context.addIssue({
467
+ code: "custom",
468
+ message: "A transient Session cannot already be provisioned",
469
+ path: ["sessionState"],
470
+ });
471
+ }
472
+ })
473
+ .readonly();
474
+ const runtimeTimingsSchema = z
475
+ .array(z
476
+ .object({
477
+ durationMilliseconds: z.number().finite().nonnegative().max(120_000),
478
+ name: z.string().regex(/^[a-z][a-z0-9-]{0,63}$/),
479
+ })
480
+ .readonly())
481
+ .max(16)
482
+ .readonly();
483
+ export const sessionReadyEventSchema = z
484
+ .object({
485
+ additionalDirectories: z.array(workspaceEntrySchema).max(16).readonly(),
486
+ agentId: IDENTIFIER,
487
+ agentName: z.string().max(255),
488
+ agentVersion: z.string().max(128),
489
+ capabilities: sessionCapabilitiesSchema,
490
+ commands: z.array(sessionCommandSchema).max(500).readonly(),
491
+ configOptions: sessionConfigOptionsSchema,
492
+ directoryId: DIRECTORY_IDENTIFIER,
493
+ directoryLabel: z.string().min(1).max(2_048),
494
+ kind: z.literal(SESSION_READY_KIND),
495
+ requestId: IDENTIFIER,
496
+ restored: z.boolean(),
497
+ runtimeTimings: runtimeTimingsSchema.optional(),
498
+ sessionId: IDENTIFIER,
499
+ })
500
+ .readonly();
501
+ const sessionRestoredEventSchema = z
502
+ .object({
503
+ entry: sessionMetadataSchema,
504
+ kind: z.literal(SESSION_RESTORED_KIND),
505
+ ready: sessionReadyEventSchema,
506
+ requestId: IDENTIFIER,
507
+ })
508
+ .readonly();
509
+ const sessionClosedEventSchema = z
510
+ .object({
511
+ kind: z.literal(SESSION_CLOSED_KIND),
512
+ requestId: IDENTIFIER,
513
+ sessionId: IDENTIFIER,
514
+ })
515
+ .readonly();
516
+ const sessionConfigureCommandSchema = z
517
+ .object({
518
+ ...sessionIdentityFields,
519
+ booleanValue: z.boolean(),
520
+ configId: z.string().min(1).max(128),
521
+ kind: z.literal(SESSION_CONFIGURE_KIND),
522
+ requestId: IDENTIFIER,
523
+ value: z.string().max(500),
524
+ valueType: z.enum(["boolean", "select"]),
525
+ })
526
+ .readonly();
527
+ const sessionRenameCommandSchema = z
528
+ .object({
529
+ kind: z.literal(SESSION_RENAME_KIND),
530
+ requestId: IDENTIFIER,
531
+ sessionId: IDENTIFIER,
532
+ title: z.string().min(1).max(500),
533
+ })
534
+ .readonly();
535
+ const sessionRenamedEventSchema = z
536
+ .object({
537
+ kind: z.literal(SESSION_RENAMED_KIND),
538
+ requestId: IDENTIFIER,
539
+ sessionId: IDENTIFIER,
540
+ title: z.string().min(1).max(500),
541
+ updatedAt: z.string().max(128),
542
+ })
543
+ .readonly();
544
+ const sessionConfigUpdatedEventSchema = z
545
+ .object({
546
+ configOptions: sessionConfigOptionsSchema,
547
+ kind: z.literal(SESSION_CONFIG_UPDATED_KIND),
548
+ requestId: IDENTIFIER,
549
+ sessionId: IDENTIFIER,
550
+ })
551
+ .readonly();
552
+ const sessionCommandsUpdatedEventSchema = z
553
+ .object({
554
+ commands: z.array(sessionCommandSchema).max(500).readonly(),
555
+ kind: z.literal(SESSION_COMMANDS_UPDATED_KIND),
556
+ sessionId: IDENTIFIER,
557
+ })
558
+ .readonly();
559
+ const sessionInfoUpdatedEventSchema = z
560
+ .object({
561
+ kind: z.literal(SESSION_INFO_UPDATED_KIND),
562
+ projectId: IDENTIFIER.optional(),
563
+ sessionId: IDENTIFIER,
564
+ title: z.string().max(500).nullable(),
565
+ updatedAt: z.string().max(128),
566
+ })
567
+ .readonly();
568
+ export const sessionPermissionRequestedEventSchema = z
569
+ .object({
570
+ commandId: IDENTIFIER,
571
+ interactionId: IDENTIFIER,
572
+ kind: z.literal(SESSION_PERMISSION_REQUESTED_KIND),
573
+ options: z.array(permissionOptionSchema).min(1).max(20).readonly(),
574
+ sessionId: IDENTIFIER,
575
+ title: z.string().min(1).max(500),
576
+ toolCallId: z.string().min(1).max(255),
577
+ toolKind: z.string().max(64),
578
+ })
579
+ .readonly();
580
+ const sessionPermissionRespondCommandSchema = z
581
+ .object({
582
+ interactionId: IDENTIFIER,
583
+ kind: z.literal(SESSION_PERMISSION_RESPOND_KIND),
584
+ optionId: z.string().max(255),
585
+ outcome: z.enum(["cancelled", "selected"]),
586
+ sessionId: IDENTIFIER,
587
+ })
588
+ .readonly();
589
+ export const sessionPermissionResolvedEventSchema = z
590
+ .object({
591
+ interactionId: IDENTIFIER,
592
+ kind: z.literal(SESSION_PERMISSION_RESOLVED_KIND),
593
+ optionId: z.string().max(255),
594
+ outcome: z.enum(["cancelled", "selected"]),
595
+ sessionId: IDENTIFIER,
596
+ })
597
+ .readonly();
598
+ export const sessionElicitationRequestedEventSchema = z
599
+ .object({
600
+ accepted: z.boolean(),
601
+ commandId: IDENTIFIER,
602
+ elicitationId: z.string().max(255),
603
+ fields: z.array(elicitationFieldSchema).max(100).readonly(),
604
+ interactionId: IDENTIFIER,
605
+ kind: z.literal(SESSION_ELICITATION_REQUESTED_KIND),
606
+ message: z.string().min(1).max(2_000),
607
+ mode: z.enum(["form", "url"]),
608
+ sessionId: IDENTIFIER,
609
+ url: z.string().max(4_096),
610
+ })
611
+ .readonly();
612
+ const sessionElicitationRespondCommandSchema = z
613
+ .object({
614
+ action: z.enum(["accept", "cancel", "decline"]),
615
+ content: z.string().max(100_000),
616
+ interactionId: IDENTIFIER,
617
+ kind: z.literal(SESSION_ELICITATION_RESPOND_KIND),
618
+ sessionId: IDENTIFIER,
619
+ })
620
+ .readonly();
621
+ export const sessionElicitationResolvedEventSchema = z
622
+ .object({
623
+ action: z.enum(["accept", "cancel", "decline", "complete"]),
624
+ interactionId: IDENTIFIER,
625
+ kind: z.literal(SESSION_ELICITATION_RESOLVED_KIND),
626
+ sessionId: IDENTIFIER,
627
+ })
628
+ .readonly();
629
+ const sessionOperationFailedEventSchema = z
630
+ .object({
631
+ code: IDENTIFIER,
632
+ kind: z.literal(SESSION_OPERATION_FAILED_KIND),
633
+ message: z.string().min(1).max(500),
634
+ requestId: IDENTIFIER,
635
+ runtimeTimings: runtimeTimingsSchema.optional(),
636
+ sessionId: z.string().max(128),
637
+ })
638
+ .readonly();
639
+ const agentContentEventSchema = z
640
+ .object({
641
+ commandId: IDENTIFIER,
642
+ content: displayContentSchema,
643
+ contentId: IDENTIFIER,
644
+ kind: z.literal(AGENT_CONTENT_KIND),
645
+ messageId: z.string().max(255),
646
+ sessionId: IDENTIFIER,
647
+ })
648
+ .readonly();
649
+ function parseJson(encoded) {
650
+ try {
651
+ return JSON.parse(encoded);
652
+ }
653
+ catch (error) {
654
+ throw new ProtocolMessageError("Message is not valid JSON", {
655
+ cause: error,
656
+ });
657
+ }
658
+ }
659
+ function decode(encoded, schema) {
660
+ const result = schema.safeParse(parseJson(encoded));
661
+ if (!result.success) {
662
+ throw new ProtocolMessageError("Message does not match its schema", {
663
+ cause: result.error,
664
+ });
665
+ }
666
+ return result.data;
667
+ }
668
+ function decodeValue(value, schema) {
669
+ const result = schema.safeParse(value);
670
+ if (!result.success) {
671
+ throw new ProtocolMessageError("Message field does not match its schema", {
672
+ cause: result.error,
673
+ });
674
+ }
675
+ return result.data;
676
+ }
677
+ export const decodeAgentDisplayContentValue = (value) => decodeValue(value, displayContentSchema);
678
+ export const decodePromptImagesValue = (value) => decodeValue(value, z.array(promptImageSchema).max(8).readonly());
679
+ export const decodePromptResourcesValue = (value) => decodeValue(value, z.array(promptResourceSchema).max(16).readonly());
680
+ export const decodeSessionConfigurationSelections = (value) => decodeValue(value, sessionConfigurationSelectionsSchema);
681
+ export const decodeAgentExecutionConfiguration = (value) => decodeValue(value, agentExecutionConfigurationSchema);
682
+ export const decodeSessionConfigOptions = (value) => decodeValue(value, sessionConfigOptionsSchema);
683
+ const encode = (message, schema) => JSON.stringify(decodeValue(message, schema));
684
+ export const decodeAgentSettingsDiscoverCommand = (encoded) => decode(encoded, agentSettingsDiscoverCommandSchema);
685
+ export const encodeAgentSettingsDiscoverCommand = (message) => encode(message, agentSettingsDiscoverCommandSchema);
686
+ export const decodeAgentSettingsDiscoveredEvent = (encoded) => decode(encoded, agentSettingsDiscoveredEventSchema);
687
+ export const encodeAgentSettingsDiscoveredEvent = (message) => encode(message, agentSettingsDiscoveredEventSchema);
688
+ export const decodeAgentSettingsDiscoveryFailedEvent = (encoded) => decode(encoded, agentSettingsDiscoveryFailedEventSchema);
689
+ export const encodeAgentSettingsDiscoveryFailedEvent = (message) => encode(message, agentSettingsDiscoveryFailedEventSchema);
690
+ export const decodeFileReadCommand = (encoded) => decode(encoded, fileReadCommandSchema);
691
+ export const encodeFileReadCommand = (message) => encode(message, fileReadCommandSchema);
692
+ export const decodeFileBeginEvent = (encoded) => decode(encoded, fileBeginEventSchema);
693
+ export const encodeFileBeginEvent = (message) => encode(message, fileBeginEventSchema);
694
+ export const decodeFileChunkEvent = (encoded) => decode(encoded, fileChunkEventSchema);
695
+ export const encodeFileChunkEvent = (message) => encode(message, fileChunkEventSchema);
696
+ export const decodeFileEndEvent = (encoded) => decode(encoded, fileEndEventSchema);
697
+ export const encodeFileEndEvent = (message) => encode(message, fileEndEventSchema);
698
+ export const decodeFileFailedEvent = (encoded) => decode(encoded, fileFailedEventSchema);
699
+ export const encodeFileFailedEvent = (message) => encode(message, fileFailedEventSchema);
700
+ export const decodeWorkspaceListCommand = (encoded) => decode(encoded, workspaceListCommandSchema);
701
+ export const encodeWorkspaceListCommand = (message) => encode(message, workspaceListCommandSchema);
702
+ export const decodeWorkspaceEntriesEvent = (encoded) => decode(encoded, workspaceEntriesEventSchema);
703
+ export const encodeWorkspaceEntriesEvent = (message) => encode(message, workspaceEntriesEventSchema);
704
+ export const decodeSessionListCommand = (encoded) => decode(encoded, sessionListCommandSchema);
705
+ export const encodeSessionListCommand = (message) => encode(message, sessionListCommandSchema);
706
+ export const decodeSessionsListedEvent = (encoded) => decode(encoded, sessionsListedEventSchema);
707
+ export const encodeSessionsListedEvent = (message) => encode(message, sessionsListedEventSchema);
708
+ export const decodeSessionQueryCommand = (encoded) => decode(encoded, sessionQueryCommandSchema);
709
+ export const encodeSessionQueryCommand = (message) => encode(message, sessionQueryCommandSchema);
710
+ export const decodeSessionsQueriedEvent = (encoded) => decode(encoded, sessionsQueriedEventSchema);
711
+ export const encodeSessionsQueriedEvent = (message) => encode(message, sessionsQueriedEventSchema);
712
+ export const decodeSessionRestoreCommand = (encoded) => decode(encoded, sessionRestoreCommandSchema);
713
+ export const encodeSessionRestoreCommand = (message) => encode(message, sessionRestoreCommandSchema);
714
+ export const decodeSessionRestoredEvent = (encoded) => decode(encoded, sessionRestoredEventSchema);
715
+ export const encodeSessionRestoredEvent = (message) => encode(message, sessionRestoredEventSchema);
716
+ export const decodeSessionCloseCommand = (encoded) => decode(encoded, sessionCloseCommandSchema);
717
+ export const encodeSessionCloseCommand = (message) => encode(message, sessionCloseCommandSchema);
718
+ export const decodeSessionClosedEvent = (encoded) => decode(encoded, sessionClosedEventSchema);
719
+ export const encodeSessionClosedEvent = (message) => encode(message, sessionClosedEventSchema);
720
+ export const decodeSessionStatusChangedEvent = (encoded) => decode(encoded, sessionStatusChangedEventSchema);
721
+ export const encodeSessionStatusChangedEvent = (message) => encode(message, sessionStatusChangedEventSchema);
722
+ export const decodeSessionPrepareCommand = (encoded) => decode(encoded, sessionPrepareCommandSchema);
723
+ export const encodeSessionPrepareCommand = (message) => encode(message, sessionPrepareCommandSchema);
724
+ export const decodeSessionReadyEvent = (encoded) => decode(encoded, sessionReadyEventSchema);
725
+ export const encodeSessionReadyEvent = (message) => encode(message, sessionReadyEventSchema);
726
+ export const decodeSessionConfigureCommand = (encoded) => decode(encoded, sessionConfigureCommandSchema);
727
+ export const encodeSessionConfigureCommand = (message) => encode(message, sessionConfigureCommandSchema);
728
+ export const decodeSessionConfigUpdatedEvent = (encoded) => decode(encoded, sessionConfigUpdatedEventSchema);
729
+ export const encodeSessionConfigUpdatedEvent = (message) => encode(message, sessionConfigUpdatedEventSchema);
730
+ export const decodeSessionRenameCommand = (encoded) => decode(encoded, sessionRenameCommandSchema);
731
+ export const encodeSessionRenameCommand = (message) => encode(message, sessionRenameCommandSchema);
732
+ export const decodeSessionRenamedEvent = (encoded) => decode(encoded, sessionRenamedEventSchema);
733
+ export const encodeSessionRenamedEvent = (message) => encode(message, sessionRenamedEventSchema);
734
+ export const decodeSessionCommandsUpdatedEvent = (encoded) => decode(encoded, sessionCommandsUpdatedEventSchema);
735
+ export const encodeSessionCommandsUpdatedEvent = (message) => encode(message, sessionCommandsUpdatedEventSchema);
736
+ export const decodeSessionInfoUpdatedEvent = (encoded) => decode(encoded, sessionInfoUpdatedEventSchema);
737
+ export const encodeSessionInfoUpdatedEvent = (message) => encode(message, sessionInfoUpdatedEventSchema);
738
+ export const decodeSessionPermissionRequestedEvent = (encoded) => decode(encoded, sessionPermissionRequestedEventSchema);
739
+ export const encodeSessionPermissionRequestedEvent = (message) => encode(message, sessionPermissionRequestedEventSchema);
740
+ export const decodeSessionPermissionRespondCommand = (encoded) => decode(encoded, sessionPermissionRespondCommandSchema);
741
+ export const encodeSessionPermissionRespondCommand = (message) => encode(message, sessionPermissionRespondCommandSchema);
742
+ export const decodeSessionPermissionResolvedEvent = (encoded) => decode(encoded, sessionPermissionResolvedEventSchema);
743
+ export const encodeSessionPermissionResolvedEvent = (message) => encode(message, sessionPermissionResolvedEventSchema);
744
+ export const decodeSessionElicitationRequestedEvent = (encoded) => decode(encoded, sessionElicitationRequestedEventSchema);
745
+ export const encodeSessionElicitationRequestedEvent = (message) => encode(message, sessionElicitationRequestedEventSchema);
746
+ export const decodeSessionElicitationRespondCommand = (encoded) => decode(encoded, sessionElicitationRespondCommandSchema);
747
+ export const encodeSessionElicitationRespondCommand = (message) => encode(message, sessionElicitationRespondCommandSchema);
748
+ export const decodeSessionElicitationResolvedEvent = (encoded) => decode(encoded, sessionElicitationResolvedEventSchema);
749
+ export const encodeSessionElicitationResolvedEvent = (message) => encode(message, sessionElicitationResolvedEventSchema);
750
+ export const decodeSessionOperationFailedEvent = (encoded) => decode(encoded, sessionOperationFailedEventSchema);
751
+ export const encodeSessionOperationFailedEvent = (message) => encode(message, sessionOperationFailedEventSchema);
752
+ export const decodeAgentContentEvent = (encoded) => decode(encoded, agentContentEventSchema);
753
+ export const encodeAgentContentEvent = (message) => encode(message, agentContentEventSchema);
754
+ //# sourceMappingURL=control-messages.js.map