@yaklabs-ai/plugin-protocol 0.30.0 → 0.32.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.
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.30.0"
14
+ "@bonsai/plugin-protocol": "npm:@yaklabs-ai/plugin-protocol@^0.32.0"
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.30.0",
4
+ "version": "0.32.0",
5
5
  "target": "npm",
6
6
  "firstPartyLicense": "MIT",
7
7
  "bundled": [],
package/dist/index.d.ts CHANGED
@@ -106,6 +106,13 @@ export declare const AppDataSourceContribution: z.ZodObject<{
106
106
  schema: z.ZodRecord<z.ZodString, z.ZodType<authoringCommonSchemas.JsonValue, unknown, z.core.$ZodTypeInternals<authoringCommonSchemas.JsonValue, unknown>>>;
107
107
  }, z.core.$strict>;
108
108
  }, z.core.$strict>>;
109
+ store: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
110
+ shape: z.ZodLiteral<"rows">;
111
+ rowsField: z.ZodString;
112
+ key: z.ZodArray<z.ZodString>;
113
+ }, z.core.$strict>, z.ZodObject<{
114
+ shape: z.ZodLiteral<"value">;
115
+ }, z.core.$strict>], "shape">>;
109
116
  }, z.core.$strict>;
110
117
 
111
118
  export declare type AppDataSourceContribution = z.infer<typeof AppDataSourceContribution>;
@@ -1661,7 +1668,7 @@ declare namespace authoringContributionSchemas {
1661
1668
  RichViewContribution,
1662
1669
  KayUiAppHostCapability,
1663
1670
  UiAppCapabilities,
1664
- UiAppActivityRail,
1671
+ UiRailEntryContribution,
1665
1672
  UiAppContribution,
1666
1673
  ThemeContribution,
1667
1674
  CommandHandler,
@@ -2365,6 +2372,13 @@ declare const canonicalContributionSchemas: {
2365
2372
  schema: z.ZodRecord<z.ZodString, z.ZodType<authoringCommonSchemas.JsonValue, unknown, z.core.$ZodTypeInternals<authoringCommonSchemas.JsonValue, unknown>>>;
2366
2373
  }, z.core.$strict>;
2367
2374
  }, z.core.$strict>>;
2375
+ store: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
2376
+ shape: z.ZodLiteral<"rows">;
2377
+ rowsField: z.ZodString;
2378
+ key: z.ZodArray<z.ZodString>;
2379
+ }, z.core.$strict>, z.ZodObject<{
2380
+ shape: z.ZodLiteral<"value">;
2381
+ }, z.core.$strict>], "shape">>;
2368
2382
  }, z.core.$strict>;
2369
2383
  WhiteboardTypeStorage: z.ZodDiscriminatedUnion<[z.ZodObject<{
2370
2384
  kind: z.ZodLiteral<"json">;
@@ -2711,15 +2725,18 @@ declare const canonicalContributionSchemas: {
2711
2725
  "workspace.arrange": "workspace.arrange";
2712
2726
  }>>>;
2713
2727
  }, z.core.$strict>;
2714
- UiAppActivityRail: z.ZodObject<{
2728
+ UiRailEntryContribution: z.ZodObject<{
2729
+ id: z.ZodString;
2730
+ title: z.ZodString;
2731
+ icon: z.ZodOptional<z.ZodString>;
2732
+ page: z.ZodString;
2733
+ homeLocation: z.ZodOptional<z.ZodString>;
2734
+ shortcut: z.ZodOptional<z.ZodString>;
2735
+ order: z.ZodOptional<z.ZodNumber>;
2715
2736
  section: z.ZodOptional<z.ZodEnum<{
2716
2737
  primary: "primary";
2717
2738
  plugins: "plugins";
2718
2739
  }>>;
2719
- order: z.ZodOptional<z.ZodNumber>;
2720
- icon: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
2721
- svg: z.ZodString;
2722
- }, z.core.$strict>]>>;
2723
2740
  }, z.core.$strict>;
2724
2741
  UiAppContribution: z.ZodObject<{
2725
2742
  localId: z.ZodString;
@@ -2759,17 +2776,45 @@ declare const canonicalContributionSchemas: {
2759
2776
  "workspace.arrange": "workspace.arrange";
2760
2777
  }>>>;
2761
2778
  }, z.core.$strict>>;
