@yaklabs-ai/plugin-protocol 0.55.4 → 0.55.6

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/dist/index.js CHANGED
@@ -260,8 +260,10 @@ 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.4";
263
+ var KAY_PLUGIN_SDK_VERSION = "0.55.6";
264
264
  var KAY_PLUGIN_COMPATIBLE_SDK_VERSIONS = [
265
+ "0.55.5",
266
+ "0.55.4",
265
267
  "0.55.3",
266
268
  "0.55.2",
267
269
  "0.55.1",
@@ -1815,6 +1817,8 @@ var PLUGIN_CAPABILITY_SLUGS = [
1815
1817
  "process.run",
1816
1818
  "sessions.annotate",
1817
1819
  "sessions.compact",
1820
+ "sessions.state",
1821
+ "compaction.reset-text",
1818
1822
  "soul.write",
1819
1823
  "tools.describe",
1820
1824
  "workspace.command",
@@ -1865,7 +1869,8 @@ var PRIVATE_PLUGIN_CAPABILITY_SLUGS = [
1865
1869
  "workflows.signals",
1866
1870
  "sessions.assign-project",
1867
1871
  "artifacts.resolve-file",
1868
- "process.run"
1872
+ "process.run",
1873
+ "compaction.reset-text"
1869
1874
  ];
1870
1875
  function isPrivateCapabilityClaim(claim) {
1871
1876
  return PRIVATE_PLUGIN_CAPABILITY_SLUGS.includes(claim.slug);
@@ -2063,6 +2068,23 @@ function createAuthoritySchemas(canonical) {
2063
2068
  slug: z11.literal("sessions.compact"),
2064
2069
  envelope: z11.strictObject({})
2065
2070
  }),
2071
+ z11.strictObject({
2072
+ // Read and write this plugin's own state entries in a session's transcript
2073
+ // (`app.sessions.readState` / `writeState`): custom entries stored under the plugin's own
2074
+ // id, each write checked against the newest one. A write is bound like `sessions.annotate`
2075
+ // to the session whose event the calling handler is answering; a read is not bound.
2076
+ target: z11.literal("kay.app"),
2077
+ slug: z11.literal("sessions.state"),
2078
+ envelope: z11.strictObject({})
2079
+ }),
2080
+ z11.strictObject({
2081
+ // Supply the working state a conversation's reset uses in place of the summary: the text the
2082
+ // plugin's declared `contributes.resetText` entry holds, checked by herd before it is used.
2083
+ // Private (PRIVATE_PLUGIN_CAPABILITY_SLUGS): only a plugin the release carries may hold it.
2084
+ target: z11.literal("kay.app"),
2085
+ slug: z11.literal("compaction.reset-text"),
2086
+ envelope: z11.strictObject({})
2087
+ }),
2066
2088
  z11.strictObject({
2067
2089
  // Read and rewrite the soul file every new conversation is told. Private
2068
2090
  // (PRIVATE_PLUGIN_CAPABILITY_SLUGS): only a plugin the release carries may hold it.
@@ -2382,6 +2404,8 @@ function sameClaim(a, b) {
2382
2404
  case "process.run":
2383
2405
  case "sessions.annotate":
2384
2406
  case "sessions.compact":
2407
+ case "sessions.state":
2408
+ case "compaction.reset-text":
2385
2409
  case "soul.write":
2386
2410
  case "tools.describe":
2387
2411
  case "workspace.command":
@@ -2478,6 +2502,8 @@ function envelopePairs(a, b) {
2478
2502
  case "process.run":
2479
2503
  case "sessions.annotate":
2480
2504
  case "sessions.compact":
2505
+ case "sessions.state":
2506
+ case "compaction.reset-text":
2481
2507
  case "soul.write":
2482
2508
  case "tools.describe":
2483
2509
  case "workspace.command":
@@ -4934,7 +4960,7 @@ var ShellCommandStep = z16.discriminatedUnion("kind", [
4934
4960
  ]);
4935
4961
 
4936
4962
  // packages/plugin-protocol/dist/manifest.js
4937
- import { z as z18 } from "zod";
4963
+ import { z as z19 } from "zod";
4938
4964
 
4939
4965
  // packages/plugin-protocol/dist/workload-purposes.js
4940
4966
  import { z as z17 } from "zod";
@@ -4943,6 +4969,42 @@ var PluginWorkloadPurpose = z17.strictObject({
4943
4969
  workloadClass: z17.enum(["dreaming", "hindsight"])
4944
4970
  });
4945
4971
 
4972
+ // packages/plugin-protocol/dist/reset-text.js
4973
+ import { z as z18 } from "zod";
4974
+
4975
+ // packages/plugin-protocol/dist/session-state.js
4976
+ var PLUGIN_STATE_ENTRY_NAME_PATTERN = /^[a-z][a-z0-9-]{0,63}$/;
4977
+ var PLUGIN_STATE_ENTRY_MAX_BYTES = 256 * 1024;
4978
+ var PLUGIN_STATE_ENTRY_MAX_DEPTH = 64;
4979
+ var PLUGIN_STATE_ENTRY_TYPE_PREFIX = "plugin-state:";
4980
+ function pluginStateEntryCustomType(pluginId, name) {
4981
+ return PLUGIN_STATE_ENTRY_NAME_PATTERN.test(name) ? `${PLUGIN_STATE_ENTRY_TYPE_PREFIX}${pluginId}:${name}` : void 0;
4982
+ }
4983
+ function isPluginStateEntryCustomType(customType) {
4984
+ return customType.startsWith(PLUGIN_STATE_ENTRY_TYPE_PREFIX);
4985
+ }
4986
+
4987
+ // packages/plugin-protocol/dist/reset-text.js
4988
+ var RESET_TEXT_MAX_CHARS = 18e3;
4989
+ var EntryAddress = z18.strictObject({
4990
+ sessionId: z18.string().min(1),
4991
+ entryId: z18.string().min(1)
4992
+ });
4993
+ var ResetTextEntry = z18.strictObject({
4994
+ version: z18.literal(1),
4995
+ /**
4996
+ * The newest conversation entry the text accounts for: a message of the session's context, by the
4997
+ * transcript id the plugin reads it under. It names the session the text was written for, so a
4998
+ * fork's copy of its parent's entry covers nothing in the fork.
4999
+ */
5000
+ coveredThrough: EntryAddress,
5001
+ /** The working state as Markdown, without the harness ledger. */
5002
+ text: z18.string().min(1).max(RESET_TEXT_MAX_CHARS)
5003
+ });
5004
+ var ResetTextContribution = z18.strictObject({
5005
+ entry: z18.string().regex(PLUGIN_STATE_ENTRY_NAME_PATTERN)
5006
+ });
5007
+
4946
5008
  // packages/plugin-protocol/dist/synthetic-contributions.js
4947
5009
  function resolveConfigSectionContributionLocalId(section) {
4948
5010
  return `config-${toLocalContributionIdFragment(section)}`;
@@ -4966,34 +5028,34 @@ function createManifestSchemas(canonical) {
4966
5028
  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, WorkingDocumentProviderContribution: WorkingDocumentProviderContribution2 } = canonical ? canonicalContributionSchemas : contributions_exports;
4967
5029
  const { HttpsUrl: HttpsUrl2, LocalContributionId: LocalContributionId2, NonEmptyString: NonEmptyString3, PackageAssetPath: PackageAssetPath2, PluginId: PluginId2, PluginNamespace: PluginNamespace2, RegistrableDomain: RegistrableDomain2, SignedInStatusCode: SignedInStatusCode2, TargetEntrypoint: TargetEntrypoint2 } = canonical ? canonicalCommonSchemas : common_exports;
4968
5030
  const { PluginPermissionManifest: PluginPermissionManifest2 } = canonical ? canonicalPermissionSchemas : permissions_exports;
4969
- const KayAgentTargetManifest2 = z18.strictObject({
5031
+ const KayAgentTargetManifest2 = z19.strictObject({
4970
5032
  entrypoint: TargetEntrypoint2,
4971
- contributes: z18.strictObject({
4972
- tools: z18.array(AgentToolContribution2).optional(),
4973
- converters: z18.array(ConverterContribution2).optional(),
4974
- uriModules: z18.array(UriModuleContribution2).optional(),
5033
+ contributes: z19.strictObject({
5034
+ tools: z19.array(AgentToolContribution2).optional(),
5035
+ converters: z19.array(ConverterContribution2).optional(),
5036
+ uriModules: z19.array(UriModuleContribution2).optional(),
4975
5037
  // Host-composed artifact-backed schemes (see `ArtifactUriModuleContribution`): the plugin
4976
5038
  // declares scheme + editability; the daemon binds each to the kernel's artifact lifecycle
4977
5039
  // per session. Separate from `uriModules` (plugin-implemented backends) precisely because
4978
5040
  // the plugin registers NOTHING for these at activation.
4979
- artifactUriModules: z18.array(ArtifactUriModuleContribution2).optional(),
4980
- cliBindings: z18.array(CliBindingContribution2).optional(),
5041
+ artifactUriModules: z19.array(ArtifactUriModuleContribution2).optional(),
5042
+ cliBindings: z19.array(CliBindingContribution2).optional(),
4981
5043
  // Which git hosts this plugin's credential serves (see `GitHostContribution`): a
4982
5044
  // declaration, so a plugin for any git backend gets credentialed clones without
4983
5045
  // the daemon learning its name. Sibling of `cliBindings` because both answer the
4984
5046
  // same question - which of this plugin's auth services a host-side consumer
4985
5047
  // resolves - for two different transports.
4986
- gitHosts: z18.array(GitHostContribution2).optional(),
4987
- resources: z18.array(ResourceContribution2).optional(),
4988
- skills: z18.array(SkillContribution2).optional(),
4989
- searchProviders: z18.array(SearchProviderContribution2).optional(),
4990
- interactionDrivers: z18.array(InteractionDriverContribution2).optional(),
4991
- entityResolvers: z18.array(EntityResolverContribution2).optional(),
4992
- renderers: z18.array(AgentRenderContribution2).optional(),
5048
+ gitHosts: z19.array(GitHostContribution2).optional(),
5049
+ resources: z19.array(ResourceContribution2).optional(),
5050
+ skills: z19.array(SkillContribution2).optional(),
5051
+ searchProviders: z19.array(SearchProviderContribution2).optional(),
5052
+ interactionDrivers: z19.array(InteractionDriverContribution2).optional(),
5053
+ entityResolvers: z19.array(EntityResolverContribution2).optional(),
5054
+ renderers: z19.array(AgentRenderContribution2).optional(),
4993
5055
  // Handler restricted to skill | tool by the manifest-level refinement below (see
4994
5056
  // `CommandContribution`'s doc for why the restriction is not expressed in the type, and
4995
5057
  // `CommandHandler`'s doc for why there is no promptTemplate variant to declare here).
4996
- commands: z18.array(CommandContribution2).optional()
5058
+ commands: z19.array(CommandContribution2).optional()
4997
5059
  }).optional(),
4998
5060
  /**
4999
5061
  * The plugin's primer skill - the `localId` of one of its own declared
@@ -5029,8 +5091,8 @@ function createManifestSchemas(canonical) {
5029
5091
  * grant a person approved), and a body over 500 words is dropped.
5030
5092
  */
5031
5093
  prompt: PackageAssetPath2.optional(),
5032
- promptOrder: z18.number().finite().optional(),
5033
- familyFolder: z18.strictObject({ scope: z18.literal("root") }).optional(),
5094
+ promptOrder: z19.number().finite().optional(),
5095
+ familyFolder: z19.strictObject({ scope: z19.literal("root") }).optional(),
5034
5096
  /**
5035
5097
  * External origins of skills this plugin claims as its own (see
5036
5098
  * {@link PluginSkillSourceDeclaration}). Acquired by the daemon at boot and landed under the
@@ -5041,64 +5103,67 @@ function createManifestSchemas(canonical) {
5041
5103
  * acquisition, not declared here, so there is nothing for the resolved contract to mint a
5042
5104
  * `globalId` for at parse time.
5043
5105
  */
5044
- skillSources: z18.array(PluginSkillSourceDeclaration2).optional()
5106
+ skillSources: z19.array(PluginSkillSourceDeclaration2).optional()
5045
5107
  });
5046
- const KayAppTargetManifest2 = z18.strictObject({
5108
+ const KayAppTargetManifest2 = z19.strictObject({
5047
5109
  // Optional, like `kay.ui`'s: a target may carry only declarative `contributes` (e.g. a plugin
5048
5110
  // that ships nothing but `mcpServers`) with no app-lifetime module for the host to load.
5049
5111
  entrypoint: TargetEntrypoint2.optional(),
5050
- artifacts: z18.strictObject({ outputs: z18.literal(true) }).optional(),
5051
- contributes: z18.strictObject({
5112
+ artifacts: z19.strictObject({ outputs: z19.literal(true) }).optional(),
5113
+ contributes: z19.strictObject({
5052
5114
  // Session tools implemented by the app-lifetime activation (registered once, injected into
5053
5115
  // every session with a host-stamped session context) - the tool counterpart of `uriModules`
5054
5116
  // below. Same descriptor shape as kay.agent tools; `toolName` shares ONE flat session
5055
5117
  // namespace with them (enforced by the manifest-level refinement below).
5056
- tools: z18.array(ToolContribution2).optional(),
5057
- endpoints: z18.array(EndpointContribution2).optional(),
5058
- cards: z18.array(PluginCardContribution2).optional(),
5059
- uriModules: z18.array(AppUriModuleContribution2).optional(),
5060
- dataSources: z18.array(AppDataSourceContribution2).optional(),
5061
- whiteboardTypes: z18.array(WhiteboardTypeContribution2).optional(),
5118
+ tools: z19.array(ToolContribution2).optional(),
5119
+ endpoints: z19.array(EndpointContribution2).optional(),
5120
+ cards: z19.array(PluginCardContribution2).optional(),
5121
+ uriModules: z19.array(AppUriModuleContribution2).optional(),
5122
+ dataSources: z19.array(AppDataSourceContribution2).optional(),
5123
+ whiteboardTypes: z19.array(WhiteboardTypeContribution2).optional(),
5062
5124
  // Document sources whose pull, push and revision check the app entrypoint registers.
5063
- workingDocumentProviders: z18.array(WorkingDocumentProviderContribution2).optional(),
5064
- approvalTypes: z18.array(ApprovalTypeContribution2).optional(),
5065
- workflows: z18.array(WorkflowContribution2).optional(),
5066
- eventDefinitions: z18.array(PluginEventDefinitionContribution2).optional(),
5125
+ workingDocumentProviders: z19.array(WorkingDocumentProviderContribution2).optional(),
5126
+ approvalTypes: z19.array(ApprovalTypeContribution2).optional(),
5127
+ workflows: z19.array(WorkflowContribution2).optional(),
5128
+ eventDefinitions: z19.array(PluginEventDefinitionContribution2).optional(),
5067
5129
  // Default notification rules over this plugin's own `eventDefinitions`; seeded by the host
5068
5130
  // (see `PluginNotificationRuleContribution`).
5069
- notificationRules: z18.array(PluginNotificationRuleContribution2).optional(),
5070
- productEvents: z18.array(PluginProductEventContribution2).optional(),
5071
- eventSubscriptions: z18.array(AppEventSubscription2).optional(),
5072
- deviceDelegations: z18.array(DeviceDelegationContribution2).optional(),
5073
- sessionReaders: z18.array(SessionReaderContribution2).optional(),
5074
- contextContributors: z18.array(ContextContributorContribution2).optional(),
5131
+ notificationRules: z19.array(PluginNotificationRuleContribution2).optional(),
5132
+ productEvents: z19.array(PluginProductEventContribution2).optional(),
5133
+ eventSubscriptions: z19.array(AppEventSubscription2).optional(),
5134
+ deviceDelegations: z19.array(DeviceDelegationContribution2).optional(),
5135
+ sessionReaders: z19.array(SessionReaderContribution2).optional(),
5136
+ contextContributors: z19.array(ContextContributorContribution2).optional(),
5137
+ // The state entry holding the working state a reset may use in place of the summary
5138
+ // (`reset-text.ts`). Honored only for a plugin holding `compaction.reset-text`.
5139
+ resetText: ResetTextContribution.optional(),
5075
5140
  // Vendored MCP servers this plugin ships (see `McpServerContributions`). Each is hosted only
5076
5141
  // for a plugin holding `mcp.host-server` for its name and URL; that is decided at
5077
5142
  // composition, not here (see AGENTS.md).
5078
5143
  mcpServers: McpServerContributions2.optional(),
5079
5144
  // Handler restricted to endpoint-only by the manifest-level refinement below.
5080
- commands: z18.array(CommandContribution2).optional()
5145
+ commands: z19.array(CommandContribution2).optional()
5081
5146
  }).optional()
5082
5147
  });
5083
- const KayUiTargetManifest2 = z18.strictObject({
5148
+ const KayUiTargetManifest2 = z19.strictObject({
5084
5149
  entrypoint: TargetEntrypoint2.extend({
5085
- format: z18.literal("compiled-bundle").optional()
5150
+ format: z19.literal("compiled-bundle").optional()
5086
5151
  }).optional(),
5087
- contributes: z18.strictObject({
5088
- commands: z18.array(UiCommandContribution2).optional(),
5089
- slots: z18.array(UiSlotContribution2).optional(),
5090
- referencePresentations: z18.array(ReferencePresentationContribution2).optional(),
5091
- apps: z18.array(UiAppContribution2).optional(),
5092
- railEntries: z18.array(UiRailEntryContribution2).optional(),
5093
- toastPreviews: z18.array(UiToastPreviewContribution2).optional(),
5094
- pages: z18.array(UiPageContribution2).optional(),
5095
- themes: z18.array(ThemeContribution2).optional(),
5096
- eventSubscriptions: z18.array(UiEventSubscriptionContribution2).optional(),
5097
- dataMaterializers: z18.array(AppDataMaterializerContribution2).optional()
5152
+ contributes: z19.strictObject({
5153
+ commands: z19.array(UiCommandContribution2).optional(),
5154
+ slots: z19.array(UiSlotContribution2).optional(),
5155
+ referencePresentations: z19.array(ReferencePresentationContribution2).optional(),
5156
+ apps: z19.array(UiAppContribution2).optional(),
5157
+ railEntries: z19.array(UiRailEntryContribution2).optional(),
5158
+ toastPreviews: z19.array(UiToastPreviewContribution2).optional(),
5159
+ pages: z19.array(UiPageContribution2).optional(),
5160
+ themes: z19.array(ThemeContribution2).optional(),
5161
+ eventSubscriptions: z19.array(UiEventSubscriptionContribution2).optional(),
5162
+ dataMaterializers: z19.array(AppDataMaterializerContribution2).optional()
5098
5163
  }).optional()
5099
5164
  });
5100
- const PluginConfigScope2 = z18.enum(["global", "project", "agent"]);
5101
- const PluginConfigSectionManifest2 = z18.strictObject({
5165
+ const PluginConfigScope2 = z19.enum(["global", "project", "agent"]);
5166
+ const PluginConfigSectionManifest2 = z19.strictObject({
5102
5167
  section: NonEmptyString3.optional(),
5103
5168
  schema: JsonSchema,
5104
5169
  /**
@@ -5116,23 +5181,23 @@ function createManifestSchemas(canonical) {
5116
5181
  * is the baseline every section has; `agent` has no runtime mapping (the
5117
5182
  * agent/entity fold is downstream of the document protocol).
5118
5183
  */
5119
- scopes: z18.array(PluginConfigScope2).optional()
5184
+ scopes: z19.array(PluginConfigScope2).optional()
5120
5185
  });
5121
- const PluginConfigManifest2 = z18.array(PluginConfigSectionManifest2).min(1);
5122
- const PluginStorageManifest2 = z18.strictObject({
5123
- sqlite: z18.strictObject({
5124
- enabled: z18.boolean(),
5125
- ownerTarget: z18.literal("kay.app").optional(),
5186
+ const PluginConfigManifest2 = z19.array(PluginConfigSectionManifest2).min(1);
5187
+ const PluginStorageManifest2 = z19.strictObject({
5188
+ sqlite: z19.strictObject({
5189
+ enabled: z19.boolean(),
5190
+ ownerTarget: z19.literal("kay.app").optional(),
5126
5191
  migrations: NonEmptyString3.optional()
5127
5192
  }).optional(),
5128
- dataDir: z18.strictObject({
5129
- enabled: z18.boolean(),
5130
- ownerTarget: z18.literal("kay.app").optional(),
5193
+ dataDir: z19.strictObject({
5194
+ enabled: z19.boolean(),
5195
+ ownerTarget: z19.literal("kay.app").optional(),
5131
5196
  sharedWith: PluginId2.optional()
5132
5197
  }).optional()
5133
5198
  });
5134
- const PluginOAuthClientSupplier2 = z18.enum(["kay", "user"]);
5135
- const PluginProvisioningProbe2 = z18.strictObject({
5199
+ const PluginOAuthClientSupplier2 = z19.enum(["kay", "user"]);
5200
+ const PluginProvisioningProbe2 = z19.strictObject({
5136
5201
  /**
5137
5202
  * The API endpoint that answers the question. The host sends the service's OWN credential here,
5138
5203
  * so this must belong to the provider that minted it - enforced by the daemon against the
@@ -5140,13 +5205,13 @@ function createManifestSchemas(canonical) {
5140
5205
  */
5141
5206
  url: HttpsUrl2,
5142
5207
  /** Absent => `GET`. */
5143
- method: z18.enum(["GET"]).optional(),
5208
+ method: z19.enum(["GET"]).optional(),
5144
5209
  /**
5145
5210
  * The statuses that make the response a VERDICT at all. Anything else (a 401 from a stale
5146
5211
  * token, a 5xx, a rate limit) means the probe learned nothing and reports `unknown` - never
5147
5212
  * `unsatisfied`, which would tell a user to go fix setup that is fine.
5148
5213
  */
5149
- verdictStatuses: z18.array(SignedInStatusCode2).min(1),
5214
+ verdictStatuses: z19.array(SignedInStatusCode2).min(1),
5150
5215
  /**
5151
5216
  * Dot-path to a JSON array in the response body that must be NON-EMPTY for the requirement to
5152
5217
  * count as satisfied (e.g. `installations`). Absent means a verdict status alone is enough.
@@ -5155,7 +5220,7 @@ function createManifestSchemas(canonical) {
5155
5220
  */
5156
5221
  nonEmptyArrayAt: NonEmptyString3.optional()
5157
5222
  });
5158
- const PluginProvisioningRequirement2 = z18.strictObject({
5223
+ const PluginProvisioningRequirement2 = z19.strictObject({
5159
5224
  /** Stable id, unique within the scheme. */
5160
5225
  id: LocalContributionId2,
5161
5226
  /** Human-facing requirement name, e.g. "GitHub App installation". */
@@ -5172,7 +5237,7 @@ function createManifestSchemas(canonical) {
5172
5237
  probe: PluginProvisioningProbe2
5173
5238
  });
5174
5239
  const PluginProvisioningField = {
5175
- provisioning: z18.array(PluginProvisioningRequirement2).optional()
5240
+ provisioning: z19.array(PluginProvisioningRequirement2).optional()
5176
5241
  };
5177
5242
  const PluginAuthSchemeDescriptionFields = {
5178
5243
  /** Human-facing flow name; absent, the service's name stands in. */
@@ -5189,20 +5254,20 @@ function createManifestSchemas(canonical) {
5189
5254
  authorizationUrl: HttpsUrl2,
5190
5255
  tokenUrl: HttpsUrl2,
5191
5256
  /** Initial connect scopes; absent uses `scopes`, while an empty array requests none. */
5192
- connectScopes: z18.array(NonEmptyString3).optional(),
5257
+ connectScopes: z19.array(NonEmptyString3).optional(),
5193
5258
  /** Provider-specific query parameters added to the authorize URL. */
5194
- extraAuthorizeParams: z18.record(NonEmptyString3, z18.string()).optional(),
5259
+ extraAuthorizeParams: z19.record(NonEmptyString3, z19.string()).optional(),
5195
5260
  /** Additional authorization parameters when this service already holds an account. */
5196
- extraAuthorizeParamsWhenAccountHeld: z18.record(NonEmptyString3, z18.string()).optional()
5261
+ extraAuthorizeParamsWhenAccountHeld: z19.record(NonEmptyString3, z19.string()).optional()
5197
5262
  };
5198
- const PluginAuthSchemeAccountLookup = z18.literal("lookup");
5199
- const PluginAuthSchemeOAuthPkce = z18.strictObject({
5263
+ const PluginAuthSchemeAccountLookup = z19.literal("lookup");
5264
+ const PluginAuthSchemeOAuthPkce = z19.strictObject({
5200
5265
  ...PluginProvisioningField,
5201
5266
  ...PluginAuthSchemeDescriptionFields,
5202
5267
  ...PluginAuthSchemeOAuthEndpointFields,
5203
5268
  localId: LocalContributionId2,
5204
- kind: z18.literal("oauth2"),
5205
- exchange: z18.literal("pkce"),
5269
+ kind: z19.literal("oauth2"),
5270
+ exchange: z19.literal("pkce"),
5206
5271
  byoocProfile: PluginByoocProfile.optional(),
5207
5272
  /**
5208
5273
  * A public client id the plugin ships for its own sign-in. Only an installed plugin's is used:
@@ -5226,7 +5291,7 @@ function createManifestSchemas(canonical) {
5226
5291
  * runs on an untrusted manifest, so a hand-built `["kay","kay"]` must be refused here, not
5227
5292
  * silently normalized).
5228
5293
  */
5229
- clientSuppliers: z18.array(PluginOAuthClientSupplier2).nonempty().superRefine((suppliers, ctx) => {
5294
+ clientSuppliers: z19.array(PluginOAuthClientSupplier2).nonempty().superRefine((suppliers, ctx) => {
5230
5295
  if (new Set(suppliers).size !== suppliers.length) {
5231
5296
  ctx.addIssue({
5232
5297
  code: "custom",
@@ -5234,7 +5299,7 @@ function createManifestSchemas(canonical) {
5234
5299
  });
5235
5300
  }
5236
5301
  }),
5237
- scopes: z18.array(NonEmptyString3).optional()
5302
+ scopes: z19.array(NonEmptyString3).optional()
5238
5303
  }).refine((scheme) => scheme.byoocProfile === void 0 || scheme.clientSuppliers.includes("user"), {
5239
5304
  message: "An own-client profile requires the user client supplier.",
5240
5305
  path: ["byoocProfile"]
@@ -5245,33 +5310,33 @@ function createManifestSchemas(canonical) {
5245
5310
  message: "a scheme with its own clientId names where its account comes from (`account`)",
5246
5311
  path: ["account"]
5247
5312
  });
5248
- const PluginAuthSchemeOAuthConfidential = z18.strictObject({
5313
+ const PluginAuthSchemeOAuthConfidential = z19.strictObject({
5249
5314
  ...PluginProvisioningField,
5250
5315
  ...PluginAuthSchemeDescriptionFields,
5251
5316
  ...PluginAuthSchemeOAuthEndpointFields,
5252
5317
  localId: LocalContributionId2,
5253
- kind: z18.literal("oauth2"),
5254
- exchange: z18.literal("confidential"),
5318
+ kind: z19.literal("oauth2"),
5319
+ exchange: z19.literal("confidential"),
5255
5320
  /** Absent means `["kay"]` - a confidential exchange's secret may only ever be Bonsai's. */
5256
- clientSuppliers: z18.tuple([z18.literal("kay")]).optional(),
5257
- scopes: z18.array(NonEmptyString3).optional(),
5321
+ clientSuppliers: z19.tuple([z19.literal("kay")]).optional(),
5322
+ scopes: z19.array(NonEmptyString3).optional(),
5258
5323
  /** Where the account comes from (see {@link PluginAuthSchemeAccountLookup}). */
5259
- account: z18.union([PluginAuthSchemeAccountLookup, z18.literal("sign-in")])
5324
+ account: z19.union([PluginAuthSchemeAccountLookup, z19.literal("sign-in")])
5260
5325
  });
5261
- const PluginAuthSchemeOAuth2 = z18.discriminatedUnion("exchange", [
5326
+ const PluginAuthSchemeOAuth2 = z19.discriminatedUnion("exchange", [
5262
5327
  PluginAuthSchemeOAuthPkce,
5263
5328
  PluginAuthSchemeOAuthConfidential
5264
5329
  ]);
5265
- const PluginAuthSchemeApiKey = z18.strictObject({
5330
+ const PluginAuthSchemeApiKey = z19.strictObject({
5266
5331
  ...PluginProvisioningField,
5267
5332
  ...PluginAuthSchemeDescriptionFields,
5268
5333
  localId: LocalContributionId2,
5269
- kind: z18.literal("api-key"),
5270
- scopes: z18.array(NonEmptyString3).optional(),
5334
+ kind: z19.literal("api-key"),
5335
+ scopes: z19.array(NonEmptyString3).optional(),
5271
5336
  /** The connect prompt's label for the key. Absent: "<service name> API key". */
5272
5337
  inputLabel: NonEmptyString3.optional(),
5273
5338
  /** Two or more labeled inputs for a secret that comes in parts; absent asks for one key. */
5274
- fields: z18.array(z18.strictObject({ id: LocalContributionId2, label: NonEmptyString3 })).min(2).superRefine((fields, ctx) => {
5339
+ fields: z19.array(z19.strictObject({ id: LocalContributionId2, label: NonEmptyString3 })).min(2).superRefine((fields, ctx) => {
5275
5340
  if (new Set(fields.map((field) => field.id)).size !== fields.length) {
5276
5341
  ctx.addIssue({
5277
5342
  code: "custom",
@@ -5280,7 +5345,7 @@ function createManifestSchemas(canonical) {
5280
5345
  }
5281
5346
  }).optional(),
5282
5347
  /** Where and how the person creates the key outside Bonsai. */
5283
- setup: z18.strictObject({ instructions: NonEmptyString3, url: HttpsUrl2 }).optional(),
5348
+ setup: z19.strictObject({ instructions: NonEmptyString3, url: HttpsUrl2 }).optional(),
5284
5349
  /**
5285
5350
  * `"lookup"`: the plugin checks a key before it is saved and names its account, with the function
5286
5351
  * it registers (`api.auth.registerAccountLookup`). Absent: the key is saved unchecked, under the
@@ -5288,27 +5353,27 @@ function createManifestSchemas(canonical) {
5288
5353
  */
5289
5354
  account: PluginAuthSchemeAccountLookup.optional()
5290
5355
  });
5291
- const PluginAuthSchemeDelegated = z18.strictObject({
5356
+ const PluginAuthSchemeDelegated = z19.strictObject({
5292
5357
  ...PluginAuthSchemeDescriptionFields,
5293
5358
  localId: LocalContributionId2,
5294
- kind: z18.literal("delegated"),
5295
- scopes: z18.array(NonEmptyString3).optional()
5359
+ kind: z19.literal("delegated"),
5360
+ scopes: z19.array(NonEmptyString3).optional()
5296
5361
  });
5297
- const ExternalCliArgument = z18.string().min(1).max(16384).refine((value) => ![...value].some(isUnsafeArgumentCharacter), {
5362
+ const ExternalCliArgument = z19.string().min(1).max(16384).refine((value) => ![...value].some(isUnsafeArgumentCharacter), {
5298
5363
  message: "an argument may hold tabs and line breaks, but no other control character, no invisible character and no bidirectional override"
5299
5364
  });
5300
- const ExternalCliCommand = z18.string().max(128).regex(/^[A-Za-z0-9][A-Za-z0-9._+-]*$/, {
5365
+ const ExternalCliCommand = z19.string().max(128).regex(/^[A-Za-z0-9][A-Za-z0-9._+-]*$/, {
5301
5366
  message: "a command is an executable's basename (letters, digits, '.', '_', '+', '-'), never a path"
5302
5367
  });
5303
5368
  const ExternalCliHint = NonEmptyString3.max(2048);
5304
- const ExternalCliArguments = z18.array(ExternalCliArgument).max(64);
5369
+ const ExternalCliArguments = z19.array(ExternalCliArgument).max(64);
5305
5370
  const SignedOutMarker = ExternalCliArgument.refine((value) => value.trim() !== "", { message: "a signed-out marker needs text beyond whitespace" });
5306
- const PluginExternalCliConnect2 = z18.strictObject({
5371
+ const PluginExternalCliConnect2 = z19.strictObject({
5307
5372
  /** A basename the host finds on `PATH` (`osascript`, `wrangler`), never a path. */
5308
5373
  binary: ExternalCliCommand,
5309
- probe: z18.strictObject({
5374
+ probe: z19.strictObject({
5310
5375
  args: ExternalCliArguments.min(1),
5311
- timeoutMs: z18.number().int().min(1).max(12e4).optional(),
5376
+ timeoutMs: z19.number().int().min(1).max(12e4).optional(),
5312
5377
  /**
5313
5378
  * The CLI's own signed-out marker: text a failed probe's output (stderr, else stdout) contains
5314
5379
  * when the CLI is signed out. A failure that carries it is a sign-in problem, and only such a
@@ -5316,13 +5381,13 @@ function createManifestSchemas(canonical) {
5316
5381
  * unavailable. Required when `login` is declared, so a timeout never starts a sign-in. A list
5317
5382
  * is for a CLI with several signed-out messages; any one of them counts.
5318
5383
  */
5319
- signedOutMarker: z18.union([SignedOutMarker, z18.array(SignedOutMarker).min(1)]).optional()
5384
+ signedOutMarker: z19.union([SignedOutMarker, z19.array(SignedOutMarker).min(1)]).optional()
5320
5385
  }),
5321
5386
  /** The CLI's interactive sign-in. Absent: connect only probes and reports. */
5322
- login: z18.strictObject({
5387
+ login: z19.strictObject({
5323
5388
  args: ExternalCliArguments.min(1),
5324
- timeoutMs: z18.number().int().min(1).max(6e5).optional(),
5325
- pasteCode: z18.strictObject({
5389
+ timeoutMs: z19.number().int().min(1).max(6e5).optional(),
5390
+ pasteCode: z19.strictObject({
5326
5391
  /** The redeeming argv; the host appends the code as its last argument. */
5327
5392
  args: ExternalCliArguments.min(1),
5328
5393
  /** What the prompt says, for a person. */
@@ -5334,12 +5399,12 @@ function createManifestSchemas(canonical) {
5334
5399
  * for display, or hands it to an agent session that runs it behind the ordinary bash approval.
5335
5400
  * Absent for a binary the OS ships (`osascript`).
5336
5401
  */
5337
- install: z18.strictObject({
5402
+ install: z19.strictObject({
5338
5403
  command: ExternalCliCommand,
5339
5404
  args: ExternalCliArguments
5340
5405
  }).optional(),
5341
5406
  /** Prose for a person: `install` when the binary is missing, `login` when the probe fails. */
5342
- hints: z18.strictObject({
5407
+ hints: z19.strictObject({
5343
5408
  install: ExternalCliHint,
5344
5409
  login: ExternalCliHint
5345
5410
  })
@@ -5352,50 +5417,50 @@ function createManifestSchemas(canonical) {
5352
5417
  });
5353
5418
  }
5354
5419
  });
5355
- const PluginAuthSchemeExternalCli = z18.strictObject({
5420
+ const PluginAuthSchemeExternalCli = z19.strictObject({
5356
5421
  ...PluginAuthSchemeDescriptionFields,
5357
5422
  localId: LocalContributionId2,
5358
- kind: z18.literal("external-cli"),
5359
- scopes: z18.array(NonEmptyString3).optional(),
5423
+ kind: z19.literal("external-cli"),
5424
+ scopes: z19.array(NonEmptyString3).optional(),
5360
5425
  cli: PluginExternalCliConnect2.optional()
5361
5426
  });
5362
- const PluginAuthScheme2 = z18.discriminatedUnion("kind", [
5427
+ const PluginAuthScheme2 = z19.discriminatedUnion("kind", [
5363
5428
  PluginAuthSchemeOAuth2,
5364
5429
  PluginAuthSchemeApiKey,
5365
5430
  PluginAuthSchemeDelegated,
5366
5431
  PluginAuthSchemeExternalCli
5367
5432
  ]);
5368
- const PluginWebSessionProbe2 = z18.strictObject({
5433
+ const PluginWebSessionProbe2 = z19.strictObject({
5369
5434
  url: HttpsUrl2,
5370
5435
  /** Absent => `GET`. `POST` sends an empty JSON object body. */
5371
- method: z18.enum(["GET", "POST"]).optional(),
5372
- signedInStatuses: z18.array(SignedInStatusCode2).min(1)
5436
+ method: z19.enum(["GET", "POST"]).optional(),
5437
+ signedInStatuses: z19.array(SignedInStatusCode2).min(1)
5373
5438
  });
5374
- const PluginWebSessionDeclaration2 = z18.strictObject({
5439
+ const PluginWebSessionDeclaration2 = z19.strictObject({
5375
5440
  /** `required`: capabilities degrade without the site login; `recommended`: it only smooths UX. */
5376
- importance: z18.enum(["required", "recommended"]),
5441
+ importance: z19.enum(["required", "recommended"]),
5377
5442
  loginUrl: HttpsUrl2,
5378
- cookieDomains: z18.array(RegistrableDomain2).min(1),
5443
+ cookieDomains: z19.array(RegistrableDomain2).min(1),
5379
5444
  probe: PluginWebSessionProbe2,
5380
- oauthVenue: z18.enum(["embedded", "external"]),
5445
+ oauthVenue: z19.enum(["embedded", "external"]),
5381
5446
  /**
5382
5447
  * Where a page goes first when it opens in one of Bonsai's browser panes and this site login
5383
5448
  * is missing: a sign-in page that continues to the page. A template with `:email` and `:url`
5384
5449
  * (see `UriClaimTemplate`), on a host within `cookieDomains`.
5385
5450
  */
5386
- signInFirst: z18.string().optional()
5451
+ signInFirst: z19.string().optional()
5387
5452
  }).superRefine(refineWebSessionScopeConfined);
5388
- const PluginAuthService2 = z18.strictObject({
5453
+ const PluginAuthService2 = z19.strictObject({
5389
5454
  localId: LocalContributionId2,
5390
5455
  displayName: NonEmptyString3,
5391
5456
  /** One plain sentence on what connecting this service gives Bonsai. */
5392
5457
  summary: NonEmptyString3.optional(),
5393
- schemes: z18.array(PluginAuthScheme2).min(1),
5394
- purposes: z18.array(NonEmptyString3).min(1),
5458
+ schemes: z19.array(PluginAuthScheme2).min(1),
5459
+ purposes: z19.array(NonEmptyString3).min(1),
5395
5460
  webSession: PluginWebSessionDeclaration2.optional()
5396
5461
  });
5397
- const PluginAuthManifest2 = z18.strictObject({
5398
- services: z18.array(PluginAuthService2).optional()
5462
+ const PluginAuthManifest2 = z19.strictObject({
5463
+ services: z19.array(PluginAuthService2).optional()
5399
5464
  });
5400
5465
  function stripRetiredCompatibilityKeys(value) {
5401
5466
  if (typeof value !== "object" || value === null || Array.isArray(value)) {
@@ -5406,17 +5471,17 @@ function createManifestSchemas(canonical) {
5406
5471
  delete remaining[key];
5407
5472
  return remaining;
5408
5473
  }
5409
- const PluginCompatibilityFields = z18.strictObject({
5410
- supportedProtocols: z18.array(KayPluginProtocolVersion).optional(),
5474
+ const PluginCompatibilityFields = z19.strictObject({
5475
+ supportedProtocols: z19.array(KayPluginProtocolVersion).optional(),
5411
5476
  minKayVersion: NonEmptyString3.optional(),
5412
5477
  sdk: NonEmptyString3.optional()
5413
5478
  });
5414
- const PluginCompatibilityManifest2 = canonical ? PluginCompatibilityFields : z18.preprocess(stripRetiredCompatibilityKeys, PluginCompatibilityFields);
5479
+ const PluginCompatibilityManifest2 = canonical ? PluginCompatibilityFields : z19.preprocess(stripRetiredCompatibilityKeys, PluginCompatibilityFields);
5415
5480
  const KayVersionString2 = NonEmptyString3.regex(SEMVER_PATTERN, {
5416
5481
  message: "version must be semver, for example 1.2.3"
5417
5482
  });
5418
- const KayPluginManifestV12 = z18.strictObject({
5419
- protocol: z18.literal(KAY_PLUGIN_PROTOCOL_VERSION),
5483
+ const KayPluginManifestV12 = z19.strictObject({
5484
+ protocol: z19.literal(KAY_PLUGIN_PROTOCOL_VERSION),
5420
5485
  id: PluginId2,
5421
5486
  displayName: NonEmptyString3,
5422
5487
  version: KayVersionString2,
@@ -5444,12 +5509,12 @@ function createManifestSchemas(canonical) {
5444
5509
  icon: PackageAssetPath2.optional(),
5445
5510
  iconDark: PackageAssetPath2.optional(),
5446
5511
  namespace: PluginNamespace2.optional(),
5447
- workers: z18.array(z18.strictObject({
5512
+ workers: z19.array(z19.strictObject({
5448
5513
  localId: LocalContributionId2,
5449
5514
  module: PackageAssetPath2
5450
5515
  })).optional(),
5451
- targets: z18.strictObject({
5452
- kay: z18.strictObject({
5516
+ targets: z19.strictObject({
5517
+ kay: z19.strictObject({
5453
5518
  agent: KayAgentTargetManifest2.optional(),
5454
5519
  app: KayAppTargetManifest2.optional(),
5455
5520
  ui: KayUiTargetManifest2.optional()
@@ -5457,8 +5522,8 @@ function createManifestSchemas(canonical) {
5457
5522
  }).optional(),
5458
5523
  config: PluginConfigManifest2.optional(),
5459
5524
  storage: PluginStorageManifest2.optional(),
5460
- workloadPurposes: z18.array(PluginWorkloadPurpose).optional(),
5461
- shellCommands: z18.array(PluginShellCommand).optional(),
5525
+ workloadPurposes: z19.array(PluginWorkloadPurpose).optional(),
5526
+ shellCommands: z19.array(PluginShellCommand).optional(),
5462
5527
  projectDirectories: PluginProjectDirectories.optional(),
5463
5528
  auth: PluginAuthManifest2.optional(),
5464
5529
  permissions: PluginPermissionManifest2.optional(),
@@ -5469,15 +5534,15 @@ function createManifestSchemas(canonical) {
5469
5534
  * schemes then report `ownedByBonsai`. Honoured only for a plugin that ships with Bonsai: the
5470
5535
  * host reads any other plugin's flag as false. Absent => false.
5471
5536
  */
5472
- ownedByBonsai: z18.boolean().optional(),
5537
+ ownedByBonsai: z19.boolean().optional(),
5473
5538
  /**
5474
5539
  * Explicit plugin-level dependencies - other plugins this plugin requires to be present in the
5475
5540
  * composed roster. At composition time the runtime checks each id against the accepted
5476
5541
  * registration list and derives a provenance-complete dependency graph (together with implicit
5477
5542
  * auth-service edges from `consumesAuthServices`). Absent => no explicit dependencies.
5478
5543
  */
5479
- dependencies: z18.strictObject({
5480
- plugins: z18.array(PluginId2).optional()
5544
+ dependencies: z19.strictObject({
5545
+ plugins: z19.array(PluginId2).optional()
5481
5546
  }).optional()
5482
5547
  }).superRefine((manifest, ctx) => {
5483
5548
  reportDuplicateLocalIds(ctx, ["workers"], manifest.workers, "worker");
@@ -6729,7 +6794,7 @@ function pushContributionIds(output, path, items) {
6729
6794
  }
6730
6795
 
6731
6796
  // packages/plugin-protocol/dist/plugin-directory-verdict.js
6732
- import { z as z20 } from "zod";
6797
+ import { z as z21 } from "zod";
6733
6798
 
6734
6799
  // packages/plugin-protocol/dist/plugin-load-diagnostic.js
6735
6800
  var PLUGIN_DIAGNOSTIC_MESSAGE_CAP = 300;
@@ -6738,14 +6803,14 @@ function boundPluginDiagnosticMessage(message) {
6738
6803
  }
6739
6804
 
6740
6805
  // packages/plugin-protocol/dist/resolved-contract.js
6741
- import { z as z19 } from "zod";
6806
+ import { z as z20 } from "zod";
6742
6807
  function createResolvedContractSchemas(canonical) {
6743
6808
  const { PluginEventLocalId: PluginEventLocalId2 } = canonical ? canonicalPluginEventSchemas : plugin_events_exports;
6744
6809
  const { ApprovalTypeContribution: ApprovalTypeContribution2, KayUiAppHostCapability: KayUiAppHostCapability2, McpServerAuthMode: McpServerAuthMode2, McpServerUrl: McpServerUrl2, PluginContributionKind: PluginContributionKindSchema, ReferenceOpenBehavior: ReferenceOpenBehavior2, ReferencePresentationUriPattern: ReferencePresentationUriPattern2, ReferencePresentationAccountLinks: ReferencePresentationAccountLinks2, ReferencePresentationAddress: ReferencePresentationAddress2, ReferencePresentationUrlClaim: ReferencePresentationUrlClaim2, ReferencePresentationVariants: ReferencePresentationVariants2, ReferencePresentationWords: ReferencePresentationWords2, UriModuleFacts: UriModuleFacts2, WhiteboardTypeContribution: WhiteboardTypeContribution2 } = canonical ? canonicalContributionSchemas : contributions_exports;
6745
6810
  const { FileExtensionToken: FileExtensionToken2, GitBasicAuthUser: GitBasicAuthUser2, GitHostName: GitHostName2, GlobalContributionId: GlobalContributionId2, HttpsUrl: HttpsUrl2, LocalContributionId: LocalContributionId2, MimeTypeString: MimeTypeString2, NonEmptyString: NonEmptyString3, PackageAssetPath: PackageAssetPath2, PluginId: PluginId2, PluginNamespace: PluginNamespace2, PluginToolName: PluginToolName2, RegistrableDomain: RegistrableDomain2, SignedInStatusCode: SignedInStatusCode2, TargetEntrypoint: TargetEntrypoint2, UriScheme: UriScheme2 } = canonical ? canonicalCommonSchemas : common_exports;
6746
6811
  const { PluginExternalCliConnect: PluginExternalCliConnect2, PluginOAuthClientSupplier: PluginOAuthClientSupplier2 } = canonical ? canonicalManifestSchemas : manifest_exports;
6747
6812
  const { ResolvedPluginGrants: ResolvedPluginGrants2, ScopeRequirement: ScopeRequirement2 } = canonical ? canonicalPermissionSchemas : permissions_exports;
6748
- const ResolvedPluginContributionId2 = z19.strictObject({
6813
+ const ResolvedPluginContributionId2 = z20.strictObject({
6749
6814
  target: PluginTargetName,
6750
6815
  kind: PluginContributionKindSchema,
6751
6816
  localId: PluginEventLocalId2,
@@ -6759,20 +6824,20 @@ function createResolvedContractSchemas(canonical) {
6759
6824
  });
6760
6825
  }
6761
6826
  });
6762
- const ResolvedKayToolId = z19.strictObject({
6827
+ const ResolvedKayToolId = z20.strictObject({
6763
6828
  localId: LocalContributionId2,
6764
6829
  globalId: GlobalContributionId2,
6765
6830
  toolName: PluginToolName2
6766
6831
  });
6767
- const ResolvedKayAgentTool2 = z19.strictObject({
6832
+ const ResolvedKayAgentTool2 = z20.strictObject({
6768
6833
  ...ResolvedKayToolId.shape,
6769
6834
  displayName: NonEmptyString3.optional(),
6770
6835
  description: NonEmptyString3.optional(),
6771
6836
  parameters: JsonSchema.optional(),
6772
- executionMode: z19.enum(["sequential", "parallel"]).optional(),
6837
+ executionMode: z20.enum(["sequential", "parallel"]).optional(),
6773
6838
  promptSnippet: NonEmptyString3.optional(),
6774
- promptGuidelines: z19.array(NonEmptyString3).optional(),
6775
- requiresAuth: z19.strictObject({
6839
+ promptGuidelines: z20.array(NonEmptyString3).optional(),
6840
+ requiresAuth: z20.strictObject({
6776
6841
  serviceId: GlobalContributionId2,
6777
6842
  schemeId: GlobalContributionId2.optional()
6778
6843
  }).optional(),
@@ -6781,37 +6846,37 @@ function createResolvedContractSchemas(canonical) {
6781
6846
  const ResolvedKayAppTool2 = ResolvedKayAgentTool2.omit({
6782
6847
  requiresAuth: true
6783
6848
  }).extend({
6784
- availability: z19.strictObject({ scope: z19.literal("app") }).optional()
6849
+ availability: z20.strictObject({ scope: z20.literal("app") }).optional()
6785
6850
  });
6786
- const ResolvedKayAppDataSource2 = z19.strictObject({
6851
+ const ResolvedKayAppDataSource2 = z20.strictObject({
6787
6852
  localId: LocalContributionId2,
6788
6853
  globalId: GlobalContributionId2,
6789
- scope: z19.enum(["runtime", "account", "session"]),
6790
- snapshot: z19.strictObject({
6791
- version: z19.number().int().positive(),
6792
- schema: z19.record(z19.string(), z19.unknown())
6854
+ scope: z20.enum(["runtime", "account", "session"]),
6855
+ snapshot: z20.strictObject({
6856
+ version: z20.number().int().positive(),
6857
+ schema: z20.record(z20.string(), z20.unknown())
6793
6858
  }),
6794
- change: z19.strictObject({
6795
- version: z19.number().int().positive(),
6796
- schema: z19.record(z19.string(), z19.unknown()),
6797
- semantics: z19.discriminatedUnion("kind", [
6798
- z19.strictObject({ kind: z19.literal("incremental") }),
6799
- z19.strictObject({
6800
- kind: z19.literal("snapshot-replacement"),
6801
- maxEncodedBytes: z19.number().int().positive(),
6859
+ change: z20.strictObject({
6860
+ version: z20.number().int().positive(),
6861
+ schema: z20.record(z20.string(), z20.unknown()),
6862
+ semantics: z20.discriminatedUnion("kind", [
6863
+ z20.strictObject({ kind: z20.literal("incremental") }),
6864
+ z20.strictObject({
6865
+ kind: z20.literal("snapshot-replacement"),
6866
+ maxEncodedBytes: z20.number().int().positive(),
6802
6867
  rationale: pluginString(canonical).min(1).max(1024)
6803
6868
  })
6804
6869
  ]).optional()
6805
6870
  }),
6806
6871
  read: AppDataSourceRead.optional(),
6807
- messageDraft: z19.strictObject({ schemes: z19.array(UriScheme2).min(1) }).optional(),
6808
- store: z19.discriminatedUnion("shape", [
6809
- z19.strictObject({
6810
- shape: z19.literal("rows"),
6811
- rowsField: z19.string().min(1),
6812
- key: z19.array(z19.string().min(1)).min(1)
6872
+ messageDraft: z20.strictObject({ schemes: z20.array(UriScheme2).min(1) }).optional(),
6873
+ store: z20.discriminatedUnion("shape", [
6874
+ z20.strictObject({
6875
+ shape: z20.literal("rows"),
6876
+ rowsField: z20.string().min(1),
6877
+ key: z20.array(z20.string().min(1)).min(1)
6813
6878
  }),
6814
- z19.strictObject({ shape: z19.literal("value") })
6879
+ z20.strictObject({ shape: z20.literal("value") })
6815
6880
  ]).optional()
6816
6881
  }).superRefine((source, ctx) => {
6817
6882
  if (source.read !== void 0 && source.scope !== "session") {
@@ -6831,134 +6896,134 @@ function createResolvedContractSchemas(canonical) {
6831
6896
  /** The auth service that module signs in through, whose accounts a card may send from. */
6832
6897
  authService: GlobalContributionId2.optional()
6833
6898
  });
6834
- const ResolvedPluginCard2 = z19.strictObject({
6899
+ const ResolvedPluginCard2 = z20.strictObject({
6835
6900
  localId: LocalContributionId2,
6836
6901
  globalId: GlobalContributionId2,
6837
6902
  pluginId: PluginId2,
6838
6903
  description: NonEmptyString3,
6839
6904
  inputs: JsonSchema,
6840
- readEndpoint: z19.strictObject({
6905
+ readEndpoint: z20.strictObject({
6841
6906
  localId: LocalContributionId2,
6842
6907
  globalId: GlobalContributionId2
6843
6908
  }),
6844
- submitEndpoint: z19.strictObject({
6909
+ submitEndpoint: z20.strictObject({
6845
6910
  localId: LocalContributionId2,
6846
6911
  globalId: GlobalContributionId2
6847
6912
  }),
6848
6913
  authService: GlobalContributionId2.optional()
6849
6914
  });
6850
- const ResolvedKayAppWorkflow2 = z19.strictObject({
6915
+ const ResolvedKayAppWorkflow2 = z20.strictObject({
6851
6916
  localId: LocalContributionId2,
6852
6917
  globalId: GlobalContributionId2,
6853
6918
  name: NonEmptyString3,
6854
6919
  description: NonEmptyString3,
6855
- everyMs: z19.number().int().positive(),
6856
- auth: z19.strictObject({
6920
+ everyMs: z20.number().int().positive(),
6921
+ auth: z20.strictObject({
6857
6922
  serviceId: GlobalContributionId2,
6858
6923
  schemeId: GlobalContributionId2,
6859
- scopes: z19.array(NonEmptyString3).min(1).optional()
6924
+ scopes: z20.array(NonEmptyString3).min(1).optional()
6860
6925
  }).optional()
6861
6926
  });
6862
6927
  const ResolvedKayAppWhiteboardType2 = WhiteboardTypeContribution2.safeExtend({
6863
6928
  globalId: GlobalContributionId2
6864
6929
  });
6865
- const ResolvedKayAppMcpServer2 = z19.strictObject({
6930
+ const ResolvedKayAppMcpServer2 = z20.strictObject({
6866
6931
  name: LocalContributionId2,
6867
6932
  pluginId: PluginId2,
6868
6933
  url: McpServerUrl2,
6869
6934
  auth: McpServerAuthMode2,
6870
6935
  authServiceId: GlobalContributionId2.optional()
6871
6936
  });
6872
- const ResolvedKayAppWorkingDocumentProvider2 = z19.strictObject({
6937
+ const ResolvedKayAppWorkingDocumentProvider2 = z20.strictObject({
6873
6938
  localId: LocalContributionId2,
6874
6939
  globalId: GlobalContributionId2,
6875
6940
  displayName: NonEmptyString3,
6876
- schemes: z19.array(UriScheme2),
6877
- hosts: z19.array(NonEmptyString3),
6941
+ schemes: z20.array(UriScheme2),
6942
+ hosts: z20.array(NonEmptyString3),
6878
6943
  authServiceId: GlobalContributionId2.optional(),
6879
6944
  authSchemeId: GlobalContributionId2.optional(),
6880
6945
  scopeRequirement: ScopeRequirement2.optional()
6881
6946
  });
6882
- const ResolvedKayAgentUriModule2 = z19.strictObject({
6947
+ const ResolvedKayAgentUriModule2 = z20.strictObject({
6883
6948
  localId: LocalContributionId2,
6884
- adapterId: z19.string().min(1).optional(),
6949
+ adapterId: z20.string().min(1).optional(),
6885
6950
  globalId: GlobalContributionId2,
6886
- schemes: z19.array(UriScheme2).min(1),
6951
+ schemes: z20.array(UriScheme2).min(1),
6887
6952
  displayName: NonEmptyString3.optional(),
6888
6953
  authServiceId: GlobalContributionId2.optional(),
6889
6954
  /** Mirrors `UriModuleContribution.authScheme`; a local ref takes the plugin's namespace. */
6890
6955
  authSchemeId: GlobalContributionId2.optional(),
6891
- requiredScopes: z19.array(NonEmptyString3).optional(),
6956
+ requiredScopes: z20.array(NonEmptyString3).optional(),
6892
6957
  /** Mirrors `UriModuleContribution.knownResources` (host-side recording opt-in). */
6893
- knownResources: z19.literal(true).optional(),
6958
+ knownResources: z20.literal(true).optional(),
6894
6959
  /** Mirrors `UriModuleContribution.describesOperations`. */
6895
- describesOperations: z19.literal(true).optional(),
6960
+ describesOperations: z20.literal(true).optional(),
6896
6961
  /** Mirrors `UriModuleContribution.looksUpWebLinks`. */
6897
- looksUpWebLinks: z19.literal(true).optional(),
6962
+ looksUpWebLinks: z20.literal(true).optional(),
6898
6963
  ...UriModuleFacts2.shape
6899
6964
  });
6900
- const ResolvedKayAgentArtifactUriModule2 = z19.strictObject({
6965
+ const ResolvedKayAgentArtifactUriModule2 = z20.strictObject({
6901
6966
  localId: LocalContributionId2,
6902
6967
  globalId: GlobalContributionId2,
6903
6968
  scheme: UriScheme2,
6904
- editable: z19.boolean(),
6905
- listable: z19.boolean(),
6906
- deletable: z19.boolean(),
6907
- appendable: z19.boolean(),
6908
- storageScope: z19.enum(["session", "family"])
6969
+ editable: z20.boolean(),
6970
+ listable: z20.boolean(),
6971
+ deletable: z20.boolean(),
6972
+ appendable: z20.boolean(),
6973
+ storageScope: z20.enum(["session", "family"])
6909
6974
  });
6910
- const ResolvedKayAgentEntityResolver2 = z19.strictObject({
6975
+ const ResolvedKayAgentEntityResolver2 = z20.strictObject({
6911
6976
  localId: LocalContributionId2,
6912
6977
  globalId: GlobalContributionId2,
6913
6978
  displayName: NonEmptyString3.optional(),
6914
6979
  uriModule: GlobalContributionId2,
6915
- entityTypes: z19.array(NonEmptyString3).min(1),
6980
+ entityTypes: z20.array(NonEmptyString3).min(1),
6916
6981
  uriHint: NonEmptyString3
6917
6982
  });
6918
- const ResolvedKayAgentGitHostClaim2 = z19.strictObject({
6983
+ const ResolvedKayAgentGitHostClaim2 = z20.strictObject({
6919
6984
  host: GitHostName2,
6920
6985
  authServiceId: GlobalContributionId2,
6921
6986
  /** Manifest-declared order; the clone ladder tries them in sequence. */
6922
- authSchemeIds: z19.array(GlobalContributionId2).min(1),
6987
+ authSchemeIds: z20.array(GlobalContributionId2).min(1),
6923
6988
  /** Non-secret display copy for the claiming service, for clone failure text. */
6924
- authServiceDisplayName: z19.string(),
6989
+ authServiceDisplayName: z20.string(),
6925
6990
  basicAuthUser: GitBasicAuthUser2
6926
6991
  });
6927
- const ResolvedKayAgentConverter2 = z19.strictObject({
6992
+ const ResolvedKayAgentConverter2 = z20.strictObject({
6928
6993
  localId: LocalContributionId2,
6929
6994
  globalId: GlobalContributionId2,
6930
6995
  description: NonEmptyString3.optional(),
6931
- mimeTypes: z19.array(MimeTypeString2).min(1),
6932
- extensions: z19.array(FileExtensionToken2).min(1).optional()
6996
+ mimeTypes: z20.array(MimeTypeString2).min(1),
6997
+ extensions: z20.array(FileExtensionToken2).min(1).optional()
6933
6998
  });
6934
6999
  const ResolvedReferencePresentationUrlClaim = ReferencePresentationUrlClaim2.extend({
6935
- brandIcon: z19.string().max(64 * 1024).optional()
7000
+ brandIcon: z20.string().max(64 * 1024).optional()
6936
7001
  });
6937
- const ResolvedReferencePresentation2 = z19.strictObject({
7002
+ const ResolvedReferencePresentation2 = z20.strictObject({
6938
7003
  localId: LocalContributionId2,
6939
7004
  globalId: GlobalContributionId2,
6940
7005
  uriModule: GlobalContributionId2.optional(),
6941
7006
  /** The schemes this presentation is about: its `scheme`, or its module's. */
6942
- schemes: z19.array(UriScheme2).min(1).optional(),
7007
+ schemes: z20.array(UriScheme2).min(1).optional(),
6943
7008
  /** The module's `displayName`: the source's name in a row. */
6944
7009
  displayName: NonEmptyString3.optional(),
6945
7010
  /** The module's auth service, qualified: whose accounts `accountLinks` reads. */
6946
7011
  authService: GlobalContributionId2.optional(),
6947
7012
  accountLinks: ReferencePresentationAccountLinks2.optional(),
6948
- addresses: z19.array(ReferencePresentationAddress2).min(1).optional(),
7013
+ addresses: z20.array(ReferencePresentationAddress2).min(1).optional(),
6949
7014
  /** Comes with `open`. A presentation with neither only words its module's addresses. */
6950
7015
  resourceKind: NonEmptyString3.optional(),
6951
7016
  open: ReferenceOpenBehavior2.optional(),
6952
7017
  /** MIME-specific resource kinds; absent keys use the base presentation. */
6953
7018
  variants: ReferencePresentationVariants2.optional(),
6954
- claims: z19.array(ResolvedReferencePresentationUrlClaim).optional(),
6955
- tooltip: z19.strictObject({
7019
+ claims: z20.array(ResolvedReferencePresentationUrlClaim).optional(),
7020
+ tooltip: z20.strictObject({
6956
7021
  app: GlobalContributionId2,
6957
7022
  pattern: ReferencePresentationUriPattern2
6958
7023
  }).optional(),
6959
7024
  words: ReferencePresentationWords2.optional()
6960
7025
  });
6961
- const ResolvedPluginProvisioningRequirement2 = z19.strictObject({
7026
+ const ResolvedPluginProvisioningRequirement2 = z20.strictObject({
6962
7027
  id: LocalContributionId2,
6963
7028
  displayName: NonEmptyString3,
6964
7029
  description: NonEmptyString3,
@@ -6968,15 +7033,15 @@ function createResolvedContractSchemas(canonical) {
6968
7033
  * URL degrades to "Reconnect" in the UI instead of a broken link.
6969
7034
  */
6970
7035
  remediationUrl: HttpsUrl2.optional(),
6971
- probe: z19.strictObject({
7036
+ probe: z20.strictObject({
6972
7037
  url: HttpsUrl2,
6973
- method: z19.enum(["GET"]),
6974
- verdictStatuses: z19.array(SignedInStatusCode2).min(1),
7038
+ method: z20.enum(["GET"]),
7039
+ verdictStatuses: z20.array(SignedInStatusCode2).min(1),
6975
7040
  nonEmptyArrayAt: NonEmptyString3.optional()
6976
7041
  })
6977
7042
  });
6978
7043
  const ResolvedProvisioningField = {
6979
- provisioning: z19.array(ResolvedPluginProvisioningRequirement2).optional()
7044
+ provisioning: z20.array(ResolvedPluginProvisioningRequirement2).optional()
6980
7045
  };
6981
7046
  const ResolvedPluginAuthSchemeDescriptionFields = {
6982
7047
  displayName: NonEmptyString3.optional(),
@@ -6988,120 +7053,120 @@ function createResolvedContractSchemas(canonical) {
6988
7053
  ...ResolvedPluginAuthSchemeDescriptionFields,
6989
7054
  localId: LocalContributionId2,
6990
7055
  globalId: GlobalContributionId2,
6991
- kind: z19.literal("oauth2"),
6992
- scopes: z19.array(z19.string()).optional(),
6993
- connectScopes: z19.array(NonEmptyString3).optional(),
7056
+ kind: z20.literal("oauth2"),
7057
+ scopes: z20.array(z20.string()).optional(),
7058
+ connectScopes: z20.array(NonEmptyString3).optional(),
6994
7059
  authorizationUrl: HttpsUrl2,
6995
7060
  tokenUrl: HttpsUrl2,
6996
- extraAuthorizeParams: z19.record(z19.string(), z19.string()).optional(),
6997
- extraAuthorizeParamsWhenAccountHeld: z19.record(NonEmptyString3, z19.string()).optional()
7061
+ extraAuthorizeParams: z20.record(z20.string(), z20.string()).optional(),
7062
+ extraAuthorizeParamsWhenAccountHeld: z20.record(NonEmptyString3, z20.string()).optional()
6998
7063
  };
6999
- const ResolvedPluginAuthSchemeOAuthPkce = z19.strictObject({
7064
+ const ResolvedPluginAuthSchemeOAuthPkce = z20.strictObject({
7000
7065
  ...ResolvedPluginAuthSchemeOAuthBase,
7001
- exchange: z19.literal("pkce"),
7066
+ exchange: z20.literal("pkce"),
7002
7067
  byoocProfile: PluginByoocProfile.optional(),
7003
- clientSuppliers: z19.array(PluginOAuthClientSupplier2).nonempty(),
7068
+ clientSuppliers: z20.array(PluginOAuthClientSupplier2).nonempty(),
7004
7069
  clientId: NonEmptyString3.optional(),
7005
7070
  clientSecret: NonEmptyString3.optional(),
7006
- account: z19.literal("lookup").optional()
7071
+ account: z20.literal("lookup").optional()
7007
7072
  });
7008
- const ResolvedPluginAuthSchemeOAuthConfidential = z19.strictObject({
7073
+ const ResolvedPluginAuthSchemeOAuthConfidential = z20.strictObject({
7009
7074
  ...ResolvedPluginAuthSchemeOAuthBase,
7010
- exchange: z19.literal("confidential"),
7011
- clientSuppliers: z19.tuple([z19.literal("kay")]),
7012
- account: z19.enum(["lookup", "sign-in"])
7075
+ exchange: z20.literal("confidential"),
7076
+ clientSuppliers: z20.tuple([z20.literal("kay")]),
7077
+ account: z20.enum(["lookup", "sign-in"])
7013
7078
  });
7014
- const ResolvedPluginAuthSchemeOAuth2 = z19.discriminatedUnion("exchange", [
7079
+ const ResolvedPluginAuthSchemeOAuth2 = z20.discriminatedUnion("exchange", [
7015
7080
  ResolvedPluginAuthSchemeOAuthPkce,
7016
7081
  ResolvedPluginAuthSchemeOAuthConfidential
7017
7082
  ]);
7018
- const ResolvedPluginAuthSchemeApiKey = z19.strictObject({
7083
+ const ResolvedPluginAuthSchemeApiKey = z20.strictObject({
7019
7084
  ...ResolvedProvisioningField,
7020
7085
  ...ResolvedPluginAuthSchemeDescriptionFields,
7021
7086
  localId: LocalContributionId2,
7022
7087
  globalId: GlobalContributionId2,
7023
- kind: z19.literal("api-key"),
7024
- scopes: z19.array(z19.string()).optional(),
7088
+ kind: z20.literal("api-key"),
7089
+ scopes: z20.array(z20.string()).optional(),
7025
7090
  /** Resolution applies the manifest's default, "<service name> API key". */
7026
7091
  inputLabel: NonEmptyString3,
7027
- fields: z19.array(z19.strictObject({ id: z19.string(), label: z19.string() })).optional(),
7028
- setup: z19.strictObject({ instructions: z19.string(), url: HttpsUrl2 }).optional(),
7029
- account: z19.literal("lookup").optional()
7092
+ fields: z20.array(z20.strictObject({ id: z20.string(), label: z20.string() })).optional(),
7093
+ setup: z20.strictObject({ instructions: z20.string(), url: HttpsUrl2 }).optional(),
7094
+ account: z20.literal("lookup").optional()
7030
7095
  });
7031
- const ResolvedPluginAuthSchemeDelegated = z19.strictObject({
7096
+ const ResolvedPluginAuthSchemeDelegated = z20.strictObject({
7032
7097
  ...ResolvedPluginAuthSchemeDescriptionFields,
7033
7098
  localId: LocalContributionId2,
7034
7099
  globalId: GlobalContributionId2,
7035
- kind: z19.literal("delegated"),
7036
- scopes: z19.array(z19.string()).optional()
7100
+ kind: z20.literal("delegated"),
7101
+ scopes: z20.array(z20.string()).optional()
7037
7102
  });
7038
- const ResolvedPluginAuthSchemeExternalCli = z19.strictObject({
7103
+ const ResolvedPluginAuthSchemeExternalCli = z20.strictObject({
7039
7104
  ...ResolvedPluginAuthSchemeDescriptionFields,
7040
7105
  localId: LocalContributionId2,
7041
7106
  globalId: GlobalContributionId2,
7042
- kind: z19.literal("external-cli"),
7043
- scopes: z19.array(z19.string()).optional(),
7107
+ kind: z20.literal("external-cli"),
7108
+ scopes: z20.array(z20.string()).optional(),
7044
7109
  /** The manifest's connect facts, verbatim. */
7045
7110
  cli: PluginExternalCliConnect2.optional()
7046
7111
  });
7047
- const ResolvedPluginAuthScheme2 = z19.discriminatedUnion("kind", [
7112
+ const ResolvedPluginAuthScheme2 = z20.discriminatedUnion("kind", [
7048
7113
  ResolvedPluginAuthSchemeOAuth2,
7049
7114
  ResolvedPluginAuthSchemeApiKey,
7050
7115
  ResolvedPluginAuthSchemeDelegated,
7051
7116
  ResolvedPluginAuthSchemeExternalCli
7052
7117
  ]);
7053
- const ResolvedPluginWebSession2 = z19.strictObject({
7054
- importance: z19.enum(["required", "recommended"]),
7118
+ const ResolvedPluginWebSession2 = z20.strictObject({
7119
+ importance: z20.enum(["required", "recommended"]),
7055
7120
  loginUrl: HttpsUrl2,
7056
- cookieDomains: z19.array(RegistrableDomain2).min(1),
7057
- probe: z19.strictObject({
7121
+ cookieDomains: z20.array(RegistrableDomain2).min(1),
7122
+ probe: z20.strictObject({
7058
7123
  url: HttpsUrl2,
7059
- method: z19.enum(["GET", "POST"]),
7060
- signedInStatuses: z19.array(SignedInStatusCode2).min(1)
7124
+ method: z20.enum(["GET", "POST"]),
7125
+ signedInStatuses: z20.array(SignedInStatusCode2).min(1)
7061
7126
  }),
7062
- oauthVenue: z19.enum(["embedded", "external"]),
7063
- signInFirst: z19.string().optional()
7127
+ oauthVenue: z20.enum(["embedded", "external"]),
7128
+ signInFirst: z20.string().optional()
7064
7129
  }).superRefine(refineWebSessionScopeConfined);
7065
- const ResolvedPluginAuthService2 = z19.strictObject({
7130
+ const ResolvedPluginAuthService2 = z20.strictObject({
7066
7131
  localId: LocalContributionId2,
7067
7132
  globalId: GlobalContributionId2,
7068
- displayName: z19.string(),
7069
- summary: z19.string().optional(),
7070
- schemes: z19.array(ResolvedPluginAuthScheme2).min(1),
7071
- purposes: z19.array(z19.string()).min(1),
7133
+ displayName: z20.string(),
7134
+ summary: z20.string().optional(),
7135
+ schemes: z20.array(ResolvedPluginAuthScheme2).min(1),
7136
+ purposes: z20.array(z20.string()).min(1),
7072
7137
  /** The service's browser half, when the manifest declares one. */
7073
7138
  webSession: ResolvedPluginWebSession2.optional()
7074
7139
  });
7075
- const ResolvedKayUiAppEndpointCapability2 = z19.union([
7076
- z19.strictObject({
7140
+ const ResolvedKayUiAppEndpointCapability2 = z20.union([
7141
+ z20.strictObject({
7077
7142
  localId: LocalContributionId2,
7078
7143
  globalId: GlobalContributionId2
7079
7144
  }),
7080
- z19.strictObject({ pluginId: PluginId2, localId: LocalContributionId2 })
7145
+ z20.strictObject({ pluginId: PluginId2, localId: LocalContributionId2 })
7081
7146
  ]);
7082
- const ResolvedKayUiApp2 = z19.strictObject({
7147
+ const ResolvedKayUiApp2 = z20.strictObject({
7083
7148
  localId: LocalContributionId2,
7084
7149
  globalId: GlobalContributionId2,
7085
7150
  displayName: NonEmptyString3,
7086
- contextOnly: z19.literal(true).optional(),
7151
+ contextOnly: z20.literal(true).optional(),
7087
7152
  description: NonEmptyString3.optional(),
7088
7153
  icon: PackageAssetPath2.optional(),
7089
- runtime: z19.literal("kay.react-app.v1"),
7090
- sdk: z19.strictObject({ range: NonEmptyString3 }),
7154
+ runtime: z20.literal("kay.react-app.v1"),
7155
+ sdk: z20.strictObject({ range: NonEmptyString3 }),
7091
7156
  entrypoint: TargetEntrypoint2,
7092
- styles: z19.array(PackageAssetPath2).optional(),
7093
- assets: z19.array(PackageAssetPath2).optional(),
7094
- capabilities: z19.strictObject({
7095
- endpoints: z19.array(ResolvedKayUiAppEndpointCapability2).optional(),
7096
- host: z19.array(KayUiAppHostCapability2).optional(),
7097
- feeds: z19.array((canonical ? canonicalContributionSchemas : contributions_exports).UiAppCapabilityReference).optional()
7157
+ styles: z20.array(PackageAssetPath2).optional(),
7158
+ assets: z20.array(PackageAssetPath2).optional(),
7159
+ capabilities: z20.strictObject({
7160
+ endpoints: z20.array(ResolvedKayUiAppEndpointCapability2).optional(),
7161
+ host: z20.array(KayUiAppHostCapability2).optional(),
7162
+ feeds: z20.array((canonical ? canonicalContributionSchemas : contributions_exports).UiAppCapabilityReference).optional()
7098
7163
  }).optional()
7099
7164
  });
7100
- const ResolvedPluginContractV12 = z19.strictObject({
7101
- protocol: z19.literal("kay.plugin.v1"),
7165
+ const ResolvedPluginContractV12 = z20.strictObject({
7166
+ protocol: z20.literal("kay.plugin.v1"),
7102
7167
  pluginId: PluginId2,
7103
7168
  namespace: PluginNamespace2,
7104
- contributions: z19.array(ResolvedPluginContributionId2),
7169
+ contributions: z20.array(ResolvedPluginContributionId2),
7105
7170
  // The deduplicated set of qualified (dotted) external auth-service ids this
7106
7171
  // plugin references, from agent uriModule, tool and cliBinding
7107
7172
  // `authService` refs, card sign-in refs, and auth-grant `service` refs. Always present - a plugin
@@ -7109,19 +7174,19 @@ function createResolvedContractSchemas(canonical) {
7109
7174
  // is a recorded dependency, not a resolution: there is no runtime plugin
7110
7175
  // loader in v1, so nothing here verifies the reference resolves within a
7111
7176
  // composed roster (a composition-time concern owned elsewhere).
7112
- consumesAuthServices: z19.array(GlobalContributionId2),
7177
+ consumesAuthServices: z20.array(GlobalContributionId2),
7113
7178
  // The explicit plugin-level dependency ids declared in `dependencies.plugins` on the manifest,
7114
7179
  // deduped and validated at parse time. Always present; a plugin with no explicit dependencies
7115
7180
  // carries an empty array. Composition checks each id against the accepted roster and derives the
7116
7181
  // full dependency graph together with auth-inferred edges from `consumesAuthServices`.
7117
- explicitDependencies: z19.array(PluginId2),
7182
+ explicitDependencies: z20.array(PluginId2),
7118
7183
  dataDirSharedWith: PluginId2.optional(),
7119
- workers: z19.array(z19.strictObject({
7184
+ workers: z20.array(z20.strictObject({
7120
7185
  localId: LocalContributionId2,
7121
7186
  module: PackageAssetPath2
7122
7187
  })).optional(),
7123
- workloadPurposes: z19.array(PluginWorkloadPurpose).optional(),
7124
- shellCommands: z19.array(PluginShellCommand.omit({ endpoint: true }).extend({
7188
+ workloadPurposes: z20.array(PluginWorkloadPurpose).optional(),
7189
+ shellCommands: z20.array(PluginShellCommand.omit({ endpoint: true }).extend({
7125
7190
  endpointId: GlobalContributionId2
7126
7191
  })).optional(),
7127
7192
  projectDirectories: PluginProjectDirectories.omit({ endpoint: true }).extend({ endpointId: GlobalContributionId2 }).optional(),
@@ -7129,27 +7194,27 @@ function createResolvedContractSchemas(canonical) {
7129
7194
  // target must register and the credential authority keys on. Always present;
7130
7195
  // a plugin that declares no `auth.services` carries an empty array. The dual
7131
7196
  // of `consumesAuthServices` (services it merely references).
7132
- authServices: z19.array(ResolvedPluginAuthService2),
7197
+ authServices: z20.array(ResolvedPluginAuthService2),
7133
7198
  grants: ResolvedPluginGrants2.optional(),
7134
- kayAgentFamilyFolder: z19.strictObject({ scope: z19.literal("root") }).optional(),
7135
- kayAgentUriModules: z19.array(ResolvedKayAgentUriModule2).optional(),
7136
- kayAgentArtifactUriModules: z19.array(ResolvedKayAgentArtifactUriModule2).optional(),
7137
- kayAgentEntityResolvers: z19.array(ResolvedKayAgentEntityResolver2).optional(),
7138
- kayAgentGitHostClaims: z19.array(ResolvedKayAgentGitHostClaim2).optional(),
7139
- kayAgentTools: z19.array(ResolvedKayAgentTool2).optional(),
7140
- kayAppArtifacts: z19.strictObject({ outputs: z19.literal(true) }).optional(),
7141
- kayAppUriModules: z19.array(ResolvedKayAgentUriModule2).optional(),
7142
- kayAppTools: z19.array(ResolvedKayAppTool2).optional(),
7143
- kayAppApprovalTypes: z19.array(ResolvedKayAppApprovalType2).optional(),
7144
- kayAppWorkflows: z19.array(ResolvedKayAppWorkflow2).optional(),
7145
- kayAppCards: z19.array(ResolvedPluginCard2).optional(),
7146
- kayAppDataSources: z19.array(ResolvedKayAppDataSource2).optional(),
7147
- kayAppWhiteboardTypes: z19.array(ResolvedKayAppWhiteboardType2).optional(),
7148
- kayAppWorkingDocumentProviders: z19.array(ResolvedKayAppWorkingDocumentProvider2).optional(),
7149
- kayAppMcpServers: z19.array(ResolvedKayAppMcpServer2).optional(),
7150
- kayAgentConverters: z19.array(ResolvedKayAgentConverter2).optional(),
7151
- referencePresentations: z19.array(ResolvedReferencePresentation2).optional(),
7152
- kayUiApps: z19.array(ResolvedKayUiApp2).optional()
7199
+ kayAgentFamilyFolder: z20.strictObject({ scope: z20.literal("root") }).optional(),
7200
+ kayAgentUriModules: z20.array(ResolvedKayAgentUriModule2).optional(),
7201
+ kayAgentArtifactUriModules: z20.array(ResolvedKayAgentArtifactUriModule2).optional(),
7202
+ kayAgentEntityResolvers: z20.array(ResolvedKayAgentEntityResolver2).optional(),
7203
+ kayAgentGitHostClaims: z20.array(ResolvedKayAgentGitHostClaim2).optional(),
7204
+ kayAgentTools: z20.array(ResolvedKayAgentTool2).optional(),
7205
+ kayAppArtifacts: z20.strictObject({ outputs: z20.literal(true) }).optional(),
7206
+ kayAppUriModules: z20.array(ResolvedKayAgentUriModule2).optional(),
7207
+ kayAppTools: z20.array(ResolvedKayAppTool2).optional(),
7208
+ kayAppApprovalTypes: z20.array(ResolvedKayAppApprovalType2).optional(),
7209
+ kayAppWorkflows: z20.array(ResolvedKayAppWorkflow2).optional(),
7210
+ kayAppCards: z20.array(ResolvedPluginCard2).optional(),
7211
+ kayAppDataSources: z20.array(ResolvedKayAppDataSource2).optional(),
7212
+ kayAppWhiteboardTypes: z20.array(ResolvedKayAppWhiteboardType2).optional(),
7213
+ kayAppWorkingDocumentProviders: z20.array(ResolvedKayAppWorkingDocumentProvider2).optional(),
7214
+ kayAppMcpServers: z20.array(ResolvedKayAppMcpServer2).optional(),
7215
+ kayAgentConverters: z20.array(ResolvedKayAgentConverter2).optional(),
7216
+ referencePresentations: z20.array(ResolvedReferencePresentation2).optional(),
7217
+ kayUiApps: z20.array(ResolvedKayUiApp2).optional()
7153
7218
  });
7154
7219
  return {
7155
7220
  ResolvedPluginContributionId: ResolvedPluginContributionId2,
@@ -7929,14 +7994,14 @@ function kayPluginCompatibilityAdvisories(input) {
7929
7994
  message: boundPluginDiagnosticMessage(`${manifest.displayName} (${manifest.id}) ${advisory.message}`)
7930
7995
  }));
7931
7996
  }
7932
- var ReadableCompatibility = z20.object({
7933
- supportedProtocols: z20.array(z20.string()).optional().catch(void 0),
7997
+ var ReadableCompatibility = z21.object({
7998
+ supportedProtocols: z21.array(z21.string()).optional().catch(void 0),
7934
7999
  minKayVersion: NonEmptyString.optional().catch(void 0),
7935
8000
  sdk: NonEmptyString.optional().catch(void 0)
7936
8001
  });
7937
- var ReadableManifestHead = z20.object({
7938
- id: z20.string().optional().catch(void 0),
7939
- displayName: z20.string().optional().catch(void 0),
8002
+ var ReadableManifestHead = z21.object({
8003
+ id: z21.string().optional().catch(void 0),
8004
+ displayName: z21.string().optional().catch(void 0),
7940
8005
  compatibility: ReadableCompatibility.optional().catch(void 0)
7941
8006
  });
7942
8007
  function keepNamespaceDerivedTools(contract, grandfathered) {
@@ -8043,28 +8108,28 @@ function errorText(error) {
8043
8108
  }
8044
8109
 
8045
8110
  // packages/plugin-protocol/dist/session-health.js
8046
- import { z as z21 } from "zod";
8111
+ import { z as z22 } from "zod";
8047
8112
  var SESSION_HEALTH_EXTENSION_ID = "kay.session-health";
8048
8113
  var SESSION_HEALTH_ENTRY_NAME = "session_health";
8049
8114
  var SESSION_HEALTH_CUSTOM_TYPE = `ext:${SESSION_HEALTH_EXTENSION_ID}:${SESSION_HEALTH_ENTRY_NAME}`;
8050
8115
  var SESSION_HEALTH_CLASSIFIER_IDS = ["jev"];
8051
- var sessionHealthEntrySchema = z21.object({
8052
- v: z21.literal(1),
8053
- verdict: z21.enum(["well", "bad", "unknown"]),
8116
+ var sessionHealthEntrySchema = z22.object({
8117
+ v: z22.literal(1),
8118
+ verdict: z22.enum(["well", "bad", "unknown"]),
8054
8119
  /**
8055
8120
  * The model's calibrated confidence in `well`, 0..1, or null when the
8056
8121
  * classifier declined to produce one. Never exported raw: the telemetry
8057
8122
  * event carries only the decile bucket.
8058
8123
  */
8059
- p_well: z21.number().min(0).max(1).nullable(),
8060
- classifier: z21.enum(SESSION_HEALTH_CLASSIFIER_IDS),
8061
- classifier_version: z21.string().min(1).max(64),
8062
- judged_at: z21.number().int().nonnegative(),
8063
- user_entry_id: z21.string().min(1).max(256),
8064
- through_entry_id: z21.string().min(1).max(256),
8065
- usage: z21.strictObject({
8066
- input_tokens: z21.number().int().nonnegative(),
8067
- output_tokens: z21.number().int().nonnegative()
8124
+ p_well: z22.number().min(0).max(1).nullable(),
8125
+ classifier: z22.enum(SESSION_HEALTH_CLASSIFIER_IDS),
8126
+ classifier_version: z22.string().min(1).max(64),
8127
+ judged_at: z22.number().int().nonnegative(),
8128
+ user_entry_id: z22.string().min(1).max(256),
8129
+ through_entry_id: z22.string().min(1).max(256),
8130
+ usage: z22.strictObject({
8131
+ input_tokens: z22.number().int().nonnegative(),
8132
+ output_tokens: z22.number().int().nonnegative()
8068
8133
  }).optional()
8069
8134
  });
8070
8135
  function sessionHealthPWellDecile(pWell) {
@@ -8074,28 +8139,28 @@ function sessionHealthPWellDecile(pWell) {
8074
8139
  }
8075
8140
 
8076
8141
  // packages/plugin-protocol/dist/resource-invocations.js
8077
- import { z as z23 } from "zod";
8142
+ import { z as z24 } from "zod";
8078
8143
 
8079
8144
  // packages/plugin-protocol/dist/resource-invocation-cursor.js
8080
- import { z as z22 } from "zod";
8081
- var CorpusResourceInvocationCursor = z22.strictObject({
8082
- at: z22.iso.datetime({ offset: true }),
8083
- eventId: z22.string().min(1)
8145
+ import { z as z23 } from "zod";
8146
+ var CorpusResourceInvocationCursor = z23.strictObject({
8147
+ at: z23.iso.datetime({ offset: true }),
8148
+ eventId: z23.string().min(1)
8084
8149
  });
8085
8150
 
8086
8151
  // packages/plugin-protocol/dist/resource-invocations.js
8087
- var CorpusResourceKind = z23.enum([
8152
+ var CorpusResourceKind = z24.enum([
8088
8153
  "skill",
8089
8154
  "context-file",
8090
8155
  "prompt-command"
8091
8156
  ]);
8092
- var CorpusResourceInvocationQuery = z23.strictObject({
8157
+ var CorpusResourceInvocationQuery = z24.strictObject({
8093
8158
  kind: CorpusResourceKind,
8094
- since: z23.iso.datetime({ offset: true }),
8095
- until: z23.iso.datetime({ offset: true }),
8159
+ since: z24.iso.datetime({ offset: true }),
8160
+ until: z24.iso.datetime({ offset: true }),
8096
8161
  after: CorpusResourceInvocationCursor.optional(),
8097
- limit: z23.number().int().min(1).max(1e3).optional(),
8098
- rootCreatedByKind: z23.enum(AGENT_RUNTIME_SESSION_CREATOR_KINDS).optional()
8162
+ limit: z24.number().int().min(1).max(1e3).optional(),
8163
+ rootCreatedByKind: z24.enum(AGENT_RUNTIME_SESSION_CREATOR_KINDS).optional()
8099
8164
  }).refine((value) => Date.parse(value.since) < Date.parse(value.until), {
8100
8165
  message: "since must precede until"
8101
8166
  });
@@ -8275,14 +8340,14 @@ function skillSuggestionEvidenceItems(evidence, options = {}) {
8275
8340
  }
8276
8341
 
8277
8342
  // packages/plugin-protocol/dist/ui-app-package.js
8278
- import { z as z24 } from "zod";
8343
+ import { z as z25 } from "zod";
8279
8344
  var KAY_UI_APP_PACKAGE_PROTOCOL = "kay.ui.app-package.v1";
8280
8345
  var KAY_UI_BUNDLE_INDEX_PROTOCOL = "kay.ui.bundle-index.v1";
8281
- var KayUiBundleOutputPath = z24.string().trim().min(1).refine((value) => !value.startsWith("/") && !value.startsWith("./") && !value.includes("\\") && !value.split("/").includes(".."), { message: "bundle output path must stay relative to the bundle root" });
8282
- var KayUiBundleIndexV1 = z24.strictObject({
8283
- protocol: z24.literal(KAY_UI_BUNDLE_INDEX_PROTOCOL),
8346
+ var KayUiBundleOutputPath = z25.string().trim().min(1).refine((value) => !value.startsWith("/") && !value.startsWith("./") && !value.includes("\\") && !value.split("/").includes(".."), { message: "bundle output path must stay relative to the bundle root" });
8347
+ var KayUiBundleIndexV1 = z25.strictObject({
8348
+ protocol: z25.literal(KAY_UI_BUNDLE_INDEX_PROTOCOL),
8284
8349
  entryPath: KayUiBundleOutputPath,
8285
- files: z24.array(z24.strictObject({
8350
+ files: z25.array(z25.strictObject({
8286
8351
  path: KayUiBundleOutputPath,
8287
8352
  mediaType: NonEmptyString
8288
8353
  })).min(1)
@@ -8309,19 +8374,19 @@ var KayUiBundleIndexV1 = z24.strictObject({
8309
8374
  function parseKayUiBundleIndexV1(input) {
8310
8375
  return KayUiBundleIndexV1.parse(input);
8311
8376
  }
8312
- var KayUiAppPackageFile = z24.strictObject({
8377
+ var KayUiAppPackageFile = z25.strictObject({
8313
8378
  path: PackageAssetPath,
8314
8379
  mediaType: NonEmptyString,
8315
- bytes: z24.instanceof(Uint8Array).refine((bytes) => bytes.byteLength > 0, {
8380
+ bytes: z25.instanceof(Uint8Array).refine((bytes) => bytes.byteLength > 0, {
8316
8381
  message: "app package file bytes must not be empty"
8317
8382
  })
8318
8383
  });
8319
- var KayUiAppPackageV1 = z24.strictObject({
8320
- protocol: z24.literal(KAY_UI_APP_PACKAGE_PROTOCOL),
8384
+ var KayUiAppPackageV1 = z25.strictObject({
8385
+ protocol: z25.literal(KAY_UI_APP_PACKAGE_PROTOCOL),
8321
8386
  appLocalId: LocalContributionId,
8322
8387
  entry: KayUiAppPackageFile,
8323
- styles: z24.array(KayUiAppPackageFile).optional(),
8324
- assets: z24.array(KayUiAppPackageFile).optional()
8388
+ styles: z25.array(KayUiAppPackageFile).optional(),
8389
+ assets: z25.array(KayUiAppPackageFile).optional()
8325
8390
  }).superRefine((appPackage, ctx) => {
8326
8391
  if (appPackage.entry.mediaType !== "application/javascript") {
8327
8392
  ctx.addIssue({
@@ -8358,28 +8423,28 @@ function parseKayUiAppPackageV1(input) {
8358
8423
  }
8359
8424
 
8360
8425
  // packages/plugin-protocol/dist/product-events.js
8361
- import { z as z25 } from "zod";
8426
+ import { z as z26 } from "zod";
8362
8427
  var exportable = {
8363
- class: z25.literal("exportable"),
8364
- optional: z25.boolean().optional()
8428
+ class: z26.literal("exportable"),
8429
+ optional: z26.boolean().optional()
8365
8430
  };
8366
- var PluginProductEventField = z25.union([
8367
- z25.strictObject({ class: z25.literal("local") }),
8368
- z25.strictObject({
8431
+ var PluginProductEventField = z26.union([
8432
+ z26.strictObject({ class: z26.literal("local") }),
8433
+ z26.strictObject({
8369
8434
  ...exportable,
8370
- type: z25.literal("enum"),
8371
- values: z25.array(z25.string())
8435
+ type: z26.literal("enum"),
8436
+ values: z26.array(z26.string())
8372
8437
  }),
8373
- z25.strictObject({
8438
+ z26.strictObject({
8374
8439
  ...exportable,
8375
- type: z25.literal("number"),
8376
- min: z25.number(),
8377
- max: z25.number(),
8378
- integer: z25.boolean().optional()
8440
+ type: z26.literal("number"),
8441
+ min: z26.number(),
8442
+ max: z26.number(),
8443
+ integer: z26.boolean().optional()
8379
8444
  }),
8380
- z25.strictObject({
8445
+ z26.strictObject({
8381
8446
  ...exportable,
8382
- type: z25.enum([
8447
+ type: z26.enum([
8383
8448
  "boolean",
8384
8449
  "id",
8385
8450
  "identifier",
@@ -8395,9 +8460,9 @@ function isPluginProductEventName(name) {
8395
8460
  }
8396
8461
 
8397
8462
  // packages/plugin-protocol/dist/artifact-outputs.js
8398
- import { z as z26 } from "zod";
8463
+ import { z as z27 } from "zod";
8399
8464
  var ARTIFACT_OUTPUT_PAGE_MAX = 200;
8400
- var Segment = z26.string().min(1).max(1024).refine((value) => !/[^A-Za-z0-9._-]/.test(value)).refine((value) => value !== "." && value !== "..");
8465
+ var Segment = z27.string().min(1).max(1024).refine((value) => !/[^A-Za-z0-9._-]/.test(value)).refine((value) => value !== "." && value !== "..");
8401
8466
  function parseArtifactOutputUri(uri) {
8402
8467
  const match = /^output:\/\/([^/]+)\/([^/]+)$/.exec(uri);
8403
8468
  if (match === null || !Segment.safeParse(match[1]).success || !Segment.safeParse(match[2]).success)
@@ -8407,12 +8472,12 @@ function parseArtifactOutputUri(uri) {
8407
8472
  function isCanonicalArtifactOutputUri(uri) {
8408
8473
  return parseArtifactOutputUri(uri) !== void 0;
8409
8474
  }
8410
- var ArtifactOutputUri = z26.string().refine(isCanonicalArtifactOutputUri, "Expected a canonical output://session/name URI");
8411
- var ArtifactOutputChange = z26.union([
8412
- z26.strictObject({
8413
- uris: z26.array(ArtifactOutputUri).min(1).max(ARTIFACT_OUTPUT_PAGE_MAX)
8475
+ var ArtifactOutputUri = z27.string().refine(isCanonicalArtifactOutputUri, "Expected a canonical output://session/name URI");
8476
+ var ArtifactOutputChange = z27.union([
8477
+ z27.strictObject({
8478
+ uris: z27.array(ArtifactOutputUri).min(1).max(ARTIFACT_OUTPUT_PAGE_MAX)
8414
8479
  }),
8415
- z26.strictObject({ sessionId: Segment })
8480
+ z27.strictObject({ sessionId: Segment })
8416
8481
  ]);
8417
8482
 
8418
8483
  // packages/plugin-protocol/dist/credential-text.js
@@ -8455,25 +8520,25 @@ function isCredentialShapedText(value) {
8455
8520
  }
8456
8521
 
8457
8522
  // packages/plugin-protocol/dist/ui-module-bundle.js
8458
- import { z as z27 } from "zod";
8523
+ import { z as z28 } from "zod";
8459
8524
  var KAY_UI_MODULE_BUNDLE_PROTOCOL = "kay.ui.module-bundle.v1";
8460
8525
  var KAY_UI_MODULE_FILE_MAX_BYTES = 8 * 1024 * 1024;
8461
8526
  var KAY_UI_MODULE_BUNDLE_MAX_BYTES = 32 * 1024 * 1024;
8462
8527
  var KAY_UI_MODULE_BUNDLE_MAX_FILES = 256;
8463
- var OutputPath = z27.string().min(1).max(1024).refine((value) => {
8528
+ var OutputPath = z28.string().min(1).max(1024).refine((value) => {
8464
8529
  const parsed = KayUiBundleIndexV1.shape.entryPath.safeParse(value);
8465
8530
  return parsed.success && parsed.data === value && value.split("/").every((part) => part !== "" && part !== ".") && // oxlint-disable-next-line eslint/no-control-regex -- Untrusted artifact paths must reject literal control characters.
8466
8531
  !/[\u0000-\u001f?#:%]/.test(value);
8467
8532
  }, { message: "bundle path must contain only unambiguous relative segments" });
8468
- var Sha256 = z27.string().regex(/^[a-f0-9]{64}$/);
8469
- var KayUiModuleBundleIndexV1 = z27.strictObject({
8470
- protocol: z27.literal(KAY_UI_MODULE_BUNDLE_PROTOCOL),
8533
+ var Sha256 = z28.string().regex(/^[a-f0-9]{64}$/);
8534
+ var KayUiModuleBundleIndexV1 = z28.strictObject({
8535
+ protocol: z28.literal(KAY_UI_MODULE_BUNDLE_PROTOCOL),
8471
8536
  entryPath: OutputPath,
8472
- stylePaths: z27.array(OutputPath).max(KAY_UI_MODULE_BUNDLE_MAX_FILES),
8473
- files: z27.array(z27.strictObject({
8537
+ stylePaths: z28.array(OutputPath).max(KAY_UI_MODULE_BUNDLE_MAX_FILES),
8538
+ files: z28.array(z28.strictObject({
8474
8539
  path: OutputPath,
8475
- mediaType: z27.string().min(1).max(128).regex(/^[a-zA-Z0-9!#$&^_.+-]+\/[a-zA-Z0-9!#$&^_.+-]+$/),
8476
- byteLength: z27.number().int().min(1).max(KAY_UI_MODULE_FILE_MAX_BYTES),
8540
+ mediaType: z28.string().min(1).max(128).regex(/^[a-zA-Z0-9!#$&^_.+-]+\/[a-zA-Z0-9!#$&^_.+-]+$/),
8541
+ byteLength: z28.number().int().min(1).max(KAY_UI_MODULE_FILE_MAX_BYTES),
8477
8542
  sha256: Sha256
8478
8543
  })).min(1).max(KAY_UI_MODULE_BUNDLE_MAX_FILES)
8479
8544
  }).superRefine((index, ctx) => {
@@ -8503,9 +8568,9 @@ var KayUiModuleBundleIndexV1 = z27.strictObject({
8503
8568
  message: "bundle exceeds byte cap"
8504
8569
  });
8505
8570
  });
8506
- var KayUiModuleBundleReference = z27.strictObject({
8571
+ var KayUiModuleBundleReference = z28.strictObject({
8507
8572
  generationId: Sha256,
8508
- revision: z27.string().min(1).max(4096).refine((value) => value.trim() === value),
8573
+ revision: z28.string().min(1).max(4096).refine((value) => value.trim() === value),
8509
8574
  index: KayUiModuleBundleIndexV1
8510
8575
  });
8511
8576
  export {
@@ -8638,6 +8703,10 @@ export {
8638
8703
  PLUGIN_SIGNAL_RELATED_KEYS,
8639
8704
  PLUGIN_SIGNAL_SNIPPET_MAX,
8640
8705
  PLUGIN_SIGNAL_TITLE_MAX,
8706
+ PLUGIN_STATE_ENTRY_MAX_BYTES,
8707
+ PLUGIN_STATE_ENTRY_MAX_DEPTH,
8708
+ PLUGIN_STATE_ENTRY_NAME_PATTERN,
8709
+ PLUGIN_STATE_ENTRY_TYPE_PREFIX,
8641
8710
  PRIVATE_PLUGIN_CAPABILITY_SLUGS,
8642
8711
  PackageAssetPath,
8643
8712
  PluginAgentDefinitionPermissionRule,
@@ -8695,6 +8764,7 @@ export {
8695
8764
  ProjectDirectoryResponse,
8696
8765
  RENAMED_PLUGIN_CAPABILITY_SLUGS,
8697
8766
  RESERVED_DIRECTORY_PLUGIN_ID_PREFIXES,
8767
+ RESET_TEXT_MAX_CHARS,
8698
8768
  RETIRED_COMPATIBILITY_KEYS,
8699
8769
  RETIRED_PERMISSION_ASK_KEYS,
8700
8770
  RETIRED_PLUGIN_CAPABILITY_SLUGS,
@@ -8710,6 +8780,8 @@ export {
8710
8780
  ReferencePresentationVariants,
8711
8781
  ReferencePresentationWords,
8712
8782
  RegistrableDomain,
8783
+ ResetTextContribution,
8784
+ ResetTextEntry,
8713
8785
  ResolvedAuthGrantRequest,
8714
8786
  ResolvedEndpointGrantRequest,
8715
8787
  ResolvedKayAgentArtifactUriModule,
@@ -8830,6 +8902,7 @@ export {
8830
8902
  isDeclaredLocalAppLink,
8831
8903
  isKayPluginCompatibilityRefusal,
8832
8904
  isPluginProductEventName,
8905
+ isPluginStateEntryCustomType,
8833
8906
  isPrivateCapabilityClaim,
8834
8907
  isQualifiedAuthSchemeRef,
8835
8908
  isQualifiedAuthServiceRef,
@@ -8854,6 +8927,7 @@ export {
8854
8927
  parseWhere,
8855
8928
  pluginIconShape,
8856
8929
  pluginSignalPayloadJsonSchema,
8930
+ pluginStateEntryCustomType,
8857
8931
  precedingPersonMessages,
8858
8932
  readKayPluginDeclaredCompatibility,
8859
8933
  refineWebSessionScopeConfined,