@yaklabs-ai/plugin-protocol 0.36.0 → 0.37.1

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.
package/README.md CHANGED
@@ -11,7 +11,7 @@ flow.
11
11
  ```json
12
12
  {
13
13
  "dependencies": {
14
- "@bonsai/plugin-protocol": "npm:@yaklabs-ai/plugin-protocol@^0.36.0"
14
+ "@bonsai/plugin-protocol": "npm:@yaklabs-ai/plugin-protocol@^0.37.1"
15
15
  }
16
16
  }
17
17
  ```
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
3
  "package": "@yaklabs-ai/plugin-protocol",
4
- "version": "0.36.0",
4
+ "version": "0.37.1",
5
5
  "target": "npm",
6
6
  "firstPartyLicense": "MIT",
7
7
  "bundled": [],
package/dist/index.d.ts CHANGED
@@ -1689,6 +1689,7 @@ declare namespace authoringContributionSchemas {
1689
1689
  KayUiAppHostCapability,
1690
1690
  UiAppCapabilities,
1691
1691
  UiRailEntryContribution,
1692
+ UiToastPreviewContribution,
1692
1693
  UiPageContribution,
1693
1694
  UiAppContribution,
1694
1695
  ThemeContribution,
@@ -2799,6 +2800,11 @@ declare const canonicalContributionSchemas: {
2799
2800
  body: z.ZodString;
2800
2801
  }, z.core.$strict>>;
2801
2802
  }, z.core.$strict>;
2803
+ UiToastPreviewContribution: z.ZodObject<{
2804
+ rule: z.ZodString;
2805
+ body: z.ZodString;
2806
+ address: z.ZodString;
2807
+ }, z.core.$strict>;
2802
2808
  UiPageContribution: z.ZodObject<{
2803
2809
  id: z.ZodString;
2804
2810
  title: z.ZodOptional<z.ZodString>;
@@ -4141,8 +4147,17 @@ export declare const KAY_PLUGIN_PROTOCOL_VERSION: "kay.plugin.v1";
4141
4147
  * under `kay.ui` `contributes` names each page's title, icon file, companion status and opened
4142
4148
  * event. A reference presentation that opens a page gains `scheme` and `addresses`, and may leave
4143
4149
  * out `uriModule` when another layer serves the address. A plugin using these declares ^0.36.0.
4150
+ *
4151
+ * 0.37.0 lets a notification rule's toast declare a preview (#15904). `toastPreviews` under `kay.ui`
4152
+ * `contributes` names the `rule`, the `body` that fills the preview, either a `contextOnly` app in
4153
+ * the plugin or a body the host ships, and the `address` it is about. Additive. A plugin that
4154
+ * declares a preview declares ^0.37.0.
4155
+ *
4156
+ * 0.37.1 adds the required, ungated `featureFlags.value(key)` reader to both backend targets.
4157
+ * Unknown keys return false; the host supplies evaluated values before activation and updates them.
4158
+ * Additive: existing plugins keep loading. A consumer declares ^0.37.1.
4144
4159
  */
4145
- export declare const KAY_PLUGIN_SDK_VERSION: "0.36.0";
4160
+ export declare const KAY_PLUGIN_SDK_VERSION: "0.37.1";
4146
4161
 
4147
4162
  export declare const KAY_PLUGIN_TARGET_NAMES: readonly ["kay.agent", "kay.app", "kay.ui"];
4148
4163
 
@@ -5784,6 +5799,11 @@ export declare const KayPluginManifestV1: z.ZodObject<{
5784
5799
  body: z.ZodString;
5785
5800
  }, z.core.$strict>>;
5786
5801
  }, z.core.$strict>>>;
5802
+ toastPreviews: z.ZodOptional<z.ZodArray<z.ZodObject<{
5803
+ rule: z.ZodString;
5804
+ body: z.ZodString;
5805
+ address: z.ZodString;
5806
+ }, z.core.$strict>>>;
5787
5807
  pages: z.ZodOptional<z.ZodArray<z.ZodObject<{
5788
5808
  id: z.ZodString;
5789
5809
  title: z.ZodOptional<z.ZodString>;
@@ -6912,6 +6932,11 @@ export declare const KayUiTargetManifest: z.ZodObject<{
6912
6932
  body: z.ZodString;
6913
6933
  }, z.core.$strict>>;
6914
6934
  }, z.core.$strict>>>;
