@ryuhq/sdk 0.1.14 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (90) hide show
  1. package/README.md +19 -6
  2. package/dist/agent-plugin.cjs +46 -0
  3. package/dist/agent-plugin.d.cts +42 -32
  4. package/dist/agent-plugin.d.ts +42 -32
  5. package/dist/agent-plugin.js +1 -1
  6. package/dist/agent.cjs +9 -0
  7. package/dist/agent.d.cts +377 -1
  8. package/dist/agent.d.ts +377 -1
  9. package/dist/agent.js +4 -2
  10. package/dist/app-Bkw7LlCK.d.ts +129 -0
  11. package/dist/app-DNaGmLVf.d.cts +129 -0
  12. package/dist/builder.cjs +1095 -0
  13. package/dist/builder.d.cts +212 -0
  14. package/dist/builder.d.ts +212 -0
  15. package/dist/builder.js +28 -0
  16. package/dist/chunk-A3RGEPDG.js +250 -0
  17. package/dist/chunk-FZSFZOIN.js +200 -0
  18. package/dist/{chunk-ODFEUVPW.js → chunk-HACAGK65.js} +1 -18
  19. package/dist/{chunk-AO2KJRDD.js → chunk-IEUQ3CDG.js} +125 -2
  20. package/dist/chunk-IKEDLLFY.js +19 -0
  21. package/dist/chunk-IOLP5FFE.js +354 -0
  22. package/dist/{chunk-G6FLVEC4.js → chunk-JX6DDRXV.js} +46 -0
  23. package/dist/chunk-T5676WL2.js +240 -0
  24. package/dist/chunk-TLDPEGC7.js +21 -0
  25. package/dist/chunk-TXSHHZF2.js +0 -0
  26. package/dist/{chunk-MTUBUPIV.js → chunk-ULSVL7EC.js} +8 -227
  27. package/dist/chunk-VLIRNNAE.js +154 -0
  28. package/dist/chunk-W3KPP4WN.js +135 -0
  29. package/dist/cli.cjs +258 -14
  30. package/dist/cli.js +96 -16
  31. package/dist/client-D5U6ssPc.d.cts +84 -0
  32. package/dist/client-D5U6ssPc.d.ts +84 -0
  33. package/dist/index.cjs +519 -5
  34. package/dist/index.d.cts +16 -632
  35. package/dist/index.d.ts +16 -632
  36. package/dist/index.js +63 -695
  37. package/dist/manifest.cjs +129 -3
  38. package/dist/manifest.d.cts +105 -2
  39. package/dist/manifest.d.ts +105 -2
  40. package/dist/manifest.js +7 -1
  41. package/dist/mcp/client.cjs +180 -0
  42. package/dist/mcp/client.d.cts +49 -0
  43. package/dist/mcp/client.d.ts +49 -0
  44. package/dist/mcp/client.js +10 -0
  45. package/dist/mcp/server.cjs +370 -0
  46. package/dist/mcp/server.d.cts +126 -0
  47. package/dist/mcp/server.d.ts +126 -0
  48. package/dist/mcp/server.js +9 -0
  49. package/dist/mcp.cjs +376 -0
  50. package/dist/mcp.d.cts +2 -0
  51. package/dist/mcp.d.ts +2 -0
  52. package/dist/mcp.js +17 -0
  53. package/dist/model.cjs +141 -0
  54. package/dist/model.d.cts +33 -0
  55. package/dist/model.d.ts +33 -0
  56. package/dist/model.js +18 -0
  57. package/dist/plugin.cjs +46 -0
  58. package/dist/plugin.d.cts +215 -0
  59. package/dist/plugin.d.ts +215 -0
  60. package/dist/plugin.js +8 -0
  61. package/dist/runnable.cjs +1230 -0
  62. package/dist/runnable.d.cts +271 -0
  63. package/dist/runnable.d.ts +271 -0
  64. package/dist/runnable.js +28 -0
  65. package/dist/{index-B6SkaAjJ.d.ts → tool-DSx2bFx8.d.ts} +35 -458
  66. package/dist/{index-BvAB5eMk.d.cts → tool-u-VR0fLF.d.cts} +35 -458
  67. package/package.json +38 -2
  68. package/src/agent/loop.test.ts +4 -4
  69. package/src/agent/tools.ts +3 -3
  70. package/src/agent-plugin.test.ts +58 -0
  71. package/src/agent-plugin.ts +108 -35
  72. package/src/cli/dev.test.ts +26 -47
  73. package/src/cli/dev.ts +10 -2
  74. package/src/cli.ts +98 -15
  75. package/src/exports-lockstep.test.ts +92 -0
  76. package/src/generated/plugin-manifest.ts +243 -27
  77. package/src/index.ts +35 -0
  78. package/src/manifest-schema.test.ts +30 -1
  79. package/src/manifest.fixtures.test.ts +13 -3
  80. package/src/manifest.test.ts +96 -10
  81. package/src/manifest.ts +334 -187
  82. package/src/mcp/index.ts +18 -0
  83. package/src/model/index.ts +22 -0
  84. package/src/plugin/ryu-plugin.ts +82 -0
  85. package/src/runnable/app.test.ts +2 -0
  86. package/src/runnable/app.ts +5 -2
  87. package/src/runnable/index.ts +2 -0
  88. package/src/runnable/primitives.ts +57 -0
  89. package/src/runnable/tool.ts +1 -1
  90. package/src/runnable/turn-hook.ts +4 -1