2762
- activityRail: z.ZodOptional<z.ZodObject<{
2763
- section: z.ZodOptional<z.ZodEnum<{
2764
- primary: "primary";
2765
- plugins: "plugins";
2766
- }>>;
2767
- order: z.ZodOptional<z.ZodNumber>;
2768
- icon: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
2769
- svg: z.ZodString;
2770
- }, z.core.$strict>]>>;
2779
+ }, z.core.$strict> | z.ZodPreprocess<z.ZodObject<{
2780
+ localId: z.ZodString;
2781
+ displayName: z.ZodString;
2782
+ description: z.ZodOptional<z.ZodString>;
2783
+ icon: z.ZodOptional<z.ZodString>;
2784
+ runtime: z.ZodLiteral<"kay.react-app.v1">;
2785
+ contextOnly: z.ZodOptional<z.ZodLiteral<true>>;
2786
+ sdk: z.ZodObject<{
2787
+ range: z.ZodString;
2788
+ }, z.core.$strict>;
2789
+ entrypoint: z.ZodObject<{
2790
+ module: z.ZodString;
2791
+ export: z.ZodOptional<z.ZodString>;
2792
+ }, z.core.$strict>;
2793
+ styles: z.ZodOptional<z.ZodArray<z.ZodString>>;
2794
+ assets: z.ZodOptional<z.ZodArray<z.ZodString>>;
2795
+ capabilities: z.ZodOptional<z.ZodObject<{
2796
+ endpoints: z.ZodOptional<z.ZodArray<z.ZodString>>;
2797
+ host: z.ZodOptional<z.ZodArray<z.ZodEnum<{
2798
+ "sessions.create": "sessions.create";
2799
+ "memory.read": "memory.read";
2800
+ "skills.read": "skills.read";
2801
+ "automations.run": "automations.run";
2802
+ "artifacts.read": "artifacts.read";
2803
+ "navigation.open-session": "navigation.open-session";
2804
+ "artifacts.preview": "artifacts.preview";
2805
+ "cost.read": "cost.read";
2806
+ "billing.read": "billing.read";
2807
+ "context.read": "context.read";
2808
+ "usage.read": "usage.read";
2809
+ "self-improvement.read": "self-improvement.read";
2810
+ "automations.read": "automations.read";
2811
+ "shared-artifacts.read": "shared-artifacts.read";
2812
+ "workspace.place-pane": "workspace.place-pane";
2813
+ "workspace.pane-header": "workspace.pane-header";
2814
+ "workspace.arrange": "workspace.arrange";
2815
+ }>>>;
2771
2816
  }, z.core.$strict>>;
2772
- }, z.core.$strict>;
2817
+ }, z.core.$strict>, unknown>;
2773
2818
  ThemeContribution: z.ZodObject<{
2774
2819
  localId: z.ZodString;
2775
2820
  displayName: z.ZodString;
@@ -3107,6 +3152,18 @@ export declare const DeclaredSkillSourceEnvelope: z.ZodDiscriminatedUnion<[z.Zod
3107
3152
 
3108
3153
  export declare type DeclaredSkillSourceEnvelope = z.infer<typeof DeclaredSkillSourceEnvelope>;
3109
3154
 
3155
+ declare interface DeclaredUiIconPath {
3156
+ readonly label: string;
3157
+ readonly path: string;
3158
+ }
3159
+
3160
+ /**
3161
+ * Every icon file a manifest's `kay.ui` section declares. The directory scan reads them, the
3162
+ * containment check covers them, and a compiled plugin supplies their contents, so a new kind with
3163
+ * an icon adds one line here and all three follow.
3164
+ */
3165
+ export declare function declaredUiIconPaths(manifest: KayPluginManifestV1): readonly DeclaredUiIconPath[];
3166
+
3110
3167
  /** Drop repeats under {@link sameClaim}, preserving first-seen order (a sort settles the rest). */
3111
3168
  export declare function dedupeClaims(claims: readonly PluginCapabilityClaimV1[]): PluginCapabilityClaimV1[];
3112
3169
 
@@ -3943,8 +4000,17 @@ export declare const KAY_PLUGIN_PROTOCOL_VERSION: "kay.plugin.v1";
3943
4000
  * supplies what a run does: each run is handed the workflow's accounts and tokens, so the code
3944
4001
  * runs the same in the daemon and in the plugin host. Additive: `app.workflows.define` stays, and
3945
4002
  * a plugin that declares a workflow declares ^0.30.0.
4003
+ *
4004
+ * 0.31.0 lets a plugin declare its rail entries as data (#15896). `railEntries` under `kay.ui`
4005
+ * `contributes` names each entry's title, page, shortcut and icon file. It replaces `activityRail` on a
4006
+ * UI app, which is stripped from a manifest that still carries it, so that manifest loses only the
4007
+ * rail button. A plugin that declares a rail entry declares ^0.31.0.
4008
+ *
4009
+ * 0.32.0 lets an app-data source declare its window store as data (#15891). `store` under
4010
+ * `contributes.dataSources` replaces a `kay.ui` data materializer, and a change too big for a live
4011
+ * update becomes a re-read of the snapshot. A plugin that declares a store declares ^0.32.0.
3946
4012
  */
3947
- export declare const KAY_PLUGIN_SDK_VERSION: "0.30.0";
4013
+ export declare const KAY_PLUGIN_SDK_VERSION: "0.32.0";
3948
4014
 
3949
4015
  export declare const KAY_PLUGIN_TARGET_NAMES: readonly ["kay.agent", "kay.app", "kay.ui"];
3950
4016
 
@@ -4443,6 +4509,13 @@ export declare const KayAppTargetManifest: z.ZodObject<{
4443
4509
  schema: z.ZodRecord<z.ZodString, z.ZodType<authoringCommonSchemas.JsonValue, unknown, z.core.$ZodTypeInternals<authoringCommonSchemas.JsonValue, unknown>>>;
4444
4510
  }, z.core.$strict>;
4445
4511
  }, z.core.$strict>>;
4512
+ store: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
4513
+ shape: z.ZodLiteral<"rows">;
4514
+ rowsField: z.ZodString;
4515
+ key: z.ZodArray<z.ZodString>;
4516
+ }, z.core.$strict>, z.ZodObject<{
4517
+ shape: z.ZodLiteral<"value">;
4518
+ }, z.core.$strict>], "shape">>;
4446
4519
  }, z.core.$strict>>>;
4447
4520
  whiteboardTypes: z.ZodOptional<z.ZodArray<z.ZodObject<{
4448
4521
  localId: z.ZodString;
@@ -5207,6 +5280,13 @@ export declare const KayPluginManifestV1: z.ZodObject<{
5207
5280
  schema: z.ZodRecord<z.ZodString, z.ZodType<authoringCommonSchemas.JsonValue, unknown, z.core.$ZodTypeInternals<authoringCommonSchemas.JsonValue, unknown>>>;
5208
5281
  }, z.core.$strict>;
5209
5282
  }, z.core.$strict>>;
5283
+ store: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
5284
+ shape: z.ZodLiteral<"rows">;
5285
+ rowsField: z.ZodString;
5286
+ key: z.ZodArray<z.ZodString>;
5287
+ }, z.core.$strict>, z.ZodObject<{
5288
+ shape: z.ZodLiteral<"value">;
5289
+ }, z.core.$strict>], "shape">>;
5210
5290
  }, z.core.$strict>>>;
5211
5291
  whiteboardTypes: z.ZodOptional<z.ZodArray<z.ZodObject<{
5212
5292
  localId: z.ZodString;
@@ -5492,16 +5572,57 @@ export declare const KayPluginManifestV1: z.ZodObject<{
5492
5572
  "workspace.arrange": "workspace.arrange";
5493
5573
  }>>>;
5494
5574
  }, z.core.$strict>>;
