happy-imou-cloud 2.1.43 → 2.1.44

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 (32) hide show
  1. package/compat/acp-sdk-schema/index.d.ts +16 -3
  2. package/compat/acp-sdk-schema/index.js +15 -2
  3. package/compat/acp-sdk-schema/types.gen.d.ts +1801 -313
  4. package/compat/acp-sdk-schema/zod.gen.d.ts +3267 -1775
  5. package/compat/acp-sdk-schema/zod.gen.js +1007 -316
  6. package/dist/{BaseReasoningProcessor-D6itItnT.cjs → BaseReasoningProcessor-CMyFNQ1O.cjs} +2 -2
  7. package/dist/{BaseReasoningProcessor-CWCPAVJ3.mjs → BaseReasoningProcessor-DVSN7PCw.mjs} +2 -2
  8. package/dist/{ProviderSelectionHandler-CYUH1U8F.mjs → ProviderSelectionHandler-2IaDlDBx.mjs} +2 -2
  9. package/dist/{ProviderSelectionHandler-CXwqOJpC.cjs → ProviderSelectionHandler-Dqa4j1pD.cjs} +2 -2
  10. package/dist/{api-B89O-SC-.mjs → api-BhMVpzwg.mjs} +12 -8
  11. package/dist/{api-zMic8QXq.cjs → api-BoWVQeVe.cjs} +12 -8
  12. package/dist/{command-_qNFoJ-l.cjs → command-DoF8oaxg.cjs} +2 -2
  13. package/dist/{command-W01qXC9C.mjs → command-h3Rr4Abu.mjs} +2 -2
  14. package/dist/{index-CiHiCC31.mjs → index-DxF1W0nt.mjs} +57 -14
  15. package/dist/{index-DVVbyQGZ.cjs → index-kIN8gN9G.cjs} +60 -17
  16. package/dist/index.cjs +2 -2
  17. package/dist/index.mjs +2 -2
  18. package/dist/lib.cjs +1 -1
  19. package/dist/lib.d.cts +335 -336
  20. package/dist/lib.d.mts +335 -336
  21. package/dist/lib.mjs +1 -1
  22. package/dist/{registerKillSessionHandler-CDYAY5Ev.cjs → registerKillSessionHandler-CBm2WFM0.cjs} +2 -2
  23. package/dist/{registerKillSessionHandler-BnS3ozFX.mjs → registerKillSessionHandler-Dsg63Cx6.mjs} +2 -2
  24. package/dist/{runClaude-0U7kV07_.mjs → runClaude-BpwlCyVT.mjs} +4 -4
  25. package/dist/{runClaude-C1xfptKt.cjs → runClaude-Dq9OISKt.cjs} +4 -4
  26. package/dist/{runCodex-DnDmHm7E.mjs → runCodex-BMNR2hNp.mjs} +5 -5
  27. package/dist/{runCodex-BBgKpYLO.cjs → runCodex-BnzErOK_.cjs} +5 -5
  28. package/dist/{runGemini-CUwQHJ9y.cjs → runGemini-CYc9Ufxo.cjs} +4 -4
  29. package/dist/{runGemini-DcsIBQSc.mjs → runGemini-D4Af8oH1.mjs} +4 -4
  30. package/package.json +2 -2
  31. package/scripts/ensureAcpSdkCompat.mjs +37 -11
  32. package/scripts/release-smoke.mjs +1 -0
@@ -13,7 +13,7 @@ import { z } from "zod/v4";
13
13
  *
14
14
  * @experimental
15
15
  */
