@yaklabs-ai/plugin-protocol 0.46.0 → 0.47.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.46.0"
14
+ "@bonsai/plugin-protocol": "npm:@yaklabs-ai/plugin-protocol@^0.47.0"
15
15
  }
16
16
  }
17
17
  ```
@@ -1,10 +1,22 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
3
  "package": "@yaklabs-ai/plugin-protocol",
4
- "version": "0.46.0",
4
+ "version": "0.47.0",
5
5
  "target": "npm",
6
6
  "firstPartyLicense": "MIT",
7
- "bundled": [],
7
+ "bundled": [
8
+ {
9
+ "name": "@json-render/core",
10
+ "version": "0.19.0",
11
+ "license": "Apache-2.0",
12
+ "copyright": "Copyright 2025 Vercel Inc.",
13
+ "source": "https://github.com/vercel-labs/json-render/tree/0bbe6ed6394b23b5aee25320d03c9b7ac717e5b7/packages/core",
14
+ "licenseSource": "https://github.com/vercel-labs/json-render/blob/0bbe6ed6394b23b5aee25320d03c9b7ac717e5b7/LICENSE",
15
+ "upstreamCommit": "0bbe6ed6394b23b5aee25320d03c9b7ac717e5b7",
16
+ "note": "Type declarations are flattened into this package; runtime code is not bundled.",
17
+ "noticeFile": "THIRD-PARTY-NOTICES.md"
18
+ }
19
+ ],
8
20
  "external": [
9
21
  {
10
22
  "name": "zod",
@@ -1,5 +1,217 @@
1
1
  # Third-party notices
2
2
 
3
- This package bundles 0 first-party-selected component(s). The notices below are reproduced verbatim from each component's upstream MIT license source.
3
+ This package bundles 1 first-party-selected component(s). The notices below are reproduced verbatim from each component's upstream license source.
4
+
5
+ ## @json-render/core@0.19.0
6
+
7
+ - Source: https://github.com/vercel-labs/json-render/tree/0bbe6ed6394b23b5aee25320d03c9b7ac717e5b7/packages/core
8
+ - License: Apache-2.0
9
+ - License source: https://github.com/vercel-labs/json-render/blob/0bbe6ed6394b23b5aee25320d03c9b7ac717e5b7/LICENSE
10
+ - Upstream commit: 0bbe6ed6394b23b5aee25320d03c9b7ac717e5b7
11
+ - Integration: Type declarations are flattened into this package; runtime code is not bundled.
12
+
13
+ License text for the component(s) above, verbatim from the license source:
14
+
15
+ Apache License
16
+ Version 2.0, January 2004
17
+ http://www.apache.org/licenses/
18
+
19
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
20
+
21
+ 1. Definitions.
22
+
23
+ "License" shall mean the terms and conditions for use, reproduction,
24
+ and distribution as defined by Sections 1 through 9 of this document.
25
+
26
+ "Licensor" shall mean the copyright owner or entity authorized by
27
+ the copyright owner that is granting the License.
28
+
29
+ "Legal Entity" shall mean the union of the acting entity and all
30
+ other entities that control, are controlled by, or are under common
31
+ control with that entity. For the purposes of this definition,
32
+ "control" means (i) the power, direct or indirect, to cause the
33
+ direction or management of such entity, whether by contract or
34
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
35
+ outstanding shares, or (iii) beneficial ownership of such entity.
36
+
37
+ "You" (or "Your") shall mean an individual or Legal Entity
38
+ exercising permissions granted by this License.
39
+
40
+ "Source" form shall mean the preferred form for making modifications,
41
+ including but not limited to software source code, documentation
42
+ source, and configuration files.
43
+
44
+ "Object" form shall mean any form resulting from mechanical
45
+ transformation or translation of a Source form, including but
46
+ not limited to compiled object code, generated documentation,
47
+ and conversions to other media types.
48
+
49
+ "Work" shall mean the work of authorship, whether in Source or
50
+ Object form, made available under the License, as indicated by a
51
+ copyright notice that is included in or attached to the work
52
+ (an example is provided in the Appendix below).
53
+
54
+ "Derivative Works" shall mean any work, whether in Source or Object
55
+ form, that is based on (or derived from) the Work and for which the
56
+ editorial revisions, annotations, elaborations, or other modifications
57
+ represent, as a whole, an original work of authorship. For the purposes
58
+ of this License, Derivative Works shall not include works that remain
59
+ separable from, or merely link (or bind by name) to the interfaces of,
60
+ the Work and Derivative Works thereof.
61
+
62
+ "Contribution" shall mean any work of authorship, including
63
+ the original version of the Work and any modifications or additions
64
+ to that Work or Derivative Works thereof, that is intentionally
65
+ submitted to Licensor for inclusion in the Work by the copyright owner
66
+ or by an individual or Legal Entity authorized to submit on behalf of
67
+ the copyright owner. For the purposes of this definition, "submitted"
68
+ means any form of electronic, verbal, or written communication sent
69
+ to the Licensor or its representatives, including but not limited to
70
+ communication on electronic mailing lists, source code control systems,
71
+ and issue tracking systems that are managed by, or on behalf of, the
72
+ Licensor for the purpose of discussing and improving the Work, but
73
+ excluding communication that is conspicuously marked or otherwise
74
+ designated in writing by the copyright owner as "Not a Contribution."
75
+
76
+ "Contributor" shall mean Licensor and any individual or Legal Entity
77
+ on behalf of whom a Contribution has been received by Licensor and
78
+ subsequently incorporated within the Work.
79
+
80
+ 2. Grant of Copyright License. Subject to the terms and conditions of
81
+ this License, each Contributor hereby grants to You a perpetual,
82
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
83
+ copyright license to reproduce, prepare Derivative Works of,
84
+ publicly display, publicly perform, sublicense, and distribute the
85
+ Work and such Derivative Works in Source or Object form.
86
+
87
+ 3. Grant of Patent License. Subject to the terms and conditions of
88
+ this License, each Contributor hereby grants to You a perpetual,
89
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
90
+ (except as stated in this section) patent license to make, have made,
91
+ use, offer to sell, sell, import, and otherwise transfer the Work,
92
+ where such license applies only to those patent claims licensable
93
+ by such Contributor that are necessarily infringed by their
94
+ Contribution(s) alone or by combination of their Contribution(s)
95
+ with the Work to which such Contribution(s) was submitted. If You
96
+ institute patent litigation against any entity (including a
97
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
98
+ or a Contribution incorporated within the Work constitutes direct
99
+ or contributory patent infringement, then any patent licenses
100
+ granted to You under this License for that Work shall terminate
101
+ as of the date such litigation is filed.
102
+
103
+ 4. Redistribution. You may reproduce and distribute copies of the
104
+ Work or Derivative Works thereof in any medium, with or without
105
+ modifications, and in Source or Object form, provided that You
106
+ meet the following conditions:
107
+
108
+ (a) You must give any other recipients of the Work or
109
+ Derivative Works a copy of this License; and
110
+
111
+ (b) You must cause any modified files to carry prominent notices
112
+ stating that You changed the files; and
113
+
114
+ (c) You must retain, in the Source form of any Derivative Works
115
+ that You distribute, all copyright, patent, trademark, and
116
+ attribution notices from the Source form of the Work,
117
+ excluding those notices that do not pertain to any part of
118
+ the Derivative Works; and
119
+
120
+ (d) If the Work includes a "NOTICE" text file as part of its
121
+ distribution, then any Derivative Works that You distribute must
122
+ include a readable copy of the attribution notices contained
123
+ within such NOTICE file, excluding those notices that do not
124
+ pertain to any part of the Derivative Works, in at least one
125
+ of the following places: within a NOTICE text file distributed
126
+ as part of the Derivative Works; within the Source form or
127
+ documentation, if provided along with the Derivative Works; or,
128
+ within a display generated by the Derivative Works, if and
129
+ wherever such third-party notices normally appear. The contents
130
+ of the NOTICE file are for informational purposes only and
131
+ do not modify the License. You may add Your own attribution
132
+ notices within Derivative Works that You distribute, alongside
133
+ or as an addendum to the NOTICE text from the Work, provided
134
+ that such additional attribution notices cannot be construed
135
+ as modifying the License.
136
+
137
+ You may add Your own copyright statement to Your modifications and
138
+ may provide additional or different license terms and conditions
139
+ for use, reproduction, or distribution of Your modifications, or
140
+ for any such Derivative Works as a whole, provided Your use,
141
+ reproduction, and distribution of the Work otherwise complies with
142
+ the conditions stated in this License.
143
+
144
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
145
+ any Contribution intentionally submitted for inclusion in the Work
146
+ by You to the Licensor shall be under the terms and conditions of
147
+ this License, without any additional terms or conditions.
148
+ Notwithstanding the above, nothing herein shall supersede or modify
149
+ the terms of any separate license agreement you may have executed
150
+ with Licensor regarding such Contributions.
151
+
152
+ 6. Trademarks. This License does not grant permission to use the trade
153
+ names, trademarks, service marks, or product names of the Licensor,
154
+ except as required for reasonable and customary use in describing the
155
+ origin of the Work and reproducing the content of the NOTICE file.
156
+
157
+ 7. Disclaimer of Warranty. Unless required by applicable law or
158
+ agreed to in writing, Licensor provides the Work (and each
159
+ Contributor provides its Contributions) on an "AS IS" BASIS,
160
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
161
+ implied, including, without limitation, any warranties or conditions
162
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
163
+ PARTICULAR PURPOSE. You are solely responsible for determining the
164
+ appropriateness of using or redistributing the Work and assume any
165
+ risks associated with Your exercise of permissions under this License.
166
+
167
+ 8. Limitation of Liability. In no event and under no legal theory,
168
+ whether in tort (including negligence), contract, or otherwise,
169
+ unless required by applicable law (such as deliberate and grossly
170
+ negligent acts) or agreed to in writing, shall any Contributor be
171
+ liable to You for damages, including any direct, indirect, special,
172
+ incidental, or consequential damages of any character arising as a
173
+ result of this License or out of the use or inability to use the
174
+ Work (including but not limited to damages for loss of goodwill,
175
+ work stoppage, computer failure or malfunction, or any and all
176
+ other commercial damages or losses), even if such Contributor
177
+ has been advised of the possibility of such damages.
178
+
179
+ 9. Accepting Warranty or Additional Liability. While redistributing
180
+ the Work or Derivative Works thereof, You may choose to offer,
181
+ and charge a fee for, acceptance of support, warranty, indemnity,
182
+ or other liability obligations and/or rights consistent with this
183
+ License. However, in accepting such obligations, You may act only
184
+ on Your own behalf and on Your sole responsibility, not on behalf
185
+ of any other Contributor, and only if You agree to indemnify,
186
+ defend, and hold each Contributor harmless for any liability
187
+ incurred by, or claims asserted against, such Contributor by reason
188
+ of your accepting any such warranty or additional liability.
189
+
190
+ END OF TERMS AND CONDITIONS
191
+
192
+ APPENDIX: How to apply the Apache License to your work.
193
+
194
+ To apply the Apache License to your work, attach the following
195
+ boilerplate notice, with the fields enclosed by brackets "[]"
196
+ replaced with your own identifying information. (Don't include
197
+ the brackets!) The text should be enclosed in the appropriate
198
+ comment syntax for the file format. We also recommend that a
199
+ file or class name and description of purpose be included on the
200
+ same "printed page" as the copyright notice for easier
201
+ identification within third-party archives.
202
+
203
+ Copyright 2025 Vercel Inc.
204
+
205
+ Licensed under the Apache License, Version 2.0 (the "License");
206
+ you may not use this file except in compliance with the License.
207
+ You may obtain a copy of the License at
208
+
209
+ http://www.apache.org/licenses/LICENSE-2.0
210
+
211
+ Unless required by applicable law or agreed to in writing, software
212
+ distributed under the License is distributed on an "AS IS" BASIS,
213
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
214
+ See the License for the specific language governing permissions and
215
+ limitations under the License.
4
216
 
5
217
  The package's own code is licensed under the MIT License in `LICENSE`.
package/dist/index.d.ts CHANGED
@@ -11,6 +11,60 @@ export declare const AccessApprovalReview: z.ZodObject<{
11
11
 
12
12
  export declare type AccessApprovalReview = z.infer<typeof AccessApprovalReview>;
13
13
 
14
+ /**
15
+ * Action binding — maps an event to an action invocation.
16
+ *
17
+ * Used inside the `on` field of a UIElement:
18
+ * ```json
19
+ * { "on": { "press": { "action": "setState", "params": { "statePath": "/x", "value": 1 } } } }
20
+ * ```
21
+ */
22
+ declare interface ActionBinding {
23
+ /** Action name (must be in catalog) */
24
+ action: string;
25
+ /** Parameters to pass to the action handler */
26
+ params?: Record<string, DynamicValue>;
27
+ /** Confirmation dialog before execution */
28
+ confirm?: ActionConfirm;
29
+ /** Handler after successful execution */
30
+ onSuccess?: ActionOnSuccess;
31
+ /** Handler after failed execution */
32
+ onError?: ActionOnError;
33
+ /** Whether to prevent default browser behavior (e.g. navigation on links) */
34
+ preventDefault?: boolean;
35
+ }
36
+
37
+ /**
38
+ * Confirmation dialog configuration
39
+ */
40
+ declare interface ActionConfirm {
41
+ title: string;
42
+ message: string;
43
+ confirmLabel?: string;
44
+ cancelLabel?: string;
45
+ variant?: "default" | "danger";
46
+ }
47
+
48
+ /**
49
+ * Action error handler
50
+ */
51
+ declare type ActionOnError = {
52
+ set: Record<string, unknown>;
53
+ } | {
54
+ action: string;
55
+ };
56
+
57
+ /**
58
+ * Action success handler
59
+ */
60
+ declare type ActionOnSuccess = {
61
+ navigate: string;
62
+ } | {
63
+ set: Record<string, unknown>;
64
+ } | {
65
+ action: string;
66
+ };
67
+
14
68
  export declare const AdapterPlacement: z.ZodEnum<{
15
69
  "local-only": "local-only";
16
70
  anywhere: "anywhere";
@@ -76,6 +130,15 @@ export declare const AgentToolContribution: z.ZodObject<{
76
130
 
77
131
  export declare type AgentToolContribution = z.infer<typeof AgentToolContribution>;
78
132
 
133
+ /**
134
+ * AND wrapper — all child conditions must be true.
135
+ * This is the explicit form of the implicit array AND (`SingleCondition[]`).
136
+ * Unlike the implicit form, `$and` supports nested `$or` and `$and` conditions.
137
+ */
138
+ declare type AndCondition = {
139
+ $and: VisibilityCondition[];
140
+ };
141
+
79
142
  export declare const AppDataMaterializerContribution: z.ZodObject<{
80
143
  source: z.ZodString;
81
144
  }, z.core.$strict>;
@@ -1687,8 +1750,6 @@ declare namespace authoringContributionSchemas {
1687
1750
  SessionReaderContribution,
1688
1751
  UiCommandContribution,
1689
1752
  UiSlotContribution,
1690
- SettingsPanelContribution,
1691
- ResultRendererContribution,
1692
1753
  ReferenceOpenBehavior,
1693
1754
  ReferencePresentationVariant,
1694
1755
  ReferencePresentationVariants,
@@ -1699,7 +1760,6 @@ declare namespace authoringContributionSchemas {
1699
1760
  ReferencePresentationAccountLinks,
1700
1761
  ReferencePresentationWords,
1701
1762
  ReferencePresentationContribution,
1702
- RichViewContribution,
1703
1763
  KayUiAppHostCapability,
1704
1764
  UiAppCapabilities,
1705
1765
  UiRailEntryContribution,
@@ -1711,7 +1771,9 @@ declare namespace authoringContributionSchemas {
1711
1771
  CommandContribution,
1712
1772
  PluginContributionKind,
1713
1773
  canonicalContributionSchemas,
1714
- PluginCardResult
1774
+ PluginCardResult,
1775
+ PluginCardReadResult,
1776
+ PluginCardSubmitResult
1715
1777
  }
1716
1778
  }
1717
1779
 
@@ -2449,9 +2511,6 @@ declare const canonicalContributionSchemas: {
2449
2511
  bodyField: z.ZodString;
2450
2512
  }, z.core.$strict>], "kind">;
2451
2513
  valueSchema: z.ZodRecord<z.ZodString, z.ZodType<authoringCommonSchemas.JsonValue, unknown, z.core.$ZodTypeInternals<authoringCommonSchemas.JsonValue, unknown>>>;
2452
- presentation: z.ZodOptional<z.ZodObject<{
2453
- app: z.ZodString;
2454
- }, z.core.$strict>>;
2455
2514
  }, z.core.$strict>;
2456
2515
  AppDataMaterializerContribution: z.ZodObject<{
2457
2516
  source: z.ZodString;
@@ -2663,15 +2722,6 @@ declare const canonicalContributionSchemas: {
2663
2722
  slot: z.ZodString;
2664
2723
  title: z.ZodOptional<z.ZodString>;
2665
2724
  }, z.core.$strict>;
2666
- SettingsPanelContribution: z.ZodObject<{
2667
- localId: z.ZodString;
2668
- title: z.ZodString;
2669
- configSection: z.ZodOptional<z.ZodString>;
2670
- }, z.core.$strict>;
2671
- ResultRendererContribution: z.ZodObject<{
2672
- localId: z.ZodString;
2673
- resultKinds: z.ZodArray<z.ZodString>;
2674
- }, z.core.$strict>;
2675
2725
  ReferenceOpenBehavior: z.ZodDiscriminatedUnion<[z.ZodObject<{
2676
2726
  kind: z.ZodLiteral<"working-document">;
2677
2727
  }, z.core.$strict>, z.ZodObject<{
@@ -2910,11 +2960,6 @@ declare const canonicalContributionSchemas: {
2910
2960
  }, z.core.$strict>>>;
2911
2961
  }, z.core.$strict>>;
2912
2962
  }, z.core.$strict>;
2913
- RichViewContribution: z.ZodObject<{
2914
- localId: z.ZodString;
2915
- title: z.ZodString;
2916
- route: z.ZodOptional<z.ZodString>;
2917
- }, z.core.$strict>;
2918
2963
  KayUiAppHostCapability: z.ZodEnum<{
2919
2964
  "navigation.open-session": "navigation.open-session";
2920
2965
  "sessions.create": "sessions.create";
@@ -3101,9 +3146,8 @@ declare const canonicalContributionSchemas: {
3101
3146
  storage: "storage";
3102
3147
  uriModule: "uriModule";
3103
3148
  authService: "authService";
3104
- app: "app";
3105
3149
  command: "command";
3106
- configSection: "configSection";
3150
+ app: "app";
3107
3151
  skill: "skill";
3108
3152
  converter: "converter";
3109
3153
  artifactUriModule: "artifactUriModule";
@@ -3126,11 +3170,9 @@ declare const canonicalContributionSchemas: {
3126
3170
  mcpServer: "mcpServer";
3127
3171
  uiCommand: "uiCommand";
3128
3172
  uiSlot: "uiSlot";
3129
- settingsPanel: "settingsPanel";
3130
- resultRenderer: "resultRenderer";
3131
3173
  referencePresentation: "referencePresentation";
3132
- view: "view";
3133
3174
  theme: "theme";
3175
+ configSection: "configSection";
3134
3176
  }>;
3135
3177
  };
3136
3178
 
@@ -3262,6 +3304,34 @@ export declare function compareClaims(a: PluginCapabilityClaimV1, b: PluginCapab
3262
3304
  */
3263
3305
  export declare function compareSemver(a: string, b: string): number | undefined;
3264
3306
 
3307
+ /**
3308
+ * Shared comparison operators for visibility conditions.
3309
+ *
3310
+ * Use at most ONE comparison operator per condition. If multiple are
3311
+ * provided, only the first matching one is evaluated (precedence:
3312
+ * eq > neq > gt > gte > lt > lte). With no operator, truthiness is checked.
3313
+ *
3314
+ * `not` inverts the final result of whichever operator (or truthiness
3315
+ * check) is used.
3316
+ */
3317
+ declare type ComparisonOperators = {
3318
+ eq?: unknown;
3319
+ neq?: unknown;
3320
+ gt?: number | {
3321
+ $state: string;
3322
+ };
3323
+ gte?: number | {
3324
+ $state: string;
3325
+ };
3326
+ lt?: number | {
3327
+ $state: string;
3328
+ };
3329
+ lte?: number | {
3330
+ $state: string;
3331
+ };
3332
+ not?: true;
3333
+ };
3334
+
3265
3335
  /**
3266
3336
  * The section-key convention for every declared plugin config section.
3267
3337
  */
@@ -3482,6 +3552,16 @@ export declare const DeviceDelegationContribution: z.ZodObject<{
3482
3552
 
3483
3553
  export declare type DeviceDelegationContribution = z.infer<typeof DeviceDelegationContribution>;
3484
3554
 
3555
+ /**
3556
+ * Dynamic value - can be a literal or a `{ $state }` reference to the state model.
3557
+ *
3558
+ * Used in action params and validation args where values can either be
3559
+ * hardcoded or resolved from state at runtime.
3560
+ */
3561
+ declare type DynamicValue<T = unknown> = T | {
3562
+ $state: string;
3563
+ };
3564
+
3485
3565
  export declare const EndpointContribution: z.ZodObject<{
3486
3566
  localId: z.ZodString;
3487
3567
  displayName: z.ZodOptional<z.ZodString>;
@@ -3608,6 +3688,14 @@ export declare const HttpsUrl: z.ZodURL;
3608
3688
 
3609
3689
  export declare type HttpsUrl = z.infer<typeof HttpsUrl>;
3610
3690
 
3691
+ /**
3692
+ * A condition that resolves `$index` to the current repeat array index.
3693
+ * Only meaningful inside a `repeat` scope.
3694
+ */
3695
+ declare type IndexCondition = {
3696
+ $index: true;
3697
+ } & ComparisonOperators;
3698
+
3611
3699
  export declare const InteractionDriverContribution: z.ZodObject<{
3612
3700
  localId: z.ZodString;
3613
3701
  displayName: z.ZodOptional<z.ZodString>;
@@ -3680,6 +3768,16 @@ export declare function isSupportedSemverRange(range: string): boolean;
3680
3768
  */
3681
3769
  export declare function isUiAppSourceModule(module: string): boolean;
3682
3770
 
3771
+ /**
3772
+ * A condition that resolves `$item` to a field on the current repeat item.
3773
+ * Only meaningful inside a `repeat` scope.
3774
+ *
3775
+ * Use `""` to reference the whole item, or `"field"` for a specific field.
3776
+ */
3777
+ declare type ItemCondition = {
3778
+ $item: string;
3779
+ } & ComparisonOperators;
3780
+
3683
3781
  export declare const JsonObject: z.ZodRecord<z.ZodString, z.ZodType<JsonValue, unknown, z.core.$ZodTypeInternals<JsonValue, unknown>>>;
3684
3782
 
3685
3783
  export declare type JsonObject = z.infer<typeof JsonObject>;
@@ -4417,8 +4515,10 @@ export declare const KAY_PLUGIN_PROTOCOL_VERSION: "kay.plugin.v1";
4417
4515
  *
4418
4516
  * 0.46.0 adds `@bonsai/plugin-sdk/artifact-provenance`, so a plugin shipped as files can finalize
4419
4517
  * and read the provenance the host captured. Additive: a plugin that imports it declares ^0.46.0.
4518
+ *
4519
+ * 0.47.0 adds card layouts and builders; successful card submits now require a summary.
4420
4520
  */
4421
- export declare const KAY_PLUGIN_SDK_VERSION: "0.46.0";
4521
+ export declare const KAY_PLUGIN_SDK_VERSION: "0.47.0";
4422
4522
 
4423
4523
  export declare const KAY_PLUGIN_TARGET_NAMES: readonly ["kay.agent", "kay.app", "kay.ui"];
4424
4524
 
@@ -4961,9 +5061,6 @@ export declare const KayAppTargetManifest: z.ZodObject<{
4961
5061
  bodyField: z.ZodString;
4962
5062
  }, z.core.$strict>], "kind">;
4963
5063
  valueSchema: z.ZodRecord<z.ZodString, z.ZodType<authoringCommonSchemas.JsonValue, unknown, z.core.$ZodTypeInternals<authoringCommonSchemas.JsonValue, unknown>>>;
4964
- presentation: z.ZodOptional<z.ZodObject<{
4965
- app: z.ZodString;
4966
- }, z.core.$strict>>;
4967
5064
  }, z.core.$strict>>>;
4968
5065
  approvalTypes: z.ZodOptional<z.ZodArray<z.ZodObject<{
4969
5066
  localId: z.ZodString;
@@ -5763,9 +5860,6 @@ export declare const KayPluginManifestV1: z.ZodObject<{
5763
5860
  bodyField: z.ZodString;
5764
5861
  }, z.core.$strict>], "kind">;
5765
5862
  valueSchema: z.ZodRecord<z.ZodString, z.ZodType<authoringCommonSchemas.JsonValue, unknown, z.core.$ZodTypeInternals<authoringCommonSchemas.JsonValue, unknown>>>;
5766
- presentation: z.ZodOptional<z.ZodObject<{
5767
- app: z.ZodString;
5768
- }, z.core.$strict>>;
5769
5863
  }, z.core.$strict>>>;
5770
5864
  approvalTypes: z.ZodOptional<z.ZodArray<z.ZodObject<{
5771
5865
  localId: z.ZodString;
@@ -5957,15 +6051,6 @@ export declare const KayPluginManifestV1: z.ZodObject<{
5957
6051
  slot: z.ZodString;
5958
6052
  title: z.ZodOptional<z.ZodString>;
5959
6053
  }, z.core.$strict>>>;
5960
- settingsPanels: z.ZodOptional<z.ZodArray<z.ZodObject<{
5961
- localId: z.ZodString;
5962
- title: z.ZodString;
5963
- configSection: z.ZodOptional<z.ZodString>;
5964
- }, z.core.$strict>>>;
5965
- resultRenderers: z.ZodOptional<z.ZodArray<z.ZodObject<{
5966
- localId: z.ZodString;
5967
- resultKinds: z.ZodArray<z.ZodString>;
5968
- }, z.core.$strict>>>;
5969
6054
  referencePresentations: z.ZodOptional<z.ZodArray<z.ZodObject<{
5970
6055
  localId: z.ZodString;
5971
6056
  uriModule: z.ZodOptional<z.ZodString>;
@@ -6083,11 +6168,6 @@ export declare const KayPluginManifestV1: z.ZodObject<{
6083
6168
  }, z.core.$strict>>>;
6084
6169
  }, z.core.$strict>>;
6085
6170
  }, z.core.$strict>>>;
6086
- views: z.ZodOptional<z.ZodArray<z.ZodObject<{
6087
- localId: z.ZodString;
6088
- title: z.ZodString;
6089
- route: z.ZodOptional<z.ZodString>;
6090
- }, z.core.$strict>>>;
6091
6171
  apps: z.ZodOptional<z.ZodArray<z.ZodObject<{
6092
6172
  localId: z.ZodString;
6093
6173
  displayName: z.ZodString;
@@ -7149,15 +7229,6 @@ export declare const KayUiTargetManifest: z.ZodObject<{
7149
7229
  slot: z.ZodString;
7150
7230
  title: z.ZodOptional<z.ZodString>;
7151
7231
  }, z.core.$strict>>>;
7152
- settingsPanels: z.ZodOptional<z.ZodArray<z.ZodObject<{
7153
- localId: z.ZodString;
7154
- title: z.ZodString;
7155
- configSection: z.ZodOptional<z.ZodString>;
7156
- }, z.core.$strict>>>;
7157
- resultRenderers: z.ZodOptional<z.ZodArray<z.ZodObject<{
7158
- localId: z.ZodString;
7159
- resultKinds: z.ZodArray<z.ZodString>;
7160
- }, z.core.$strict>>>;
7161
7232
  referencePresentations: z.ZodOptional<z.ZodArray<z.ZodObject<{
7162
7233
  localId: z.ZodString;
7163
7234
  uriModule: z.ZodOptional<z.ZodString>;
@@ -7275,11 +7346,6 @@ export declare const KayUiTargetManifest: z.ZodObject<{
7275
7346
  }, z.core.$strict>>>;
7276
7347
  }, z.core.$strict>>;
7277
7348
  }, z.core.$strict>>>;
7278
- views: z.ZodOptional<z.ZodArray<z.ZodObject<{
7279
- localId: z.ZodString;
7280
- title: z.ZodString;
7281
- route: z.ZodOptional<z.ZodString>;
7282
- }, z.core.$strict>>>;
7283
7349
  apps: z.ZodOptional<z.ZodArray<z.ZodObject<{
7284
7350
  localId: z.ZodString;
7285
7351
  displayName: z.ZodString;
@@ -7539,6 +7605,13 @@ export declare interface OperationCaptureInput {
7539
7605
  readonly causes?: readonly ArtifactProvenanceCause[];
7540
7606
  }
7541
7607
 
7608
+ /**
7609
+ * OR wrapper — at least one child condition must be true.
7610
+ */
7611
+ declare type OrCondition = {
7612
+ $or: VisibilityCondition[];
7613
+ };
7614
+
7542
7615
  export declare const PackageAssetPath: z.ZodString;
7543
7616
 
7544
7617
  export declare type PackageAssetPath = z.infer<typeof PackageAssetPath>;
@@ -9902,6 +9975,12 @@ export declare const PluginCardContribution: z.ZodObject<{
9902
9975
 
9903
9976
  export declare type PluginCardContribution = z.infer<typeof PluginCardContribution>;
9904
9977
 
9978
+ export declare type PluginCardReadResult<T> = PluginCardResult<T> | {
9979
+ readonly ok: true;
9980
+ readonly presentation: "layout";
9981
+ readonly layout: Spec;
9982
+ };
9983
+
9905
9984
  export declare type PluginCardResult<T> = {
9906
9985
  readonly ok: true;
9907
9986
  readonly data: T;
@@ -9911,6 +9990,14 @@ export declare type PluginCardResult<T> = {
9911
9990
  readonly message: string;
9912
9991
  };
9913
9992
 
9993
+ export declare type PluginCardSubmitResult<T> = {
9994
+ readonly ok: true;
9995
+ readonly data: T;
9996
+ readonly summary: string;
9997
+ } | Extract<PluginCardResult<T>, {
9998
+ readonly ok: false;
9999
+ }>;
10000
+
9914
10001
  export declare const PluginCompatibilityManifest: z.ZodObject<{
9915
10002
  supportedProtocols: z.ZodOptional<z.ZodArray<z.ZodLiteral<"kay.plugin.v1">>>;
9916
10003
  minKayVersion: z.ZodOptional<z.ZodString>;
@@ -9964,9 +10051,8 @@ export declare const PluginContributionKind: z.ZodEnum<{
9964
10051
  storage: "storage";
9965
10052
  uriModule: "uriModule";
9966
10053
  authService: "authService";
9967
- app: "app";
9968
10054
  command: "command";
9969
- configSection: "configSection";
10055
+ app: "app";
9970
10056
  skill: "skill";
9971
10057
  converter: "converter";
9972
10058
  artifactUriModule: "artifactUriModule";
@@ -9989,11 +10075,9 @@ export declare const PluginContributionKind: z.ZodEnum<{
9989
10075
  mcpServer: "mcpServer";
9990
10076
  uiCommand: "uiCommand";
9991
10077
  uiSlot: "uiSlot";
9992
- settingsPanel: "settingsPanel";
9993
- resultRenderer: "resultRenderer";
9994
10078
  referencePresentation: "referencePresentation";
9995
- view: "view";
9996
10079
  theme: "theme";
10080
+ configSection: "configSection";
9997
10081
  }>;
9998
10082
 
9999
10083
  export declare type PluginContributionKind = z.infer<typeof PluginContributionKind>;
@@ -11876,9 +11960,6 @@ export declare const ResolvedKayAppWhiteboardType: z.ZodObject<{
11876
11960
  bodyField: z.ZodString;
11877
11961
  }, z.core.$strict>], "kind">;
11878
11962
  valueSchema: z.ZodRecord<z.ZodString, z.ZodType<authoringCommonSchemas.JsonValue, unknown, z.core.$ZodTypeInternals<authoringCommonSchemas.JsonValue, unknown>>>;
11879
- presentation: z.ZodOptional<z.ZodObject<{
11880
- app: z.ZodString;
11881
- }, z.core.$strict>>;
11882
11963
  }, z.core.$strict>;
11883
11964
 
11884
11965
  export declare type ResolvedKayAppWhiteboardType = z.infer<typeof ResolvedKayAppWhiteboardType>;
@@ -12292,9 +12373,8 @@ export declare const ResolvedPluginContractV1: z.ZodObject<{
12292
12373
  storage: "storage";
12293
12374
  uriModule: "uriModule";
12294
12375
  authService: "authService";
12295
- app: "app";
12296
12376
  command: "command";
12297
- configSection: "configSection";
12377
+ app: "app";
12298
12378
  skill: "skill";
12299
12379
  converter: "converter";
12300
12380
  artifactUriModule: "artifactUriModule";
@@ -12317,11 +12397,9 @@ export declare const ResolvedPluginContractV1: z.ZodObject<{
12317
12397
  mcpServer: "mcpServer";
12318
12398
  uiCommand: "uiCommand";
12319
12399
  uiSlot: "uiSlot";
12320
- settingsPanel: "settingsPanel";
12321
- resultRenderer: "resultRenderer";
12322
12400
  referencePresentation: "referencePresentation";
12323
- view: "view";
12324
12401
  theme: "theme";
12402
+ configSection: "configSection";
12325
12403
  }>;
12326
12404
  localId: z.ZodString;
12327
12405
  globalId: z.ZodString;
@@ -13174,9 +13252,6 @@ export declare const ResolvedPluginContractV1: z.ZodObject<{
13174
13252
  bodyField: z.ZodString;
13175
13253
  }, z.core.$strict>], "kind">;
13176
13254
  valueSchema: z.ZodRecord<z.ZodString, z.ZodType<authoringCommonSchemas.JsonValue, unknown, z.core.$ZodTypeInternals<authoringCommonSchemas.JsonValue, unknown>>>;
13177
- presentation: z.ZodOptional<z.ZodObject<{
13178
- app: z.ZodString;
13179
- }, z.core.$strict>>;
13180
13255
  }, z.core.$strict>>>;
13181
13256
  kayAppMcpServers: z.ZodOptional<z.ZodArray<z.ZodObject<{
13182
13257
  name: z.ZodString;
@@ -13373,9 +13448,8 @@ export declare const ResolvedPluginContributionId: z.ZodObject<{
13373
13448
  storage: "storage";
13374
13449
  uriModule: "uriModule";
13375
13450
  authService: "authService";
13376
- app: "app";
13377
13451
  command: "command";
13378
- configSection: "configSection";
13452
+ app: "app";
13379
13453
  skill: "skill";
13380
13454
  converter: "converter";
13381
13455
  artifactUriModule: "artifactUriModule";
@@ -13398,11 +13472,9 @@ export declare const ResolvedPluginContributionId: z.ZodObject<{
13398
13472
  mcpServer: "mcpServer";
13399
13473
  uiCommand: "uiCommand";
13400
13474
  uiSlot: "uiSlot";
13401
- settingsPanel: "settingsPanel";
13402
- resultRenderer: "resultRenderer";
13403
13475
  referencePresentation: "referencePresentation";
13404
- view: "view";
13405
13476
  theme: "theme";
13477
+ configSection: "configSection";
13406
13478
  }>;
13407
13479
  localId: z.ZodString;
13408
13480
  globalId: z.ZodString;
@@ -14001,13 +14073,6 @@ export declare const ResourceContribution: z.ZodObject<{
14001
14073
 
14002
14074
  export declare type ResourceContribution = z.infer<typeof ResourceContribution>;
14003
14075
 
14004
- export declare const ResultRendererContribution: z.ZodObject<{
14005
- localId: z.ZodString;
14006
- resultKinds: z.ZodArray<z.ZodString>;
14007
- }, z.core.$strict>;
14008
-
14009
- export declare type ResultRendererContribution = z.infer<typeof ResultRendererContribution>;
14010
-
14011
14076
  /**
14012
14077
  * What a plugin declares about the host it can run under.
14013
14078
  *
@@ -14074,14 +14139,6 @@ export declare interface RetiredPermissionAsks {
14074
14139
  */
14075
14140
  export declare function retiredPermissionAsksIn(rawManifest: unknown): readonly RetiredPermissionAsks[];
14076
14141
 
14077
- export declare const RichViewContribution: z.ZodObject<{
14078
- localId: z.ZodString;
14079
- title: z.ZodString;
14080
- route: z.ZodOptional<z.ZodString>;
14081
- }, z.core.$strict>;
14082
-
14083
- export declare type RichViewContribution = z.infer<typeof RichViewContribution>;
14084
-
14085
14142
  /** Whether a `where` holds for one row. A field the row doesn't have is absent, not unknown. */
14086
14143
  export declare function rowMatchesWhere(where: Where, row: Readonly<Record<string, unknown>>): boolean;
14087
14144
 
@@ -14522,18 +14579,13 @@ export declare const SessionRelationship: z.ZodDiscriminatedUnion<[z.ZodObject<{
14522
14579
 
14523
14580
  export declare type SessionRelationship = z.infer<typeof SessionRelationship>;
14524
14581
 
14525
- export declare const SettingsPanelContribution: z.ZodObject<{
14526
- localId: z.ZodString;
14527
- title: z.ZodString;
14528
- configSection: z.ZodOptional<z.ZodString>;
14529
- }, z.core.$strict>;
14530
-
14531
- export declare type SettingsPanelContribution = z.infer<typeof SettingsPanelContribution>;
14532
-
14533
14582
  export declare const SignedInStatusCode: z.ZodNumber;
14534
14583
 
14535
14584
  export declare type SignedInStatusCode = z.infer<typeof SignedInStatusCode>;
14536
14585
 
14586
+ /** A single visibility condition (state, item, or index). */
14587
+ declare type SingleCondition = StateCondition | ItemCondition | IndexCondition;
14588
+
14537
14589
  export declare const SkillContribution: z.ZodObject<{
14538
14590
  localId: z.ZodString;
14539
14591
  displayName: z.ZodOptional<z.ZodString>;
@@ -14581,6 +14633,31 @@ export declare type SkillSuggestionEvidenceRef = {
14581
14633
  readonly raw: string;
14582
14634
  };
14583
14635
 
14636
+ /**
14637
+ * Flat UI tree structure (optimized for LLM generation)
14638
+ */
14639
+ declare interface Spec {
14640
+ /** Root element key */
14641
+ root: string;
14642
+ /** Flat map of elements by key */
14643
+ elements: Record<string, UIElement>;
14644
+ /** Optional initial state to seed the state model.
14645
+ * Components using statePath will read from / write to this state. */
14646
+ state?: Record<string, unknown>;
14647
+ }
14648
+
14649
+ /**
14650
+ * A single state-based condition.
14651
+ * Resolves `$state` to a value from the state model, then applies the operator.
14652
+ * Without an operator, checks truthiness.
14653
+ *
14654
+ * When `not` is `true`, the result of the entire condition is inverted.
14655
+ * For example `{ $state: "/count", gt: 5, not: true }` means "NOT greater than 5".
14656
+ */
14657
+ declare type StateCondition = {
14658
+ $state: string;
14659
+ } & ComparisonOperators;
14660
+
14584
14661
  export declare const StorageGrantRequest: z.ZodObject<{
14585
14662
  kind: z.ZodEnum<{
14586
14663
  sqlite: "sqlite";
@@ -15128,6 +15205,33 @@ export declare type UiCommandContribution = z.infer<typeof UiCommandContribution
15128
15205
 
15129
15206
  declare type UiContributes = NonNullable<KayUiTargetManifest["contributes"]>;
15130
15207
 
15208
+ /**
15209
+ * Base UI element structure for v2
15210
+ */
15211
+ declare interface UIElement<T extends string = string, P = Record<string, unknown>> {
15212
+ /** Component type from the catalog */
15213
+ type: T;
15214
+ /** Component props */
15215
+ props: P;
15216
+ /** Child element keys (flat structure) */
15217
+ children?: string[];
15218
+ /** Visibility condition */
15219
+ visible?: VisibilityCondition;
15220
+ /** Event bindings — maps event names to action bindings */
15221
+ on?: Record<string, ActionBinding | ActionBinding[]>;
15222
+ /** Repeat children once per item in a state array */
15223
+ repeat?: {
15224
+ statePath: string;
15225
+ key?: string;
15226
+ };
15227
+ /**
15228
+ * State watchers — maps JSON Pointer state paths to action bindings.
15229
+ * When the value at a watched path changes, the bound actions fire.
15230
+ * Useful for cascading dependencies (e.g. country → city option loading).
15231
+ */
15232
+ watch?: Record<string, ActionBinding | ActionBinding[]>;
15233
+ }
15234
+
15131
15235
  export declare const UiEventSubscriptionContribution: z.ZodObject<{
15132
15236
  localId: z.ZodString;
15133
15237
  event: z.ZodString;
@@ -15538,6 +15642,16 @@ export declare function validateKayUiEventSubscription(event: string, definedPlu
15538
15642
  readonly message: string;
15539
15643
  };
15540
15644
 
15645
+ /**
15646
+ * Visibility condition types.
15647
+ * - `boolean` — always/never
15648
+ * - `SingleCondition` — single condition (`$state`, `$item`, or `$index`)
15649
+ * - `SingleCondition[]` — implicit AND (all must be true)
15650
+ * - `AndCondition` — `{ $and: [...] }`, explicit AND (all must be true)
15651
+ * - `OrCondition` — `{ $or: [...] }`, at least one must be true
15652
+ */
15653
+ declare type VisibilityCondition = boolean | SingleCondition | SingleCondition[] | AndCondition | OrCondition;
15654
+
15541
15655
  /**
15542
15656
  * The one element a CSRF token is read from, as a COMPOUND SIMPLE selector: an optional tag
15543
15657
  * followed by any number of `#id` and `[attr]` / `[attr=value]` predicates, all on that one
