@yaklabs-ai/plugin-protocol 0.38.0 → 0.40.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.38.0"
14
+ "@bonsai/plugin-protocol": "npm:@yaklabs-ai/plugin-protocol@^0.40.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.38.0",
4
+ "version": "0.40.0",
5
5
  "target": "npm",
6
6
  "firstPartyLicense": "MIT",
7
7
  "bundled": [],
package/dist/index.d.ts CHANGED
@@ -1684,6 +1684,7 @@ declare namespace authoringContributionSchemas {
1684
1684
  ReferencePresentationUrlClaim,
1685
1685
  ReferencePresentationTooltip,
1686
1686
  ReferencePresentationAddress,
1687
+ ReferencePresentationWords,
1687
1688
  ReferencePresentationContribution,
1688
1689
  RichViewContribution,
1689
1690
  KayUiAppHostCapability,
@@ -2681,6 +2682,37 @@ declare const canonicalContributionSchemas: {
2681
2682
  kind: z.ZodLiteral<"none">;
2682
2683
  }, z.core.$strict>>;
2683
2684
  }, z.core.$strict>;
2685
+ ReferencePresentationWords: z.ZodObject<{
2686
+ glyph: z.ZodOptional<z.ZodEnum<{
2687
+ file: "file";
2688
+ terminal: "terminal";
2689
+ note: "note";
2690
+ search: "search";
2691
+ person: "person";
2692
+ session: "session";
2693
+ browser: "browser";
2694
+ folder: "folder";
2695
+ repo: "repo";
2696
+ clock: "clock";
2697
+ robot: "robot";
2698
+ globe: "globe";
2699
+ skill: "skill";
2700
+ memory: "memory";
2701
+ plan: "plan";
2702
+ download: "download";
2703
+ attachment: "attachment";
2704
+ settings: "settings";
2705
+ catalog: "catalog";
2706
+ model: "model";
2707
+ doc: "doc";
2708
+ feedback: "feedback";
2709
+ plugin: "plugin";
2710
+ }>>;
2711
+ kind: z.ZodOptional<z.ZodString>;
2712
+ noun: z.ZodOptional<z.ZodString>;
2713
+ target: z.ZodOptional<z.ZodString>;
2714
+ kindNamesSource: z.ZodOptional<z.ZodLiteral<true>>;
2715
+ }, z.core.$strict>;
2684
2716
  ReferencePresentationContribution: z.ZodObject<{
2685
2717
  localId: z.ZodString;
2686
2718
  uriModule: z.ZodOptional<z.ZodString>;
@@ -2697,15 +2729,15 @@ declare const canonicalContributionSchemas: {
2697
2729
  kind: z.ZodLiteral<"none">;
2698
2730
  }, z.core.$strict>>;
2699
2731
  }, z.core.$strict>>>;
2700
- resourceKind: z.ZodString;
2701
- open: z.ZodDiscriminatedUnion<[z.ZodObject<{
2732
+ resourceKind: z.ZodOptional<z.ZodString>;
2733
+ open: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
2702
2734
  kind: z.ZodLiteral<"working-document">;
2703
2735
  }, z.core.$strict>, z.ZodObject<{
2704
2736
  kind: z.ZodLiteral<"browser-pane">;
2705
2737
  }, z.core.$strict>, z.ZodObject<{
2706
2738
  kind: z.ZodLiteral<"page">;
2707
2739
  pageId: z.ZodString;
2708
- }, z.core.$strict>], "kind">;
2740
+ }, z.core.$strict>], "kind">>;
2709
2741
  variants: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
2710
2742
  resourceKind: z.ZodString;
2711
2743
  presentationPluginId: z.ZodOptional<z.ZodString>;
@@ -2732,6 +2764,37 @@ declare const canonicalContributionSchemas: {
2732
2764
  search: z.ZodOptional<z.ZodString>;
2733
2765
  }, z.core.$strict>;
2734
2766
  }, z.core.$strict>>;
2767
+ words: z.ZodOptional<z.ZodObject<{
2768
+ glyph: z.ZodOptional<z.ZodEnum<{
2769
+ file: "file";
2770
+ terminal: "terminal";
2771
+ note: "note";
2772
+ search: "search";
2773
+ person: "person";
2774
+ session: "session";
2775
+ browser: "browser";
2776
+ folder: "folder";
2777
+ repo: "repo";
2778
+ clock: "clock";
2779
+ robot: "robot";
2780
+ globe: "globe";
2781
+ skill: "skill";
2782
+ memory: "memory";
2783
+ plan: "plan";
2784
+ download: "download";
2785
+ attachment: "attachment";
2786
+ settings: "settings";
2787
+ catalog: "catalog";
2788
+ model: "model";
2789
+ doc: "doc";
2790
+ feedback: "feedback";
2791
+ plugin: "plugin";
2792
+ }>>;
2793
+ kind: z.ZodOptional<z.ZodString>;
2794
+ noun: z.ZodOptional<z.ZodString>;
2795
+ target: z.ZodOptional<z.ZodString>;
2796
+ kindNamesSource: z.ZodOptional<z.ZodLiteral<true>>;
2797
+ }, z.core.$strict>>;
2735
2798
  }, z.core.$strict>;
