@yaklabs-ai/plugin-protocol 0.55.14 → 0.55.15

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.55.14"
14
+ "@bonsai/plugin-protocol": "npm:@yaklabs-ai/plugin-protocol@^0.55.15"
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.55.14",
4
+ "version": "0.55.15",
5
5
  "target": "npm",
6
6
  "firstPartyLicense": "MIT",
7
7
  "bundled": [
package/dist/index.d.ts CHANGED
@@ -4193,6 +4193,17 @@ export declare type GlobalContributionId = z.infer<typeof GlobalContributionId>;
4193
4193
  /** Whether `claims` already holds `claim`, under {@link sameClaim}. */
4194
4194
  export declare function hasClaim(claims: readonly PluginCapabilityClaimV1[], claim: PluginCapabilityClaimV1): boolean;
4195
4195
 
4196
+ /**
4197
+ * A vendored MCP server as daemon composition hands it to the MCP host: the resolved row plus the
4198
+ * one fact a single manifest cannot state about itself. `bundled` is stamped by composition from
4199
+ * the shipping plugin's load origin (Bonsai ships it), never from the manifest or the plugin id, and
4200
+ * is absent for a server a user-installed plugin ships. The MCP host trusts a server's own tool
4201
+ * annotations only when it is present.
4202
+ */
4203
+ export declare type HostedKayAppMcpServer = ResolvedKayAppMcpServer & {
4204
+ readonly bundled?: true;
4205
+ };
4206
+
4196
4207
  /**
4197
4208
  * The cookie suffix rule shared by every web-session boundary: whether `host`
4198
4209
  * is `domain` or a subdomain of it. Coined ONCE here - the manifest's scope
@@ -5154,8 +5165,16 @@ export declare const KAY_PLUGIN_PROTOCOL_VERSION: "kay.plugin.v1";
5154
5165
  * `ResetTextPass`), which the host counts per reset (#16714). An entry carrying `pass`, read by a
5155
5166
  * host before 0.55.14, fails that host's parse and its reset writes the summary, as for any entry
5156
5167
  * it cannot use. A plugin writing `pass` declares ^0.55.14; no other plugin's range changes.
5168
+ *
5169
+ * 0.55.15 lets `sessions.run` and a workflow's `runAgent` continue a hidden session the same plugin
5170
+ * minted: the optional `continueSessionId` delivers the instructions as that session's next turn
5171
+ * and answers with that turn's outcome. A continuation may set no model, agent, tool roster,
5172
+ * completion, cwd or label. A `rejected` outcome may carry a `code` (`continue_not_owned`,
5173
+ * `continue_override`, `continue_busy`). Additive, but a host before 0.55.15 ignores the field and
5174
+ * mints a new session, so a plugin that continues declares ^0.55.15. The in-repo plugins move to
5175
+ * ^0.55.15 as the SDK's bump procedure says.
5157
5176
  */
5158
- export declare const KAY_PLUGIN_SDK_VERSION: "0.55.14";
5177
+ export declare const KAY_PLUGIN_SDK_VERSION: "0.55.15";
5159
5178
 
5160
5179
  export declare const KAY_PLUGIN_TARGET_NAMES: readonly ["kay.agent", "kay.app", "kay.ui"];
5161
5180
 
@@ -9106,6 +9125,7 @@ export declare const PluginAgentDefinitionPermissionRule: z.ZodObject<{
9106
9125
  ask: "ask";
9107
9126
  auto: "auto";
9108
9127
  }>>;
9128
+ declaredReadOnly: z.ZodOptional<z.ZodLiteral<true>>;
9109
9129
  }, z.core.$strict>;
9110
9130
 
9111
9131
  export declare type PluginAgentDefinitionPermissionRule = z.infer<typeof PluginAgentDefinitionPermissionRule>;
@@ -9902,6 +9922,7 @@ export declare const PluginCapabilityClaimInputV1: z.ZodCustom<{
9902
9922
  scheme?: string | undefined;
9903
9923
  resource?: string | undefined;
9904
9924
  mode?: "default" | "allow" | "ask" | "auto" | undefined;
9925
+ declaredReadOnly?: true | undefined;
9905
9926
  }[];
