@yaklabs-ai/plugin-protocol 0.12.4 → 0.13.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
- "@kay/plugin-protocol": "npm:@yaklabs-ai/plugin-protocol@^0.12.4"
14
+ "@kay/plugin-protocol": "npm:@yaklabs-ai/plugin-protocol@^0.13.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.12.4",
4
+ "version": "0.13.0",
5
5
  "target": "npm",
6
6
  "firstPartyLicense": "MIT",
7
7
  "bundled": [],
package/dist/index.d.ts CHANGED
@@ -1973,7 +1973,7 @@ export declare const KAY_APP_DATA_SNAPSHOT_MAX_BYTES: number;
1973
1973
  export declare const KAY_EVENT_PUBLISHER_ID: "kay";
1974
1974
 
1975
1975
  /** Released SDK contracts still implemented by the host, alongside its current SDK. */
1976
- export declare const KAY_PLUGIN_COMPATIBLE_SDK_VERSIONS: readonly ["0.8.0", "0.8.1", "0.8.2", "0.8.3", "0.8.4", "0.8.5", "0.9.0", "0.9.1", "0.10.0", "0.11.0", "0.11.1", "0.12.0", "0.12.1", "0.12.2", "0.12.3"];
1976
+ export declare const KAY_PLUGIN_COMPATIBLE_SDK_VERSIONS: readonly ["0.8.0", "0.8.1", "0.8.2", "0.8.3", "0.8.4", "0.8.5", "0.9.0", "0.9.1", "0.10.0", "0.11.0", "0.11.1", "0.12.0", "0.12.1", "0.12.2", "0.12.3", "0.12.4", "0.12.5"];
1977
1977
 
1978
1978
  export declare const KAY_PLUGIN_PROTOCOL_PACKAGE_NAME: "@kay/plugin-protocol";
1979
1979
 
@@ -2170,8 +2170,34 @@ export declare const KAY_PLUGIN_PROTOCOL_VERSION: "kay.plugin.v1";
2170
2170
  * answering `unknown` rather than throwing. Always present and ungated, like `app.paths`. Additive:
2171
2171
  * a plugin compiled against 0.12.3 never reads it. A plugin that calls it declares `^0.12.4`, so an
2172
2172
  * older host refuses a directory or repository plugin at load instead of the call failing.
2173
+ *
2174
+ * 0.12.5 adds `userFiles` (`KayAppUserFiles`) on both `app` and the `kay.agent` api: stat, read,
2175
+ * list, walk, realpath, write, mkdir and rename in user folders, run by the host on its own worker
2176
+ * threads under a deadline and answering a typed result rather than throwing. Always present and
2177
+ * ungated, like `app.paths`. Additive: a plugin compiled against 0.12.4 never reads it. A plugin
2178
+ * that calls it declares `^0.12.5`, so an older host refuses a directory or repository plugin at
2179
+ * load instead of the call failing.
2180
+ *
2181
+ * 0.13.0 adds `@kay/plugin-sdk/fs`, Kay's own `node:fs/promises`: the same functions, arguments,
2182
+ * return types and errors, with every call run on the host's user-files workers under a deadline
2183
+ * (`ERR_KAY_FS_DEADLINE` and siblings when the host gives up or does not try), plus
2184
+ * `writeFileAtomic` and `withTimeout`. With no host installed it is Node's own module. It adds
2185
+ * `api.familyFolder` (`KayAgentFamilyFolder`), whose `path()` answers the plugin's folder in its
2186
+ * session family's Whiteboard, and makes it a required member of `KayAgentPluginApi`. It removes
2187
+ * the `kay.agent` api's `filesystem` broker, the `filesystem.read` / `filesystem.write`
2188
+ * permissions it was gated by, the `{ root: "filesystem", selector }` URI backing and the URI
2189
+ * module `verbs` that went with it: plugins use `@kay/plugin-sdk/fs`, `userFiles` or
2190
+ * `familyFolder` instead. No plugin used them. Stored grants naming the retired permissions are
2191
+ * ignored, not refused. For the api surface this is a clean break with no shim and deliberately
2192
+ * NOT a load refusal, like 0.12.0: every earlier release stays in the retention list, so a
2193
+ * plugin compiled against 0.12.x that reads `api.filesystem` gets `undefined` at the call. The
2194
+ * manifest is different: a manifest that still declares URI-module `verbs` or
2195
+ * `filesystemBacking: { root: "filesystem" }` fails to parse and is refused at load (no plugin
2196
+ * declared either). A plugin that imports
2197
+ * `@kay/plugin-sdk/fs` or calls `familyFolder` declares `^0.13.0`, so an older host refuses a
2198
+ * directory or repository plugin at load.
2173
2199
  */