5495
- activityRail: z.ZodOptional<z.ZodObject<{
5496
- section: z.ZodOptional<z.ZodEnum<{
5497
- primary: "primary";
5498
- plugins: "plugins";
5499
- }>>;
5500
- order: z.ZodOptional<z.ZodNumber>;
5501
- icon: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
5502
- svg: z.ZodString;
5503
- }, z.core.$strict>]>>;
5575
+ }, z.core.$strict> | z.ZodPreprocess<z.ZodObject<{
5576
+ localId: z.ZodString;
5577
+ displayName: z.ZodString;
5578
+ description: z.ZodOptional<z.ZodString>;
5579
+ icon: z.ZodOptional<z.ZodString>;
5580
+ runtime: z.ZodLiteral<"kay.react-app.v1">;
5581
+ contextOnly: z.ZodOptional<z.ZodLiteral<true>>;
5582
+ sdk: z.ZodObject<{
5583
+ range: z.ZodString;
5584
+ }, z.core.$strict>;
5585
+ entrypoint: z.ZodObject<{
5586
+ module: z.ZodString;
5587
+ export: z.ZodOptional<z.ZodString>;
5588
+ }, z.core.$strict>;
5589
+ styles: z.ZodOptional<z.ZodArray<z.ZodString>>;
5590
+ assets: z.ZodOptional<z.ZodArray<z.ZodString>>;
5591
+ capabilities: z.ZodOptional<z.ZodObject<{
5592
+ endpoints: z.ZodOptional<z.ZodArray<z.ZodString>>;
5593
+ host: z.ZodOptional<z.ZodArray<z.ZodEnum<{
5594
+ "sessions.create": "sessions.create";
5595
+ "memory.read": "memory.read";
5596
+ "skills.read": "skills.read";
5597
+ "automations.run": "automations.run";
5598
+ "artifacts.read": "artifacts.read";
5599
+ "navigation.open-session": "navigation.open-session";
5600
+ "artifacts.preview": "artifacts.preview";
5601
+ "cost.read": "cost.read";
5602
+ "billing.read": "billing.read";
5603
+ "context.read": "context.read";
5604
+ "usage.read": "usage.read";
5605
+ "self-improvement.read": "self-improvement.read";
5606
+ "automations.read": "automations.read";
5607
+ "shared-artifacts.read": "shared-artifacts.read";
5608
+ "workspace.place-pane": "workspace.place-pane";
5609
+ "workspace.pane-header": "workspace.pane-header";
5610
+ "workspace.arrange": "workspace.arrange";
5611
+ }>>>;
5504
5612
  }, z.core.$strict>>;
5613
+ }, z.core.$strict>, unknown>>>;
5614
+ railEntries: z.ZodOptional<z.ZodArray<z.ZodObject<{
5615
+ id: z.ZodString;
5616
+ title: z.ZodString;
5617
+ icon: z.ZodOptional<z.ZodString>;
5618
+ page: z.ZodString;
5619
+ homeLocation: z.ZodOptional<z.ZodString>;
5620
+ shortcut: z.ZodOptional<z.ZodString>;
5621
+ order: z.ZodOptional<z.ZodNumber>;
5622
+ section: z.ZodOptional<z.ZodEnum<{
5623
+ primary: "primary";
5624
+ plugins: "plugins";
5625
+ }>>;
5505
5626
  }, z.core.$strict>>>;
5506
5627
  themes: z.ZodOptional<z.ZodArray<z.ZodObject<{
5507
5628
  localId: z.ZodString;
@@ -6545,16 +6666,57 @@ export declare const KayUiTargetManifest: z.ZodObject<{
6545
6666
  "workspace.arrange": "workspace.arrange";
6546
6667
  }>>>;
6547
6668
  }, z.core.$strict>>;
6548
- activityRail: z.ZodOptional<z.ZodObject<{
6549
- section: z.ZodOptional<z.ZodEnum<{
6550
- primary: "primary";
6551
- plugins: "plugins";
6552
- }>>;
6553
- order: z.ZodOptional<z.ZodNumber>;
6554
- icon: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
6555
- svg: z.ZodString;
6556
- }, z.core.$strict>]>>;
6669
+ }, z.core.$strict> | z.ZodPreprocess<z.ZodObject<{
6670
+ localId: z.ZodString;
6671
+ displayName: z.ZodString;
6672
+ description: z.ZodOptional<z.ZodString>;
6673
+ icon: z.ZodOptional<z.ZodString>;
6674
+ runtime: z.ZodLiteral<"kay.react-app.v1">;
6675
+ contextOnly: z.ZodOptional<z.ZodLiteral<true>>;
6676
+ sdk: z.ZodObject<{
6677
+ range: z.ZodString;
6678
+ }, z.core.$strict>;
6679
+ entrypoint: z.ZodObject<{
6680
+ module: z.ZodString;
6681
+ export: z.ZodOptional<z.ZodString>;
6682
+ }, z.core.$strict>;
6683
+ styles: z.ZodOptional<z.ZodArray<z.ZodString>>;
6684
+ assets: z.ZodOptional<z.ZodArray<z.ZodString>>;
6685
+ capabilities: z.ZodOptional<z.ZodObject<{
6686
+ endpoints: z.ZodOptional<z.ZodArray<z.ZodString>>;
6687
+ host: z.ZodOptional<z.ZodArray<z.ZodEnum<{
6688
+ "sessions.create": "sessions.create";
6689
+ "memory.read": "memory.read";
6690
+ "skills.read": "skills.read";
6691
+ "automations.run": "automations.run";
6692
+ "artifacts.read": "artifacts.read";
6693
+ "navigation.open-session": "navigation.open-session";
6694
+ "artifacts.preview": "artifacts.preview";
6695
+ "cost.read": "cost.read";
6696
+ "billing.read": "billing.read";
6697
+ "context.read": "context.read";
6698
+ "usage.read": "usage.read";
6699
+ "self-improvement.read": "self-improvement.read";
6700
+ "automations.read": "automations.read";
6701
+ "shared-artifacts.read": "shared-artifacts.read";
6702
+ "workspace.place-pane": "workspace.place-pane";
6703
+ "workspace.pane-header": "workspace.pane-header";
6704
+ "workspace.arrange": "workspace.arrange";
6705
+ }>>>;
6557
6706
  }, z.core.$strict>>;
6707
+ }, z.core.$strict>, unknown>>>;
6708
+ railEntries: z.ZodOptional<z.ZodArray<z.ZodObject<{
6709
+ id: z.ZodString;
6710
+ title: z.ZodString;
6711
+ icon: z.ZodOptional<z.ZodString>;
6712
+ page: z.ZodString;
6713
+ homeLocation: z.ZodOptional<z.ZodString>;
6714
+ shortcut: z.ZodOptional<z.ZodString>;
6715
+ order: z.ZodOptional<z.ZodNumber>;
6716
+ section: z.ZodOptional<z.ZodEnum<{
6717
+ primary: "primary";
6718
+ plugins: "plugins";
6719
+ }>>;
6558
6720
  }, z.core.$strict>>>;