2736
2799
  RichViewContribution: z.ZodObject<{
2737
2800
  localId: z.ZodString;
@@ -2744,11 +2807,7 @@ declare const canonicalContributionSchemas: {
2744
2807
  "artifacts.read": "artifacts.read";
2745
2808
  "artifacts.preview": "artifacts.preview";
2746
2809
  "markdown.document-view": "markdown.document-view";
2747
- "cost.read": "cost.read";
2748
2810
  "billing.read": "billing.read";
2749
- "skills.read": "skills.read";
2750
- "memory.read": "memory.read";
2751
- "self-improvement.read": "self-improvement.read";
2752
2811
  "automations.read": "automations.read";
2753
2812
  "automations.run": "automations.run";
2754
2813
  "shared-artifacts.read": "shared-artifacts.read";
@@ -2764,11 +2823,7 @@ declare const canonicalContributionSchemas: {
2764
2823
  "artifacts.read": "artifacts.read";
2765
2824
  "artifacts.preview": "artifacts.preview";
2766
2825
  "markdown.document-view": "markdown.document-view";
2767
- "cost.read": "cost.read";
2768
2826
  "billing.read": "billing.read";
2769
- "skills.read": "skills.read";
2770
- "memory.read": "memory.read";
2771
- "self-improvement.read": "self-improvement.read";
2772
2827
  "automations.read": "automations.read";
2773
2828
  "automations.run": "automations.run";
2774
2829
  "shared-artifacts.read": "shared-artifacts.read";
@@ -2776,6 +2831,7 @@ declare const canonicalContributionSchemas: {
2776
2831
  "workspace.pane-header": "workspace.pane-header";
2777
2832
  "workspace.arrange": "workspace.arrange";
2778
2833
  }>>>;
2834
+ feeds: z.ZodOptional<z.ZodArray<z.ZodString>>;
2779
2835
  }, z.core.$strict>;
2780
2836
  UiRailEntryContribution: z.ZodObject<{
2781
2837
  id: z.ZodString;
@@ -2837,11 +2893,7 @@ declare const canonicalContributionSchemas: {
2837
2893
  "artifacts.read": "artifacts.read";
2838
2894
  "artifacts.preview": "artifacts.preview";
2839
2895
  "markdown.document-view": "markdown.document-view";
2840
- "cost.read": "cost.read";
2841
2896
  "billing.read": "billing.read";
2842
- "skills.read": "skills.read";
2843
- "memory.read": "memory.read";
2844
- "self-improvement.read": "self-improvement.read";
2845
2897
  "automations.read": "automations.read";
2846
2898
  "automations.run": "automations.run";
2847
2899
  "shared-artifacts.read": "shared-artifacts.read";
@@ -2849,6 +2901,7 @@ declare const canonicalContributionSchemas: {
2849
2901
  "workspace.pane-header": "workspace.pane-header";
2850
2902
  "workspace.arrange": "workspace.arrange";
2851
2903
  }>>>;
2904
+ feeds: z.ZodOptional<z.ZodArray<z.ZodString>>;
2852
2905
  }, z.core.$strict>>;
2853
2906
  }, z.core.$strict> | z.ZodPreprocess<z.ZodObject<{
2854
2907
  localId: z.ZodString;
@@ -2874,11 +2927,7 @@ declare const canonicalContributionSchemas: {
2874
2927
  "artifacts.read": "artifacts.read";
2875
2928
  "artifacts.preview": "artifacts.preview";
2876
2929
  "markdown.document-view": "markdown.document-view";
2877
- "cost.read": "cost.read";
2878
2930
  "billing.read": "billing.read";
2879
- "skills.read": "skills.read";
2880
- "memory.read": "memory.read";
2881
- "self-improvement.read": "self-improvement.read";
2882
2931
  "automations.read": "automations.read";
2883
2932
  "automations.run": "automations.run";
2884
2933
  "shared-artifacts.read": "shared-artifacts.read";
@@ -2886,6 +2935,7 @@ declare const canonicalContributionSchemas: {
2886
2935
  "workspace.pane-header": "workspace.pane-header";
2887
2936
  "workspace.arrange": "workspace.arrange";
2888
2937
  }>>>;
2938
+ feeds: z.ZodOptional<z.ZodArray<z.ZodString>>;
2889
2939
  }, z.core.$strict>>;
2890
2940
  }, z.core.$strict>, unknown>;
2891
2941
  ThemeContribution: z.ZodObject<{
@@ -3189,8 +3239,8 @@ export declare const CorpusResourceInvocationQuery: z.ZodObject<{
3189
3239
  }, z.core.$strict>>;
3190
3240
  limit: z.ZodOptional<z.ZodNumber>;
3191
3241
  rootCreatedByKind: z.ZodOptional<z.ZodEnum<{
3192
- agent: "agent";
3193
3242
  plugin: "plugin";
3243
+ agent: "agent";
3194
3244
  human: "human";
3195
3245
  trigger: "trigger";
3196
3246
  daemon: "daemon";
@@ -4176,8 +4226,18 @@ export declare const KAY_PLUGIN_PROTOCOL_VERSION: "kay.plugin.v1";
4176
4226
  * is then the shared `PluginSignal` v1 with a `related.thread`; a workflow of a plugin the release
4177
4227
  * carries may start on every plugin's signals with `{ kind: "plugin-event", signals: true }` (the
4178
4228
  * private `workflows.signals` claim). Additive: a plugin that declares a signal declares ^0.38.0.
4229
+ *
4230
+ * 0.39.0 lets a plugin word its own addresses (#15750). A reference presentation gains `words`, and
4231
+ * `open` and `resourceKind` become an optional pair, so a module can name its rows, tallies and live
4232
+ * phrases without its addresses opening. Additive. A plugin that declares words declares ^0.39.0.
4233
+ *
4234
+ * 0.40.0 lets a `kay.ui` app list the feeds it reads (#15909). `capabilities.feeds` names each one,
4235
+ * resolved at load to the plugin's own feed by that name or otherwise the daemon's, and a session
4236
+ * feed may now declare a `store`. It removes the `cost.read`, `skills.read`, `memory.read` and
4237
+ * `self-improvement.read` host capabilities, so a manifest still listing one no longer parses and
4238
+ * lists the feed instead. A plugin that lists feeds declares ^0.40.0.
4179
4239
  */
4180
- export declare const KAY_PLUGIN_SDK_VERSION: "0.38.0";
4240
+ export declare const KAY_PLUGIN_SDK_VERSION: "0.40.0";
4181
4241
 
4182
4242
  export declare const KAY_PLUGIN_TARGET_NAMES: readonly ["kay.agent", "kay.app", "kay.ui"];
4183
4243
 
@@ -5681,15 +5741,15 @@ export declare const KayPluginManifestV1: z.ZodObject<{
5681
5741
  kind: z.ZodLiteral<"none">;
5682
5742
  }, z.core.$strict>>;
5683
5743
  }, z.core.$strict>>>;
5684
- resourceKind: z.ZodString;
5685
- open: z.ZodDiscriminatedUnion<[z.ZodObject<{
5744
+ resourceKind: z.ZodOptional<z.ZodString>;
5745
+ open: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
5686
5746
  kind: z.ZodLiteral<"working-document">;
5687
5747
  }, z.core.$strict>, z.ZodObject<{
5688
5748
  kind: z.ZodLiteral<"browser-pane">;
5689
5749
  }, z.core.$strict>, z.ZodObject<{
5690
5750
  kind: z.ZodLiteral<"page">;
5691
5751
  pageId: z.ZodString;
5692
- }, z.core.$strict>], "kind">;
5752
+ }, z.core.$strict>], "kind">>;
5693
5753
  variants: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
5694
5754
  resourceKind: z.ZodString;
5695
5755
  presentationPluginId: z.ZodOptional<z.ZodString>;
@@ -5716,6 +5776,37 @@ export declare const KayPluginManifestV1: z.ZodObject<{
5716
5776
  search: z.ZodOptional<z.ZodString>;
5717
5777
  }, z.core.$strict>;
5718
5778
  }, z.core.$strict>>;
5779
+ words: z.ZodOptional<z.ZodObject<{
5780
+ glyph: z.ZodOptional<z.ZodEnum<{
5781
+ file: "file";
5782
+ terminal: "terminal";
5783
+ note: "note";
5784
+ search: "search";
5785
+ person: "person";
5786
+ session: "session";
5787
+ browser: "browser";
5788
+ folder: "folder";
5789
+ repo: "repo";
5790
+ clock: "clock";
5791
+ robot: "robot";
5792
+ globe: "globe";
5793
+ skill: "skill";
5794
+ memory: "memory";
5795
+ plan: "plan";
5796
+ download: "download";
5797
+ attachment: "attachment";
5798
+ settings: "settings";
5799
+ catalog: "catalog";
5800
+ model: "model";
5801
+ doc: "doc";
5802
+ feedback: "feedback";
5803
+ plugin: "plugin";
5804
+ }>>;
5805
+ kind: z.ZodOptional<z.ZodString>;
5806
+ noun: z.ZodOptional<z.ZodString>;
5807
+ target: z.ZodOptional<z.ZodString>;
5808
+ kindNamesSource: z.ZodOptional<z.ZodLiteral<true>>;
5809
+ }, z.core.$strict>>;
5719
5810
  }, z.core.$strict>>>;
5720
5811
  views: z.ZodOptional<z.ZodArray<z.ZodObject<{
5721
5812
  localId: z.ZodString;
@@ -5746,11 +5837,7 @@ export declare const KayPluginManifestV1: z.ZodObject<{
5746
5837
  "artifacts.read": "artifacts.read";
5747
5838
  "artifacts.preview": "artifacts.preview";
5748
5839
  "markdown.document-view": "markdown.document-view";
5749
- "cost.read": "cost.read";
5750
5840
  "billing.read": "billing.read";
5751
- "skills.read": "skills.read";
5752
- "memory.read": "memory.read";
5753
- "self-improvement.read": "self-improvement.read";
5754
5841
  "automations.read": "automations.read";
5755
5842
  "automations.run": "automations.run";
5756
5843
  "shared-artifacts.read": "shared-artifacts.read";
@@ -5758,6 +5845,7 @@ export declare const KayPluginManifestV1: z.ZodObject<{
5758
5845
  "workspace.pane-header": "workspace.pane-header";
5759
5846
  "workspace.arrange": "workspace.arrange";
5760
5847
  }>>>;
5848
+ feeds: z.ZodOptional<z.ZodArray<z.ZodString>>;
5761
5849
  }, z.core.$strict>>;
5762
5850
  }, z.core.$strict> | z.ZodPreprocess<z.ZodObject<{
5763
5851
  localId: z.ZodString;
@@ -5783,11 +5871,7 @@ export declare const KayPluginManifestV1: z.ZodObject<{
5783
5871
  "artifacts.read": "artifacts.read";
5784
5872
  "artifacts.preview": "artifacts.preview";
5785
5873
  "markdown.document-view": "markdown.document-view";
5786
- "cost.read": "cost.read";
5787
5874
  "billing.read": "billing.read";
5788
- "skills.read": "skills.read";
5789
- "memory.read": "memory.read";
5790
- "self-improvement.read": "self-improvement.read";
5791
5875
  "automations.read": "automations.read";
5792
5876
  "automations.run": "automations.run";
5793
5877
  "shared-artifacts.read": "shared-artifacts.read";
@@ -5795,6 +5879,7 @@ export declare const KayPluginManifestV1: z.ZodObject<{
5795
5879
  "workspace.pane-header": "workspace.pane-header";
5796
5880
  "workspace.arrange": "workspace.arrange";
5797
5881
  }>>>;
5882
+ feeds: z.ZodOptional<z.ZodArray<z.ZodString>>;
5798
5883
  }, z.core.$strict>>;
5799
5884
  }, z.core.$strict>, unknown>>>;