2174
- export declare const KAY_PLUGIN_SDK_VERSION: "0.12.4";
2200
+ export declare const KAY_PLUGIN_SDK_VERSION: "0.13.0";
2175
2201
 
2176
2202
  export declare const KAY_PLUGIN_TARGET_NAMES: readonly ["kay.agent", "kay.app", "kay.ui"];
2177
2203
 
@@ -2204,16 +2230,8 @@ export declare const KayAgentTargetManifest: z.ZodObject<{
2204
2230
  localId: z.ZodString;
2205
2231
  schemes: z.ZodArray<z.ZodString>;
2206
2232
  displayName: z.ZodOptional<z.ZodString>;
2207
- filesystemBacking: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
2233
+ filesystemBacking: z.ZodOptional<z.ZodObject<{
2208
2234
  root: z.ZodLiteral<"dataDir">;
2209
- }, z.core.$strict>, z.ZodObject<{
2210
- root: z.ZodLiteral<"filesystem">;
2211
- selector: z.ZodString;
2212
- }, z.core.$strict>], "root">>;
2213
- verbs: z.ZodOptional<z.ZodObject<{
2214
- writable: z.ZodOptional<z.ZodBoolean>;
2215
- editable: z.ZodOptional<z.ZodBoolean>;
2216
- deletable: z.ZodOptional<z.ZodBoolean>;
2217
2235
  }, z.core.$strict>>;
2218
2236
  authService: z.ZodOptional<z.ZodString>;
2219
2237
  knownResources: z.ZodOptional<z.ZodLiteral<true>>;
@@ -2552,16 +2570,8 @@ export declare const KayPluginManifestV1: z.ZodObject<{
2552
2570
  localId: z.ZodString;
2553
2571
  schemes: z.ZodArray<z.ZodString>;
2554
2572
  displayName: z.ZodOptional<z.ZodString>;
2555
- filesystemBacking: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
2573
+ filesystemBacking: z.ZodOptional<z.ZodObject<{
2556
2574
  root: z.ZodLiteral<"dataDir">;
2557
- }, z.core.$strict>, z.ZodObject<{
2558
- root: z.ZodLiteral<"filesystem">;
2559
- selector: z.ZodString;
2560
- }, z.core.$strict>], "root">>;
2561
- verbs: z.ZodOptional<z.ZodObject<{
2562
- writable: z.ZodOptional<z.ZodBoolean>;
2563
- editable: z.ZodOptional<z.ZodBoolean>;
2564
- deletable: z.ZodOptional<z.ZodBoolean>;
2565
2575
  }, z.core.$strict>>;
2566
2576
  authService: z.ZodOptional<z.ZodString>;
2567
2577
  knownResources: z.ZodOptional<z.ZodLiteral<true>>;
@@ -3713,7 +3723,7 @@ export declare function parseResolvedPluginContractV1(value: unknown): ResolvedP
3713
3723
  export declare function parseSemver(value: string): ParsedSemver | undefined;
3714
3724
 
3715
3725
  /** Every capability slug {@link PluginCapabilityClaimV1} can express, for exhaustive table checks. */