6559
6721
  themes: z.ZodOptional<z.ZodArray<z.ZodObject<{
6560
6722
  localId: z.ZodString;
@@ -10509,6 +10671,13 @@ export declare const ResolvedKayAppDataSource: z.ZodObject<{
10509
10671
  schema: z.ZodRecord<z.ZodString, z.ZodType<authoringCommonSchemas.JsonValue, unknown, z.core.$ZodTypeInternals<authoringCommonSchemas.JsonValue, unknown>>>;
10510
10672
  }, z.core.$strict>;
10511
10673
  }, z.core.$strict>>;
10674
+ store: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
10675
+ shape: z.ZodLiteral<"rows">;
10676
+ rowsField: z.ZodString;
10677
+ key: z.ZodArray<z.ZodString>;
10678
+ }, z.core.$strict>, z.ZodObject<{
10679
+ shape: z.ZodLiteral<"value">;
10680
+ }, z.core.$strict>], "shape">>;
10512
10681
  }, z.core.$strict>;
10513
10682
 
10514
10683
  export declare type ResolvedKayAppDataSource = z.infer<typeof ResolvedKayAppDataSource>;
@@ -10576,16 +10745,6 @@ export declare const ResolvedKayUiApp: z.ZodObject<{
10576
10745
  globalId: z.ZodString;
10577
10746
  displayName: z.ZodString;
10578
10747
  contextOnly: z.ZodOptional<z.ZodLiteral<true>>;
10579
- activityRail: z.ZodOptional<z.ZodObject<{
10580
- section: z.ZodOptional<z.ZodEnum<{
10581
- primary: "primary";
10582
- plugins: "plugins";
10583
- }>>;
10584
- order: z.ZodOptional<z.ZodNumber>;
10585
- icon: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
10586
- svg: z.ZodString;
10587
- }, z.core.$strict>]>>;
10588
- }, z.core.$strict>>;
10589
10748
  description: z.ZodOptional<z.ZodString>;
10590
10749
  icon: z.ZodOptional<z.ZodString>;
10591
10750
  runtime: z.ZodLiteral<"kay.react-app.v1">;
@@ -11791,6 +11950,13 @@ export declare const ResolvedPluginContractV1: z.ZodObject<{
11791
11950
  schema: z.ZodRecord<z.ZodString, z.ZodType<authoringCommonSchemas.JsonValue, unknown, z.core.$ZodTypeInternals<authoringCommonSchemas.JsonValue, unknown>>>;
11792
11951
  }, z.core.$strict>;
11793
11952
  }, z.core.$strict>>;
11953
+ store: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
11954
+ shape: z.ZodLiteral<"rows">;
11955
+ rowsField: z.ZodString;
11956
+ key: z.ZodArray<z.ZodString>;
11957
+ }, z.core.$strict>, z.ZodObject<{
11958
+ shape: z.ZodLiteral<"value">;
11959
+ }, z.core.$strict>], "shape">>;
11794
11960
  }, z.core.$strict>>>;
11795
11961
  kayAppWhiteboardTypes: z.ZodOptional<z.ZodArray<z.ZodObject<{
11796
11962
  localId: z.ZodString;
@@ -11873,16 +12039,6 @@ export declare const ResolvedPluginContractV1: z.ZodObject<{
11873
12039
  globalId: z.ZodString;
11874
12040
  displayName: z.ZodString;
11875
12041
  contextOnly: z.ZodOptional<z.ZodLiteral<true>>;
11876
- activityRail: z.ZodOptional<z.ZodObject<{
11877
- section: z.ZodOptional<z.ZodEnum<{
11878
- primary: "primary";
11879
- plugins: "plugins";
11880
- }>>;
11881
- order: z.ZodOptional<z.ZodNumber>;
11882
- icon: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
11883
- svg: z.ZodString;
11884
- }, z.core.$strict>]>>;
11885
- }, z.core.$strict>>;
11886
12042
  description: z.ZodOptional<z.ZodString>;
11887
12043
  icon: z.ZodOptional<z.ZodString>;
11888
12044
  runtime: z.ZodLiteral<"kay.react-app.v1">;
@@ -13484,19 +13640,6 @@ export declare interface TurnPacketMessage {
13484
13640
  readonly origin: TurnMessageOrigin;
13485
13641
  }
13486
13642
 
