@renai-labs/sdk 0.1.21 → 0.1.22

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.
@@ -76,21 +76,6 @@ export const zReplayPublicView = z.object({
76
76
  session: zReplayPublicSession,
77
77
  messages: z.array(zReplayMessage),
78
78
  });
79
- export const zPublisherLink = z.object({
80
- label: z.string().min(1),
81
- href: z.url(),
82
- });
83
- export const zPublisherPublicView = z.object({
84
- id: z.string(),
85
- slug: z.string(),
86
- handle: z.string(),
87
- name: z.string(),
88
- description: z.string().nullable(),
89
- avatar: z.string().nullable(),
90
- url: z.string().nullable(),
91
- isVerified: z.boolean(),
92
- links: z.array(zPublisherLink),
93
- });
94
79
  export const zSpecPublicTriggerEntry = z.object({
95
80
  slug: z.string().regex(/^[a-z0-9][a-z0-9-]*$/),
96
81
  ref: z
@@ -216,6 +201,21 @@ export const zSpecPublic = z.object({
216
201
  })
217
202
  .optional(),
218
203
  });
204
+ export const zPublisherLink = z.object({
205
+ label: z.string().min(1),
206
+ href: z.url(),
207
+ });
208
+ export const zPublisherPublicView = z.object({
209
+ id: z.string(),
210
+ slug: z.string(),
211
+ handle: z.string(),
212
+ name: z.string(),
213
+ description: z.string().nullable(),
214
+ avatar: z.string().nullable(),
215
+ url: z.string().nullable(),
216
+ isVerified: z.boolean(),
217
+ links: z.array(zPublisherLink),
218
+ });
219
219
  export const zBlueprintOutcome = z.object({
220
220
  title: z.string().min(1),
221
221
  description: z.string().min(1),
@@ -244,21 +244,96 @@ export const zBlueprintPublicView = z.object({
244
244
  websiteMetadata: zWebsiteMetadata.nullable(),
245
245
  pageContent: zBlueprintPageContent.nullable(),
246
246
  publisherId: z.string(),
247
+ publisher: zPublisherPublicView.nullish().default(null),
247
248
  template: zSpecPublic,
248
249
  replays: z.array(z.string()),
249
250
  });
250
- export const zRequiredCredential = z.object({
251
+ export const zBlueprintPublicListItem = z.object({
252
+ id: z.string(),
253
+ slug: z.string(),
254
+ name: z.string(),
255
+ description: z.string().nullable(),
256
+ websiteMetadata: zWebsiteMetadata.nullable(),
257
+ publisherId: z.string().nullable(),
258
+ publisher: zPublisherPublicView.nullish().default(null),
259
+ updatedAt: z.iso
260
+ .datetime()
261
+ .regex(/^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$/),
262
+ });
263
+ export const zRequirementWhen = z.object({
251
264
  name: z
252
265
  .string()
253
266
  .min(1)
254
- .max(128)
255
- .regex(/^[A-Z_][A-Z0-9_]*$/),
256
- description: z.string().max(512).optional(),
267
+ .max(64)
268
+ .regex(/^[a-z][A-Za-z0-9_]*$/),
269
+ op: z.enum(["eq", "neq"]),
270
+ value: z.string().max(512),
257
271
  });
272
+ export const zRequiredCredential = z.union([
273
+ z.object({
274
+ kind: z.literal("env").optional().default("env"),
275
+ name: z
276
+ .string()
277
+ .min(1)
278
+ .max(128)
279
+ .regex(/^[A-Z_][A-Z0-9_]*$/),
280
+ description: z.string().max(512).optional(),
281
+ }),
282
+ z.object({
283
+ kind: z.literal("secret"),
284
+ name: z
285
+ .string()
286
+ .min(1)
287
+ .max(64)
288
+ .regex(/^[a-z][A-Za-z0-9_]*$/),
289
+ description: z.string().max(512).optional(),
290
+ }),
291
+ z.object({
292
+ kind: z.literal("oauth_app"),
293
+ name: z.string().min(1).max(128),
294
+ description: z.string().max(512).optional(),
295
+ }),
296
+ z.object({
297
+ kind: z.literal("text"),
298
+ name: z
299
+ .string()
300
+ .min(1)
301
+ .max(64)
302
+ .regex(/^[a-z][A-Za-z0-9_]*$/),
303
+ description: z.string().max(512).optional(),
304
+ message: z.string().min(1).max(512),
305
+ placeholder: z.string().max(256).optional(),
306
+ when: zRequirementWhen.optional(),
307
+ }),
308
+ z.object({
309
+ kind: z.literal("select"),
310
+ name: z
311
+ .string()
312
+ .min(1)
313
+ .max(64)
314
+ .regex(/^[a-z][A-Za-z0-9_]*$/),
315
+ description: z.string().max(512).optional(),
316
+ message: z.string().min(1).max(512),
317
+ options: z
318
+ .array(z.object({
319
+ label: z.string().min(1).max(256),
320
+ value: z.string().max(512),
321
+ hint: z.string().max(256).optional(),
322
+ }))
323
+ .min(1)
324
+ .max(64),
325
+ when: zRequirementWhen.optional(),
326
+ }),
327
+ ]);
258
328
  export const zRepository = z.object({
259
329
  url: z.url().optional(),
260
330
  source: z.string().optional(),
261
331
  });
332
+ export const zMcpTimeout = z.object({
333
+ startup: z.int().gt(0).lte(600000).optional(),
334
+ catalog: z.int().gt(0).lte(600000).optional(),
335
+ execution: z.int().gt(0).lte(600000).optional(),
336
+ });
262
337
  export const zAgentLatestVersion = z.object({
263
338
  id: z.string(),
264
339
  agentId: z.string(),
@@ -286,16 +361,34 @@ export const zAgentLatestVersion = z.object({
286
361
  }),
287
362
  })),
288
363
  });
289
- export const zOAuthStartInput = z.object({
364
+ export const zOAuthSessionStatus = z.object({
365
+ id: z.string(),
366
+ status: z.enum(["pending", "complete", "failed", "expired"]),
367
+ mcpId: z.string().nullable(),
368
+ credentialId: z.string().nullable(),
369
+ failureReason: z.string().nullable(),
370
+ expiresAt: z.iso
371
+ .datetime()
372
+ .regex(/^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$/),
373
+ });
374
+ /**
375
+ * Start 'Sign in with X' for an MCP. Needs a human with a browser: unless alreadyConnected, hand the returned authorizationUrl to the user and poll the session until it is complete, failed, or expired.
376
+ */
377
+ export const zOAuthConnectBody = z.object({
290
378
  mcpId: z.string().regex(/^mcp_[0-9A-HJKMNP-TV-Z]{26}$/),
291
379
  scope: z.string().optional(),
292
- callbackUrl: z.url().optional(),
293
- });
294
- export const zOAuthStartResult = z.object({
295
- authorizationUrl: z.string(),
296
- sessionId: z.string(),
297
- state: z.string(),
298
380
  });
381
+ export const zOAuthConnectResult = z.union([
382
+ z.object({
383
+ alreadyConnected: z.literal(true),
384
+ credentialId: z.string(),
385
+ }),
386
+ z.object({
387
+ alreadyConnected: z.literal(false),
388
+ authorizationUrl: z.string(),
389
+ sessionId: z.string(),
390
+ }),
391
+ ]);
299
392
  export const zCredentialTransferInput = z.object({
300
393
  targetVaultId: z.string().regex(/^vlt_[0-9A-HJKMNP-TV-Z]{26}$/),
301
394
  mode: z.enum(["copy", "move"]).optional().default("copy"),
@@ -317,6 +410,23 @@ export const zCredentialAuthPublic = z.union([
317
410
  resource: z.string().optional(),
318
411
  })
319
412
  .nullish(),
413
+ profile: z
414
+ .union([
415
+ z.object({
416
+ service: z.literal("github"),
417
+ id: z.number(),
418
+ login: z.string(),
419
+ name: z.string().nullable(),
420
+ }),
421
+ z.object({
422
+ service: z.literal("google_workspace"),
423
+ sub: z.string(),
424
+ email: z.string(),
425
+ name: z.string().nullable(),
426
+ hd: z.string().nullable(),
427
+ }),
428
+ ])
429
+ .nullish(),
320
430
  }),
321
431
  z.object({
322
432
  type: z.literal("env"),
@@ -330,12 +440,17 @@ export const zCredentialAuthPublic = z.union([
330
440
  provider: z.enum(["composio"]),
331
441
  userId: z.string(),
332
442
  }),
443
+ z.object({
444
+ type: z.literal("custom"),
445
+ fieldNames: z.array(z.string()),
446
+ }),
333
447
  ]);
334
448
  export const zCredential = z.object({
335
449
  id: z.string(),
336
450
  vaultId: z.string(),
337
451
  name: z.string(),
338
452
  mcpId: z.string().nullable(),
453
+ oauthAppId: z.string().nullable(),
339
454
  provider: z.enum(["github", "google_workspace"]).nullable(),
340
455
  label: z.string().nullable(),
341
456
  keyPreview: z.string().nullable(),
@@ -346,17 +461,16 @@ export const zCredential = z.object({
346
461
  updatedAt: z.iso
347
462
  .datetime()
348
463
  .regex(/^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$/),
349
- archivedAt: z.iso
350
- .datetime()
351
- .regex(/^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$/)
352
- .nullable(),
353
464
  });
354
465
  export const zCredentialTransferResult = z.object({
355
466
  target: zCredential,
356
467
  sourceCredentialId: z.string(),
357
- sourceArchived: z.boolean(),
468
+ sourceDeleted: z.boolean(),
358
469
  replacedCredentialId: z.string().nullable(),
359
470
  });
471
+ /**
472
+ * Rotate the secret in place. The kind (bearer/oauth/env/basic) cannot change. Replacing an OAuth token without its renewal info (refresh token + token endpoint) disables automatic renewal.
473
+ */
360
474
  export const zCredentialAuth = z.union([
361
475
  z.object({
362
476
  type: z.literal("bearer"),
@@ -410,24 +524,113 @@ export const zCredentialAuth = z.union([
410
524
  userId: z.string(),
411
525
  url: z.url(),
412
526
  }),
527
+ z.object({
528
+ type: z.literal("custom"),
529
+ fields: z.record(z.string(), z.string().max(4096)),
530
+ }),
413
531
  ]);
414
- export const zVault = z.object({
532
+ export const zCredentialCreateAuth = z.union([
533
+ z.object({
534
+ type: z.literal("bearer"),
535
+ token: z.string(),
536
+ }),
537
+ z.object({
538
+ type: z.literal("oauth"),
539
+ accessToken: z.string(),
540
+ expiresAt: z.string().nullish(),
541
+ refresh: z
542
+ .object({
543
+ clientId: z.string(),
544
+ refreshToken: z.string(),
545
+ clientSecret: z.string().optional(),
546
+ tokenEndpoint: z.string().optional(),
547
+ tokenEndpointAuth: z.enum(["none", "client_secret_basic", "client_secret_post"]).optional(),
548
+ scope: z.string().optional(),
549
+ resource: z.string().optional(),
550
+ })
551
+ .nullish(),
552
+ profile: z
553
+ .union([
554
+ z.object({
555
+ service: z.literal("github"),
556
+ id: z.number(),
557
+ login: z.string(),
558
+ name: z.string().nullable(),
559
+ }),
560
+ z.object({
561
+ service: z.literal("google_workspace"),
562
+ sub: z.string(),
563
+ email: z.string(),
564
+ name: z.string().nullable(),
565
+ hd: z.string().nullable(),
566
+ }),
567
+ ])
568
+ .nullish(),
569
+ }),
570
+ z.object({
571
+ type: z.literal("env"),
572
+ value: z.string(),
573
+ }),
574
+ z.object({
575
+ type: z.literal("basic"),
576
+ username: z.string(),
577
+ password: z.string(),
578
+ }),
579
+ z.object({
580
+ type: z.literal("custom"),
581
+ fields: z.record(z.string(), z.string().max(4096)),
582
+ }),
583
+ ]);
584
+ /**
585
+ * Create a credential in one of two slots. Adding to a slot that is already filled replaces it in place (that is what 'Reconnect' does). Labels double as environment-variable names and must be unique per vault.
586
+ */
587
+ export const zCreateCredentialBody = z.union([
588
+ z.object({
589
+ slot: z.literal("mcp"),
590
+ mcpId: z.string().regex(/^mcp_[0-9A-HJKMNP-TV-Z]{26}$/),
591
+ name: z.string().min(1).max(256),
592
+ auth: zCredentialCreateAuth,
593
+ }),
594
+ z.object({
595
+ slot: z.literal("env"),
596
+ label: z
597
+ .string()
598
+ .min(1)
599
+ .max(128)
600
+ .regex(/^[A-Z_][A-Z0-9_]*$/),
601
+ name: z.string().min(1).max(256),
602
+ auth: zCredentialCreateAuth,
603
+ }),
604
+ ]);
605
+ export const zVaultDetail = z.object({
415
606
  id: z.string(),
416
607
  name: z.string(),
417
608
  description: z.string().nullable(),
418
- isDefault: z.boolean(),
419
609
  orgId: z.string(),
420
610
  userId: z.string().nullable(),
611
+ podId: z.string().nullable(),
421
612
  createdAt: z.iso
422
613
  .datetime()
423
614
  .regex(/^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$/),
424
615
  updatedAt: z.iso
425
616
  .datetime()
426
617
  .regex(/^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$/),
427
- archivedAt: z.iso
618
+ tier: z.enum(["org", "pod", "user"]),
619
+ credentialLimit: z.int().gte(-9007199254740991).lte(9007199254740991),
620
+ });
621
+ export const zVault = z.object({
622
+ id: z.string(),
623
+ name: z.string(),
624
+ description: z.string().nullable(),
625
+ orgId: z.string(),
626
+ userId: z.string().nullable(),
627
+ podId: z.string().nullable(),
628
+ createdAt: z.iso
428
629
  .datetime()
429
- .regex(/^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$/)
430
- .nullable(),
630
+ .regex(/^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$/),
631
+ updatedAt: z.iso
632
+ .datetime()
633
+ .regex(/^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$/),
431
634
  });
432
635
  export const zLinearMapping = z.object({
433
636
  id: z.string(),
@@ -612,6 +815,46 @@ export const zWebhookTriggerCreateResult = z.object({
612
815
  trigger: zWebhookTrigger,
613
816
  plaintextSecret: z.string().nullable(),
614
817
  });
818
+ export const zCronTriggerDetail = z.object({
819
+ id: z.string(),
820
+ projectId: z.string(),
821
+ projectAgentId: z.string().nullable(),
822
+ senderUserId: z.string(),
823
+ inputMessage: z.string(),
824
+ schedule: z.string(),
825
+ timezone: z.string().nullable(),
826
+ until: z.iso
827
+ .datetime()
828
+ .regex(/^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$/)
829
+ .nullable(),
830
+ isEnabled: z.boolean(),
831
+ syncedAt: z.iso
832
+ .datetime()
833
+ .regex(/^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$/)
834
+ .nullable(),
835
+ createdAt: z.iso
836
+ .datetime()
837
+ .regex(/^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$/),
838
+ updatedAt: z.iso
839
+ .datetime()
840
+ .regex(/^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$/),
841
+ archivedAt: z.iso
842
+ .datetime()
843
+ .regex(/^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$/)
844
+ .nullable(),
845
+ lastRun: z
846
+ .object({
847
+ at: z.iso
848
+ .datetime()
849
+ .regex(/^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$/),
850
+ status: z.string(),
851
+ })
852
+ .nullable(),
853
+ nextRunAt: z.iso
854
+ .datetime()
855
+ .regex(/^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$/)
856
+ .nullable(),
857
+ });
615
858
  export const zCronTrigger = z.object({
616
859
  id: z.string(),
617
860
  projectId: z.string(),
@@ -780,6 +1023,22 @@ export const zSkillVersionFiles = z.object({
780
1023
  contentBase64: z.string(),
781
1024
  })),
782
1025
  });
1026
+ export const zSkillRequiredCredential = z.union([
1027
+ z.object({
1028
+ kind: z.literal("env").optional().default("env"),
1029
+ name: z
1030
+ .string()
1031
+ .min(1)
1032
+ .max(128)
1033
+ .regex(/^[A-Z_][A-Z0-9_]*$/),
1034
+ description: z.string().max(512).optional(),
1035
+ }),
1036
+ z.object({
1037
+ kind: z.literal("oauth_app"),
1038
+ name: z.string().min(1).max(128),
1039
+ description: z.string().max(512).optional(),
1040
+ }),
1041
+ ]);
783
1042
  export const zSkillVersion = z.object({
784
1043
  id: z.string(),
785
1044
  skillId: z.string(),
@@ -804,7 +1063,7 @@ export const zSkillVersion = z.object({
804
1063
  path: z.string().optional(),
805
1064
  }),
806
1065
  ]),
807
- requiredCredentials: z.array(zRequiredCredential),
1066
+ requiredCredentials: z.array(zSkillRequiredCredential),
808
1067
  releaseNotes: z.string().nullable(),
809
1068
  });
810
1069
  export const zSkillArchiveResult = z.object({
@@ -841,6 +1100,7 @@ export const zSkillArchiveResult = z.object({
841
1100
  .nullable(),
842
1101
  deprecationMessage: z.string().nullable(),
843
1102
  tags: z.array(z.string()).optional().default([]),
1103
+ publisher: zPublisherPublicView.nullish().default(null),
844
1104
  agentCount: z.int().gte(-9007199254740991).lte(9007199254740991),
845
1105
  projectCount: z.int().gte(-9007199254740991).lte(9007199254740991),
846
1106
  });
@@ -878,6 +1138,7 @@ export const zSkill = z.object({
878
1138
  .nullable(),
879
1139
  deprecationMessage: z.string().nullable(),
880
1140
  tags: z.array(z.string()).optional().default([]),
1141
+ publisher: zPublisherPublicView.nullish().default(null),
881
1142
  });
882
1143
  export const zSessionVolumeRef = z.object({
883
1144
  kind: z.enum(["outputs", "uploads"]),
@@ -907,28 +1168,122 @@ export const zAuthRequirementEnvSource = z.object({
907
1168
  id: z.string(),
908
1169
  name: z.string(),
909
1170
  });
910
- export const zAuthRequirementEnv = z.object({
911
- name: z
912
- .string()
913
- .min(1)
914
- .max(128)
915
- .regex(/^[A-Z_][A-Z0-9_]*$/),
916
- description: z.string().max(512).optional(),
917
- satisfied: z.boolean(),
918
- neededBy: z.array(zAuthRequirementEnvSource),
919
- });
1171
+ export const zAuthRequirementEnv = z.union([
1172
+ z.object({
1173
+ kind: z.literal("env").optional().default("env"),
1174
+ name: z
1175
+ .string()
1176
+ .min(1)
1177
+ .max(128)
1178
+ .regex(/^[A-Z_][A-Z0-9_]*$/),
1179
+ description: z.string().max(512).optional(),
1180
+ satisfied: z.boolean(),
1181
+ neededBy: z.array(zAuthRequirementEnvSource),
1182
+ }),
1183
+ z.object({
1184
+ kind: z.literal("secret"),
1185
+ name: z
1186
+ .string()
1187
+ .min(1)
1188
+ .max(64)
1189
+ .regex(/^[a-z][A-Za-z0-9_]*$/),
1190
+ description: z.string().max(512).optional(),
1191
+ satisfied: z.boolean(),
1192
+ neededBy: z.array(zAuthRequirementEnvSource),
1193
+ }),
1194
+ z.object({
1195
+ kind: z.literal("oauth_app"),
1196
+ name: z.string().min(1).max(128),
1197
+ description: z.string().max(512).optional(),
1198
+ satisfied: z.boolean(),
1199
+ neededBy: z.array(zAuthRequirementEnvSource),
1200
+ }),
1201
+ z.object({
1202
+ kind: z.literal("text"),
1203
+ name: z
1204
+ .string()
1205
+ .min(1)
1206
+ .max(64)
1207
+ .regex(/^[a-z][A-Za-z0-9_]*$/),
1208
+ description: z.string().max(512).optional(),
1209
+ message: z.string().min(1).max(512),
1210
+ placeholder: z.string().max(256).optional(),
1211
+ when: zRequirementWhen.optional(),
1212
+ satisfied: z.boolean(),
1213
+ neededBy: z.array(zAuthRequirementEnvSource),
1214
+ }),
1215
+ z.object({
1216
+ kind: z.literal("select"),
1217
+ name: z
1218
+ .string()
1219
+ .min(1)
1220
+ .max(64)
1221
+ .regex(/^[a-z][A-Za-z0-9_]*$/),
1222
+ description: z.string().max(512).optional(),
1223
+ message: z.string().min(1).max(512),
1224
+ options: z
1225
+ .array(z.object({
1226
+ label: z.string().min(1).max(256),
1227
+ value: z.string().max(512),
1228
+ hint: z.string().max(256).optional(),
1229
+ }))
1230
+ .min(1)
1231
+ .max(64),
1232
+ when: zRequirementWhen.optional(),
1233
+ satisfied: z.boolean(),
1234
+ neededBy: z.array(zAuthRequirementEnvSource),
1235
+ }),
1236
+ ]);
920
1237
  export const zMcpAuthConfig = z.union([
921
1238
  z.object({
922
1239
  type: z.literal("oauth"),
923
- scopes: z.array(z.string()).optional(),
1240
+ scopes: z.array(z.string().min(1).max(256)).optional(),
924
1241
  tokenEndpoint: z.string().optional(),
925
1242
  authorizationEndpoint: z.string().optional(),
926
1243
  tokenEndpointAuth: z.enum(["none", "client_secret_basic", "client_secret_post"]).optional(),
1244
+ oauthAppName: z.string().min(1).max(128).optional(),
1245
+ }),
1246
+ z.object({
1247
+ type: z.literal("header"),
1248
+ headers: z
1249
+ .array(z.object({
1250
+ name: z
1251
+ .string()
1252
+ .min(1)
1253
+ .max(128)
1254
+ .regex(/^[A-Za-z0-9!#$%&'*+\-.^_`|~]+$/),
1255
+ template: z.string().min(1).max(512),
1256
+ }))
1257
+ .max(8)
1258
+ .optional()
1259
+ .default([]),
1260
+ queryParams: z
1261
+ .array(z.object({
1262
+ name: z
1263
+ .string()
1264
+ .min(1)
1265
+ .max(128)
1266
+ .regex(/^[A-Za-z0-9._~-]+$/),
1267
+ template: z.string().min(1).max(512),
1268
+ }))
1269
+ .max(8)
1270
+ .optional()
1271
+ .default([]),
927
1272
  }),
928
1273
  z.object({
929
1274
  type: z.literal("api_key"),
930
- headerName: z.string().optional(),
931
- queryParam: z.string().optional(),
1275
+ headerName: z
1276
+ .string()
1277
+ .min(1)
1278
+ .max(128)
1279
+ .regex(/^[A-Za-z0-9!#$%&'*+\-.^_`|~]+$/)
1280
+ .optional(),
1281
+ queryParam: z
1282
+ .string()
1283
+ .min(1)
1284
+ .max(128)
1285
+ .regex(/^[A-Za-z0-9._~-]+$/)
1286
+ .optional(),
932
1287
  }),
933
1288
  z.object({
934
1289
  type: z.literal("basic"),
@@ -1055,6 +1410,9 @@ export const zSessionCreateJob = z.object({
1055
1410
  jobId: z.string().regex(/^sjob_[0-9A-HJKMNP-TV-Z]{26}$/),
1056
1411
  status: z.literal("pending"),
1057
1412
  });
1413
+ export const zResourceIconUpload = z.object({
1414
+ url: z.url(),
1415
+ });
1058
1416
  export const zReplay = z.object({
1059
1417
  id: z.string(),
1060
1418
  orgId: z.string(),
@@ -1208,12 +1566,57 @@ export const zProject = z.object({
1208
1566
  .regex(/^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$/)
1209
1567
  .nullable(),
1210
1568
  });
1569
+ /**
1570
+ * An artifact: a static site an agent built in its pod, hosted at a URL.
1571
+ */
1572
+ export const zArtifact = z.object({
1573
+ id: z.string(),
1574
+ orgId: z.string(),
1575
+ podId: z.string(),
1576
+ sourceSessionId: z.string().nullable(),
1577
+ slug: z.string(),
1578
+ title: z.string(),
1579
+ description: z.string(),
1580
+ shareToken: z.string(),
1581
+ createdAt: z.iso
1582
+ .datetime()
1583
+ .regex(/^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$/),
1584
+ updatedAt: z.iso
1585
+ .datetime()
1586
+ .regex(/^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$/),
1587
+ archivedAt: z.iso
1588
+ .datetime()
1589
+ .regex(/^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$/)
1590
+ .nullable(),
1591
+ url: z.url(),
1592
+ });
1593
+ export const zPodDatabase = z.object({
1594
+ id: z.string(),
1595
+ podId: z.string(),
1596
+ orgId: z.string(),
1597
+ userId: z.string().nullable(),
1598
+ slug: z.string(),
1599
+ name: z.string(),
1600
+ description: z.string(),
1601
+ createdAt: z.iso
1602
+ .datetime()
1603
+ .regex(/^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$/),
1604
+ updatedAt: z.iso
1605
+ .datetime()
1606
+ .regex(/^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$/),
1607
+ archivedAt: z.iso
1608
+ .datetime()
1609
+ .regex(/^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$/)
1610
+ .nullable(),
1611
+ });
1211
1612
  export const zSandbox = z.object({
1212
1613
  id: z.string(),
1213
1614
  orgId: z.string(),
1214
1615
  userId: z.string().nullable(),
1215
1616
  providerId: z.string(),
1216
1617
  providerSandboxId: z.string().nullable(),
1618
+ templateRef: z.string().nullable(),
1619
+ buildId: z.string().nullable(),
1217
1620
  internalHost: z.string().nullable(),
1218
1621
  publicHost: z.string().nullable(),
1219
1622
  createdAt: z.iso
@@ -1253,17 +1656,20 @@ export const zPodSandboxProvisionResponse = z.object({
1253
1656
  workflowId: z.string(),
1254
1657
  status: z.literal("provisioning"),
1255
1658
  });
1256
- export const zPodVault = z.object({
1257
- id: z.string(),
1258
- podId: z.string(),
1659
+ export const zPodResolvedCredential = z.object({
1660
+ credentialId: z.string(),
1661
+ name: z.string(),
1259
1662
  vaultId: z.string(),
1260
- priority: z.int().gte(-2147483648).lte(2147483647),
1261
- createdAt: z.iso
1262
- .datetime()
1263
- .regex(/^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$/),
1264
- updatedAt: z.iso
1265
- .datetime()
1266
- .regex(/^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$/),
1663
+ vaultName: z.string(),
1664
+ tier: z.enum(["org", "pod", "user"]),
1665
+ sourcePodId: z.string().nullable(),
1666
+ anchor: z.string(),
1667
+ keyPreview: z.string().nullable(),
1668
+ shadowed: z.boolean(),
1669
+ });
1670
+ export const zPodCredentials = z.object({
1671
+ writeVaultId: z.string().nullable(),
1672
+ credentials: z.array(zPodResolvedCredential),
1267
1673
  });
1268
1674
  export const zPodMember = z.object({
1269
1675
  id: z.string(),
@@ -1277,6 +1683,7 @@ export const zPodMember = z.object({
1277
1683
  .datetime()
1278
1684
  .regex(/^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$/),
1279
1685
  });
1686
+ export const zPresetTemplate = z.enum(["xs", "small", "medium", "large", "xl"]);
1280
1687
  export const zPod = z.object({
1281
1688
  id: z.string(),
1282
1689
  name: z.string(),
@@ -1287,6 +1694,7 @@ export const zPod = z.object({
1287
1694
  defaultModel: z.string().nullable(),
1288
1695
  instructions: z.string(),
1289
1696
  environmentId: z.string().nullable(),
1697
+ presetTemplate: zPresetTemplate,
1290
1698
  orgId: z.string(),
1291
1699
  userId: z.string().nullable(),
1292
1700
  manifestUpdatedAt: z.iso
@@ -1383,6 +1791,9 @@ export const zMemoryStoreFile = z.object({
1383
1791
  .optional(),
1384
1792
  contentSha256: z.string().optional(),
1385
1793
  });
1794
+ /**
1795
+ * A memory store: a named bucket of agent knowledge that persists between sessions, mounted at its mountPath.
1796
+ */
1386
1797
  export const zMemoryStore = z.object({
1387
1798
  id: z.string(),
1388
1799
  name: z.string(),
@@ -1401,6 +1812,7 @@ export const zMemoryStore = z.object({
1401
1812
  .datetime()
1402
1813
  .regex(/^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$/)
1403
1814
  .nullable(),
1815
+ mountPath: z.string(),
1404
1816
  });
1405
1817
  export const zOnboardingComplete = z.object({
1406
1818
  onboarding: z.object({
@@ -1435,31 +1847,17 @@ export const zMe = z.object({
1435
1847
  }),
1436
1848
  method: z.enum(["session", "pat", "sandbox"]),
1437
1849
  });
1438
- export const zOAuthSessionStatus = z.object({
1850
+ export const zSearchResult = z.object({
1439
1851
  id: z.string(),
1440
- status: z.enum(["pending", "active", "failed", "expired"]),
1441
- mcpId: z.string().nullable(),
1442
- credentialId: z.string().nullable(),
1443
- failureReason: z.string().nullable(),
1444
- expiresAt: z.iso
1852
+ slug: z.string(),
1853
+ name: z.string(),
1854
+ description: z.string().nullable(),
1855
+ icon: z.string().nullable(),
1856
+ source: z.enum(["user", "org", "registry"]),
1857
+ updatedAt: z.iso
1445
1858
  .datetime()
1446
1859
  .regex(/^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$/),
1447
1860
  });
1448
- export const zMcpOAuthConnectBody = z.object({
1449
- scope: z.string().optional(),
1450
- callbackUrl: z.url().optional(),
1451
- });
1452
- export const zMcpOAuthConnectResult = z.union([
1453
- z.object({
1454
- alreadyConnected: z.literal(true),
1455
- credentialId: z.string(),
1456
- }),
1457
- z.object({
1458
- alreadyConnected: z.literal(false),
1459
- authorizationUrl: z.string(),
1460
- sessionId: z.string(),
1461
- }),
1462
- ]);
1463
1861
  export const zMcp = z.object({
1464
1862
  id: z.string(),
1465
1863
  slug: z.string(),
@@ -1469,9 +1867,10 @@ export const zMcp = z.object({
1469
1867
  mcpServerUrl: z.string().nullable(),
1470
1868
  docUrl: z.string().nullable(),
1471
1869
  type: z.enum(["remote", "local"]),
1472
- transport: z.enum(["streamable-http", "sse", "stdio"]),
1473
1870
  command: z.string().nullable(),
1474
1871
  args: z.array(z.string()),
1872
+ cwd: z.string().nullable(),
1873
+ timeout: zMcpTimeout.nullable(),
1475
1874
  version: z.string().nullable(),
1476
1875
  repository: zRepository.nullable(),
1477
1876
  tools: z.array(z.string()),
@@ -1504,6 +1903,67 @@ export const zMcp = z.object({
1504
1903
  .nullable(),
1505
1904
  deprecationMessage: z.string().nullable(),
1506
1905
  tags: z.array(z.string()).optional().default([]),
1906
+ publisher: zPublisherPublicView.nullish().default(null),
1907
+ });
1908
+ export const zOAuthAppUsage = z.object({
1909
+ mcpIds: z.array(z.string()),
1910
+ });
1911
+ export const zOAuthAuthorizeParams = z.record(z.string(), z.string().max(512));
1912
+ export const zOAuthAppUpdateInput = z.object({
1913
+ name: z.string().min(1).max(128).optional(),
1914
+ clientId: z.string().min(1).max(512).optional(),
1915
+ clientSecret: z.string().min(1).max(2048).nullish(),
1916
+ scopes: z.array(z.string().min(1)).max(64).optional(),
1917
+ tokenEndpointAuth: z.enum(["none", "client_secret_basic", "client_secret_post"]).optional(),
1918
+ resource: z.string().max(512).nullish(),
1919
+ authorizeParams: zOAuthAuthorizeParams.optional(),
1920
+ pkce: z.boolean().optional(),
1921
+ discovery: z.enum(["static", "mcp"]).optional(),
1922
+ authorizationEndpoint: z.url().nullish(),
1923
+ tokenEndpoint: z.url().nullish(),
1924
+ });
1925
+ export const zOAuthAppCreateInput = z.object({
1926
+ name: z.string().min(1).max(128),
1927
+ clientId: z.string().min(1).max(512),
1928
+ clientSecret: z.string().min(1).max(2048).nullish().default(null),
1929
+ scopes: z.array(z.string().min(1)).max(64).optional().default([]),
1930
+ tokenEndpointAuth: z.enum(["none", "client_secret_basic", "client_secret_post"]).optional().default("none"),
1931
+ resource: z.string().max(512).nullish().default(null),
1932
+ authorizeParams: zOAuthAuthorizeParams.optional(),
1933
+ pkce: z.boolean().optional().default(true),
1934
+ discovery: z.enum(["static", "mcp"]).optional().default("mcp"),
1935
+ authorizationEndpoint: z.url().nullish().default(null),
1936
+ tokenEndpoint: z.url().nullish().default(null),
1937
+ });
1938
+ export const zOAuthAppRedirectUri = z.object({
1939
+ redirectUri: z.url(),
1940
+ });
1941
+ export const zOAuthApp = z.object({
1942
+ id: z.string(),
1943
+ orgId: z.string(),
1944
+ configuredById: z.string().nullable(),
1945
+ name: z.string(),
1946
+ provider: z.string().nullable(),
1947
+ clientId: z.string(),
1948
+ scopes: z.array(z.string()),
1949
+ discovery: z.enum(["static", "mcp"]),
1950
+ authorizationEndpoint: z.string().nullable(),
1951
+ tokenEndpoint: z.string().nullable(),
1952
+ tokenEndpointAuth: z.enum(["none", "client_secret_basic", "client_secret_post"]),
1953
+ resource: z.string().nullable(),
1954
+ authorizeParams: zOAuthAuthorizeParams,
1955
+ pkce: z.boolean(),
1956
+ createdAt: z.iso
1957
+ .datetime()
1958
+ .regex(/^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$/),
1959
+ updatedAt: z.iso
1960
+ .datetime()
1961
+ .regex(/^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$/),
1962
+ archivedAt: z.iso
1963
+ .datetime()
1964
+ .regex(/^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$/)
1965
+ .nullable(),
1966
+ hasClientSecret: z.boolean(),
1507
1967
  });
1508
1968
  export const zGoogleWorkspaceOAuthStartResult = z.object({
1509
1969
  url: z.url(),
@@ -1576,6 +2036,8 @@ export const zStoreStartUploadResponse = z.object({
1576
2036
  expiresAt: z.iso
1577
2037
  .datetime()
1578
2038
  .regex(/^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$/),
2039
+ uploadId: z.string(),
2040
+ status: z.literal("staged"),
1579
2041
  });
1580
2042
  export const zStorePresignResponse = z.object({
1581
2043
  url: z.string(),
@@ -1592,6 +2054,9 @@ export const zFileStoreFile = z.object({
1592
2054
  .optional(),
1593
2055
  contentSha256: z.string().optional(),
1594
2056
  });
2057
+ /**
2058
+ * A file store: a named bucket of user artifacts, mounted into agent workspaces at its mountPath.
2059
+ */
1595
2060
  export const zFileStore = z.object({
1596
2061
  id: z.string(),
1597
2062
  name: z.string(),
@@ -1610,13 +2075,43 @@ export const zFileStore = z.object({
1610
2075
  .datetime()
1611
2076
  .regex(/^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$/)
1612
2077
  .nullable(),
2078
+ mountPath: z.string(),
2079
+ });
2080
+ export const zTemplateMemoryMb = z.union([
2081
+ z.literal(1024),
2082
+ z.literal(2048),
2083
+ z.literal(3072),
2084
+ z.literal(4096),
2085
+ z.literal(5120),
2086
+ z.literal(6144),
2087
+ z.literal(7168),
2088
+ z.literal(8192),
2089
+ ]);
2090
+ export const zTemplateCpuCount = z.union([z.literal(1), z.literal(2), z.literal(4), z.literal(6), z.literal(8)]);
2091
+ export const zEnvironmentBuildStatus = z.enum(["queued", "building", "ready", "error"]);
2092
+ export const zEnvironmentBuild = z.object({
2093
+ id: z.string(),
2094
+ environmentId: z.string(),
2095
+ status: zEnvironmentBuildStatus,
2096
+ tag: z.string().nullable(),
2097
+ cpuCount: zTemplateCpuCount,
2098
+ memoryMB: zTemplateMemoryMb,
2099
+ baseRef: z.string(),
2100
+ templateId: z.string().nullable(),
2101
+ buildId: z.string().nullable(),
2102
+ log: z.string(),
2103
+ error: z.string().nullable(),
2104
+ createdAt: z.iso
2105
+ .datetime()
2106
+ .regex(/^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$/),
2107
+ updatedAt: z.iso
2108
+ .datetime()
2109
+ .regex(/^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$/),
1613
2110
  });
1614
2111
  export const zPackagesConfig = z.object({
1615
2112
  apt: z.array(z.string()).optional(),
1616
2113
  npm: z.array(z.string()).optional(),
1617
2114
  pip: z.array(z.string()).optional(),
1618
- cargo: z.array(z.string()).optional(),
1619
- gem: z.array(z.string()).optional(),
1620
2115
  go: z.array(z.string()).optional(),
1621
2116
  });
1622
2117
  export const zNetworkingConfig = z.union([
@@ -1637,8 +2132,14 @@ export const zEnvironment = z.object({
1637
2132
  orgId: z.string(),
1638
2133
  userId: z.string().nullable(),
1639
2134
  hostingType: z.enum(["cloud"]),
2135
+ cpuCount: zTemplateCpuCount,
2136
+ memoryMB: zTemplateMemoryMb,
2137
+ templateName: z.string().nullable(),
2138
+ tag: z.string().nullable(),
2139
+ currentBuildId: z.string().nullable(),
1640
2140
  networking: zNetworkingConfig,
1641
2141
  packages: zPackagesConfig,
2142
+ buildCommands: z.array(z.string().min(1).max(4096)).max(50),
1642
2143
  createdAt: z.iso
1643
2144
  .datetime()
1644
2145
  .regex(/^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$/),
@@ -1711,6 +2212,7 @@ export const zUsageGroup = z.object({
1711
2212
  export const zUsageDailyPoint = z.object({
1712
2213
  date: z.string(),
1713
2214
  credits: z.string(),
2215
+ eventCount: z.int().gte(-9007199254740991).lte(9007199254740991),
1714
2216
  });
1715
2217
  export const zUsageBreakdownItem = z.object({
1716
2218
  source: z.string(),
@@ -1957,6 +2459,52 @@ export const zBlueprint = z.object({
1957
2459
  .regex(/^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$/)
1958
2460
  .nullable(),
1959
2461
  deprecationMessage: z.string().nullable(),
2462
+ publisher: zPublisherPublicView.nullish().default(null),
2463
+ });
2464
+ export const zAgentVersionArchiveResult = z.object({
2465
+ id: z.string(),
2466
+ agentId: z.string(),
2467
+ version: z.string().regex(/^\d+\.\d+\.\d+$/),
2468
+ createdById: z.string(),
2469
+ createdAt: z.iso
2470
+ .datetime()
2471
+ .regex(/^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$/),
2472
+ archivedAt: z.iso
2473
+ .datetime()
2474
+ .regex(/^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$/)
2475
+ .nullable(),
2476
+ description: z.string().nullable(),
2477
+ prompt: z.string().nullable(),
2478
+ model: z.string().nullable(),
2479
+ releaseNotes: z.string().nullable(),
2480
+ permission: zPermissionConfig,
2481
+ skills: z
2482
+ .array(z.object({
2483
+ skillId: z.string(),
2484
+ skillVersionId: z.string().nullish().default(null),
2485
+ skill: z.object({
2486
+ id: z.string(),
2487
+ slug: z.string(),
2488
+ name: z.string(),
2489
+ icon: z.string().nullable(),
2490
+ }),
2491
+ }))
2492
+ .optional()
2493
+ .default([]),
2494
+ mcps: z
2495
+ .array(z.object({
2496
+ mcpId: z.string(),
2497
+ mcp: z.object({
2498
+ id: z.string(),
2499
+ slug: z.string(),
2500
+ name: z.string(),
2501
+ icon: z.string().nullable(),
2502
+ }),
2503
+ }))
2504
+ .optional()
2505
+ .default([]),
2506
+ projectCount: z.int().gte(0).lte(9007199254740991),
2507
+ podCount: z.int().gte(0).lte(9007199254740991),
1960
2508
  });
1961
2509
  export const zAgentVersion = z.object({
1962
2510
  id: z.string(),
@@ -2001,16 +2549,37 @@ export const zAgentVersion = z.object({
2001
2549
  .optional()
2002
2550
  .default([]),
2003
2551
  });
2004
- export const zSearchResult = z.object({
2552
+ export const zAgentArchiveResult = z.object({
2005
2553
  id: z.string(),
2006
2554
  slug: z.string(),
2007
2555
  name: z.string(),
2008
- description: z.string().nullable(),
2009
2556
  icon: z.string().nullable(),
2010
- source: z.enum(["user", "org", "registry"]),
2557
+ orgId: z.string(),
2558
+ userId: z.string().nullable(),
2559
+ publisherId: z.string().nullable(),
2560
+ parentId: z.string().nullable(),
2561
+ websiteMetadata: zWebsiteMetadata.nullable(),
2562
+ latestVersionId: z.string().nullable(),
2563
+ createdAt: z.iso
2564
+ .datetime()
2565
+ .regex(/^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$/),
2011
2566
  updatedAt: z.iso
2012
2567
  .datetime()
2013
2568
  .regex(/^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$/),
2569
+ archivedAt: z.iso
2570
+ .datetime()
2571
+ .regex(/^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$/)
2572
+ .nullable(),
2573
+ deprecatedAt: z.iso
2574
+ .datetime()
2575
+ .regex(/^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$/)
2576
+ .nullable(),
2577
+ deprecationMessage: z.string().nullable(),
2578
+ tags: z.array(z.string()).optional().default([]),
2579
+ publisher: zPublisherPublicView.nullish().default(null),
2580
+ latestVersion: zAgentLatestVersion.nullish(),
2581
+ projectCount: z.int().gte(0).lte(9007199254740991),
2582
+ podCount: z.int().gte(0).lte(9007199254740991),
2014
2583
  });
2015
2584
  export const zAgent = z.object({
2016
2585
  id: z.string(),
@@ -2039,13 +2608,18 @@ export const zAgent = z.object({
2039
2608
  .nullable(),
2040
2609
  deprecationMessage: z.string().nullable(),
2041
2610
  tags: z.array(z.string()).optional().default([]),
2611
+ publisher: zPublisherPublicView.nullish().default(null),
2042
2612
  latestVersion: zAgentLatestVersion.nullish(),
2043
2613
  });
2044
2614
  export const zAgentListQuery = z.object({
2045
2615
  limit: z.int().gte(1).lte(1000).optional(),
2046
2616
  offset: z.int().gte(0).lte(9007199254740991).optional(),
2047
2617
  includeDeprecated: z.boolean().optional(),
2048
- visibility: z.enum(["private", "org"]).optional(),
2618
+ visibility: z.enum(["private", "pod", "org"]).optional(),
2619
+ query: z.string().optional(),
2620
+ published: z.boolean().optional(),
2621
+ publisherId: z.string().optional(),
2622
+ tagged: z.union([z.string(), z.array(z.string())]).optional(),
2049
2623
  });
2050
2624
  /**
2051
2625
  * List of agents
@@ -2054,61 +2628,42 @@ export const zAgentListResponse = z.array(zAgent);
2054
2628
  export const zAgentCreateBody = z.object({
2055
2629
  name: z.string().min(1).max(256),
2056
2630
  icon: z.string().nullish().default(null),
2057
- tags: z.array(z.string()).optional(),
2058
- visibility: z.enum(["private", "org"]).optional().default("org"),
2631
+ tags: z.array(z.string()).nullish(),
2632
+ visibility: z.enum(["private", "pod", "org"]).optional().default("org"),
2059
2633
  version: z
2060
2634
  .union([z.string(), z.enum(["major", "minor", "patch"])])
2061
2635
  .optional()
2062
2636
  .default("patch"),
2063
- description: z.string().optional().default(""),
2064
- prompt: z.string().optional().default(""),
2065
- model: z.string().nullish().default(null),
2637
+ description: z.string().optional(),
2638
+ prompt: z.string().optional(),
2639
+ model: z.string().nullish(),
2066
2640
  permission: zPermissionConfig.optional(),
2067
2641
  skills: z
2068
2642
  .array(z.object({
2069
2643
  skillId: z.string(),
2070
2644
  skillVersionId: z.string().nullish().default(null),
2071
2645
  }))
2072
- .optional()
2073
- .default([]),
2646
+ .optional(),
2074
2647
  mcps: z
2075
2648
  .array(z.object({
2076
2649
  mcpId: z.string(),
2077
2650
  }))
2078
- .optional()
2079
- .default([]),
2651
+ .optional(),
2080
2652
  releaseNotes: z.string().max(4096).optional(),
2081
2653
  });
2082
2654
  /**
2083
2655
  * Created agent
2084
2656
  */
2085
2657
  export const zAgentCreateResponse = zAgent;
2086
- export const zAgentSearchBody = z.object({
2087
- query: z.string().optional(),
2088
- sources: z
2089
- .array(z.enum(["user", "org", "registry"]))
2090
- .min(1)
2091
- .optional()
2092
- .default(["user", "org", "registry"]),
2093
- limit: z.int().gte(1).lte(50).optional().default(20),
2094
- });
2095
- /**
2096
- * Matching agents
2097
- */
2098
- export const zAgentSearchResponse = z.array(zSearchResult);
2099
- export const zAgentGetBySlugPath = z.object({
2100
- slug: z
2101
- .string()
2102
- .min(1)
2103
- .max(128)
2104
- .regex(/^[a-z0-9-]+$/),
2105
- });
2106
- /**
2107
- * Agent details
2108
- */
2109
- export const zAgentGetBySlugResponse = zAgent;
2110
2658
  export const zAgentGetPath = z.object({
2111
- id: z.string().regex(/^agt_[0-9A-HJKMNP-TV-Z]{26}$/),
2659
+ idOrSlug: z.union([
2660
+ z.string().regex(/^agt_[0-9A-HJKMNP-TV-Z]{26}$/),
2661
+ z
2662
+ .string()
2663
+ .min(1)
2664
+ .max(128)
2665
+ .regex(/^[a-z0-9-]+$/),
2666
+ ]),
2112
2667
  });
2113
2668
  /**
2114
2669
  * Agent details
@@ -2118,7 +2673,7 @@ export const zAgentUpdateBody = z.object({
2118
2673
  name: z.string().optional(),
2119
2674
  icon: z.string().nullish(),
2120
2675
  websiteMetadata: zWebsiteMetadata.nullish(),
2121
- tags: z.array(z.string()).optional(),
2676
+ tags: z.array(z.string()).nullish(),
2122
2677
  });
2123
2678
  export const zAgentUpdatePath = z.object({
2124
2679
  id: z.string().regex(/^agt_[0-9A-HJKMNP-TV-Z]{26}$/),
@@ -2131,9 +2686,9 @@ export const zAgentArchivePath = z.object({
2131
2686
  id: z.string().regex(/^agt_[0-9A-HJKMNP-TV-Z]{26}$/),
2132
2687
  });
2133
2688
  /**
2134
- * Archived agent
2689
+ * Archived agent, with the blast radius (projectCount/podCount) of placements that referenced it.
2135
2690
  */
2136
- export const zAgentArchiveResponse = zAgent;
2691
+ export const zAgentArchiveResponse = zAgentArchiveResult;
2137
2692
  export const zAgentPublishPath = z.object({
2138
2693
  id: z.string().regex(/^agt_[0-9A-HJKMNP-TV-Z]{26}$/),
2139
2694
  });
@@ -2182,23 +2737,21 @@ export const zAgentVersionCreateBody = z.object({
2182
2737
  .union([z.string(), z.enum(["major", "minor", "patch"])])
2183
2738
  .optional()
2184
2739
  .default("patch"),
2185
- description: z.string().optional().default(""),
2186
- prompt: z.string().optional().default(""),
2187
- model: z.string().nullish().default(null),
2740
+ description: z.string().optional(),
2741
+ prompt: z.string().optional(),
2742
+ model: z.string().nullish(),
2188
2743
  permission: zPermissionConfig.optional(),
2189
2744
  skills: z
2190
2745
  .array(z.object({
2191
2746
  skillId: z.string(),
2192
2747
  skillVersionId: z.string().nullish().default(null),
2193
2748
  }))
2194
- .optional()
2195
- .default([]),
2749
+ .optional(),
2196
2750
  mcps: z
2197
2751
  .array(z.object({
2198
2752
  mcpId: z.string(),
2199
2753
  }))
2200
- .optional()
2201
- .default([]),
2754
+ .optional(),
2202
2755
  releaseNotes: z.string().max(4096).optional(),
2203
2756
  });
2204
2757
  export const zAgentVersionCreatePath = z.object({
@@ -2221,14 +2774,14 @@ export const zAgentVersionArchivePath = z.object({
2221
2774
  version: z.string().min(1).max(32),
2222
2775
  });
2223
2776
  /**
2224
- * Archived agent version
2777
+ * Archived agent version, with the blast radius of the placements it affected.
2225
2778
  */
2226
- export const zAgentVersionArchiveResponse = zAgentVersion;
2779
+ export const zAgentVersionArchiveResponse = zAgentVersionArchiveResult;
2227
2780
  export const zBlueprintListQuery = z.object({
2228
2781
  limit: z.int().gte(1).lte(1000).optional(),
2229
2782
  offset: z.int().gte(0).lte(9007199254740991).optional(),
2230
2783
  includeDeprecated: z.boolean().optional(),
2231
- visibility: z.enum(["private", "org"]).optional(),
2784
+ visibility: z.enum(["private", "pod", "org"]).optional(),
2232
2785
  });
2233
2786
  /**
2234
2787
  * List of blueprints
@@ -2242,7 +2795,7 @@ export const zBlueprintCreateBody = z.object({
2242
2795
  instructions: z.string().optional(),
2243
2796
  initialPrompt: zSpecInitialPrompt.optional(),
2244
2797
  selection: zBlueprintSelection,
2245
- visibility: z.enum(["private", "org"]).optional().default("org"),
2798
+ visibility: z.enum(["private", "pod", "org"]).optional().default("org"),
2246
2799
  });
2247
2800
  /**
2248
2801
  * Created blueprint
@@ -2442,7 +2995,7 @@ export const zEnvironmentListQuery = z.object({
2442
2995
  offset: z.int().gte(0).lte(9007199254740991).optional(),
2443
2996
  includeDeprecated: z.boolean().optional(),
2444
2997
  userId: z.string().nullish(),
2445
- visibility: z.enum(["private", "org"]).optional(),
2998
+ visibility: z.enum(["private", "pod", "org"]).optional(),
2446
2999
  });
2447
3000
  /**
2448
3001
  * List of environments
@@ -2454,7 +3007,10 @@ export const zEnvironmentCreateBody = z.object({
2454
3007
  description: z.string().optional().default(""),
2455
3008
  hostingType: z.enum(["cloud"]).optional().default("cloud"),
2456
3009
  packages: zPackagesConfig.optional(),
2457
- visibility: z.enum(["private", "org"]).optional().default("org"),
3010
+ cpuCount: zTemplateCpuCount.optional(),
3011
+ memoryMB: zTemplateMemoryMb.optional(),
3012
+ buildCommands: z.array(z.string().min(1).max(4096)).max(50).optional().default([]),
3013
+ visibility: z.enum(["private", "pod", "org"]).optional().default("org"),
2458
3014
  });
2459
3015
  /**
2460
3016
  * Created environment
@@ -2479,6 +3035,9 @@ export const zEnvironmentUpdateBody = z.object({
2479
3035
  description: z.string().optional(),
2480
3036
  networking: zNetworkingConfig.optional(),
2481
3037
  packages: zPackagesConfig.optional(),
3038
+ cpuCount: zTemplateCpuCount.optional(),
3039
+ memoryMB: zTemplateMemoryMb.optional(),
3040
+ buildCommands: z.array(z.string().min(1).max(4096)).max(50).optional(),
2482
3041
  });
2483
3042
  export const zEnvironmentUpdatePath = z.object({
2484
3043
  id: z.string().regex(/^env_[0-9A-HJKMNP-TV-Z]{26}$/),
@@ -2487,6 +3046,25 @@ export const zEnvironmentUpdatePath = z.object({
2487
3046
  * Updated environment
2488
3047
  */
2489
3048
  export const zEnvironmentUpdateResponse = zEnvironment;
3049
+ export const zEnvironmentBuildStartPath = z.object({
3050
+ id: z.string().regex(/^env_[0-9A-HJKMNP-TV-Z]{26}$/),
3051
+ });
3052
+ /**
3053
+ * Queued build
3054
+ */
3055
+ export const zEnvironmentBuildStartResponse = zEnvironmentBuild;
3056
+ export const zEnvironmentBuildListPath = z.object({
3057
+ id: z.string().regex(/^env_[0-9A-HJKMNP-TV-Z]{26}$/),
3058
+ });
3059
+ export const zEnvironmentBuildListQuery = z.object({
3060
+ limit: z.int().gte(1).lte(1000).optional(),
3061
+ offset: z.int().gte(0).lte(9007199254740991).optional(),
3062
+ includeDeprecated: z.boolean().optional(),
3063
+ });
3064
+ /**
3065
+ * Builds, newest first
3066
+ */
3067
+ export const zEnvironmentBuildListResponse = z.array(zEnvironmentBuild);
2490
3068
  export const zEnvironmentArchivePath = z.object({
2491
3069
  id: z.string().regex(/^env_[0-9A-HJKMNP-TV-Z]{26}$/),
2492
3070
  });
@@ -2500,7 +3078,7 @@ export const zFileStoreListQuery = z.object({
2500
3078
  offset: z.int().gte(0).lte(9007199254740991).optional(),
2501
3079
  includeDeprecated: z.boolean().optional(),
2502
3080
  userId: z.string().nullish(),
2503
- visibility: z.enum(["private", "org"]).optional(),
3081
+ visibility: z.enum(["private", "pod", "org"]).optional(),
2504
3082
  });
2505
3083
  /**
2506
3084
  * List of file stores
@@ -2510,7 +3088,7 @@ export const zFileStoreCreateBody = z.object({
2510
3088
  name: z.string().min(1).max(256),
2511
3089
  description: z.string().optional().default(""),
2512
3090
  isDefault: z.boolean().optional().default(false),
2513
- visibility: z.enum(["private", "org"]).optional().default("org"),
3091
+ visibility: z.enum(["private", "pod", "org"]).optional().default("org"),
2514
3092
  });
2515
3093
  /**
2516
3094
  * Created file store
@@ -2520,7 +3098,7 @@ export const zFileStoreGetPath = z.object({
2520
3098
  id: z.string().regex(/^fst_[0-9A-HJKMNP-TV-Z]{26}$/),
2521
3099
  });
2522
3100
  /**
2523
- * File store details
3101
+ * file store details
2524
3102
  */
2525
3103
  export const zFileStoreGetResponse = zFileStore;
2526
3104
  export const zFileStoreUpdateBody = z.object({
@@ -2589,6 +3167,7 @@ export const zFileStoreFilesStartUploadPath = z.object({
2589
3167
  export const zFileStoreFilesStartUploadResponse = zStoreStartUploadResponse;
2590
3168
  export const zFileStoreFilesFinalizeUploadBody = z.object({
2591
3169
  path: z.string().min(1),
3170
+ uploadId: z.string().min(1),
2592
3171
  });
2593
3172
  export const zFileStoreFilesFinalizeUploadPath = z.object({
2594
3173
  id: z.string().regex(/^fst_[0-9A-HJKMNP-TV-Z]{26}$/),
@@ -2597,6 +3176,17 @@ export const zFileStoreFilesFinalizeUploadPath = z.object({
2597
3176
  * Finalized file info
2598
3177
  */
2599
3178
  export const zFileStoreFilesFinalizeUploadResponse = zFileStoreFile;
3179
+ export const zFileStoreFilesWriteContentBody = z.string();
3180
+ export const zFileStoreFilesWriteContentPath = z.object({
3181
+ id: z.string().regex(/^fst_[0-9A-HJKMNP-TV-Z]{26}$/),
3182
+ });
3183
+ export const zFileStoreFilesWriteContentQuery = z.object({
3184
+ path: z.string().min(1),
3185
+ });
3186
+ /**
3187
+ * Written file info
3188
+ */
3189
+ export const zFileStoreFilesWriteContentResponse = zFileStoreFile;
2600
3190
  export const zInvitationPreviewPath = z.object({
2601
3191
  id: z.string().min(1).max(128),
2602
3192
  });
@@ -2627,6 +3217,7 @@ export const zInvitationPreviewResponse = z.object({
2627
3217
  export const zGithubUninstallResponse = z.void();
2628
3218
  export const zGithubInstallQuery = z.object({
2629
3219
  returnTo: z.string().optional(),
3220
+ vaultId: z.string().optional(),
2630
3221
  });
2631
3222
  /**
2632
3223
  * Authorization URL for the user to visit
@@ -2634,6 +3225,7 @@ export const zGithubInstallQuery = z.object({
2634
3225
  export const zGithubInstallResponse = zGithubOAuthStartResult;
2635
3226
  export const zGithubConnectQuery = z.object({
2636
3227
  returnTo: z.string().optional(),
3228
+ vaultId: z.string().optional(),
2637
3229
  });
2638
3230
  /**
2639
3231
  * Authorization URL for the user to visit
@@ -2710,12 +3302,53 @@ export const zGoogleConnectQuery = z.object({
2710
3302
  * Authorization URL for the user to visit
2711
3303
  */
2712
3304
  export const zGoogleConnectResponse = zGoogleWorkspaceOAuthStartResult;
3305
+ /**
3306
+ * OAuth apps
3307
+ */
3308
+ export const zOauthAppListResponse = z.array(zOAuthApp);
3309
+ export const zOauthAppCreateBody = zOAuthAppCreateInput;
3310
+ /**
3311
+ * Created app
3312
+ */
3313
+ export const zOauthAppCreateResponse = zOAuthApp;
3314
+ /**
3315
+ * Redirect URI
3316
+ */
3317
+ export const zOauthAppRedirectUriResponse = zOAuthAppRedirectUri;
3318
+ export const zOauthAppDeletePath = z.object({
3319
+ id: z.string().regex(/^oap_[0-9A-HJKMNP-TV-Z]{26}$/),
3320
+ });
3321
+ export const zOauthAppDeleteQuery = z.object({
3322
+ force: z.string().optional(),
3323
+ });
3324
+ /**
3325
+ * Archived
3326
+ */
3327
+ export const zOauthAppDeleteResponse = z.void();
3328
+ export const zOauthAppUpdateBody = zOAuthAppUpdateInput;
3329
+ export const zOauthAppUpdatePath = z.object({
3330
+ id: z.string().regex(/^oap_[0-9A-HJKMNP-TV-Z]{26}$/),
3331
+ });
3332
+ export const zOauthAppUpdateQuery = z.object({
3333
+ force: z.string().optional(),
3334
+ });
3335
+ /**
3336
+ * Updated app
3337
+ */
3338
+ export const zOauthAppUpdateResponse = zOAuthApp;
3339
+ export const zOauthAppUsagePath = z.object({
3340
+ id: z.string().regex(/^oap_[0-9A-HJKMNP-TV-Z]{26}$/),
3341
+ });
3342
+ /**
3343
+ * Usage
3344
+ */
3345
+ export const zOauthAppUsageResponse = zOAuthAppUsage;
2713
3346
  export const zMcpListQuery = z.object({
2714
3347
  limit: z.int().gte(1).lte(1000).optional(),
2715
3348
  offset: z.int().gte(0).lte(9007199254740991).optional(),
2716
3349
  includeDeprecated: z.boolean().optional(),
2717
3350
  sort: z.enum(["popular", "trending", "recent"]).optional(),
2718
- visibility: z.enum(["private", "org"]).optional(),
3351
+ visibility: z.enum(["private", "pod", "org"]).optional(),
2719
3352
  });
2720
3353
  /**
2721
3354
  * List of MCPs
@@ -2723,25 +3356,32 @@ export const zMcpListQuery = z.object({
2723
3356
  export const zMcpListResponse = z.array(zMcp);
2724
3357
  export const zMcpCreateBody = z.object({
2725
3358
  name: z.string().min(1).max(256),
2726
- slug: z.string().optional(),
3359
+ slug: z
3360
+ .string()
3361
+ .min(1)
3362
+ .max(128)
3363
+ .regex(/^[a-z0-9-]+$/)
3364
+ .optional(),
2727
3365
  description: z.string().optional().default(""),
2728
3366
  icon: z.string().nullish().default(null),
2729
3367
  mcpServerUrl: z.url().nullish().default(null),
2730
3368
  docUrl: z.url().nullish().default(null),
2731
3369
  type: z.enum(["remote", "local"]).optional().default("remote"),
2732
- transport: z.enum(["streamable-http", "sse", "stdio"]).optional().default("streamable-http"),
2733
3370
  command: z.string().nullish().default(null),
2734
3371
  args: z.array(z.string()).optional().default([]),
3372
+ cwd: z.string().nullish().default(null),
3373
+ timeout: zMcpTimeout.nullish().default(null),
2735
3374
  env: z.record(z.string(), z.string()).optional().default({}),
2736
- requiredCredentials: z.array(zRequiredCredential).optional().default([]),
3375
+ requiredCredentials: z.array(zRequiredCredential).optional(),
2737
3376
  version: z.string().nullish().default(null),
2738
3377
  repository: zRepository.nullish().default(null),
2739
3378
  tools: z.array(z.string()).optional().default([]),
2740
3379
  prompts: z.array(z.string()).optional().default([]),
2741
3380
  auth: z.enum(["none", "oauth", "api_key", "basic", "mcp_provider"]).optional().default("none"),
2742
3381
  authConfig: zMcpAuthConfig.nullish().default(null),
2743
- tags: z.array(z.string()).optional(),
2744
- visibility: z.enum(["private", "org"]).optional().default("org"),
3382
+ tags: z.array(z.string()).nullish(),
3383
+ visibility: z.enum(["private", "pod", "org"]).optional().default("org"),
3384
+ allowDuplicateUrl: z.boolean().optional().default(false),
2745
3385
  });
2746
3386
  /**
2747
3387
  * Created MCP
@@ -2785,9 +3425,10 @@ export const zMcpUpdateBody = z.object({
2785
3425
  mcpServerUrl: z.url().optional(),
2786
3426
  docUrl: z.url().nullish(),
2787
3427
  type: z.enum(["remote", "local"]).optional(),
2788
- transport: z.enum(["streamable-http", "sse", "stdio"]).optional(),
2789
3428
  command: z.string().nullish(),
2790
3429
  args: z.array(z.string()).optional(),
3430
+ cwd: z.string().nullish(),
3431
+ timeout: zMcpTimeout.nullish(),
2791
3432
  env: z.record(z.string(), z.string()).optional(),
2792
3433
  requiredCredentials: z.array(zRequiredCredential).optional(),
2793
3434
  version: z.string().nullish(),
@@ -2797,7 +3438,7 @@ export const zMcpUpdateBody = z.object({
2797
3438
  auth: z.enum(["none", "oauth", "api_key", "basic", "mcp_provider"]).optional(),
2798
3439
  authConfig: zMcpAuthConfig.nullish(),
2799
3440
  websiteMetadata: zWebsiteMetadata.nullish(),
2800
- tags: z.array(z.string()).optional(),
3441
+ tags: z.array(z.string()).nullish(),
2801
3442
  });
2802
3443
  export const zMcpUpdatePath = z.object({
2803
3444
  id: z.string().regex(/^mcp_[0-9A-HJKMNP-TV-Z]{26}$/),
@@ -2844,22 +3485,6 @@ export const zMcpUndeprecatePath = z.object({
2844
3485
  * Undeprecated MCP
2845
3486
  */
2846
3487
  export const zMcpUndeprecateResponse = zMcp;
2847
- export const zMcpOauthConnectBody = zMcpOAuthConnectBody;
2848
- export const zMcpOauthConnectPath = z.object({
2849
- id: z.string().regex(/^mcp_[0-9A-HJKMNP-TV-Z]{26}$/),
2850
- });
2851
- /**
2852
- * OAuth connect result
2853
- */
2854
- export const zMcpOauthConnectResponse = zMcpOAuthConnectResult;
2855
- export const zMcpOauthSessionPath = z.object({
2856
- id: z.string().regex(/^mcp_[0-9A-HJKMNP-TV-Z]{26}$/),
2857
- sessionId: z.string().regex(/^oas_[0-9A-HJKMNP-TV-Z]{26}$/),
2858
- });
2859
- /**
2860
- * OAuth session status
2861
- */
2862
- export const zMcpOauthSessionResponse = zOAuthSessionStatus;
2863
3488
  /**
2864
3489
  * Resolved auth context
2865
3490
  */
@@ -2884,7 +3509,7 @@ export const zMemoryStoreListQuery = z.object({
2884
3509
  offset: z.int().gte(0).lte(9007199254740991).optional(),
2885
3510
  includeDeprecated: z.boolean().optional(),
2886
3511
  userId: z.string().nullish(),
2887
- visibility: z.enum(["private", "org"]).optional(),
3512
+ visibility: z.enum(["private", "pod", "org"]).optional(),
2888
3513
  });
2889
3514
  /**
2890
3515
  * List of memory stores
@@ -2894,7 +3519,7 @@ export const zMemoryStoreCreateBody = z.object({
2894
3519
  name: z.string().min(1).max(256),
2895
3520
  description: z.string().optional().default(""),
2896
3521
  isDefault: z.boolean().optional().default(false),
2897
- visibility: z.enum(["private", "org"]).optional().default("org"),
3522
+ visibility: z.enum(["private", "pod", "org"]).optional().default("org"),
2898
3523
  });
2899
3524
  /**
2900
3525
  * Created memory store
@@ -2904,7 +3529,7 @@ export const zMemoryStoreGetPath = z.object({
2904
3529
  id: z.string().regex(/^mst_[0-9A-HJKMNP-TV-Z]{26}$/),
2905
3530
  });
2906
3531
  /**
2907
- * Memory store details
3532
+ * memory store details
2908
3533
  */
2909
3534
  export const zMemoryStoreGetResponse = zMemoryStore;
2910
3535
  export const zMemoryStoreUpdateBody = z.object({
@@ -2973,6 +3598,7 @@ export const zMemoryStoreFilesStartUploadPath = z.object({
2973
3598
  export const zMemoryStoreFilesStartUploadResponse = zStoreStartUploadResponse;
2974
3599
  export const zMemoryStoreFilesFinalizeUploadBody = z.object({
2975
3600
  path: z.string().min(1),
3601
+ uploadId: z.string().min(1),
2976
3602
  });
2977
3603
  export const zMemoryStoreFilesFinalizeUploadPath = z.object({
2978
3604
  id: z.string().regex(/^mst_[0-9A-HJKMNP-TV-Z]{26}$/),
@@ -2981,6 +3607,17 @@ export const zMemoryStoreFilesFinalizeUploadPath = z.object({
2981
3607
  * Finalized file info
2982
3608
  */
2983
3609
  export const zMemoryStoreFilesFinalizeUploadResponse = zMemoryStoreFile;
3610
+ export const zMemoryStoreFilesWriteContentBody = z.string();
3611
+ export const zMemoryStoreFilesWriteContentPath = z.object({
3612
+ id: z.string().regex(/^mst_[0-9A-HJKMNP-TV-Z]{26}$/),
3613
+ });
3614
+ export const zMemoryStoreFilesWriteContentQuery = z.object({
3615
+ path: z.string().min(1),
3616
+ });
3617
+ /**
3618
+ * Written file info
3619
+ */
3620
+ export const zMemoryStoreFilesWriteContentResponse = zMemoryStoreFile;
2984
3621
  /**
2985
3622
  * Grouped model list
2986
3623
  */
@@ -3050,7 +3687,7 @@ export const zPodListQuery = z.object({
3050
3687
  offset: z.int().gte(0).lte(9007199254740991).optional(),
3051
3688
  includeDeprecated: z.boolean().optional(),
3052
3689
  userId: z.string().nullish(),
3053
- visibility: z.enum(["private", "org"]).optional(),
3690
+ visibility: z.enum(["private", "pod", "org"]).optional(),
3054
3691
  });
3055
3692
  /**
3056
3693
  * List of pods
@@ -3063,8 +3700,9 @@ export const zPodCreateBody = z.object({
3063
3700
  instructions: z.string().optional().default(""),
3064
3701
  isPrivate: z.boolean().optional().default(true),
3065
3702
  isDefault: z.boolean().optional().default(false),
3703
+ presetTemplate: zPresetTemplate.optional(),
3066
3704
  createDefaultProject: z.boolean().optional().default(true),
3067
- visibility: z.enum(["private", "org"]).optional().default("org"),
3705
+ visibility: z.enum(["private", "pod", "org"]).optional().default("org"),
3068
3706
  });
3069
3707
  /**
3070
3708
  * Created pod with freshly provisioned sandbox
@@ -3084,6 +3722,7 @@ export const zPodUpdateBody = z.object({
3084
3722
  environmentId: z.string().nullish(),
3085
3723
  defaultModel: z.string().nullish(),
3086
3724
  instructions: z.string().optional(),
3725
+ presetTemplate: zPresetTemplate.optional(),
3087
3726
  });
3088
3727
  export const zPodUpdatePath = z.object({
3089
3728
  id: z.string().regex(/^pod_[0-9A-HJKMNP-TV-Z]{26}$/),
@@ -3095,6 +3734,17 @@ export const zPodUpdateResponse = zPod;
3095
3734
  export const zPodUsagePath = z.object({
3096
3735
  id: z.string().regex(/^pod_[0-9A-HJKMNP-TV-Z]{26}$/),
3097
3736
  });
3737
+ export const zPodUsageQuery = z.object({
3738
+ groupBy: z.enum(["user", "member", "agent", "model", "session", "project", "pod", "source"]).optional(),
3739
+ start: z.iso
3740
+ .datetime()
3741
+ .regex(/^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$/)
3742
+ .optional(),
3743
+ end: z.iso
3744
+ .datetime()
3745
+ .regex(/^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$/)
3746
+ .optional(),
3747
+ });
3098
3748
  /**
3099
3749
  * Pod credit usage
3100
3750
  */
@@ -3132,32 +3782,13 @@ export const zPodMemberRemovePath = z.object({
3132
3782
  * Removed member
3133
3783
  */
3134
3784
  export const zPodMemberRemoveResponse = zPodMember;
3135
- export const zPodVaultListPath = z.object({
3136
- id: z.string().regex(/^pod_[0-9A-HJKMNP-TV-Z]{26}$/),
3137
- });
3138
- /**
3139
- * List of vault associations
3140
- */
3141
- export const zPodVaultListResponse = z.array(zPodVault);
3142
- export const zPodVaultAddBody = z.object({
3143
- vaultId: z.string().regex(/^vlt_[0-9A-HJKMNP-TV-Z]{26}$/),
3144
- priority: z.int().gte(-9007199254740991).lte(9007199254740991).optional().default(0),
3145
- });
3146
- export const zPodVaultAddPath = z.object({
3147
- id: z.string().regex(/^pod_[0-9A-HJKMNP-TV-Z]{26}$/),
3148
- });
3149
- /**
3150
- * Added vault
3151
- */
3152
- export const zPodVaultAddResponse = zPodVault;
3153
- export const zPodVaultRemovePath = z.object({
3785
+ export const zPodCredentialListPath = z.object({
3154
3786
  id: z.string().regex(/^pod_[0-9A-HJKMNP-TV-Z]{26}$/),
3155
- vaultId: z.string().regex(/^vlt_[0-9A-HJKMNP-TV-Z]{26}$/),
3156
3787
  });
3157
3788
  /**
3158
- * Removed vault
3789
+ * Resolved credentials
3159
3790
  */
3160
- export const zPodVaultRemoveResponse = zPodVault;
3791
+ export const zPodCredentialListResponse = zPodCredentials;
3161
3792
  export const zPodSandboxProvisionPath = z.object({
3162
3793
  podId: z.string().regex(/^pod_[0-9A-HJKMNP-TV-Z]{26}$/),
3163
3794
  });
@@ -3179,6 +3810,120 @@ export const zPodSandboxStatusPath = z.object({
3179
3810
  * Current sandbox state
3180
3811
  */
3181
3812
  export const zPodSandboxStatusResponse2 = zPodSandboxStatusResponse;
3813
+ export const zPodDatabaseListPath = z.object({
3814
+ podId: z.string().regex(/^pod_[0-9A-HJKMNP-TV-Z]{26}$/),
3815
+ });
3816
+ export const zPodDatabaseListQuery = z.object({
3817
+ limit: z.int().gte(1).lte(1000).optional(),
3818
+ offset: z.int().gte(0).lte(9007199254740991).optional(),
3819
+ includeDeprecated: z.boolean().optional(),
3820
+ });
3821
+ /**
3822
+ * Pod databases
3823
+ */
3824
+ export const zPodDatabaseListResponse = z.array(zPodDatabase);
3825
+ export const zPodDatabaseCreateBody = z.object({
3826
+ name: z.string().min(1).max(256),
3827
+ slug: z
3828
+ .string()
3829
+ .min(1)
3830
+ .max(128)
3831
+ .regex(/^[a-z0-9-]+$/)
3832
+ .optional(),
3833
+ description: z.string().max(4096).optional().default(""),
3834
+ });
3835
+ export const zPodDatabaseCreatePath = z.object({
3836
+ podId: z.string().regex(/^pod_[0-9A-HJKMNP-TV-Z]{26}$/),
3837
+ });
3838
+ /**
3839
+ * Created pod database
3840
+ */
3841
+ export const zPodDatabaseCreateResponse = zPodDatabase;
3842
+ export const zPodDatabaseGetPath = z.object({
3843
+ podId: z.string().regex(/^pod_[0-9A-HJKMNP-TV-Z]{26}$/),
3844
+ id: z.string().regex(/^pdb_[0-9A-HJKMNP-TV-Z]{26}$/),
3845
+ });
3846
+ /**
3847
+ * Pod database details
3848
+ */
3849
+ export const zPodDatabaseGetResponse = zPodDatabase;
3850
+ export const zPodDatabaseUpdateBody = z.object({
3851
+ name: z.string().min(1).max(256).optional(),
3852
+ description: z.string().optional(),
3853
+ });
3854
+ export const zPodDatabaseUpdatePath = z.object({
3855
+ podId: z.string().regex(/^pod_[0-9A-HJKMNP-TV-Z]{26}$/),
3856
+ id: z.string().regex(/^pdb_[0-9A-HJKMNP-TV-Z]{26}$/),
3857
+ });
3858
+ /**
3859
+ * Updated pod database
3860
+ */
3861
+ export const zPodDatabaseUpdateResponse = zPodDatabase;
3862
+ export const zPodDatabaseArchivePath = z.object({
3863
+ podId: z.string().regex(/^pod_[0-9A-HJKMNP-TV-Z]{26}$/),
3864
+ id: z.string().regex(/^pdb_[0-9A-HJKMNP-TV-Z]{26}$/),
3865
+ });
3866
+ /**
3867
+ * Archived pod database
3868
+ */
3869
+ export const zPodDatabaseArchiveResponse = zPodDatabase;
3870
+ export const zArtifactListPath = z.object({
3871
+ podId: z.string().regex(/^pod_[0-9A-HJKMNP-TV-Z]{26}$/),
3872
+ });
3873
+ export const zArtifactListQuery = z.object({
3874
+ limit: z.int().gte(1).lte(1000).optional(),
3875
+ offset: z.int().gte(0).lte(9007199254740991).optional(),
3876
+ includeDeprecated: z.boolean().optional(),
3877
+ });
3878
+ /**
3879
+ * Pod artifacts
3880
+ */
3881
+ export const zArtifactListResponse = z.array(zArtifact);
3882
+ export const zArtifactCreateBody = z.object({
3883
+ slug: z
3884
+ .string()
3885
+ .min(1)
3886
+ .max(128)
3887
+ .regex(/^[a-z0-9-]+$/),
3888
+ title: z.string().min(1).max(200),
3889
+ description: z.string().max(2000).optional().default(""),
3890
+ sourceSessionId: z.string().nullish().default(null),
3891
+ });
3892
+ export const zArtifactCreatePath = z.object({
3893
+ podId: z.string().regex(/^pod_[0-9A-HJKMNP-TV-Z]{26}$/),
3894
+ });
3895
+ /**
3896
+ * Created artifact
3897
+ */
3898
+ export const zArtifactCreateResponse = zArtifact;
3899
+ export const zArtifactGetPath = z.object({
3900
+ podId: z.string().regex(/^pod_[0-9A-HJKMNP-TV-Z]{26}$/),
3901
+ id: z.string().regex(/^art_[0-9A-HJKMNP-TV-Z]{26}$/),
3902
+ });
3903
+ /**
3904
+ * The artifact
3905
+ */
3906
+ export const zArtifactGetResponse = zArtifact;
3907
+ export const zArtifactUpdateBody = z.object({
3908
+ title: z.string().min(1).max(200).optional(),
3909
+ description: z.string().max(2000).optional(),
3910
+ });
3911
+ export const zArtifactUpdatePath = z.object({
3912
+ podId: z.string().regex(/^pod_[0-9A-HJKMNP-TV-Z]{26}$/),
3913
+ id: z.string().regex(/^art_[0-9A-HJKMNP-TV-Z]{26}$/),
3914
+ });
3915
+ /**
3916
+ * Updated artifact
3917
+ */
3918
+ export const zArtifactUpdateResponse = zArtifact;
3919
+ export const zArtifactArchivePath = z.object({
3920
+ podId: z.string().regex(/^pod_[0-9A-HJKMNP-TV-Z]{26}$/),
3921
+ id: z.string().regex(/^art_[0-9A-HJKMNP-TV-Z]{26}$/),
3922
+ });
3923
+ /**
3924
+ * Archived artifact
3925
+ */
3926
+ export const zArtifactArchiveResponse = zArtifact;
3182
3927
  export const zProjectListQuery = z.object({
3183
3928
  limit: z.int().gte(1).lte(1000).optional(),
3184
3929
  offset: z.int().gte(0).lte(9007199254740991).optional(),
@@ -3187,7 +3932,7 @@ export const zProjectListQuery = z.object({
3187
3932
  .string()
3188
3933
  .regex(/^pod_[0-9A-HJKMNP-TV-Z]{26}$/)
3189
3934
  .optional(),
3190
- visibility: z.enum(["private", "org"]).optional(),
3935
+ visibility: z.enum(["private", "pod", "org"]).optional(),
3191
3936
  });
3192
3937
  /**
3193
3938
  * List of projects
@@ -3201,7 +3946,7 @@ export const zProjectCreateBody = z.object({
3201
3946
  permission: zPermissionConfig.optional(),
3202
3947
  gitRepos: z.array(zProjectGitRepo).optional().default([]),
3203
3948
  references: zProjectReferences.optional(),
3204
- visibility: z.enum(["private", "org"]).optional().default("org"),
3949
+ visibility: z.enum(["private", "pod", "org"]).optional().default("org"),
3205
3950
  });
3206
3951
  /**
3207
3952
  * Created project
@@ -3454,7 +4199,7 @@ export const zReplayListQuery = z.object({
3454
4199
  offset: z.int().gte(0).lte(9007199254740991).optional(),
3455
4200
  includeDeprecated: z.boolean().optional(),
3456
4201
  publisherId: z.string().optional(),
3457
- visibility: z.enum(["private", "org"]).optional(),
4202
+ visibility: z.enum(["private", "pod", "org"]).optional(),
3458
4203
  });
3459
4204
  /**
3460
4205
  * List
@@ -3465,7 +4210,7 @@ export const zReplayCreateBody = z.object({
3465
4210
  publisherId: z.string().nullish().default(null),
3466
4211
  websiteMetadata: zWebsiteMetadata.nullish().default(null),
3467
4212
  shareToken: z.string().nullish().default(null),
3468
- visibility: z.enum(["private", "org"]).optional().default("org"),
4213
+ visibility: z.enum(["private", "pod", "org"]).optional().default("org"),
3469
4214
  });
3470
4215
  /**
3471
4216
  * Created
@@ -3527,6 +4272,13 @@ export const zReplayShareBody = z.object({
3527
4272
  * Shared replay
3528
4273
  */
3529
4274
  export const zReplayShareResponse = zReplay;
4275
+ export const zResourceIconUploadBody = z.object({
4276
+ file: z.string(),
4277
+ });
4278
+ /**
4279
+ * Persistent resource icon URL
4280
+ */
4281
+ export const zResourceIconUploadResponse = zResourceIconUpload;
3530
4282
  export const zSessionListQuery = z.object({
3531
4283
  podId: z.string().optional(),
3532
4284
  projectId: z.string().optional(),
@@ -3661,7 +4413,7 @@ export const zSkillListQuery = z.object({
3661
4413
  offset: z.int().gte(0).lte(9007199254740991).optional(),
3662
4414
  includeDeprecated: z.boolean().optional(),
3663
4415
  sort: z.enum(["popular", "trending", "recent"]).optional(),
3664
- visibility: z.enum(["private", "org"]).optional(),
4416
+ visibility: z.enum(["private", "pod", "org"]).optional(),
3665
4417
  query: z.string().optional(),
3666
4418
  published: z.boolean().optional(),
3667
4419
  publisherId: z.string().optional(),
@@ -3681,8 +4433,8 @@ export const zSkillCreateBody = z.object({
3681
4433
  websiteMetadata: zWebsiteMetadata.nullish().default(null),
3682
4434
  version: z.string().optional(),
3683
4435
  releaseNotes: z.string().optional(),
3684
- requiredCredentials: z.array(zRequiredCredential).optional().default([]),
3685
- tags: z.array(z.string()).optional(),
4436
+ requiredCredentials: z.array(zSkillRequiredCredential).optional(),
4437
+ tags: z.array(z.string()).nullish(),
3686
4438
  files: z
3687
4439
  .array(z.object({
3688
4440
  path: z.string().min(1),
@@ -3700,7 +4452,7 @@ export const zSkillCreateBody = z.object({
3700
4452
  path: z.string().optional(),
3701
4453
  })
3702
4454
  .optional(),
3703
- visibility: z.enum(["private", "org"]).optional().default("org"),
4455
+ visibility: z.enum(["private", "pod", "org"]).optional().default("org"),
3704
4456
  });
3705
4457
  /**
3706
4458
  * Created skill
@@ -3727,7 +4479,7 @@ export const zSkillUpdateBody = z.object({
3727
4479
  docUrl: z.string().nullish(),
3728
4480
  repository: zRepository.nullish(),
3729
4481
  websiteMetadata: zWebsiteMetadata.nullish(),
3730
- tags: z.array(z.string()).optional(),
4482
+ tags: z.array(z.string()).nullish(),
3731
4483
  });
3732
4484
  export const zSkillUpdatePath = z.object({
3733
4485
  id: z.string().regex(/^skl_[0-9A-HJKMNP-TV-Z]{26}$/),
@@ -3770,7 +4522,7 @@ export const zSkillUndeprecateResponse = zSkill;
3770
4522
  export const zSkillCopyBody = z.object({
3771
4523
  name: z.string(),
3772
4524
  version: z.string().optional(),
3773
- visibility: z.enum(["private", "org"]).optional().default("org"),
4525
+ visibility: z.enum(["private", "pod", "org"]).optional().default("org"),
3774
4526
  });
3775
4527
  export const zSkillCopyPath = z.object({
3776
4528
  id: z.string().regex(/^skl_[0-9A-HJKMNP-TV-Z]{26}$/),
@@ -3804,7 +4556,7 @@ export const zSkillVersionCreateBody = z.object({
3804
4556
  .optional()
3805
4557
  .default("patch"),
3806
4558
  releaseNotes: z.string().optional(),
3807
- requiredCredentials: z.array(zRequiredCredential).optional().default([]),
4559
+ requiredCredentials: z.array(zSkillRequiredCredential).optional(),
3808
4560
  files: z
3809
4561
  .array(z.object({
3810
4562
  path: z.string().min(1),
@@ -3886,23 +4638,23 @@ export const zTopologyShareArchivePath = z.object({
3886
4638
  * Archived topology share
3887
4639
  */
3888
4640
  export const zTopologyShareArchiveResponse = zTopologyShare;
3889
- export const zTriggerListQuery = z.object({
4641
+ export const zCronTriggerListPath = z.object({
4642
+ projectId: z.string().regex(/^prj_[0-9A-HJKMNP-TV-Z]{26}$/),
4643
+ });
4644
+ export const zCronTriggerListQuery = z.object({
3890
4645
  limit: z.int().gte(1).lte(1000).optional(),
3891
4646
  offset: z.int().gte(0).lte(9007199254740991).optional(),
3892
4647
  includeDeprecated: z.boolean().optional(),
3893
- projectId: z.string().regex(/^prj_[0-9A-HJKMNP-TV-Z]{26}$/),
3894
4648
  });
3895
4649
  /**
3896
4650
  * List of cron triggers
3897
4651
  */
3898
- export const zTriggerListResponse = z.array(zCronTrigger);
3899
- export const zTriggerCreateBody = z.object({
3900
- projectId: z.string().regex(/^prj_[0-9A-HJKMNP-TV-Z]{26}$/),
4652
+ export const zCronTriggerListResponse = z.array(zCronTrigger);
4653
+ export const zCronTriggerCreateBody = z.object({
3901
4654
  projectAgentId: z.string().nullish().default(null),
3902
- senderUserId: z.string().optional(),
3903
4655
  inputMessage: z.string(),
3904
4656
  schedule: z.string(),
3905
- timezone: z.string().nullish().default(null),
4657
+ timezone: z.string().optional().default("UTC"),
3906
4658
  until: z.iso
3907
4659
  .datetime()
3908
4660
  .regex(/^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$/)
@@ -3910,50 +4662,48 @@ export const zTriggerCreateBody = z.object({
3910
4662
  .default(null),
3911
4663
  isEnabled: z.boolean().optional().default(true),
3912
4664
  });
4665
+ export const zCronTriggerCreatePath = z.object({
4666
+ projectId: z.string().regex(/^prj_[0-9A-HJKMNP-TV-Z]{26}$/),
4667
+ });
3913
4668
  /**
3914
4669
  * Created cron trigger
3915
4670
  */
3916
- export const zTriggerCreateResponse = zCronTrigger;
3917
- export const zTriggerGetPath = z.object({
3918
- triggerId: z.string().regex(/^ctrg_[0-9A-HJKMNP-TV-Z]{26}$/),
3919
- });
3920
- export const zTriggerGetQuery = z.object({
4671
+ export const zCronTriggerCreateResponse = zCronTrigger;
4672
+ export const zCronTriggerGetPath = z.object({
3921
4673
  projectId: z.string().regex(/^prj_[0-9A-HJKMNP-TV-Z]{26}$/),
4674
+ triggerId: z.string().regex(/^ctrg_[0-9A-HJKMNP-TV-Z]{26}$/),
3922
4675
  });
3923
4676
  /**
3924
- * Cron trigger details
4677
+ * Cron trigger details with Temporal runtime state
3925
4678
  */
3926
- export const zTriggerGetResponse = zCronTrigger;
3927
- export const zTriggerUpdateBody = z.object({
4679
+ export const zCronTriggerGetResponse = zCronTriggerDetail;
4680
+ export const zCronTriggerUpdateBody = z.object({
3928
4681
  projectAgentId: z.string().nullish(),
3929
- senderUserId: z.string().optional(),
3930
4682
  inputMessage: z.string().optional(),
3931
4683
  schedule: z.string().optional(),
3932
- timezone: z.string().nullish(),
4684
+ timezone: z.string().optional(),
3933
4685
  until: z.iso
3934
4686
  .datetime()
3935
4687
  .regex(/^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$/)
3936
4688
  .nullish(),
3937
4689
  isEnabled: z.boolean().optional(),
3938
- projectId: z.string().regex(/^prj_[0-9A-HJKMNP-TV-Z]{26}$/),
3939
4690
  });
3940
- export const zTriggerUpdatePath = z.object({
4691
+ export const zCronTriggerUpdatePath = z.object({
4692
+ projectId: z.string().regex(/^prj_[0-9A-HJKMNP-TV-Z]{26}$/),
3941
4693
  triggerId: z.string().regex(/^ctrg_[0-9A-HJKMNP-TV-Z]{26}$/),
3942
4694
  });
3943
4695
  /**
3944
4696
  * Updated cron trigger
3945
4697
  */
3946
- export const zTriggerUpdateResponse = zCronTrigger;
3947
- export const zTriggerArchiveBody = z.object({
4698
+ export const zCronTriggerUpdateResponse = zCronTrigger;
4699
+ export const zCronTriggerArchivePath = z.object({
3948
4700
  projectId: z.string().regex(/^prj_[0-9A-HJKMNP-TV-Z]{26}$/),
3949
- });
3950
- export const zTriggerArchivePath = z.object({
3951
4701
  triggerId: z.string().regex(/^ctrg_[0-9A-HJKMNP-TV-Z]{26}$/),
3952
4702
  });
3953
4703
  /**
3954
4704
  * Archived cron trigger
3955
4705
  */
3956
- export const zTriggerArchiveResponse = zCronTrigger;
4706
+ export const zCronTriggerArchiveResponse = zCronTrigger;
3957
4707
  export const zWebhookTriggerListQuery = z.object({
3958
4708
  limit: z.int().gte(1).lte(1000).optional(),
3959
4709
  offset: z.int().gte(0).lte(9007199254740991).optional(),
@@ -4185,54 +4935,19 @@ export const zVaultListQuery = z.object({
4185
4935
  limit: z.int().gte(1).lte(1000).optional(),
4186
4936
  offset: z.int().gte(0).lte(9007199254740991).optional(),
4187
4937
  includeDeprecated: z.boolean().optional(),
4188
- visibility: z.enum(["private", "org"]).optional(),
4938
+ visibility: z.enum(["private", "pod", "org"]).optional(),
4189
4939
  });
4190
4940
  /**
4191
4941
  * List of vaults
4192
4942
  */
4193
4943
  export const zVaultListResponse = z.array(zVault);
4194
- export const zVaultCreateBody = z.object({
4195
- name: z.string().min(1).max(256),
4196
- description: z.string().optional().default(""),
4197
- isDefault: z.boolean().optional().default(false),
4198
- visibility: z.enum(["private", "org"]).optional().default("org"),
4199
- });
4200
- /**
4201
- * Created vault
4202
- */
4203
- export const zVaultCreateResponse = zVault;
4204
- export const zVaultDeletePath = z.object({
4205
- id: z.string().regex(/^vlt_[0-9A-HJKMNP-TV-Z]{26}$/),
4206
- });
4207
- /**
4208
- * Deleted vault
4209
- */
4210
- export const zVaultDeleteResponse = zVault;
4211
4944
  export const zVaultGetPath = z.object({
4212
4945
  id: z.string().regex(/^vlt_[0-9A-HJKMNP-TV-Z]{26}$/),
4213
4946
  });
4214
4947
  /**
4215
4948
  * Vault details
4216
4949
  */
4217
- export const zVaultGetResponse = zVault;
4218
- export const zVaultUpdateBody = z.object({
4219
- name: z.string().min(1).max(256).optional(),
4220
- description: z.string().optional(),
4221
- });
4222
- export const zVaultUpdatePath = z.object({
4223
- id: z.string().regex(/^vlt_[0-9A-HJKMNP-TV-Z]{26}$/),
4224
- });
4225
- /**
4226
- * Updated vault
4227
- */
4228
- export const zVaultUpdateResponse = zVault;
4229
- export const zVaultArchivePath = z.object({
4230
- id: z.string().regex(/^vlt_[0-9A-HJKMNP-TV-Z]{26}$/),
4231
- });
4232
- /**
4233
- * Archived vault
4234
- */
4235
- export const zVaultArchiveResponse = zVault;
4950
+ export const zVaultGetResponse = zVaultDetail;
4236
4951
  export const zCredentialListPath = z.object({
4237
4952
  vaultId: z.string().regex(/^vlt_[0-9A-HJKMNP-TV-Z]{26}$/),
4238
4953
  });
@@ -4245,18 +4960,7 @@ export const zCredentialListQuery = z.object({
4245
4960
  * List of credentials
4246
4961
  */
4247
4962
  export const zCredentialListResponse = z.array(zCredential);
4248
- export const zCredentialCreateBody = z.object({
4249
- name: z.string().min(1).max(256),
4250
- mcpId: z.string().nullish().default(null),
4251
- label: z
4252
- .string()
4253
- .min(1)
4254
- .max(64)
4255
- .regex(/^[A-Z0-9_]+$/)
4256
- .nullish()
4257
- .default(null),
4258
- auth: zCredentialAuth,
4259
- });
4963
+ export const zCredentialCreateBody = zCreateCredentialBody;
4260
4964
  export const zCredentialCreatePath = z.object({
4261
4965
  vaultId: z.string().regex(/^vlt_[0-9A-HJKMNP-TV-Z]{26}$/),
4262
4966
  });
@@ -4292,14 +4996,6 @@ export const zCredentialUpdatePath = z.object({
4292
4996
  * Updated credential
4293
4997
  */
4294
4998
  export const zCredentialUpdateResponse = zCredential;
4295
- export const zCredentialArchivePath = z.object({
4296
- vaultId: z.string().regex(/^vlt_[0-9A-HJKMNP-TV-Z]{26}$/),
4297
- id: z.string().regex(/^crd_[0-9A-HJKMNP-TV-Z]{26}$/),
4298
- });
4299
- /**
4300
- * Archived credential
4301
- */
4302
- export const zCredentialArchiveResponse = zCredential;
4303
4999
  export const zCredentialTransferBody = zCredentialTransferInput;
4304
5000
  export const zCredentialTransferPath = z.object({
4305
5001
  vaultId: z.string().regex(/^vlt_[0-9A-HJKMNP-TV-Z]{26}$/),
@@ -4309,16 +5005,15 @@ export const zCredentialTransferPath = z.object({
4309
5005
  * Credential transferred
4310
5006
  */
4311
5007
  export const zCredentialTransferResponse = zCredentialTransferResult;
4312
- export const zCredentialOauthStartBody = zOAuthStartInput;
4313
- export const zCredentialOauthStartPath = z.object({
5008
+ export const zCredentialOauthConnectBody = zOAuthConnectBody;
5009
+ export const zCredentialOauthConnectPath = z.object({
4314
5010
  vaultId: z.string().regex(/^vlt_[0-9A-HJKMNP-TV-Z]{26}$/),
4315
5011
  });
4316
5012
  /**
4317
- * Authorization URL for the user to visit
5013
+ * OAuth connect result
4318
5014
  */
4319
- export const zCredentialOauthStartResponse = zOAuthStartResult;
5015
+ export const zCredentialOauthConnectResponse = zOAuthConnectResult;
4320
5016
  export const zCredentialOauthSessionPath = z.object({
4321
- vaultId: z.string().regex(/^vlt_[0-9A-HJKMNP-TV-Z]{26}$/),
4322
5017
  sessionId: z.string().regex(/^oas_[0-9A-HJKMNP-TV-Z]{26}$/),
4323
5018
  });
4324
5019
  /**
@@ -4375,6 +5070,15 @@ export const zRegistryMcpGetPath = z.object({
4375
5070
  * MCP details
4376
5071
  */
4377
5072
  export const zRegistryMcpGetResponse = zMcp;
5073
+ export const zRegistryBlueprintListQuery = z.object({
5074
+ limit: z.int().gte(1).lte(1000).optional(),
5075
+ offset: z.int().gte(0).lte(9007199254740991).optional(),
5076
+ includeDeprecated: z.boolean().optional(),
5077
+ });
5078
+ /**
5079
+ * Published blueprint list
5080
+ */
5081
+ export const zRegistryBlueprintListResponse = z.array(zBlueprintPublicListItem);
4378
5082
  export const zRegistryBlueprintGetPath = z.object({
4379
5083
  slug: z
4380
5084
  .string()
@@ -4397,6 +5101,70 @@ export const zRegistryPublisherGetPath = z.object({
4397
5101
  * Public publisher view
4398
5102
  */
4399
5103
  export const zRegistryPublisherGetResponse = zPublisherPublicView;
5104
+ export const zRegistryPublisherBlueprintsPath = z.object({
5105
+ slug: z
5106
+ .string()
5107
+ .min(1)
5108
+ .max(128)
5109
+ .regex(/^[a-z0-9-]+$/),
5110
+ });
5111
+ export const zRegistryPublisherBlueprintsQuery = z.object({
5112
+ limit: z.int().gte(1).lte(1000).optional(),
5113
+ offset: z.int().gte(0).lte(9007199254740991).optional(),
5114
+ includeDeprecated: z.boolean().optional(),
5115
+ });
5116
+ /**
5117
+ * Published blueprint list for the publisher
5118
+ */
5119
+ export const zRegistryPublisherBlueprintsResponse = z.array(zBlueprintPublicListItem);
5120
+ export const zRegistryPublisherSkillsPath = z.object({
5121
+ slug: z
5122
+ .string()
5123
+ .min(1)
5124
+ .max(128)
5125
+ .regex(/^[a-z0-9-]+$/),
5126
+ });
5127
+ export const zRegistryPublisherSkillsQuery = z.object({
5128
+ limit: z.int().gte(1).lte(1000).optional(),
5129
+ offset: z.int().gte(0).lte(9007199254740991).optional(),
5130
+ includeDeprecated: z.boolean().optional(),
5131
+ });
5132
+ /**
5133
+ * Published skill list for the publisher
5134
+ */
5135
+ export const zRegistryPublisherSkillsResponse = z.array(zSkill);
5136
+ export const zRegistryPublisherAgentsPath = z.object({
5137
+ slug: z
5138
+ .string()
5139
+ .min(1)
5140
+ .max(128)
5141
+ .regex(/^[a-z0-9-]+$/),
5142
+ });
5143
+ export const zRegistryPublisherAgentsQuery = z.object({
5144
+ limit: z.int().gte(1).lte(1000).optional(),
5145
+ offset: z.int().gte(0).lte(9007199254740991).optional(),
5146
+ includeDeprecated: z.boolean().optional(),
5147
+ });
5148
+ /**
5149
+ * Published agent list for the publisher
5150
+ */
5151
+ export const zRegistryPublisherAgentsResponse = z.array(zAgent);
5152
+ export const zRegistryPublisherMcpsPath = z.object({
5153
+ slug: z
5154
+ .string()
5155
+ .min(1)
5156
+ .max(128)
5157
+ .regex(/^[a-z0-9-]+$/),
5158
+ });
5159
+ export const zRegistryPublisherMcpsQuery = z.object({
5160
+ limit: z.int().gte(1).lte(1000).optional(),
5161
+ offset: z.int().gte(0).lte(9007199254740991).optional(),
5162
+ includeDeprecated: z.boolean().optional(),
5163
+ });
5164
+ /**
5165
+ * Published MCP list for the publisher
5166
+ */
5167
+ export const zRegistryPublisherMcpsResponse = z.array(zMcp);
4400
5168
  export const zRegistryReplayGetPath = z.object({
4401
5169
  slug: z
4402
5170
  .string()