9906
9927
  fallback: {
9907
9928
  effect: "allow" | "deny" | "ask";
@@ -9910,6 +9931,7 @@ export declare const PluginCapabilityClaimInputV1: z.ZodCustom<{
9910
9931
  scheme?: string | undefined;
9911
9932
  resource?: string | undefined;
9912
9933
  mode?: "default" | "allow" | "ask" | "auto" | undefined;
9934
+ declaredReadOnly?: true | undefined;
9913
9935
  }[];
9914
9936
  };
9915
9937
  } | {
@@ -10210,6 +10232,7 @@ export declare const PluginCapabilityClaimInputV1: z.ZodCustom<{
10210
10232
  scheme?: string | undefined;
10211
10233
  resource?: string | undefined;
10212
10234
  mode?: "default" | "allow" | "ask" | "auto" | undefined;
10235
+ declaredReadOnly?: true | undefined;
10213
10236
  }[];
10214
10237
  fallback: {
10215
10238
  effect: "allow" | "deny" | "ask";
@@ -10218,6 +10241,7 @@ export declare const PluginCapabilityClaimInputV1: z.ZodCustom<{
10218
10241
  scheme?: string | undefined;
10219
10242
  resource?: string | undefined;
10220
10243
  mode?: "default" | "allow" | "ask" | "auto" | undefined;
10244
+ declaredReadOnly?: true | undefined;
10221
10245
  }[];
10222
10246
  };
10223
10247
  } | {
@@ -10540,6 +10564,7 @@ export declare const PluginCapabilityClaimV1: z.ZodDiscriminatedUnion<[z.ZodObje
10540
10564
  ask: "ask";
10541
10565
  auto: "auto";
10542
10566
  }>>;
10567
+ declaredReadOnly: z.ZodOptional<z.ZodLiteral<true>>;
10543
10568
  }, z.core.$strict>>;
10544
10569
  fallback: z.ZodArray<z.ZodObject<{
10545
10570
  effect: z.ZodEnum<{
@@ -10557,6 +10582,7 @@ export declare const PluginCapabilityClaimV1: z.ZodDiscriminatedUnion<[z.ZodObje
10557
10582
  ask: "ask";
10558
10583
  auto: "auto";
10559
10584
  }>>;
10585
+ declaredReadOnly: z.ZodOptional<z.ZodLiteral<true>>;
10560
10586
  }, z.core.$strict>>;
10561
10587
  }, z.core.$strict>;
10562
10588
  }, z.core.$strict>, z.ZodObject<{
@@ -10904,6 +10930,7 @@ export declare const PluginCapabilityDecisionV1: z.ZodDiscriminatedUnion<[z.ZodO
10904
10930
  ask: "ask";
10905
10931
  auto: "auto";
10906
10932
  }>>;
10933
+ declaredReadOnly: z.ZodOptional<z.ZodLiteral<true>>;
10907
10934
  }, z.core.$strict>>;
10908
10935
  fallback: z.ZodArray<z.ZodObject<{
10909
10936
  effect: z.ZodEnum<{
@@ -10921,6 +10948,7 @@ export declare const PluginCapabilityDecisionV1: z.ZodDiscriminatedUnion<[z.ZodO
10921
10948
  ask: "ask";
10922
10949
  auto: "auto";
10923
10950
  }>>;
10951
+ declaredReadOnly: z.ZodOptional<z.ZodLiteral<true>>;
10924
10952
  }, z.core.$strict>>;
10925
10953
  }, z.core.$strict>;
10926
10954
  }, z.core.$strict>, z.ZodObject<{
@@ -11267,6 +11295,7 @@ export declare const PluginCapabilityDecisionV1: z.ZodDiscriminatedUnion<[z.ZodO
11267
11295
  ask: "ask";
11268
11296
  auto: "auto";
11269
11297
  }>>;
11298
+ declaredReadOnly: z.ZodOptional<z.ZodLiteral<true>>;
11270
11299
  }, z.core.$strict>>;