13487
- export declare const UiAppActivityRail: z.ZodObject<{
13488
- section: z.ZodOptional<z.ZodEnum<{
13489
- primary: "primary";
13490
- plugins: "plugins";
13491
- }>>;
13492
- order: z.ZodOptional<z.ZodNumber>;
13493
- icon: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
13494
- svg: z.ZodString;
13495
- }, z.core.$strict>]>>;
13496
- }, z.core.$strict>;
13497
-
13498
- export declare type UiAppActivityRail = z.infer<typeof UiAppActivityRail>;
13499
-
13500
13643
  export declare const UiAppCapabilities: z.ZodObject<{
13501
13644
  endpoints: z.ZodOptional<z.ZodArray<z.ZodString>>;
13502
13645
  host: z.ZodOptional<z.ZodArray<z.ZodEnum<{
@@ -13560,17 +13703,45 @@ export declare const UiAppContribution: z.ZodObject<{
13560
13703
  "workspace.arrange": "workspace.arrange";
13561
13704
  }>>>;
13562
13705
  }, z.core.$strict>>;
13563
- activityRail: z.ZodOptional<z.ZodObject<{
13564
- section: z.ZodOptional<z.ZodEnum<{
13565
- primary: "primary";
13566
- plugins: "plugins";
13567
- }>>;
13568
- order: z.ZodOptional<z.ZodNumber>;
13569
- icon: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
13570
- svg: z.ZodString;
13571
- }, z.core.$strict>]>>;
13706
+ }, z.core.$strict> | z.ZodPreprocess<z.ZodObject<{
13707
+ localId: z.ZodString;
13708
+ displayName: z.ZodString;
13709
+ description: z.ZodOptional<z.ZodString>;
13710
+ icon: z.ZodOptional<z.ZodString>;
13711
+ runtime: z.ZodLiteral<"kay.react-app.v1">;
13712
+ contextOnly: z.ZodOptional<z.ZodLiteral<true>>;
13713
+ sdk: z.ZodObject<{
13714
+ range: z.ZodString;
13715
+ }, z.core.$strict>;
13716
+ entrypoint: z.ZodObject<{
13717
+ module: z.ZodString;
13718
+ export: z.ZodOptional<z.ZodString>;
13719
+ }, z.core.$strict>;
13720
+ styles: z.ZodOptional<z.ZodArray<z.ZodString>>;
13721
+ assets: z.ZodOptional<z.ZodArray<z.ZodString>>;
13722
+ capabilities: z.ZodOptional<z.ZodObject<{
13723
+ endpoints: z.ZodOptional<z.ZodArray<z.ZodString>>;
13724
+ host: z.ZodOptional<z.ZodArray<z.ZodEnum<{
13725
+ "sessions.create": "sessions.create";
13726
+ "memory.read": "memory.read";
13727
+ "skills.read": "skills.read";
13728
+ "automations.run": "automations.run";
13729
+ "artifacts.read": "artifacts.read";
13730
+ "navigation.open-session": "navigation.open-session";
13731
+ "artifacts.preview": "artifacts.preview";
13732
+ "cost.read": "cost.read";
13733
+ "billing.read": "billing.read";
13734
+ "context.read": "context.read";
13735
+ "usage.read": "usage.read";
13736
+ "self-improvement.read": "self-improvement.read";
13737
+ "automations.read": "automations.read";
13738
+ "shared-artifacts.read": "shared-artifacts.read";
13739
+ "workspace.place-pane": "workspace.place-pane";
13740
+ "workspace.pane-header": "workspace.pane-header";
13741
+ "workspace.arrange": "workspace.arrange";
13742
+ }>>>;
13572
13743
  }, z.core.$strict>>;
13573
- }, z.core.$strict>;
13744
+ }, z.core.$strict>, unknown>;
13574
13745
 
13575
13746
  export declare type UiAppContribution = z.infer<typeof UiAppContribution>;
13576
13747
 
@@ -13590,6 +13761,22 @@ export declare const UiEventSubscriptionContribution: z.ZodObject<{
13590
13761
 
13591
13762
  export declare type UiEventSubscriptionContribution = z.infer<typeof UiEventSubscriptionContribution>;
13592
13763
 
13764
+ export declare const UiRailEntryContribution: z.ZodObject<{
13765
+ id: z.ZodString;
13766
+ title: z.ZodString;
13767
+ icon: z.ZodOptional<z.ZodString>;
13768
+ page: z.ZodString;
13769
+ homeLocation: z.ZodOptional<z.ZodString>;
13770
+ shortcut: z.ZodOptional<z.ZodString>;
13771
+ order: z.ZodOptional<z.ZodNumber>;
13772
+ section: z.ZodOptional<z.ZodEnum<{
13773
+ primary: "primary";
13774
+ plugins: "plugins";
13775
+ }>>;
13776
+ }, z.core.$strict>;
13777
+
13778
+ export declare type UiRailEntryContribution = z.infer<typeof UiRailEntryContribution>;
13779
+
13593
13780
  export declare const UiSlotContribution: z.ZodObject<{
13594
13781
  localId: z.ZodString;
13595
13782
  slot: z.ZodString;
package/dist/index.js CHANGED
@@ -10,6 +10,12 @@ var KAY_APP_DATA_CHANGE_MAX_BYTES = 256 * 1024;
10
10
  var KAY_APP_DATA_READ_REQUEST_MAX_BYTES = 64 * 1024;
11
11
  var KAY_APP_DATA_READ_RESULT_MAX_BYTES = 16 * 1024 * 1024;
12
12
 
13
+ // packages/plugin-protocol/dist/ui-icon-paths.js
14
+ function declaredUiIconPaths(manifest) {
15
+ const contributes = manifest.targets?.kay?.ui?.contributes;
16
+ return (contributes?.railEntries ?? []).flatMap((entry) => entry.icon === void 0 ? [] : [{ label: `kay.ui rail entry '${entry.id}' icon`, path: entry.icon }]);
17
+ }
18
+
13
19
  // packages/plugin-protocol/dist/approval-types.js
14
20
  import { z } from "zod";
15
21
  var APPROVAL_KINDS = [
@@ -224,12 +230,14 @@ var JsonSchema = z4.record(z4.string(), JsonValue);
224
230
  var KAY_PLUGIN_MANIFEST_SIZE_CAP_BYTES = 1024 * 1024;
225
231
  var KAY_PLUGIN_PROTOCOL_VERSION = "kay.plugin.v1";
226
232
  var KAY_PLUGIN_PROTOCOL_PACKAGE_NAME = "@bonsai/plugin-protocol";
227
- var KAY_PLUGIN_SDK_VERSION = "0.30.0";
233
+ var KAY_PLUGIN_SDK_VERSION = "0.32.0";
228
234
  var KAY_PLUGIN_COMPATIBLE_SDK_VERSIONS = [
229
235
  "0.26.3",
230
236
  "0.27.1",
231
237
  "0.28.0",
232
- "0.29.0"
238
+ "0.29.0",
239
+ "0.30.0",
240
+ "0.31.0"
233
241
  ];
234
242
  var KAY_PLUGIN_TARGET_NAMES = [
235
243
  "kay.agent",
@@ -2718,11 +2726,11 @@ __export(contributions_exports, {
2718
2726
  ThemeContribution: () => ThemeContribution,
2719
2727
  ToolContribution: () => ToolContribution,
2720
2728
  ToolPermission: () => ToolPermission,
2721
- UiAppActivityRail: () => UiAppActivityRail,
2722
2729
  UiAppCapabilities: () => UiAppCapabilities,
2723
2730
  UiAppContribution: () => UiAppContribution,
2724
2731
  UiCommandContribution: () => UiCommandContribution,
2725
2732
  UiEventSubscriptionContribution: () => UiEventSubscriptionContribution,
2733
+ UiRailEntryContribution: () => UiRailEntryContribution,
2726
2734
  UiSlotContribution: () => UiSlotContribution,
2727
2735
  UriModuleContribution: () => UriModuleContribution,
2728
2736
  UriModuleFacts: () => UriModuleFacts,
@@ -3088,6 +3096,14 @@ function createContributionsSchemas(canonical) {
3088
3096
  knownResources: true,
3089
3097
  describesOperations: true
3090
3098
  });
3099
+ const AppDataSourceStore = z12.discriminatedUnion("shape", [
3100
+ z12.strictObject({
3101
+ shape: z12.literal("rows"),
3102
+ rowsField: NonEmptyString3,
3103
+ key: z12.array(NonEmptyString3).min(1)
3104
+ }),
3105
+ z12.strictObject({ shape: z12.literal("value") })
3106
+ ]);
3091
3107
  const AppDataSourceContribution2 = z12.strictObject({
3092
3108
  localId: LocalContributionId2,
3093
3109
  scope: z12.enum(["runtime", "account", "session"]),
@@ -3108,7 +3124,8 @@ function createContributionsSchemas(canonical) {
3108
3124
  })
3109
3125
  ]).optional()
3110
3126
  }),
3111
- read: AppDataSourceRead.optional()
3127
+ read: AppDataSourceRead.optional(),
3128
+ store: AppDataSourceStore.optional()
3112
3129
  }).superRefine((source, ctx) => {
3113
3130
  if (source.read !== void 0 && source.scope !== "session") {
3114
3131
  ctx.addIssue({
@@ -3117,6 +3134,23 @@ function createContributionsSchemas(canonical) {
3117
3134
  message: "App-data read operations require session scope."
3118
3135
  });
3119
3136
  }
3137
+ if (source.store === void 0)
3138
+ return;
3139
+ if (source.scope === "session") {
3140
+ ctx.addIssue({
3141
+ code: "custom",
3142
+ path: ["store"],
3143
+ message: "A declared app-data store requires runtime or account scope."
3144
+ });
3145
+ }
3146
+ const replaces = source.change.semantics?.kind === "snapshot-replacement";
3147
+ if (replaces !== (source.store.shape === "value")) {
3148
+ ctx.addIssue({
3149
+ code: "custom",
3150
+ path: ["store"],
3151
+ message: "A value store requires snapshot-replacement changes, and a rows store forbids them."
3152
+ });
3153
+ }
3120
3154
  });
3121
3155
  const WhiteboardTypeStorage2 = z12.discriminatedUnion("kind", [
3122
3156
  z12.strictObject({ kind: z12.literal("json") }),
@@ -3506,12 +3540,17 @@ function createContributionsSchemas(canonical) {
3506
3540
  }
3507
3541
  }
3508
3542
  });