5800
5885
  railEntries: z.ZodOptional<z.ZodArray<z.ZodObject<{
@@ -6654,11 +6739,7 @@ export declare const KayUiAppHostCapability: z.ZodEnum<{
6654
6739
  "artifacts.read": "artifacts.read";
6655
6740
  "artifacts.preview": "artifacts.preview";
6656
6741
  "markdown.document-view": "markdown.document-view";
6657
- "cost.read": "cost.read";
6658
6742
  "billing.read": "billing.read";
6659
- "skills.read": "skills.read";
6660
- "memory.read": "memory.read";
6661
- "self-improvement.read": "self-improvement.read";
6662
6743
  "automations.read": "automations.read";
6663
6744
  "automations.run": "automations.run";
6664
6745
  "shared-artifacts.read": "shared-artifacts.read";
@@ -6814,15 +6895,15 @@ export declare const KayUiTargetManifest: z.ZodObject<{
6814
6895
  kind: z.ZodLiteral<"none">;
6815
6896
  }, z.core.$strict>>;
6816
6897
  }, z.core.$strict>>>;
6817
- resourceKind: z.ZodString;
6818
- open: z.ZodDiscriminatedUnion<[z.ZodObject<{
6898
+ resourceKind: z.ZodOptional<z.ZodString>;
6899
+ open: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
6819
6900
  kind: z.ZodLiteral<"working-document">;
6820
6901
  }, z.core.$strict>, z.ZodObject<{
6821
6902
  kind: z.ZodLiteral<"browser-pane">;
6822
6903
  }, z.core.$strict>, z.ZodObject<{
6823
6904
  kind: z.ZodLiteral<"page">;
6824
6905
  pageId: z.ZodString;
6825
- }, z.core.$strict>], "kind">;
6906
+ }, z.core.$strict>], "kind">>;
6826
6907
  variants: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
6827
6908
  resourceKind: z.ZodString;
6828
6909
  presentationPluginId: z.ZodOptional<z.ZodString>;
@@ -6849,6 +6930,37 @@ export declare const KayUiTargetManifest: z.ZodObject<{
6849
6930
  search: z.ZodOptional<z.ZodString>;
6850
6931
  }, z.core.$strict>;
6851
6932
  }, z.core.$strict>>;
6933
+ words: z.ZodOptional<z.ZodObject<{
6934
+ glyph: z.ZodOptional<z.ZodEnum<{
6935
+ file: "file";
6936
+ terminal: "terminal";
6937
+ note: "note";
6938
+ search: "search";
6939
+ person: "person";
6940
+ session: "session";
6941
+ browser: "browser";
6942
+ folder: "folder";
6943
+ repo: "repo";
6944
+ clock: "clock";
6945
+ robot: "robot";
6946
+ globe: "globe";
6947
+ skill: "skill";
6948
+ memory: "memory";
6949
+ plan: "plan";
6950
+ download: "download";
6951
+ attachment: "attachment";
6952
+ settings: "settings";
6953
+ catalog: "catalog";
6954
+ model: "model";
6955
+ doc: "doc";
6956
+ feedback: "feedback";
6957
+ plugin: "plugin";
6958
+ }>>;
6959
+ kind: z.ZodOptional<z.ZodString>;
6960
+ noun: z.ZodOptional<z.ZodString>;
6961
+ target: z.ZodOptional<z.ZodString>;
6962
+ kindNamesSource: z.ZodOptional<z.ZodLiteral<true>>;
6963
+ }, z.core.$strict>>;
6852
6964
  }, z.core.$strict>>>;
6853
6965
  views: z.ZodOptional<z.ZodArray<z.ZodObject<{
6854
6966
  localId: z.ZodString;
@@ -6879,11 +6991,7 @@ export declare const KayUiTargetManifest: z.ZodObject<{
6879
6991
  "artifacts.read": "artifacts.read";
6880
6992
  "artifacts.preview": "artifacts.preview";
6881
6993
  "markdown.document-view": "markdown.document-view";
6882
- "cost.read": "cost.read";
6883
6994
  "billing.read": "billing.read";
6884
- "skills.read": "skills.read";
6885
- "memory.read": "memory.read";
6886
- "self-improvement.read": "self-improvement.read";
6887
6995
  "automations.read": "automations.read";
6888
6996
  "automations.run": "automations.run";
6889
6997
  "shared-artifacts.read": "shared-artifacts.read";
@@ -6891,6 +6999,7 @@ export declare const KayUiTargetManifest: z.ZodObject<{
6891
6999
  "workspace.pane-header": "workspace.pane-header";
6892
7000
  "workspace.arrange": "workspace.arrange";
6893
7001
  }>>>;
7002
+ feeds: z.ZodOptional<z.ZodArray<z.ZodString>>;
6894
7003
  }, z.core.$strict>>;
6895
7004
  }, z.core.$strict> | z.ZodPreprocess<z.ZodObject<{
6896
7005
  localId: z.ZodString;
@@ -6916,11 +7025,7 @@ export declare const KayUiTargetManifest: z.ZodObject<{
6916
7025
  "artifacts.read": "artifacts.read";
6917
7026
  "artifacts.preview": "artifacts.preview";
6918
7027
  "markdown.document-view": "markdown.document-view";
6919
- "cost.read": "cost.read";
6920
7028
  "billing.read": "billing.read";
6921
- "skills.read": "skills.read";
6922
- "memory.read": "memory.read";
6923
- "self-improvement.read": "self-improvement.read";
6924
7029
  "automations.read": "automations.read";
6925
7030
  "automations.run": "automations.run";
6926
7031
  "shared-artifacts.read": "shared-artifacts.read";
@@ -6928,6 +7033,7 @@ export declare const KayUiTargetManifest: z.ZodObject<{
6928
7033
  "workspace.pane-header": "workspace.pane-header";
6929
7034
  "workspace.arrange": "workspace.arrange";
6930
7035
  }>>>;
7036
+ feeds: z.ZodOptional<z.ZodArray<z.ZodString>>;
6931
7037
  }, z.core.$strict>>;
6932
7038
  }, z.core.$strict>, unknown>>>;
6933
7039
  railEntries: z.ZodOptional<z.ZodArray<z.ZodObject<{
@@ -10521,15 +10627,15 @@ export declare const ReferencePresentationContribution: z.ZodObject<{
10521
10627
  kind: z.ZodLiteral<"none">;
10522
10628
  }, z.core.$strict>>;
10523
10629
  }, z.core.$strict>>>;
10524
- resourceKind: z.ZodString;
10525
- open: z.ZodDiscriminatedUnion<[z.ZodObject<{
10630
+ resourceKind: z.ZodOptional<z.ZodString>;
10631
+ open: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
10526
10632
  kind: z.ZodLiteral<"working-document">;
10527
10633
  }, z.core.$strict>, z.ZodObject<{
10528
10634
  kind: z.ZodLiteral<"browser-pane">;
10529
10635
  }, z.core.$strict>, z.ZodObject<{
10530
10636
  kind: z.ZodLiteral<"page">;
10531
10637
  pageId: z.ZodString;
10532
- }, z.core.$strict>], "kind">;
10638
+ }, z.core.$strict>], "kind">>;
10533
10639
  variants: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