11271
11300
  fallback: z.ZodArray<z.ZodObject<{
11272
11301
  effect: z.ZodEnum<{
@@ -11284,6 +11313,7 @@ export declare const PluginCapabilityDecisionV1: z.ZodDiscriminatedUnion<[z.ZodO
11284
11313
  ask: "ask";
11285
11314
  auto: "auto";
11286
11315
  }>>;
11316
+ declaredReadOnly: z.ZodOptional<z.ZodLiteral<true>>;
11287
11317
  }, z.core.$strict>>;
11288
11318
  }, z.core.$strict>;
11289
11319
  }, z.core.$strict>, z.ZodObject<{
@@ -11664,6 +11694,7 @@ export declare const PluginCapabilityRefusalV1: z.ZodObject<{
11664
11694
  ask: "ask";
11665
11695
  auto: "auto";
11666
11696
  }>>;
11697
+ declaredReadOnly: z.ZodOptional<z.ZodLiteral<true>>;
11667
11698
  }, z.core.$strict>>;
11668
11699
  fallback: z.ZodArray<z.ZodObject<{
11669
11700
  effect: z.ZodEnum<{
@@ -11681,6 +11712,7 @@ export declare const PluginCapabilityRefusalV1: z.ZodObject<{
11681
11712
  ask: "ask";
11682
11713
  auto: "auto";
11683
11714
  }>>;
11715
+ declaredReadOnly: z.ZodOptional<z.ZodLiteral<true>>;
11684
11716
  }, z.core.$strict>>;
11685
11717
  }, z.core.$strict>;
11686
11718
  }, z.core.$strict>, z.ZodObject<{
package/dist/index.js CHANGED
@@ -260,8 +260,9 @@ 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.55.14";
263
+ var KAY_PLUGIN_SDK_VERSION = "0.55.15";
264
264
  var KAY_PLUGIN_COMPATIBLE_SDK_VERSIONS = [
265
+ "0.55.14",
265
266
  "0.55.13",
266
267
  "0.55.12",
267
268
  "0.55.11",
@@ -1645,7 +1646,15 @@ function createPermissionsSchemas(canonical) {
1645
1646
  /** Restrict to matching resources (a path glob, or a URI-shaped policy address). */
1646
1647
  resource: NonEmptyString3.optional(),
1647
1648
  /** Restrict the rule to one permission mode; omit to apply in all modes. */
1648
- mode: z10.enum(["default", "ask", "allow", "auto"]).optional()
1649
+ mode: z10.enum(["default", "ask", "allow", "auto"]).optional(),
1650
+ /**
1651
+ * Match only a call whose target declares itself read-only and whose tool's host accepted
1652
+ * that declaration; omit to ignore it. Today only the `mcp` tool sets it: for a tool its
1653
+ * server annotates `readOnlyHint: true` (and not `destructiveHint: true`), when that server
1654
+ * is connected and ships with a bundled Bonsai plugin. The call's `kind` is unchanged, so a
1655
+ * read-only agent pairs an allow carrying this field with a fallback deny on the same tool.
1656
+ */
1657
+ declaredReadOnly: z10.literal(true).optional()
1649
1658
  });
1650
1659
  function stripRetiredPermissionAsks(value) {
1651
1660
  if (typeof value !== "object" || value === null || Array.isArray(value)) {
@@ -1890,7 +1899,8 @@ var AGENT_PERMISSION_RULE_FIELDS = [
1890
1899
  "ruleKey",
1891
1900
  "scheme",
1892
1901
  "resource",
1893
- "mode"
1902
+ "mode",
1903
+ "declaredReadOnly"
1894
1904
  ];
1895
1905
  function createAuthoritySchemas(canonical) {
1896
1906
  const { ArtifactGenerationId: ArtifactGenerationId2, NonEmptyString: NonEmptyString3, UriScheme: UriScheme2, PluginId: PluginId2, LocalContributionId: LocalContributionId2 } = canonical ? canonicalCommonSchemas : common_exports;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yaklabs-ai/plugin-protocol",
3
- "version": "0.55.14",
3
+ "version": "0.55.15",
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",