3509
- const UiAppActivityRail2 = z12.strictObject({
3510
- section: z12.enum(["primary", "plugins"]).optional(),
3543
+ const UiRailEntryContribution2 = z12.strictObject({
3544
+ id: LocalContributionId2,
3545
+ title: NonEmptyString3,
3546
+ icon: PackageAssetPath2.optional(),
3547
+ page: NonEmptyString3,
3548
+ homeLocation: NonEmptyString3.optional(),
3549
+ shortcut: NonEmptyString3.optional(),
3511
3550
  order: z12.number().finite().optional(),
3512
- icon: z12.union([NonEmptyString3, z12.strictObject({ svg: NonEmptyString3 })]).optional()
3551
+ section: z12.enum(["primary", "plugins"]).optional()
3513
3552
  });
3514
- const UiAppContribution2 = z12.strictObject({
3553
+ const UiAppFields = z12.strictObject({
3515
3554
  localId: LocalContributionId2,
3516
3555
  displayName: NonEmptyString3,
3517
3556
  description: NonEmptyString3.optional(),
@@ -3523,9 +3562,17 @@ function createContributionsSchemas(canonical) {
3523
3562
  entrypoint: TargetEntrypoint2,
3524
3563
  styles: z12.array(PackageAssetPath2).optional(),
3525
3564
  assets: z12.array(PackageAssetPath2).optional(),
3526
- capabilities: UiAppCapabilities2.optional(),
3527
- activityRail: UiAppActivityRail2.optional()
3565
+ capabilities: UiAppCapabilities2.optional()
3528
3566
  });
3567
+ function stripRetiredUiAppFields(value) {
3568
+ if (typeof value !== "object" || value === null || Array.isArray(value)) {
3569
+ return value;
3570
+ }
3571
+ const remaining = { ...value };
3572
+ delete remaining["activityRail"];
3573
+ return remaining;
3574
+ }
3575
+ const UiAppContribution2 = canonical ? UiAppFields : z12.preprocess(stripRetiredUiAppFields, UiAppFields);
3529
3576
  const ThemeContribution2 = z12.strictObject({
3530
3577
  localId: LocalContributionId2,
3531
3578
  displayName: NonEmptyString3,
@@ -3643,7 +3690,7 @@ function createContributionsSchemas(canonical) {
3643
3690
  RichViewContribution: RichViewContribution2,
3644
3691
  KayUiAppHostCapability: KayUiAppHostCapability2,
3645
3692
  UiAppCapabilities: UiAppCapabilities2,
3646
- UiAppActivityRail: UiAppActivityRail2,
3693
+ UiRailEntryContribution: UiRailEntryContribution2,
3647
3694
  UiAppContribution: UiAppContribution2,
3648
3695
  ThemeContribution: ThemeContribution2,
3649
3696
  CommandHandler: CommandHandler2,
@@ -3651,7 +3698,7 @@ function createContributionsSchemas(canonical) {
3651
3698
  PluginContributionKind: PluginContributionKind2
3652
3699
  };
3653
3700
  }
3654
- 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, ReferencePresentationContribution, RichViewContribution, KayUiAppHostCapability, UiAppCapabilities, UiAppActivityRail, UiAppContribution, ThemeContribution, CommandHandler, CommandContribution, PluginContributionKind } = createContributionsSchemas(false);
3701
+ 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, ReferencePresentationContribution, RichViewContribution, KayUiAppHostCapability, UiAppCapabilities, UiRailEntryContribution, UiAppContribution, ThemeContribution, CommandHandler, CommandContribution, PluginContributionKind } = createContributionsSchemas(false);
3655
3702
  var canonicalContributionSchemas = createContributionsSchemas(true);
3656
3703
 
3657
3704
  // packages/plugin-protocol/dist/icon-shape.js
@@ -3725,7 +3772,7 @@ var KAY_UI_NATIVE_EVENT_SUBSCRIPTIONS = [
3725
3772
  var KAY_UI_NATIVE_EVENT_ALLOWLIST = new Set(KAY_UI_NATIVE_EVENT_SUBSCRIPTIONS);
3726
3773
  var RETIRED_COMPATIBILITY_KEYS = ["policy"];
3727
3774
  function createManifestSchemas(canonical) {
3728
- 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, UiEventSubscriptionContribution: UiEventSubscriptionContribution2, UiSlotContribution: UiSlotContribution2, UriModuleContribution: UriModuleContribution2, WhiteboardTypeContribution: WhiteboardTypeContribution2 } = canonical ? canonicalContributionSchemas : contributions_exports;
3775
+ 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, UiEventSubscriptionContribution: UiEventSubscriptionContribution2, UiSlotContribution: UiSlotContribution2, UriModuleContribution: UriModuleContribution2, WhiteboardTypeContribution: WhiteboardTypeContribution2 } = canonical ? canonicalContributionSchemas : contributions_exports;
3729
3776
  const { HttpsUrl: HttpsUrl2, LocalContributionId: LocalContributionId2, NonEmptyString: NonEmptyString3, PackageAssetPath: PackageAssetPath2, PluginId: PluginId2, PluginNamespace: PluginNamespace2, RegistrableDomain: RegistrableDomain2, SignedInStatusCode: SignedInStatusCode2, TargetEntrypoint: TargetEntrypoint2 } = canonical ? canonicalCommonSchemas : common_exports;
3730
3777
  const { PluginPermissionManifest: PluginPermissionManifest2 } = canonical ? canonicalPermissionSchemas : permissions_exports;
3731
3778
  const KayAgentTargetManifest2 = z13.strictObject({
@@ -3847,6 +3894,7 @@ function createManifestSchemas(canonical) {
3847
3894
  referencePresentations: z13.array(ReferencePresentationContribution2).optional(),
3848
3895
  views: z13.array(RichViewContribution2).optional(),
3849
3896
  apps: z13.array(UiAppContribution2).optional(),
3897
+ railEntries: z13.array(UiRailEntryContribution2).optional(),
3850
3898
  themes: z13.array(ThemeContribution2).optional(),
3851
3899
  eventSubscriptions: z13.array(UiEventSubscriptionContribution2).optional(),
3852
3900
  dataMaterializers: z13.array(AppDataMaterializerContribution2).optional()
@@ -4270,6 +4318,7 @@ function createManifestSchemas(canonical) {
4270
4318
  }
4271
4319
  reportDuplicateLocalIds(ctx, ["targets", "kay", "app", "contributes", "notificationRules"], manifest.targets?.kay?.app?.contributes?.notificationRules, "notification rule");
4272
4320
  const declaredAppDataSources = new Set(manifest.targets?.kay?.app?.contributes?.dataSources?.map((source) => source.localId) ?? []);
4321
+ const declaredAppDataStores = new Set(manifest.targets?.kay?.app?.contributes?.dataSources?.filter((source) => source.store !== void 0).map((source) => source.localId) ?? []);
4273
4322
  const materializedAppDataSources = /* @__PURE__ */ new Set();
4274
4323
  for (const [index, materializer] of (manifest.targets?.kay?.ui?.contributes?.dataMaterializers ?? []).entries()) {
4275
4324
  if (!declaredAppDataSources.has(materializer.source)) {
@@ -4302,15 +4351,30 @@ function createManifestSchemas(canonical) {
4302
4351
  message: `app-data source ${materializer.source} has more than one materializer`
4303
4352
  });
4304
4353
  }
4354
+ if (declaredAppDataStores.has(materializer.source)) {
4355
+ ctx.addIssue({
4356
+ code: "custom",
4357
+ path: [
4358
+ "targets",
4359
+ "kay",
4360
+ "ui",
4361
+ "contributes",
4362
+ "dataMaterializers",
4363
+ index,
4364
+ "source"
4365
+ ],
4366
+ message: `app-data source ${materializer.source} declares a store and a materializer`
4367
+ });
4368
+ }
4305
4369
  materializedAppDataSources.add(materializer.source);
4306
4370
  }
4307
4371
  for (const source of declaredAppDataSources) {
4308
- if (materializedAppDataSources.has(source))
4372
+ if (materializedAppDataSources.has(source) || declaredAppDataStores.has(source))
4309
4373
  continue;
4310
4374
  ctx.addIssue({
4311
4375
  code: "custom",
4312
4376
  path: ["targets", "kay", "app", "contributes", "dataSources"],
4313
- message: `app-data source ${source} has no same-plugin UI materializer`
4377
+ message: `app-data source ${source} has no declared store and no same-plugin UI materializer`
4314
4378
  });
4315
4379
  }
4316
4380
  reportDuplicateLocalIds(ctx, ["targets", "kay", "app", "contributes", "whiteboardTypes"], manifest.targets?.kay?.app?.contributes?.whiteboardTypes, "Whiteboard type");
@@ -5052,7 +5116,7 @@ function boundPluginDiagnosticMessage(message) {
5052
5116
  import { z as z14 } from "zod";
5053
5117
  function createResolvedContractSchemas(canonical) {
5054
5118
  const { PluginEventLocalId: PluginEventLocalId2 } = canonical ? canonicalPluginEventSchemas : plugin_events_exports;
5055
- const { ApprovalTypeContribution: ApprovalTypeContribution2, KayUiAppHostCapability: KayUiAppHostCapability2, UiAppActivityRail: UiAppActivityRail2, McpServerAuthMode: McpServerAuthMode2, McpServerUrl: McpServerUrl2, PluginContributionKind: PluginContributionKindSchema, ReferenceOpenBehavior: ReferenceOpenBehavior2, ReferencePresentationUriPattern: ReferencePresentationUriPattern2, ReferencePresentationUrlClaim: ReferencePresentationUrlClaim2, ReferencePresentationVariants: ReferencePresentationVariants2, UriModuleFacts: UriModuleFacts2, WhiteboardTypeStorage: WhiteboardTypeStorage2 } = canonical ? canonicalContributionSchemas : contributions_exports;
5119
+ const { ApprovalTypeContribution: ApprovalTypeContribution2, KayUiAppHostCapability: KayUiAppHostCapability2, McpServerAuthMode: McpServerAuthMode2, McpServerUrl: McpServerUrl2, PluginContributionKind: PluginContributionKindSchema, ReferenceOpenBehavior: ReferenceOpenBehavior2, ReferencePresentationUriPattern: ReferencePresentationUriPattern2, ReferencePresentationUrlClaim: ReferencePresentationUrlClaim2, ReferencePresentationVariants: ReferencePresentationVariants2, UriModuleFacts: UriModuleFacts2, WhiteboardTypeStorage: WhiteboardTypeStorage2 } = canonical ? canonicalContributionSchemas : contributions_exports;
5056
5120
  const { FileExtensionToken: FileExtensionToken2, GitBasicAuthUser: GitBasicAuthUser2, GitHostName: GitHostName2, GlobalContributionId: GlobalContributionId2, HttpsUrl: HttpsUrl2, LocalContributionId: LocalContributionId2, MimeTypeString: MimeTypeString2, NonEmptyString: NonEmptyString3, PackageAssetPath: PackageAssetPath2, PluginId: PluginId2, PluginNamespace: PluginNamespace2, PluginToolName: PluginToolName2, RegistrableDomain: RegistrableDomain2, SignedInStatusCode: SignedInStatusCode2, TargetEntrypoint: TargetEntrypoint2, UriScheme: UriScheme2 } = canonical ? canonicalCommonSchemas : common_exports;
5057
5121
  const { PluginExternalCliConnect: PluginExternalCliConnect2, PluginOAuthClientSupplier: PluginOAuthClientSupplier2 } = canonical ? canonicalManifestSchemas : manifest_exports;
5058
5122
  const { ResolvedPluginGrants: ResolvedPluginGrants2 } = canonical ? canonicalPermissionSchemas : permissions_exports;
@@ -5107,7 +5171,15 @@ function createResolvedContractSchemas(canonical) {
5107
5171
  })
5108
5172
  ]).optional()
5109
5173
  }),
5110
- read: AppDataSourceRead.optional()
5174
+ read: AppDataSourceRead.optional(),
5175
+ store: z14.discriminatedUnion("shape", [
5176
+ z14.strictObject({
5177
+ shape: z14.literal("rows"),
5178
+ rowsField: z14.string().min(1),
5179
+ key: z14.array(z14.string().min(1)).min(1)
5180
+ }),
5181
+ z14.strictObject({ shape: z14.literal("value") })
5182
+ ]).optional()
5111
5183
  }).superRefine((source, ctx) => {
5112
5184
  if (source.read !== void 0 && source.scope !== "session") {
5113
5185
  ctx.addIssue({
@@ -5337,7 +5409,6 @@ function createResolvedContractSchemas(canonical) {
5337
5409
  globalId: GlobalContributionId2,
5338
5410
  displayName: NonEmptyString3,
5339
5411
  contextOnly: z14.literal(true).optional(),
5340
- activityRail: UiAppActivityRail2.optional(),
5341
5412
  description: NonEmptyString3.optional(),
5342
5413
  icon: PackageAssetPath2.optional(),
5343
5414
  runtime: z14.literal("kay.react-app.v1"),
@@ -5749,7 +5820,8 @@ function resolveKayPluginContractV1(manifest) {
5749
5820
  scope: source.scope,
5750
5821
  snapshot: source.snapshot,
5751
5822
  change: source.change,
5752
- ...source.read === void 0 ? {} : { read: source.read }
5823
+ ...source.read === void 0 ? {} : { read: source.read },
5824
+ ...source.store === void 0 ? {} : { store: source.store }
5753
5825
  }));
5754
5826
  const kayAppApprovalTypes = manifest.targets?.kay?.app?.contributes?.approvalTypes?.map(({ uriModule, ...type }) => {
5755
5827
  const authService = manifest.targets?.kay?.agent?.contributes?.uriModules?.find((candidate) => candidate.localId === uriModule)?.authService;
@@ -5852,7 +5924,6 @@ function resolveKayPluginContractV1(manifest) {
5852
5924
  localId: app.localId,
5853
5925
  globalId: resolveGlobalContributionId(namespace, app.localId),
5854
5926
  ...app.contextOnly === void 0 ? {} : { contextOnly: app.contextOnly },
5855
- ...app.activityRail === void 0 ? {} : { activityRail: app.activityRail },
5856
5927
  displayName: app.displayName,
5857
5928
  ...app.description === void 0 ? {} : { description: app.description },
5858
5929
  ...app.icon === void 0 ? {} : { icon: app.icon },
@@ -6147,6 +6218,7 @@ function referencedPaths(manifest) {
6147
6218
  refs.push({ label: `kay.ui app '${app.localId}' icon`, path: app.icon });
6148
6219
  }
6149
6220
  }
6221
+ refs.push(...declaredUiIconPaths(manifest));
6150
6222
  return refs;
6151
6223
  }
6152
6224
  function firstIssue(issues) {
@@ -6822,11 +6894,11 @@ export {
6822
6894
  ThemeContribution,
6823
6895
  ToolContribution,
6824
6896
  ToolPermission,
6825
- UiAppActivityRail,
6826
6897
  UiAppCapabilities,
6827
6898
  UiAppContribution,
6828
6899
  UiCommandContribution,
6829
6900
  UiEventSubscriptionContribution,
6901
+ UiRailEntryContribution,
6830
6902
  UiSlotContribution,
6831
6903
  UriModuleContribution,
6832
6904
  UriScheme,
@@ -6855,6 +6927,7 @@ export {
6855
6927
  compareClaims,
6856
6928
  compareSemver,
6857
6929
  configSectionKeysForManifest,
6930
+ declaredUiIconPaths,
6858
6931
  dedupeClaims,
6859
6932
  deriveDirectoryPluginToolName,
6860
6933
  finalizeArtifactProvenanceEnvelope,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yaklabs-ai/plugin-protocol",
3
- "version": "0.30.0",
3
+ "version": "0.32.0",
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",