3716
- export declare const PLUGIN_CAPABILITY_SLUGS: readonly ["sessions.run", "network.connect", "web-session.request", "web-session.download", "filesystem.read", "filesystem.write", "process.spawn", "corpus.read", "signals.read", "skills.read", "workspace.command", "sessions.create", "sessions.update", "models.complete", "jev.use", "automations.write", "automations.run", "workflows.define", "session-events.subscribe", "agents.run", "dynamic-context.register", "app-data.register", "account.assert", "account.update", "agents.permissions", "tool-interception.register", "interaction.surface", "config.declare-section", "auth.own-service", "auth.shared-identity", "cli.bind", "whiteboard.discover", "whiteboard.read", "whiteboard.create", "whiteboard.update", "whiteboard.remove"];
3726
+ export declare const PLUGIN_CAPABILITY_SLUGS: readonly ["sessions.run", "network.connect", "web-session.request", "web-session.download", "process.spawn", "corpus.read", "signals.read", "skills.read", "workspace.command", "sessions.create", "sessions.update", "models.complete", "jev.use", "automations.write", "automations.run", "workflows.define", "session-events.subscribe", "agents.run", "dynamic-context.register", "app-data.register", "account.assert", "account.update", "agents.permissions", "tool-interception.register", "interaction.surface", "config.declare-section", "auth.own-service", "auth.shared-identity", "cli.bind", "whiteboard.discover", "whiteboard.read", "whiteboard.create", "whiteboard.update", "whiteboard.remove"];
3717
3727
 
3718
3728
  /** The root `<svg>` attribute a tile icon declares itself with. */
3719
3729
  export declare const PLUGIN_ICON_SHAPE_ATTRIBUTE = "data-icon-shape";
@@ -4122,18 +4132,6 @@ export declare const PluginCapabilityClaimV1: z.ZodDiscriminatedUnion<[z.ZodObje
4122
4132
  origin: z.ZodString;
4123
4133
  pathPrefix: z.ZodString;
4124
4134
  }, z.core.$strict>;
4125
- }, z.core.$strict>, z.ZodObject<{
4126
- target: z.ZodLiteral<"kay.agent">;
4127
- slug: z.ZodLiteral<"filesystem.read">;
4128
- envelope: z.ZodObject<{
4129
- root: z.ZodString;
4130
- }, z.core.$strict>;
4131
- }, z.core.$strict>, z.ZodObject<{
4132
- target: z.ZodLiteral<"kay.agent">;
4133
- slug: z.ZodLiteral<"filesystem.write">;
4134
- envelope: z.ZodObject<{
4135
- root: z.ZodString;
4136
- }, z.core.$strict>;
4137
4135
  }, z.core.$strict>, z.ZodObject<{
4138
4136
  target: z.ZodLiteral<"kay.agent">;
4139
4137
  slug: z.ZodLiteral<"process.spawn">;
@@ -4342,18 +4340,6 @@ export declare const PluginCapabilityDecisionV1: z.ZodDiscriminatedUnion<[z.ZodO
4342
4340
  origin: z.ZodString;
4343
4341
  pathPrefix: z.ZodString;
4344
4342
  }, z.core.$strict>;
4345
- }, z.core.$strict>, z.ZodObject<{
4346
- target: z.ZodLiteral<"kay.agent">;
4347
- slug: z.ZodLiteral<"filesystem.read">;
4348
- envelope: z.ZodObject<{
4349
- root: z.ZodString;
4350
- }, z.core.$strict>;
4351
- }, z.core.$strict>, z.ZodObject<{
4352
- target: z.ZodLiteral<"kay.agent">;
4353
- slug: z.ZodLiteral<"filesystem.write">;
4354
- envelope: z.ZodObject<{
4355
- root: z.ZodString;
4356
- }, z.core.$strict>;
4357
4343
  }, z.core.$strict>, z.ZodObject<{
4358
4344
  target: z.ZodLiteral<"kay.agent">;
4359
4345
  slug: z.ZodLiteral<"process.spawn">;
@@ -4557,18 +4543,6 @@ export declare const PluginCapabilityDecisionV1: z.ZodDiscriminatedUnion<[z.ZodO
4557
4543
  origin: z.ZodString;
4558
4544
  pathPrefix: z.ZodString;
4559
4545
  }, z.core.$strict>;
4560
- }, z.core.$strict>, z.ZodObject<{
4561
- target: z.ZodLiteral<"kay.agent">;
4562
- slug: z.ZodLiteral<"filesystem.read">;
4563
- envelope: z.ZodObject<{
4564
- root: z.ZodString;
4565
- }, z.core.$strict>;
4566
- }, z.core.$strict>, z.ZodObject<{
4567
- target: z.ZodLiteral<"kay.agent">;
4568
- slug: z.ZodLiteral<"filesystem.write">;
4569
- envelope: z.ZodObject<{
4570
- root: z.ZodString;
4571
- }, z.core.$strict>;
4572
4546
  }, z.core.$strict>, z.ZodObject<{
4573
4547
  target: z.ZodLiteral<"kay.agent">;
4574
4548
  slug: z.ZodLiteral<"process.spawn">;
@@ -4835,18 +4809,6 @@ export declare const PluginCapabilityRefusalV1: z.ZodObject<{
4835
4809
  origin: z.ZodString;
4836
4810
  pathPrefix: z.ZodString;
4837
4811
  }, z.core.$strict>;
4838
- }, z.core.$strict>, z.ZodObject<{
4839
- target: z.ZodLiteral<"kay.agent">;
4840
- slug: z.ZodLiteral<"filesystem.read">;
4841
- envelope: z.ZodObject<{
4842
- root: z.ZodString;
4843
- }, z.core.$strict>;
4844
- }, z.core.$strict>, z.ZodObject<{
4845
- target: z.ZodLiteral<"kay.agent">;
4846
- slug: z.ZodLiteral<"filesystem.write">;
4847
- envelope: z.ZodObject<{
4848
- root: z.ZodString;
4849
- }, z.core.$strict>;
4850
4812
  }, z.core.$strict>, z.ZodObject<{
4851
4813
  target: z.ZodLiteral<"kay.agent">;
4852
4814
  slug: z.ZodLiteral<"process.spawn">;
@@ -5944,16 +5906,8 @@ export declare const ResolvedKayAgentUriModule: z.ZodObject<{
5944
5906
  localId: z.ZodString;
5945
5907
  globalId: z.ZodString;
5946
5908
  schemes: z.ZodArray<z.ZodString>;
5947
- filesystemBacking: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
5909
+ filesystemBacking: z.ZodOptional<z.ZodObject<{
5948
5910
  root: z.ZodLiteral<"dataDir">;
5949
- }, z.core.$strict>, z.ZodObject<{
5950
- root: z.ZodLiteral<"filesystem">;
5951
- selector: z.ZodString;
5952
- }, z.core.$strict>], "root">>;
5953
- verbs: z.ZodOptional<z.ZodObject<{
5954
- writable: z.ZodOptional<z.ZodBoolean>;
5955
- editable: z.ZodOptional<z.ZodBoolean>;
5956
- deletable: z.ZodOptional<z.ZodBoolean>;
5957
5911
  }, z.core.$strict>>;
5958
5912
  knownResources: z.ZodOptional<z.ZodLiteral<true>>;
5959
5913
  }, z.core.$strict>;