@@ -15804,9 +15918,6 @@ export declare const WhiteboardTypeContribution: z.ZodObject<{
15804
15918
  bodyField: z.ZodString;
15805
15919
  }, z.core.$strict>], "kind">;
15806
15920
  valueSchema: z.ZodRecord<z.ZodString, z.ZodType<authoringCommonSchemas.JsonValue, unknown, z.core.$ZodTypeInternals<authoringCommonSchemas.JsonValue, unknown>>>;
15807
- presentation: z.ZodOptional<z.ZodObject<{
15808
- app: z.ZodString;
15809
- }, z.core.$strict>>;
15810
15921
  }, z.core.$strict>;
15811
15922
 
15812
15923
  export declare type WhiteboardTypeContribution = z.infer<typeof WhiteboardTypeContribution>;
@@ -15816,9 +15927,6 @@ export declare const WhiteboardTypeInfo: z.ZodObject<{
15816
15927
  displayName: z.ZodString;
15817
15928
  schemaVersion: z.ZodNumber;
15818
15929
  available: z.ZodBoolean;
15819
- presentation: z.ZodOptional<z.ZodObject<{
15820
- app: z.ZodString;
15821
- }, z.core.$strict>>;
15822
15930
  }, z.core.$strict>;
15823
15931
 
15824
15932
  export declare type WhiteboardTypeInfo = Readonly<z.infer<typeof WhiteboardTypeInfo>>;