10534
10640
  resourceKind: z.ZodString;
10535
10641
  presentationPluginId: z.ZodOptional<z.ZodString>;
@@ -10556,6 +10662,37 @@ export declare const ReferencePresentationContribution: z.ZodObject<{
10556
10662
  search: z.ZodOptional<z.ZodString>;
10557
10663
  }, z.core.$strict>;
10558
10664
  }, z.core.$strict>>;
10665
+ words: z.ZodOptional<z.ZodObject<{
10666
+ glyph: z.ZodOptional<z.ZodEnum<{
10667
+ file: "file";
10668
+ terminal: "terminal";
10669
+ note: "note";
10670
+ search: "search";
10671
+ person: "person";
10672
+ session: "session";
10673
+ browser: "browser";
10674
+ folder: "folder";
10675
+ repo: "repo";
10676
+ clock: "clock";
10677
+ robot: "robot";
10678
+ globe: "globe";
10679
+ skill: "skill";
10680
+ memory: "memory";
10681
+ plan: "plan";
10682
+ download: "download";
10683
+ attachment: "attachment";
10684
+ settings: "settings";
10685
+ catalog: "catalog";
10686
+ model: "model";
10687
+ doc: "doc";
10688
+ feedback: "feedback";
10689
+ plugin: "plugin";
10690
+ }>>;
10691
+ kind: z.ZodOptional<z.ZodString>;
10692
+ noun: z.ZodOptional<z.ZodString>;
10693
+ target: z.ZodOptional<z.ZodString>;
10694
+ kindNamesSource: z.ZodOptional<z.ZodLiteral<true>>;
10695
+ }, z.core.$strict>>;
10559
10696
  }, z.core.$strict>;
10560
10697
 
10561
10698
  export declare type ReferencePresentationContribution = z.infer<typeof ReferencePresentationContribution>;
@@ -10611,6 +10748,40 @@ export declare const ReferencePresentationVariants: z.ZodRecord<z.ZodString, z.Z
10611
10748
 
10612
10749
  export declare type ReferencePresentationVariants = z.infer<typeof ReferencePresentationVariants>;
10613
10750
 