@@ -6762,16 +6716,8 @@ export declare const ResolvedPluginContractV1: z.ZodObject<{
6762
6716
  localId: z.ZodString;
6763
6717
  globalId: z.ZodString;
6764
6718
  schemes: z.ZodArray<z.ZodString>;
6765
- filesystemBacking: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
6719
+ filesystemBacking: z.ZodOptional<z.ZodObject<{
6766
6720
  root: z.ZodLiteral<"dataDir">;
6767
- }, z.core.$strict>, z.ZodObject<{
6768
- root: z.ZodLiteral<"filesystem">;
6769
- selector: z.ZodString;
6770
- }, z.core.$strict>], "root">>;
6771
- verbs: z.ZodOptional<z.ZodObject<{
6772
- writable: z.ZodOptional<z.ZodBoolean>;
6773
- editable: z.ZodOptional<z.ZodBoolean>;
6774
- deletable: z.ZodOptional<z.ZodBoolean>;
6775
6721
  }, z.core.$strict>>;
6776
6722
  knownResources: z.ZodOptional<z.ZodLiteral<true>>;
6777
6723
  }, z.core.$strict>>>;
@@ -7512,6 +7458,9 @@ export declare const RETIRED_COMPATIBILITY_KEYS: readonly ["policy"];
7512
7458
  */
7513
7459
  export declare const RETIRED_PERMISSION_ASK_KEYS: readonly ["network", "process", "filesystem", "corpus", "paths", "workspace", "sessions", "automations", "hindsight", "agents", "dynamicContext", "appData", "toolInterception", "account", "device", "config", "workflows", "whiteboard"];
7514
7460
 