package/dist/manifest.cjs CHANGED
@@ -22,10 +22,13 @@ var manifest_exports = {};
22
22
  __export(manifest_exports, {
23
23
  AppDependencySchema: () => AppDependencySchema,
24
24
  CapabilityReqSchema: () => CapabilityReqSchema,
25
+ ChatWidgetTemplateSchema: () => ChatWidgetTemplateSchema,
25
26
  CompanionSurfaceSchema: () => CompanionSurfaceSchema,
26
27
  ContributesSchema: () => ContributesSchema,
27
28
  EnginesReqSchema: () => EnginesReqSchema,
28
29
  HookEventContributionSchema: () => HookEventContributionSchema,
30
+ McpServerAuthSchema: () => McpServerAuthSchema,
31
+ McpServerDeclSchema: () => McpServerDeclSchema,
29
32
  OutputStyleContributionSchema: () => OutputStyleContributionSchema,
30
33
  PiExtensionContributionSchema: () => PiExtensionContributionSchema,
31
34
  PluginManifestSchema: () => PluginManifestSchema,
@@ -44,7 +47,7 @@ __export(manifest_exports, {
44
47
  });
45
48
  module.exports = __toCommonJS(manifest_exports);
46
49
 
47
- // ../../node_modules/.bun/tsup@8.5.1+7a7b737fa55947b7/node_modules/tsup/assets/cjs_shims.js
50
+ // ../../node_modules/.bun/tsup@8.5.1+276f2dd5f44b8d39/node_modules/tsup/assets/cjs_shims.js
48
51
  var getImportMetaUrl = () => typeof document === "undefined" ? new URL(`file:${__filename}`).href : document.currentScript && document.currentScript.tagName.toUpperCase() === "SCRIPT" ? document.currentScript.src : new URL("main.js", document.baseURI).href;
49
52
  var importMetaUrl = /* @__PURE__ */ getImportMetaUrl();
50
53
 
@@ -196,8 +199,30 @@ var WidgetContributionSchema = import_zod.z.object({
196
199
  /** Default display mode (`inline` | `fullscreen` | `pip`). */
197
200
  default_display_mode: import_zod.z.string().default(DEFAULT_WIDGET_DISPLAY_MODE)
198
201
  });
202
+ var ChatWidgetTemplateSchema = import_zod.z.object({
203
+ id: import_zod.z.string().regex(/^[a-z0-9][a-z0-9._:-]*$/),
204
+ title: import_zod.z.string().min(1),
205
+ description: import_zod.z.string().optional(),
206
+ triggers: import_zod.z.array(import_zod.z.string()).default([]),
207
+ examples: import_zod.z.array(import_zod.z.string()).default([]),
208
+ backing: import_zod.z.object({
209
+ tool_id: import_zod.z.string().regex(/^[A-Za-z0-9][A-Za-z0-9._:/-]*$/).optional(),
210
+ view_id: import_zod.z.string().regex(/^[a-z0-9][a-z0-9._:-]*$/).optional()
211
+ }),
212
+ display_mode: import_zod.z.string().min(1),
213
+ safe_action_ids: import_zod.z.array(import_zod.z.string().regex(/^[a-z0-9][a-z0-9._-]*$/)).default([]),
214
+ availability: import_zod.z.string().default("available")
215
+ }).superRefine((value, ctx) => {
216
+ const count = Number(Boolean(value.backing.tool_id)) + Number(Boolean(value.backing.view_id));
217
+ if (count !== 1 && value.availability === "available") {
218
+ ctx.addIssue({ code: "custom", path: ["backing"], message: "available templates need exactly one backing tool_id or view_id" });
219
+ }
220
+ if (count > 1) {
221
+ ctx.addIssue({ code: "custom", path: ["backing"], message: "backing must declare at most one of tool_id or view_id" });
222
+ }
223
+ });
199
224
  var ToolAppConfigSchema = import_zod.z.object({
200
- /** MCP tool slug this runnable wraps — the fully-qualified `<server>__<name>` id. */
225
+ /** MCP tool slug this runnable wraps — the fully-qualified `<server>.<name>` id. */
201
226
  slug: import_zod.z.string().min(1),
202
227
  /** The tool description the model reads when choosing it. Carried here because a
203
228
  * packed app's manifest is the only channel (there is no `generated.rs`); Core's
@@ -224,6 +249,11 @@ var ContributesSchema = import_zod.z.object({
224
249
  * signing, leaving an app that emits events nothing is allowed to subscribe to. */
225
250
  hook_events: import_zod.z.array(HookEventContributionSchema).default([]),
226
251
  composer_controls: import_zod.z.array(import_zod.z.record(import_zod.z.string(), import_zod.z.unknown())).default([]),
252
+ /** Chat feature descriptors whose behavior is implemented by the host shell.
253
+ * Mirrors the Rust-side `Contributes.chat_features`; keeping this field in the
254
+ * authoring schema prevents `ryu pack` from silently deleting a plugin's chat
255
+ * feature declaration before signing. */
256
+ chat_features: import_zod.z.array(import_zod.z.record(import_zod.z.string(), import_zod.z.unknown())).default([]),
227
257
  settings_tabs: import_zod.z.array(import_zod.z.record(import_zod.z.string(), import_zod.z.unknown())).default([]),
228
258
  slash_commands: import_zod.z.array(import_zod.z.record(import_zod.z.string(), import_zod.z.unknown())).default([]),
229
259
  /** App widgets (Ryu Apps). Each binds a render tool id to its
@@ -231,6 +261,8 @@ var ContributesSchema = import_zod.z.object({
231
261
  * `Contributes.widgets` field, without which the CLI's zod parse would strip
232
262
  * every widget an app authored here declares. */
233
263
  widgets: import_zod.z.array(WidgetContributionSchema).default([]),
264
+ /** Metadata-only chat widget templates. */
265
+ chat_widget_templates: import_zod.z.array(ChatWidgetTemplateSchema).optional(),
234
266
  /** App-registered sidebar sections (header + live list) and buttons (single nav
235
267
  * rows). Loosely typed here — the shell owns the spec vocabulary — matching how
236
268
  * `composer_controls`/`settings_tabs` are declared. Mirrors the Rust-side
@@ -243,6 +275,13 @@ var ContributesSchema = import_zod.z.object({
243
275
  * Rust-side `Contributes.dock_panels`; without it the CLI's zod parse would
244
276
  * strip the dock panel an app declares here. */
245
277
  dock_panels: import_zod.z.array(import_zod.z.record(import_zod.z.string(), import_zod.z.unknown())).default([]),
278
+ /** App-registered live activities (the desktop "Dynamic Island" cards). Loosely
279
+ * typed for the same reason as the surfaces above — the shell owns the
280
+ * `spec` vocabulary. Mirrors the Rust-side `Contributes.live_activities`;
281
+ * without it the CLI's zod parse would strip every live activity an app
282
+ * declares here, so a packed bundle would ship a dock that silently stays
283
+ * empty. */
284
+ live_activities: import_zod.z.array(import_zod.z.record(import_zod.z.string(), import_zod.z.unknown())).default([]),
246
285
  /** Deletable data categories the app owns — one "Delete all X" row in Settings
247
286
  * → Danger Zone. Mirrors the Rust-side `Contributes.data_categories`; without
248
287
  * it the CLI's zod parse would strip the declaration before signing, and the
@@ -280,7 +319,10 @@ var ContributesSchema = import_zod.z.object({
280
319
  * bug: the styles' `.md` files are not carried by the bundle either, so there
281
320
  * would be no residue to notice — the plugin would install clean and contribute
282
321
  * nothing. */
283
- output_styles: import_zod.z.array(OutputStyleContributionSchema).default([])
322
+ output_styles: import_zod.z.array(OutputStyleContributionSchema).default([]),
323
+ /** Per-message actions contributed by an enabled plugin. Kept as loose records
324
+ * so renderer-specific `kind`/`args` payloads survive `ryu pack` unchanged. */
325
+ message_actions: import_zod.z.array(import_zod.z.record(import_zod.z.string(), import_zod.z.unknown())).default([])
284
326
  });
285
327
  var SetupStepSchema = import_zod.z.object({
286
328
  /** Card heading (e.g. the companion app name). */
@@ -361,6 +403,61 @@ var EnginesReqSchema = import_zod.z.object({
361
403
  /** Floor for the Next.js web app. */
362
404
  web: import_zod.z.string().optional()
363
405
  });
406
+ var McpServerAuthSchema = import_zod.z.object({
407
+ client_id: import_zod.z.string().min(1).optional(),
408
+ type: import_zod.z.literal("oauth")
409
+ }).strict();
410
+ var McpServerDeclSchema = import_zod.z.object({
411
+ args: import_zod.z.array(import_zod.z.string()).default([]),
412
+ auth: McpServerAuthSchema.optional(),
413
+ command: import_zod.z.string().optional(),
414
+ command_env: import_zod.z.string().optional(),
415
+ description: import_zod.z.string().optional(),
416
+ enabled: import_zod.z.boolean().default(true),
417
+ env: import_zod.z.record(import_zod.z.string(), import_zod.z.string()).default({}),
418
+ headers: import_zod.z.record(import_zod.z.string(), import_zod.z.string()).default({}),
419
+ type: import_zod.z.enum(["stdio", "http", "streamable-http", "streamable_http", "sse"]).optional(),
420
+ url: import_zod.z.url().optional()
421
+ }).superRefine((server, context) => {
422
+ if (!(server.command || server.url)) {
423
+ context.addIssue({
424
+ code: "custom",
425
+ message: "an MCP server requires command or url"
426
+ });
427
+ }
428
+ if (!server.auth) {
429
+ return;
430
+ }
431
+ if (server.command || server.type === "stdio" || !server.url) {
432
+ context.addIssue({
433
+ code: "custom",
434
+ message: "OAuth is supported only for remote HTTP MCP servers"
435
+ });
436
+ return;
437
+ }
438
+ if (Object.keys(server.headers).some(
439
+ (name) => name.toLowerCase() === "authorization"
440
+ )) {
441
+ context.addIssue({
442
+ code: "custom",
443
+ message: "OAuth cannot be combined with a static Authorization header"
444
+ });
445
+ }
446
+ const url = new URL(server.url);
447
+ const loopback = url.hostname === "localhost" || url.hostname.startsWith("127.") || url.hostname === "[::1]" || url.hostname === "::1";
448
+ if (url.username || url.password || url.hash) {
449
+ context.addIssue({
450
+ code: "custom",
451
+ message: "OAuth MCP URLs cannot contain credentials or fragments"
452
+ });
453
+ }
454
+ if (url.protocol !== "https:" && !(url.protocol === "http:" && loopback)) {
455
+ context.addIssue({
456
+ code: "custom",
457
+ message: "OAuth MCP URLs must use HTTPS except on loopback"
458
+ });
459
+ }
460
+ });
364
461
  var PluginManifestSchema = import_zod.z.object({
365
462
  /** Reverse-domain unique identifier (e.g. `"com.example.my-plugin"`). */
366
463
  id: import_zod.z.string().min(1, "id is required"),
@@ -392,6 +489,8 @@ var PluginManifestSchema = import_zod.z.object({
392
489
  * Declarations only — grant enforcement is the Gateway's responsibility.
393
490
  */
394
491
  permission_grants: import_zod.z.array(import_zod.z.string()).default([]),
492
+ /** Remote or stdio MCP servers registered by this plugin. */
493
+ mcp_servers: import_zod.z.record(import_zod.z.string(), McpServerDeclSchema).optional(),
395
494
  /**
396
495
  * Optional Companion surface (an in-desktop overlay or sidebar panel).
397
496
  * Absent when the plugin has no Companion surface.
@@ -485,10 +584,16 @@ var PluginManifestSchema = import_zod.z.object({
485
584
  url: import_zod.z.string().optional()
486
585
  })
487
586
  ]).optional(),
587
+ /** Public source repository URL (Claude/Codex `repository`). */
588
+ repository: import_zod.z.string().url().optional(),
589
+ /** True when the provider operates outside the local Ryu runtime. */
590
+ external: import_zod.z.boolean().optional(),
488
591
  /** Project/marketing homepage — maps to the listing `website` (Claude field). */
489
592
  homepage: import_zod.z.string().optional(),
490
593
  /** Free-text search keywords (Claude field). */
491
594
  keywords: import_zod.z.array(import_zod.z.string()).optional(),
595
+ /** Stable Marketplace filter labels (Ryu extension). */
596
+ tags: import_zod.z.array(import_zod.z.string()).optional(),
492
597
  /** Taxonomy category beyond the runnable kinds (Claude field). */
493
598
  category: import_zod.z.string().optional(),
494
599
  /** SPDX-ish license identifier (Claude field). */
@@ -502,6 +607,8 @@ var PluginManifestSchema = import_zod.z.object({
502
607
  * from `iconUrl` (a raster logo). Falls back to `iconUrl` when omitted.
503
608
  */
504
609
  icon: import_zod.z.string().optional(),
610
+ /** Optional detail-page hero banner metadata forwarded to the marketplace. */
611
+ banner: import_zod.z.record(import_zod.z.string(), import_zod.z.unknown()).optional(),
505
612
  /**
506
613
  * Dithered-gradient background for the card's icon square (Ryu extension),
507
614
  * mirroring dither-kit's `DitherGradient` props. `from`/`to` are a palette-colour
@@ -533,6 +640,22 @@ var PluginManifestSchema = import_zod.z.object({
533
640
  * array of steps guiding the user through post-install configuration.
534
641
  */
535
642
  setup: import_zod.z.union([SetupStepSchema, import_zod.z.array(SetupStepSchema)]).optional()
643
+ }).superRefine((manifest, context) => {
644
+ const hasOAuthServer = Object.values(manifest.mcp_servers ?? {}).some(
645
+ (server) => server.auth?.type === "oauth"
646
+ );
647
+ if (!hasOAuthServer) {
648
+ return;
649
+ }
650
+ for (const grant of ["mcp:server", "identity.read"]) {
651
+ if (!manifest.permission_grants.includes(grant)) {
652
+ context.addIssue({
653
+ code: "custom",
654
+ message: `OAuth MCP servers require the ${grant} permission grant`,
655
+ path: ["permission_grants"]
656
+ });
657
+ }
658
+ }
536
659
  });
537
660
  function validatePluginId(id) {
538
661
  loadNative().validatePluginId(id);
@@ -547,10 +670,13 @@ function coreManifestJsonSchema() {
547
670
  0 && (module.exports = {
548
671
  AppDependencySchema,
549
672
  CapabilityReqSchema,
673
+ ChatWidgetTemplateSchema,
550
674
  CompanionSurfaceSchema,
551
675
  ContributesSchema,
552
676
  EnginesReqSchema,
553
677
  HookEventContributionSchema,
678
+ McpServerAuthSchema,
679
+ McpServerDeclSchema,
554
680
  OutputStyleContributionSchema,
555
681
  PiExtensionContributionSchema,
556
682
  PluginManifestSchema,
@@ -182,6 +182,23 @@ declare const WidgetContributionSchema: z.ZodObject<{
182
182
  default_display_mode: z.ZodDefault<z.ZodString>;
183
183
  }, z.core.$strip>;
184
184
  type WidgetContribution = z.infer<typeof WidgetContributionSchema>;
185
+ /** Metadata-only chat affordance. The host owns rendering and dispatch; the
186
+ * manifest carries identifiers and copy only. */
187
+ declare const ChatWidgetTemplateSchema: z.ZodObject<{
188
+ id: z.ZodString;
189
+ title: z.ZodString;
190
+ description: z.ZodOptional<z.ZodString>;
191
+ triggers: z.ZodDefault<z.ZodArray<z.ZodString>>;
192
+ examples: z.ZodDefault<z.ZodArray<z.ZodString>>;
193
+ backing: z.ZodObject<{
194
+ tool_id: z.ZodOptional<z.ZodString>;
195
+ view_id: z.ZodOptional<z.ZodString>;
196
+ }, z.core.$strip>;
197
+ display_mode: z.ZodString;
198
+ safe_action_ids: z.ZodDefault<z.ZodArray<z.ZodString>>;
199
+ availability: z.ZodDefault<z.ZodString>;
200
+ }, z.core.$strip>;
201
+ type ChatWidgetTemplate = z.infer<typeof ChatWidgetTemplateSchema>;
185
202
  /**
186
203
  * The `config` blob carried by a Ryu App's `kind:"tool"` runnable. Core's strict
187
204
  * `ToolConfig` (`apps/core/src/plugin_manifest/schema.rs`) requires `slug` and
@@ -203,7 +220,7 @@ type ToolAppConfig = z.infer<typeof ToolAppConfigSchema>;
203
220
  /**
204
221
  * The `contributes` block. Mirrors `Contributes` in
205
222
  * `apps/core/src/plugin_manifest/mod.rs`. The declarative UI surfaces
206
- * (`composer_controls` / `settings_tabs` / `slash_commands`) are passed verbatim
223
+ * (`composer_controls` / `chat_features` / `settings_tabs` / `slash_commands`) are passed verbatim
207
224
  * to the desktop renderer, so they are typed loosely here (records).
208
225
  */
209
226
  declare const ContributesSchema: z.ZodObject<{
@@ -226,6 +243,7 @@ declare const ContributesSchema: z.ZodObject<{
226
243
  payload_example: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
227
244
  }, z.core.$strip>>>;
228
245
  composer_controls: z.ZodDefault<z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
246
+ chat_features: z.ZodDefault<z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
229
247
  settings_tabs: z.ZodDefault<z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
230
248
  slash_commands: z.ZodDefault<z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
231
249
  widgets: z.ZodDefault<z.ZodArray<z.ZodObject<{
@@ -235,9 +253,24 @@ declare const ContributesSchema: z.ZodObject<{
235
253
  mime: z.ZodDefault<z.ZodString>;
236
254
  default_display_mode: z.ZodDefault<z.ZodString>;
237
255
  }, z.core.$strip>>>;
256
+ chat_widget_templates: z.ZodOptional<z.ZodArray<z.ZodObject<{
257
+ id: z.ZodString;
258
+ title: z.ZodString;
259
+ description: z.ZodOptional<z.ZodString>;
260
+ triggers: z.ZodDefault<z.ZodArray<z.ZodString>>;
261
+ examples: z.ZodDefault<z.ZodArray<z.ZodString>>;
262
+ backing: z.ZodObject<{
263
+ tool_id: z.ZodOptional<z.ZodString>;
264
+ view_id: z.ZodOptional<z.ZodString>;
265
+ }, z.core.$strip>;
266
+ display_mode: z.ZodString;
267
+ safe_action_ids: z.ZodDefault<z.ZodArray<z.ZodString>>;
268
+ availability: z.ZodDefault<z.ZodString>;
269
+ }, z.core.$strip>>>;
238
270
  sidebar_sections: z.ZodDefault<z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
239
271
  sidebar_buttons: z.ZodDefault<z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
240
272
  dock_panels: z.ZodDefault<z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
273
+ live_activities: z.ZodDefault<z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
241
274
  data_categories: z.ZodDefault<z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
242
275
  lsp_servers: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
243
276
  pi_extensions: z.ZodDefault<z.ZodArray<z.ZodObject<{
@@ -250,6 +283,7 @@ declare const ContributesSchema: z.ZodObject<{
250
283
  file: z.ZodOptional<z.ZodString>;
251
284
  source: z.ZodOptional<z.ZodString>;
252
285
  }, z.core.$strip>>>;
286
+ message_actions: z.ZodDefault<z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
253
287
  }, z.core.$strip>;
254
288
  type Contributes = z.infer<typeof ContributesSchema>;
255
289
  /**
@@ -359,6 +393,33 @@ declare const EnginesReqSchema: z.ZodObject<{
359
393
  web: z.ZodOptional<z.ZodString>;
360
394
  }, z.core.$strip>;
361
395
  type EnginesReq = z.infer<typeof EnginesReqSchema>;
396
+ declare const McpServerAuthSchema: z.ZodObject<{
397
+ client_id: z.ZodOptional<z.ZodString>;
398
+ type: z.ZodLiteral<"oauth">;
399
+ }, z.core.$strict>;
400
+ declare const McpServerDeclSchema: z.ZodObject<{
401
+ args: z.ZodDefault<z.ZodArray<z.ZodString>>;
402
+ auth: z.ZodOptional<z.ZodObject<{
403
+ client_id: z.ZodOptional<z.ZodString>;
404
+ type: z.ZodLiteral<"oauth">;
405
+ }, z.core.$strict>>;
406
+ command: z.ZodOptional<z.ZodString>;
407
+ command_env: z.ZodOptional<z.ZodString>;
408
+ description: z.ZodOptional<z.ZodString>;
409
+ enabled: z.ZodDefault<z.ZodBoolean>;
410
+ env: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodString>>;
411
+ headers: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodString>>;
412
+ type: z.ZodOptional<z.ZodEnum<{
413
+ stdio: "stdio";
414
+ http: "http";
415
+ "streamable-http": "streamable-http";
416
+ streamable_http: "streamable_http";
417
+ sse: "sse";
418
+ }>>;
419
+ url: z.ZodOptional<z.ZodURL>;
420
+ }, z.core.$strip>;
421
+ type McpServerAuth = z.infer<typeof McpServerAuthSchema>;
422
+ type McpServerDecl = z.infer<typeof McpServerDeclSchema>;
362
423
  /**
363
424
  * Full schema for a `manifest.json` Plugin manifest. Mirrors `PluginManifest` in
364
425
  * `apps/core/src/plugin_manifest/mod.rs`.
@@ -387,6 +448,27 @@ declare const PluginManifestSchema: z.ZodObject<{
387
448
  config: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
388
449
  }, z.core.$strip>>>;
389
450
  permission_grants: z.ZodDefault<z.ZodArray<z.ZodString>>;
451
+ mcp_servers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
452
+ args: z.ZodDefault<z.ZodArray<z.ZodString>>;
453
+ auth: z.ZodOptional<z.ZodObject<{
454
+ client_id: z.ZodOptional<z.ZodString>;
455
+ type: z.ZodLiteral<"oauth">;
456
+ }, z.core.$strict>>;
457
+ command: z.ZodOptional<z.ZodString>;
458
+ command_env: z.ZodOptional<z.ZodString>;
459
+ description: z.ZodOptional<z.ZodString>;
460
+ enabled: z.ZodDefault<z.ZodBoolean>;
461
+ env: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodString>>;
462
+ headers: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodString>>;
463
+ type: z.ZodOptional<z.ZodEnum<{
464
+ stdio: "stdio";
465
+ http: "http";
466
+ "streamable-http": "streamable-http";
467
+ streamable_http: "streamable_http";
468
+ sse: "sse";
469
+ }>>;
470
+ url: z.ZodOptional<z.ZodURL>;
471
+ }, z.core.$strip>>>;
390
472
  companion: z.ZodOptional<z.ZodObject<{
391
473
  label: z.ZodString;
392
474
  icon: z.ZodOptional<z.ZodString>;
@@ -413,6 +495,7 @@ declare const PluginManifestSchema: z.ZodObject<{
413
495
  payload_example: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
414
496
  }, z.core.$strip>>>;
415
497
  composer_controls: z.ZodDefault<z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
498
+ chat_features: z.ZodDefault<z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
416
499
  settings_tabs: z.ZodDefault<z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
417
500
  slash_commands: z.ZodDefault<z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
418
501
  widgets: z.ZodDefault<z.ZodArray<z.ZodObject<{
@@ -422,9 +505,24 @@ declare const PluginManifestSchema: z.ZodObject<{
422
505
  mime: z.ZodDefault<z.ZodString>;
423
506
  default_display_mode: z.ZodDefault<z.ZodString>;
424
507
  }, z.core.$strip>>>;
508
+ chat_widget_templates: z.ZodOptional<z.ZodArray<z.ZodObject<{
509
+ id: z.ZodString;
510
+ title: z.ZodString;
511
+ description: z.ZodOptional<z.ZodString>;
512
+ triggers: z.ZodDefault<z.ZodArray<z.ZodString>>;
513
+ examples: z.ZodDefault<z.ZodArray<z.ZodString>>;
514
+ backing: z.ZodObject<{
515
+ tool_id: z.ZodOptional<z.ZodString>;
516
+ view_id: z.ZodOptional<z.ZodString>;
517
+ }, z.core.$strip>;
518
+ display_mode: z.ZodString;
519
+ safe_action_ids: z.ZodDefault<z.ZodArray<z.ZodString>>;
520
+ availability: z.ZodDefault<z.ZodString>;
521
+ }, z.core.$strip>>>;
425
522
  sidebar_sections: z.ZodDefault<z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
426
523
  sidebar_buttons: z.ZodDefault<z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
427
524
  dock_panels: z.ZodDefault<z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
525
+ live_activities: z.ZodDefault<z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
428
526
  data_categories: z.ZodDefault<z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
429
527
  lsp_servers: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
430
528
  pi_extensions: z.ZodDefault<z.ZodArray<z.ZodObject<{
@@ -437,6 +535,7 @@ declare const PluginManifestSchema: z.ZodObject<{
437
535
  file: z.ZodOptional<z.ZodString>;
438
536
  source: z.ZodOptional<z.ZodString>;
439
537
  }, z.core.$strip>>>;
538
+ message_actions: z.ZodDefault<z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
440
539
  }, z.core.$strip>>;
441
540
  requires: z.ZodOptional<z.ZodObject<{
442
541
  apps: z.ZodDefault<z.ZodArray<z.ZodObject<{
@@ -492,12 +591,16 @@ declare const PluginManifestSchema: z.ZodObject<{
492
591
  email: z.ZodOptional<z.ZodString>;
493
592
  url: z.ZodOptional<z.ZodString>;
494
593
  }, z.core.$strip>]>>;
594
+ repository: z.ZodOptional<z.ZodString>;
595
+ external: z.ZodOptional<z.ZodBoolean>;
495
596
  homepage: z.ZodOptional<z.ZodString>;
496
597
  keywords: z.ZodOptional<z.ZodArray<z.ZodString>>;
598
+ tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
497
599
  category: z.ZodOptional<z.ZodString>;
498
600
  license: z.ZodOptional<z.ZodString>;
499
601
  iconUrl: z.ZodOptional<z.ZodString>;
500
602
  icon: z.ZodOptional<z.ZodString>;
603
+ banner: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
501
604
  iconDither: z.ZodOptional<z.ZodObject<{
502
605
  from: z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>;
503
606
  to: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
@@ -543,4 +646,4 @@ declare function validateManifestStrict(manifestJson: string): string;
543
646
  */
544
647
  declare function coreManifestJsonSchema(): unknown;
545
648
 
546
- export { type AppDependency, AppDependencySchema, type CapabilityReq, CapabilityReqSchema, type CompanionSurface, CompanionSurfaceSchema, type Contributes, ContributesSchema, type EnginesReq, EnginesReqSchema, type HookEventContribution, HookEventContributionSchema, type OutputStyleContribution, OutputStyleContributionSchema, type PiExtensionContribution, PiExtensionContributionSchema, type PluginManifest, PluginManifestSchema, type Requires, RequiresSchema, type RunnableKind, RunnableKindSchema, type RunnableMeta, RunnableMetaSchema, type SetupStep, SetupStepSchema, type Surface, SurfaceSchema, type ToolAppConfig, ToolAppConfigSchema, type TurnHookContribution, TurnHookContributionSchema, type WidgetContribution, WidgetContributionSchema, coreManifestJsonSchema, labelImpersonatesSystemChrome, validateManifestStrict, validatePluginId };
649
+ export { type AppDependency, AppDependencySchema, type CapabilityReq, CapabilityReqSchema, type ChatWidgetTemplate, ChatWidgetTemplateSchema, type CompanionSurface, CompanionSurfaceSchema, type Contributes, ContributesSchema, type EnginesReq, EnginesReqSchema, type HookEventContribution, HookEventContributionSchema, type McpServerAuth, McpServerAuthSchema, type McpServerDecl, McpServerDeclSchema, type OutputStyleContribution, OutputStyleContributionSchema, type PiExtensionContribution, PiExtensionContributionSchema, type PluginManifest, PluginManifestSchema, type Requires, RequiresSchema, type RunnableKind, RunnableKindSchema, type RunnableMeta, RunnableMetaSchema, type SetupStep, SetupStepSchema, type Surface, SurfaceSchema, type ToolAppConfig, ToolAppConfigSchema, type TurnHookContribution, TurnHookContributionSchema, type WidgetContribution, WidgetContributionSchema, coreManifestJsonSchema, labelImpersonatesSystemChrome, validateManifestStrict, validatePluginId };
@@ -182,6 +182,23 @@ declare const WidgetContributionSchema: z.ZodObject<{
182
182
  default_display_mode: z.ZodDefault<z.ZodString>;
183
183
  }, z.core.$strip>;
184
184
  type WidgetContribution = z.infer<typeof WidgetContributionSchema>;
185
+ /** Metadata-only chat affordance. The host owns rendering and dispatch; the
186
+ * manifest carries identifiers and copy only. */
187
+ declare const ChatWidgetTemplateSchema: z.ZodObject<{
188
+ id: z.ZodString;
189
+ title: z.ZodString;
190
+ description: z.ZodOptional<z.ZodString>;
191
+ triggers: z.ZodDefault<z.ZodArray<z.ZodString>>;
192
+ examples: z.ZodDefault<z.ZodArray<z.ZodString>>;
193
+ backing: z.ZodObject<{
194
+ tool_id: z.ZodOptional<z.ZodString>;
195
+ view_id: z.ZodOptional<z.ZodString>;
196
+ }, z.core.$strip>;
197
+ display_mode: z.ZodString;
198
+ safe_action_ids: z.ZodDefault<z.ZodArray<z.ZodString>>;
199
+ availability: z.ZodDefault<z.ZodString>;
200
+ }, z.core.$strip>;
201
+ type ChatWidgetTemplate = z.infer<typeof ChatWidgetTemplateSchema>;
185
202
  /**
186
203
  * The `config` blob carried by a Ryu App's `kind:"tool"` runnable. Core's strict
187
204
  * `ToolConfig` (`apps/core/src/plugin_manifest/schema.rs`) requires `slug` and
@@ -203,7 +220,7 @@ type ToolAppConfig = z.infer<typeof ToolAppConfigSchema>;
203
220
  /**
204
221
  * The `contributes` block. Mirrors `Contributes` in
205
222
  * `apps/core/src/plugin_manifest/mod.rs`. The declarative UI surfaces
206
- * (`composer_controls` / `settings_tabs` / `slash_commands`) are passed verbatim
223
+ * (`composer_controls` / `chat_features` / `settings_tabs` / `slash_commands`) are passed verbatim
207
224
  * to the desktop renderer, so they are typed loosely here (records).
208
225
  */
209
226
  declare const ContributesSchema: z.ZodObject<{
@@ -226,6 +243,7 @@ declare const ContributesSchema: z.ZodObject<{
226
243
  payload_example: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
227
244
  }, z.core.$strip>>>;
228
245
  composer_controls: z.ZodDefault<z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
246
+ chat_features: z.ZodDefault<z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
229
247
  settings_tabs: z.ZodDefault<z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
230
248
  slash_commands: z.ZodDefault<z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
231
249
  widgets: z.ZodDefault<z.ZodArray<z.ZodObject<{
@@ -235,9 +253,24 @@ declare const ContributesSchema: z.ZodObject<{
235
253
  mime: z.ZodDefault<z.ZodString>;
236
254
  default_display_mode: z.ZodDefault<z.ZodString>;
237
255
  }, z.core.$strip>>>;
256
+ chat_widget_templates: z.ZodOptional<z.ZodArray<z.ZodObject<{
257
+ id: z.ZodString;
258
+ title: z.ZodString;
259
+ description: z.ZodOptional<z.ZodString>;
260
+ triggers: z.ZodDefault<z.ZodArray<z.ZodString>>;
261
+ examples: z.ZodDefault<z.ZodArray<z.ZodString>>;
262
+ backing: z.ZodObject<{
263
+ tool_id: z.ZodOptional<z.ZodString>;
264
+ view_id: z.ZodOptional<z.ZodString>;
265
+ }, z.core.$strip>;
266
+ display_mode: z.ZodString;
267
+ safe_action_ids: z.ZodDefault<z.ZodArray<z.ZodString>>;
268
+ availability: z.ZodDefault<z.ZodString>;
269
+ }, z.core.$strip>>>;
238
270
  sidebar_sections: z.ZodDefault<z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
239
271
  sidebar_buttons: z.ZodDefault<z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
240
272
  dock_panels: z.ZodDefault<z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
273
+ live_activities: z.ZodDefault<z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
241
274
  data_categories: z.ZodDefault<z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
242
275
  lsp_servers: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
243
276
  pi_extensions: z.ZodDefault<z.ZodArray<z.ZodObject<{
@@ -250,6 +283,7 @@ declare const ContributesSchema: z.ZodObject<{
250
283
  file: z.ZodOptional<z.ZodString>;
251
284
  source: z.ZodOptional<z.ZodString>;
252
285
  }, z.core.$strip>>>;
286
+ message_actions: z.ZodDefault<z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
253
287
  }, z.core.$strip>;
254
288
  type Contributes = z.infer<typeof ContributesSchema>;
255
289
  /**
@@ -359,6 +393,33 @@ declare const EnginesReqSchema: z.ZodObject<{
359
393
  web: z.ZodOptional<z.ZodString>;
360
394
  }, z.core.$strip>;
361
395
  type EnginesReq = z.infer<typeof EnginesReqSchema>;
396
+ declare const McpServerAuthSchema: z.ZodObject<{
397
+ client_id: z.ZodOptional<z.ZodString>;
398
+ type: z.ZodLiteral<"oauth">;
399
+ }, z.core.$strict>;
400
+ declare const McpServerDeclSchema: z.ZodObject<{
401
+ args: z.ZodDefault<z.ZodArray<z.ZodString>>;
402
+ auth: z.ZodOptional<z.ZodObject<{
403
+ client_id: z.ZodOptional<z.ZodString>;
404
+ type: z.ZodLiteral<"oauth">;
405
+ }, z.core.$strict>>;
406
+ command: z.ZodOptional<z.ZodString>;
407
+ command_env: z.ZodOptional<z.ZodString>;
408
+ description: z.ZodOptional<z.ZodString>;
409
+ enabled: z.ZodDefault<z.ZodBoolean>;
410
+ env: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodString>>;
411
+ headers: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodString>>;
412
+ type: z.ZodOptional<z.ZodEnum<{
413
+ stdio: "stdio";
414
+ http: "http";
415
+ "streamable-http": "streamable-http";
416
+ streamable_http: "streamable_http";
417
+ sse: "sse";
418
+ }>>;
419
+ url: z.ZodOptional<z.ZodURL>;
420
+ }, z.core.$strip>;
421
+ type McpServerAuth = z.infer<typeof McpServerAuthSchema>;
422
+ type McpServerDecl = z.infer<typeof McpServerDeclSchema>;
362
423
  /**
363
424
  * Full schema for a `manifest.json` Plugin manifest. Mirrors `PluginManifest` in
364
425
  * `apps/core/src/plugin_manifest/mod.rs`.
@@ -387,6 +448,27 @@ declare const PluginManifestSchema: z.ZodObject<{
387
448
  config: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
388
449
  }, z.core.$strip>>>;
389
450
  permission_grants: z.ZodDefault<z.ZodArray<z.ZodString>>;
451
+ mcp_servers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
452
+ args: z.ZodDefault<z.ZodArray<z.ZodString>>;
453
+ auth: z.ZodOptional<z.ZodObject<{
454
+ client_id: z.ZodOptional<z.ZodString>;
455
+ type: z.ZodLiteral<"oauth">;
456
+ }, z.core.$strict>>;
457
+ command: z.ZodOptional<z.ZodString>;
458
+ command_env: z.ZodOptional<z.ZodString>;
459
+ description: z.ZodOptional<z.ZodString>;
460
+ enabled: z.ZodDefault<z.ZodBoolean>;
461
+ env: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodString>>;
462
+ headers: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodString>>;
463
+ type: z.ZodOptional<z.ZodEnum<{
464
+ stdio: "stdio";
465
+ http: "http";
466
+ "streamable-http": "streamable-http";
467
+ streamable_http: "streamable_http";
468
+ sse: "sse";
469
+ }>>;
470
+ url: z.ZodOptional<z.ZodURL>;
471
+ }, z.core.$strip>>>;
390
472
  companion: z.ZodOptional<z.ZodObject<{
391
473
  label: z.ZodString;
392
474
  icon: z.ZodOptional<z.ZodString>;
@@ -413,6 +495,7 @@ declare const PluginManifestSchema: z.ZodObject<{
413
495
  payload_example: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
414
496
  }, z.core.$strip>>>;
415
497
  composer_controls: z.ZodDefault<z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
498
+ chat_features: z.ZodDefault<z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
416
499
  settings_tabs: z.ZodDefault<z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
417
500
  slash_commands: z.ZodDefault<z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
418
501
  widgets: z.ZodDefault<z.ZodArray<z.ZodObject<{
@@ -422,9 +505,24 @@ declare const PluginManifestSchema: z.ZodObject<{
422
505
  mime: z.ZodDefault<z.ZodString>;
423
506
  default_display_mode: z.ZodDefault<z.ZodString>;
424
507
  }, z.core.$strip>>>;
508
+ chat_widget_templates: z.ZodOptional<z.ZodArray<z.ZodObject<{
509
+ id: z.ZodString;
510
+ title: z.ZodString;
511
+ description: z.ZodOptional<z.ZodString>;
512
+ triggers: z.ZodDefault<z.ZodArray<z.ZodString>>;
513
+ examples: z.ZodDefault<z.ZodArray<z.ZodString>>;
514
+ backing: z.ZodObject<{
515
+ tool_id: z.ZodOptional<z.ZodString>;
516
+ view_id: z.ZodOptional<z.ZodString>;
517
+ }, z.core.$strip>;
518
+ display_mode: z.ZodString;
519
+ safe_action_ids: z.ZodDefault<z.ZodArray<z.ZodString>>;
520
+ availability: z.ZodDefault<z.ZodString>;
521
+ }, z.core.$strip>>>;
425
522
  sidebar_sections: z.ZodDefault<z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
426
523
  sidebar_buttons: z.ZodDefault<z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
427
524
  dock_panels: z.ZodDefault<z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
525
+ live_activities: z.ZodDefault<z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
428
526
  data_categories: z.ZodDefault<z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
429
527
  lsp_servers: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
430
528
  pi_extensions: z.ZodDefault<z.ZodArray<z.ZodObject<{
@@ -437,6 +535,7 @@ declare const PluginManifestSchema: z.ZodObject<{
437
535
  file: z.ZodOptional<z.ZodString>;
438
536
  source: z.ZodOptional<z.ZodString>;
439
537
  }, z.core.$strip>>>;
538
+ message_actions: z.ZodDefault<z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
440
539
  }, z.core.$strip>>;
441
540
  requires: z.ZodOptional<z.ZodObject<{
442
541
  apps: z.ZodDefault<z.ZodArray<z.ZodObject<{
@@ -492,12 +591,16 @@ declare const PluginManifestSchema: z.ZodObject<{
492
591
  email: z.ZodOptional<z.ZodString>;
493
592
  url: z.ZodOptional<z.ZodString>;
494
593
  }, z.core.$strip>]>>;
594
+ repository: z.ZodOptional<z.ZodString>;
595
+ external: z.ZodOptional<z.ZodBoolean>;
495
596
  homepage: z.ZodOptional<z.ZodString>;
496
597
  keywords: z.ZodOptional<z.ZodArray<z.ZodString>>;
598
+ tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
497
599
  category: z.ZodOptional<z.ZodString>;
498
600
  license: z.ZodOptional<z.ZodString>;
499
601
  iconUrl: z.ZodOptional<z.ZodString>;
500
602
  icon: z.ZodOptional<z.ZodString>;
603
+ banner: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
501
604
  iconDither: z.ZodOptional<z.ZodObject<{
502
605
  from: z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>;
503
606
  to: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
@@ -543,4 +646,4 @@ declare function validateManifestStrict(manifestJson: string): string;
543
646
  */
544
647
  declare function coreManifestJsonSchema(): unknown;
545
648
 
546
- export { type AppDependency, AppDependencySchema, type CapabilityReq, CapabilityReqSchema, type CompanionSurface, CompanionSurfaceSchema, type Contributes, ContributesSchema, type EnginesReq, EnginesReqSchema, type HookEventContribution, HookEventContributionSchema, type OutputStyleContribution, OutputStyleContributionSchema, type PiExtensionContribution, PiExtensionContributionSchema, type PluginManifest, PluginManifestSchema, type Requires, RequiresSchema, type RunnableKind, RunnableKindSchema, type RunnableMeta, RunnableMetaSchema, type SetupStep, SetupStepSchema, type Surface, SurfaceSchema, type ToolAppConfig, ToolAppConfigSchema, type TurnHookContribution, TurnHookContributionSchema, type WidgetContribution, WidgetContributionSchema, coreManifestJsonSchema, labelImpersonatesSystemChrome, validateManifestStrict, validatePluginId };
649
+ export { type AppDependency, AppDependencySchema, type CapabilityReq, CapabilityReqSchema, type ChatWidgetTemplate, ChatWidgetTemplateSchema, type CompanionSurface, CompanionSurfaceSchema, type Contributes, ContributesSchema, type EnginesReq, EnginesReqSchema, type HookEventContribution, HookEventContributionSchema, type McpServerAuth, McpServerAuthSchema, type McpServerDecl, McpServerDeclSchema, type OutputStyleContribution, OutputStyleContributionSchema, type PiExtensionContribution, PiExtensionContributionSchema, type PluginManifest, PluginManifestSchema, type Requires, RequiresSchema, type RunnableKind, RunnableKindSchema, type RunnableMeta, RunnableMetaSchema, type SetupStep, SetupStepSchema, type Surface, SurfaceSchema, type ToolAppConfig, ToolAppConfigSchema, type TurnHookContribution, TurnHookContributionSchema, type WidgetContribution, WidgetContributionSchema, coreManifestJsonSchema, labelImpersonatesSystemChrome, validateManifestStrict, validatePluginId };
package/dist/manifest.js CHANGED
@@ -1,10 +1,13 @@
1
1
  import {
2
2
  AppDependencySchema,
3
3
  CapabilityReqSchema,
4
+ ChatWidgetTemplateSchema,
4
5
  CompanionSurfaceSchema,
5
6
  ContributesSchema,
6
7
  EnginesReqSchema,
7
8
  HookEventContributionSchema,
9
+ McpServerAuthSchema,
10
+ McpServerDeclSchema,
8
11
  OutputStyleContributionSchema,
9
12
  PiExtensionContributionSchema,
10
13
  PluginManifestSchema,
@@ -20,14 +23,17 @@ import {
20
23
  labelImpersonatesSystemChrome,
21
24
  validateManifestStrict,
22
25
  validatePluginId
23
- } from "./chunk-AO2KJRDD.js";
26
+ } from "./chunk-IEUQ3CDG.js";
24
27
  export {
25
28
  AppDependencySchema,
26
29
  CapabilityReqSchema,
30
+ ChatWidgetTemplateSchema,
27
31
  CompanionSurfaceSchema,
28
32
  ContributesSchema,
29
33
  EnginesReqSchema,
30
34
  HookEventContributionSchema,
35
+ McpServerAuthSchema,
36
+ McpServerDeclSchema,
31
37
  OutputStyleContributionSchema,
32
38
  PiExtensionContributionSchema,
33
39
  PluginManifestSchema,