16
- export const zAuthCapabilities = z.looseObject({
16
+ export const zAuthCapabilities = z.object({
17
17
  _meta: z.record(z.string(), z.unknown()).nullish(),
18
18
  terminal: z.boolean().optional().default(false),
19
19
  });
@@ -26,7 +26,7 @@ export const zAuthCapabilities = z.looseObject({
26
26
  *
27
27
  * @experimental
28
28
  */
29
- export const zAuthEnvVar = z.looseObject({
29
+ export const zAuthEnvVar = z.object({
30
30
  _meta: z.record(z.string(), z.unknown()).nullish(),
31
31
  label: z.string().nullish(),
32
32
  name: z.string(),
@@ -38,7 +38,7 @@ export const zAuthEnvVar = z.looseObject({
38
38
  *
39
39
  * This is the default authentication method type.
40
40
  */
41
- export const zAuthMethodAgent = z.looseObject({
41
+ export const zAuthMethodAgent = z.object({
42
42
  _meta: z.record(z.string(), z.unknown()).nullish(),
43
43
  description: z.string().nullish(),
44
44
  id: z.string(),
@@ -55,7 +55,7 @@ export const zAuthMethodAgent = z.looseObject({
55
55
  *
56
56
  * @experimental
57
57
  */
58
- export const zAuthMethodEnvVar = z.looseObject({
58
+ export const zAuthMethodEnvVar = z.object({
59
59
  _meta: z.record(z.string(), z.unknown()).nullish(),
60
60
  description: z.string().nullish(),
61
61
  id: z.string(),
@@ -74,7 +74,7 @@ export const zAuthMethodEnvVar = z.looseObject({
74
74
  *
75
75
  * @experimental
76
76
  */
77
- export const zAuthMethodTerminal = z.looseObject({
77
+ export const zAuthMethodTerminal = z.object({
78
78
  _meta: z.record(z.string(), z.unknown()).nullish(),
79
79
  args: z.array(z.string()).optional(),
80
80
  description: z.string().nullish(),
@@ -89,10 +89,10 @@ export const zAuthMethodTerminal = z.looseObject({
89
89
  * When no `type` is present, the method is treated as `agent`.
90
90
  */
91
91
  export const zAuthMethod = z.union([
92
- zAuthMethodEnvVar.and(z.looseObject({
92
+ zAuthMethodEnvVar.and(z.object({
93
93
  type: z.literal("env_var"),
94
94
  })),
95
- zAuthMethodTerminal.and(z.looseObject({
95
+ zAuthMethodTerminal.and(z.object({
96
96
  type: z.literal("terminal"),
97
97
  })),
98
98
  zAuthMethodAgent,
@@ -102,20 +102,20 @@ export const zAuthMethod = z.union([
102
102
  *
103
103
  * Specifies which authentication method to use.
104
104
  */
105
- export const zAuthenticateRequest = z.looseObject({
105
+ export const zAuthenticateRequest = z.object({
106
106
  _meta: z.record(z.string(), z.unknown()).nullish(),
107
107
  methodId: z.string(),
108
108
  });
109
109
  /**
110
110
  * Response to the `authenticate` method.
111
111
  */
112
- export const zAuthenticateResponse = z.looseObject({
112
+ export const zAuthenticateResponse = z.object({
113
113
  _meta: z.record(z.string(), z.unknown()).nullish(),
114
114
  });
115
115
  /**
116
116
  * Binary resource contents.
117
117
  */
118
- export const zBlobResourceContents = z.looseObject({
118
+ export const zBlobResourceContents = z.object({
119
119
  _meta: z.record(z.string(), z.unknown()).nullish(),
120
120
  blob: z.string(),
121
121
  mimeType: z.string().nullish(),
@@ -124,21 +124,21 @@ export const zBlobResourceContents = z.looseObject({
124
124
  /**
125
125
  * Schema for boolean properties in an elicitation form.
126
126
  */
127
- export const zBooleanPropertySchema = z.looseObject({
127
+ export const zBooleanPropertySchema = z.object({
128
128
  default: z.boolean().nullish(),
129
129
  description: z.string().nullish(),
130
130
  title: z.string().nullish(),
131
131
  });
132
132
  /**
133
- * **UNSTABLE**
134
- *
135
- * This capability is not part of the spec yet, and may be removed or changed at any point.
136
- *
133
+ * Response from closing an NES session.
134
+ */
135
+ export const zCloseNesResponse = z.object({
136
+ _meta: z.record(z.string(), z.unknown()).nullish(),
137
+ });
138
+ /**
137
139
  * Response from closing a session.
138
- *
139
- * @experimental
140
140
  */
141
- export const zCloseSessionResponse = z.looseObject({
141
+ export const zCloseSessionResponse = z.object({
142
142
  _meta: z.record(z.string(), z.unknown()).nullish(),
143
143
  });
144
144
  /**
@@ -150,14 +150,14 @@ export const zCloseSessionResponse = z.looseObject({
150
150
  *
151
151
  * @experimental
152
152
  */
153
- export const zCost = z.looseObject({
153
+ export const zCost = z.object({
154
154
  amount: z.number(),
155
155
  currency: z.string(),
156
156
  });
157
157
  /**
158
158
  * Response containing the ID of the created terminal.
159
159
  */
160
- export const zCreateTerminalResponse = z.looseObject({
160
+ export const zCreateTerminalResponse = z.object({
161
161
  _meta: z.record(z.string(), z.unknown()).nullish(),
162
162
  terminalId: z.string(),
163
163
  });
@@ -168,12 +168,37 @@ export const zCreateTerminalResponse = z.looseObject({
168
168
  *
169
169
  * See protocol docs: [Content](https://agentclientprotocol.com/protocol/tool-calls#content)
170
170
  */
171
- export const zDiff = z.looseObject({
171
+ export const zDiff = z.object({
172
172
  _meta: z.record(z.string(), z.unknown()).nullish(),
173
173
  newText: z.string(),
174
174
  oldText: z.string().nullish(),
175
175
  path: z.string(),
176
176
  });
177
+ /**
178
+ * **UNSTABLE**
179
+ *
180
+ * This capability is not part of the spec yet, and may be removed or changed at any point.
181
+ *
182
+ * Request parameters for `providers/disable`.
183
+ *
184
+ * @experimental
185
+ */
186
+ export const zDisableProvidersRequest = z.object({
187
+ _meta: z.record(z.string(), z.unknown()).nullish(),
188
+ id: z.string(),
189
+ });
190
+ /**
191
+ * **UNSTABLE**
192
+ *
193
+ * This capability is not part of the spec yet, and may be removed or changed at any point.
194
+ *
195
+ * Response to `providers/disable`.
196
+ *
197
+ * @experimental
198
+ */
199
+ export const zDisableProvidersResponse = z.object({
200
+ _meta: z.record(z.string(), z.unknown()).nullish(),
201
+ });
177
202
  export const zElicitationContentValue = z.union([
178
203
  z.string(),
179
204
  z.number(),
@@ -190,7 +215,7 @@ export const zElicitationContentValue = z.union([
190
215
  *
191
216
  * @experimental
192
217
  */
193
- export const zElicitationAcceptAction = z.looseObject({
218
+ export const zElicitationAcceptAction = z.object({
194
219
  content: z.record(z.string(), zElicitationContentValue).nullish(),
195
220
  });
196
221
  /**
@@ -198,21 +223,23 @@ export const zElicitationAcceptAction = z.looseObject({
198
223
  *
199
224
  * This capability is not part of the spec yet, and may be removed or changed at any point.
200
225
  *
201
- * The user's action in response to an elicitation.
226
+ * Response from the client to an elicitation request.
202
227
  *
203
228
  * @experimental
204
229
  */
205
- export const zElicitationAction = z.union([
206
- zElicitationAcceptAction.and(z.looseObject({
230
+ export const zCreateElicitationResponse = z.intersection(z.union([
231
+ zElicitationAcceptAction.and(z.object({
207
232
  action: z.literal("accept"),
208
233
  })),
209
- z.looseObject({
234
+ z.object({
210
235
  action: z.literal("decline"),
211
236
  }),
212
- z.looseObject({
237
+ z.object({
213
238
  action: z.literal("cancel"),
214
239
  }),
215
- ]);
240
+ ]), z.object({
241
+ _meta: z.record(z.string(), z.unknown()).nullish(),
242
+ }));
216
243
  /**
217
244
  * **UNSTABLE**
218
245
  *
@@ -222,7 +249,7 @@ export const zElicitationAction = z.union([
222
249
  *
223
250
  * @experimental
224
251
  */
225
- export const zElicitationFormCapabilities = z.looseObject({
252
+ export const zElicitationFormCapabilities = z.object({
226
253
  _meta: z.record(z.string(), z.unknown()).nullish(),
227
254
  });
228
255
  /**
@@ -244,23 +271,10 @@ export const zElicitationId = z.string();
244
271
  *
245
272
  * @experimental
246
273
  */
247
- export const zElicitationCompleteNotification = z.looseObject({
274
+ export const zCompleteElicitationNotification = z.object({
248
275
  _meta: z.record(z.string(), z.unknown()).nullish(),
249
276
  elicitationId: zElicitationId,
250
277
  });
251
- /**
252
- * **UNSTABLE**
253
- *
254
- * This capability is not part of the spec yet, and may be removed or changed at any point.
255
- *
256
- * Response from the client to an elicitation request.
257
- *
258
- * @experimental
259
- */
260
- export const zElicitationResponse = z.looseObject({
261
- _meta: z.record(z.string(), z.unknown()).nullish(),
262
- action: zElicitationAction,
263
- });
264
278
  /**
265
279
  * Object schema type.
266
280
  */
@@ -278,7 +292,7 @@ export const zElicitationStringType = z.literal("string");
278
292
  *
279
293
  * @experimental
280
294
  */
281
- export const zElicitationUrlCapabilities = z.looseObject({
295
+ export const zElicitationUrlCapabilities = z.object({
282
296
  _meta: z.record(z.string(), z.unknown()).nullish(),
283
297
  });
284
298
  /**
@@ -290,35 +304,22 @@ export const zElicitationUrlCapabilities = z.looseObject({
290
304
  *
291
305
  * @experimental
292
306
  */
293
- export const zElicitationCapabilities = z.looseObject({
307
+ export const zElicitationCapabilities = z.object({
294
308
  _meta: z.record(z.string(), z.unknown()).nullish(),
295
309
  form: zElicitationFormCapabilities.nullish(),
296
310
  url: zElicitationUrlCapabilities.nullish(),
297
311
  });
298
- /**
299
- * **UNSTABLE**
300
- *
301
- * This capability is not part of the spec yet, and may be removed or changed at any point.
302
- *
303
- * URL-based elicitation mode where the client directs the user to a URL.
304
- *
305
- * @experimental
306
- */
307
- export const zElicitationUrlMode = z.looseObject({
308
- elicitationId: zElicitationId,
309
- url: z.string().url(),
310
- });
311
312
  /**
312
313
  * A titled enum option with a const value and human-readable title.
313
314
  */
314
- export const zEnumOption = z.looseObject({
315
+ export const zEnumOption = z.object({
315
316
  const: z.string(),
316
317
  title: z.string(),
317
318
  });
318
319
  /**
319
320
  * An environment variable to set when launching an MCP server.
320
321
  */
321
- export const zEnvVariable = z.looseObject({
322
+ export const zEnvVariable = z.object({
322
323
  _meta: z.record(z.string(), z.unknown()).nullish(),
323
324
  name: z.string(),
324
325
  value: z.string(),
@@ -357,7 +358,7 @@ export const zErrorCode = z.union([
357
358
  *
358
359
  * See protocol docs: [JSON-RPC Error Object](https://www.jsonrpc.org/specification#error_object)
359
360
  */
360
- export const zError = z.looseObject({
361
+ export const zError = z.object({
361
362
  code: zErrorCode,
362
363
  data: z.unknown().optional(),
363
364
  message: z.string(),
@@ -391,32 +392,15 @@ export const zExtResponse = z.unknown();
391
392
  *
392
393
  * See protocol docs: [FileSystem](https://agentclientprotocol.com/protocol/initialization#filesystem)
393
394
  */
394
- export const zFileSystemCapabilities = z.looseObject({
395
+ export const zFileSystemCapabilities = z.object({
395
396
  _meta: z.record(z.string(), z.unknown()).nullish(),
396
397
  readTextFile: z.boolean().optional().default(false),
397
398
  writeTextFile: z.boolean().optional().default(false),
398
399
  });
399
- /**
400
- * Capabilities supported by the client.
401
- *
402
- * Advertised during initialization to inform the agent about
403
- * available features and methods.
404
- *
405
- * See protocol docs: [Client Capabilities](https://agentclientprotocol.com/protocol/initialization#client-capabilities)
406
- */
407
- export const zClientCapabilities = z.looseObject({
408
- _meta: z.record(z.string(), z.unknown()).nullish(),
409
- auth: zAuthCapabilities.optional().default({ terminal: false }),
410
- elicitation: zElicitationCapabilities.nullish(),
411
- fs: zFileSystemCapabilities
412
- .optional()
413
- .default({ readTextFile: false, writeTextFile: false }),
414
- terminal: z.boolean().optional().default(false),
415
- });
416
400
  /**
417
401
  * An HTTP header to set when making requests to the MCP server.
418
402
  */
419
- export const zHttpHeader = z.looseObject({
403
+ export const zHttpHeader = z.object({
420
404
  _meta: z.record(z.string(), z.unknown()).nullish(),
421
405
  name: z.string(),
422
406
  value: z.string(),
@@ -426,7 +410,7 @@ export const zHttpHeader = z.looseObject({
426
410
  * Describes the name and version of an MCP implementation, with an optional
427
411
  * title for UI representation.
428
412
  */
429
- export const zImplementation = z.looseObject({
413
+ export const zImplementation = z.object({
430
414
  _meta: z.record(z.string(), z.unknown()).nullish(),
431
415
  name: z.string(),
432
416
  title: z.string().nullish(),
@@ -435,7 +419,7 @@ export const zImplementation = z.looseObject({
435
419
  /**
436
420
  * Schema for integer properties in an elicitation form.
437
421
  */
438
- export const zIntegerPropertySchema = z.looseObject({
422
+ export const zIntegerPropertySchema = z.object({
439
423
  default: z.number().nullish(),
440
424
  description: z.string().nullish(),
441
425
  maximum: z.number().nullish(),
@@ -445,7 +429,19 @@ export const zIntegerPropertySchema = z.looseObject({
445
429
  /**
446
430
  * Response to `terminal/kill` method
447
431
  */
448
- export const zKillTerminalResponse = z.looseObject({
432
+ export const zKillTerminalResponse = z.object({
433
+ _meta: z.record(z.string(), z.unknown()).nullish(),
434
+ });
435
+ /**
436
+ * **UNSTABLE**
437
+ *
438
+ * This capability is not part of the spec yet, and may be removed or changed at any point.
439
+ *
440
+ * Request parameters for `providers/list`.
441
+ *
442
+ * @experimental
443
+ */
444
+ export const zListProvidersRequest = z.object({
449
445
  _meta: z.record(z.string(), z.unknown()).nullish(),
450
446
  });
451
447
  /**
@@ -453,11 +449,34 @@ export const zKillTerminalResponse = z.looseObject({
453
449
  *
454
450
  * Only available if the Agent supports the `sessionCapabilities.list` capability.
455
451
  */
456
- export const zListSessionsRequest = z.looseObject({
452
+ export const zListSessionsRequest = z.object({
457
453
  _meta: z.record(z.string(), z.unknown()).nullish(),
454
+ additionalDirectories: z.array(z.string()).optional(),
458
455
  cursor: z.string().nullish(),
459
456
  cwd: z.string().nullish(),
460
457
  });
458
+ /**
459
+ * **UNSTABLE**
460
+ *
461
+ * This capability is not part of the spec yet, and may be removed or changed at any point.
462
+ *
463
+ * Well-known API protocol identifiers for LLM providers.
464
+ *
465
+ * Agents and clients MUST handle unknown protocol identifiers gracefully.
466
+ *
467
+ * Protocol names beginning with `_` are free for custom use, like other ACP extension methods.
468
+ * Protocol names that do not begin with `_` are reserved for the ACP spec.
469
+ *
470
+ * @experimental
471
+ */
472
+ export const zLlmProtocol = z.union([
473
+ z.literal("anthropic"),
474
+ z.literal("openai"),
475
+ z.literal("azure"),
476
+ z.literal("vertex"),
477
+ z.literal("bedrock"),
478
+ z.string(),
479
+ ]);
461
480
  /**
462
481
  * **UNSTABLE**
463
482
  *
@@ -469,7 +488,7 @@ export const zListSessionsRequest = z.looseObject({
469
488
  *
470
489
  * @experimental
471
490
  */
472
- export const zLogoutCapabilities = z.looseObject({
491
+ export const zLogoutCapabilities = z.object({
473
492
  _meta: z.record(z.string(), z.unknown()).nullish(),
474
493
  });
475
494
  /**
@@ -481,7 +500,7 @@ export const zLogoutCapabilities = z.looseObject({
481
500
  *
482
501
  * @experimental
483
502
  */
484
- export const zAgentAuthCapabilities = z.looseObject({
503
+ export const zAgentAuthCapabilities = z.object({
485
504
  _meta: z.record(z.string(), z.unknown()).nullish(),
486
505
  logout: zLogoutCapabilities.nullish(),
487
506
  });
@@ -496,7 +515,7 @@ export const zAgentAuthCapabilities = z.looseObject({
496
515
  *
497
516
  * @experimental
498
517
  */
499
- export const zLogoutRequest = z.looseObject({
518
+ export const zLogoutRequest = z.object({
500
519
  _meta: z.record(z.string(), z.unknown()).nullish(),
501
520
  });
502
521
  /**
@@ -508,13 +527,13 @@ export const zLogoutRequest = z.looseObject({
508
527
  *
509
528
  * @experimental
510
529
  */
511
- export const zLogoutResponse = z.looseObject({
530
+ export const zLogoutResponse = z.object({
512
531
  _meta: z.record(z.string(), z.unknown()).nullish(),
513
532
  });
514
533
  /**
515
534
  * MCP capabilities supported by the agent
516
535
  */
517
- export const zMcpCapabilities = z.looseObject({
536
+ export const zMcpCapabilities = z.object({
518
537
  _meta: z.record(z.string(), z.unknown()).nullish(),
519
538
  http: z.boolean().optional().default(false),
520
539
  sse: z.boolean().optional().default(false),
@@ -522,7 +541,7 @@ export const zMcpCapabilities = z.looseObject({
522
541
  /**
523
542
  * HTTP transport configuration for MCP.
524
543
  */
525
- export const zMcpServerHttp = z.looseObject({
544
+ export const zMcpServerHttp = z.object({
526
545
  _meta: z.record(z.string(), z.unknown()).nullish(),
527
546
  headers: z.array(zHttpHeader),
528
547
  name: z.string(),
@@ -531,7 +550,7 @@ export const zMcpServerHttp = z.looseObject({
531
550
  /**
532
551
  * SSE transport configuration for MCP.
533
552
  */
534
- export const zMcpServerSse = z.looseObject({
553
+ export const zMcpServerSse = z.object({
535
554
  _meta: z.record(z.string(), z.unknown()).nullish(),
536
555
  headers: z.array(zHttpHeader),
537
556
  name: z.string(),
@@ -540,7 +559,7 @@ export const zMcpServerSse = z.looseObject({
540
559
  /**
541
560
  * Stdio transport configuration for MCP.
542
561
  */
543
- export const zMcpServerStdio = z.looseObject({
562
+ export const zMcpServerStdio = z.object({
544
563
  _meta: z.record(z.string(), z.unknown()).nullish(),
545
564
  args: z.array(z.string()),
546
565
  command: z.string(),
@@ -556,10 +575,10 @@ export const zMcpServerStdio = z.looseObject({
556
575
  * See protocol docs: [MCP Servers](https://agentclientprotocol.com/protocol/session-setup#mcp-servers)
557
576
  */
558
577
  export const zMcpServer = z.union([
559
- zMcpServerHttp.and(z.looseObject({
578
+ zMcpServerHttp.and(z.object({
560
579
  type: z.literal("http"),
561
580
  })),
562
- zMcpServerSse.and(z.looseObject({
581
+ zMcpServerSse.and(z.object({
563
582
  type: z.literal("sse"),
564
583
  })),
565
584
  zMcpServerStdio,
@@ -583,26 +602,228 @@ export const zModelId = z.string();
583
602
  *
584
603
  * @experimental
585
604
  */
586
- export const zModelInfo = z.looseObject({
605
+ export const zModelInfo = z.object({
587
606
  _meta: z.record(z.string(), z.unknown()).nullish(),
588
607
  description: z.string().nullish(),
589
608
  modelId: zModelId,
590
609
  name: z.string(),
591
610
  });
611
+ /**
612
+ * Severity of a diagnostic.
613
+ */
614
+ export const zNesDiagnosticSeverity = z.union([
615
+ z.literal("error"),
616
+ z.literal("warning"),
617
+ z.literal("information"),
618
+ z.literal("hint"),
619
+ ]);
620
+ /**
621
+ * Capabilities for diagnostics context.
622
+ */
623
+ export const zNesDiagnosticsCapabilities = z.object({
624
+ _meta: z.record(z.string(), z.unknown()).nullish(),
625
+ });
626
+ /**
627
+ * Marker for `document/didClose` capability support.
628
+ */
629
+ export const zNesDocumentDidCloseCapabilities = z.object({
630
+ _meta: z.record(z.string(), z.unknown()).nullish(),
631
+ });
632
+ /**
633
+ * Marker for `document/didFocus` capability support.
634
+ */
635
+ export const zNesDocumentDidFocusCapabilities = z.object({
636
+ _meta: z.record(z.string(), z.unknown()).nullish(),
637
+ });
638
+ /**
639
+ * Marker for `document/didOpen` capability support.
640
+ */
641
+ export const zNesDocumentDidOpenCapabilities = z.object({
642
+ _meta: z.record(z.string(), z.unknown()).nullish(),
643
+ });
644
+ /**
645
+ * Marker for `document/didSave` capability support.
646
+ */
647
+ export const zNesDocumentDidSaveCapabilities = z.object({
648
+ _meta: z.record(z.string(), z.unknown()).nullish(),
649
+ });
650
+ /**
651
+ * Capabilities for edit history context.
652
+ */
653
+ export const zNesEditHistoryCapabilities = z.object({
654
+ _meta: z.record(z.string(), z.unknown()).nullish(),
655
+ maxCount: z
656
+ .number()
657
+ .int()
658
+ .gte(0)
659
+ .max(4294967295, {
660
+ message: "Invalid value: Expected uint32 to be <= 4294967295",
661
+ })
662
+ .nullish(),
663
+ });
664
+ /**
665
+ * An entry in the edit history.
666
+ */
667
+ export const zNesEditHistoryEntry = z.object({
668
+ diff: z.string(),
669
+ uri: z.string(),
670
+ });
671
+ /**
672
+ * A code excerpt from a file.
673
+ */
674
+ export const zNesExcerpt = z.object({
675
+ endLine: z.number().int().gte(0).max(4294967295, {
676
+ message: "Invalid value: Expected uint32 to be <= 4294967295",
677
+ }),
678
+ startLine: z.number().int().gte(0).max(4294967295, {
679
+ message: "Invalid value: Expected uint32 to be <= 4294967295",
680
+ }),
681
+ text: z.string(),
682
+ });
683
+ /**
684
+ * Marker for jump suggestion support.
685
+ */
686
+ export const zNesJumpCapabilities = z.object({
687
+ _meta: z.record(z.string(), z.unknown()).nullish(),
688
+ });
689
+ /**
690
+ * Capabilities for open files context.
691
+ */
692
+ export const zNesOpenFilesCapabilities = z.object({
693
+ _meta: z.record(z.string(), z.unknown()).nullish(),
694
+ });
695
+ /**
696
+ * A recently accessed file.
697
+ */
698
+ export const zNesRecentFile = z.object({
699
+ languageId: z.string(),
700
+ text: z.string(),
701
+ uri: z.string(),
702
+ });
703
+ /**
704
+ * Capabilities for recent files context.
705
+ */
706
+ export const zNesRecentFilesCapabilities = z.object({
707
+ _meta: z.record(z.string(), z.unknown()).nullish(),
708
+ maxCount: z
709
+ .number()
710
+ .int()
711
+ .gte(0)
712
+ .max(4294967295, {
713
+ message: "Invalid value: Expected uint32 to be <= 4294967295",
714
+ })
715
+ .nullish(),
716
+ });
717
+ /**
718
+ * The reason a suggestion was rejected.
719
+ */
720
+ export const zNesRejectReason = z.union([
721
+ z.literal("rejected"),
722
+ z.literal("ignored"),
723
+ z.literal("replaced"),
724
+ z.literal("cancelled"),
725
+ ]);
726
+ /**
727
+ * A related code snippet from a file.
728
+ */
729
+ export const zNesRelatedSnippet = z.object({
730
+ excerpts: z.array(zNesExcerpt),
731
+ uri: z.string(),
732
+ });
733
+ /**
734
+ * Capabilities for related snippets context.
735
+ */
736
+ export const zNesRelatedSnippetsCapabilities = z.object({
737
+ _meta: z.record(z.string(), z.unknown()).nullish(),
738
+ });
739
+ /**
740
+ * Marker for rename suggestion support.
741
+ */
742
+ export const zNesRenameCapabilities = z.object({
743
+ _meta: z.record(z.string(), z.unknown()).nullish(),
744
+ });
745
+ /**
746
+ * Repository metadata for an NES session.
747
+ */
748
+ export const zNesRepository = z.object({
749
+ name: z.string(),
750
+ owner: z.string(),
751
+ remoteUrl: z.string(),
752
+ });
753
+ /**
754
+ * Marker for search and replace suggestion support.
755
+ */
756
+ export const zNesSearchAndReplaceCapabilities = z.object({
757
+ _meta: z.record(z.string(), z.unknown()).nullish(),
758
+ });
759
+ /**
760
+ * NES capabilities advertised by the client during initialization.
761
+ */
762
+ export const zClientNesCapabilities = z.object({
763
+ _meta: z.record(z.string(), z.unknown()).nullish(),
764
+ jump: zNesJumpCapabilities.nullish(),
765
+ rename: zNesRenameCapabilities.nullish(),
766
+ searchAndReplace: zNesSearchAndReplaceCapabilities.nullish(),
767
+ });
768
+ /**
769
+ * A search-and-replace suggestion.
770
+ */
771
+ export const zNesSearchAndReplaceSuggestion = z.object({
772
+ id: z.string(),
773
+ isRegex: z.boolean().nullish(),
774
+ replace: z.string(),
775
+ search: z.string(),
776
+ uri: z.string(),
777
+ });
778
+ /**
779
+ * What triggered the suggestion request.
780
+ */
781
+ export const zNesTriggerKind = z.union([
782
+ z.literal("automatic"),
783
+ z.literal("diagnostic"),
784
+ z.literal("manual"),
785
+ ]);
786
+ /**
787
+ * Capabilities for user actions context.
788
+ */
789
+ export const zNesUserActionsCapabilities = z.object({
790
+ _meta: z.record(z.string(), z.unknown()).nullish(),
791
+ maxCount: z
792
+ .number()
793
+ .int()
794
+ .gte(0)
795
+ .max(4294967295, {
796
+ message: "Invalid value: Expected uint32 to be <= 4294967295",
797
+ })
798
+ .nullish(),
799
+ });
800
+ /**
801
+ * Context capabilities the agent wants attached to each suggestion request.
802
+ */
803
+ export const zNesContextCapabilities = z.object({
804
+ _meta: z.record(z.string(), z.unknown()).nullish(),
805
+ diagnostics: zNesDiagnosticsCapabilities.nullish(),
806
+ editHistory: zNesEditHistoryCapabilities.nullish(),
807
+ openFiles: zNesOpenFilesCapabilities.nullish(),
808
+ recentFiles: zNesRecentFilesCapabilities.nullish(),
809
+ relatedSnippets: zNesRelatedSnippetsCapabilities.nullish(),
810
+ userActions: zNesUserActionsCapabilities.nullish(),
811
+ });
592
812
  /**
593
813
  * Request parameters for creating a new session.
594
814
  *
595
815
  * See protocol docs: [Creating a Session](https://agentclientprotocol.com/protocol/session-setup#creating-a-session)
596
816
  */
597
- export const zNewSessionRequest = z.looseObject({
817
+ export const zNewSessionRequest = z.object({
598
818
  _meta: z.record(z.string(), z.unknown()).nullish(),
819
+ additionalDirectories: z.array(z.string()).optional(),
599
820
  cwd: z.string(),
600
821
  mcpServers: z.array(zMcpServer),
601
822
  });
602
823
  /**
603
824
  * Schema for number (floating-point) properties in an elicitation form.
604
825
  */
605
- export const zNumberPropertySchema = z.looseObject({
826
+ export const zNumberPropertySchema = z.object({
606
827
  default: z.number().nullish(),
607
828
  description: z.string().nullish(),
608
829
  maximum: z.number().nullish(),
@@ -627,7 +848,7 @@ export const zPermissionOptionKind = z.union([
627
848
  /**
628
849
  * An option presented to the user when requesting permission.
629
850
  */
630
- export const zPermissionOption = z.looseObject({
851
+ export const zPermissionOption = z.object({
631
852
  _meta: z.record(z.string(), z.unknown()).nullish(),
632
853
  kind: zPermissionOptionKind,
633
854
  name: z.string(),
@@ -663,7 +884,7 @@ export const zPlanEntryStatus = z.union([
663
884
  * as part of fulfilling the user's request.
664
885
  * See protocol docs: [Plan Entries](https://agentclientprotocol.com/protocol/agent-plan#plan-entries)
665
886
  */
666
- export const zPlanEntry = z.looseObject({
887
+ export const zPlanEntry = z.object({
667
888
  _meta: z.record(z.string(), z.unknown()).nullish(),
668
889
  content: z.string(),
669
890
  priority: zPlanEntryPriority,
@@ -678,10 +899,78 @@ export const zPlanEntry = z.looseObject({
678
899
  *
679
900
  * See protocol docs: [Agent Plan](https://agentclientprotocol.com/protocol/agent-plan)
680
901
  */
681
- export const zPlan = z.looseObject({
902
+ export const zPlan = z.object({
682
903
  _meta: z.record(z.string(), z.unknown()).nullish(),
683
904
  entries: z.array(zPlanEntry),
684
905
  });
906
+ /**
907
+ * A zero-based position in a text document.
908
+ *
909
+ * The meaning of `character` depends on the negotiated position encoding.
910
+ */
911
+ export const zPosition = z.object({
912
+ character: z.number().int().gte(0).max(4294967295, {
913
+ message: "Invalid value: Expected uint32 to be <= 4294967295",
914
+ }),
915
+ line: z.number().int().gte(0).max(4294967295, {
916
+ message: "Invalid value: Expected uint32 to be <= 4294967295",
917
+ }),
918
+ });
919
+ /**
920
+ * A jump-to-location suggestion.
921
+ */
922
+ export const zNesJumpSuggestion = z.object({
923
+ id: z.string(),
924
+ position: zPosition,
925
+ uri: z.string(),
926
+ });
927
+ /**
928
+ * A rename symbol suggestion.
929
+ */
930
+ export const zNesRenameSuggestion = z.object({
931
+ id: z.string(),
932
+ newName: z.string(),
933
+ position: zPosition,
934
+ uri: z.string(),
935
+ });
936
+ /**
937
+ * A user action (typing, cursor movement, etc.).
938
+ */
939
+ export const zNesUserAction = z.object({
940
+ action: z.string(),
941
+ position: zPosition,
942
+ timestampMs: z.number(),
943
+ uri: z.string(),
944
+ });
945
+ /**
946
+ * The encoding used for character offsets in positions.
947
+ *
948
+ * Follows the same conventions as LSP 3.17. The default is UTF-16.
949
+ */
950
+ export const zPositionEncodingKind = z.union([
951
+ z.literal("utf-16"),
952
+ z.literal("utf-32"),
953
+ z.literal("utf-8"),
954
+ ]);
955
+ /**
956
+ * Capabilities supported by the client.
957
+ *
958
+ * Advertised during initialization to inform the agent about
959
+ * available features and methods.
960
+ *
961
+ * See protocol docs: [Client Capabilities](https://agentclientprotocol.com/protocol/initialization#client-capabilities)
962
+ */
963
+ export const zClientCapabilities = z.object({
964
+ _meta: z.record(z.string(), z.unknown()).nullish(),
965
+ auth: zAuthCapabilities.optional().default({ terminal: false }),
966
+ elicitation: zElicitationCapabilities.nullish(),
967
+ fs: zFileSystemCapabilities
968
+ .optional()
969
+ .default({ readTextFile: false, writeTextFile: false }),
970
+ nes: zClientNesCapabilities.nullish(),
971
+ positionEncodings: z.array(zPositionEncodingKind).optional(),
972
+ terminal: z.boolean().optional().default(false),
973
+ });
685
974
  /**
686
975
  * Prompt capabilities supported by the agent in `session/prompt` requests.
687
976
  *
@@ -696,7 +985,7 @@ export const zPlan = z.looseObject({
696
985
  *
697
986
  * See protocol docs: [Prompt Capabilities](https://agentclientprotocol.com/protocol/initialization#prompt-capabilities)
698
987
  */
699
- export const zPromptCapabilities = z.looseObject({
988
+ export const zPromptCapabilities = z.object({
700
989
  _meta: z.record(z.string(), z.unknown()).nullish(),
701
990
  audio: z.boolean().optional().default(false),
702
991
  embeddedContext: z.boolean().optional().default(false),
@@ -716,7 +1005,7 @@ export const zProtocolVersion = z.number().int().gte(0).lte(65535);
716
1005
  *
717
1006
  * See protocol docs: [Initialization](https://agentclientprotocol.com/protocol/initialization)
718
1007
  */
719
- export const zInitializeRequest = z.looseObject({
1008
+ export const zInitializeRequest = z.object({
720
1009
  _meta: z.record(z.string(), z.unknown()).nullish(),
721
1010
  clientCapabilities: zClientCapabilities.optional().default({
722
1011
  auth: { terminal: false },
@@ -726,17 +1015,143 @@ export const zInitializeRequest = z.looseObject({
726
1015
  clientInfo: zImplementation.nullish(),
727
1016
  protocolVersion: zProtocolVersion,
728
1017
  });
1018
+ /**
1019
+ * **UNSTABLE**
1020
+ *
1021
+ * This capability is not part of the spec yet, and may be removed or changed at any point.
1022
+ *
1023
+ * Current effective non-secret routing configuration for a provider.
1024
+ *
1025
+ * @experimental
1026
+ */
1027
+ export const zProviderCurrentConfig = z.object({
1028
+ apiType: zLlmProtocol,
1029
+ baseUrl: z.string(),
1030
+ });
1031
+ /**
1032
+ * **UNSTABLE**
1033
+ *
1034
+ * This capability is not part of the spec yet, and may be removed or changed at any point.
1035
+ *
1036
+ * Information about a configurable LLM provider.
1037
+ *
1038
+ * @experimental
1039
+ */
1040
+ export const zProviderInfo = z.object({
1041
+ _meta: z.record(z.string(), z.unknown()).nullish(),
1042
+ current: zProviderCurrentConfig.nullish(),
1043
+ id: z.string(),
1044
+ required: z.boolean(),
1045
+ supported: z.array(zLlmProtocol),
1046
+ });
1047
+ /**
1048
+ * **UNSTABLE**
1049
+ *
1050
+ * This capability is not part of the spec yet, and may be removed or changed at any point.
1051
+ *
1052
+ * Response to `providers/list`.
1053
+ *
1054
+ * @experimental
1055
+ */
1056
+ export const zListProvidersResponse = z.object({
1057
+ _meta: z.record(z.string(), z.unknown()).nullish(),
1058
+ providers: z.array(zProviderInfo),
1059
+ });
1060
+ /**
1061
+ * **UNSTABLE**
1062
+ *
1063
+ * This capability is not part of the spec yet, and may be removed or changed at any point.
1064
+ *
1065
+ * Provider configuration capabilities supported by the agent.
1066
+ *
1067
+ * By supplying `{}` it means that the agent supports provider configuration methods.
1068
+ *
1069
+ * @experimental
1070
+ */
1071
+ export const zProvidersCapabilities = z.object({
1072
+ _meta: z.record(z.string(), z.unknown()).nullish(),
1073
+ });
1074
+ /**
1075
+ * A range in a text document, expressed as start and end positions.
1076
+ */
1077
+ export const zRange = z.object({
1078
+ end: zPosition,
1079
+ start: zPosition,
1080
+ });
1081
+ /**
1082
+ * A diagnostic (error, warning, etc.).
1083
+ */
1084
+ export const zNesDiagnostic = z.object({
1085
+ message: z.string(),
1086
+ range: zRange,
1087
+ severity: zNesDiagnosticSeverity,
1088
+ uri: z.string(),
1089
+ });
1090
+ /**
1091
+ * An open file in the editor.
1092
+ */
1093
+ export const zNesOpenFile = z.object({
1094
+ languageId: z.string(),
1095
+ lastFocusedMs: z.number().nullish(),
1096
+ uri: z.string(),
1097
+ visibleRange: zRange.nullish(),
1098
+ });
1099
+ /**
1100
+ * Context attached to a suggestion request.
1101
+ */
1102
+ export const zNesSuggestContext = z.object({
1103
+ _meta: z.record(z.string(), z.unknown()).nullish(),
1104
+ diagnostics: z.array(zNesDiagnostic).nullish(),
1105
+ editHistory: z.array(zNesEditHistoryEntry).nullish(),
1106
+ openFiles: z.array(zNesOpenFile).nullish(),
1107
+ recentFiles: z.array(zNesRecentFile).nullish(),
1108
+ relatedSnippets: z.array(zNesRelatedSnippet).nullish(),
1109
+ userActions: z.array(zNesUserAction).nullish(),
1110
+ });
1111
+ /**
1112
+ * A text edit within a suggestion.
1113
+ */
1114
+ export const zNesTextEdit = z.object({
1115
+ newText: z.string(),
1116
+ range: zRange,
1117
+ });
1118
+ /**
1119
+ * A text edit suggestion.
1120
+ */
1121
+ export const zNesEditSuggestion = z.object({
1122
+ cursorPosition: zPosition.nullish(),
1123
+ edits: z.array(zNesTextEdit),
1124
+ id: z.string(),
1125
+ uri: z.string(),
1126
+ });
1127
+ /**
1128
+ * A suggestion returned by the agent.
1129
+ */
1130
+ export const zNesSuggestion = z.union([
1131
+ zNesEditSuggestion.and(z.object({
1132
+ kind: z.literal("edit"),
1133
+ })),
1134
+ zNesJumpSuggestion.and(z.object({
1135
+ kind: z.literal("jump"),
1136
+ })),
1137
+ zNesRenameSuggestion.and(z.object({
1138
+ kind: z.literal("rename"),
1139
+ })),
1140
+ zNesSearchAndReplaceSuggestion.and(z.object({
1141
+ kind: z.literal("searchAndReplace"),
1142
+ })),
1143
+ ]);
729
1144
  /**
730
1145
  * Response containing the contents of a text file.
731
1146
  */
732
- export const zReadTextFileResponse = z.looseObject({
1147
+ export const zReadTextFileResponse = z.object({
733
1148
  _meta: z.record(z.string(), z.unknown()).nullish(),
734
1149
  content: z.string(),
735
1150
  });
736
1151
  /**
737
1152
  * Response to terminal/release method
738
1153
  */
739
- export const zReleaseTerminalResponse = z.looseObject({
1154
+ export const zReleaseTerminalResponse = z.object({
740
1155
  _meta: z.record(z.string(), z.unknown()).nullish(),
741
1156
  });
742
1157
  /**
@@ -762,10 +1177,23 @@ export const zRequestId = z.union([z.number(), z.string()]).nullable();
762
1177
  *
763
1178
  * @experimental
764
1179
  */
765
- export const zCancelRequestNotification = z.looseObject({
1180
+ export const zCancelRequestNotification = z.object({
766
1181
  _meta: z.record(z.string(), z.unknown()).nullish(),
767
1182
  requestId: zRequestId,
768
1183
  });
1184
+ /**
1185
+ * **UNSTABLE**
1186
+ *
1187
+ * This capability is not part of the spec yet, and may be removed or changed at any point.
1188
+ *
1189
+ * Request-scoped elicitation, tied to a specific JSON-RPC request outside of a session
1190
+ * (e.g., during auth/configuration phases before any session is started).
1191
+ *
1192
+ * @experimental
1193
+ */
1194
+ export const zElicitationRequestScope = z.object({
1195
+ requestId: zRequestId,
1196
+ });
769
1197
  /**
770
1198
  * The sender or recipient of messages and data in a conversation.
771
1199
  */
@@ -773,7 +1201,7 @@ export const zRole = z.enum(["assistant", "user"]);
773
1201
  /**
774
1202
  * Optional annotations for the client. The client can use annotations to inform how objects are used or displayed
775
1203
  */
776
- export const zAnnotations = z.looseObject({
1204
+ export const zAnnotations = z.object({
777
1205
  _meta: z.record(z.string(), z.unknown()).nullish(),
778
1206
  audience: z.array(zRole).nullish(),
779
1207
  lastModified: z.string().nullish(),
@@ -782,7 +1210,7 @@ export const zAnnotations = z.looseObject({
782
1210
  /**
783
1211
  * Audio provided to or from an LLM.
784
1212
  */
785
- export const zAudioContent = z.looseObject({
1213
+ export const zAudioContent = z.object({
786
1214
  _meta: z.record(z.string(), z.unknown()).nullish(),
787
1215
  annotations: zAnnotations.nullish(),
788
1216
  data: z.string(),
@@ -791,7 +1219,7 @@ export const zAudioContent = z.looseObject({
791
1219
  /**
792
1220
  * An image provided to or from an LLM.
793
1221
  */
794
- export const zImageContent = z.looseObject({
1222
+ export const zImageContent = z.object({
795
1223
  _meta: z.record(z.string(), z.unknown()).nullish(),
796
1224
  annotations: zAnnotations.nullish(),
797
1225
  data: z.string(),
@@ -801,7 +1229,7 @@ export const zImageContent = z.looseObject({
801
1229
  /**
802
1230
  * A resource that the server is capable of reading, included in a prompt or tool call result.
803
1231
  */
804
- export const zResourceLink = z.looseObject({
1232
+ export const zResourceLink = z.object({
805
1233
  _meta: z.record(z.string(), z.unknown()).nullish(),
806
1234
  annotations: zAnnotations.nullish(),
807
1235
  description: z.string().nullish(),
@@ -814,7 +1242,7 @@ export const zResourceLink = z.looseObject({
814
1242
  /**
815
1243
  * The user selected one of the provided options.
816
1244
  */
817
- export const zSelectedPermissionOutcome = z.looseObject({
1245
+ export const zSelectedPermissionOutcome = z.object({
818
1246
  _meta: z.record(z.string(), z.unknown()).nullish(),
819
1247
  optionId: zPermissionOptionId,
820
1248
  });
@@ -822,17 +1250,17 @@ export const zSelectedPermissionOutcome = z.looseObject({
822
1250
  * The outcome of a permission request.
823
1251
  */
824
1252
  export const zRequestPermissionOutcome = z.union([
825
- z.looseObject({
1253
+ z.object({
826
1254
  outcome: z.literal("cancelled"),
827
1255
  }),
828
- zSelectedPermissionOutcome.and(z.looseObject({
1256
+ zSelectedPermissionOutcome.and(z.object({
829
1257
  outcome: z.literal("selected"),
830
1258
  })),
831
1259
  ]);
832
1260
  /**
833
1261
  * Response to a permission request.
834
1262
  */
835
- export const zRequestPermissionResponse = z.looseObject({
1263
+ export const zRequestPermissionResponse = z.object({
836
1264
  _meta: z.record(z.string(), z.unknown()).nullish(),
837
1265
  outcome: zRequestPermissionOutcome,
838
1266
  });
@@ -841,13 +1269,22 @@ export const zRequestPermissionResponse = z.looseObject({
841
1269
  *
842
1270
  * This capability is not part of the spec yet, and may be removed or changed at any point.
843
1271
  *
844
- * Capabilities for the `session/close` method.
1272
+ * Capabilities for additional session directories support.
845
1273
  *
846
- * By supplying `{}` it means that the agent supports closing of sessions.
1274
+ * By supplying `{}` it means that the agent supports the `additionalDirectories` field on
1275
+ * supported session lifecycle requests and `session/list`.
847
1276
  *
848
1277
  * @experimental
849
1278
  */
850
- export const zSessionCloseCapabilities = z.looseObject({
1279
+ export const zSessionAdditionalDirectoriesCapabilities = z.object({
1280
+ _meta: z.record(z.string(), z.unknown()).nullish(),
1281
+ });
1282
+ /**
1283
+ * Capabilities for the `session/close` method.
1284
+ *
1285
+ * By supplying `{}` it means that the agent supports closing of sessions.
1286
+ */
1287
+ export const zSessionCloseCapabilities = z.object({
851
1288
  _meta: z.record(z.string(), z.unknown()).nullish(),
852
1289
  });
853
1290
  /**
@@ -859,7 +1296,7 @@ export const zSessionCloseCapabilities = z.looseObject({
859
1296
  *
860
1297
  * @experimental
861
1298
  */
862
- export const zSessionConfigBoolean = z.looseObject({
1299
+ export const zSessionConfigBoolean = z.object({
863
1300
  currentValue: z.boolean(),
864
1301
  });
865
1302
  /**
@@ -894,7 +1331,7 @@ export const zSessionConfigValueId = z.string();
894
1331
  /**
895
1332
  * A possible value for a session configuration option.
896
1333
  */
897
- export const zSessionConfigSelectOption = z.looseObject({
1334
+ export const zSessionConfigSelectOption = z.object({
898
1335
  _meta: z.record(z.string(), z.unknown()).nullish(),
899
1336
  description: z.string().nullish(),
900
1337
  name: z.string(),
@@ -903,7 +1340,7 @@ export const zSessionConfigSelectOption = z.looseObject({
903
1340
  /**
904
1341
  * A group of possible values for a session configuration option.
905
1342
  */
906
- export const zSessionConfigSelectGroup = z.looseObject({
1343
+ export const zSessionConfigSelectGroup = z.object({
907
1344
  _meta: z.record(z.string(), z.unknown()).nullish(),
908
1345
  group: zSessionConfigGroupId,
909
1346
  name: z.string(),
@@ -919,18 +1356,21 @@ export const zSessionConfigSelectOptions = z.union([
919
1356
  /**
920
1357
  * A single-value selector (dropdown) session configuration option payload.
921
1358
  */
922
- export const zSessionConfigSelect = z.looseObject({
1359
+ export const zSessionConfigSelect = z.object({
923
1360
  currentValue: zSessionConfigValueId,
924
1361
  options: zSessionConfigSelectOptions,
925
1362
  });
1363
+ /**
1364
+ * A session configuration option selector and its current state.
1365
+ */
926
1366
  export const zSessionConfigOption = z.intersection(z.union([
927
- zSessionConfigSelect.and(z.looseObject({
1367
+ zSessionConfigSelect.and(z.object({
928
1368
  type: z.literal("select"),
929
1369
  })),
930
- zSessionConfigBoolean.and(z.looseObject({
1370
+ zSessionConfigBoolean.and(z.object({
931
1371
  type: z.literal("boolean"),
932
1372
  })),
933
- ]), z.looseObject({
1373
+ ]), z.object({
934
1374
  _meta: z.record(z.string(), z.unknown()).nullish(),
935
1375
  category: zSessionConfigOptionCategory.nullish(),
936
1376
  description: z.string().nullish(),
@@ -940,7 +1380,7 @@ export const zSessionConfigOption = z.intersection(z.union([
940
1380
  /**
941
1381
  * Session configuration options have been updated.
942
1382
  */
943
- export const zConfigOptionUpdate = z.looseObject({
1383
+ export const zConfigOptionUpdate = z.object({
944
1384
  _meta: z.record(z.string(), z.unknown()).nullish(),
945
1385
  configOptions: z.array(zSessionConfigOption),
946
1386
  });
@@ -955,7 +1395,7 @@ export const zConfigOptionUpdate = z.looseObject({
955
1395
  *
956
1396
  * @experimental
957
1397
  */
958
- export const zSessionForkCapabilities = z.looseObject({
1398
+ export const zSessionForkCapabilities = z.object({
959
1399
  _meta: z.record(z.string(), z.unknown()).nullish(),
960
1400
  });
961
1401
  /**
@@ -967,49 +1407,95 @@ export const zSessionForkCapabilities = z.looseObject({
967
1407
  * See protocol docs: [Session ID](https://agentclientprotocol.com/protocol/session-setup#session-id)
968
1408
  */
969
1409
  export const zSessionId = z.string();
1410
+ /**
1411
+ * Notification sent when a suggestion is accepted.
1412
+ */
1413
+ export const zAcceptNesNotification = z.object({
1414
+ _meta: z.record(z.string(), z.unknown()).nullish(),
1415
+ id: z.string(),
1416
+ sessionId: zSessionId,
1417
+ });
970
1418
  /**
971
1419
  * Notification to cancel ongoing operations for a session.
972
1420
  *
973
1421
  * See protocol docs: [Cancellation](https://agentclientprotocol.com/protocol/prompt-turn#cancellation)
974
1422
  */
975
- export const zCancelNotification = z.looseObject({
1423
+ export const zCancelNotification = z.object({
976
1424
  _meta: z.record(z.string(), z.unknown()).nullish(),
977
1425
  sessionId: zSessionId,
978
1426
  });
979
- export const zClientNotification = z.looseObject({
980
- method: z.string(),
981
- params: z.union([zCancelNotification, zExtNotification]).nullish(),
982
- });
983
1427
  /**
984
- * **UNSTABLE**
985
- *
986
- * This capability is not part of the spec yet, and may be removed or changed at any point.
1428
+ * Request to close an NES session.
987
1429
  *
1430
+ * The agent **must** cancel any ongoing work related to the NES session
1431
+ * and then free up any resources associated with the session.
1432
+ */
1433
+ export const zCloseNesRequest = z.object({
1434
+ _meta: z.record(z.string(), z.unknown()).nullish(),
1435
+ sessionId: zSessionId,
1436
+ });
1437
+ /**
988
1438
  * Request parameters for closing an active session.
989
1439
  *
990
1440
  * If supported, the agent **must** cancel any ongoing work related to the session
991
1441
  * (treat it as if `session/cancel` was called) and then free up any resources
992
1442
  * associated with the session.
993
1443
  *
994
- * Only available if the Agent supports the `session.close` capability.
995
- *
996
- * @experimental
1444
+ * Only available if the Agent supports the `sessionCapabilities.close` capability.
997
1445
  */
998
- export const zCloseSessionRequest = z.looseObject({
1446
+ export const zCloseSessionRequest = z.object({
999
1447
  _meta: z.record(z.string(), z.unknown()).nullish(),
1000
1448
  sessionId: zSessionId,
1001
1449
  });
1002
1450
  /**
1003
1451
  * Request to create a new terminal and execute a command.
1004
1452
  */
1005
- export const zCreateTerminalRequest = z.looseObject({
1453
+ export const zCreateTerminalRequest = z.object({
1454
+ _meta: z.record(z.string(), z.unknown()).nullish(),
1455
+ args: z.array(z.string()).optional(),
1456
+ command: z.string(),
1457
+ cwd: z.string().nullish(),
1458
+ env: z.array(zEnvVariable).optional(),
1459
+ outputByteLimit: z.number().nullish(),
1460
+ sessionId: zSessionId,
1461
+ });
1462
+ /**
1463
+ * Notification sent when a file is closed.
1464
+ */
1465
+ export const zDidCloseDocumentNotification = z.object({
1466
+ _meta: z.record(z.string(), z.unknown()).nullish(),
1467
+ sessionId: zSessionId,
1468
+ uri: z.string(),
1469
+ });
1470
+ /**
1471
+ * Notification sent when a file becomes the active editor tab.
1472
+ */
1473
+ export const zDidFocusDocumentNotification = z.object({
1474
+ _meta: z.record(z.string(), z.unknown()).nullish(),
1475
+ position: zPosition,
1476
+ sessionId: zSessionId,
1477
+ uri: z.string(),
1478
+ version: z.number(),
1479
+ visibleRange: zRange,
1480
+ });
1481
+ /**
1482
+ * Notification sent when a file is opened in the editor.
1483
+ */
1484
+ export const zDidOpenDocumentNotification = z.object({
1485
+ _meta: z.record(z.string(), z.unknown()).nullish(),
1486
+ languageId: z.string(),
1487
+ sessionId: zSessionId,
1488
+ text: z.string(),
1489
+ uri: z.string(),
1490
+ version: z.number(),
1491
+ });
1492
+ /**
1493
+ * Notification sent when a file is saved.
1494
+ */
1495
+ export const zDidSaveDocumentNotification = z.object({
1006
1496
  _meta: z.record(z.string(), z.unknown()).nullish(),
1007
- args: z.array(z.string()).optional(),
1008
- command: z.string(),
1009
- cwd: z.string().nullish(),
1010
- env: z.array(zEnvVariable).optional(),
1011
- outputByteLimit: z.number().nullish(),
1012
1497
  sessionId: zSessionId,
1498
+ uri: z.string(),
1013
1499
  });
1014
1500
  /**
1015
1501
  * **UNSTABLE**
@@ -1025,8 +1511,9 @@ export const zCreateTerminalRequest = z.looseObject({
1025
1511
  *
1026
1512
  * @experimental
1027
1513
  */
1028
- export const zForkSessionRequest = z.looseObject({
1514
+ export const zForkSessionRequest = z.object({
1029
1515
  _meta: z.record(z.string(), z.unknown()).nullish(),
1516
+ additionalDirectories: z.array(z.string()).optional(),
1030
1517
  cwd: z.string(),
1031
1518
  mcpServers: z.array(zMcpServer).optional(),
1032
1519
  sessionId: zSessionId,
@@ -1034,7 +1521,7 @@ export const zForkSessionRequest = z.looseObject({
1034
1521
  /**
1035
1522
  * Request to kill a terminal without releasing it.
1036
1523
  */
1037
- export const zKillTerminalRequest = z.looseObject({
1524
+ export const zKillTerminalRequest = z.object({
1038
1525
  _meta: z.record(z.string(), z.unknown()).nullish(),
1039
1526
  sessionId: zSessionId,
1040
1527
  terminalId: z.string(),
@@ -1046,8 +1533,9 @@ export const zKillTerminalRequest = z.looseObject({
1046
1533
  *
1047
1534
  * See protocol docs: [Loading Sessions](https://agentclientprotocol.com/protocol/session-setup#loading-sessions)
1048
1535
  */
1049
- export const zLoadSessionRequest = z.looseObject({
1536
+ export const zLoadSessionRequest = z.object({
1050
1537
  _meta: z.record(z.string(), z.unknown()).nullish(),
1538
+ additionalDirectories: z.array(z.string()).optional(),
1051
1539
  cwd: z.string(),
1052
1540
  mcpServers: z.array(zMcpServer),
1053
1541
  sessionId: zSessionId,
@@ -1057,7 +1545,7 @@ export const zLoadSessionRequest = z.looseObject({
1057
1545
  *
1058
1546
  * Only available if the client supports the `fs.readTextFile` capability.
1059
1547
  */
1060
- export const zReadTextFileRequest = z.looseObject({
1548
+ export const zReadTextFileRequest = z.object({
1061
1549
  _meta: z.record(z.string(), z.unknown()).nullish(),
1062
1550
  limit: z
1063
1551
  .number()
@@ -1078,30 +1566,34 @@ export const zReadTextFileRequest = z.looseObject({
1078
1566
  path: z.string(),
1079
1567
  sessionId: zSessionId,
1080
1568
  });
1569
+ /**
1570
+ * Notification sent when a suggestion is rejected.
1571
+ */
1572
+ export const zRejectNesNotification = z.object({
1573
+ _meta: z.record(z.string(), z.unknown()).nullish(),
1574
+ id: z.string(),
1575
+ reason: zNesRejectReason.nullish(),
1576
+ sessionId: zSessionId,
1577
+ });
1081
1578
  /**
1082
1579
  * Request to release a terminal and free its resources.
1083
1580
  */
1084
- export const zReleaseTerminalRequest = z.looseObject({
1581
+ export const zReleaseTerminalRequest = z.object({
1085
1582
  _meta: z.record(z.string(), z.unknown()).nullish(),
1086
1583
  sessionId: zSessionId,
1087
1584
  terminalId: z.string(),
1088
1585
  });
1089
1586
  /**
1090
- * **UNSTABLE**
1091
- *
1092
- * This capability is not part of the spec yet, and may be removed or changed at any point.
1093
- *
1094
1587
  * Request parameters for resuming an existing session.
1095
1588
  *
1096
1589
  * Resumes an existing session without returning previous messages (unlike `session/load`).
1097
1590
  * This is useful for agents that can resume sessions but don't implement full session loading.
1098
1591
  *
1099
- * Only available if the Agent supports the `session.resume` capability.
1100
- *
1101
- * @experimental
1592
+ * Only available if the Agent supports the `sessionCapabilities.resume` capability.
1102
1593
  */
1103
- export const zResumeSessionRequest = z.looseObject({
1594
+ export const zResumeSessionRequest = z.object({
1104
1595
  _meta: z.record(z.string(), z.unknown()).nullish(),
1596
+ additionalDirectories: z.array(z.string()).optional(),
1105
1597
  cwd: z.string(),
1106
1598
  mcpServers: z.array(zMcpServer).optional(),
1107
1599
  sessionId: zSessionId,
@@ -1109,8 +1601,9 @@ export const zResumeSessionRequest = z.looseObject({
1109
1601
  /**
1110
1602
  * Information about a session returned by session/list
1111
1603
  */
1112
- export const zSessionInfo = z.looseObject({
1604
+ export const zSessionInfo = z.object({
1113
1605
  _meta: z.record(z.string(), z.unknown()).nullish(),
1606
+ additionalDirectories: z.array(z.string()).optional(),
1114
1607
  cwd: z.string(),
1115
1608
  sessionId: zSessionId,
1116
1609
  title: z.string().nullish(),
@@ -1119,7 +1612,7 @@ export const zSessionInfo = z.looseObject({
1119
1612
  /**
1120
1613
  * Response from listing sessions.
1121
1614
  */
1122
- export const zListSessionsResponse = z.looseObject({
1615
+ export const zListSessionsResponse = z.object({
1123
1616
  _meta: z.record(z.string(), z.unknown()).nullish(),
1124
1617
  nextCursor: z.string().nullish(),
1125
1618
  sessions: z.array(zSessionInfo),
@@ -1130,7 +1623,7 @@ export const zListSessionsResponse = z.looseObject({
1130
1623
  * Agents send this notification to update session information like title or custom metadata.
1131
1624
  * This allows clients to display dynamic session names and track session state changes.
1132
1625
  */
1133
- export const zSessionInfoUpdate = z.looseObject({
1626
+ export const zSessionInfoUpdate = z.object({
1134
1627
  _meta: z.record(z.string(), z.unknown()).nullish(),
1135
1628
  title: z.string().nullish(),
1136
1629
  updatedAt: z.string().nullish(),
@@ -1140,7 +1633,7 @@ export const zSessionInfoUpdate = z.looseObject({
1140
1633
  *
1141
1634
  * By supplying `{}` it means that the agent supports listing of sessions.
1142
1635
  */
1143
- export const zSessionListCapabilities = z.looseObject({
1636
+ export const zSessionListCapabilities = z.object({
1144
1637
  _meta: z.record(z.string(), z.unknown()).nullish(),
1145
1638
  });
1146
1639
  /**
@@ -1152,7 +1645,7 @@ export const zSessionModeId = z.string();
1152
1645
  *
1153
1646
  * See protocol docs: [Session Modes](https://agentclientprotocol.com/protocol/session-modes)
1154
1647
  */
1155
- export const zCurrentModeUpdate = z.looseObject({
1648
+ export const zCurrentModeUpdate = z.object({
1156
1649
  _meta: z.record(z.string(), z.unknown()).nullish(),
1157
1650
  currentModeId: zSessionModeId,
1158
1651
  });
@@ -1161,7 +1654,7 @@ export const zCurrentModeUpdate = z.looseObject({
1161
1654
  *
1162
1655
  * See protocol docs: [Session Modes](https://agentclientprotocol.com/protocol/session-modes)
1163
1656
  */
1164
- export const zSessionMode = z.looseObject({
1657
+ export const zSessionMode = z.object({
1165
1658
  _meta: z.record(z.string(), z.unknown()).nullish(),
1166
1659
  description: z.string().nullish(),
1167
1660
  id: zSessionModeId,
@@ -1170,7 +1663,7 @@ export const zSessionMode = z.looseObject({
1170
1663
  /**
1171
1664
  * The set of modes and the one currently active.
1172
1665
  */
1173
- export const zSessionModeState = z.looseObject({
1666
+ export const zSessionModeState = z.object({
1174
1667
  _meta: z.record(z.string(), z.unknown()).nullish(),
1175
1668
  availableModes: z.array(zSessionMode),
1176
1669
  currentModeId: zSessionModeId,
@@ -1184,7 +1677,7 @@ export const zSessionModeState = z.looseObject({
1184
1677
  *
1185
1678
  * @experimental
1186
1679
  */
1187
- export const zSessionModelState = z.looseObject({
1680
+ export const zSessionModelState = z.object({
1188
1681
  _meta: z.record(z.string(), z.unknown()).nullish(),
1189
1682
  availableModels: z.array(zModelInfo),
1190
1683
  currentModelId: zModelId,
@@ -1198,7 +1691,7 @@ export const zSessionModelState = z.looseObject({
1198
1691
  *
1199
1692
  * @experimental
1200
1693
  */
1201
- export const zForkSessionResponse = z.looseObject({
1694
+ export const zForkSessionResponse = z.object({
1202
1695
  _meta: z.record(z.string(), z.unknown()).nullish(),
1203
1696
  configOptions: z.array(zSessionConfigOption).nullish(),
1204
1697
  models: zSessionModelState.nullish(),
@@ -1208,7 +1701,7 @@ export const zForkSessionResponse = z.looseObject({
1208
1701
  /**
1209
1702
  * Response from loading an existing session.
1210
1703
  */
1211
- export const zLoadSessionResponse = z.looseObject({
1704
+ export const zLoadSessionResponse = z.object({
1212
1705
  _meta: z.record(z.string(), z.unknown()).nullish(),
1213
1706
  configOptions: z.array(zSessionConfigOption).nullish(),
1214
1707
  models: zSessionModelState.nullish(),
@@ -1219,7 +1712,7 @@ export const zLoadSessionResponse = z.looseObject({
1219
1712
  *
1220
1713
  * See protocol docs: [Creating a Session](https://agentclientprotocol.com/protocol/session-setup#creating-a-session)
1221
1714
  */
1222
- export const zNewSessionResponse = z.looseObject({
1715
+ export const zNewSessionResponse = z.object({
1223
1716
  _meta: z.record(z.string(), z.unknown()).nullish(),
1224
1717
  configOptions: z.array(zSessionConfigOption).nullish(),
1225
1718
  models: zSessionModelState.nullish(),
@@ -1227,32 +1720,20 @@ export const zNewSessionResponse = z.looseObject({
1227
1720
  sessionId: zSessionId,
1228
1721
  });
1229
1722
  /**
1230
- * **UNSTABLE**
1231
- *
1232
- * This capability is not part of the spec yet, and may be removed or changed at any point.
1233
- *
1234
1723
  * Response from resuming an existing session.
1235
- *
1236
- * @experimental
1237
1724
  */
1238
- export const zResumeSessionResponse = z.looseObject({
1725
+ export const zResumeSessionResponse = z.object({
1239
1726
  _meta: z.record(z.string(), z.unknown()).nullish(),
1240
1727
  configOptions: z.array(zSessionConfigOption).nullish(),
1241
1728
  models: zSessionModelState.nullish(),
1242
1729
  modes: zSessionModeState.nullish(),
1243
1730
  });
1244
1731
  /**
1245
- * **UNSTABLE**
1246
- *
1247
- * This capability is not part of the spec yet, and may be removed or changed at any point.
1248
- *
1249
1732
  * Capabilities for the `session/resume` method.
1250
1733
  *
1251
1734
  * By supplying `{}` it means that the agent supports resuming of sessions.
1252
- *
1253
- * @experimental
1254
1735
  */
1255
- export const zSessionResumeCapabilities = z.looseObject({
1736
+ export const zSessionResumeCapabilities = z.object({
1256
1737
  _meta: z.record(z.string(), z.unknown()).nullish(),
1257
1738
  });
1258
1739
  /**
@@ -1266,68 +1747,56 @@ export const zSessionResumeCapabilities = z.looseObject({
1266
1747
  *
1267
1748
  * See protocol docs: [Session Capabilities](https://agentclientprotocol.com/protocol/initialization#session-capabilities)
1268
1749
  */
1269
- export const zSessionCapabilities = z.looseObject({
1750
+ export const zSessionCapabilities = z.object({
1270
1751
  _meta: z.record(z.string(), z.unknown()).nullish(),
1752
+ additionalDirectories: zSessionAdditionalDirectoriesCapabilities.nullish(),
1271
1753
  close: zSessionCloseCapabilities.nullish(),
1272
1754
  fork: zSessionForkCapabilities.nullish(),
1273
1755
  list: zSessionListCapabilities.nullish(),
1274
1756
  resume: zSessionResumeCapabilities.nullish(),
1275
1757
  });
1276
1758
  /**
1277
- * Capabilities supported by the agent.
1759
+ * **UNSTABLE**
1278
1760
  *
1279
- * Advertised during initialization to inform the client about
1280
- * available features and content types.
1761
+ * This capability is not part of the spec yet, and may be removed or changed at any point.
1281
1762
  *
1282
- * See protocol docs: [Agent Capabilities](https://agentclientprotocol.com/protocol/initialization#agent-capabilities)
1763
+ * Request parameters for `providers/set`.
1764
+ *
1765
+ * Replaces the full configuration for one provider id.
1766
+ *
1767
+ * @experimental
1283
1768
  */
1284
- export const zAgentCapabilities = z.looseObject({
1769
+ export const zSetProvidersRequest = z.object({
1285
1770
  _meta: z.record(z.string(), z.unknown()).nullish(),
1286
- auth: zAgentAuthCapabilities.optional().default({}),
1287
- loadSession: z.boolean().optional().default(false),
1288
- mcpCapabilities: zMcpCapabilities
1289
- .optional()
1290
- .default({ http: false, sse: false }),
1291
- promptCapabilities: zPromptCapabilities.optional().default({
1292
- audio: false,
1293
- embeddedContext: false,
1294
- image: false,
1295
- }),
1296
- sessionCapabilities: zSessionCapabilities.optional().default({}),
1771
+ apiType: zLlmProtocol,
1772
+ baseUrl: z.string(),
1773
+ headers: z.record(z.string(), z.string()).optional(),
1774
+ id: z.string(),
1297
1775
  });
1298
1776
  /**
1299
- * Response to the `initialize` method.
1777
+ * **UNSTABLE**
1300
1778
  *
1301
- * Contains the negotiated protocol version and agent capabilities.
1779
+ * This capability is not part of the spec yet, and may be removed or changed at any point.
1302
1780
  *
1303
- * See protocol docs: [Initialization](https://agentclientprotocol.com/protocol/initialization)
1781
+ * Response to `providers/set`.
1782
+ *
1783
+ * @experimental
1304
1784
  */
1305
- export const zInitializeResponse = z.looseObject({
1785
+ export const zSetProvidersResponse = z.object({
1306
1786
  _meta: z.record(z.string(), z.unknown()).nullish(),
1307
- agentCapabilities: zAgentCapabilities.optional().default({
1308
- auth: {},
1309
- loadSession: false,
1310
- mcpCapabilities: { http: false, sse: false },
1311
- promptCapabilities: {
1312
- audio: false,
1313
- embeddedContext: false,
1314
- image: false,
1315
- },
1316
- sessionCapabilities: {},
1317
- }),
1318
- agentInfo: zImplementation.nullish(),
1319
- authMethods: z.array(zAuthMethod).optional().default([]),
1320
- protocolVersion: zProtocolVersion,
1321
1787
  });
1788
+ /**
1789
+ * Request parameters for setting a session configuration option.
1790
+ */
1322
1791
  export const zSetSessionConfigOptionRequest = z.intersection(z.union([
1323
- z.looseObject({
1792
+ z.object({
1324
1793
  type: z.literal("boolean"),
1325
1794
  value: z.boolean(),
1326
1795
  }),
1327
- z.looseObject({
1796
+ z.object({
1328
1797
  value: zSessionConfigValueId,
1329
1798
  }),
1330
- ]), z.looseObject({
1799
+ ]), z.object({
1331
1800
  _meta: z.record(z.string(), z.unknown()).nullish(),
1332
1801
  configId: zSessionConfigId,
1333
1802
  sessionId: zSessionId,
@@ -1335,14 +1804,14 @@ export const zSetSessionConfigOptionRequest = z.intersection(z.union([
1335
1804
  /**
1336
1805
  * Response to `session/set_config_option` method.
1337
1806
  */
1338
- export const zSetSessionConfigOptionResponse = z.looseObject({
1807
+ export const zSetSessionConfigOptionResponse = z.object({
1339
1808
  _meta: z.record(z.string(), z.unknown()).nullish(),
1340
1809
  configOptions: z.array(zSessionConfigOption),
1341
1810
  });
1342
1811
  /**
1343
1812
  * Request parameters for setting a session mode.
1344
1813
  */
1345
- export const zSetSessionModeRequest = z.looseObject({
1814
+ export const zSetSessionModeRequest = z.object({
1346
1815
  _meta: z.record(z.string(), z.unknown()).nullish(),
1347
1816
  modeId: zSessionModeId,
1348
1817
  sessionId: zSessionId,
@@ -1350,7 +1819,7 @@ export const zSetSessionModeRequest = z.looseObject({
1350
1819
  /**
1351
1820
  * Response to `session/set_mode` method.
1352
1821
  */
1353
- export const zSetSessionModeResponse = z.looseObject({
1822
+ export const zSetSessionModeResponse = z.object({
1354
1823
  _meta: z.record(z.string(), z.unknown()).nullish(),
1355
1824
  });
1356
1825
  /**
@@ -1362,7 +1831,7 @@ export const zSetSessionModeResponse = z.looseObject({
1362
1831
  *
1363
1832
  * @experimental
1364
1833
  */
1365
- export const zSetSessionModelRequest = z.looseObject({
1834
+ export const zSetSessionModelRequest = z.object({
1366
1835
  _meta: z.record(z.string(), z.unknown()).nullish(),
1367
1836
  modelId: zModelId,
1368
1837
  sessionId: zSessionId,
@@ -1376,8 +1845,15 @@ export const zSetSessionModelRequest = z.looseObject({
1376
1845
  *
1377
1846
  * @experimental
1378
1847
  */
1379
- export const zSetSessionModelResponse = z.looseObject({
1848
+ export const zSetSessionModelResponse = z.object({
1849
+ _meta: z.record(z.string(), z.unknown()).nullish(),
1850
+ });
1851
+ /**
1852
+ * Response to `nes/start`.
1853
+ */
1854
+ export const zStartNesResponse = z.object({
1380
1855
  _meta: z.record(z.string(), z.unknown()).nullish(),
1856
+ sessionId: zSessionId,
1381
1857
  });
1382
1858
  /**
1383
1859
  * Reasons why an agent stops processing a prompt turn.
@@ -1406,7 +1882,7 @@ export const zStringFormat = z.union([
1406
1882
  * When `enum` or `oneOf` is set, this represents a single-select enum
1407
1883
  * with `"type": "string"`.
1408
1884
  */
1409
- export const zStringPropertySchema = z.looseObject({
1885
+ export const zStringPropertySchema = z.object({
1410
1886
  default: z.string().nullish(),
1411
1887
  description: z.string().nullish(),
1412
1888
  enum: z.array(z.string()).nullish(),
@@ -1431,6 +1907,26 @@ export const zStringPropertySchema = z.looseObject({
1431
1907
  pattern: z.string().nullish(),
1432
1908
  title: z.string().nullish(),
1433
1909
  });
1910
+ /**
1911
+ * Request for a code suggestion.
1912
+ */
1913
+ export const zSuggestNesRequest = z.object({
1914
+ _meta: z.record(z.string(), z.unknown()).nullish(),
1915
+ context: zNesSuggestContext.nullish(),
1916
+ position: zPosition,
1917
+ selection: zRange.nullish(),
1918
+ sessionId: zSessionId,
1919
+ triggerKind: zNesTriggerKind,
1920
+ uri: z.string(),
1921
+ version: z.number(),
1922
+ });
1923
+ /**
1924
+ * Response to `nes/suggest`.
1925
+ */
1926
+ export const zSuggestNesResponse = z.object({
1927
+ _meta: z.record(z.string(), z.unknown()).nullish(),
1928
+ suggestions: z.array(zNesSuggestion),
1929
+ });
1434
1930
  /**
1435
1931
  * Embed a terminal created with `terminal/create` by its id.
1436
1932
  *
@@ -1438,14 +1934,14 @@ export const zStringPropertySchema = z.looseObject({
1438
1934
  *
1439
1935
  * See protocol docs: [Terminal](https://agentclientprotocol.com/protocol/terminals)
1440
1936
  */
1441
- export const zTerminal = z.looseObject({
1937
+ export const zTerminal = z.object({
1442
1938
  _meta: z.record(z.string(), z.unknown()).nullish(),
1443
1939
  terminalId: z.string(),
1444
1940
  });
1445
1941
  /**
1446
1942
  * Exit status of a terminal command.
1447
1943
  */
1448
- export const zTerminalExitStatus = z.looseObject({
1944
+ export const zTerminalExitStatus = z.object({
1449
1945
  _meta: z.record(z.string(), z.unknown()).nullish(),
1450
1946
  exitCode: z
1451
1947
  .number()
@@ -1460,7 +1956,7 @@ export const zTerminalExitStatus = z.looseObject({
1460
1956
  /**
1461
1957
  * Request to get the current output and status of a terminal.
1462
1958
  */
1463
- export const zTerminalOutputRequest = z.looseObject({
1959
+ export const zTerminalOutputRequest = z.object({
1464
1960
  _meta: z.record(z.string(), z.unknown()).nullish(),
1465
1961
  sessionId: zSessionId,
1466
1962
  terminalId: z.string(),
@@ -1468,7 +1964,7 @@ export const zTerminalOutputRequest = z.looseObject({
1468
1964
  /**
1469
1965
  * Response containing the terminal output and exit status.
1470
1966
  */
1471
- export const zTerminalOutputResponse = z.looseObject({
1967
+ export const zTerminalOutputResponse = z.object({
1472
1968
  _meta: z.record(z.string(), z.unknown()).nullish(),
1473
1969
  exitStatus: zTerminalExitStatus.nullish(),
1474
1970
  output: z.string(),
@@ -1477,15 +1973,140 @@ export const zTerminalOutputResponse = z.looseObject({
1477
1973
  /**
1478
1974
  * Text provided to or from an LLM.
1479
1975
  */
1480
- export const zTextContent = z.looseObject({
1976
+ export const zTextContent = z.object({
1481
1977
  _meta: z.record(z.string(), z.unknown()).nullish(),
1482
1978
  annotations: zAnnotations.nullish(),
1483
1979
  text: z.string(),
1484
1980
  });
1981
+ /**
1982
+ * A content change event for a document.
1983
+ *
1984
+ * When `range` is `None`, `text` is the full content of the document.
1985
+ * When `range` is `Some`, `text` replaces the given range.
1986
+ */
1987
+ export const zTextDocumentContentChangeEvent = z.object({
1988
+ range: zRange.nullish(),
1989
+ text: z.string(),
1990
+ });
1991
+ /**
1992
+ * Notification sent when a file is edited.
1993
+ */
1994
+ export const zDidChangeDocumentNotification = z.object({
1995
+ _meta: z.record(z.string(), z.unknown()).nullish(),
1996
+ contentChanges: z.array(zTextDocumentContentChangeEvent),
1997
+ sessionId: zSessionId,
1998
+ uri: z.string(),
1999
+ version: z.number(),
2000
+ });
2001
+ export const zClientNotification = z.object({
2002
+ method: z.string(),
2003
+ params: z
2004
+ .union([
2005
+ zCancelNotification,
2006
+ zDidOpenDocumentNotification,
2007
+ zDidChangeDocumentNotification,
2008
+ zDidCloseDocumentNotification,
2009
+ zDidSaveDocumentNotification,
2010
+ zDidFocusDocumentNotification,
2011
+ zAcceptNesNotification,
2012
+ zRejectNesNotification,
2013
+ zExtNotification,
2014
+ ])
2015
+ .nullish(),
2016
+ });
2017
+ /**
2018
+ * How the agent wants document changes delivered.
2019
+ */
2020
+ export const zTextDocumentSyncKind = z.union([
2021
+ z.literal("full"),
2022
+ z.literal("incremental"),
2023
+ ]);
2024
+ /**
2025
+ * Capabilities for `document/didChange` events.
2026
+ */
2027
+ export const zNesDocumentDidChangeCapabilities = z.object({
2028
+ _meta: z.record(z.string(), z.unknown()).nullish(),
2029
+ syncKind: zTextDocumentSyncKind,
2030
+ });
2031
+ /**
2032
+ * Document event capabilities the agent wants to receive.
2033
+ */
2034
+ export const zNesDocumentEventCapabilities = z.object({
2035
+ _meta: z.record(z.string(), z.unknown()).nullish(),
2036
+ didChange: zNesDocumentDidChangeCapabilities.nullish(),
2037
+ didClose: zNesDocumentDidCloseCapabilities.nullish(),
2038
+ didFocus: zNesDocumentDidFocusCapabilities.nullish(),
2039
+ didOpen: zNesDocumentDidOpenCapabilities.nullish(),
2040
+ didSave: zNesDocumentDidSaveCapabilities.nullish(),
2041
+ });
2042
+ /**
2043
+ * Event capabilities the agent can consume.
2044
+ */
2045
+ export const zNesEventCapabilities = z.object({
2046
+ _meta: z.record(z.string(), z.unknown()).nullish(),
2047
+ document: zNesDocumentEventCapabilities.nullish(),
2048
+ });
2049
+ /**
2050
+ * NES capabilities advertised by the agent during initialization.
2051
+ */
2052
+ export const zNesCapabilities = z.object({
2053
+ _meta: z.record(z.string(), z.unknown()).nullish(),
2054
+ context: zNesContextCapabilities.nullish(),
2055
+ events: zNesEventCapabilities.nullish(),
2056
+ });
2057
+ /**
2058
+ * Capabilities supported by the agent.
2059
+ *
2060
+ * Advertised during initialization to inform the client about
2061
+ * available features and content types.
2062
+ *
2063
+ * See protocol docs: [Agent Capabilities](https://agentclientprotocol.com/protocol/initialization#agent-capabilities)
2064
+ */
2065
+ export const zAgentCapabilities = z.object({
2066
+ _meta: z.record(z.string(), z.unknown()).nullish(),
2067
+ auth: zAgentAuthCapabilities.optional().default({}),
2068
+ loadSession: z.boolean().optional().default(false),
2069
+ mcpCapabilities: zMcpCapabilities
2070
+ .optional()
2071
+ .default({ http: false, sse: false }),
2072
+ nes: zNesCapabilities.nullish(),
2073
+ positionEncoding: zPositionEncodingKind.nullish(),
2074
+ promptCapabilities: zPromptCapabilities.optional().default({
2075
+ audio: false,
2076
+ embeddedContext: false,
2077
+ image: false,
2078
+ }),
2079
+ providers: zProvidersCapabilities.nullish(),
2080
+ sessionCapabilities: zSessionCapabilities.optional().default({}),
2081
+ });
2082
+ /**
2083
+ * Response to the `initialize` method.
2084
+ *
2085
+ * Contains the negotiated protocol version and agent capabilities.
2086
+ *
2087
+ * See protocol docs: [Initialization](https://agentclientprotocol.com/protocol/initialization)
2088
+ */
2089
+ export const zInitializeResponse = z.object({
2090
+ _meta: z.record(z.string(), z.unknown()).nullish(),
2091
+ agentCapabilities: zAgentCapabilities.optional().default({
2092
+ auth: {},
2093
+ loadSession: false,
2094
+ mcpCapabilities: { http: false, sse: false },
2095
+ promptCapabilities: {
2096
+ audio: false,
2097
+ embeddedContext: false,
2098
+ image: false,
2099
+ },
2100
+ sessionCapabilities: {},
2101
+ }),
2102
+ agentInfo: zImplementation.nullish(),
2103
+ authMethods: z.array(zAuthMethod).optional().default([]),
2104
+ protocolVersion: zProtocolVersion,
2105
+ });
1485
2106
  /**
1486
2107
  * Text-based resource contents.
1487
2108
  */
1488
- export const zTextResourceContents = z.looseObject({
2109
+ export const zTextResourceContents = z.object({
1489
2110
  _meta: z.record(z.string(), z.unknown()).nullish(),
1490
2111
  mimeType: z.string().nullish(),
1491
2112
  text: z.string(),
@@ -1501,7 +2122,7 @@ export const zEmbeddedResourceResource = z.union([
1501
2122
  /**
1502
2123
  * The contents of a resource, embedded into a prompt or tool call result.
1503
2124
  */
1504
- export const zEmbeddedResource = z.looseObject({
2125
+ export const zEmbeddedResource = z.object({
1505
2126
  _meta: z.record(z.string(), z.unknown()).nullish(),
1506
2127
  annotations: zAnnotations.nullish(),
1507
2128
  resource: zEmbeddedResourceResource,
@@ -1523,33 +2144,33 @@ export const zEmbeddedResource = z.looseObject({
1523
2144
  * See protocol docs: [Content](https://agentclientprotocol.com/protocol/content)
1524
2145
  */
1525
2146
  export const zContentBlock = z.union([
1526
- zTextContent.and(z.looseObject({
2147
+ zTextContent.and(z.object({
1527
2148
  type: z.literal("text"),
1528
2149
  })),
1529
- zImageContent.and(z.looseObject({
2150
+ zImageContent.and(z.object({
1530
2151
  type: z.literal("image"),
1531
2152
  })),
1532
- zAudioContent.and(z.looseObject({
2153
+ zAudioContent.and(z.object({
1533
2154
  type: z.literal("audio"),
1534
2155
  })),
1535
- zResourceLink.and(z.looseObject({
2156
+ zResourceLink.and(z.object({
1536
2157
  type: z.literal("resource_link"),
1537
2158
  })),
1538
- zEmbeddedResource.and(z.looseObject({
2159
+ zEmbeddedResource.and(z.object({
1539
2160
  type: z.literal("resource"),
1540
2161
  })),
1541
2162
  ]);
1542
2163
  /**
1543
2164
  * Standard content block (text, images, resources).
1544
2165
  */
1545
- export const zContent = z.looseObject({
2166
+ export const zContent = z.object({
1546
2167
  _meta: z.record(z.string(), z.unknown()).nullish(),
1547
2168
  content: zContentBlock,
1548
2169
  });
1549
2170
  /**
1550
2171
  * A streamed item of content
1551
2172
  */
1552
- export const zContentChunk = z.looseObject({
2173
+ export const zContentChunk = z.object({
1553
2174
  _meta: z.record(z.string(), z.unknown()).nullish(),
1554
2175
  content: zContentBlock,
1555
2176
  messageId: z.string().nullish(),
@@ -1561,38 +2182,16 @@ export const zContentChunk = z.looseObject({
1561
2182
  *
1562
2183
  * See protocol docs: [User Message](https://agentclientprotocol.com/protocol/prompt-turn#1-user-message)
1563
2184
  */
1564
- export const zPromptRequest = z.looseObject({
2185
+ export const zPromptRequest = z.object({
1565
2186
  _meta: z.record(z.string(), z.unknown()).nullish(),
1566
2187
  messageId: z.string().nullish(),
1567
2188
  prompt: z.array(zContentBlock),
1568
2189
  sessionId: zSessionId,
1569
2190
  });
1570
- export const zClientRequest = z.looseObject({
1571
- id: zRequestId,
1572
- method: z.string(),
1573
- params: z
1574
- .union([
1575
- zInitializeRequest,
1576
- zAuthenticateRequest,
1577
- zLogoutRequest,
1578
- zNewSessionRequest,
1579
- zLoadSessionRequest,
1580
- zListSessionsRequest,
1581
- zForkSessionRequest,
1582
- zResumeSessionRequest,
1583
- zCloseSessionRequest,
1584
- zSetSessionModeRequest,
1585
- zSetSessionConfigOptionRequest,
1586
- zPromptRequest,
1587
- zSetSessionModelRequest,
1588
- zExtRequest,
1589
- ])
1590
- .nullish(),
1591
- });
1592
2191
  /**
1593
2192
  * Items definition for titled multi-select enum properties.
1594
2193
  */
1595
- export const zTitledMultiSelectItems = z.looseObject({
2194
+ export const zTitledMultiSelectItems = z.object({
1596
2195
  anyOf: z.array(zEnumOption),
1597
2196
  });
1598
2197
  /**
@@ -1604,13 +2203,13 @@ export const zTitledMultiSelectItems = z.looseObject({
1604
2203
  * See protocol docs: [Content](https://agentclientprotocol.com/protocol/tool-calls#content)
1605
2204
  */
1606
2205
  export const zToolCallContent = z.union([
1607
- zContent.and(z.looseObject({
2206
+ zContent.and(z.object({
1608
2207
  type: z.literal("content"),
1609
2208
  })),
1610
- zDiff.and(z.looseObject({
2209
+ zDiff.and(z.object({
1611
2210
  type: z.literal("diff"),
1612
2211
  })),
1613
- zTerminal.and(z.looseObject({
2212
+ zTerminal.and(z.object({
1614
2213
  type: z.literal("terminal"),
1615
2214
  })),
1616
2215
  ]);
@@ -1618,6 +2217,36 @@ export const zToolCallContent = z.union([
1618
2217
  * Unique identifier for a tool call within a session.
1619
2218
  */
1620
2219
  export const zToolCallId = z.string();
2220
+ /**
2221
+ * **UNSTABLE**
2222
+ *
2223
+ * This capability is not part of the spec yet, and may be removed or changed at any point.
2224
+ *
2225
+ * Session-scoped elicitation, optionally tied to a specific tool call.
2226
+ *
2227
+ * When `tool_call_id` is set, the elicitation is tied to a specific tool call.
2228
+ * This is useful when an agent receives an elicitation from an MCP server
2229
+ * during a tool call and needs to redirect it to the user.
2230
+ *
2231
+ * @experimental
2232
+ */
2233
+ export const zElicitationSessionScope = z.object({
2234
+ sessionId: zSessionId,
2235
+ toolCallId: zToolCallId.nullish(),
2236
+ });
2237
+ /**
2238
+ * **UNSTABLE**
2239
+ *
2240
+ * This capability is not part of the spec yet, and may be removed or changed at any point.
2241
+ *
2242
+ * URL-based elicitation mode where the client directs the user to a URL.
2243
+ *
2244
+ * @experimental
2245
+ */
2246
+ export const zElicitationUrlMode = z.intersection(z.union([zElicitationSessionScope, zElicitationRequestScope]), z.object({
2247
+ elicitationId: zElicitationId,
2248
+ url: z.string().url(),
2249
+ }));
1621
2250
  /**
1622
2251
  * A file location being accessed or modified by a tool.
1623
2252
  *
@@ -1626,7 +2255,7 @@ export const zToolCallId = z.string();
1626
2255
  *
1627
2256
  * See protocol docs: [Following the Agent](https://agentclientprotocol.com/protocol/tool-calls#following-the-agent)
1628
2257
  */
1629
- export const zToolCallLocation = z.looseObject({
2258
+ export const zToolCallLocation = z.object({
1630
2259
  _meta: z.record(z.string(), z.unknown()).nullish(),
1631
2260
  line: z
1632
2261
  .number()
@@ -1679,7 +2308,7 @@ export const zToolKind = z.union([
1679
2308
  *
1680
2309
  * See protocol docs: [Tool Calls](https://agentclientprotocol.com/protocol/tool-calls)
1681
2310
  */
1682
- export const zToolCall = z.looseObject({
2311
+ export const zToolCall = z.object({
1683
2312
  _meta: z.record(z.string(), z.unknown()).nullish(),
1684
2313
  content: z.array(zToolCallContent).optional(),
1685
2314
  kind: zToolKind.optional(),
@@ -1698,7 +2327,7 @@ export const zToolCall = z.looseObject({
1698
2327
  *
1699
2328
  * See protocol docs: [Updating](https://agentclientprotocol.com/protocol/tool-calls#updating)
1700
2329
  */
1701
- export const zToolCallUpdate = z.looseObject({
2330
+ export const zToolCallUpdate = z.object({
1702
2331
  _meta: z.record(z.string(), z.unknown()).nullish(),
1703
2332
  content: z.array(zToolCallContent).nullish(),
1704
2333
  kind: zToolKind.nullish(),
@@ -1716,7 +2345,7 @@ export const zToolCallUpdate = z.looseObject({
1716
2345
  *
1717
2346
  * See protocol docs: [Requesting Permission](https://agentclientprotocol.com/protocol/tool-calls#requesting-permission)
1718
2347
  */
1719
- export const zRequestPermissionRequest = z.looseObject({
2348
+ export const zRequestPermissionRequest = z.object({
1720
2349
  _meta: z.record(z.string(), z.unknown()).nullish(),
1721
2350
  options: z.array(zPermissionOption),
1722
2351
  sessionId: zSessionId,
@@ -1725,7 +2354,7 @@ export const zRequestPermissionRequest = z.looseObject({
1725
2354
  /**
1726
2355
  * All text that was typed after the command name is provided as input.
1727
2356
  */
1728
- export const zUnstructuredCommandInput = z.looseObject({
2357
+ export const zUnstructuredCommandInput = z.object({
1729
2358
  _meta: z.record(z.string(), z.unknown()).nullish(),
1730
2359
  hint: z.string(),
1731
2360
  });
@@ -1738,7 +2367,7 @@ export const zAvailableCommandInput = zUnstructuredCommandInput;
1738
2367
  /**
1739
2368
  * Information about a command.
1740
2369
  */
1741
- export const zAvailableCommand = z.looseObject({
2370
+ export const zAvailableCommand = z.object({
1742
2371
  _meta: z.record(z.string(), z.unknown()).nullish(),
1743
2372
  description: z.string(),
1744
2373
  input: zAvailableCommandInput.nullish(),
@@ -1747,14 +2376,14 @@ export const zAvailableCommand = z.looseObject({
1747
2376
  /**
1748
2377
  * Available commands are ready or have changed
1749
2378
  */
1750
- export const zAvailableCommandsUpdate = z.looseObject({
2379
+ export const zAvailableCommandsUpdate = z.object({
1751
2380
  _meta: z.record(z.string(), z.unknown()).nullish(),
1752
2381
  availableCommands: z.array(zAvailableCommand),
1753
2382
  });
1754
2383
  /**
1755
2384
  * Items definition for untitled multi-select enum properties.
1756
2385
  */
1757
- export const zUntitledMultiSelectItems = z.looseObject({
2386
+ export const zUntitledMultiSelectItems = z.object({
1758
2387
  enum: z.array(z.string()),
1759
2388
  type: zElicitationStringType,
1760
2389
  });
@@ -1768,7 +2397,7 @@ export const zMultiSelectItems = z.union([
1768
2397
  /**
1769
2398
  * Schema for multi-select (array) properties in an elicitation form.
1770
2399
  */
1771
- export const zMultiSelectPropertySchema = z.looseObject({
2400
+ export const zMultiSelectPropertySchema = z.object({
1772
2401
  default: z.array(z.string()).nullish(),
1773
2402
  description: z.string().nullish(),
1774
2403
  items: zMultiSelectItems,
@@ -1784,19 +2413,19 @@ export const zMultiSelectPropertySchema = z.looseObject({
1784
2413
  * Multi-select enums use the `Array` variant.
1785
2414
  */
1786
2415
  export const zElicitationPropertySchema = z.union([
1787
- zStringPropertySchema.and(z.looseObject({
2416
+ zStringPropertySchema.and(z.object({
1788
2417
  type: z.literal("string"),
1789
2418
  })),
1790
- zNumberPropertySchema.and(z.looseObject({
2419
+ zNumberPropertySchema.and(z.object({
1791
2420
  type: z.literal("number"),
1792
2421
  })),
1793
- zIntegerPropertySchema.and(z.looseObject({
2422
+ zIntegerPropertySchema.and(z.object({
1794
2423
  type: z.literal("integer"),
1795
2424
  })),
1796
- zBooleanPropertySchema.and(z.looseObject({
2425
+ zBooleanPropertySchema.and(z.object({
1797
2426
  type: z.literal("boolean"),
1798
2427
  })),
1799
- zMultiSelectPropertySchema.and(z.looseObject({
2428
+ zMultiSelectPropertySchema.and(z.object({
1800
2429
  type: z.literal("array"),
1801
2430
  })),
1802
2431
  ]);
@@ -1806,7 +2435,7 @@ export const zElicitationPropertySchema = z.union([
1806
2435
  * This represents a JSON Schema object with primitive-typed properties,
1807
2436
  * as required by the elicitation specification.
1808
2437
  */
1809
- export const zElicitationSchema = z.looseObject({
2438
+ export const zElicitationSchema = z.object({
1810
2439
  description: z.string().nullish(),
1811
2440
  properties: z
1812
2441
  .record(z.string(), zElicitationPropertySchema)
@@ -1825,20 +2454,32 @@ export const zElicitationSchema = z.looseObject({
1825
2454
  *
1826
2455
  * @experimental
1827
2456
  */
1828
- export const zElicitationFormMode = z.looseObject({
2457
+ export const zElicitationFormMode = z.intersection(z.union([zElicitationSessionScope, zElicitationRequestScope]), z.object({
1829
2458
  requestedSchema: zElicitationSchema,
1830
- });
1831
- export const zElicitationRequest = z.intersection(z.union([
1832
- zElicitationFormMode.and(z.looseObject({
2459
+ }));
2460
+ /**
2461
+ * **UNSTABLE**
2462
+ *
2463
+ * This capability is not part of the spec yet, and may be removed or changed at any point.
2464
+ *
2465
+ * Request from the agent to elicit structured user input.
2466
+ *
2467
+ * The agent sends this to the client to request information from the user,
2468
+ * either via a form or by directing them to a URL.
2469
+ * Elicitations are tied to a session (optionally a tool call) or a request.
2470
+ *
2471
+ * @experimental
2472
+ */
2473
+ export const zCreateElicitationRequest = z.intersection(z.union([
2474
+ zElicitationFormMode.and(z.object({
1833
2475
  mode: z.literal("form"),
1834
2476
  })),
1835
- zElicitationUrlMode.and(z.looseObject({
2477
+ zElicitationUrlMode.and(z.object({
1836
2478
  mode: z.literal("url"),
1837
2479
  })),
1838
- ]), z.looseObject({
2480
+ ]), z.object({
1839
2481
  _meta: z.record(z.string(), z.unknown()).nullish(),
1840
2482
  message: z.string(),
1841
- sessionId: zSessionId,
1842
2483
  }));
1843
2484
  /**
1844
2485
  * **UNSTABLE**
@@ -1849,7 +2490,7 @@ export const zElicitationRequest = z.intersection(z.union([
1849
2490
  *
1850
2491
  * @experimental
1851
2492
  */
1852
- export const zUsage = z.looseObject({
2493
+ export const zUsage = z.object({
1853
2494
  cachedReadTokens: z.number().nullish(),
1854
2495
  cachedWriteTokens: z.number().nullish(),
1855
2496
  inputTokens: z.number(),
@@ -1862,18 +2503,21 @@ export const zUsage = z.looseObject({
1862
2503
  *
1863
2504
  * See protocol docs: [Check for Completion](https://agentclientprotocol.com/protocol/prompt-turn#4-check-for-completion)
1864
2505
  */
1865
- export const zPromptResponse = z.looseObject({
2506
+ export const zPromptResponse = z.object({
1866
2507
  _meta: z.record(z.string(), z.unknown()).nullish(),
1867
2508
  stopReason: zStopReason,
1868
2509
  usage: zUsage.nullish(),
1869
2510
  userMessageId: z.string().nullish(),
1870
2511
  });
1871
2512
  export const zAgentResponse = z.union([
1872
- z.looseObject({
2513
+ z.object({
1873
2514
  id: zRequestId,
1874
2515
  result: z.union([
1875
2516
  zInitializeResponse,
1876
2517
  zAuthenticateResponse,
2518
+ zListProvidersResponse,
2519
+ zSetProvidersResponse,
2520
+ zDisableProvidersResponse,
1877
2521
  zLogoutResponse,
1878
2522
  zNewSessionResponse,
1879
2523
  zLoadSessionResponse,
@@ -1885,10 +2529,13 @@ export const zAgentResponse = z.union([
1885
2529
  zSetSessionConfigOptionResponse,
1886
2530
  zPromptResponse,
1887
2531
  zSetSessionModelResponse,
2532
+ zStartNesResponse,
2533
+ zSuggestNesResponse,
2534
+ zCloseNesResponse,
1888
2535
  zExtResponse,
1889
2536
  ]),
1890
2537
  }),
1891
- z.looseObject({
2538
+ z.object({
1892
2539
  error: zError,
1893
2540
  id: zRequestId,
1894
2541
  }),
@@ -1902,7 +2549,7 @@ export const zAgentResponse = z.union([
1902
2549
  *
1903
2550
  * @experimental
1904
2551
  */
1905
- export const zUsageUpdate = z.looseObject({
2552
+ export const zUsageUpdate = z.object({
1906
2553
  _meta: z.record(z.string(), z.unknown()).nullish(),
1907
2554
  cost: zCost.nullish(),
1908
2555
  size: z.number(),
@@ -1916,37 +2563,37 @@ export const zUsageUpdate = z.looseObject({
1916
2563
  * See protocol docs: [Agent Reports Output](https://agentclientprotocol.com/protocol/prompt-turn#3-agent-reports-output)
1917
2564
  */
1918
2565
  export const zSessionUpdate = z.union([
1919
- zContentChunk.and(z.looseObject({
2566
+ zContentChunk.and(z.object({
1920
2567
  sessionUpdate: z.literal("user_message_chunk"),
1921
2568
  })),
1922
- zContentChunk.and(z.looseObject({
2569
+ zContentChunk.and(z.object({
1923
2570
  sessionUpdate: z.literal("agent_message_chunk"),
1924
2571
  })),
1925
- zContentChunk.and(z.looseObject({
2572
+ zContentChunk.and(z.object({
1926
2573
  sessionUpdate: z.literal("agent_thought_chunk"),
1927
2574
  })),
1928
- zToolCall.and(z.looseObject({
2575
+ zToolCall.and(z.object({
1929
2576
  sessionUpdate: z.literal("tool_call"),
1930
2577
  })),
1931
- zToolCallUpdate.and(z.looseObject({
2578
+ zToolCallUpdate.and(z.object({
1932
2579
  sessionUpdate: z.literal("tool_call_update"),
1933
2580
  })),
1934
- zPlan.and(z.looseObject({
2581
+ zPlan.and(z.object({
1935
2582
  sessionUpdate: z.literal("plan"),
1936
2583
  })),
1937
- zAvailableCommandsUpdate.and(z.looseObject({
2584
+ zAvailableCommandsUpdate.and(z.object({
1938
2585
  sessionUpdate: z.literal("available_commands_update"),
1939
2586
  })),
1940
- zCurrentModeUpdate.and(z.looseObject({
2587
+ zCurrentModeUpdate.and(z.object({
1941
2588
  sessionUpdate: z.literal("current_mode_update"),
1942
2589
  })),
1943
- zConfigOptionUpdate.and(z.looseObject({
2590
+ zConfigOptionUpdate.and(z.object({
1944
2591
  sessionUpdate: z.literal("config_option_update"),
1945
2592
  })),
1946
- zSessionInfoUpdate.and(z.looseObject({
2593
+ zSessionInfoUpdate.and(z.object({
1947
2594
  sessionUpdate: z.literal("session_info_update"),
1948
2595
  })),
1949
- zUsageUpdate.and(z.looseObject({
2596
+ zUsageUpdate.and(z.object({
1950
2597
  sessionUpdate: z.literal("usage_update"),
1951
2598
  })),
1952
2599
  ]);
@@ -1957,17 +2604,17 @@ export const zSessionUpdate = z.union([
1957
2604
  *
1958
2605
  * See protocol docs: [Agent Reports Output](https://agentclientprotocol.com/protocol/prompt-turn#3-agent-reports-output)
1959
2606
  */
1960
- export const zSessionNotification = z.looseObject({
2607
+ export const zSessionNotification = z.object({
1961
2608
  _meta: z.record(z.string(), z.unknown()).nullish(),
1962
2609
  sessionId: zSessionId,
1963
2610
  update: zSessionUpdate,
1964
2611
  });
1965
- export const zAgentNotification = z.looseObject({
2612
+ export const zAgentNotification = z.object({
1966
2613
  method: z.string(),
1967
2614
  params: z
1968
2615
  .union([
1969
2616
  zSessionNotification,
1970
- zElicitationCompleteNotification,
2617
+ zCompleteElicitationNotification,
1971
2618
  zExtNotification,
1972
2619
  ])
1973
2620
  .nullish(),
@@ -1975,7 +2622,7 @@ export const zAgentNotification = z.looseObject({
1975
2622
  /**
1976
2623
  * Request to wait for a terminal command to exit.
1977
2624
  */
1978
- export const zWaitForTerminalExitRequest = z.looseObject({
2625
+ export const zWaitForTerminalExitRequest = z.object({
1979
2626
  _meta: z.record(z.string(), z.unknown()).nullish(),
1980
2627
  sessionId: zSessionId,
1981
2628
  terminalId: z.string(),
@@ -1983,7 +2630,7 @@ export const zWaitForTerminalExitRequest = z.looseObject({
1983
2630
  /**
1984
2631
  * Response containing the exit status of a terminal command.
1985
2632
  */
1986
- export const zWaitForTerminalExitResponse = z.looseObject({
2633
+ export const zWaitForTerminalExitResponse = z.object({
1987
2634
  _meta: z.record(z.string(), z.unknown()).nullish(),
1988
2635
  exitCode: z
1989
2636
  .number()
@@ -1995,18 +2642,62 @@ export const zWaitForTerminalExitResponse = z.looseObject({
1995
2642
  .nullish(),
1996
2643
  signal: z.string().nullish(),
1997
2644
  });
2645
+ /**
2646
+ * A workspace folder.
2647
+ */
2648
+ export const zWorkspaceFolder = z.object({
2649
+ name: z.string(),
2650
+ uri: z.string(),
2651
+ });
2652
+ /**
2653
+ * Request to start an NES session.
2654
+ */
2655
+ export const zStartNesRequest = z.object({
2656
+ _meta: z.record(z.string(), z.unknown()).nullish(),
2657
+ repository: zNesRepository.nullish(),
2658
+ workspaceFolders: z.array(zWorkspaceFolder).nullish(),
2659
+ workspaceUri: z.string().nullish(),
2660
+ });
2661
+ export const zClientRequest = z.object({
2662
+ id: zRequestId,
2663
+ method: z.string(),
2664
+ params: z
2665
+ .union([
2666
+ zInitializeRequest,
2667
+ zAuthenticateRequest,
2668
+ zListProvidersRequest,
2669
+ zSetProvidersRequest,
2670
+ zDisableProvidersRequest,
2671
+ zLogoutRequest,
2672
+ zNewSessionRequest,
2673
+ zLoadSessionRequest,
2674
+ zListSessionsRequest,
2675
+ zForkSessionRequest,
2676
+ zResumeSessionRequest,
2677
+ zCloseSessionRequest,
2678
+ zSetSessionModeRequest,
2679
+ zSetSessionConfigOptionRequest,
2680
+ zPromptRequest,
2681
+ zSetSessionModelRequest,
2682
+ zStartNesRequest,
2683
+ zSuggestNesRequest,
2684
+ zCloseNesRequest,
2685
+ zExtRequest,
2686
+ ])
2687
+ .nullish(),
2688
+ });
1998
2689
  /**
1999
2690
  * Request to write content to a text file.
2000
2691
  *
2001
2692
  * Only available if the client supports the `fs.writeTextFile` capability.
2002
2693
  */
2003
- export const zWriteTextFileRequest = z.looseObject({
2694
+ export const zWriteTextFileRequest = z.object({
2004
2695
  _meta: z.record(z.string(), z.unknown()).nullish(),
2005
2696
  content: z.string(),
2006
2697
  path: z.string(),
2007
2698
  sessionId: zSessionId,
2008
2699
  });
2009
- export const zAgentRequest = z.looseObject({
2700
+ export const zAgentRequest = z.object({
2010
2701
  id: zRequestId,
2011
2702
  method: z.string(),
2012
2703
  params: z
@@ -2019,7 +2710,7 @@ export const zAgentRequest = z.looseObject({
2019
2710
  zReleaseTerminalRequest,
2020
2711
  zWaitForTerminalExitRequest,
2021
2712
  zKillTerminalRequest,
2022
- zElicitationRequest,
2713
+ zCreateElicitationRequest,
2023
2714
  zExtRequest,
2024
2715
  ])
2025
2716
  .nullish(),
@@ -2027,11 +2718,11 @@ export const zAgentRequest = z.looseObject({
2027
2718
  /**
2028
2719
  * Response to `fs/write_text_file`
2029
2720
  */
2030
- export const zWriteTextFileResponse = z.looseObject({
2721
+ export const zWriteTextFileResponse = z.object({
2031
2722
  _meta: z.record(z.string(), z.unknown()).nullish(),
2032
2723
  });
2033
2724
  export const zClientResponse = z.union([
2034
- z.looseObject({
2725
+ z.object({
2035
2726
  id: zRequestId,
2036
2727
  result: z.union([
2037
2728
  zWriteTextFileResponse,
@@ -2042,11 +2733,11 @@ export const zClientResponse = z.union([
2042
2733
  zReleaseTerminalResponse,
2043
2734
  zWaitForTerminalExitResponse,
2044
2735
  zKillTerminalResponse,
2045
- zElicitationResponse,
2736
+ zCreateElicitationResponse,
2046
2737
  zExtResponse,
2047
2738
  ]),
2048
2739
  }),
2049
- z.looseObject({
2740
+ z.object({
2050
2741
  error: zError,
2051
2742
  id: zRequestId,
2052
2743
  }),