7461
+ /** Capability slugs retired in SDK 0.13.0; a stored grant naming one is ignored, never refused. */
7462
+ export declare const RETIRED_PLUGIN_CAPABILITY_SLUGS: readonly ["filesystem.read", "filesystem.write"];
7463
+
7515
7464
  /**
7516
7465
  * The one retired FIELD inside a surviving row: a `webSession` row's `operations` only ever fed the
7517
7466
  * deleted declaration check (the row itself stays, as routing).
@@ -8427,13 +8376,10 @@ export declare const UiSlotContribution: z.ZodObject<{
8427
8376
 
8428
8377
  export declare type UiSlotContribution = z.infer<typeof UiSlotContribution>;
8429
8378
 
8430
- /** A request for host-authorized filesystem projection; mutation needs separate verb authority. */
8431
- export declare const UriFilesystemBacking: z.ZodDiscriminatedUnion<[z.ZodObject<{
8379
+ /** A request for a read-only projection of the plugin's private data directory. */
8380
+ export declare const UriFilesystemBacking: z.ZodObject<{
8432
8381
  root: z.ZodLiteral<"dataDir">;
8433
- }, z.core.$strict>, z.ZodObject<{
8434
- root: z.ZodLiteral<"filesystem">;
8435
- selector: z.ZodString;
8436
- }, z.core.$strict>], "root">;
8382
+ }, z.core.$strict>;
8437
8383
 
8438
8384
  export declare type UriFilesystemBacking = z.infer<typeof UriFilesystemBacking>;
8439
8385
 
@@ -8441,16 +8387,8 @@ export declare const UriModuleContribution: z.ZodObject<{
8441
8387
  localId: z.ZodString;
8442
8388
  schemes: z.ZodArray<z.ZodString>;
8443
8389
  displayName: z.ZodOptional<z.ZodString>;
8444
- filesystemBacking: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
8390
+ filesystemBacking: z.ZodOptional<z.ZodObject<{
8445
8391
  root: z.ZodLiteral<"dataDir">;
8446
- }, z.core.$strict>, z.ZodObject<{
8447
- root: z.ZodLiteral<"filesystem">;
8448
- selector: z.ZodString;
8449
- }, z.core.$strict>], "root">>;
8450
- verbs: z.ZodOptional<z.ZodObject<{
8451
- writable: z.ZodOptional<z.ZodBoolean>;
8452
- editable: z.ZodOptional<z.ZodBoolean>;
8453
- deletable: z.ZodOptional<z.ZodBoolean>;
8454
8392
  }, z.core.$strict>>;
8455
8393
  authService: z.ZodOptional<z.ZodString>;
8456
8394
  knownResources: z.ZodOptional<z.ZodLiteral<true>>;
package/dist/index.js CHANGED
@@ -115,7 +115,7 @@ import { z as z2 } from "zod";
115
115
  import { z } from "zod";
116
116
  var KAY_PLUGIN_PROTOCOL_VERSION = "kay.plugin.v1";
117
117
  var KAY_PLUGIN_PROTOCOL_PACKAGE_NAME = "@kay/plugin-protocol";
118
- var KAY_PLUGIN_SDK_VERSION = "0.12.4";
118
+ var KAY_PLUGIN_SDK_VERSION = "0.13.0";
119
119
  var KAY_PLUGIN_COMPATIBLE_SDK_VERSIONS = [
120
120
  "0.8.0",
121
121
  "0.8.1",
@@ -131,7 +131,9 @@ var KAY_PLUGIN_COMPATIBLE_SDK_VERSIONS = [
131
131
  "0.12.0",
132
132
  "0.12.1",
133
133
  "0.12.2",
134
- "0.12.3"
134
+ "0.12.3",
135
+ "0.12.4",
136
+ "0.12.5"
135
137
  ];
136
138
  var KAY_PLUGIN_TARGET_NAMES = [
137
139
  "kay.agent",
@@ -1496,16 +1498,6 @@ var PluginCapabilityClaimV1 = z6.discriminatedUnion("slug", [
1496
1498
  pathPrefix: NonEmptyString
1497
1499
  })
1498
1500
  }),