6935
+ toastPreviews: z.ZodOptional<z.ZodArray<z.ZodObject<{
6936
+ rule: z.ZodString;
6937
+ body: z.ZodString;
6938
+ address: z.ZodString;
6939
+ }, z.core.$strict>>>;
6915
6940
  pages: z.ZodOptional<z.ZodArray<z.ZodObject<{
6916
6941
  id: z.ZodString;
6917
6942
  title: z.ZodOptional<z.ZodString>;
@@ -14080,6 +14105,14 @@ export declare const UiSlotContribution: z.ZodObject<{
14080
14105
 
14081
14106
  export declare type UiSlotContribution = z.infer<typeof UiSlotContribution>;
14082
14107
 
14108
+ export declare const UiToastPreviewContribution: z.ZodObject<{
14109
+ rule: z.ZodString;
14110
+ body: z.ZodString;
14111
+ address: z.ZodString;
14112
+ }, z.core.$strict>;
14113
+
14114
+ export declare type UiToastPreviewContribution = z.infer<typeof UiToastPreviewContribution>;
14115
+
14083
14116
  export declare const UriModuleContribution: z.ZodObject<{
14084
14117
  authService: z.ZodOptional<z.ZodString>;
14085
14118
  authScheme: z.ZodOptional<z.ZodString>;
package/dist/index.js CHANGED
@@ -254,7 +254,7 @@ var JsonSchema = z4.record(z4.string(), JsonValue);
254
254
  var KAY_PLUGIN_MANIFEST_SIZE_CAP_BYTES = 1024 * 1024;
255
255
  var KAY_PLUGIN_PROTOCOL_VERSION = "kay.plugin.v1";
256
256
  var KAY_PLUGIN_PROTOCOL_PACKAGE_NAME = "@bonsai/plugin-protocol";
257
- var KAY_PLUGIN_SDK_VERSION = "0.36.0";
257
+ var KAY_PLUGIN_SDK_VERSION = "0.37.1";
258
258
  var KAY_PLUGIN_COMPATIBLE_SDK_VERSIONS = [
259
259
  "0.26.3",
260
260
  "0.27.1",
@@ -265,7 +265,8 @@ var KAY_PLUGIN_COMPATIBLE_SDK_VERSIONS = [
265
265
  "0.32.0",
266
266
  "0.33.0",
267
267
  "0.34.0",
268
- "0.35.0"
268
+ "0.35.0",
269
+ "0.36.0"
269
270
  ];
270
271
  var KAY_PLUGIN_TARGET_NAMES = [
271
272
  "kay.agent",
@@ -2762,6 +2763,7 @@ __export(contributions_exports, {
2762
2763
  UiPageContribution: () => UiPageContribution,
2763
2764
  UiRailEntryContribution: () => UiRailEntryContribution,
2764
2765
  UiSlotContribution: () => UiSlotContribution,
2766
+ UiToastPreviewContribution: () => UiToastPreviewContribution,
2765
2767
  UriModuleContribution: () => UriModuleContribution,
2766
2768
  UriModuleFacts: () => UriModuleFacts,
2767
2769
  WhiteboardTypeContribution: () => WhiteboardTypeContribution,
@@ -3843,6 +3845,11 @@ function createContributionsSchemas(canonical) {
3843
3845
  badge: UiRailBadge.optional(),
3844
3846
  panel: z12.strictObject({ body: LocalContributionId2 }).optional()
3845
3847
  });
3848
+ const UiToastPreviewContribution2 = z12.strictObject({
3849
+ rule: LocalContributionId2,
3850
+ body: LocalContributionId2,
3851
+ address: NonEmptyString3
3852
+ });
3846
3853
  const UiPageContribution2 = z12.strictObject({
3847
3854
  id: NonEmptyString3,
3848
3855
  title: NonEmptyString3.optional(),
@@ -3992,6 +3999,7 @@ function createContributionsSchemas(canonical) {
3992
3999
  KayUiAppHostCapability: KayUiAppHostCapability2,
3993
4000
  UiAppCapabilities: UiAppCapabilities2,
3994
4001
  UiRailEntryContribution: UiRailEntryContribution2,
4002
+ UiToastPreviewContribution: UiToastPreviewContribution2,
3995
4003
  UiPageContribution: UiPageContribution2,
3996
4004
  UiAppContribution: UiAppContribution2,
3997
4005
  ThemeContribution: ThemeContribution2,
@@ -4000,7 +4008,7 @@ function createContributionsSchemas(canonical) {
4000
4008
  PluginContributionKind: PluginContributionKind2
4001
4009
  };
4002
4010
  }
4003
- var { ApprovalCardForm, ApprovalCardStoredForm, ApprovalTypeContribution, UriModuleFacts, ToolContribution, ToolPermission, AgentToolContribution, ConverterContribution, UriModuleContribution, AppUriModuleContribution, AppDataSourceContribution, WhiteboardTypeStorage, WhiteboardTypeContribution, AppDataMaterializerContribution, ArtifactUriModuleContribution, CliBindingContribution, GitHostContribution, ResourceContribution, SkillContribution, PluginSkillSourceDeclaration, SearchProviderContribution, InteractionDriverContribution, EntityResolverContribution, AgentRenderContribution, EndpointContribution, WorkflowContribution, McpServerUrl, McpServerAuthMode, McpServerContribution, McpServerContributions, AppEventSubscription, ContextContributorContribution, PluginEventDefinitionContribution, PluginNotificationRuleContribution, UiEventSubscriptionContribution, DeviceDelegationContribution, SessionReaderContribution, UiCommandContribution, UiSlotContribution, SettingsPanelContribution, ResultRendererContribution, ReferenceOpenBehavior, ReferencePresentationVariant, ReferencePresentationVariants, ReferencePresentationUriPattern, ReferencePresentationUrlClaim, ReferencePresentationTooltip, ReferencePresentationAddress, ReferencePresentationContribution, RichViewContribution, KayUiAppHostCapability, UiAppCapabilities, UiRailEntryContribution, UiPageContribution, UiAppContribution, ThemeContribution, CommandHandler, CommandContribution, PluginContributionKind } = createContributionsSchemas(false);
4011
+ var { ApprovalCardForm, ApprovalCardStoredForm, ApprovalTypeContribution, UriModuleFacts, ToolContribution, ToolPermission, AgentToolContribution, ConverterContribution, UriModuleContribution, AppUriModuleContribution, AppDataSourceContribution, WhiteboardTypeStorage, WhiteboardTypeContribution, AppDataMaterializerContribution, ArtifactUriModuleContribution, CliBindingContribution, GitHostContribution, ResourceContribution, SkillContribution, PluginSkillSourceDeclaration, SearchProviderContribution, InteractionDriverContribution, EntityResolverContribution, AgentRenderContribution, EndpointContribution, WorkflowContribution, McpServerUrl, McpServerAuthMode, McpServerContribution, McpServerContributions, AppEventSubscription, ContextContributorContribution, PluginEventDefinitionContribution, PluginNotificationRuleContribution, UiEventSubscriptionContribution, DeviceDelegationContribution, SessionReaderContribution, UiCommandContribution, UiSlotContribution, SettingsPanelContribution, ResultRendererContribution, ReferenceOpenBehavior, ReferencePresentationVariant, ReferencePresentationVariants, ReferencePresentationUriPattern, ReferencePresentationUrlClaim, ReferencePresentationTooltip, ReferencePresentationAddress, ReferencePresentationContribution, RichViewContribution, KayUiAppHostCapability, UiAppCapabilities, UiRailEntryContribution, UiToastPreviewContribution, UiPageContribution, UiAppContribution, ThemeContribution, CommandHandler, CommandContribution, PluginContributionKind } = createContributionsSchemas(false);
4004
4012
  var canonicalContributionSchemas = createContributionsSchemas(true);
4005
4013
 
4006
4014
  // packages/plugin-protocol/dist/icon-shape.js
@@ -4074,7 +4082,7 @@ var KAY_UI_NATIVE_EVENT_SUBSCRIPTIONS = [
4074
4082
  var KAY_UI_NATIVE_EVENT_ALLOWLIST = new Set(KAY_UI_NATIVE_EVENT_SUBSCRIPTIONS);
4075
4083
  var RETIRED_COMPATIBILITY_KEYS = ["policy"];
4076
4084
  function createManifestSchemas(canonical) {
4077
- const { AgentRenderContribution: AgentRenderContribution2, ApprovalTypeContribution: ApprovalTypeContribution2, WorkflowContribution: WorkflowContribution2, AppDataMaterializerContribution: AppDataMaterializerContribution2, AppDataSourceContribution: AppDataSourceContribution2, AppUriModuleContribution: AppUriModuleContribution2, AppEventSubscription: AppEventSubscription2, ArtifactUriModuleContribution: ArtifactUriModuleContribution2, CliBindingContribution: CliBindingContribution2, CommandContribution: CommandContribution2, ContextContributorContribution: ContextContributorContribution2, ConverterContribution: ConverterContribution2, SessionReaderContribution: SessionReaderContribution2, DeviceDelegationContribution: DeviceDelegationContribution2, EndpointContribution: EndpointContribution2, EntityResolverContribution: EntityResolverContribution2, GitHostContribution: GitHostContribution2, McpServerContributions: McpServerContributions2, PluginEventDefinitionContribution: PluginEventDefinitionContribution2, PluginNotificationRuleContribution: PluginNotificationRuleContribution2, ResourceContribution: ResourceContribution2, ReferencePresentationContribution: ReferencePresentationContribution2, ResultRendererContribution: ResultRendererContribution2, RichViewContribution: RichViewContribution2, PluginSkillSourceDeclaration: PluginSkillSourceDeclaration2, InteractionDriverContribution: InteractionDriverContribution2, SearchProviderContribution: SearchProviderContribution2, SkillContribution: SkillContribution2, SettingsPanelContribution: SettingsPanelContribution2, ThemeContribution: ThemeContribution2, AgentToolContribution: AgentToolContribution2, ToolContribution: ToolContribution2, UiCommandContribution: UiCommandContribution2, UiAppContribution: UiAppContribution2, UiRailEntryContribution: UiRailEntryContribution2, UiPageContribution: UiPageContribution2, UiEventSubscriptionContribution: UiEventSubscriptionContribution2, UiSlotContribution: UiSlotContribution2, UriModuleContribution: UriModuleContribution2, WhiteboardTypeContribution: WhiteboardTypeContribution2 } = canonical ? canonicalContributionSchemas : contributions_exports;
4085
+ const { AgentRenderContribution: AgentRenderContribution2, ApprovalTypeContribution: ApprovalTypeContribution2, WorkflowContribution: WorkflowContribution2, AppDataMaterializerContribution: AppDataMaterializerContribution2, AppDataSourceContribution: AppDataSourceContribution2, AppUriModuleContribution: AppUriModuleContribution2, AppEventSubscription: AppEventSubscription2, ArtifactUriModuleContribution: ArtifactUriModuleContribution2, CliBindingContribution: CliBindingContribution2, CommandContribution: CommandContribution2, ContextContributorContribution: ContextContributorContribution2, ConverterContribution: ConverterContribution2, SessionReaderContribution: SessionReaderContribution2, DeviceDelegationContribution: DeviceDelegationContribution2, EndpointContribution: EndpointContribution2, EntityResolverContribution: EntityResolverContribution2, GitHostContribution: GitHostContribution2, McpServerContributions: McpServerContributions2, PluginEventDefinitionContribution: PluginEventDefinitionContribution2, PluginNotificationRuleContribution: PluginNotificationRuleContribution2, ResourceContribution: ResourceContribution2, ReferencePresentationContribution: ReferencePresentationContribution2, ResultRendererContribution: ResultRendererContribution2, RichViewContribution: RichViewContribution2, PluginSkillSourceDeclaration: PluginSkillSourceDeclaration2, InteractionDriverContribution: InteractionDriverContribution2, SearchProviderContribution: SearchProviderContribution2, SkillContribution: SkillContribution2, SettingsPanelContribution: SettingsPanelContribution2, ThemeContribution: ThemeContribution2, AgentToolContribution: AgentToolContribution2, ToolContribution: ToolContribution2, UiCommandContribution: UiCommandContribution2, UiAppContribution: UiAppContribution2, UiRailEntryContribution: UiRailEntryContribution2, UiToastPreviewContribution: UiToastPreviewContribution2, UiPageContribution: UiPageContribution2, UiEventSubscriptionContribution: UiEventSubscriptionContribution2, UiSlotContribution: UiSlotContribution2, UriModuleContribution: UriModuleContribution2, WhiteboardTypeContribution: WhiteboardTypeContribution2 } = canonical ? canonicalContributionSchemas : contributions_exports;
4078
4086
  const { HttpsUrl: HttpsUrl2, LocalContributionId: LocalContributionId2, NonEmptyString: NonEmptyString3, PackageAssetPath: PackageAssetPath2, PluginId: PluginId2, PluginNamespace: PluginNamespace2, RegistrableDomain: RegistrableDomain2, SignedInStatusCode: SignedInStatusCode2, TargetEntrypoint: TargetEntrypoint2 } = canonical ? canonicalCommonSchemas : common_exports;
4079
4087
  const { PluginPermissionManifest: PluginPermissionManifest2 } = canonical ? canonicalPermissionSchemas : permissions_exports;
4080
4088
  const KayAgentTargetManifest2 = z13.strictObject({
@@ -4197,6 +4205,7 @@ function createManifestSchemas(canonical) {
4197
4205
  views: z13.array(RichViewContribution2).optional(),
4198
4206
  apps: z13.array(UiAppContribution2).optional(),
4199
4207
  railEntries: z13.array(UiRailEntryContribution2).optional(),
4208
+ toastPreviews: z13.array(UiToastPreviewContribution2).optional(),
4200
4209
  pages: z13.array(UiPageContribution2).optional(),
4201
4210
  themes: z13.array(ThemeContribution2).optional(),
4202
4211
  eventSubscriptions: z13.array(UiEventSubscriptionContribution2).optional(),
@@ -4746,6 +4755,50 @@ function createManifestSchemas(canonical) {
4746
4755
  });
4747
4756
  }
4748
4757
  }
4758
+ const notificationRuleIds = new Set(manifest.targets?.kay?.app?.contributes?.notificationRules?.map((rule) => rule.localId) ?? []);
4759
+ const previewedRules = /* @__PURE__ */ new Set();
4760
+ for (const [index, preview] of (manifest.targets?.kay?.ui?.contributes?.toastPreviews ?? []).entries()) {
4761
+ const path = [
4762
+ "targets",
4763
+ "kay",
4764
+ "ui",
4765
+ "contributes",
4766
+ "toastPreviews",
4767
+ index
4768
+ ];
4769
+ if (!notificationRuleIds.has(preview.rule)) {
4770
+ ctx.addIssue({
4771
+ code: "custom",
4772
+ path: [...path, "rule"],
4773
+ message: `Toast preview references unknown notification rule ${preview.rule}`
4774
+ });
4775
+ }
4776
+ if (previewedRules.has(preview.rule)) {
4777
+ ctx.addIssue({
4778
+ code: "custom",
4779
+ path: [...path, "rule"],
4780
+ message: `Notification rule ${preview.rule} has more than one toast preview`
4781
+ });
4782
+ }
4783
+ previewedRules.add(preview.rule);
4784
+ for (const [, name] of preview.address.matchAll(/\$\{([^}]*)\}/g)) {
4785
+ if (name !== "navigateTarget" && name !== "revision") {
4786
+ ctx.addIssue({
4787
+ code: "custom",
4788
+ path: [...path, "address"],
4789
+ message: `Toast preview address can't fill \${${name}}: only \${navigateTarget} and \${revision}`
4790
+ });
4791
+ }
4792
+ }
4793
+ const app = manifest.targets?.kay?.ui?.contributes?.apps?.find((candidate) => candidate.localId === preview.body);
4794
+ if (app !== void 0 && app.contextOnly !== true) {
4795
+ ctx.addIssue({
4796
+ code: "custom",
4797
+ path: [...path, "body"],
4798
+ message: `Toast preview body ${app.localId} must be a contextOnly ui app`
4799
+ });
4800
+ }
4801
+ }
4749
4802
  const subscribedUiEvents = new Set(manifest.targets?.kay?.ui?.contributes?.eventSubscriptions?.map((subscription) => subscription.event) ?? []);
4750
4803
  const invokedUiEndpoints = new Set(manifest.permissions?.byTarget["kay.ui"]?.endpoints?.filter((grant) => grant.operations.includes("invoke")).map((grant) => grant.endpoint) ?? []);
4751
4804
  const uriModuleIds = new Set([
@@ -7285,6 +7338,7 @@ export {
7285
7338
  UiPageContribution,
7286
7339
  UiRailEntryContribution,
7287
7340
  UiSlotContribution,
7341
+ UiToastPreviewContribution,
7288
7342
  UriModuleContribution,
7289
7343
  UriScheme,
7290
7344
  WEB_SESSION_CSRF_SELECTOR_PATTERN,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yaklabs-ai/plugin-protocol",
3
- "version": "0.36.0",
3
+ "version": "0.37.1",
4
4
  "description": "The Kay plugin manifest schema (`kay.plugin.v1`) — parse and validate a kay-plugin.json.",
5
5
  "author": "YakLabs",
6
6
  "type": "module",