package/dist/index.js CHANGED
@@ -260,13 +260,12 @@ var JsonSchema = z4.record(z4.string(), JsonValue);
260
260
  var KAY_PLUGIN_MANIFEST_SIZE_CAP_BYTES = 1024 * 1024;
261
261
  var KAY_PLUGIN_PROTOCOL_VERSION = "kay.plugin.v1";
262
262
  var KAY_PLUGIN_PROTOCOL_PACKAGE_NAME = "@bonsai/plugin-protocol";
263
- var KAY_PLUGIN_SDK_VERSION = "0.46.0";
263
+ var KAY_PLUGIN_SDK_VERSION = "0.47.0";
264
264
  var KAY_PLUGIN_COMPATIBLE_SDK_VERSIONS = [
265
265
  "0.42.0",
266
266
  "0.42.1",
267
267
  "0.43.0",
268
- "0.44.0",
269
- "0.45.0"
268
+ "0.44.0"
270
269
  ];
271
270
  var KAY_PLUGIN_TARGET_NAMES = [
272
271
  "kay.agent",
@@ -2786,11 +2785,8 @@ __export(contributions_exports, {
2786
2785
  ReferencePresentationVariants: () => ReferencePresentationVariants,
2787
2786
  ReferencePresentationWords: () => ReferencePresentationWords,
2788
2787
  ResourceContribution: () => ResourceContribution,
2789
- ResultRendererContribution: () => ResultRendererContribution,
2790
- RichViewContribution: () => RichViewContribution,
2791
2788
  SearchProviderContribution: () => SearchProviderContribution,
2792
2789
  SessionReaderContribution: () => SessionReaderContribution,
2793
- SettingsPanelContribution: () => SettingsPanelContribution,
2794
2790
  SkillContribution: () => SkillContribution,
2795
2791
  ThemeContribution: () => ThemeContribution,
2796
2792
  ToolContribution: () => ToolContribution,
@@ -3644,10 +3640,7 @@ function createContributionsSchemas(canonical) {
3644
3640
  displayName: NonEmptyString3,
3645
3641
  schemaVersion: z12.number().int().positive(),
3646
3642
  storage: WhiteboardTypeStorage2,
3647
- valueSchema: JsonSchema,
3648
- presentation: z12.strictObject({
3649
- app: LocalContributionId2
3650
- }).optional()
3643
+ valueSchema: JsonSchema
3651
3644
  });
3652
3645
  const AppDataMaterializerContribution2 = z12.strictObject({
3653
3646
  source: LocalContributionId2
@@ -3959,15 +3952,6 @@ function createContributionsSchemas(canonical) {
3959
3952
  slot: NonEmptyString3,
3960
3953
  title: NonEmptyString3.optional()
3961
3954
  });
3962
- const SettingsPanelContribution2 = z12.strictObject({
3963
- localId: LocalContributionId2,
3964
- title: NonEmptyString3,
3965
- configSection: NonEmptyString3.optional()
3966
- });
3967
- const ResultRendererContribution2 = z12.strictObject({
3968
- localId: LocalContributionId2,
3969
- resultKinds: z12.array(NonEmptyString3).min(1)
3970
- });
3971
3955
  const NOT_LOCAL_APP_SCHEMES = /* @__PURE__ */ new Set([
3972
3956
  "http",
3973
3957
  "https",
@@ -4175,11 +4159,6 @@ function createContributionsSchemas(canonical) {
4175
4159
  });
4176
4160
  }
4177
4161
  });
4178
- const RichViewContribution2 = z12.strictObject({
4179
- localId: LocalContributionId2,
4180
- title: NonEmptyString3,
4181
- route: NonEmptyString3.optional()
4182
- });
4183
4162
  const KayUiAppHostCapability2 = z12.enum([
4184
4163
  "navigation.open-session",
4185
4164
  // Lets `navigation.openChat` create a blank chat (no message, no model
@@ -4358,10 +4337,7 @@ function createContributionsSchemas(canonical) {
4358
4337
  "mcpServer",
4359
4338
  "uiCommand",
4360
4339
  "uiSlot",
4361
- "settingsPanel",
4362
- "resultRenderer",
4363
4340
  "referencePresentation",
4364
- "view",
4365
4341
  "app",
4366
4342
  "theme",
4367
4343
  "authService",
@@ -4410,8 +4386,6 @@ function createContributionsSchemas(canonical) {
4410
4386
  SessionReaderContribution: SessionReaderContribution2,
4411
4387
  UiCommandContribution: UiCommandContribution2,
4412
4388
  UiSlotContribution: UiSlotContribution2,
4413
- SettingsPanelContribution: SettingsPanelContribution2,
4414
- ResultRendererContribution: ResultRendererContribution2,
4415
4389
  ReferenceOpenBehavior: ReferenceOpenBehavior2,
4416
4390
  ReferencePresentationVariant: ReferencePresentationVariant2,
4417
4391
  ReferencePresentationVariants: ReferencePresentationVariants2,
@@ -4422,7 +4396,6 @@ function createContributionsSchemas(canonical) {
4422
4396
  ReferencePresentationAccountLinks: ReferencePresentationAccountLinks2,
4423
4397
  ReferencePresentationWords: ReferencePresentationWords2,
4424
4398
  ReferencePresentationContribution: ReferencePresentationContribution2,
4425
- RichViewContribution: RichViewContribution2,
4426
4399
  KayUiAppHostCapability: KayUiAppHostCapability2,
4427
4400
  UiAppCapabilities: UiAppCapabilities2,
4428
4401
  UiRailEntryContribution: UiRailEntryContribution2,
@@ -4435,7 +4408,7 @@ function createContributionsSchemas(canonical) {
4435
4408
  PluginContributionKind: PluginContributionKind2
4436
4409
  };
4437
4410
  }
4438
- 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, PluginCardContribution, WorkflowContribution, McpServerUrl, McpServerAuthMode, McpServerContribution, McpServerContributions, AppEventSubscription, ContextContributorContribution, PluginEventDefinitionContribution, PluginNotificationRuleContribution, PluginProductEventContribution, UiEventSubscriptionContribution, DeviceDelegationContribution, SessionReaderContribution, UiCommandContribution, UiSlotContribution, SettingsPanelContribution, ResultRendererContribution, ReferenceOpenBehavior, ReferencePresentationVariant, ReferencePresentationVariants, ReferencePresentationUriPattern, ReferencePresentationUrlClaim, ReferencePresentationTooltip, ReferencePresentationAddress, ReferencePresentationAccountLinks, ReferencePresentationWords, ReferencePresentationContribution, RichViewContribution, KayUiAppHostCapability, UiAppCapabilities, UiRailEntryContribution, UiToastPreviewContribution, UiPageContribution, UiAppContribution, ThemeContribution, CommandHandler, CommandContribution, PluginContributionKind } = createContributionsSchemas(false);
4411
+ 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, PluginCardContribution, WorkflowContribution, McpServerUrl, McpServerAuthMode, McpServerContribution, McpServerContributions, AppEventSubscription, ContextContributorContribution, PluginEventDefinitionContribution, PluginNotificationRuleContribution, PluginProductEventContribution, UiEventSubscriptionContribution, DeviceDelegationContribution, SessionReaderContribution, UiCommandContribution, UiSlotContribution, ReferenceOpenBehavior, ReferencePresentationVariant, ReferencePresentationVariants, ReferencePresentationUriPattern, ReferencePresentationUrlClaim, ReferencePresentationTooltip, ReferencePresentationAddress, ReferencePresentationAccountLinks, ReferencePresentationWords, ReferencePresentationContribution, KayUiAppHostCapability, UiAppCapabilities, UiRailEntryContribution, UiToastPreviewContribution, UiPageContribution, UiAppContribution, ThemeContribution, CommandHandler, CommandContribution, PluginContributionKind } = createContributionsSchemas(false);
4439
4412
  var canonicalContributionSchemas = createContributionsSchemas(true);
4440
4413
  var UI_APP_SOURCE_MODULE = /\.(?:tsx|ts|jsx)$/;
4441
4414
  function isUiAppSourceModule(module) {
@@ -4516,7 +4489,7 @@ var KAY_UI_NATIVE_EVENT_SUBSCRIPTIONS = [
4516
4489
  var KAY_UI_NATIVE_EVENT_ALLOWLIST = new Set(KAY_UI_NATIVE_EVENT_SUBSCRIPTIONS);
4517
4490
  var RETIRED_COMPATIBILITY_KEYS = ["policy"];
4518
4491
  function createManifestSchemas(canonical) {
4519
- const { AgentRenderContribution: AgentRenderContribution2, ApprovalTypeContribution: ApprovalTypeContribution2, WorkflowContribution: WorkflowContribution2, PluginCardContribution: PluginCardContribution2, 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, PluginProductEventContribution: PluginProductEventContribution2, ResourceContribution: ResourceContribution2, ReferencePresentationContribution: ReferencePresentationContribution2, ResultRendererContribution: ResultRendererContribution2, RichViewContribution: RichViewContribution2, PluginSkillSourceDeclaration: PluginSkillSourceDeclaration2, InteractionDriverContribution: InteractionDriverContribution2, SearchProviderContribution: SearchProviderContribution2, SkillContribution: SkillContribution2, SettingsPanelContribution: SettingsPanelContribution2, ThemeContribution: ThemeContribution2, AgentToolContribution: AgentToolContribution2, ToolContribution: ToolContribution2, UiCommandContribution: UiCommandContribution2, UiAppContribution: UiAppContribution2, UiRailEntryContribution: UiRailEntryContribution2, UiToastPreviewContribution: UiToastPreviewContribution2, UiPageContribution: UiPageContribution2, UiEventSubscriptionContribution: UiEventSubscriptionContribution2, UiSlotContribution: UiSlotContribution2, UriModuleContribution: UriModuleContribution2, WhiteboardTypeContribution: WhiteboardTypeContribution2 } = canonical ? canonicalContributionSchemas : contributions_exports;
4492
+ const { AgentRenderContribution: AgentRenderContribution2, ApprovalTypeContribution: ApprovalTypeContribution2, WorkflowContribution: WorkflowContribution2, PluginCardContribution: PluginCardContribution2, 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, PluginProductEventContribution: PluginProductEventContribution2, ResourceContribution: ResourceContribution2, ReferencePresentationContribution: ReferencePresentationContribution2, PluginSkillSourceDeclaration: PluginSkillSourceDeclaration2, InteractionDriverContribution: InteractionDriverContribution2, SearchProviderContribution: SearchProviderContribution2, SkillContribution: SkillContribution2, ThemeContribution: ThemeContribution2, AgentToolContribution: AgentToolContribution2, ToolContribution: ToolContribution2, UiCommandContribution: UiCommandContribution2, UiAppContribution: UiAppContribution2, UiRailEntryContribution: UiRailEntryContribution2, UiToastPreviewContribution: UiToastPreviewContribution2, UiPageContribution: UiPageContribution2, UiEventSubscriptionContribution: UiEventSubscriptionContribution2, UiSlotContribution: UiSlotContribution2, UriModuleContribution: UriModuleContribution2, WhiteboardTypeContribution: WhiteboardTypeContribution2 } = canonical ? canonicalContributionSchemas : contributions_exports;
4520
4493
  const { HttpsUrl: HttpsUrl2, LocalContributionId: LocalContributionId2, NonEmptyString: NonEmptyString3, PackageAssetPath: PackageAssetPath2, PluginId: PluginId2, PluginNamespace: PluginNamespace2, RegistrableDomain: RegistrableDomain2, SignedInStatusCode: SignedInStatusCode2, TargetEntrypoint: TargetEntrypoint2 } = canonical ? canonicalCommonSchemas : common_exports;
4521
4494
  const { PluginPermissionManifest: PluginPermissionManifest2 } = canonical ? canonicalPermissionSchemas : permissions_exports;
4522
4495
  const KayAgentTargetManifest2 = z13.strictObject({
@@ -4635,10 +4608,7 @@ function createManifestSchemas(canonical) {
4635
4608
  contributes: z13.strictObject({
4636
4609
  commands: z13.array(UiCommandContribution2).optional(),
4637
4610
  slots: z13.array(UiSlotContribution2).optional(),
4638
- settingsPanels: z13.array(SettingsPanelContribution2).optional(),
4639
- resultRenderers: z13.array(ResultRendererContribution2).optional(),
4640
4611
  referencePresentations: z13.array(ReferencePresentationContribution2).optional(),
4641
- views: z13.array(RichViewContribution2).optional(),
4642
4612
  apps: z13.array(UiAppContribution2).optional(),
4643
4613
  railEntries: z13.array(UiRailEntryContribution2).optional(),
4644
4614
  toastPreviews: z13.array(UiToastPreviewContribution2).optional(),
@@ -5159,24 +5129,6 @@ function createManifestSchemas(canonical) {
5159
5129
  }
5160
5130
  reportDuplicateLocalIds(ctx, ["targets", "kay", "app", "contributes", "whiteboardTypes"], manifest.targets?.kay?.app?.contributes?.whiteboardTypes, "Whiteboard type");
5161
5131
  const uiAppIds = new Set(manifest.targets?.kay?.ui?.contributes?.apps?.map((app) => app.localId) ?? []);
5162
- for (const [index, type] of (manifest.targets?.kay?.app?.contributes?.whiteboardTypes ?? []).entries()) {
5163
- if (type.presentation !== void 0 && !uiAppIds.has(type.presentation.app)) {
5164
- ctx.addIssue({
5165
- code: "custom",
5166
- path: [
5167
- "targets",
5168
- "kay",
5169
- "app",
5170
- "contributes",
5171
- "whiteboardTypes",
5172
- index,
5173
- "presentation",
5174
- "app"
5175
- ],
5176
- message: `Whiteboard type ${type.localId} references unknown ui app ${type.presentation.app}`
5177
- });
5178
- }
5179
- }
5180
5132
  for (const [index, entry] of (manifest.targets?.kay?.ui?.contributes?.railEntries ?? []).entries()) {
5181
5133
  const body = entry.panel?.body;
5182
5134
  const app = manifest.targets?.kay?.ui?.contributes?.apps?.find((candidate) => candidate.localId === body);
@@ -6034,10 +5986,7 @@ function collectDeclaredContributionIds(manifest) {
6034
5986
  const ui = manifest.targets?.kay?.ui?.contributes;
6035
5987
  pushContributionIds(output, ["targets", "kay", "ui", "contributes", "commands"], ui?.commands);
6036
5988
  pushContributionIds(output, ["targets", "kay", "ui", "contributes", "slots"], ui?.slots);
6037
- pushContributionIds(output, ["targets", "kay", "ui", "contributes", "settingsPanels"], ui?.settingsPanels);
6038
- pushContributionIds(output, ["targets", "kay", "ui", "contributes", "resultRenderers"], ui?.resultRenderers);
6039
5989
  pushContributionIds(output, ["targets", "kay", "ui", "contributes", "referencePresentations"], ui?.referencePresentations);
6040
- pushContributionIds(output, ["targets", "kay", "ui", "contributes", "views"], ui?.views);
6041
5990
  pushContributionIds(output, ["targets", "kay", "ui", "contributes", "apps"], ui?.apps);
6042
5991
  pushContributionIds(output, ["targets", "kay", "ui", "contributes", "themes"], ui?.themes);
6043
5992
  pushContributionIds(output, ["targets", "kay", "ui", "contributes", "eventSubscriptions"], ui?.eventSubscriptions);
@@ -6195,10 +6144,7 @@ function createResolvedContractSchemas(canonical) {
6195
6144
  displayName: NonEmptyString3,
6196
6145
  schemaVersion: z14.number().int().positive(),
6197
6146
  storage: WhiteboardTypeStorage2,
6198
- valueSchema: JsonSchema,
6199
- presentation: z14.strictObject({
6200
- app: GlobalContributionId2
6201
- }).optional()
6147
+ valueSchema: JsonSchema
6202
6148
  });
6203
6149
  const ResolvedKayAppMcpServer2 = z14.strictObject({
6204
6150
  name: LocalContributionId2,
@@ -6534,10 +6480,7 @@ function collectContributionSources(manifest) {
6534
6480
  const ui = manifest.targets?.kay?.ui?.contributes;
6535
6481
  pushAll(output, "kay.ui", "uiCommand", ui?.commands);
6536
6482
  pushAll(output, "kay.ui", "uiSlot", ui?.slots);
6537
- pushAll(output, "kay.ui", "settingsPanel", ui?.settingsPanels);
6538
- pushAll(output, "kay.ui", "resultRenderer", ui?.resultRenderers);
6539
6483
  pushAll(output, "kay.ui", "referencePresentation", ui?.referencePresentations);
6540
- pushAll(output, "kay.ui", "view", ui?.views);
6541
6484
  pushAll(output, "kay.ui", "app", ui?.apps);
6542
6485
  pushAll(output, "kay.ui", "theme", ui?.themes);
6543
6486
  pushAll(output, "kay.ui", "eventSubscription", ui?.eventSubscriptions);
@@ -6864,12 +6807,7 @@ function resolveKayPluginContractV1(manifest) {
6864
6807
  displayName: type.displayName,
6865
6808
  schemaVersion: type.schemaVersion,
6866
6809
  storage: type.storage,
6867
- valueSchema: type.valueSchema,
6868
- ...type.presentation === void 0 ? {} : {
6869
- presentation: {
6870
- app: resolveGlobalContributionId(namespace, type.presentation.app)
6871
- }
6872
- }
6810
+ valueSchema: type.valueSchema
6873
6811
  }));
6874
6812
  const kayAppMcpServers = Object.entries(manifest.targets?.kay?.app?.contributes?.mcpServers ?? {}).map(([name, server]) => ({
6875
6813
  name,
@@ -7633,11 +7571,7 @@ var WhiteboardTypeInfo = z19.strictObject({
7633
7571
  typeId: GlobalContributionId,
7634
7572
  displayName: NonEmptyString,
7635
7573
  schemaVersion: z19.number().int().positive(),
7636
- available: z19.boolean(),
7637
- /** A plugin-owned readonly presentation; absent types use the host fallback. */
7638
- presentation: z19.strictObject({
7639
- app: GlobalContributionId
7640
- }).optional()
7574
+ available: z19.boolean()
7641
7575
  });
7642
7576
 
7643
7577
  // packages/plugin-protocol/dist/product-events.js
@@ -8008,8 +7942,6 @@ export {
8008
7942
  ResolvedReferencePresentation,
8009
7943
  ResolvedTargetGrantSet,
8010
7944
  ResourceContribution,
8011
- ResultRendererContribution,
8012
- RichViewContribution,
8013
7945
  SEMVER_PATTERN,
8014
7946
  SESSION_HEALTH_CLASSIFIER_IDS,
8015
7947
  SESSION_HEALTH_CUSTOM_TYPE,
@@ -8028,7 +7960,6 @@ export {
8028
7960
  SessionProvenanceRecord,
8029
7961
  SessionReaderContribution,
8030
7962
  SessionRelationship,
8031
- SettingsPanelContribution,
8032
7963
  SignedInStatusCode,
8033
7964
  SkillContribution,
8034
7965
  StorageGrantRequest,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yaklabs-ai/plugin-protocol",
3
- "version": "0.46.0",
3
+ "version": "0.47.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",