1499
- z6.strictObject({
1500
- target: z6.literal("kay.agent"),
1501
- slug: z6.literal("filesystem.read"),
1502
- envelope: z6.strictObject({ root: NonEmptyString })
1503
- }),
1504
- z6.strictObject({
1505
- target: z6.literal("kay.agent"),
1506
- slug: z6.literal("filesystem.write"),
1507
- envelope: z6.strictObject({ root: NonEmptyString })
1508
- }),
1509
1501
  z6.strictObject({
1510
1502
  target: z6.literal("kay.agent"),
1511
1503
  slug: z6.literal("process.spawn"),
@@ -1665,13 +1657,15 @@ var PluginCapabilityClaimV1 = z6.discriminatedUnion("slug", [
1665
1657
  }),
1666
1658
  WhiteboardCapabilityClaimV1
1667
1659
  ]);
1660
+ var RETIRED_PLUGIN_CAPABILITY_SLUGS = [
1661
+ "filesystem.read",
1662
+ "filesystem.write"
1663
+ ];
1668
1664
  var PLUGIN_CAPABILITY_SLUGS = [
1669
1665
  "sessions.run",
1670
1666
  "network.connect",
1671
1667
  "web-session.request",
1672
1668
  "web-session.download",
1673
- "filesystem.read",
1674
- "filesystem.write",
1675
1669
  "process.spawn",
1676
1670
  "corpus.read",
1677
1671
  "signals.read",
@@ -1799,9 +1793,6 @@ function sameClaim(a, b) {
1799
1793
  case "web-session.request":
1800
1794
  case "web-session.download":
1801
1795
  return (b.slug === "web-session.request" || b.slug === "web-session.download") && a.envelope.origin === b.envelope.origin && a.envelope.pathPrefix === b.envelope.pathPrefix;
1802
- case "filesystem.read":
1803
- case "filesystem.write":
1804
- return (b.slug === "filesystem.read" || b.slug === "filesystem.write") && a.envelope.root === b.envelope.root;
1805
1796
  case "process.spawn":
1806
1797
  return b.slug === "process.spawn" && a.envelope.command === b.envelope.command && a.envelope.argvClass === b.envelope.argvClass;
1807
1798
  case "interaction.surface":
@@ -1869,9 +1860,6 @@ function envelopePairs(a, b) {
1869
1860
  [a.envelope.origin, b.envelope.origin],
1870
1861
  [a.envelope.pathPrefix, b.envelope.pathPrefix]
1871
1862
  ] : [];
1872
- case "filesystem.read":
1873
- case "filesystem.write":
1874
- return b.slug === "filesystem.read" || b.slug === "filesystem.write" ? [[a.envelope.root, b.envelope.root]] : [];
1875
1863
  case "process.spawn":
1876
1864
  return b.slug === "process.spawn" ? [
1877
1865
  [a.envelope.command, b.envelope.command],
@@ -2190,13 +2178,9 @@ function checkKayPluginHostCompatibility(compatibility, host) {
2190
2178
  // packages/plugin-protocol/dist/contributions.js
2191
2179
  import { z as z7 } from "zod";
2192
2180
  var OptionalDisplayName = NonEmptyString.optional();
2193
- var UriFilesystemBacking = z7.discriminatedUnion("root", [
2194
- z7.strictObject({ root: z7.literal("dataDir") }),
2195
- z7.strictObject({
2196
- root: z7.literal("filesystem"),
2197
- selector: NonEmptyString
2198
- })
2199
- ]);
2181
+ var UriFilesystemBacking = z7.strictObject({
2182
+ root: z7.literal("dataDir")
2183
+ });
2200
2184
  var ToolContribution = z7.strictObject({
2201
2185
  localId: LocalContributionId,
2202
2186
  toolName: PluginToolName,
@@ -2213,20 +2197,13 @@ var ConverterContribution = z7.strictObject({
2213
2197
  /** Extension fallbacks (no dot) used when a probe has no usable MIME type. */
2214
2198
  extensions: z7.array(FileExtensionToken).min(1).optional()
2215
2199
  });
2216
- var UriMutationVerbs = z7.strictObject({
2217
- writable: z7.boolean().optional(),
2218
- editable: z7.boolean().optional(),
2219
- deletable: z7.boolean().optional()
2220
- });
2221
- var UriModuleContributionBase = z7.strictObject({
2200
+ var UriModuleContribution = z7.strictObject({
2222
2201
  localId: LocalContributionId,
2223
2202
  schemes: z7.array(UriScheme).min(1),
2224
2203
  displayName: OptionalDisplayName,
2225
2204
  // The plugin only requests a projection. The daemon binds the effective root
2226
2205
  // and retains access control at finalization.
2227
2206
  filesystemBacking: UriFilesystemBacking.optional(),
2228
- /** Host-native mutation verbs requested for an external filesystem projection. */
2229
- verbs: UriMutationVerbs.optional(),
2230
2207
  // A local ref (no dot) must name an auth service declared in this same
2231
2208
  // manifest; a qualified ref (dotted, e.g. `google.account`) names another
2232
2209
  // plugin's already-minted global id and is recorded, not resolved, here (see
@@ -2243,19 +2220,9 @@ var UriModuleContributionBase = z7.strictObject({
2243
2220
  // `lab/user-plugins/decisions/014-known-resources-ledger.md`.
2244
2221
  knownResources: z7.literal(true).optional()
2245
2222
  });
2246
- var UriModuleContribution = UriModuleContributionBase.superRefine((module, ctx) => {
2247
- if (module.verbs !== void 0 && module.filesystemBacking?.root !== "filesystem") {
2248
- ctx.addIssue({
2249
- code: "custom",
2250
- path: ["verbs"],
2251
- message: "URI mutation verbs require external filesystem backing (root: 'filesystem')."
2252
- });
2253
- }
2254
- });
2255
- var AppUriModuleContribution = UriModuleContributionBase.omit({
2223
+ var AppUriModuleContribution = UriModuleContribution.omit({
2256
2224
  authService: true,
2257
2225
  filesystemBacking: true,
2258
- verbs: true,
2259
2226
  knownResources: true
2260
2227
  });
2261
2228
  var AppDataSourceContribution = z7.strictObject({
@@ -3865,21 +3832,8 @@ var ResolvedKayAgentUriModule = z9.strictObject({
3865
3832
  globalId: GlobalContributionId,
3866
3833
  schemes: z9.array(UriScheme).min(1),
3867
3834
  filesystemBacking: UriFilesystemBacking.optional(),
3868
- verbs: z9.strictObject({
3869
- writable: z9.boolean().optional(),
3870
- editable: z9.boolean().optional(),
3871
- deletable: z9.boolean().optional()
3872
- }).optional(),
3873
3835
  /** Mirrors `UriModuleContribution.knownResources` (host-side recording opt-in). */
3874
3836
  knownResources: z9.literal(true).optional()
3875
- }).superRefine((module, ctx) => {
3876
- if (module.verbs !== void 0 && module.filesystemBacking?.root !== "filesystem") {
3877
- ctx.addIssue({
3878
- code: "custom",
3879
- path: ["verbs"],
3880
- message: "Resolved URI mutation verbs require external filesystem backing (root: 'filesystem')."
3881
- });
3882
- }
3883
3837
  });
3884
3838
  var ResolvedKayAgentArtifactUriModule = z9.strictObject({
3885
3839
  localId: LocalContributionId,
@@ -4384,7 +4338,6 @@ function resolveKayPluginContractV1(manifest) {
4384
4338
  globalId: resolveGlobalContributionId(namespace, module.localId),
4385
4339
  schemes: [...module.schemes],
4386
4340
  ...module.filesystemBacking === void 0 ? {} : { filesystemBacking: module.filesystemBacking },
4387
- ...module.verbs === void 0 ? {} : { verbs: module.verbs },
4388
4341
  ...module.knownResources === void 0 ? {} : { knownResources: module.knownResources }
4389
4342
  }));
4390
4343
  const kayAgentArtifactUriModules = manifest.targets?.kay?.agent?.contributes?.artifactUriModules?.map((module) => ({
@@ -4801,6 +4754,7 @@ export {
4801
4754
  PluginWebSessionProbe,
4802
4755
  RETIRED_COMPATIBILITY_KEYS,
4803
4756
  RETIRED_PERMISSION_ASK_KEYS,
4757
+ RETIRED_PLUGIN_CAPABILITY_SLUGS,
4804
4758
  RETIRED_WEB_SESSION_ROW_KEYS,
4805
4759
  ReferenceOpenBehavior,
4806
4760
  ReferencePresentationContribution,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yaklabs-ai/plugin-protocol",
3
- "version": "0.12.4",
3
+ "version": "0.13.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",