10751
+ export declare const ReferencePresentationWords: z.ZodObject<{
10752
+ glyph: z.ZodOptional<z.ZodEnum<{
10753
+ file: "file";
10754
+ terminal: "terminal";
10755
+ note: "note";
10756
+ search: "search";
10757
+ person: "person";
10758
+ session: "session";
10759
+ browser: "browser";
10760
+ folder: "folder";
10761
+ repo: "repo";
10762
+ clock: "clock";
10763
+ robot: "robot";
10764
+ globe: "globe";
10765
+ skill: "skill";
10766
+ memory: "memory";
10767
+ plan: "plan";
10768
+ download: "download";
10769
+ attachment: "attachment";
10770
+ settings: "settings";
10771
+ catalog: "catalog";
10772
+ model: "model";
10773
+ doc: "doc";
10774
+ feedback: "feedback";
10775
+ plugin: "plugin";
10776
+ }>>;
10777
+ kind: z.ZodOptional<z.ZodString>;
10778
+ noun: z.ZodOptional<z.ZodString>;
10779
+ target: z.ZodOptional<z.ZodString>;
10780
+ kindNamesSource: z.ZodOptional<z.ZodLiteral<true>>;
10781
+ }, z.core.$strict>;
10782
+
10783
+ export declare type ReferencePresentationWords = z.infer<typeof ReferencePresentationWords>;
10784
+
10614
10785
  /**
10615
10786
  * The web-session scope-confinement refinement, coined ONCE and shared by both
10616
10787
  * web-session boundaries: `loginUrl` and `probe.url` must each fall within a
@@ -11188,11 +11359,7 @@ export declare const ResolvedKayUiApp: z.ZodObject<{
11188
11359
  "artifacts.read": "artifacts.read";
11189
11360
  "artifacts.preview": "artifacts.preview";
11190
11361
  "markdown.document-view": "markdown.document-view";
11191
- "cost.read": "cost.read";
11192
11362
  "billing.read": "billing.read";
11193
- "skills.read": "skills.read";
11194
- "memory.read": "memory.read";
11195
- "self-improvement.read": "self-improvement.read";
11196
11363
  "automations.read": "automations.read";
11197
11364
  "automations.run": "automations.run";
11198
11365
  "shared-artifacts.read": "shared-artifacts.read";
@@ -11200,6 +11367,7 @@ export declare const ResolvedKayUiApp: z.ZodObject<{
11200
11367
  "workspace.pane-header": "workspace.pane-header";
11201
11368
  "workspace.arrange": "workspace.arrange";
11202
11369
  }>>>;
11370
+ feeds: z.ZodOptional<z.ZodArray<z.ZodString>>;
11203
11371
  }, z.core.$strict>>;
11204
11372
  }, z.core.$strict>;
11205
11373
 
@@ -12418,6 +12586,7 @@ export declare const ResolvedPluginContractV1: z.ZodObject<{
12418
12586
  globalId: z.ZodString;
12419
12587
  uriModule: z.ZodOptional<z.ZodString>;
12420
12588
  schemes: z.ZodOptional<z.ZodArray<z.ZodString>>;
12589
+ displayName: z.ZodOptional<z.ZodString>;
12421
12590
  addresses: z.ZodOptional<z.ZodArray<z.ZodObject<{
12422
12591
  pattern: z.ZodObject<{
12423
12592
  protocol: z.ZodString;
@@ -12430,15 +12599,15 @@ export declare const ResolvedPluginContractV1: z.ZodObject<{
12430
12599
  kind: z.ZodLiteral<"none">;
12431
12600
  }, z.core.$strict>>;
12432
12601
  }, z.core.$strict>>>;
12433
- resourceKind: z.ZodString;
12434
- open: z.ZodDiscriminatedUnion<[z.ZodObject<{
12602
+ resourceKind: z.ZodOptional<z.ZodString>;
12603
+ open: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
12435
12604
  kind: z.ZodLiteral<"working-document">;
12436
12605
  }, z.core.$strict>, z.ZodObject<{
12437
12606
  kind: z.ZodLiteral<"browser-pane">;
12438
12607
  }, z.core.$strict>, z.ZodObject<{
12439
12608
  kind: z.ZodLiteral<"page">;
12440
12609
  pageId: z.ZodString;
12441
- }, z.core.$strict>], "kind">;
12610
+ }, z.core.$strict>], "kind">>;
12442
12611
  variants: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
12443
12612
  resourceKind: z.ZodString;
12444
12613
  presentationPluginId: z.ZodOptional<z.ZodString>;
@@ -12465,6 +12634,37 @@ export declare const ResolvedPluginContractV1: z.ZodObject<{
12465
12634
  search: z.ZodOptional<z.ZodString>;
12466
12635
  }, z.core.$strict>;
12467
12636
  }, z.core.$strict>>;
12637
+ words: z.ZodOptional<z.ZodObject<{
12638
+ glyph: z.ZodOptional<z.ZodEnum<{
12639
+ file: "file";
12640
+ terminal: "terminal";
12641
+ note: "note";
12642
+ search: "search";
12643
+ person: "person";
12644
+ session: "session";
12645
+ browser: "browser";
12646
+ folder: "folder";
12647
+ repo: "repo";
12648
+ clock: "clock";
12649
+ robot: "robot";
12650
+ globe: "globe";
12651
+ skill: "skill";
12652
+ memory: "memory";
12653
+ plan: "plan";
12654
+ download: "download";
12655
+ attachment: "attachment";
12656
+ settings: "settings";
12657
+ catalog: "catalog";
12658
+ model: "model";
12659
+ doc: "doc";
12660
+ feedback: "feedback";
12661
+ plugin: "plugin";
12662
+ }>>;
12663
+ kind: z.ZodOptional<z.ZodString>;
12664
+ noun: z.ZodOptional<z.ZodString>;
12665
+ target: z.ZodOptional<z.ZodString>;
12666
+ kindNamesSource: z.ZodOptional<z.ZodLiteral<true>>;
12667
+ }, z.core.$strict>>;
12468
12668
  }, z.core.$strict>>>;
12469
12669
  kayUiApps: z.ZodOptional<z.ZodArray<z.ZodObject<{
12470
12670
  localId: z.ZodString;
@@ -12494,11 +12694,7 @@ export declare const ResolvedPluginContractV1: z.ZodObject<{
12494
12694
  "artifacts.read": "artifacts.read";
12495
12695
  "artifacts.preview": "artifacts.preview";
12496
12696
  "markdown.document-view": "markdown.document-view";
12497
- "cost.read": "cost.read";
12498
12697
  "billing.read": "billing.read";
12499
- "skills.read": "skills.read";
12500
- "memory.read": "memory.read";
12501
- "self-improvement.read": "self-improvement.read";
12502
12698
  "automations.read": "automations.read";
12503
12699
  "automations.run": "automations.run";
12504
12700
  "shared-artifacts.read": "shared-artifacts.read";
@@ -12506,6 +12702,7 @@ export declare const ResolvedPluginContractV1: z.ZodObject<{
12506
12702
  "workspace.pane-header": "workspace.pane-header";
12507
12703
  "workspace.arrange": "workspace.arrange";
12508
12704
  }>>>;
12705
+ feeds: z.ZodOptional<z.ZodArray<z.ZodString>>;
12509
12706
  }, z.core.$strict>>;
12510
12707
  }, z.core.$strict>>>;
12511
12708
  }, z.core.$strict>;
@@ -12898,6 +13095,7 @@ export declare const ResolvedReferencePresentation: z.ZodObject<{
12898
13095
  globalId: z.ZodString;
12899
13096
  uriModule: z.ZodOptional<z.ZodString>;
12900
13097
  schemes: z.ZodOptional<z.ZodArray<z.ZodString>>;
13098
+ displayName: z.ZodOptional<z.ZodString>;
12901
13099
  addresses: z.ZodOptional<z.ZodArray<z.ZodObject<{
12902
13100
  pattern: z.ZodObject<{
12903
13101
  protocol: z.ZodString;
@@ -12910,15 +13108,15 @@ export declare const ResolvedReferencePresentation: z.ZodObject<{
12910
13108
  kind: z.ZodLiteral<"none">;
12911
13109
  }, z.core.$strict>>;
12912
13110
  }, z.core.$strict>>>;
12913
- resourceKind: z.ZodString;
12914
- open: z.ZodDiscriminatedUnion<[z.ZodObject<{
13111
+ resourceKind: z.ZodOptional<z.ZodString>;
13112
+ open: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
12915
13113
  kind: z.ZodLiteral<"working-document">;
12916
13114
  }, z.core.$strict>, z.ZodObject<{
12917
13115
  kind: z.ZodLiteral<"browser-pane">;
12918
13116
  }, z.core.$strict>, z.ZodObject<{
12919
13117
  kind: z.ZodLiteral<"page">;
12920
13118
  pageId: z.ZodString;
12921
- }, z.core.$strict>], "kind">;
13119
+ }, z.core.$strict>], "kind">>;
12922
13120
  variants: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
12923
13121
  resourceKind: z.ZodString;
12924
13122
  presentationPluginId: z.ZodOptional<z.ZodString>;
@@ -12945,6 +13143,37 @@ export declare const ResolvedReferencePresentation: z.ZodObject<{
12945
13143
  search: z.ZodOptional<z.ZodString>;
12946
13144
  }, z.core.$strict>;
12947
13145
  }, z.core.$strict>>;
13146
+ words: z.ZodOptional<z.ZodObject<{
13147
+ glyph: z.ZodOptional<z.ZodEnum<{
13148
+ file: "file";
13149
+ terminal: "terminal";
13150
+ note: "note";
13151
+ search: "search";
13152
+ person: "person";
13153
+ session: "session";
13154
+ browser: "browser";
13155
+ folder: "folder";
13156
+ repo: "repo";
13157
+ clock: "clock";
13158
+ robot: "robot";
13159
+ globe: "globe";
13160
+ skill: "skill";
13161
+ memory: "memory";
13162
+ plan: "plan";
13163
+ download: "download";
13164
+ attachment: "attachment";
13165
+ settings: "settings";
13166
+ catalog: "catalog";
13167
+ model: "model";
13168
+ doc: "doc";
13169
+ feedback: "feedback";
13170
+ plugin: "plugin";
13171
+ }>>;
13172
+ kind: z.ZodOptional<z.ZodString>;
13173
+ noun: z.ZodOptional<z.ZodString>;
13174
+ target: z.ZodOptional<z.ZodString>;
13175
+ kindNamesSource: z.ZodOptional<z.ZodLiteral<true>>;
13176
+ }, z.core.$strict>>;
12948
13177
  }, z.core.$strict>;
12949
13178
 
12950
13179
  export declare type ResolvedReferencePresentation = z.infer<typeof ResolvedReferencePresentation>;
@@ -13988,6 +14217,9 @@ export declare const ThemeContribution: z.ZodObject<{
13988
14217
 
13989
14218
  export declare type ThemeContribution = z.infer<typeof ThemeContribution>;
13990
14219
 
14220
+ /** The marks Bonsai draws for local work and for sources with no icon of their own. */
14221
+ export declare const TOOL_GLYPHS: readonly ["terminal", "file", "search", "folder", "person", "repo", "clock", "robot", "globe", "browser", "skill", "memory", "session", "plan", "download", "attachment", "settings", "catalog", "model", "doc", "feedback", "plugin", "note"];
14222
+
13991
14223
  export declare const ToolContribution: z.ZodObject<{
13992
14224
  localId: z.ZodString;
13993
14225
  toolName: z.ZodString;
@@ -13997,6 +14229,9 @@ export declare const ToolContribution: z.ZodObject<{
13997
14229
 
13998
14230
  export declare type ToolContribution = z.infer<typeof ToolContribution>;
13999
14231
 
14232
+ /** A mark for local work and for Bonsai's own surfaces, drawn at the start of a tool row. */
14233
+ export declare type ToolGlyph = (typeof TOOL_GLYPHS)[number];
14234
+
14000
14235
  export declare const ToolPermission: z.ZodObject<{
14001
14236
  kind: z.ZodEnum<{
14002
14237
  read: "read";
@@ -14095,11 +14330,7 @@ export declare const UiAppCapabilities: z.ZodObject<{
14095
14330
  "artifacts.read": "artifacts.read";
14096
14331
  "artifacts.preview": "artifacts.preview";
14097
14332
  "markdown.document-view": "markdown.document-view";
14098
- "cost.read": "cost.read";
14099
14333
  "billing.read": "billing.read";
14100
- "skills.read": "skills.read";
14101
- "memory.read": "memory.read";
14102
- "self-improvement.read": "self-improvement.read";
14103
14334
  "automations.read": "automations.read";
14104
14335
  "automations.run": "automations.run";
14105
14336
  "shared-artifacts.read": "shared-artifacts.read";
@@ -14107,6 +14338,7 @@ export declare const UiAppCapabilities: z.ZodObject<{
14107
14338
  "workspace.pane-header": "workspace.pane-header";
14108
14339
  "workspace.arrange": "workspace.arrange";
14109
14340
  }>>>;
14341
+ feeds: z.ZodOptional<z.ZodArray<z.ZodString>>;
14110
14342
  }, z.core.$strict>;
14111
14343
 
14112
14344
  export declare type UiAppCapabilities = z.infer<typeof UiAppCapabilities>;
@@ -14135,11 +14367,7 @@ export declare const UiAppContribution: z.ZodObject<{
14135
14367
  "artifacts.read": "artifacts.read";
14136
14368
  "artifacts.preview": "artifacts.preview";
14137
14369
  "markdown.document-view": "markdown.document-view";
14138
- "cost.read": "cost.read";
14139
14370
  "billing.read": "billing.read";
14140
- "skills.read": "skills.read";
14141
- "memory.read": "memory.read";
14142
- "self-improvement.read": "self-improvement.read";
14143
14371
  "automations.read": "automations.read";
14144
14372
  "automations.run": "automations.run";
14145
14373
  "shared-artifacts.read": "shared-artifacts.read";
@@ -14147,6 +14375,7 @@ export declare const UiAppContribution: z.ZodObject<{
14147
14375
  "workspace.pane-header": "workspace.pane-header";
14148
14376
  "workspace.arrange": "workspace.arrange";
14149
14377
  }>>>;
14378
+ feeds: z.ZodOptional<z.ZodArray<z.ZodString>>;
14150
14379
  }, z.core.$strict>>;
14151
14380
  }, z.core.$strict> | z.ZodPreprocess<z.ZodObject<{
14152
14381
  localId: z.ZodString;
@@ -14172,11 +14401,7 @@ export declare const UiAppContribution: z.ZodObject<{
14172
14401
  "artifacts.read": "artifacts.read";
14173
14402
  "artifacts.preview": "artifacts.preview";
14174
14403
  "markdown.document-view": "markdown.document-view";
14175
- "cost.read": "cost.read";
14176
14404
  "billing.read": "billing.read";
14177
- "skills.read": "skills.read";
14178
- "memory.read": "memory.read";
14179
- "self-improvement.read": "self-improvement.read";
14180
14405
  "automations.read": "automations.read";
14181
14406
  "automations.run": "automations.run";
14182
14407
  "shared-artifacts.read": "shared-artifacts.read";
@@ -14184,6 +14409,7 @@ export declare const UiAppContribution: z.ZodObject<{
14184
14409
  "workspace.pane-header": "workspace.pane-header";
14185
14410
  "workspace.arrange": "workspace.arrange";
14186
14411
  }>>>;
14412
+ feeds: z.ZodOptional<z.ZodArray<z.ZodString>>;
14187
14413
  }, z.core.$strict>>;
14188
14414
  }, z.core.$strict>, unknown>;
14189
14415
 
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.38.0";
257
+ var KAY_PLUGIN_SDK_VERSION = "0.40.0";
258
258
  var KAY_PLUGIN_COMPATIBLE_SDK_VERSIONS = [
259
259
  "0.26.3",
260
260
  "0.27.1",
@@ -267,7 +267,9 @@ var KAY_PLUGIN_COMPATIBLE_SDK_VERSIONS = [
267
267
  "0.34.0",
268
268
  "0.35.0",
269
269
  "0.36.0",
270
- "0.37.1"
270
+ "0.37.1",
271
+ "0.38.0",
272
+ "0.39.0"
271
273
  ];
272
274
  var KAY_PLUGIN_TARGET_NAMES = [
273
275
  "kay.agent",
@@ -2759,6 +2761,7 @@ __export(contributions_exports, {
2759
2761
  ReferencePresentationUrlClaim: () => ReferencePresentationUrlClaim,
2760
2762
  ReferencePresentationVariant: () => ReferencePresentationVariant,
2761
2763
  ReferencePresentationVariants: () => ReferencePresentationVariants,
2764
+ ReferencePresentationWords: () => ReferencePresentationWords,
2762
2765
  ResourceContribution: () => ResourceContribution,
2763
2766
  ResultRendererContribution: () => ResultRendererContribution,
2764
2767
  RichViewContribution: () => RichViewContribution,
@@ -3118,6 +3121,33 @@ function evaluateCommandWhere(where, values) {
3118
3121
  return evaluateWhere(where, (key) => values[key]);
3119
3122
  }
3120
3123
 
3124
+ // packages/plugin-protocol/dist/tool-glyph.js
3125
+ var TOOL_GLYPHS = [
3126
+ "terminal",
3127
+ "file",
3128
+ "search",
3129
+ "folder",
3130
+ "person",
3131
+ "repo",
3132
+ "clock",
3133
+ "robot",
3134
+ "globe",
3135
+ "browser",
3136
+ "skill",
3137
+ "memory",
3138
+ "session",
3139
+ "plan",
3140
+ "download",
3141
+ "attachment",
3142
+ "settings",
3143
+ "catalog",
3144
+ "model",
3145
+ "doc",
3146
+ "feedback",
3147
+ "plugin",
3148
+ "note"
3149
+ ];
3150
+
3121
3151
  // packages/plugin-protocol/dist/contributions.js
3122
3152
  var MCP_SERVER_LOCAL_HTTP_HOSTNAMES = /* @__PURE__ */ new Set(["localhost", "127.0.0.1"]);
3123
3153
  var MCP_SIGN_IN_SCHEME_KIND = {
@@ -3431,13 +3461,6 @@ function createContributionsSchemas(canonical) {
3431
3461
  }
3432
3462
  if (source.store === void 0)
3433
3463
  return;
3434
- if (source.scope === "session") {
3435
- ctx.addIssue({
3436
- code: "custom",
3437
- path: ["store"],
3438
- message: "A declared app-data store requires runtime or account scope."
3439
- });
3440
- }
3441
3464
  const replaces = source.change.semantics?.kind === "snapshot-replacement";
3442
3465
  if (replaces !== (source.store.shape === "value")) {
3443
3466
  ctx.addIssue({
@@ -3801,6 +3824,26 @@ function createContributionsSchemas(canonical) {
3801
3824
  objectId: NonEmptyString3.optional(),
3802
3825
  open: z12.strictObject({ kind: z12.literal("none") }).optional()
3803
3826
  });
3827
+ const ReferencePresentationWords2 = z12.strictObject({
3828
+ /** The row's mark, for a source with no icon of its own. Left out: the plugin's main icon. */
3829
+ glyph: z12.enum(TOOL_GLYPHS).optional(),
3830
+ /** The thing an address names ("channel" in "Read Slack channel"). Left out: the row reads the scheme's own name. */
3831
+ kind: NonEmptyString3.optional(),
3832
+ /** What a tally counts one address as ("Slack message"). Left out: `kind`, else "item". */
3833
+ noun: NonEmptyString3.optional(),
3834
+ /** What the live phrase names ("Slack" in "Reading Slack"). Left out: the bare verb ("Reading"). */
3835
+ target: NonEmptyString3.optional(),
3836
+ /** `kind` already says which source this is: "Edited plan", not "Edited Plan plan". */
3837
+ kindNamesSource: z12.literal(true).optional()
3838
+ }).superRefine((value, ctx) => {
3839
+ if (value.kind === void 0 && (value.glyph !== void 0 || value.kindNamesSource !== void 0)) {
3840
+ ctx.addIssue({
3841
+ code: "custom",
3842
+ path: ["kind"],
3843
+ message: "glyph and kindNamesSource describe a row, which needs a kind."
3844
+ });
3845
+ }
3846
+ });
3804
3847
  const ReferencePresentationContribution2 = z12.strictObject({
3805
3848
  localId: LocalContributionId2,
3806
3849
  /** This manifest's URI module. Leave it out only for an address another layer serves. */
@@ -3813,16 +3856,48 @@ function createContributionsSchemas(canonical) {
3813
3856
  scheme: UriScheme2.optional(),
3814
3857
  /** Which of the addresses open the page, and on what. Read by the window. */
3815
3858
  addresses: z12.array(ReferencePresentationAddress2).min(1).optional(),
3816
- resourceKind: NonEmptyString3,
3817
- open: ReferenceOpenBehavior2,
3859
+ /** Comes with `open`. A presentation with neither only words its module's addresses. */
3860
+ resourceKind: NonEmptyString3.optional(),
3861
+ /** How the address opens. Left out, it stays plain text. */
3862
+ open: ReferenceOpenBehavior2.optional(),
3818
3863
  /** MIME-specific resource kinds; absent keys use the base presentation. */
3819
3864
  variants: ReferencePresentationVariants2.optional(),
3820
3865
  /** Lexical public URL claims used only for host-rendered browser presentations. */
3821
3866
  claims: z12.array(ReferencePresentationUrlClaim2).optional(),
3822
3867
  /** Informational app presentation matched against the canonical resource URI. */
3823
- tooltip: ReferencePresentationTooltip2.optional()
3868
+ tooltip: ReferencePresentationTooltip2.optional(),
3869
+ /** What the transcript calls this module's addresses. Needs a `uriModule`. */
3870
+ words: ReferencePresentationWords2.optional()
3824
3871
  }).superRefine((value, ctx) => {
3825
- if (value.claims !== void 0 && value.claims.length > 0 && value.open.kind !== "browser-pane") {
3872
+ if (value.open === void 0 !== (value.resourceKind === void 0)) {
3873
+ ctx.addIssue({
3874
+ code: "custom",
3875
+ path: ["open"],
3876
+ message: "open and resourceKind come together: name both or neither."
3877
+ });
3878
+ }
3879
+ if (value.open === void 0 && value.words === void 0) {
3880
+ ctx.addIssue({
3881
+ code: "custom",
3882
+ path: ["words"],
3883
+ message: "A reference presentation that opens nothing must have words."
3884
+ });
3885
+ }
3886
+ if (value.words !== void 0 && value.uriModule === void 0) {
3887
+ ctx.addIssue({
3888
+ code: "custom",
3889
+ path: ["words"],
3890
+ message: "Words belong to a URI module: name its uriModule."
3891
+ });
3892
+ }
3893
+ if (value.open === void 0 && (value.variants !== void 0 || value.tooltip !== void 0)) {
3894
+ ctx.addIssue({
3895
+ code: "custom",
3896
+ path: ["open"],
3897
+ message: "variants and tooltip need an open."
3898
+ });
3899
+ }
3900
+ if (value.claims !== void 0 && value.claims.length > 0 && value.open?.kind !== "browser-pane") {
3826
3901
  ctx.addIssue({
3827
3902
  code: "custom",
3828
3903
  path: ["claims"],
@@ -3836,14 +3911,14 @@ function createContributionsSchemas(canonical) {
3836
3911
  message: "A reference presentation names a uriModule or a scheme."
3837
3912
  });
3838
3913
  }
3839
- if ((value.scheme !== void 0 || value.addresses !== void 0) && value.open.kind !== "page") {
3914
+ if ((value.scheme !== void 0 || value.addresses !== void 0) && value.open?.kind !== "page") {
3840
3915
  ctx.addIssue({
3841
3916
  code: "custom",
3842
3917
  path: ["open"],
3843
3918
  message: "scheme and addresses require page opening."
3844
3919
  });
3845
3920
  }
3846
- if (value.tooltip !== void 0 && value.open.kind === "page") {
3921
+ if (value.tooltip !== void 0 && value.open?.kind === "page") {
3847
3922
  ctx.addIssue({
3848
3923
  code: "custom",
3849
3924
  path: ["tooltip"],
@@ -3877,15 +3952,8 @@ function createContributionsSchemas(canonical) {
3877
3952
  // Draws Bonsai's markdown document view in the app's page (`BonsaiMarkdownDocumentView`).
3878
3953
  // It reads and saves nothing: the app supplies the text and keeps the edits.
3879
3954
  "markdown.document-view",
3880
- "cost.read",
3881
3955
  // Server-rated organization billing, distinct from local/provider cost.
3882
3956
  "billing.read",
3883
- // Skills and Memory analytics reads (full snapshots via the capability broker).
3884
- "skills.read",
3885
- "memory.read",
3886
- // The self-improvement lens: reads the telemetry lane's self-improvement rollup
3887
- // (memory/skill/notebook activity). Follows the same "names the data" convention.
3888
- "self-improvement.read",
3889
3957
  "automations.read",
3890
3958
  "automations.run",
3891
3959
  // Lists the shared artifacts the signed-in account may open and opens one in Bonsai's shared
@@ -3908,9 +3976,12 @@ function createContributionsSchemas(canonical) {
3908
3976
  ]);
3909
3977
  const UiAppCapabilities2 = z12.strictObject({
3910
3978
  endpoints: z12.array(LocalContributionId2).optional(),
3911
- host: z12.array(KayUiAppHostCapability2).optional()
3979
+ host: z12.array(KayUiAppHostCapability2).optional(),
3980
+ // The feeds this app's pages read with `useBonsaiFeed`. A name means this plugin's own
3981
+ // `kay.app` data source if it declares one, otherwise the feed the daemon publishes.
3982
+ feeds: z12.array(LocalContributionId2).optional()
3912
3983
  }).superRefine((capabilities, ctx) => {
3913
- for (const field of ["endpoints", "host"]) {
3984
+ for (const field of ["endpoints", "host", "feeds"]) {
3914
3985
  const seen = /* @__PURE__ */ new Set();
3915
3986
  for (const [index, value] of (capabilities[field] ?? []).entries()) {
3916
3987
  if (seen.has(value)) {
@@ -4104,6 +4175,7 @@ function createContributionsSchemas(canonical) {
4104
4175
  ReferencePresentationUrlClaim: ReferencePresentationUrlClaim2,
4105
4176
  ReferencePresentationTooltip: ReferencePresentationTooltip2,
4106
4177
  ReferencePresentationAddress: ReferencePresentationAddress2,
4178
+ ReferencePresentationWords: ReferencePresentationWords2,
4107
4179
  ReferencePresentationContribution: ReferencePresentationContribution2,
4108
4180
  RichViewContribution: RichViewContribution2,
4109
4181
  KayUiAppHostCapability: KayUiAppHostCapability2,
@@ -4118,7 +4190,7 @@ function createContributionsSchemas(canonical) {
4118
4190
  PluginContributionKind: PluginContributionKind2
4119
4191
  };
4120
4192
  }
4121
- 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);
4193
+ 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, ReferencePresentationWords, ReferencePresentationContribution, RichViewContribution, KayUiAppHostCapability, UiAppCapabilities, UiRailEntryContribution, UiToastPreviewContribution, UiPageContribution, UiAppContribution, ThemeContribution, CommandHandler, CommandContribution, PluginContributionKind } = createContributionsSchemas(false);
4122
4194
  var canonicalContributionSchemas = createContributionsSchemas(true);
4123
4195
 
4124
4196
  // packages/plugin-protocol/dist/icon-shape.js
@@ -4788,7 +4860,7 @@ function createManifestSchemas(canonical) {
4788
4860
  }
4789
4861
  materializedAppDataSources.add(materializer.source);
4790
4862
  }
4791
- const declaredRowsStores = new Set(manifest.targets?.kay?.app?.contributes?.dataSources?.filter((source) => source.store?.shape === "rows").map((source) => source.localId) ?? []);
4863
+ const declaredRowsStores = new Set(manifest.targets?.kay?.app?.contributes?.dataSources?.filter((source) => source.store?.shape === "rows" && source.scope !== "session").map((source) => source.localId) ?? []);
4792
4864
  for (const [index, entry] of (manifest.targets?.kay?.ui?.contributes?.railEntries ?? []).entries()) {
4793
4865
  if (entry.badge === void 0)
4794
4866
  continue;
@@ -4943,7 +5015,7 @@ function createManifestSchemas(canonical) {
4943
5015
  message: `reference presentation ${presentation.localId} references unknown ui app ${presentation.tooltip.app}`
4944
5016
  });
4945
5017
  }
4946
- if (presentation.open.kind === "page" && !declaredPageIds.has(presentation.open.pageId)) {
5018
+ if (presentation.open?.kind === "page" && !declaredPageIds.has(presentation.open.pageId)) {
4947
5019
  ctx.addIssue({
4948
5020
  code: "custom",
4949
5021
  path: [...path, "open", "pageId"],
@@ -5663,7 +5735,7 @@ function boundPluginDiagnosticMessage(message) {
5663
5735
  import { z as z14 } from "zod";
5664
5736
  function createResolvedContractSchemas(canonical) {
5665
5737
  const { PluginEventLocalId: PluginEventLocalId2 } = canonical ? canonicalPluginEventSchemas : plugin_events_exports;
5666
- const { ApprovalTypeContribution: ApprovalTypeContribution2, KayUiAppHostCapability: KayUiAppHostCapability2, McpServerAuthMode: McpServerAuthMode2, McpServerUrl: McpServerUrl2, PluginContributionKind: PluginContributionKindSchema, ReferenceOpenBehavior: ReferenceOpenBehavior2, ReferencePresentationUriPattern: ReferencePresentationUriPattern2, ReferencePresentationAddress: ReferencePresentationAddress2, ReferencePresentationUrlClaim: ReferencePresentationUrlClaim2, ReferencePresentationVariants: ReferencePresentationVariants2, UriModuleFacts: UriModuleFacts2, WhiteboardTypeStorage: WhiteboardTypeStorage2 } = canonical ? canonicalContributionSchemas : contributions_exports;
5738
+ const { ApprovalTypeContribution: ApprovalTypeContribution2, KayUiAppHostCapability: KayUiAppHostCapability2, McpServerAuthMode: McpServerAuthMode2, McpServerUrl: McpServerUrl2, PluginContributionKind: PluginContributionKindSchema, ReferenceOpenBehavior: ReferenceOpenBehavior2, ReferencePresentationUriPattern: ReferencePresentationUriPattern2, ReferencePresentationAddress: ReferencePresentationAddress2, ReferencePresentationUrlClaim: ReferencePresentationUrlClaim2, ReferencePresentationVariants: ReferencePresentationVariants2, ReferencePresentationWords: ReferencePresentationWords2, UriModuleFacts: UriModuleFacts2, WhiteboardTypeStorage: WhiteboardTypeStorage2 } = canonical ? canonicalContributionSchemas : contributions_exports;
5667
5739
  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;
5668
5740
  const { PluginExternalCliConnect: PluginExternalCliConnect2, PluginOAuthClientSupplier: PluginOAuthClientSupplier2 } = canonical ? canonicalManifestSchemas : manifest_exports;
5669
5741
  const { ResolvedPluginGrants: ResolvedPluginGrants2 } = canonical ? canonicalPermissionSchemas : permissions_exports;
@@ -5827,18 +5899,22 @@ function createResolvedContractSchemas(canonical) {
5827
5899
  localId: LocalContributionId2,
5828
5900
  globalId: GlobalContributionId2,
5829
5901
  uriModule: GlobalContributionId2.optional(),
5830
- /** The schemes a page-opening presentation answers for: its `scheme`, or its module's. */
5902
+ /** The schemes this presentation is about: its `scheme`, or its module's. */
5831
5903
  schemes: z14.array(UriScheme2).min(1).optional(),
5904
+ /** The module's `displayName`: the source's name in a row. */
5905
+ displayName: NonEmptyString3.optional(),
5832
5906
  addresses: z14.array(ReferencePresentationAddress2).min(1).optional(),
5833
- resourceKind: NonEmptyString3,
5834
- open: ReferenceOpenBehavior2,
5907
+ /** Comes with `open`. A presentation with neither only words its module's addresses. */
5908
+ resourceKind: NonEmptyString3.optional(),
5909
+ open: ReferenceOpenBehavior2.optional(),
5835
5910
  /** MIME-specific resource kinds; absent keys use the base presentation. */
5836
5911
  variants: ReferencePresentationVariants2.optional(),
5837
5912
  claims: z14.array(ReferencePresentationUrlClaim2).optional(),
5838
5913
  tooltip: z14.strictObject({
5839
5914
  app: GlobalContributionId2,
5840
5915
  pattern: ReferencePresentationUriPattern2
5841
- }).optional()
5916
+ }).optional(),
5917
+ words: ReferencePresentationWords2.optional()
5842
5918
  });
5843
5919
  const ResolvedPluginProvisioningRequirement2 = z14.strictObject({
5844
5920
  id: LocalContributionId2,
@@ -5968,7 +6044,8 @@ function createResolvedContractSchemas(canonical) {
5968
6044
  assets: z14.array(PackageAssetPath2).optional(),
5969
6045
  capabilities: z14.strictObject({
5970
6046
  endpoints: z14.array(ResolvedKayUiAppEndpointCapability2).optional(),
5971
- host: z14.array(KayUiAppHostCapability2).optional()
6047
+ host: z14.array(KayUiAppHostCapability2).optional(),
6048
+ feeds: z14.array(LocalContributionId2).optional()
5972
6049
  }).optional()
5973
6050
  });
5974
6051
  const ResolvedPluginContractV12 = z14.strictObject({
@@ -6454,10 +6531,13 @@ function resolveKayPluginContractV1(manifest) {
6454
6531
  ...presentation.uriModule === void 0 ? {} : {
6455
6532
  uriModule: resolveGlobalContributionId(namespace, presentation.uriModule)
6456
6533
  },
6457
- ...presentationSchemes(manifest, presentation),
6534
+ ...presentationSource(manifest, presentation),
6458
6535
  ...presentation.addresses === void 0 ? {} : { addresses: presentation.addresses },
6459
- resourceKind: presentation.resourceKind,
6460
- open: presentation.open,
6536
+ ...presentation.open === void 0 || presentation.resourceKind === void 0 ? {} : {
6537
+ resourceKind: presentation.resourceKind,
6538
+ open: presentation.open
6539
+ },
6540
+ ...presentation.words === void 0 ? {} : { words: { ...presentation.words } },
6461
6541
  ...presentation.tooltip === void 0 ? {} : {
6462
6542
  tooltip: {
6463
6543
  app: resolveGlobalContributionId(namespace, presentation.tooltip.app),
@@ -6494,7 +6574,8 @@ function resolveKayPluginContractV1(manifest) {
6494
6574
  globalId: resolveGlobalContributionId(namespace, endpoint)
6495
6575
  }))
6496
6576
  },
6497
- ...app.capabilities.host === void 0 ? {} : { host: [...app.capabilities.host] }
6577
+ ...app.capabilities.host === void 0 ? {} : { host: [...app.capabilities.host] },
6578
+ ...app.capabilities.feeds === void 0 ? {} : { feeds: [...app.capabilities.feeds] }
6498
6579
  }
6499
6580
  }
6500
6581
  }));
@@ -6540,18 +6621,17 @@ function safeResolveKayPluginContractV1(manifest) {
6540
6621
  throw error;
6541
6622
  }
6542
6623
  }
6543
- function presentationSchemes(manifest, presentation) {
6544
- if (presentation.scheme !== void 0) {
6545
- return { schemes: [presentation.scheme] };
6546
- }
6547
- if (presentation.open.kind !== "page")
6548
- return {};
6624
+ function presentationSource(manifest, presentation) {
6549
6625
  const contributes = manifest.targets?.kay;
6550
6626
  const module = [
6551
6627
  ...contributes?.agent?.contributes?.uriModules ?? [],
6552
6628
  ...contributes?.app?.contributes?.uriModules ?? []
6553
6629
  ].find((candidate) => candidate.localId === presentation.uriModule);
6554
- return module === void 0 ? {} : { schemes: [...module.schemes] };
6630
+ const schemes = presentation.scheme === void 0 ? module?.schemes : [presentation.scheme];
6631
+ return {
6632
+ ...schemes === void 0 ? {} : { schemes: [...schemes] },
6633
+ ...module?.displayName === void 0 ? {} : { displayName: module.displayName }
6634
+ };
6555
6635
  }
6556
6636
  function uriModuleFacts({ localId: _localId, schemes: _schemes, displayName: _displayName, authService: _authService, authScheme: _authScheme, knownResources: _knownResources, describesOperations: _describesOperations, ...facts }) {
6557
6637
  return facts;
@@ -7453,6 +7533,7 @@ export {
7453
7533
  ReferencePresentationUrlClaim,
7454
7534
  ReferencePresentationVariant,
7455
7535
  ReferencePresentationVariants,
7536
+ ReferencePresentationWords,
7456
7537
  RegistrableDomain,
7457
7538
  ResolvedAuthGrantRequest,
7458
7539
  ResolvedEndpointGrantRequest,
@@ -7504,6 +7585,7 @@ export {
7504
7585
  SignedInStatusCode,
7505
7586
  SkillContribution,
7506
7587
  StorageGrantRequest,
7588
+ TOOL_GLYPHS,
7507
7589
  TargetEntrypoint,
7508
7590
  TargetPermissionSet,
7509
7591
  TargetPermissionWiring,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yaklabs-ai/plugin-protocol",
3
- "version": "0.38.0",
3
+ "version": "0.40.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",