@wordrhyme/plugin 0.1.0-alpha.14 → 0.1.0-alpha.16

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.
@@ -1,4 +1,4 @@
1
- import { P as PluginManifest } from './manifest-DeCaPHoR.js';
1
+ import { P as PluginManifest } from './manifest-E_HhGXvB.js';
2
2
  import { P as PluginRelease } from './release-BDJeO54k.js';
3
3
  import 'zod';
4
4
 
package/dist/artifact.js CHANGED
@@ -4,7 +4,7 @@ import {
4
4
  } from "./chunk-DY44Q4CK.js";
5
5
  import {
6
6
  pluginManifestSchema
7
- } from "./chunk-QUUDT6V5.js";
7
+ } from "./chunk-QY5CGT7R.js";
8
8
  import "./chunk-BI7E5CVM.js";
9
9
 
10
10
  // src/artifact.ts
@@ -1280,7 +1280,11 @@ var pluginManifestSchema = z4.object({
1280
1280
  // === Server Entry ===
1281
1281
  server: z4.object({
1282
1282
  /** Override for plugins that do not use ./dist/server/index.js. */
1283
- entry: z4.string().min(1).optional()
1283
+ entry: z4.string().min(1).optional(),
1284
+ /** @deprecated Accepted for legacy manifests; Host discovers the router from exports. */
1285
+ router: z4.boolean().optional(),
1286
+ /** @deprecated Accepted for legacy manifests; Host discovers lifecycle functions from exports. */
1287
+ hooks: z4.array(z4.enum(["onInstall", "onEnable", "onDisable", "onUninstall"])).optional()
1284
1288
  }).strict().optional(),
1285
1289
  // === Admin UI Entry ===
1286
1290
  admin: z4.object({
@@ -1456,4 +1460,4 @@ export {
1456
1460
  webSurfaceSchema,
1457
1461
  pluginManifestSchema
1458
1462
  };
1459
- //# sourceMappingURL=chunk-QUUDT6V5.js.map
1463
+ //# sourceMappingURL=chunk-QY5CGT7R.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/presentation.ts","../src/storefront.ts","../src/web-design.ts","../src/manifest.ts"],"sourcesContent":["import { z } from \"zod\";\nimport type {\n WebJsonValue,\n WebPluginHead,\n WebSlotRemoteExtension,\n} from \"./types\";\n\n// Presentation regions can reference existing plugin-owned Slot and design IDs.\n// Those public IDs predate this contract and may contain camelCase segments, so\n// keep the shared identifier grammar URL-safe without forcing a breaking rename.\nconst presentationIdPattern = /^[A-Za-z0-9][A-Za-z0-9._-]*$/;\nconst pluginIdPattern = /^[a-z0-9-]+(\\.[a-z0-9-]+)+$/;\nconst contractVersionPattern = /^\\d+(?:\\.\\d+){0,2}(?:-[0-9A-Za-z.-]+)?$/;\nconst contractRangePattern =\n /^(?:\\^|~|>=|<=|>|<)?\\d+(?:\\.\\d+){0,2}(?:-[0-9A-Za-z.-]+)?$|^\\d+(?:\\.\\d+)?\\.(?:x|\\*)$|^\\d+\\.(?:x|\\*)$/;\n\nexport const presentationIdSchema = z\n .string()\n .min(1)\n .max(160)\n .regex(presentationIdPattern, \"presentation id must be URL-safe\");\n\nexport const presentationPluginIdSchema = z.string().regex(pluginIdPattern, \"pluginId must be reverse-domain format\");\n\nexport const presentationContractVersionSchema = z\n .string()\n .regex(contractVersionPattern, \"contract version must contain one to three numeric semver components\");\n\nexport const presentationContractRangeSchema = z\n .string()\n .regex(contractRangePattern, \"contract range must be an exact, comparator, caret, tilde, or wildcard range\");\n\nexport const presentationSchemaRefSchema = z.union([z.string().min(1), z.record(z.string(), z.json())]);\nexport const presentationModelSchema = z.json();\n\nexport const presentationRenderModeSchema = z.enum([\"ssr\", \"react\", \"island\"]);\n\nexport const presentationRegionSchema = z\n .object({\n id: presentationIdSchema,\n label: z.string().min(1).optional(),\n required: z.boolean().optional(),\n accepts: z.array(presentationIdSchema).optional(),\n contextSchema: presentationSchemaRefSchema.optional(),\n min: z.number().int().nonnegative().optional(),\n max: z.number().int().positive().optional(),\n order: z.number().optional(),\n })\n .superRefine((region, ctx) => {\n if (region.min !== undefined && region.max !== undefined && region.min > region.max) {\n ctx.addIssue({\n code: \"custom\",\n path: [\"min\"],\n message: \"presentation region min must not exceed max\",\n });\n }\n });\n\nexport const presentationActionSchema = z\n .object({\n id: presentationIdSchema,\n inputSchema: presentationSchemaRefSchema.optional(),\n outputSchema: presentationSchemaRefSchema.optional(),\n permission: z.string().min(1).optional(),\n })\n .passthrough();\n\nexport const presentationSurfaceSchema = z\n .object({\n id: presentationIdSchema,\n contractVersion: presentationContractVersionSchema,\n modelSchema: presentationSchemaRefSchema,\n defaultRenderer: z.string().min(1),\n clientComponent: z.string().min(1).optional(),\n renderModes: z.array(presentationRenderModeSchema).min(1),\n actions: z.array(presentationActionSchema).optional(),\n regions: z.array(presentationRegionSchema).optional(),\n })\n .superRefine((surface, ctx) => {\n addDuplicateIdIssues(surface.actions, [\"actions\"], ctx);\n addDuplicateIdIssues(surface.regions, [\"regions\"], ctx);\n });\n\nexport const presentationAdapterSchema = z\n .object({\n id: presentationIdSchema.optional(),\n label: z.string().min(1).optional(),\n labelKey: z.string().min(1).optional(),\n ownerPluginId: presentationPluginIdSchema,\n surfaceId: presentationIdSchema,\n accepts: presentationContractRangeSchema,\n serverRenderer: z.string().min(1).optional(),\n clientComponent: z.string().min(1).optional(),\n expose: z.string().min(1).optional(),\n required: z.boolean().optional(),\n regions: z.array(presentationIdSchema).optional(),\n })\n .superRefine((adapter, ctx) => {\n if (!adapter.serverRenderer && !adapter.clientComponent) {\n ctx.addIssue({\n code: \"custom\",\n path: [\"serverRenderer\"],\n message: \"presentation adapter requires serverRenderer or clientComponent\",\n });\n }\n });\n\nexport const themeAssetPathSchema = z\n .string()\n .min(1)\n .max(512)\n .refine((value) => !value.startsWith(\"/\") && !value.includes(\"\\\\\"), {\n message: \"theme asset paths must be relative POSIX paths\",\n })\n .refine((value) => value.split(\"/\").every((segment) => segment !== \"\" && segment !== \".\" && segment !== \"..\"), {\n message: \"theme asset paths must not contain empty, dot, or parent segments\",\n });\n\nexport const themeAssetSchema = z\n .object({\n path: themeAssetPathSchema,\n kind: z.enum([\"stylesheet\", \"script\", \"font\", \"image\", \"other\"]),\n integrity: z.string().min(1).optional(),\n media: z.string().min(1).optional(),\n preload: z.boolean().optional(),\n order: z.number().optional(),\n })\n .passthrough();\n\nexport const themeHeadSchema = z.object({\n title: z.string().min(1).max(300).optional(),\n description: z.string().max(1000).optional(),\n meta: z.record(z.string().min(1).max(120), z.string().max(2048)).optional(),\n links: z.array(z.object({\n rel: z.string().min(1).max(80),\n href: z.string().min(1).max(2048),\n as: z.string().min(1).max(80).optional(),\n type: z.string().min(1).max(160).optional(),\n })).optional(),\n});\n\nexport const themeTokenTypeSchema = z.enum([\"color\", \"length\", \"font-family\", \"number\", \"shadow\", \"enum\", \"image\"]);\n\nexport const themeTokenSchema = z\n .object({\n id: presentationIdSchema,\n cssVariable: z\n .string()\n .regex(/^--[a-z0-9][a-z0-9-]*$/, \"theme token cssVariable must be a CSS custom property\"),\n type: themeTokenTypeSchema,\n default: z.json(),\n enumValues: z.array(z.string().min(1)).optional(),\n label: z.string().min(1).optional(),\n labelKey: z.string().min(1).optional(),\n description: z.string().optional(),\n descriptionKey: z.string().min(1).optional(),\n })\n .superRefine((token, ctx) => {\n if (token.type === \"enum\" && !token.enumValues?.length) {\n ctx.addIssue({\n code: \"custom\",\n path: [\"enumValues\"],\n message: \"enum theme tokens require enumValues\",\n });\n }\n });\n\nexport const themeTokenPresetSchema = z.object({\n id: presentationIdSchema,\n label: z.string().min(1).optional(),\n labelKey: z.string().min(1).optional(),\n description: z.string().optional(),\n descriptionKey: z.string().min(1).optional(),\n extends: presentationIdSchema.optional(),\n values: z.record(presentationIdSchema, z.json()),\n});\n\nexport const themeSiteShellSchema = z.union([\n z.string().min(1),\n z.object({\n serverRenderer: z.string().min(1),\n clientComponent: z.string().min(1).optional(),\n expose: z.string().min(1).optional(),\n }),\n]);\n\nexport const themeHomeTargetSchema = z.discriminatedUnion(\"type\", [\n z.object({\n type: z.literal(\"theme-route\"),\n routeId: presentationIdSchema,\n }),\n z.object({\n type: z.literal(\"plugin-route\"),\n pluginId: presentationPluginIdSchema,\n routeId: presentationIdSchema,\n }),\n z.object({\n type: z.literal(\"designer-page\"),\n pageId: z.string().min(1).max(160),\n }),\n z.object({\n type: z.literal(\"default\"),\n }),\n]);\n\nexport const themeIntegrationSchema = z.object({\n pluginId: presentationPluginIdSchema,\n required: z.boolean().optional(),\n surfaces: z\n .array(\n z.object({\n id: presentationIdSchema,\n accepts: presentationContractRangeSchema,\n required: z.boolean().optional(),\n }),\n )\n .optional(),\n storefrontApis: z\n .array(\n z.object({\n id: presentationIdSchema,\n accepts: presentationContractRangeSchema,\n required: z.boolean().optional(),\n }),\n )\n .optional(),\n});\n\nexport const webPresentationSchema = z\n .object({\n contractVersion: z.literal(1),\n shell: themeSiteShellSchema.optional(),\n defaultHomeRouteId: presentationIdSchema.optional(),\n head: themeHeadSchema.optional(),\n assets: z.array(themeAssetSchema).optional(),\n tokens: z.array(themeTokenSchema).optional(),\n presets: z.array(themeTokenPresetSchema).optional(),\n settingsSchema: themeAssetPathSchema.optional(),\n settingsVersion: z.number().int().positive().optional(),\n adapters: z.array(presentationAdapterSchema).optional(),\n integrations: z.array(themeIntegrationSchema).optional(),\n })\n .superRefine((presentation, ctx) => {\n const hasDeclaration = Boolean(\n presentation.shell ||\n presentation.defaultHomeRouteId ||\n presentation.head ||\n presentation.assets?.length ||\n presentation.tokens?.length ||\n presentation.presets?.length ||\n presentation.settingsSchema ||\n presentation.adapters?.length ||\n presentation.integrations?.length,\n );\n if (!hasDeclaration) {\n ctx.addIssue({\n code: \"custom\",\n path: [],\n message: \"web.presentation must declare at least one presentation resource\",\n });\n }\n\n addDuplicateIdIssues(presentation.tokens, [\"tokens\"], ctx);\n addDuplicateIdIssues(presentation.presets, [\"presets\"], ctx);\n\n const adapterKeys = new Set<string>();\n for (const [index, adapter] of (presentation.adapters ?? []).entries()) {\n const key = `${adapter.ownerPluginId}:${adapter.surfaceId}`;\n if (adapterKeys.has(key)) {\n ctx.addIssue({\n code: \"custom\",\n path: [\"adapters\", index, \"surfaceId\"],\n message: `duplicate presentation adapter target: ${key}`,\n });\n }\n adapterKeys.add(key);\n }\n\n validatePresetGraph(presentation.presets ?? [], ctx);\n });\n\nexport const presentationDiagnosticSeveritySchema = z.enum([\"info\", \"warning\", \"error\"]);\nexport const presentationCompatibilityStatusSchema = z.enum([\"compatible\", \"incompatible\", \"missing\"]);\n\nexport const presentationDiagnosticSchema = z.object({\n code: z.string().min(1),\n severity: presentationDiagnosticSeveritySchema,\n ownerPluginId: presentationPluginIdSchema,\n contractId: presentationIdSchema,\n expectedRange: presentationContractRangeSchema.optional(),\n actualVersion: presentationContractVersionSchema.optional(),\n required: z.boolean(),\n remediation: z.enum([\"install\", \"enable\", \"upgrade-owner\", \"upgrade-theme\", \"disable-integration\", \"fallback\"]),\n message: z.string().min(1),\n});\n\nexport const presentationCompatibilityResultSchema = z.object({\n status: presentationCompatibilityStatusSchema,\n diagnostic: presentationDiagnosticSchema.optional(),\n});\n\nexport const PRESENTATION_OBSERVABILITY = {\n spans: {\n resolve: \"site.presentation.resolve\",\n shell: \"site.presentation.shell.render\",\n adapter: \"site.presentation.adapter.render\",\n storefront: \"site.presentation.storefront.call\",\n designNode: \"site.presentation.design-node.render\",\n embed: \"site.presentation.embed.load\",\n },\n metrics: {\n resolution: \"site_presentation_resolution_total\",\n fallback: \"site_presentation_fallback_total\",\n renderDuration: \"site_presentation_render_duration_ms\",\n compatibility: \"site_presentation_compatibility_total\",\n },\n auditEvents: {\n previewIssued: \"site.theme.preview.issued\",\n published: \"site.theme.published\",\n rolledBack: \"site.theme.rolled_back\",\n safeModeEntered: \"site.theme.safe_mode.entered\",\n safeModeRecovered: \"site.theme.safe_mode.recovered\",\n },\n fields: [\n \"organizationId\",\n \"themePluginId\",\n \"themeVersion\",\n \"revisionId\",\n \"presentationMode\",\n \"routeId\",\n \"surfaceId\",\n \"contractVersion\",\n \"fallbackReason\",\n \"pluginLoadGeneration\",\n ],\n} as const;\n\nexport interface PresentationCompatibilityCheck {\n ownerPluginId: string;\n contractId: string;\n expectedRange: string;\n actualVersion?: string | undefined;\n required: boolean;\n kind?: \"surface\" | \"storefront\" | \"theme\" | \"design\" | undefined;\n}\n\nexport interface SitePresentationRenderContext {\n organizationId: string;\n pluginId: string;\n pluginVersion: string;\n revisionId: string | null;\n mode: \"published\" | \"preview\" | \"fallback\" | \"safe-mode\";\n publicPath: string;\n matchedRouteId?: string | undefined;\n locale?: string | undefined;\n currency?: string | undefined;\n timezone?: string | undefined;\n basePath: string;\n publicOrigin?: string | undefined;\n tokens: Readonly<Record<string, string>>;\n}\n\nexport interface PresentationAdapterContext<TModel = unknown> extends SitePresentationRenderContext {\n ownerPluginId: string;\n surfaceId: string;\n surfaceVersion: string;\n model: TModel;\n actions: readonly PresentationAction[];\n regions: readonly PresentationRegion[];\n settings: Readonly<Record<string, WebJsonValue>>;\n}\n\nexport interface PresentationAdapterRenderResult {\n html: string;\n head?: WebPluginHead | undefined;\n initialData?: WebJsonValue | undefined;\n clientEntries?: readonly string[] | undefined;\n slotExtensions?: readonly WebSlotRemoteExtension[] | undefined;\n}\n\nexport type PresentationAdapterRenderer<TModel = unknown> = (\n context: PresentationAdapterContext<TModel>,\n) => PresentationAdapterRenderResult | Promise<PresentationAdapterRenderResult>;\n\n/** Owner-side default renderer for a declared presentation surface. */\nexport type PresentationSurfaceRenderer<TModel = unknown> = PresentationAdapterRenderer<TModel>;\n\nexport function defineWebPresentation<const T extends WebPresentation>(presentation: T): T {\n return presentation;\n}\n\nexport function defineThemeHomeTarget<const T extends ThemeHomeTarget>(target: T): T {\n return target;\n}\n\nexport function definePresentationSurface<const T extends PresentationSurface>(surface: T): T {\n return surface;\n}\n\nexport function definePresentationAdapter<const T extends PresentationAdapter>(adapter: T): T {\n return adapter;\n}\n\nexport function parsePresentationModel(value: unknown): PresentationModel {\n return presentationModelSchema.parse(value);\n}\n\nexport function evaluatePresentationCompatibility(\n check: PresentationCompatibilityCheck,\n): PresentationCompatibilityResult {\n if (!check.actualVersion) {\n return {\n status: \"missing\",\n diagnostic: {\n code: `presentation.${check.kind ?? \"surface\"}.missing`,\n severity: check.required ? \"error\" : \"warning\",\n ownerPluginId: check.ownerPluginId,\n contractId: check.contractId,\n expectedRange: check.expectedRange,\n required: check.required,\n remediation: \"install\",\n message: `Missing ${check.ownerPluginId}:${check.contractId} ${check.expectedRange}`,\n },\n };\n }\n\n if (satisfiesPresentationRange(check.actualVersion, check.expectedRange)) {\n return { status: \"compatible\" };\n }\n\n return {\n status: \"incompatible\",\n diagnostic: {\n code: `presentation.${check.kind ?? \"surface\"}.version_mismatch`,\n severity: check.required ? \"error\" : \"warning\",\n ownerPluginId: check.ownerPluginId,\n contractId: check.contractId,\n expectedRange: check.expectedRange,\n actualVersion: check.actualVersion,\n required: check.required,\n remediation: check.required ? \"upgrade-theme\" : \"fallback\",\n message: `Expected ${check.expectedRange}, received ${check.actualVersion}`,\n },\n };\n}\n\nexport function satisfiesPresentationRange(version: string, range: string): boolean {\n const parsedVersion = parseVersion(version);\n if (!parsedVersion) return false;\n\n if (range.endsWith(\".x\") || range.endsWith(\".*\")) {\n const prefix = range.slice(0, -2).split(\".\").map(Number);\n if (prefix.some(Number.isNaN)) return false;\n return prefix.every((part, index) => parsedVersion[index] === part);\n }\n\n const comparator = range.match(/^(\\^|~|>=|<=|>|<)?(.+)$/);\n if (!comparator) return false;\n const operator = comparator[1] ?? \"=\";\n const base = parseVersion(comparator[2] ?? \"\");\n if (!base) return false;\n\n const comparison = compareVersion(parsedVersion, base);\n if (operator === \"=\") return comparison === 0;\n if (operator === \">=\") return comparison >= 0;\n if (operator === \"<=\") return comparison <= 0;\n if (operator === \">\") return comparison > 0;\n if (operator === \"<\") return comparison < 0;\n if (comparison < 0) return false;\n\n if (operator === \"~\") {\n return parsedVersion[0] === base[0] && parsedVersion[1] === base[1];\n }\n\n if (base[0] > 0) return parsedVersion[0] === base[0];\n if (base[1] > 0) return parsedVersion[0] === 0 && parsedVersion[1] === base[1];\n return parsedVersion[0] === 0 && parsedVersion[1] === 0 && parsedVersion[2] === base[2];\n}\n\nfunction addDuplicateIdIssues(\n values: readonly { id: string }[] | undefined,\n path: [string],\n ctx: z.RefinementCtx,\n): void {\n const ids = new Set<string>();\n for (const [index, value] of (values ?? []).entries()) {\n if (ids.has(value.id)) {\n ctx.addIssue({\n code: \"custom\",\n path: [...path, index, \"id\"],\n message: `duplicate presentation id: ${value.id}`,\n });\n }\n ids.add(value.id);\n }\n}\n\nfunction validatePresetGraph(presets: readonly ThemeTokenPreset[], ctx: z.RefinementCtx): void {\n const byId = new Map(presets.map((preset) => [preset.id, preset]));\n for (const [index, preset] of presets.entries()) {\n if (preset.extends && !byId.has(preset.extends)) {\n ctx.addIssue({\n code: \"custom\",\n path: [\"presets\", index, \"extends\"],\n message: `unknown theme token preset: ${preset.extends}`,\n });\n continue;\n }\n\n const visited = new Set<string>();\n let current: ThemeTokenPreset | undefined = preset;\n while (current?.extends) {\n if (visited.has(current.id)) {\n ctx.addIssue({\n code: \"custom\",\n path: [\"presets\", index, \"extends\"],\n message: `cyclic theme token preset inheritance: ${preset.id}`,\n });\n break;\n }\n visited.add(current.id);\n current = byId.get(current.extends);\n }\n }\n}\n\ntype ParsedVersion = readonly [number, number, number];\n\nfunction parseVersion(value: string): ParsedVersion | null {\n const core = value.split(\"-\")[0];\n if (!core) return null;\n const parts = core.split(\".\");\n if (parts.length < 1 || parts.length > 3) return null;\n const numbers = parts.map(Number);\n if (numbers.some((part) => !Number.isInteger(part) || part < 0)) return null;\n return [numbers[0] ?? 0, numbers[1] ?? 0, numbers[2] ?? 0];\n}\n\nfunction compareVersion(left: ParsedVersion, right: ParsedVersion): number {\n for (let index = 0; index < 3; index += 1) {\n const difference = (left[index] ?? 0) - (right[index] ?? 0);\n if (difference !== 0) return difference;\n }\n return 0;\n}\n\nexport type PresentationRegion = z.infer<typeof presentationRegionSchema>;\nexport type PresentationModel = z.infer<typeof presentationModelSchema>;\nexport type PresentationAction = z.infer<typeof presentationActionSchema>;\nexport type PresentationSurface = z.infer<typeof presentationSurfaceSchema>;\nexport type PresentationAdapter = z.infer<typeof presentationAdapterSchema>;\nexport type ThemeAsset = z.infer<typeof themeAssetSchema>;\nexport type ThemeHead = z.infer<typeof themeHeadSchema>;\nexport type ThemeTokenType = z.infer<typeof themeTokenTypeSchema>;\nexport type ThemeToken = z.infer<typeof themeTokenSchema>;\nexport type ThemeTokenPreset = z.infer<typeof themeTokenPresetSchema>;\nexport type ThemeSiteShell = z.infer<typeof themeSiteShellSchema>;\nexport type ThemeHomeTarget = z.infer<typeof themeHomeTargetSchema>;\nexport type ThemeIntegration = z.infer<typeof themeIntegrationSchema>;\nexport type WebPresentation = z.infer<typeof webPresentationSchema>;\nexport type PresentationDiagnostic = z.infer<typeof presentationDiagnosticSchema>;\nexport type PresentationCompatibilityResult = z.infer<typeof presentationCompatibilityResultSchema>;\n","import { z } from \"zod\";\nimport { presentationContractVersionSchema, presentationIdSchema, presentationSchemaRefSchema } from \"./presentation\";\n\nexport const storefrontOperationKindSchema = z.enum([\"query\", \"command\"]);\n\nexport const storefrontOperationSchema = z\n .object({\n id: presentationIdSchema,\n kind: storefrontOperationKindSchema,\n inputSchema: presentationSchemaRefSchema,\n outputSchema: presentationSchemaRefSchema,\n anonymous: z.boolean().optional(),\n permission: z.string().min(1).optional(),\n })\n .passthrough();\n\nexport const storefrontApiSchema = z\n .object({\n id: presentationIdSchema,\n version: presentationContractVersionSchema,\n serverExport: z.string().min(1),\n browserExport: z.string().min(1).optional(),\n operations: z.array(storefrontOperationSchema).min(1),\n openapi: z\n .object({\n basePath: z.string().regex(/^\\/v\\d+(?:\\/[a-z0-9-]+)*$/),\n cors: z.enum([\"site-origin\", \"allowlist\", \"disabled\"]).optional(),\n })\n .optional(),\n })\n .superRefine((api, ctx) => {\n const ids = new Set<string>();\n for (const [index, operation] of api.operations.entries()) {\n if (ids.has(operation.id)) {\n ctx.addIssue({\n code: \"custom\",\n path: [\"operations\", index, \"id\"],\n message: `duplicate Storefront operation: ${operation.id}`,\n });\n }\n ids.add(operation.id);\n }\n });\n\nexport interface StorefrontRequest<TInput = unknown> {\n apiId: string;\n version: string;\n operation: string;\n input: TInput;\n}\n\nexport interface StorefrontResponse<TOutput = unknown> {\n data: TOutput;\n version: string;\n requestId?: string | undefined;\n}\n\nexport interface StorefrontServerBroker {\n call<TInput = unknown, TOutput = unknown>(request: StorefrontRequest<TInput>): Promise<StorefrontResponse<TOutput>>;\n}\n\nexport interface StorefrontBrowserClient extends StorefrontServerBroker {\n discover(): Promise<readonly StorefrontApi[]>;\n}\n\nexport function defineStorefrontApi<const T extends StorefrontApi>(api: T): T {\n return api;\n}\n\nexport type StorefrontOperationKind = z.infer<typeof storefrontOperationKindSchema>;\nexport type StorefrontOperation = z.infer<typeof storefrontOperationSchema>;\nexport type StorefrontApi = z.infer<typeof storefrontApiSchema>;\n","import { z } from \"zod\";\nimport { presentationContractVersionSchema, presentationIdSchema, presentationSchemaRefSchema } from \"./presentation\";\n\nexport const webDesignNodeKindSchema = z.enum([\"content\", \"container\", \"app-block\"]);\n\nexport const webDesignRegionSchema = z\n .object({\n id: presentationIdSchema,\n label: z.string().min(1).optional(),\n accepts: z.array(presentationIdSchema).optional(),\n min: z.number().int().nonnegative().optional(),\n max: z.number().int().positive().optional(),\n required: z.boolean().optional(),\n })\n .superRefine((region, ctx) => {\n if (region.min !== undefined && region.max !== undefined && region.min > region.max) {\n ctx.addIssue({\n code: \"custom\",\n path: [\"min\"],\n message: \"Web Designer region min must not exceed max\",\n });\n }\n });\n\nexport const webDesignBindingSchema = z.object({\n id: presentationIdSchema,\n source: presentationIdSchema,\n inputSchema: presentationSchemaRefSchema.optional(),\n outputSchema: presentationSchemaRefSchema.optional(),\n});\n\nexport const webDesignMigrationSchema = z.object({\n from: presentationContractVersionSchema,\n to: presentationContractVersionSchema,\n handler: z.string().min(1),\n});\n\nexport const webDesignNodeDefinitionSchema = z\n .object({\n id: presentationIdSchema,\n version: presentationContractVersionSchema,\n kind: webDesignNodeKindSchema,\n title: z.string().min(1),\n category: z.string().min(1).optional(),\n icon: z.string().min(1).optional(),\n settingsSchema: presentationSchemaRefSchema.optional(),\n contextSchema: presentationSchemaRefSchema.optional(),\n editorComponent: z.string().min(1),\n serverRenderer: z.string().min(1),\n clientComponent: z.string().min(1).optional(),\n regions: z.array(webDesignRegionSchema).optional(),\n bindings: z.array(webDesignBindingSchema).optional(),\n actions: z.array(presentationIdSchema).optional(),\n migrations: z.array(webDesignMigrationSchema).optional(),\n })\n .superRefine((node, ctx) => {\n if (node.kind === \"container\" && !node.regions?.length) {\n ctx.addIssue({\n code: \"custom\",\n path: [\"regions\"],\n message: \"container Web Designer nodes require at least one region\",\n });\n }\n });\n\nexport const webAppEmbedTargetSchema = z.enum([\"head\", \"body-start\", \"body-end\", \"floating-layer\"]);\nexport const webAppEmbedConsentSchema = z.enum([\"necessary\", \"functional\", \"analytics\", \"marketing\"]);\n\nexport const webAppEmbedSchema = z.object({\n id: presentationIdSchema,\n version: presentationContractVersionSchema,\n title: z.string().min(1),\n target: webAppEmbedTargetSchema,\n clientComponent: z.string().min(1),\n settingsSchema: presentationSchemaRefSchema.optional(),\n consent: webAppEmbedConsentSchema.optional(),\n csp: z\n .object({\n scriptSrc: z.array(z.string().min(1)).optional(),\n connectSrc: z.array(z.string().min(1)).optional(),\n frameSrc: z.array(z.string().min(1)).optional(),\n imgSrc: z.array(z.string().min(1)).optional(),\n })\n .optional(),\n order: z.number().optional(),\n});\n\nexport function defineWebDesignNode<const T extends WebDesignNodeDefinition>(node: T): T {\n return node;\n}\n\nexport function defineAppEmbed<const T extends WebAppEmbed>(embed: T): T {\n return embed;\n}\n\nexport type WebDesignNodeKind = z.infer<typeof webDesignNodeKindSchema>;\nexport type WebDesignRegion = z.infer<typeof webDesignRegionSchema>;\nexport type WebDesignBinding = z.infer<typeof webDesignBindingSchema>;\nexport type WebDesignMigration = z.infer<typeof webDesignMigrationSchema>;\nexport type WebDesignNodeDefinition = z.infer<typeof webDesignNodeDefinitionSchema>;\nexport type WebAppEmbedTarget = z.infer<typeof webAppEmbedTargetSchema>;\nexport type WebAppEmbedConsent = z.infer<typeof webAppEmbedConsentSchema>;\nexport type WebAppEmbed = z.infer<typeof webAppEmbedSchema>;\n","import { z } from 'zod';\nimport { canonicalizeLocale } from './locale';\nimport {\n presentationAdapterSchema,\n presentationSurfaceSchema,\n webPresentationSchema,\n} from './presentation';\nimport { storefrontApiSchema } from './storefront';\nimport {\n webAppEmbedSchema,\n webDesignNodeDefinitionSchema,\n} from './web-design';\n\n// ========== Notification Schema Components ==========\n\n/**\n * Aggregation Strategy - how to group notifications from plugins\n */\nexport const aggregationStrategySchema = z.enum(['none', 'by_target', 'by_actor', 'by_type']);\nexport type AggregationStrategy = z.infer<typeof aggregationStrategySchema>;\n\n/**\n * Notification Category - determines retention policy and view strategy\n */\nexport const notificationCategorySchema = z.enum(['system', 'collaboration', 'social']);\nexport type NotificationCategory = z.infer<typeof notificationCategorySchema>;\n\n/**\n * Plugin Notification Type - declares a type of notification the plugin can send\n */\nexport const notificationTypeSchema = z.object({\n id: z.string().min(1).regex(/^[a-z0-9_]+$/, 'type id must be lowercase alphanumeric with underscores'),\n category: notificationCategorySchema,\n aggregation: aggregationStrategySchema.default('none'),\n i18n: z.record(\n z.string(), // locale key (e.g., 'en-US', 'zh-CN')\n z.object({\n title: z.string().min(1),\n description: z.string().optional(),\n })\n ),\n});\nexport type PluginNotificationType = z.infer<typeof notificationTypeSchema>;\n\n/**\n * Notification Webhooks - async callbacks for notification events\n */\nexport const notificationWebhooksSchema = z.object({\n onClicked: z.string().url().optional(),\n onArchived: z.string().url().optional(),\n}).optional();\n\n/**\n * Notification Rate Limit - plugin-declared limits (platform may enforce lower)\n */\nexport const notificationRateLimitSchema = z.object({\n maxPerMinute: z.number().int().positive().max(10000).default(100),\n maxPerHour: z.number().int().positive().max(20000).default(1000),\n maxPerDay: z.number().int().positive().max(100000).default(10000),\n}).partial();\n\n/**\n * Notification Permission Types\n */\nexport const notificationPermissionSchema = z.enum([\n 'notification:send',\n 'notification:send:batch',\n 'notification:read:own',\n]);\n\n/**\n * Plugin Notifications Configuration\n */\nexport const notificationsConfigSchema = z.object({\n types: z.array(notificationTypeSchema).min(1),\n permissions: z.array(notificationPermissionSchema).optional(),\n rateLimit: notificationRateLimitSchema.optional(),\n webhooks: notificationWebhooksSchema,\n}).optional();\n\n// ========== Admin Extension Schema (Slot & Fill) ==========\n\nexport const permissionDeclarationSchema = z.union([\n z.string().min(1),\n z.object({\n action: z.string().min(1),\n subject: z.string().min(1),\n anonymous: z.boolean().optional(),\n }),\n]);\n\nexport const navTargetSchema = z.object({\n slot: z.literal('nav.sidebar'),\n path: z.string(),\n icon: z.string().optional(),\n order: z.number().optional(),\n permission: permissionDeclarationSchema.optional(),\n /** @deprecated Use permission instead. */\n requiredPermission: z.string().optional(),\n parent: z.string().optional(),\n});\n\nexport const navGroupTargetSchema = z.object({\n slot: z.literal('nav.sidebar.group'),\n path: z.string().optional(),\n icon: z.string().optional(),\n order: z.number().optional(),\n});\n\nexport const routeTargetSchema = z.object({\n slot: z.literal('plugin.route'),\n path: z.string(),\n order: z.number().optional(),\n params: z.record(z.string(), z.string()).optional(),\n});\n\nexport const marketplaceTabTargetSchema = z.object({\n slot: z.literal('marketplace.tabs'),\n value: z.string().min(1).regex(/^[a-z0-9][a-z0-9._-]*$/, 'marketplace tab value must be URL-safe'),\n order: z.number().optional(),\n visibility: z.enum(['platform', 'all']).optional(),\n});\n\nexport const settingsTargetSchema = z.object({\n slot: z.literal('settings.plugin'),\n category: z.string().optional(),\n order: z.number().optional(),\n visibility: z.enum(['platform', 'all']).optional(),\n});\n\nexport const dashboardTargetSchema = z.object({\n slot: z.enum(['dashboard.widgets', 'dashboard.overview']),\n order: z.number().optional(),\n colSpan: z.union([z.literal(1), z.literal(2), z.literal(3), z.literal(4)]).optional(),\n});\n\nexport const genericTargetSchema = z.object({\n slot: z.string(),\n order: z.number().optional(),\n});\n\nexport const targetSchema = z.union([\n navTargetSchema,\n navGroupTargetSchema,\n routeTargetSchema,\n marketplaceTabTargetSchema,\n settingsTargetSchema,\n dashboardTargetSchema,\n genericTargetSchema,\n]);\n\nexport const adminExtensionSchema = z.object({\n id: z.string().min(1),\n label: z.string().min(1),\n icon: z.string().optional(),\n hidden: z.boolean().optional(),\n targets: z.array(targetSchema).min(1),\n});\n\nexport const adminSlotPropSchema = z.union([\n z.string().min(1),\n z.object({\n name: z.string().min(1),\n type: z.string().optional(),\n required: z.boolean().optional(),\n description: z.string().optional(),\n }).passthrough(),\n]);\n\nexport const adminSlotSchema = z.object({\n slot: z.string().min(1),\n description: z.string().optional(),\n props: z.array(adminSlotPropSchema).optional(),\n}).passthrough();\n\nexport const adminTourPlacementSchema = z.enum([\n 'top',\n 'top-start',\n 'top-end',\n 'bottom',\n 'bottom-start',\n 'bottom-end',\n 'left',\n 'left-start',\n 'left-end',\n 'right',\n 'right-start',\n 'right-end',\n 'auto',\n 'center',\n]);\nexport type AdminTourPlacement = z.infer<typeof adminTourPlacementSchema>;\n\nexport const adminTourStepSchema = z.object({\n target: z.string().min(1),\n title: z.string().min(1).optional(),\n titleKey: z.string().min(1).optional(),\n content: z.string().min(1).optional(),\n contentKey: z.string().min(1).optional(),\n placement: adminTourPlacementSchema.optional(),\n}).refine((step) => Boolean(step.content || step.contentKey), {\n message: 'admin tour step must define content or contentKey',\n path: ['content'],\n});\nexport type AdminTourStep = z.infer<typeof adminTourStepSchema>;\n\nexport const adminTourSchema = z.object({\n id: z.string().min(1),\n label: z.string().min(1).optional(),\n labelKey: z.string().min(1).optional(),\n routePatterns: z.array(z.string().min(1)).optional(),\n order: z.number().optional(),\n steps: z.array(adminTourStepSchema).min(1),\n});\nexport type AdminTour = z.infer<typeof adminTourSchema>;\n\nconst pluginTranslationRecordSchema = z.record(z.string().min(1), z.string());\n\nfunction normalizeLocaleRecord(\n value: Record<string, string>,\n ctx: { addIssue: (issue: { code: 'custom'; path?: PropertyKey[]; message: string }) => void },\n): Record<string, string> {\n const normalized: Record<string, string> = {};\n\n for (const [rawLocale, message] of Object.entries(value)) {\n const locale = canonicalizeLocale(rawLocale);\n if (!locale) {\n ctx.addIssue({\n code: 'custom',\n path: [rawLocale],\n message: `Invalid BCP 47 locale: ${rawLocale}`,\n });\n continue;\n }\n if (locale in normalized && normalized[locale] !== message) {\n ctx.addIssue({\n code: 'custom',\n path: [rawLocale],\n message: `Duplicate canonical locale: ${locale}`,\n });\n continue;\n }\n normalized[locale] = message;\n }\n\n return normalized;\n}\n\nconst pluginKeyFirstMessagesSchema = z.record(\n z.string().min(1),\n pluginTranslationRecordSchema.transform(normalizeLocaleRecord),\n);\n\nconst pluginLocaleFirstMessagesSchema = z.record(\n z.string(),\n pluginTranslationRecordSchema,\n).transform((value, ctx) => {\n const normalized: Record<string, Record<string, string>> = {};\n\n for (const [rawLocale, messages] of Object.entries(value)) {\n const locale = canonicalizeLocale(rawLocale);\n if (!locale) {\n ctx.addIssue({\n code: 'custom',\n path: [rawLocale],\n message: `Invalid BCP 47 locale: ${rawLocale}`,\n });\n continue;\n }\n if (locale in normalized) {\n ctx.addIssue({\n code: 'custom',\n path: [rawLocale],\n message: `Duplicate canonical locale: ${locale}`,\n });\n continue;\n }\n normalized[locale] = messages;\n }\n\n return normalized;\n});\n\nconst pluginI18nConfigSchema = z.object({\n namespace: z.string().min(1).optional(),\n messages: pluginKeyFirstMessagesSchema.optional(),\n localesFile: z.string().min(1).optional(),\n onUninstall: z.enum(['delete', 'archive', 'retain']).optional(),\n}).strict();\n\nexport const pluginI18nSchema = z.union([\n pluginLocaleFirstMessagesSchema,\n pluginI18nConfigSchema,\n]);\n\n// ========== Entity Extension Schema ==========\n\nconst extensionTargetPluginIdSchema = z.string()\n .min(1)\n .max(160)\n .regex(/^[a-z0-9-]+(\\.[a-z0-9-]+)+$/, 'target pluginId must be reverse-domain format');\n\nconst crudIdSchema = z.string()\n .min(1)\n .max(80)\n .regex(/^[a-zA-Z][a-zA-Z0-9_-]*$/, 'crud id must be an identifier');\n\nconst entityNameSchema = z.string()\n .min(1)\n .max(160)\n .regex(/^[a-z0-9-]+(\\.[a-z0-9-]+)+$/, 'entity must be dot-separated (e.g., \"shop.store\")');\n\nconst extensionFieldNameSchema = z.string()\n .min(1)\n .max(80)\n .regex(/^[a-zA-Z][a-zA-Z0-9_]*$/, 'field must be an identifier');\n\nexport const entityExtensionFieldTypeSchema = z.enum([\n 'text',\n 'number',\n 'boolean',\n 'date',\n 'datetime',\n 'select',\n 'ref',\n 'json',\n]);\n\nexport const entityExtensionRefSchema = z.object({\n entity: entityNameSchema,\n display: z.string().min(1).optional(),\n changed: z.string().min(1).optional(),\n}).passthrough();\n\nexport const autoCrudFieldOptionSchema = z.object({\n label: z.string().min(1),\n value: z.string().min(1),\n searchText: z.union([\n z.string().min(1),\n z.array(z.string().min(1)),\n ]).optional(),\n count: z.number().optional(),\n disabled: z.boolean().optional(),\n}).passthrough();\n\nexport const autoCrudDataSourceSchema = z.string().min(1);\n\nexport const autoCrudFieldConfigSchema = z.object({\n label: z.string().min(1).optional(),\n enum: z.array(autoCrudFieldOptionSchema).optional(),\n dataSource: autoCrudDataSourceSchema.optional(),\n hidden: z.boolean().optional(),\n table: z.union([z.literal(false), z.record(z.string(), z.unknown())]).optional(),\n filter: z.union([z.literal(false), z.record(z.string(), z.unknown())]).optional(),\n form: z.union([z.literal(false), z.record(z.string(), z.unknown())]).optional(),\n search: z.boolean().optional(),\n}).passthrough();\n\nexport const entityExtensionOwnedFieldSchema = autoCrudFieldConfigSchema.extend({\n label: z.string().min(1),\n type: entityExtensionFieldTypeSchema,\n ref: entityExtensionRefSchema.optional(),\n});\n\nexport const entityExtensionFieldSchema = z.union([\n entityExtensionOwnedFieldSchema,\n autoCrudFieldConfigSchema,\n]);\n\nexport const autoCrudActionZoneSchema = z.enum(['toolbar', 'row', 'batch']);\n\nexport const autoCrudActionSchema = z.object({\n type: z.enum([\n 'create',\n 'import',\n 'export',\n 'view',\n 'edit',\n 'copy',\n 'delete',\n 'batchUpdate',\n 'custom',\n ]),\n id: z.string().min(1).optional(),\n label: z.string().min(1).optional(),\n component: z.string().min(1).optional(),\n onClick: z.string().min(1).optional(),\n order: z.number().optional(),\n hidden: z.boolean().optional(),\n position: z.enum(['start', 'end']).optional(),\n variant: z.enum(['default', 'destructive']).optional(),\n}).passthrough();\n\nexport const autoCrudActionsSchema = z.object({\n toolbar: z.array(autoCrudActionSchema).optional(),\n row: z.array(autoCrudActionSchema).optional(),\n batch: z.array(autoCrudActionSchema).optional(),\n}).passthrough();\n\nexport const entityExtensionCrudConfigSchema = z.object({\n fields: z.record(extensionFieldNameSchema, entityExtensionFieldSchema).optional(),\n actions: autoCrudActionsSchema.optional(),\n}).passthrough();\n\nexport const entityExtensionSlotSchema = z.object({\n slot: z.string().min(1),\n component: z.string().min(1),\n order: z.number().optional(),\n label: z.string().optional(),\n}).passthrough();\n\nconst entityExtensionBaseSchema = z.object({\n fields: z.record(\n crudIdSchema,\n z.record(extensionFieldNameSchema, entityExtensionFieldSchema),\n ).optional(),\n slots: z.array(entityExtensionSlotSchema).optional(),\n hide: z.record(crudIdSchema, z.array(extensionFieldNameSchema)).optional(),\n}).passthrough();\n\nexport const entityExtensionSchema = entityExtensionBaseSchema.superRefine((extension, ctx) => {\n const reservedKeys = new Set(['fields', 'slots', 'hide']);\n for (const [key, value] of Object.entries(extension)) {\n if (reservedKeys.has(key)) continue;\n if (typeof value !== 'object' || value === null || Array.isArray(value)) continue;\n\n const record = value as Record<string, unknown>;\n if (!('fields' in record) && !('actions' in record)) continue;\n\n const parsed = entityExtensionCrudConfigSchema.safeParse(value);\n if (!parsed.success) {\n for (const issue of parsed.error.issues) {\n ctx.addIssue({\n ...issue,\n path: [key, ...issue.path],\n });\n }\n }\n }\n});\n\nexport const entityExtensionUseSchema = z.object({\n pluginId: z.string().regex(/^[a-z0-9-]+(\\.[a-z0-9-]+)+$/, 'pluginId must be reverse-domain format'),\n targetId: z.string().min(1).max(240),\n field: extensionFieldNameSchema,\n required: z.boolean().optional(),\n}).passthrough();\n\nexport const pluginUsesSchema = z.object({\n extensions: z.array(entityExtensionUseSchema).optional(),\n}).passthrough();\n\n// ========== Web Surface Schema ==========\n\nexport const webSsrContractVersionSchema = z.union([z.literal(1), z.literal('1')]);\n\nexport const webPluginRouteSchema = z.object({\n id: z.string().min(1).optional(),\n path: z.string().min(1).regex(/^\\//, 'web route path must start with /'),\n handler: z.string().min(1).optional(),\n component: z.string().min(1),\n permission: permissionDeclarationSchema.optional(),\n order: z.number().optional(),\n}).passthrough();\n\nexport const webExtensionTargetSchema = z.object({\n pluginId: extensionTargetPluginIdSchema,\n slot: z.string().min(1),\n permission: permissionDeclarationSchema.optional(),\n order: z.number().optional(),\n}).passthrough();\n\nexport const webExtensionQuerySchema = z.object({\n id: z.string().min(1),\n procedure: z.string().min(1),\n inputFrom: z.enum(['slotProps', 'static']).optional(),\n staticInput: z.record(z.string(), z.unknown()).optional(),\n}).passthrough();\n\nexport const webExtensionSchema = z.object({\n id: z.string().min(1),\n label: z.string().min(1).optional(),\n component: z.string().min(1),\n expose: z.string().min(1).optional(),\n permission: permissionDeclarationSchema.optional(),\n targets: z.array(webExtensionTargetSchema).min(1),\n queries: z.array(webExtensionQuerySchema).optional(),\n}).passthrough();\n\nexport const webDesignBlockSchema = z.object({\n id: z.string().min(1),\n component: z.string().min(1),\n title: z.string().min(1).optional(),\n /** @deprecated Use title instead. */\n label: z.string().min(1).optional(),\n category: z.string().min(1).optional(),\n icon: z.string().min(1).optional(),\n defaultProps: z.record(z.string(), z.unknown()).optional(),\n previewProps: z.record(z.string(), z.unknown()).optional(),\n propsSchema: z.record(z.string(), z.unknown()).optional(),\n settingsSchema: z.record(z.string(), z.unknown()).optional(),\n designable: z.object({\n resource: z.record(z.string(), z.unknown()).optional(),\n behavior: z.record(z.string(), z.unknown()).optional(),\n }).optional(),\n previewImage: z.string().min(1).optional(),\n order: z.number().optional(),\n}).passthrough().superRefine((block, ctx) => {\n if ('schema' in block) {\n ctx.addIssue({\n code: 'custom',\n path: ['schema'],\n message: 'web.design.blocks[] must not declare platform schema; use propsSchema/settingsSchema for configuration metadata',\n });\n }\n\n if (!block.title && !block.label) {\n ctx.addIssue({\n code: 'custom',\n path: ['title'],\n message: 'web.design.blocks[] must define title or label',\n });\n }\n});\n\nexport const webDesignSlotSchema = z.object({\n id: z.string().min(1),\n label: z.string().min(1).optional(),\n renderMode: z.enum(['island', 'react']).optional(),\n scope: z.enum(['site', 'route', 'template', 'entity']).optional(),\n routeId: z.string().min(1).optional(),\n templateId: z.string().min(1).optional(),\n acceptedBlocks: z.array(z.string().min(1)).optional(),\n order: z.number().optional(),\n}).passthrough();\n\nexport const webDesignTemplateSchema = z.object({\n id: z.string().min(1),\n label: z.string().min(1).optional(),\n routeId: z.string().min(1).optional(),\n entityType: z.string().min(1).optional(),\n component: z.string().min(1),\n slots: z.array(z.string().min(1)).optional(),\n order: z.number().optional(),\n}).passthrough();\n\nexport const webDesignDataSourceSchema = z.object({\n id: z.string().min(1),\n title: z.string().min(1).optional(),\n /** @deprecated Use title instead. */\n label: z.string().min(1).optional(),\n permission: permissionDeclarationSchema.optional(),\n inputSchema: z.record(z.string(), z.unknown()).optional(),\n outputSchema: z.record(z.string(), z.unknown()).optional(),\n order: z.number().optional(),\n}).passthrough().superRefine((dataSource, ctx) => {\n if (!dataSource.title && !dataSource.label) {\n ctx.addIssue({\n code: 'custom',\n path: ['title'],\n message: 'web.design.dataSources[] must define title or label',\n });\n }\n});\n\nexport const webDesignActionSchema = z.object({\n id: z.string().min(1),\n title: z.string().min(1).optional(),\n /** @deprecated Use title instead. */\n label: z.string().min(1).optional(),\n permission: permissionDeclarationSchema.optional(),\n inputSchema: z.record(z.string(), z.unknown()).optional(),\n order: z.number().optional(),\n}).passthrough().superRefine((action, ctx) => {\n if (!action.title && !action.label) {\n ctx.addIssue({\n code: 'custom',\n path: ['title'],\n message: 'web.design.actions[] must define title or label',\n });\n }\n});\n\nexport const webDesignSurfaceSchema = z.object({\n editorEntry: z.string().min(1).optional(),\n previewEntry: z.string().min(1).optional(),\n blocks: z.array(webDesignBlockSchema).optional(),\n nodes: z.array(webDesignNodeDefinitionSchema).optional(),\n slots: z.array(webDesignSlotSchema).optional(),\n templates: z.array(webDesignTemplateSchema).optional(),\n dataSources: z.array(webDesignDataSourceSchema).optional(),\n actions: z.array(webDesignActionSchema).optional(),\n embeds: z.array(webAppEmbedSchema).optional(),\n}).superRefine((design, ctx) => {\n const hasDesignSurface = Boolean(\n design.blocks?.length\n || design.nodes?.length\n || design.slots?.length\n || design.templates?.length\n || design.dataSources?.length\n || design.actions?.length\n || design.embeds?.length\n );\n if (!hasDesignSurface) {\n ctx.addIssue({\n code: 'custom',\n path: [],\n message: 'web.design must declare at least one block, slot, template, dataSource, or action',\n });\n }\n\n for (const [field, values] of [\n ['blocks', design.blocks],\n ['nodes', design.nodes],\n ['slots', design.slots],\n ['templates', design.templates],\n ['dataSources', design.dataSources],\n ['actions', design.actions],\n ['embeds', design.embeds],\n ] as const) {\n const ids = new Set<string>();\n for (const [index, value] of (values ?? []).entries()) {\n if (ids.has(value.id)) {\n ctx.addIssue({\n code: 'custom',\n path: [field, index, 'id'],\n message: `duplicate web.design.${field} id: ${value.id}`,\n });\n }\n ids.add(value.id);\n }\n }\n});\n\nexport const webSurfaceSchema = z.object({\n ssrContractVersion: webSsrContractVersionSchema.optional(),\n serverEntry: z.string().min(1).optional(),\n clientEntry: z.string().min(1).optional(),\n remoteEntry: z.string().min(1).optional(),\n devRemoteEntry: z.string().min(1).optional(),\n moduleName: z.string().min(1).optional(),\n exposes: z.record(z.string(), z.string()).optional(),\n routes: z.array(webPluginRouteSchema).optional(),\n fills: z.never().optional(),\n extensions: z.array(webExtensionSchema).optional(),\n design: webDesignSurfaceSchema.optional(),\n /** Standalone feature presentation adapters supplied by a Presentation Pack. */\n adapters: z.array(presentationAdapterSchema).optional(),\n surfaces: z.array(presentationSurfaceSchema).optional(),\n storefrontApis: z.array(storefrontApiSchema).optional(),\n presentation: webPresentationSchema.optional(),\n /** @deprecated Use serverEntry/clientEntry plus routes[].handler/component. */\n entry: z.string().optional(),\n /** @deprecated Use routes[].component. */\n components: z.array(z.string()).optional(),\n}).superRefine((web, ctx) => {\n const hasRoutes = Boolean(web.routes?.length);\n const hasExtensions = Boolean(web.extensions?.length);\n const hasSurfaceServerRenderers = Boolean(web.surfaces?.some((surface) => surface.defaultRenderer));\n const hasStorefrontServerExports = Boolean(web.storefrontApis?.some((api) => api.serverExport));\n const hasPresentationServerRenderers = Boolean(\n (typeof web.presentation?.shell === 'string' || web.presentation?.shell?.serverRenderer)\n || web.presentation?.adapters?.some((adapter) => adapter.serverRenderer)\n || web.adapters?.some((adapter) => adapter.serverRenderer),\n );\n const hasPresentationClientComponents = Boolean(\n (typeof web.presentation?.shell === 'object' && web.presentation.shell.clientComponent)\n || web.presentation?.adapters?.some((adapter) => adapter.clientComponent)\n || web.adapters?.some((adapter) => adapter.clientComponent),\n );\n const usesSsrSurface = Boolean(\n web.ssrContractVersion\n || web.serverEntry\n || web.clientEntry\n || hasRoutes\n || hasSurfaceServerRenderers\n || hasStorefrontServerExports\n || hasPresentationServerRenderers\n );\n const usesRemoteSurface = Boolean(\n web.remoteEntry\n || web.devRemoteEntry\n || web.moduleName\n || web.exposes\n || hasExtensions\n || hasPresentationClientComponents\n || web.storefrontApis?.some((api) => api.browserExport)\n );\n if (!usesSsrSurface && !usesRemoteSurface) return;\n\n if (hasRoutes && !web.ssrContractVersion) {\n ctx.addIssue({\n code: 'custom',\n path: ['ssrContractVersion'],\n message: 'web.ssrContractVersion is required for SSR web surface',\n });\n }\n if ((hasRoutes || hasSurfaceServerRenderers || hasStorefrontServerExports || hasPresentationServerRenderers) && !web.serverEntry) {\n ctx.addIssue({\n code: 'custom',\n path: ['serverEntry'],\n message: 'web.serverEntry is required for server-rendered web declarations',\n });\n }\n if ((hasExtensions || hasPresentationClientComponents || web.storefrontApis?.some((api) => api.browserExport)) && !web.remoteEntry) {\n ctx.addIssue({\n code: 'custom',\n path: ['remoteEntry'],\n message: 'web.remoteEntry is required for public Web remote components or clients',\n });\n }\n for (const [index, route] of (web.routes ?? []).entries()) {\n if (!route.id) {\n ctx.addIssue({\n code: 'custom',\n path: ['routes', index, 'id'],\n message: 'web.routes[].id is required for SSR web surface',\n });\n }\n if (!route.handler) {\n ctx.addIssue({\n code: 'custom',\n path: ['routes', index, 'handler'],\n message: 'web.routes[].handler is required for SSR web surface',\n });\n }\n if (!route.permission) {\n ctx.addIssue({\n code: 'custom',\n path: ['routes', index, 'permission'],\n message: 'web.routes[].permission is required for SSR web surface',\n });\n }\n }\n\n for (const [field, values] of [\n ['adapters', web.adapters],\n ['surfaces', web.surfaces],\n ['storefrontApis', web.storefrontApis],\n ] as const) {\n const ids = new Set<string>();\n for (const [index, value] of (values ?? []).entries()) {\n const id = value.id;\n if (!id) continue;\n if (ids.has(id)) {\n ctx.addIssue({\n code: 'custom',\n path: [field, index, 'id'],\n message: `duplicate web.${field} id: ${id}`,\n });\n }\n ids.add(id);\n }\n }\n\n const adapterTargets = new Set<string>();\n for (const [field, adapters] of [\n ['presentation.adapters', web.presentation?.adapters],\n ['adapters', web.adapters],\n ] as const) {\n for (const [index, adapter] of (adapters ?? []).entries()) {\n const key = `${adapter.ownerPluginId}:${adapter.surfaceId}`;\n if (adapterTargets.has(key)) {\n ctx.addIssue({\n code: 'custom',\n path: [field, index, 'surfaceId'],\n message: `duplicate presentation adapter target across theme and pack declarations: ${key}`,\n });\n }\n adapterTargets.add(key);\n }\n }\n});\n\n// ========== Main Plugin Manifest Schema ==========\n\n/**\n * Plugin Manifest Schema - Validated at plugin load time\n *\n * This is the authoritative schema for manifest.json files.\n */\nexport const pluginManifestSchema = z.object({\n // === Identity ===\n pluginId: z.string().regex(/^[a-z0-9-]+(\\.[a-z0-9-]+)+$/, 'pluginId must be reverse-domain format (e.g., com.vendor.plugin-name)'),\n version: z.string().regex(/^\\d+\\.\\d+\\.\\d+/, 'version must be semver format'),\n name: z.string().min(1).max(100),\n description: z.string().max(500).optional(),\n vendor: z.string().min(1).max(100),\n private: z.boolean().optional(),\n type: z.enum(['backend', 'frontend', 'full', 'extension', 'integration', 'feature']).optional(),\n\n // === UI Translations ===\n // Locale -> { key: translated text }. Stored under namespace `plugin.{pluginId}`.\n i18n: pluginI18nSchema.optional(),\n\n // === Runtime ===\n runtime: z.enum(['node']).default('node'),\n\n // Note: surfaces is auto-generated from server/admin/web presence\n // Used by plugin marketplace for filtering\n\n // === Compatibility ===\n engines: z.object({\n wordrhyme: z.string(), // semver range, e.g., \"^0.1.0\"\n node: z.string().optional(), // e.g., \">=20.0.0\"\n }),\n\n // === Capabilities Declared ===\n capabilities: z.object({\n ui: z.object({\n adminPage: z.boolean().optional(),\n webPage: z.boolean().optional(),\n webTheme: z.boolean().optional(),\n webPresentationPack: z.boolean().optional(),\n webDesigner: z.boolean().optional(),\n settingsTab: z.boolean().optional(),\n }).optional(),\n storage: z.object({\n provider: z.boolean().optional(),\n }).optional(),\n sms: z.object({\n provider: z.boolean().optional(),\n }).optional(),\n organizations: z.object({\n /** Request Host-mediated Core organization provisioning. */\n provision: z.boolean().optional(),\n }).optional(),\n artifacts: z.object({\n write: z.boolean().optional(),\n }).optional(),\n /**\n * Agent capability (AI Action Gateway, Phase 0 spike).\n * Static whitelist declarations reconciled by the Host at load time:\n * - `runtime: true` — this plugin hosts the agent runtime and may read\n * the Core agent tool registry (gated capability injection).\n * - `tools` — tools this plugin contributes to the AI Tool Catalog.\n * Declaration only; undeclared tools never become visible.\n */\n agent: z.object({\n runtime: z.boolean().optional(),\n /** Governed action invoker access (ActionInvokerCapability, ctx.actions). */\n invoker: z.boolean().optional(),\n tools: z.array(z.object({\n id: z.string().min(1).regex(\n /^[a-z0-9-]+(\\.[a-z0-9-]+)*$/,\n 'tool id must be lowercase dot-separated (e.g., \"canvas.add-node\")'\n ),\n title: z.string().min(1),\n summary: z.string().optional(),\n })).optional(),\n }).optional(),\n /** Governed AI generation metadata and the reserved official Runtime boundary. */\n ai: z.object({\n aliases: z.array(z.object({\n id: z.string().min(1).max(80).regex(\n /^[a-z0-9][a-z0-9._-]{0,79}$/,\n 'AI alias must be lowercase and may contain dots, underscores, or hyphens'\n ),\n name: z.string().min(1).max(80),\n description: z.string().max(240).optional(),\n })).superRefine((aliases, ctx) => {\n const seen = new Set<string>();\n for (const [index, alias] of aliases.entries()) {\n if (seen.has(alias.id)) {\n ctx.addIssue({\n code: 'custom',\n message: `duplicate AI alias: ${alias.id}`,\n path: [index, 'id'],\n });\n }\n seen.add(alias.id);\n }\n }).optional(),\n provider: z.boolean().optional(),\n }).optional(),\n provides: z.array(z.string()).optional(), // e.g., [\"logger-adapter\", \"cache-adapter\"]\n billing: z.object({\n subjects: z.array(z.object({\n subject: z.string().min(1).regex(\n /^[a-z0-9-]+(\\.[a-z0-9-]+)+\\.[a-zA-Z0-9_]+$/,\n 'subject must be dot-separated (e.g., \"com.vendor.plugin.apiCalls\")'\n ),\n type: z.enum(['boolean', 'metered']),\n unit: z.string().optional(),\n description: z.string().optional(),\n })).optional(),\n procedures: z.record(z.string(), z.string()).optional(),\n }).optional(),\n }).optional(),\n\n // === Exports ===\n exports: z.object({\n loggerAdapter: z.string().optional(), // e.g., \"./dist/logger-adapter.js\"\n cacheAdapter: z.string().optional(),\n }).optional(),\n\n // === Permissions Defined ===\n permissions: z.object({\n definitions: z.array(z.object({\n key: z.string().regex(/^[a-z0-9_.]+$/, 'Permission key must be lowercase with dots/underscores'),\n description: z.string().optional(),\n })).optional(),\n required: z.array(z.string()).optional(),\n /**\n * Quick-select action groups for the permission configuration UI.\n * Keyed by CASL subject name. Each subject can have multiple groups,\n * and groups may overlap (same action in multiple groups).\n *\n * @example\n * ```json\n * {\n * \"Article\": [\n * { \"key\": \"editor\", \"label\": \"Editor\", \"actions\": [\"create\", \"update\"] },\n * { \"key\": \"full\", \"label\": \"Full Access\", \"actions\": [\"create\", \"update\", \"delete\", \"publish\"] }\n * ]\n * }\n * ```\n */\n actionGroups: z.record(\n z.string(), // subject name\n z.array(z.object({\n key: z.string().min(1),\n label: z.string().min(1),\n actions: z.array(z.string().min(1)).min(1),\n })),\n ).optional(),\n }).optional(),\n\n // === Server Entry ===\n server: z.object({\n /** Override for plugins that do not use ./dist/server/index.js. */\n entry: z.string().min(1).optional(),\n }).strict().optional(),\n\n // === Admin UI Entry ===\n admin: z.object({\n remoteEntry: z.string(), // e.g., \"./dist/admin/remoteEntry.js\"\n devRemoteEntry: z.string().optional(), // Dev mode: e.g., \"http://localhost:3010/remoteEntry.js\"\n moduleName: z.string().optional(), // MF2.0 module name\n exposes: z.record(z.string(), z.string()).optional(),\n extensions: z.array(adminExtensionSchema).optional(),\n slots: z.array(adminSlotSchema).optional(),\n tours: z.array(adminTourSchema).optional(),\n /** @deprecated Use slots instead. */\n extensionSlots: z.array(adminSlotSchema).optional(),\n /** @deprecated Use extensions[] instead */\n menus: z.array(z.object({\n label: z.string(),\n icon: z.string().optional(),\n path: z.string(),\n order: z.number().optional(),\n parentId: z.string().optional(),\n permission: permissionDeclarationSchema.optional(),\n /** @deprecated Use permission instead. */\n requiredPermission: z.string().optional(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n })).optional(),\n }).optional(),\n\n // === Web UI Entry ===\n web: webSurfaceSchema.optional(),\n\n // === Dependencies ===\n dependencies: z.array(z.string()).optional(), // Other plugin IDs\n conflicts: z.array(z.string()).optional(), // Conflicting plugin IDs\n peerDependencies: z.record(z.string(), z.string()).optional(), // e.g., { react: \"^18.0.0\" }\n compatibilityMode: z.enum(['strict', 'lenient', 'fallback']).optional(),\n\n // === Entity Extensions ===\n extends: z.record(extensionTargetPluginIdSchema, entityExtensionSchema).optional(),\n uses: pluginUsesSchema.optional(),\n\n // === Data Retention ===\n dataRetention: z.object({\n onDisable: z.enum(['retain']).optional(),\n onUninstall: z.enum(['delete', 'archive', 'retain']).optional(),\n tables: z.array(z.string()).optional(),\n }).optional(),\n\n // === Infrastructure (Tenant Config Delegation) ===\n infrastructure: z.object({\n tenantOverride: z.boolean(),\n riskLevel: z.enum(['high', 'medium', 'low']),\n sensitiveFields: z.array(z.string()).default([]),\n }).optional(),\n\n // === Notifications ===\n notifications: notificationsConfigSchema,\n}).superRefine((manifest, ctx) => {\n const declaresThemeCapability = manifest.capabilities?.ui?.webTheme === true;\n const hasPresentation = manifest.web?.presentation !== undefined;\n if (declaresThemeCapability && !hasPresentation) {\n ctx.addIssue({\n code: 'custom',\n path: ['web', 'presentation'],\n message: 'capabilities.ui.webTheme requires web.presentation',\n });\n }\n if (hasPresentation && !declaresThemeCapability) {\n ctx.addIssue({\n code: 'custom',\n path: ['capabilities', 'ui', 'webTheme'],\n message: 'web.presentation requires capabilities.ui.webTheme = true',\n });\n }\n const declaresPresentationPack = manifest.capabilities?.ui?.webPresentationPack === true;\n const hasStandaloneAdapters = (manifest.web?.adapters?.length ?? 0) > 0;\n if (declaresPresentationPack && !hasStandaloneAdapters) {\n ctx.addIssue({\n code: 'custom',\n path: ['web', 'adapters'],\n message: 'capabilities.ui.webPresentationPack requires web.adapters',\n });\n }\n if (hasStandaloneAdapters && !declaresPresentationPack) {\n ctx.addIssue({\n code: 'custom',\n path: ['capabilities', 'ui', 'webPresentationPack'],\n message: 'web.adapters requires capabilities.ui.webPresentationPack = true',\n });\n }\n});\n\nexport type PluginManifest = z.infer<typeof pluginManifestSchema>;\nexport type AdminSlotProp = z.infer<typeof adminSlotPropSchema>;\nexport type AdminSlot = z.infer<typeof adminSlotSchema>;\nexport type EntityExtensionFieldType = z.infer<typeof entityExtensionFieldTypeSchema>;\nexport type EntityExtensionField = z.infer<typeof entityExtensionFieldSchema>;\nexport type AutoCrudActionZone = z.infer<typeof autoCrudActionZoneSchema>;\nexport type AutoCrudAction = z.infer<typeof autoCrudActionSchema>;\nexport type AutoCrudActions = z.infer<typeof autoCrudActionsSchema>;\nexport type EntityExtensionCrudConfig = z.infer<typeof entityExtensionCrudConfigSchema>;\nexport type EntityExtensionSlot = z.infer<typeof entityExtensionSlotSchema>;\nexport type EntityExtension = z.infer<typeof entityExtensionSchema>;\nexport type EntityExtensionUse = z.infer<typeof entityExtensionUseSchema>;\nexport type WebSsrContractVersion = z.infer<typeof webSsrContractVersionSchema>;\nexport type WebPluginRoute = z.infer<typeof webPluginRouteSchema>;\nexport type WebExtensionTarget = z.infer<typeof webExtensionTargetSchema>;\nexport type WebExtensionQuery = z.infer<typeof webExtensionQuerySchema>;\nexport type WebExtension = z.infer<typeof webExtensionSchema>;\nexport type WebDesignBlock = z.infer<typeof webDesignBlockSchema>;\nexport type WebDesignSlot = z.infer<typeof webDesignSlotSchema>;\nexport type WebDesignTemplate = z.infer<typeof webDesignTemplateSchema>;\nexport type WebDesignDataSource = z.infer<typeof webDesignDataSourceSchema>;\nexport type WebDesignAction = z.infer<typeof webDesignActionSchema>;\nexport type WebDesignSurface = z.infer<typeof webDesignSurfaceSchema>;\nexport type WebSurface = z.infer<typeof webSurfaceSchema>;\n\n/**\n * Plugin Surface Type - Auto-generated from manifest configuration\n *\n * Indicates on which surfaces this plugin runs:\n * - 'server': Has server-side logic (backend API, database, queue jobs, etc.)\n * - 'admin': Has admin UI components (management dashboard)\n * - 'web': Has frontend/customer-facing UI (public website, user portal)\n */\nexport type PluginSurface = 'server' | 'admin' | 'web';\n\n/**\n * Get plugin surfaces from manifest\n *\n * Auto-generates surfaces array based on which sections are present.\n * Used by plugin marketplace for filtering and display.\n *\n * @param manifest - Plugin manifest\n * @returns Array of surfaces, e.g., ['server', 'admin']\n *\n * @example\n * // Full-stack plugin\n * getPluginSurfaces(manifest) // ['server', 'admin', 'web']\n *\n * // Backend-only plugin (e.g., LBAC, payment gateway)\n * getPluginSurfaces(manifest) // ['server']\n *\n * // Frontend-only plugin (e.g., theme, widget)\n * getPluginSurfaces(manifest) // ['admin', 'web']\n */\nexport function getPluginSurfaces(manifest: PluginManifest): PluginSurface[] {\n const surfaces: PluginSurface[] = [];\n\n if (manifest.server) {\n surfaces.push('server');\n }\n\n if (manifest.admin) {\n surfaces.push('admin');\n }\n\n if (manifest.web) {\n surfaces.push('web');\n }\n\n return surfaces;\n}\n\n/**\n * Check if plugin has specific surface\n *\n * @param manifest - Plugin manifest\n * @param surface - Surface to check\n * @returns true if plugin has this surface\n */\nexport function hasSurface(manifest: PluginManifest, surface: PluginSurface): boolean {\n return getPluginSurfaces(manifest).includes(surface);\n}\n\n/**\n * Get plugin type for backwards compatibility\n *\n * @deprecated Use getPluginSurfaces() instead for more granular control\n * @param manifest - Plugin manifest\n * @returns Plugin type classification\n */\nexport function getPluginType(manifest: PluginManifest): 'backend' | 'frontend' | 'full' {\n const surfaces = getPluginSurfaces(manifest);\n const hasServer = surfaces.includes('server');\n const hasUI = surfaces.includes('admin') || surfaces.includes('web');\n\n if (hasServer && hasUI) return 'full';\n if (hasServer) return 'backend';\n return 'frontend';\n}\n\n/**\n * Plugin Status - Runtime state of a plugin\n */\nexport type PluginStatus = 'enabled' | 'disabled' | 'crashed' | 'invalid' | 'archived' | 'uninstalled';\n\n/**\n * Plugin Capabilities - What the plugin declared it needs\n */\nexport interface PluginCapabilities {\n ui?: {\n adminPage?: boolean;\n webPage?: boolean;\n webTheme?: boolean;\n webPresentationPack?: boolean;\n webDesigner?: boolean;\n settingsTab?: boolean;\n };\n organizations?: {\n provision?: boolean;\n };\n}\n"],"mappings":"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","names":["z","z","z","z","z","z"]}
1
+ {"version":3,"sources":["../src/presentation.ts","../src/storefront.ts","../src/web-design.ts","../src/manifest.ts"],"sourcesContent":["import { z } from \"zod\";\nimport type {\n WebJsonValue,\n WebPluginHead,\n WebSlotRemoteExtension,\n} from \"./types\";\n\n// Presentation regions can reference existing plugin-owned Slot and design IDs.\n// Those public IDs predate this contract and may contain camelCase segments, so\n// keep the shared identifier grammar URL-safe without forcing a breaking rename.\nconst presentationIdPattern = /^[A-Za-z0-9][A-Za-z0-9._-]*$/;\nconst pluginIdPattern = /^[a-z0-9-]+(\\.[a-z0-9-]+)+$/;\nconst contractVersionPattern = /^\\d+(?:\\.\\d+){0,2}(?:-[0-9A-Za-z.-]+)?$/;\nconst contractRangePattern =\n /^(?:\\^|~|>=|<=|>|<)?\\d+(?:\\.\\d+){0,2}(?:-[0-9A-Za-z.-]+)?$|^\\d+(?:\\.\\d+)?\\.(?:x|\\*)$|^\\d+\\.(?:x|\\*)$/;\n\nexport const presentationIdSchema = z\n .string()\n .min(1)\n .max(160)\n .regex(presentationIdPattern, \"presentation id must be URL-safe\");\n\nexport const presentationPluginIdSchema = z.string().regex(pluginIdPattern, \"pluginId must be reverse-domain format\");\n\nexport const presentationContractVersionSchema = z\n .string()\n .regex(contractVersionPattern, \"contract version must contain one to three numeric semver components\");\n\nexport const presentationContractRangeSchema = z\n .string()\n .regex(contractRangePattern, \"contract range must be an exact, comparator, caret, tilde, or wildcard range\");\n\nexport const presentationSchemaRefSchema = z.union([z.string().min(1), z.record(z.string(), z.json())]);\nexport const presentationModelSchema = z.json();\n\nexport const presentationRenderModeSchema = z.enum([\"ssr\", \"react\", \"island\"]);\n\nexport const presentationRegionSchema = z\n .object({\n id: presentationIdSchema,\n label: z.string().min(1).optional(),\n required: z.boolean().optional(),\n accepts: z.array(presentationIdSchema).optional(),\n contextSchema: presentationSchemaRefSchema.optional(),\n min: z.number().int().nonnegative().optional(),\n max: z.number().int().positive().optional(),\n order: z.number().optional(),\n })\n .superRefine((region, ctx) => {\n if (region.min !== undefined && region.max !== undefined && region.min > region.max) {\n ctx.addIssue({\n code: \"custom\",\n path: [\"min\"],\n message: \"presentation region min must not exceed max\",\n });\n }\n });\n\nexport const presentationActionSchema = z\n .object({\n id: presentationIdSchema,\n inputSchema: presentationSchemaRefSchema.optional(),\n outputSchema: presentationSchemaRefSchema.optional(),\n permission: z.string().min(1).optional(),\n })\n .passthrough();\n\nexport const presentationSurfaceSchema = z\n .object({\n id: presentationIdSchema,\n contractVersion: presentationContractVersionSchema,\n modelSchema: presentationSchemaRefSchema,\n defaultRenderer: z.string().min(1),\n clientComponent: z.string().min(1).optional(),\n renderModes: z.array(presentationRenderModeSchema).min(1),\n actions: z.array(presentationActionSchema).optional(),\n regions: z.array(presentationRegionSchema).optional(),\n })\n .superRefine((surface, ctx) => {\n addDuplicateIdIssues(surface.actions, [\"actions\"], ctx);\n addDuplicateIdIssues(surface.regions, [\"regions\"], ctx);\n });\n\nexport const presentationAdapterSchema = z\n .object({\n id: presentationIdSchema.optional(),\n label: z.string().min(1).optional(),\n labelKey: z.string().min(1).optional(),\n ownerPluginId: presentationPluginIdSchema,\n surfaceId: presentationIdSchema,\n accepts: presentationContractRangeSchema,\n serverRenderer: z.string().min(1).optional(),\n clientComponent: z.string().min(1).optional(),\n expose: z.string().min(1).optional(),\n required: z.boolean().optional(),\n regions: z.array(presentationIdSchema).optional(),\n })\n .superRefine((adapter, ctx) => {\n if (!adapter.serverRenderer && !adapter.clientComponent) {\n ctx.addIssue({\n code: \"custom\",\n path: [\"serverRenderer\"],\n message: \"presentation adapter requires serverRenderer or clientComponent\",\n });\n }\n });\n\nexport const themeAssetPathSchema = z\n .string()\n .min(1)\n .max(512)\n .refine((value) => !value.startsWith(\"/\") && !value.includes(\"\\\\\"), {\n message: \"theme asset paths must be relative POSIX paths\",\n })\n .refine((value) => value.split(\"/\").every((segment) => segment !== \"\" && segment !== \".\" && segment !== \"..\"), {\n message: \"theme asset paths must not contain empty, dot, or parent segments\",\n });\n\nexport const themeAssetSchema = z\n .object({\n path: themeAssetPathSchema,\n kind: z.enum([\"stylesheet\", \"script\", \"font\", \"image\", \"other\"]),\n integrity: z.string().min(1).optional(),\n media: z.string().min(1).optional(),\n preload: z.boolean().optional(),\n order: z.number().optional(),\n })\n .passthrough();\n\nexport const themeHeadSchema = z.object({\n title: z.string().min(1).max(300).optional(),\n description: z.string().max(1000).optional(),\n meta: z.record(z.string().min(1).max(120), z.string().max(2048)).optional(),\n links: z.array(z.object({\n rel: z.string().min(1).max(80),\n href: z.string().min(1).max(2048),\n as: z.string().min(1).max(80).optional(),\n type: z.string().min(1).max(160).optional(),\n })).optional(),\n});\n\nexport const themeTokenTypeSchema = z.enum([\"color\", \"length\", \"font-family\", \"number\", \"shadow\", \"enum\", \"image\"]);\n\nexport const themeTokenSchema = z\n .object({\n id: presentationIdSchema,\n cssVariable: z\n .string()\n .regex(/^--[a-z0-9][a-z0-9-]*$/, \"theme token cssVariable must be a CSS custom property\"),\n type: themeTokenTypeSchema,\n default: z.json(),\n enumValues: z.array(z.string().min(1)).optional(),\n label: z.string().min(1).optional(),\n labelKey: z.string().min(1).optional(),\n description: z.string().optional(),\n descriptionKey: z.string().min(1).optional(),\n })\n .superRefine((token, ctx) => {\n if (token.type === \"enum\" && !token.enumValues?.length) {\n ctx.addIssue({\n code: \"custom\",\n path: [\"enumValues\"],\n message: \"enum theme tokens require enumValues\",\n });\n }\n });\n\nexport const themeTokenPresetSchema = z.object({\n id: presentationIdSchema,\n label: z.string().min(1).optional(),\n labelKey: z.string().min(1).optional(),\n description: z.string().optional(),\n descriptionKey: z.string().min(1).optional(),\n extends: presentationIdSchema.optional(),\n values: z.record(presentationIdSchema, z.json()),\n});\n\nexport const themeSiteShellSchema = z.union([\n z.string().min(1),\n z.object({\n serverRenderer: z.string().min(1),\n clientComponent: z.string().min(1).optional(),\n expose: z.string().min(1).optional(),\n }),\n]);\n\nexport const themeHomeTargetSchema = z.discriminatedUnion(\"type\", [\n z.object({\n type: z.literal(\"theme-route\"),\n routeId: presentationIdSchema,\n }),\n z.object({\n type: z.literal(\"plugin-route\"),\n pluginId: presentationPluginIdSchema,\n routeId: presentationIdSchema,\n }),\n z.object({\n type: z.literal(\"designer-page\"),\n pageId: z.string().min(1).max(160),\n }),\n z.object({\n type: z.literal(\"default\"),\n }),\n]);\n\nexport const themeIntegrationSchema = z.object({\n pluginId: presentationPluginIdSchema,\n required: z.boolean().optional(),\n surfaces: z\n .array(\n z.object({\n id: presentationIdSchema,\n accepts: presentationContractRangeSchema,\n required: z.boolean().optional(),\n }),\n )\n .optional(),\n storefrontApis: z\n .array(\n z.object({\n id: presentationIdSchema,\n accepts: presentationContractRangeSchema,\n required: z.boolean().optional(),\n }),\n )\n .optional(),\n});\n\nexport const webPresentationSchema = z\n .object({\n contractVersion: z.literal(1),\n shell: themeSiteShellSchema.optional(),\n defaultHomeRouteId: presentationIdSchema.optional(),\n head: themeHeadSchema.optional(),\n assets: z.array(themeAssetSchema).optional(),\n tokens: z.array(themeTokenSchema).optional(),\n presets: z.array(themeTokenPresetSchema).optional(),\n settingsSchema: themeAssetPathSchema.optional(),\n settingsVersion: z.number().int().positive().optional(),\n adapters: z.array(presentationAdapterSchema).optional(),\n integrations: z.array(themeIntegrationSchema).optional(),\n })\n .superRefine((presentation, ctx) => {\n const hasDeclaration = Boolean(\n presentation.shell ||\n presentation.defaultHomeRouteId ||\n presentation.head ||\n presentation.assets?.length ||\n presentation.tokens?.length ||\n presentation.presets?.length ||\n presentation.settingsSchema ||\n presentation.adapters?.length ||\n presentation.integrations?.length,\n );\n if (!hasDeclaration) {\n ctx.addIssue({\n code: \"custom\",\n path: [],\n message: \"web.presentation must declare at least one presentation resource\",\n });\n }\n\n addDuplicateIdIssues(presentation.tokens, [\"tokens\"], ctx);\n addDuplicateIdIssues(presentation.presets, [\"presets\"], ctx);\n\n const adapterKeys = new Set<string>();\n for (const [index, adapter] of (presentation.adapters ?? []).entries()) {\n const key = `${adapter.ownerPluginId}:${adapter.surfaceId}`;\n if (adapterKeys.has(key)) {\n ctx.addIssue({\n code: \"custom\",\n path: [\"adapters\", index, \"surfaceId\"],\n message: `duplicate presentation adapter target: ${key}`,\n });\n }\n adapterKeys.add(key);\n }\n\n validatePresetGraph(presentation.presets ?? [], ctx);\n });\n\nexport const presentationDiagnosticSeveritySchema = z.enum([\"info\", \"warning\", \"error\"]);\nexport const presentationCompatibilityStatusSchema = z.enum([\"compatible\", \"incompatible\", \"missing\"]);\n\nexport const presentationDiagnosticSchema = z.object({\n code: z.string().min(1),\n severity: presentationDiagnosticSeveritySchema,\n ownerPluginId: presentationPluginIdSchema,\n contractId: presentationIdSchema,\n expectedRange: presentationContractRangeSchema.optional(),\n actualVersion: presentationContractVersionSchema.optional(),\n required: z.boolean(),\n remediation: z.enum([\"install\", \"enable\", \"upgrade-owner\", \"upgrade-theme\", \"disable-integration\", \"fallback\"]),\n message: z.string().min(1),\n});\n\nexport const presentationCompatibilityResultSchema = z.object({\n status: presentationCompatibilityStatusSchema,\n diagnostic: presentationDiagnosticSchema.optional(),\n});\n\nexport const PRESENTATION_OBSERVABILITY = {\n spans: {\n resolve: \"site.presentation.resolve\",\n shell: \"site.presentation.shell.render\",\n adapter: \"site.presentation.adapter.render\",\n storefront: \"site.presentation.storefront.call\",\n designNode: \"site.presentation.design-node.render\",\n embed: \"site.presentation.embed.load\",\n },\n metrics: {\n resolution: \"site_presentation_resolution_total\",\n fallback: \"site_presentation_fallback_total\",\n renderDuration: \"site_presentation_render_duration_ms\",\n compatibility: \"site_presentation_compatibility_total\",\n },\n auditEvents: {\n previewIssued: \"site.theme.preview.issued\",\n published: \"site.theme.published\",\n rolledBack: \"site.theme.rolled_back\",\n safeModeEntered: \"site.theme.safe_mode.entered\",\n safeModeRecovered: \"site.theme.safe_mode.recovered\",\n },\n fields: [\n \"organizationId\",\n \"themePluginId\",\n \"themeVersion\",\n \"revisionId\",\n \"presentationMode\",\n \"routeId\",\n \"surfaceId\",\n \"contractVersion\",\n \"fallbackReason\",\n \"pluginLoadGeneration\",\n ],\n} as const;\n\nexport interface PresentationCompatibilityCheck {\n ownerPluginId: string;\n contractId: string;\n expectedRange: string;\n actualVersion?: string | undefined;\n required: boolean;\n kind?: \"surface\" | \"storefront\" | \"theme\" | \"design\" | undefined;\n}\n\nexport interface SitePresentationRenderContext {\n organizationId: string;\n pluginId: string;\n pluginVersion: string;\n revisionId: string | null;\n mode: \"published\" | \"preview\" | \"fallback\" | \"safe-mode\";\n publicPath: string;\n matchedRouteId?: string | undefined;\n locale?: string | undefined;\n currency?: string | undefined;\n timezone?: string | undefined;\n basePath: string;\n publicOrigin?: string | undefined;\n tokens: Readonly<Record<string, string>>;\n}\n\nexport interface PresentationAdapterContext<TModel = unknown> extends SitePresentationRenderContext {\n ownerPluginId: string;\n surfaceId: string;\n surfaceVersion: string;\n model: TModel;\n actions: readonly PresentationAction[];\n regions: readonly PresentationRegion[];\n settings: Readonly<Record<string, WebJsonValue>>;\n}\n\nexport interface PresentationAdapterRenderResult {\n html: string;\n head?: WebPluginHead | undefined;\n initialData?: WebJsonValue | undefined;\n clientEntries?: readonly string[] | undefined;\n slotExtensions?: readonly WebSlotRemoteExtension[] | undefined;\n}\n\nexport type PresentationAdapterRenderer<TModel = unknown> = (\n context: PresentationAdapterContext<TModel>,\n) => PresentationAdapterRenderResult | Promise<PresentationAdapterRenderResult>;\n\n/** Owner-side default renderer for a declared presentation surface. */\nexport type PresentationSurfaceRenderer<TModel = unknown> = PresentationAdapterRenderer<TModel>;\n\nexport function defineWebPresentation<const T extends WebPresentation>(presentation: T): T {\n return presentation;\n}\n\nexport function defineThemeHomeTarget<const T extends ThemeHomeTarget>(target: T): T {\n return target;\n}\n\nexport function definePresentationSurface<const T extends PresentationSurface>(surface: T): T {\n return surface;\n}\n\nexport function definePresentationAdapter<const T extends PresentationAdapter>(adapter: T): T {\n return adapter;\n}\n\nexport function parsePresentationModel(value: unknown): PresentationModel {\n return presentationModelSchema.parse(value);\n}\n\nexport function evaluatePresentationCompatibility(\n check: PresentationCompatibilityCheck,\n): PresentationCompatibilityResult {\n if (!check.actualVersion) {\n return {\n status: \"missing\",\n diagnostic: {\n code: `presentation.${check.kind ?? \"surface\"}.missing`,\n severity: check.required ? \"error\" : \"warning\",\n ownerPluginId: check.ownerPluginId,\n contractId: check.contractId,\n expectedRange: check.expectedRange,\n required: check.required,\n remediation: \"install\",\n message: `Missing ${check.ownerPluginId}:${check.contractId} ${check.expectedRange}`,\n },\n };\n }\n\n if (satisfiesPresentationRange(check.actualVersion, check.expectedRange)) {\n return { status: \"compatible\" };\n }\n\n return {\n status: \"incompatible\",\n diagnostic: {\n code: `presentation.${check.kind ?? \"surface\"}.version_mismatch`,\n severity: check.required ? \"error\" : \"warning\",\n ownerPluginId: check.ownerPluginId,\n contractId: check.contractId,\n expectedRange: check.expectedRange,\n actualVersion: check.actualVersion,\n required: check.required,\n remediation: check.required ? \"upgrade-theme\" : \"fallback\",\n message: `Expected ${check.expectedRange}, received ${check.actualVersion}`,\n },\n };\n}\n\nexport function satisfiesPresentationRange(version: string, range: string): boolean {\n const parsedVersion = parseVersion(version);\n if (!parsedVersion) return false;\n\n if (range.endsWith(\".x\") || range.endsWith(\".*\")) {\n const prefix = range.slice(0, -2).split(\".\").map(Number);\n if (prefix.some(Number.isNaN)) return false;\n return prefix.every((part, index) => parsedVersion[index] === part);\n }\n\n const comparator = range.match(/^(\\^|~|>=|<=|>|<)?(.+)$/);\n if (!comparator) return false;\n const operator = comparator[1] ?? \"=\";\n const base = parseVersion(comparator[2] ?? \"\");\n if (!base) return false;\n\n const comparison = compareVersion(parsedVersion, base);\n if (operator === \"=\") return comparison === 0;\n if (operator === \">=\") return comparison >= 0;\n if (operator === \"<=\") return comparison <= 0;\n if (operator === \">\") return comparison > 0;\n if (operator === \"<\") return comparison < 0;\n if (comparison < 0) return false;\n\n if (operator === \"~\") {\n return parsedVersion[0] === base[0] && parsedVersion[1] === base[1];\n }\n\n if (base[0] > 0) return parsedVersion[0] === base[0];\n if (base[1] > 0) return parsedVersion[0] === 0 && parsedVersion[1] === base[1];\n return parsedVersion[0] === 0 && parsedVersion[1] === 0 && parsedVersion[2] === base[2];\n}\n\nfunction addDuplicateIdIssues(\n values: readonly { id: string }[] | undefined,\n path: [string],\n ctx: z.RefinementCtx,\n): void {\n const ids = new Set<string>();\n for (const [index, value] of (values ?? []).entries()) {\n if (ids.has(value.id)) {\n ctx.addIssue({\n code: \"custom\",\n path: [...path, index, \"id\"],\n message: `duplicate presentation id: ${value.id}`,\n });\n }\n ids.add(value.id);\n }\n}\n\nfunction validatePresetGraph(presets: readonly ThemeTokenPreset[], ctx: z.RefinementCtx): void {\n const byId = new Map(presets.map((preset) => [preset.id, preset]));\n for (const [index, preset] of presets.entries()) {\n if (preset.extends && !byId.has(preset.extends)) {\n ctx.addIssue({\n code: \"custom\",\n path: [\"presets\", index, \"extends\"],\n message: `unknown theme token preset: ${preset.extends}`,\n });\n continue;\n }\n\n const visited = new Set<string>();\n let current: ThemeTokenPreset | undefined = preset;\n while (current?.extends) {\n if (visited.has(current.id)) {\n ctx.addIssue({\n code: \"custom\",\n path: [\"presets\", index, \"extends\"],\n message: `cyclic theme token preset inheritance: ${preset.id}`,\n });\n break;\n }\n visited.add(current.id);\n current = byId.get(current.extends);\n }\n }\n}\n\ntype ParsedVersion = readonly [number, number, number];\n\nfunction parseVersion(value: string): ParsedVersion | null {\n const core = value.split(\"-\")[0];\n if (!core) return null;\n const parts = core.split(\".\");\n if (parts.length < 1 || parts.length > 3) return null;\n const numbers = parts.map(Number);\n if (numbers.some((part) => !Number.isInteger(part) || part < 0)) return null;\n return [numbers[0] ?? 0, numbers[1] ?? 0, numbers[2] ?? 0];\n}\n\nfunction compareVersion(left: ParsedVersion, right: ParsedVersion): number {\n for (let index = 0; index < 3; index += 1) {\n const difference = (left[index] ?? 0) - (right[index] ?? 0);\n if (difference !== 0) return difference;\n }\n return 0;\n}\n\nexport type PresentationRegion = z.infer<typeof presentationRegionSchema>;\nexport type PresentationModel = z.infer<typeof presentationModelSchema>;\nexport type PresentationAction = z.infer<typeof presentationActionSchema>;\nexport type PresentationSurface = z.infer<typeof presentationSurfaceSchema>;\nexport type PresentationAdapter = z.infer<typeof presentationAdapterSchema>;\nexport type ThemeAsset = z.infer<typeof themeAssetSchema>;\nexport type ThemeHead = z.infer<typeof themeHeadSchema>;\nexport type ThemeTokenType = z.infer<typeof themeTokenTypeSchema>;\nexport type ThemeToken = z.infer<typeof themeTokenSchema>;\nexport type ThemeTokenPreset = z.infer<typeof themeTokenPresetSchema>;\nexport type ThemeSiteShell = z.infer<typeof themeSiteShellSchema>;\nexport type ThemeHomeTarget = z.infer<typeof themeHomeTargetSchema>;\nexport type ThemeIntegration = z.infer<typeof themeIntegrationSchema>;\nexport type WebPresentation = z.infer<typeof webPresentationSchema>;\nexport type PresentationDiagnostic = z.infer<typeof presentationDiagnosticSchema>;\nexport type PresentationCompatibilityResult = z.infer<typeof presentationCompatibilityResultSchema>;\n","import { z } from \"zod\";\nimport { presentationContractVersionSchema, presentationIdSchema, presentationSchemaRefSchema } from \"./presentation\";\n\nexport const storefrontOperationKindSchema = z.enum([\"query\", \"command\"]);\n\nexport const storefrontOperationSchema = z\n .object({\n id: presentationIdSchema,\n kind: storefrontOperationKindSchema,\n inputSchema: presentationSchemaRefSchema,\n outputSchema: presentationSchemaRefSchema,\n anonymous: z.boolean().optional(),\n permission: z.string().min(1).optional(),\n })\n .passthrough();\n\nexport const storefrontApiSchema = z\n .object({\n id: presentationIdSchema,\n version: presentationContractVersionSchema,\n serverExport: z.string().min(1),\n browserExport: z.string().min(1).optional(),\n operations: z.array(storefrontOperationSchema).min(1),\n openapi: z\n .object({\n basePath: z.string().regex(/^\\/v\\d+(?:\\/[a-z0-9-]+)*$/),\n cors: z.enum([\"site-origin\", \"allowlist\", \"disabled\"]).optional(),\n })\n .optional(),\n })\n .superRefine((api, ctx) => {\n const ids = new Set<string>();\n for (const [index, operation] of api.operations.entries()) {\n if (ids.has(operation.id)) {\n ctx.addIssue({\n code: \"custom\",\n path: [\"operations\", index, \"id\"],\n message: `duplicate Storefront operation: ${operation.id}`,\n });\n }\n ids.add(operation.id);\n }\n });\n\nexport interface StorefrontRequest<TInput = unknown> {\n apiId: string;\n version: string;\n operation: string;\n input: TInput;\n}\n\nexport interface StorefrontResponse<TOutput = unknown> {\n data: TOutput;\n version: string;\n requestId?: string | undefined;\n}\n\nexport interface StorefrontServerBroker {\n call<TInput = unknown, TOutput = unknown>(request: StorefrontRequest<TInput>): Promise<StorefrontResponse<TOutput>>;\n}\n\nexport interface StorefrontBrowserClient extends StorefrontServerBroker {\n discover(): Promise<readonly StorefrontApi[]>;\n}\n\nexport function defineStorefrontApi<const T extends StorefrontApi>(api: T): T {\n return api;\n}\n\nexport type StorefrontOperationKind = z.infer<typeof storefrontOperationKindSchema>;\nexport type StorefrontOperation = z.infer<typeof storefrontOperationSchema>;\nexport type StorefrontApi = z.infer<typeof storefrontApiSchema>;\n","import { z } from \"zod\";\nimport { presentationContractVersionSchema, presentationIdSchema, presentationSchemaRefSchema } from \"./presentation\";\n\nexport const webDesignNodeKindSchema = z.enum([\"content\", \"container\", \"app-block\"]);\n\nexport const webDesignRegionSchema = z\n .object({\n id: presentationIdSchema,\n label: z.string().min(1).optional(),\n accepts: z.array(presentationIdSchema).optional(),\n min: z.number().int().nonnegative().optional(),\n max: z.number().int().positive().optional(),\n required: z.boolean().optional(),\n })\n .superRefine((region, ctx) => {\n if (region.min !== undefined && region.max !== undefined && region.min > region.max) {\n ctx.addIssue({\n code: \"custom\",\n path: [\"min\"],\n message: \"Web Designer region min must not exceed max\",\n });\n }\n });\n\nexport const webDesignBindingSchema = z.object({\n id: presentationIdSchema,\n source: presentationIdSchema,\n inputSchema: presentationSchemaRefSchema.optional(),\n outputSchema: presentationSchemaRefSchema.optional(),\n});\n\nexport const webDesignMigrationSchema = z.object({\n from: presentationContractVersionSchema,\n to: presentationContractVersionSchema,\n handler: z.string().min(1),\n});\n\nexport const webDesignNodeDefinitionSchema = z\n .object({\n id: presentationIdSchema,\n version: presentationContractVersionSchema,\n kind: webDesignNodeKindSchema,\n title: z.string().min(1),\n category: z.string().min(1).optional(),\n icon: z.string().min(1).optional(),\n settingsSchema: presentationSchemaRefSchema.optional(),\n contextSchema: presentationSchemaRefSchema.optional(),\n editorComponent: z.string().min(1),\n serverRenderer: z.string().min(1),\n clientComponent: z.string().min(1).optional(),\n regions: z.array(webDesignRegionSchema).optional(),\n bindings: z.array(webDesignBindingSchema).optional(),\n actions: z.array(presentationIdSchema).optional(),\n migrations: z.array(webDesignMigrationSchema).optional(),\n })\n .superRefine((node, ctx) => {\n if (node.kind === \"container\" && !node.regions?.length) {\n ctx.addIssue({\n code: \"custom\",\n path: [\"regions\"],\n message: \"container Web Designer nodes require at least one region\",\n });\n }\n });\n\nexport const webAppEmbedTargetSchema = z.enum([\"head\", \"body-start\", \"body-end\", \"floating-layer\"]);\nexport const webAppEmbedConsentSchema = z.enum([\"necessary\", \"functional\", \"analytics\", \"marketing\"]);\n\nexport const webAppEmbedSchema = z.object({\n id: presentationIdSchema,\n version: presentationContractVersionSchema,\n title: z.string().min(1),\n target: webAppEmbedTargetSchema,\n clientComponent: z.string().min(1),\n settingsSchema: presentationSchemaRefSchema.optional(),\n consent: webAppEmbedConsentSchema.optional(),\n csp: z\n .object({\n scriptSrc: z.array(z.string().min(1)).optional(),\n connectSrc: z.array(z.string().min(1)).optional(),\n frameSrc: z.array(z.string().min(1)).optional(),\n imgSrc: z.array(z.string().min(1)).optional(),\n })\n .optional(),\n order: z.number().optional(),\n});\n\nexport function defineWebDesignNode<const T extends WebDesignNodeDefinition>(node: T): T {\n return node;\n}\n\nexport function defineAppEmbed<const T extends WebAppEmbed>(embed: T): T {\n return embed;\n}\n\nexport type WebDesignNodeKind = z.infer<typeof webDesignNodeKindSchema>;\nexport type WebDesignRegion = z.infer<typeof webDesignRegionSchema>;\nexport type WebDesignBinding = z.infer<typeof webDesignBindingSchema>;\nexport type WebDesignMigration = z.infer<typeof webDesignMigrationSchema>;\nexport type WebDesignNodeDefinition = z.infer<typeof webDesignNodeDefinitionSchema>;\nexport type WebAppEmbedTarget = z.infer<typeof webAppEmbedTargetSchema>;\nexport type WebAppEmbedConsent = z.infer<typeof webAppEmbedConsentSchema>;\nexport type WebAppEmbed = z.infer<typeof webAppEmbedSchema>;\n","import { z } from 'zod';\nimport { canonicalizeLocale } from './locale';\nimport {\n presentationAdapterSchema,\n presentationSurfaceSchema,\n webPresentationSchema,\n} from './presentation';\nimport { storefrontApiSchema } from './storefront';\nimport {\n webAppEmbedSchema,\n webDesignNodeDefinitionSchema,\n} from './web-design';\n\n// ========== Notification Schema Components ==========\n\n/**\n * Aggregation Strategy - how to group notifications from plugins\n */\nexport const aggregationStrategySchema = z.enum(['none', 'by_target', 'by_actor', 'by_type']);\nexport type AggregationStrategy = z.infer<typeof aggregationStrategySchema>;\n\n/**\n * Notification Category - determines retention policy and view strategy\n */\nexport const notificationCategorySchema = z.enum(['system', 'collaboration', 'social']);\nexport type NotificationCategory = z.infer<typeof notificationCategorySchema>;\n\n/**\n * Plugin Notification Type - declares a type of notification the plugin can send\n */\nexport const notificationTypeSchema = z.object({\n id: z.string().min(1).regex(/^[a-z0-9_]+$/, 'type id must be lowercase alphanumeric with underscores'),\n category: notificationCategorySchema,\n aggregation: aggregationStrategySchema.default('none'),\n i18n: z.record(\n z.string(), // locale key (e.g., 'en-US', 'zh-CN')\n z.object({\n title: z.string().min(1),\n description: z.string().optional(),\n })\n ),\n});\nexport type PluginNotificationType = z.infer<typeof notificationTypeSchema>;\n\n/**\n * Notification Webhooks - async callbacks for notification events\n */\nexport const notificationWebhooksSchema = z.object({\n onClicked: z.string().url().optional(),\n onArchived: z.string().url().optional(),\n}).optional();\n\n/**\n * Notification Rate Limit - plugin-declared limits (platform may enforce lower)\n */\nexport const notificationRateLimitSchema = z.object({\n maxPerMinute: z.number().int().positive().max(10000).default(100),\n maxPerHour: z.number().int().positive().max(20000).default(1000),\n maxPerDay: z.number().int().positive().max(100000).default(10000),\n}).partial();\n\n/**\n * Notification Permission Types\n */\nexport const notificationPermissionSchema = z.enum([\n 'notification:send',\n 'notification:send:batch',\n 'notification:read:own',\n]);\n\n/**\n * Plugin Notifications Configuration\n */\nexport const notificationsConfigSchema = z.object({\n types: z.array(notificationTypeSchema).min(1),\n permissions: z.array(notificationPermissionSchema).optional(),\n rateLimit: notificationRateLimitSchema.optional(),\n webhooks: notificationWebhooksSchema,\n}).optional();\n\n// ========== Admin Extension Schema (Slot & Fill) ==========\n\nexport const permissionDeclarationSchema = z.union([\n z.string().min(1),\n z.object({\n action: z.string().min(1),\n subject: z.string().min(1),\n anonymous: z.boolean().optional(),\n }),\n]);\n\nexport const navTargetSchema = z.object({\n slot: z.literal('nav.sidebar'),\n path: z.string(),\n icon: z.string().optional(),\n order: z.number().optional(),\n permission: permissionDeclarationSchema.optional(),\n /** @deprecated Use permission instead. */\n requiredPermission: z.string().optional(),\n parent: z.string().optional(),\n});\n\nexport const navGroupTargetSchema = z.object({\n slot: z.literal('nav.sidebar.group'),\n path: z.string().optional(),\n icon: z.string().optional(),\n order: z.number().optional(),\n});\n\nexport const routeTargetSchema = z.object({\n slot: z.literal('plugin.route'),\n path: z.string(),\n order: z.number().optional(),\n params: z.record(z.string(), z.string()).optional(),\n});\n\nexport const marketplaceTabTargetSchema = z.object({\n slot: z.literal('marketplace.tabs'),\n value: z.string().min(1).regex(/^[a-z0-9][a-z0-9._-]*$/, 'marketplace tab value must be URL-safe'),\n order: z.number().optional(),\n visibility: z.enum(['platform', 'all']).optional(),\n});\n\nexport const settingsTargetSchema = z.object({\n slot: z.literal('settings.plugin'),\n category: z.string().optional(),\n order: z.number().optional(),\n visibility: z.enum(['platform', 'all']).optional(),\n});\n\nexport const dashboardTargetSchema = z.object({\n slot: z.enum(['dashboard.widgets', 'dashboard.overview']),\n order: z.number().optional(),\n colSpan: z.union([z.literal(1), z.literal(2), z.literal(3), z.literal(4)]).optional(),\n});\n\nexport const genericTargetSchema = z.object({\n slot: z.string(),\n order: z.number().optional(),\n});\n\nexport const targetSchema = z.union([\n navTargetSchema,\n navGroupTargetSchema,\n routeTargetSchema,\n marketplaceTabTargetSchema,\n settingsTargetSchema,\n dashboardTargetSchema,\n genericTargetSchema,\n]);\n\nexport const adminExtensionSchema = z.object({\n id: z.string().min(1),\n label: z.string().min(1),\n icon: z.string().optional(),\n hidden: z.boolean().optional(),\n targets: z.array(targetSchema).min(1),\n});\n\nexport const adminSlotPropSchema = z.union([\n z.string().min(1),\n z.object({\n name: z.string().min(1),\n type: z.string().optional(),\n required: z.boolean().optional(),\n description: z.string().optional(),\n }).passthrough(),\n]);\n\nexport const adminSlotSchema = z.object({\n slot: z.string().min(1),\n description: z.string().optional(),\n props: z.array(adminSlotPropSchema).optional(),\n}).passthrough();\n\nexport const adminTourPlacementSchema = z.enum([\n 'top',\n 'top-start',\n 'top-end',\n 'bottom',\n 'bottom-start',\n 'bottom-end',\n 'left',\n 'left-start',\n 'left-end',\n 'right',\n 'right-start',\n 'right-end',\n 'auto',\n 'center',\n]);\nexport type AdminTourPlacement = z.infer<typeof adminTourPlacementSchema>;\n\nexport const adminTourStepSchema = z.object({\n target: z.string().min(1),\n title: z.string().min(1).optional(),\n titleKey: z.string().min(1).optional(),\n content: z.string().min(1).optional(),\n contentKey: z.string().min(1).optional(),\n placement: adminTourPlacementSchema.optional(),\n}).refine((step) => Boolean(step.content || step.contentKey), {\n message: 'admin tour step must define content or contentKey',\n path: ['content'],\n});\nexport type AdminTourStep = z.infer<typeof adminTourStepSchema>;\n\nexport const adminTourSchema = z.object({\n id: z.string().min(1),\n label: z.string().min(1).optional(),\n labelKey: z.string().min(1).optional(),\n routePatterns: z.array(z.string().min(1)).optional(),\n order: z.number().optional(),\n steps: z.array(adminTourStepSchema).min(1),\n});\nexport type AdminTour = z.infer<typeof adminTourSchema>;\n\nconst pluginTranslationRecordSchema = z.record(z.string().min(1), z.string());\n\nfunction normalizeLocaleRecord(\n value: Record<string, string>,\n ctx: { addIssue: (issue: { code: 'custom'; path?: PropertyKey[]; message: string }) => void },\n): Record<string, string> {\n const normalized: Record<string, string> = {};\n\n for (const [rawLocale, message] of Object.entries(value)) {\n const locale = canonicalizeLocale(rawLocale);\n if (!locale) {\n ctx.addIssue({\n code: 'custom',\n path: [rawLocale],\n message: `Invalid BCP 47 locale: ${rawLocale}`,\n });\n continue;\n }\n if (locale in normalized && normalized[locale] !== message) {\n ctx.addIssue({\n code: 'custom',\n path: [rawLocale],\n message: `Duplicate canonical locale: ${locale}`,\n });\n continue;\n }\n normalized[locale] = message;\n }\n\n return normalized;\n}\n\nconst pluginKeyFirstMessagesSchema = z.record(\n z.string().min(1),\n pluginTranslationRecordSchema.transform(normalizeLocaleRecord),\n);\n\nconst pluginLocaleFirstMessagesSchema = z.record(\n z.string(),\n pluginTranslationRecordSchema,\n).transform((value, ctx) => {\n const normalized: Record<string, Record<string, string>> = {};\n\n for (const [rawLocale, messages] of Object.entries(value)) {\n const locale = canonicalizeLocale(rawLocale);\n if (!locale) {\n ctx.addIssue({\n code: 'custom',\n path: [rawLocale],\n message: `Invalid BCP 47 locale: ${rawLocale}`,\n });\n continue;\n }\n if (locale in normalized) {\n ctx.addIssue({\n code: 'custom',\n path: [rawLocale],\n message: `Duplicate canonical locale: ${locale}`,\n });\n continue;\n }\n normalized[locale] = messages;\n }\n\n return normalized;\n});\n\nconst pluginI18nConfigSchema = z.object({\n namespace: z.string().min(1).optional(),\n messages: pluginKeyFirstMessagesSchema.optional(),\n localesFile: z.string().min(1).optional(),\n onUninstall: z.enum(['delete', 'archive', 'retain']).optional(),\n}).strict();\n\nexport const pluginI18nSchema = z.union([\n pluginLocaleFirstMessagesSchema,\n pluginI18nConfigSchema,\n]);\n\n// ========== Entity Extension Schema ==========\n\nconst extensionTargetPluginIdSchema = z.string()\n .min(1)\n .max(160)\n .regex(/^[a-z0-9-]+(\\.[a-z0-9-]+)+$/, 'target pluginId must be reverse-domain format');\n\nconst crudIdSchema = z.string()\n .min(1)\n .max(80)\n .regex(/^[a-zA-Z][a-zA-Z0-9_-]*$/, 'crud id must be an identifier');\n\nconst entityNameSchema = z.string()\n .min(1)\n .max(160)\n .regex(/^[a-z0-9-]+(\\.[a-z0-9-]+)+$/, 'entity must be dot-separated (e.g., \"shop.store\")');\n\nconst extensionFieldNameSchema = z.string()\n .min(1)\n .max(80)\n .regex(/^[a-zA-Z][a-zA-Z0-9_]*$/, 'field must be an identifier');\n\nexport const entityExtensionFieldTypeSchema = z.enum([\n 'text',\n 'number',\n 'boolean',\n 'date',\n 'datetime',\n 'select',\n 'ref',\n 'json',\n]);\n\nexport const entityExtensionRefSchema = z.object({\n entity: entityNameSchema,\n display: z.string().min(1).optional(),\n changed: z.string().min(1).optional(),\n}).passthrough();\n\nexport const autoCrudFieldOptionSchema = z.object({\n label: z.string().min(1),\n value: z.string().min(1),\n searchText: z.union([\n z.string().min(1),\n z.array(z.string().min(1)),\n ]).optional(),\n count: z.number().optional(),\n disabled: z.boolean().optional(),\n}).passthrough();\n\nexport const autoCrudDataSourceSchema = z.string().min(1);\n\nexport const autoCrudFieldConfigSchema = z.object({\n label: z.string().min(1).optional(),\n enum: z.array(autoCrudFieldOptionSchema).optional(),\n dataSource: autoCrudDataSourceSchema.optional(),\n hidden: z.boolean().optional(),\n table: z.union([z.literal(false), z.record(z.string(), z.unknown())]).optional(),\n filter: z.union([z.literal(false), z.record(z.string(), z.unknown())]).optional(),\n form: z.union([z.literal(false), z.record(z.string(), z.unknown())]).optional(),\n search: z.boolean().optional(),\n}).passthrough();\n\nexport const entityExtensionOwnedFieldSchema = autoCrudFieldConfigSchema.extend({\n label: z.string().min(1),\n type: entityExtensionFieldTypeSchema,\n ref: entityExtensionRefSchema.optional(),\n});\n\nexport const entityExtensionFieldSchema = z.union([\n entityExtensionOwnedFieldSchema,\n autoCrudFieldConfigSchema,\n]);\n\nexport const autoCrudActionZoneSchema = z.enum(['toolbar', 'row', 'batch']);\n\nexport const autoCrudActionSchema = z.object({\n type: z.enum([\n 'create',\n 'import',\n 'export',\n 'view',\n 'edit',\n 'copy',\n 'delete',\n 'batchUpdate',\n 'custom',\n ]),\n id: z.string().min(1).optional(),\n label: z.string().min(1).optional(),\n component: z.string().min(1).optional(),\n onClick: z.string().min(1).optional(),\n order: z.number().optional(),\n hidden: z.boolean().optional(),\n position: z.enum(['start', 'end']).optional(),\n variant: z.enum(['default', 'destructive']).optional(),\n}).passthrough();\n\nexport const autoCrudActionsSchema = z.object({\n toolbar: z.array(autoCrudActionSchema).optional(),\n row: z.array(autoCrudActionSchema).optional(),\n batch: z.array(autoCrudActionSchema).optional(),\n}).passthrough();\n\nexport const entityExtensionCrudConfigSchema = z.object({\n fields: z.record(extensionFieldNameSchema, entityExtensionFieldSchema).optional(),\n actions: autoCrudActionsSchema.optional(),\n}).passthrough();\n\nexport const entityExtensionSlotSchema = z.object({\n slot: z.string().min(1),\n component: z.string().min(1),\n order: z.number().optional(),\n label: z.string().optional(),\n}).passthrough();\n\nconst entityExtensionBaseSchema = z.object({\n fields: z.record(\n crudIdSchema,\n z.record(extensionFieldNameSchema, entityExtensionFieldSchema),\n ).optional(),\n slots: z.array(entityExtensionSlotSchema).optional(),\n hide: z.record(crudIdSchema, z.array(extensionFieldNameSchema)).optional(),\n}).passthrough();\n\nexport const entityExtensionSchema = entityExtensionBaseSchema.superRefine((extension, ctx) => {\n const reservedKeys = new Set(['fields', 'slots', 'hide']);\n for (const [key, value] of Object.entries(extension)) {\n if (reservedKeys.has(key)) continue;\n if (typeof value !== 'object' || value === null || Array.isArray(value)) continue;\n\n const record = value as Record<string, unknown>;\n if (!('fields' in record) && !('actions' in record)) continue;\n\n const parsed = entityExtensionCrudConfigSchema.safeParse(value);\n if (!parsed.success) {\n for (const issue of parsed.error.issues) {\n ctx.addIssue({\n ...issue,\n path: [key, ...issue.path],\n });\n }\n }\n }\n});\n\nexport const entityExtensionUseSchema = z.object({\n pluginId: z.string().regex(/^[a-z0-9-]+(\\.[a-z0-9-]+)+$/, 'pluginId must be reverse-domain format'),\n targetId: z.string().min(1).max(240),\n field: extensionFieldNameSchema,\n required: z.boolean().optional(),\n}).passthrough();\n\nexport const pluginUsesSchema = z.object({\n extensions: z.array(entityExtensionUseSchema).optional(),\n}).passthrough();\n\n// ========== Web Surface Schema ==========\n\nexport const webSsrContractVersionSchema = z.union([z.literal(1), z.literal('1')]);\n\nexport const webPluginRouteSchema = z.object({\n id: z.string().min(1).optional(),\n path: z.string().min(1).regex(/^\\//, 'web route path must start with /'),\n handler: z.string().min(1).optional(),\n component: z.string().min(1),\n permission: permissionDeclarationSchema.optional(),\n order: z.number().optional(),\n}).passthrough();\n\nexport const webExtensionTargetSchema = z.object({\n pluginId: extensionTargetPluginIdSchema,\n slot: z.string().min(1),\n permission: permissionDeclarationSchema.optional(),\n order: z.number().optional(),\n}).passthrough();\n\nexport const webExtensionQuerySchema = z.object({\n id: z.string().min(1),\n procedure: z.string().min(1),\n inputFrom: z.enum(['slotProps', 'static']).optional(),\n staticInput: z.record(z.string(), z.unknown()).optional(),\n}).passthrough();\n\nexport const webExtensionSchema = z.object({\n id: z.string().min(1),\n label: z.string().min(1).optional(),\n component: z.string().min(1),\n expose: z.string().min(1).optional(),\n permission: permissionDeclarationSchema.optional(),\n targets: z.array(webExtensionTargetSchema).min(1),\n queries: z.array(webExtensionQuerySchema).optional(),\n}).passthrough();\n\nexport const webDesignBlockSchema = z.object({\n id: z.string().min(1),\n component: z.string().min(1),\n title: z.string().min(1).optional(),\n /** @deprecated Use title instead. */\n label: z.string().min(1).optional(),\n category: z.string().min(1).optional(),\n icon: z.string().min(1).optional(),\n defaultProps: z.record(z.string(), z.unknown()).optional(),\n previewProps: z.record(z.string(), z.unknown()).optional(),\n propsSchema: z.record(z.string(), z.unknown()).optional(),\n settingsSchema: z.record(z.string(), z.unknown()).optional(),\n designable: z.object({\n resource: z.record(z.string(), z.unknown()).optional(),\n behavior: z.record(z.string(), z.unknown()).optional(),\n }).optional(),\n previewImage: z.string().min(1).optional(),\n order: z.number().optional(),\n}).passthrough().superRefine((block, ctx) => {\n if ('schema' in block) {\n ctx.addIssue({\n code: 'custom',\n path: ['schema'],\n message: 'web.design.blocks[] must not declare platform schema; use propsSchema/settingsSchema for configuration metadata',\n });\n }\n\n if (!block.title && !block.label) {\n ctx.addIssue({\n code: 'custom',\n path: ['title'],\n message: 'web.design.blocks[] must define title or label',\n });\n }\n});\n\nexport const webDesignSlotSchema = z.object({\n id: z.string().min(1),\n label: z.string().min(1).optional(),\n renderMode: z.enum(['island', 'react']).optional(),\n scope: z.enum(['site', 'route', 'template', 'entity']).optional(),\n routeId: z.string().min(1).optional(),\n templateId: z.string().min(1).optional(),\n acceptedBlocks: z.array(z.string().min(1)).optional(),\n order: z.number().optional(),\n}).passthrough();\n\nexport const webDesignTemplateSchema = z.object({\n id: z.string().min(1),\n label: z.string().min(1).optional(),\n routeId: z.string().min(1).optional(),\n entityType: z.string().min(1).optional(),\n component: z.string().min(1),\n slots: z.array(z.string().min(1)).optional(),\n order: z.number().optional(),\n}).passthrough();\n\nexport const webDesignDataSourceSchema = z.object({\n id: z.string().min(1),\n title: z.string().min(1).optional(),\n /** @deprecated Use title instead. */\n label: z.string().min(1).optional(),\n permission: permissionDeclarationSchema.optional(),\n inputSchema: z.record(z.string(), z.unknown()).optional(),\n outputSchema: z.record(z.string(), z.unknown()).optional(),\n order: z.number().optional(),\n}).passthrough().superRefine((dataSource, ctx) => {\n if (!dataSource.title && !dataSource.label) {\n ctx.addIssue({\n code: 'custom',\n path: ['title'],\n message: 'web.design.dataSources[] must define title or label',\n });\n }\n});\n\nexport const webDesignActionSchema = z.object({\n id: z.string().min(1),\n title: z.string().min(1).optional(),\n /** @deprecated Use title instead. */\n label: z.string().min(1).optional(),\n permission: permissionDeclarationSchema.optional(),\n inputSchema: z.record(z.string(), z.unknown()).optional(),\n order: z.number().optional(),\n}).passthrough().superRefine((action, ctx) => {\n if (!action.title && !action.label) {\n ctx.addIssue({\n code: 'custom',\n path: ['title'],\n message: 'web.design.actions[] must define title or label',\n });\n }\n});\n\nexport const webDesignSurfaceSchema = z.object({\n editorEntry: z.string().min(1).optional(),\n previewEntry: z.string().min(1).optional(),\n blocks: z.array(webDesignBlockSchema).optional(),\n nodes: z.array(webDesignNodeDefinitionSchema).optional(),\n slots: z.array(webDesignSlotSchema).optional(),\n templates: z.array(webDesignTemplateSchema).optional(),\n dataSources: z.array(webDesignDataSourceSchema).optional(),\n actions: z.array(webDesignActionSchema).optional(),\n embeds: z.array(webAppEmbedSchema).optional(),\n}).superRefine((design, ctx) => {\n const hasDesignSurface = Boolean(\n design.blocks?.length\n || design.nodes?.length\n || design.slots?.length\n || design.templates?.length\n || design.dataSources?.length\n || design.actions?.length\n || design.embeds?.length\n );\n if (!hasDesignSurface) {\n ctx.addIssue({\n code: 'custom',\n path: [],\n message: 'web.design must declare at least one block, slot, template, dataSource, or action',\n });\n }\n\n for (const [field, values] of [\n ['blocks', design.blocks],\n ['nodes', design.nodes],\n ['slots', design.slots],\n ['templates', design.templates],\n ['dataSources', design.dataSources],\n ['actions', design.actions],\n ['embeds', design.embeds],\n ] as const) {\n const ids = new Set<string>();\n for (const [index, value] of (values ?? []).entries()) {\n if (ids.has(value.id)) {\n ctx.addIssue({\n code: 'custom',\n path: [field, index, 'id'],\n message: `duplicate web.design.${field} id: ${value.id}`,\n });\n }\n ids.add(value.id);\n }\n }\n});\n\nexport const webSurfaceSchema = z.object({\n ssrContractVersion: webSsrContractVersionSchema.optional(),\n serverEntry: z.string().min(1).optional(),\n clientEntry: z.string().min(1).optional(),\n remoteEntry: z.string().min(1).optional(),\n devRemoteEntry: z.string().min(1).optional(),\n moduleName: z.string().min(1).optional(),\n exposes: z.record(z.string(), z.string()).optional(),\n routes: z.array(webPluginRouteSchema).optional(),\n fills: z.never().optional(),\n extensions: z.array(webExtensionSchema).optional(),\n design: webDesignSurfaceSchema.optional(),\n /** Standalone feature presentation adapters supplied by a Presentation Pack. */\n adapters: z.array(presentationAdapterSchema).optional(),\n surfaces: z.array(presentationSurfaceSchema).optional(),\n storefrontApis: z.array(storefrontApiSchema).optional(),\n presentation: webPresentationSchema.optional(),\n /** @deprecated Use serverEntry/clientEntry plus routes[].handler/component. */\n entry: z.string().optional(),\n /** @deprecated Use routes[].component. */\n components: z.array(z.string()).optional(),\n}).superRefine((web, ctx) => {\n const hasRoutes = Boolean(web.routes?.length);\n const hasExtensions = Boolean(web.extensions?.length);\n const hasSurfaceServerRenderers = Boolean(web.surfaces?.some((surface) => surface.defaultRenderer));\n const hasStorefrontServerExports = Boolean(web.storefrontApis?.some((api) => api.serverExport));\n const hasPresentationServerRenderers = Boolean(\n (typeof web.presentation?.shell === 'string' || web.presentation?.shell?.serverRenderer)\n || web.presentation?.adapters?.some((adapter) => adapter.serverRenderer)\n || web.adapters?.some((adapter) => adapter.serverRenderer),\n );\n const hasPresentationClientComponents = Boolean(\n (typeof web.presentation?.shell === 'object' && web.presentation.shell.clientComponent)\n || web.presentation?.adapters?.some((adapter) => adapter.clientComponent)\n || web.adapters?.some((adapter) => adapter.clientComponent),\n );\n const usesSsrSurface = Boolean(\n web.ssrContractVersion\n || web.serverEntry\n || web.clientEntry\n || hasRoutes\n || hasSurfaceServerRenderers\n || hasStorefrontServerExports\n || hasPresentationServerRenderers\n );\n const usesRemoteSurface = Boolean(\n web.remoteEntry\n || web.devRemoteEntry\n || web.moduleName\n || web.exposes\n || hasExtensions\n || hasPresentationClientComponents\n || web.storefrontApis?.some((api) => api.browserExport)\n );\n if (!usesSsrSurface && !usesRemoteSurface) return;\n\n if (hasRoutes && !web.ssrContractVersion) {\n ctx.addIssue({\n code: 'custom',\n path: ['ssrContractVersion'],\n message: 'web.ssrContractVersion is required for SSR web surface',\n });\n }\n if ((hasRoutes || hasSurfaceServerRenderers || hasStorefrontServerExports || hasPresentationServerRenderers) && !web.serverEntry) {\n ctx.addIssue({\n code: 'custom',\n path: ['serverEntry'],\n message: 'web.serverEntry is required for server-rendered web declarations',\n });\n }\n if ((hasExtensions || hasPresentationClientComponents || web.storefrontApis?.some((api) => api.browserExport)) && !web.remoteEntry) {\n ctx.addIssue({\n code: 'custom',\n path: ['remoteEntry'],\n message: 'web.remoteEntry is required for public Web remote components or clients',\n });\n }\n for (const [index, route] of (web.routes ?? []).entries()) {\n if (!route.id) {\n ctx.addIssue({\n code: 'custom',\n path: ['routes', index, 'id'],\n message: 'web.routes[].id is required for SSR web surface',\n });\n }\n if (!route.handler) {\n ctx.addIssue({\n code: 'custom',\n path: ['routes', index, 'handler'],\n message: 'web.routes[].handler is required for SSR web surface',\n });\n }\n if (!route.permission) {\n ctx.addIssue({\n code: 'custom',\n path: ['routes', index, 'permission'],\n message: 'web.routes[].permission is required for SSR web surface',\n });\n }\n }\n\n for (const [field, values] of [\n ['adapters', web.adapters],\n ['surfaces', web.surfaces],\n ['storefrontApis', web.storefrontApis],\n ] as const) {\n const ids = new Set<string>();\n for (const [index, value] of (values ?? []).entries()) {\n const id = value.id;\n if (!id) continue;\n if (ids.has(id)) {\n ctx.addIssue({\n code: 'custom',\n path: [field, index, 'id'],\n message: `duplicate web.${field} id: ${id}`,\n });\n }\n ids.add(id);\n }\n }\n\n const adapterTargets = new Set<string>();\n for (const [field, adapters] of [\n ['presentation.adapters', web.presentation?.adapters],\n ['adapters', web.adapters],\n ] as const) {\n for (const [index, adapter] of (adapters ?? []).entries()) {\n const key = `${adapter.ownerPluginId}:${adapter.surfaceId}`;\n if (adapterTargets.has(key)) {\n ctx.addIssue({\n code: 'custom',\n path: [field, index, 'surfaceId'],\n message: `duplicate presentation adapter target across theme and pack declarations: ${key}`,\n });\n }\n adapterTargets.add(key);\n }\n }\n});\n\n// ========== Main Plugin Manifest Schema ==========\n\n/**\n * Plugin Manifest Schema - Validated at plugin load time\n *\n * This is the authoritative schema for manifest.json files.\n */\nexport const pluginManifestSchema = z.object({\n // === Identity ===\n pluginId: z.string().regex(/^[a-z0-9-]+(\\.[a-z0-9-]+)+$/, 'pluginId must be reverse-domain format (e.g., com.vendor.plugin-name)'),\n version: z.string().regex(/^\\d+\\.\\d+\\.\\d+/, 'version must be semver format'),\n name: z.string().min(1).max(100),\n description: z.string().max(500).optional(),\n vendor: z.string().min(1).max(100),\n private: z.boolean().optional(),\n type: z.enum(['backend', 'frontend', 'full', 'extension', 'integration', 'feature']).optional(),\n\n // === UI Translations ===\n // Locale -> { key: translated text }. Stored under namespace `plugin.{pluginId}`.\n i18n: pluginI18nSchema.optional(),\n\n // === Runtime ===\n runtime: z.enum(['node']).default('node'),\n\n // Note: surfaces is auto-generated from server/admin/web presence\n // Used by plugin marketplace for filtering\n\n // === Compatibility ===\n engines: z.object({\n wordrhyme: z.string(), // semver range, e.g., \"^0.1.0\"\n node: z.string().optional(), // e.g., \">=20.0.0\"\n }),\n\n // === Capabilities Declared ===\n capabilities: z.object({\n ui: z.object({\n adminPage: z.boolean().optional(),\n webPage: z.boolean().optional(),\n webTheme: z.boolean().optional(),\n webPresentationPack: z.boolean().optional(),\n webDesigner: z.boolean().optional(),\n settingsTab: z.boolean().optional(),\n }).optional(),\n storage: z.object({\n provider: z.boolean().optional(),\n }).optional(),\n sms: z.object({\n provider: z.boolean().optional(),\n }).optional(),\n organizations: z.object({\n /** Request Host-mediated Core organization provisioning. */\n provision: z.boolean().optional(),\n }).optional(),\n artifacts: z.object({\n write: z.boolean().optional(),\n }).optional(),\n /**\n * Agent capability (AI Action Gateway, Phase 0 spike).\n * Static whitelist declarations reconciled by the Host at load time:\n * - `runtime: true` — this plugin hosts the agent runtime and may read\n * the Core agent tool registry (gated capability injection).\n * - `tools` — tools this plugin contributes to the AI Tool Catalog.\n * Declaration only; undeclared tools never become visible.\n */\n agent: z.object({\n runtime: z.boolean().optional(),\n /** Governed action invoker access (ActionInvokerCapability, ctx.actions). */\n invoker: z.boolean().optional(),\n tools: z.array(z.object({\n id: z.string().min(1).regex(\n /^[a-z0-9-]+(\\.[a-z0-9-]+)*$/,\n 'tool id must be lowercase dot-separated (e.g., \"canvas.add-node\")'\n ),\n title: z.string().min(1),\n summary: z.string().optional(),\n })).optional(),\n }).optional(),\n /** Governed AI generation metadata and the reserved official Runtime boundary. */\n ai: z.object({\n aliases: z.array(z.object({\n id: z.string().min(1).max(80).regex(\n /^[a-z0-9][a-z0-9._-]{0,79}$/,\n 'AI alias must be lowercase and may contain dots, underscores, or hyphens'\n ),\n name: z.string().min(1).max(80),\n description: z.string().max(240).optional(),\n })).superRefine((aliases, ctx) => {\n const seen = new Set<string>();\n for (const [index, alias] of aliases.entries()) {\n if (seen.has(alias.id)) {\n ctx.addIssue({\n code: 'custom',\n message: `duplicate AI alias: ${alias.id}`,\n path: [index, 'id'],\n });\n }\n seen.add(alias.id);\n }\n }).optional(),\n provider: z.boolean().optional(),\n }).optional(),\n provides: z.array(z.string()).optional(), // e.g., [\"logger-adapter\", \"cache-adapter\"]\n billing: z.object({\n subjects: z.array(z.object({\n subject: z.string().min(1).regex(\n /^[a-z0-9-]+(\\.[a-z0-9-]+)+\\.[a-zA-Z0-9_]+$/,\n 'subject must be dot-separated (e.g., \"com.vendor.plugin.apiCalls\")'\n ),\n type: z.enum(['boolean', 'metered']),\n unit: z.string().optional(),\n description: z.string().optional(),\n })).optional(),\n procedures: z.record(z.string(), z.string()).optional(),\n }).optional(),\n }).optional(),\n\n // === Exports ===\n exports: z.object({\n loggerAdapter: z.string().optional(), // e.g., \"./dist/logger-adapter.js\"\n cacheAdapter: z.string().optional(),\n }).optional(),\n\n // === Permissions Defined ===\n permissions: z.object({\n definitions: z.array(z.object({\n key: z.string().regex(/^[a-z0-9_.]+$/, 'Permission key must be lowercase with dots/underscores'),\n description: z.string().optional(),\n })).optional(),\n required: z.array(z.string()).optional(),\n /**\n * Quick-select action groups for the permission configuration UI.\n * Keyed by CASL subject name. Each subject can have multiple groups,\n * and groups may overlap (same action in multiple groups).\n *\n * @example\n * ```json\n * {\n * \"Article\": [\n * { \"key\": \"editor\", \"label\": \"Editor\", \"actions\": [\"create\", \"update\"] },\n * { \"key\": \"full\", \"label\": \"Full Access\", \"actions\": [\"create\", \"update\", \"delete\", \"publish\"] }\n * ]\n * }\n * ```\n */\n actionGroups: z.record(\n z.string(), // subject name\n z.array(z.object({\n key: z.string().min(1),\n label: z.string().min(1),\n actions: z.array(z.string().min(1)).min(1),\n })),\n ).optional(),\n }).optional(),\n\n // === Server Entry ===\n server: z.object({\n /** Override for plugins that do not use ./dist/server/index.js. */\n entry: z.string().min(1).optional(),\n /** @deprecated Accepted for legacy manifests; Host discovers the router from exports. */\n router: z.boolean().optional(),\n /** @deprecated Accepted for legacy manifests; Host discovers lifecycle functions from exports. */\n hooks: z.array(z.enum(['onInstall', 'onEnable', 'onDisable', 'onUninstall'])).optional(),\n }).strict().optional(),\n\n // === Admin UI Entry ===\n admin: z.object({\n remoteEntry: z.string(), // e.g., \"./dist/admin/remoteEntry.js\"\n devRemoteEntry: z.string().optional(), // Dev mode: e.g., \"http://localhost:3010/remoteEntry.js\"\n moduleName: z.string().optional(), // MF2.0 module name\n exposes: z.record(z.string(), z.string()).optional(),\n extensions: z.array(adminExtensionSchema).optional(),\n slots: z.array(adminSlotSchema).optional(),\n tours: z.array(adminTourSchema).optional(),\n /** @deprecated Use slots instead. */\n extensionSlots: z.array(adminSlotSchema).optional(),\n /** @deprecated Use extensions[] instead */\n menus: z.array(z.object({\n label: z.string(),\n icon: z.string().optional(),\n path: z.string(),\n order: z.number().optional(),\n parentId: z.string().optional(),\n permission: permissionDeclarationSchema.optional(),\n /** @deprecated Use permission instead. */\n requiredPermission: z.string().optional(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n })).optional(),\n }).optional(),\n\n // === Web UI Entry ===\n web: webSurfaceSchema.optional(),\n\n // === Dependencies ===\n dependencies: z.array(z.string()).optional(), // Other plugin IDs\n conflicts: z.array(z.string()).optional(), // Conflicting plugin IDs\n peerDependencies: z.record(z.string(), z.string()).optional(), // e.g., { react: \"^18.0.0\" }\n compatibilityMode: z.enum(['strict', 'lenient', 'fallback']).optional(),\n\n // === Entity Extensions ===\n extends: z.record(extensionTargetPluginIdSchema, entityExtensionSchema).optional(),\n uses: pluginUsesSchema.optional(),\n\n // === Data Retention ===\n dataRetention: z.object({\n onDisable: z.enum(['retain']).optional(),\n onUninstall: z.enum(['delete', 'archive', 'retain']).optional(),\n tables: z.array(z.string()).optional(),\n }).optional(),\n\n // === Infrastructure (Tenant Config Delegation) ===\n infrastructure: z.object({\n tenantOverride: z.boolean(),\n riskLevel: z.enum(['high', 'medium', 'low']),\n sensitiveFields: z.array(z.string()).default([]),\n }).optional(),\n\n // === Notifications ===\n notifications: notificationsConfigSchema,\n}).superRefine((manifest, ctx) => {\n const declaresThemeCapability = manifest.capabilities?.ui?.webTheme === true;\n const hasPresentation = manifest.web?.presentation !== undefined;\n if (declaresThemeCapability && !hasPresentation) {\n ctx.addIssue({\n code: 'custom',\n path: ['web', 'presentation'],\n message: 'capabilities.ui.webTheme requires web.presentation',\n });\n }\n if (hasPresentation && !declaresThemeCapability) {\n ctx.addIssue({\n code: 'custom',\n path: ['capabilities', 'ui', 'webTheme'],\n message: 'web.presentation requires capabilities.ui.webTheme = true',\n });\n }\n const declaresPresentationPack = manifest.capabilities?.ui?.webPresentationPack === true;\n const hasStandaloneAdapters = (manifest.web?.adapters?.length ?? 0) > 0;\n if (declaresPresentationPack && !hasStandaloneAdapters) {\n ctx.addIssue({\n code: 'custom',\n path: ['web', 'adapters'],\n message: 'capabilities.ui.webPresentationPack requires web.adapters',\n });\n }\n if (hasStandaloneAdapters && !declaresPresentationPack) {\n ctx.addIssue({\n code: 'custom',\n path: ['capabilities', 'ui', 'webPresentationPack'],\n message: 'web.adapters requires capabilities.ui.webPresentationPack = true',\n });\n }\n});\n\nexport type PluginManifest = z.infer<typeof pluginManifestSchema>;\nexport type AdminSlotProp = z.infer<typeof adminSlotPropSchema>;\nexport type AdminSlot = z.infer<typeof adminSlotSchema>;\nexport type EntityExtensionFieldType = z.infer<typeof entityExtensionFieldTypeSchema>;\nexport type EntityExtensionField = z.infer<typeof entityExtensionFieldSchema>;\nexport type AutoCrudActionZone = z.infer<typeof autoCrudActionZoneSchema>;\nexport type AutoCrudAction = z.infer<typeof autoCrudActionSchema>;\nexport type AutoCrudActions = z.infer<typeof autoCrudActionsSchema>;\nexport type EntityExtensionCrudConfig = z.infer<typeof entityExtensionCrudConfigSchema>;\nexport type EntityExtensionSlot = z.infer<typeof entityExtensionSlotSchema>;\nexport type EntityExtension = z.infer<typeof entityExtensionSchema>;\nexport type EntityExtensionUse = z.infer<typeof entityExtensionUseSchema>;\nexport type WebSsrContractVersion = z.infer<typeof webSsrContractVersionSchema>;\nexport type WebPluginRoute = z.infer<typeof webPluginRouteSchema>;\nexport type WebExtensionTarget = z.infer<typeof webExtensionTargetSchema>;\nexport type WebExtensionQuery = z.infer<typeof webExtensionQuerySchema>;\nexport type WebExtension = z.infer<typeof webExtensionSchema>;\nexport type WebDesignBlock = z.infer<typeof webDesignBlockSchema>;\nexport type WebDesignSlot = z.infer<typeof webDesignSlotSchema>;\nexport type WebDesignTemplate = z.infer<typeof webDesignTemplateSchema>;\nexport type WebDesignDataSource = z.infer<typeof webDesignDataSourceSchema>;\nexport type WebDesignAction = z.infer<typeof webDesignActionSchema>;\nexport type WebDesignSurface = z.infer<typeof webDesignSurfaceSchema>;\nexport type WebSurface = z.infer<typeof webSurfaceSchema>;\n\n/**\n * Plugin Surface Type - Auto-generated from manifest configuration\n *\n * Indicates on which surfaces this plugin runs:\n * - 'server': Has server-side logic (backend API, database, queue jobs, etc.)\n * - 'admin': Has admin UI components (management dashboard)\n * - 'web': Has frontend/customer-facing UI (public website, user portal)\n */\nexport type PluginSurface = 'server' | 'admin' | 'web';\n\n/**\n * Get plugin surfaces from manifest\n *\n * Auto-generates surfaces array based on which sections are present.\n * Used by plugin marketplace for filtering and display.\n *\n * @param manifest - Plugin manifest\n * @returns Array of surfaces, e.g., ['server', 'admin']\n *\n * @example\n * // Full-stack plugin\n * getPluginSurfaces(manifest) // ['server', 'admin', 'web']\n *\n * // Backend-only plugin (e.g., LBAC, payment gateway)\n * getPluginSurfaces(manifest) // ['server']\n *\n * // Frontend-only plugin (e.g., theme, widget)\n * getPluginSurfaces(manifest) // ['admin', 'web']\n */\nexport function getPluginSurfaces(manifest: PluginManifest): PluginSurface[] {\n const surfaces: PluginSurface[] = [];\n\n if (manifest.server) {\n surfaces.push('server');\n }\n\n if (manifest.admin) {\n surfaces.push('admin');\n }\n\n if (manifest.web) {\n surfaces.push('web');\n }\n\n return surfaces;\n}\n\n/**\n * Check if plugin has specific surface\n *\n * @param manifest - Plugin manifest\n * @param surface - Surface to check\n * @returns true if plugin has this surface\n */\nexport function hasSurface(manifest: PluginManifest, surface: PluginSurface): boolean {\n return getPluginSurfaces(manifest).includes(surface);\n}\n\n/**\n * Get plugin type for backwards compatibility\n *\n * @deprecated Use getPluginSurfaces() instead for more granular control\n * @param manifest - Plugin manifest\n * @returns Plugin type classification\n */\nexport function getPluginType(manifest: PluginManifest): 'backend' | 'frontend' | 'full' {\n const surfaces = getPluginSurfaces(manifest);\n const hasServer = surfaces.includes('server');\n const hasUI = surfaces.includes('admin') || surfaces.includes('web');\n\n if (hasServer && hasUI) return 'full';\n if (hasServer) return 'backend';\n return 'frontend';\n}\n\n/**\n * Plugin Status - Runtime state of a plugin\n */\nexport type PluginStatus = 'enabled' | 'disabled' | 'crashed' | 'invalid' | 'archived' | 'uninstalled';\n\n/**\n * Plugin Capabilities - What the plugin declared it needs\n */\nexport interface PluginCapabilities {\n ui?: {\n adminPage?: boolean;\n webPage?: boolean;\n webTheme?: boolean;\n webPresentationPack?: boolean;\n webDesigner?: boolean;\n settingsTab?: boolean;\n };\n organizations?: {\n provision?: boolean;\n };\n}\n"],"mappings":"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","names":["z","z","z","z","z","z"]}
@@ -1,4 +1,4 @@
1
- import './manifest-DeCaPHoR.js';
1
+ import './manifest-E_HhGXvB.js';
2
2
  import { z } from 'zod';
3
3
  import { b5 as WebJsonValue, b7 as WebPluginHead, W as WebSlotRemoteExtension } from './types-vMRNhnTU.js';
4
4
 
@@ -171,11 +171,11 @@ declare const themeAssetPathSchema: z.ZodString;
171
171
  declare const themeAssetSchema: z.ZodObject<{
172
172
  path: z.ZodString;
173
173
  kind: z.ZodEnum<{
174
+ other: "other";
174
175
  stylesheet: "stylesheet";
175
176
  script: "script";
176
177
  font: "font";
177
178
  image: "image";
178
- other: "other";
179
179
  }>;
180
180
  integrity: z.ZodOptional<z.ZodString>;
181
181
  media: z.ZodOptional<z.ZodString>;
@@ -195,10 +195,10 @@ declare const themeHeadSchema: z.ZodObject<{
195
195
  }, z.core.$strip>;
196
196
  declare const themeTokenTypeSchema: z.ZodEnum<{
197
197
  number: "number";
198
+ length: "length";
198
199
  enum: "enum";
199
200
  image: "image";
200
201
  color: "color";
201
- length: "length";
202
202
  "font-family": "font-family";
203
203
  shadow: "shadow";
204
204
  }>;
@@ -207,10 +207,10 @@ declare const themeTokenSchema: z.ZodObject<{
207
207
  cssVariable: z.ZodString;
208
208
  type: z.ZodEnum<{
209
209
  number: "number";
210
+ length: "length";
210
211
  enum: "enum";
211
212
  image: "image";
212
213
  color: "color";
213
- length: "length";
214
214
  "font-family": "font-family";
215
215
  shadow: "shadow";
216
216
  }>;
@@ -284,11 +284,11 @@ declare const webPresentationSchema: z.ZodObject<{
284
284
  assets: z.ZodOptional<z.ZodArray<z.ZodObject<{
285
285
  path: z.ZodString;
286
286
  kind: z.ZodEnum<{
287
+ other: "other";
287
288
  stylesheet: "stylesheet";
288
289
  script: "script";
289
290
  font: "font";
290
291
  image: "image";
291
- other: "other";
292
292
  }>;
293
293
  integrity: z.ZodOptional<z.ZodString>;
294
294
  media: z.ZodOptional<z.ZodString>;
@@ -300,10 +300,10 @@ declare const webPresentationSchema: z.ZodObject<{
300
300
  cssVariable: z.ZodString;
301
301
  type: z.ZodEnum<{
302
302
  number: "number";
303
+ length: "length";
303
304
  enum: "enum";
304
305
  image: "image";
305
306
  color: "color";
306
- length: "length";
307
307
  "font-family": "font-family";
308
308
  shadow: "shadow";
309
309
  }>;
package/dist/client.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- export { D as DashboardTarget, G as GenericTarget, a as NavTarget, c as PresentationAdapter, l as PresentationSurface, S as SettingsTarget, o as SlotContext, p as StorefrontApi, q as StorefrontBrowserClient, r as StorefrontOperation, t as StorefrontRequest, u as StorefrontResponse, T as Target, w as ThemeAsset, x as ThemeHead, y as ThemeHomeTarget, B as ThemeToken, C as ThemeTokenPreset, U as UIExtensionDef, W as WebAppEmbed, M as WebDesignNodeDefinition, V as WebPresentation, X as dashboardExtension, Y as defineAppEmbed, Z as defineExtension, _ as definePresentationAdapter, $ as definePresentationSurface, a0 as defineStorefrontApi, a1 as defineThemeHomeTarget, a2 as defineWebDesignNode, a3 as defineWebPresentation, a5 as multiSlotExtension, a6 as navExtension, a9 as presentationAdapterSchema, am as presentationSurfaceSchema, ap as settingsExtension, aq as storefrontApiSchema, as as storefrontOperationSchema, au as themeAssetSchema, av as themeHeadSchema, aw as themeHomeTargetSchema, az as themeTokenPresetSchema, aA as themeTokenSchema, aD as webAppEmbedSchema, aH as webDesignNodeDefinitionSchema, aK as webPresentationSchema } from './client-8lkI5njC.js';
2
- export { d as AggregationStrategy, l as PluginCapabilities, P as PluginManifest, m as PluginNotificationType, n as PluginStatus, z as adminExtensionSchema, L as dashboardTargetSchema, T as navTargetSchema, V as pluginManifestSchema, Z as settingsTargetSchema, _ as targetSchema } from './manifest-DeCaPHoR.js';
1
+ export { D as DashboardTarget, G as GenericTarget, a as NavTarget, c as PresentationAdapter, l as PresentationSurface, S as SettingsTarget, o as SlotContext, p as StorefrontApi, q as StorefrontBrowserClient, r as StorefrontOperation, t as StorefrontRequest, u as StorefrontResponse, T as Target, w as ThemeAsset, x as ThemeHead, y as ThemeHomeTarget, B as ThemeToken, C as ThemeTokenPreset, U as UIExtensionDef, W as WebAppEmbed, M as WebDesignNodeDefinition, V as WebPresentation, X as dashboardExtension, Y as defineAppEmbed, Z as defineExtension, _ as definePresentationAdapter, $ as definePresentationSurface, a0 as defineStorefrontApi, a1 as defineThemeHomeTarget, a2 as defineWebDesignNode, a3 as defineWebPresentation, a5 as multiSlotExtension, a6 as navExtension, a9 as presentationAdapterSchema, am as presentationSurfaceSchema, ap as settingsExtension, aq as storefrontApiSchema, as as storefrontOperationSchema, au as themeAssetSchema, av as themeHeadSchema, aw as themeHomeTargetSchema, az as themeTokenPresetSchema, aA as themeTokenSchema, aD as webAppEmbedSchema, aH as webDesignNodeDefinitionSchema, aK as webPresentationSchema } from './client-B1Lj10we.js';
2
+ export { d as AggregationStrategy, l as PluginCapabilities, P as PluginManifest, m as PluginNotificationType, n as PluginStatus, z as adminExtensionSchema, L as dashboardTargetSchema, T as navTargetSchema, V as pluginManifestSchema, Z as settingsTargetSchema, _ as targetSchema } from './manifest-E_HhGXvB.js';
3
3
  import 'zod';
4
4
  import './types-vMRNhnTU.js';
5
5
  import './globalization.js';
package/dist/client.js CHANGED
@@ -31,7 +31,7 @@ import {
31
31
  webAppEmbedSchema,
32
32
  webDesignNodeDefinitionSchema,
33
33
  webPresentationSchema
34
- } from "./chunk-QUUDT6V5.js";
34
+ } from "./chunk-QY5CGT7R.js";
35
35
  import "./chunk-BI7E5CVM.js";
36
36
  export {
37
37
  adminExtensionSchema,
@@ -1,4 +1,4 @@
1
- import { E as EntityExtensionFieldType, a as EntityExtensionField } from './manifest-DeCaPHoR.js';
1
+ import { E as EntityExtensionFieldType, a as EntityExtensionField } from './manifest-E_HhGXvB.js';
2
2
  import { H as HookContext, a as PluginContext, b as HookHandlerOptions } from './types-vMRNhnTU.js';
3
3
 
4
4
  /**
package/dist/index.d.ts CHANGED
@@ -1,15 +1,15 @@
1
1
  import { a as PluginContext, d as PluginLogger, e as WebPluginSiteInfo } from './types-vMRNhnTU.js';
2
2
  export { A as ActionContractMeta, f as ActionDescriptor, g as ActionInvokeRequest, h as AgentToolDescriptor, i as AiAliasDescriptor, j as AiBudget, k as AiModelCatalog, l as AiModelHint, m as AiModelListRequest, n as AiModelOption, o as AiObjectRequest, p as AiObjectResult, q as AiObjectSchema, r as AiRuntimeHandler, s as AiRuntimeHost, t as AiRuntimeInvocation, u as AiStreamEvent, v as AiTextRequest, w as AiTextResult, x as AiUsage, y as AiUsageAuthorization, z as AiUsageObservation, B as ApiPayload, E as EAuthModel, C as EAuthProvider, D as EAuthRefreshInput, F as EAuthRefreshResult, G as EAuthStatus, I as EAuthTokenResult, J as EAuthUpsertInput, K as EAuthUse, L as HookAbortError, H as HookContext, M as HookEmitOptions, b as HookHandlerOptions, N as HookPriority, c as HookTransaction, O as MARKETPLACE_PUBLISH_AUTH_METHODS, Q as MarketplaceAttestationTargetV1, R as MarketplaceExecutionErrorCode, S as MarketplaceExecutionFailureCode, T as MarketplaceOrganizationExecutionV1, U as MarketplacePlatformReadAction, V as MarketplacePolicyAction, X as MarketplacePolicyCapability, Y as MarketplacePublishActor, Z as MarketplacePublishAuthMethod, _ as MarketplacePublisherAction, $ as MarketplaceRegistrySigningCapability, a0 as OpaquePublisherCandidateV1, a1 as PluginActionInvokerCapability, a2 as PluginAgentCapability, a3 as PluginAiCapability, a4 as PluginAiRuntimeCapability, a5 as PluginApisCapability, a6 as PluginArtifactCapability, a7 as PluginAssetCapability, a8 as PluginAssetCreateOptions, a9 as PluginAssetInfo, aa as PluginAssetQuery, ab as PluginAssetUpdateData, ac as PluginAssetVariant, ad as PluginCurrencyCapability, ae as PluginEAuthCapability, af as PluginEntityExtensionCapability, ag as PluginEntityExtensionFilter, ah as PluginFileCapability, ai as PluginFileInfo, aj as PluginFileQuery, ak as PluginFileUploadInput, al as PluginHookCapability, am as PluginJobOptions, an as PluginJobStatus, ao as PluginMediaCapability, P as PluginMediaInfo, ap as PluginMediaQuery, aq as PluginMediaUpdateData, ar as PluginMediaUploadInput, as as PluginMediaVariant, at as PluginMetricsAllowedLabels, au as PluginMetricsCapability, av as PluginNotificationActor, aw as PluginNotificationCapability, ax as PluginNotificationChannel, ay as PluginNotificationEvent, az as PluginNotificationInput, aA as PluginNotificationResult, aB as PluginNotificationSendParams, aC as PluginNotificationSendResult, aD as PluginNotificationTarget, aE as PluginNotificationTemplate, aF as PluginOrganizationMembersCapability, aG as PluginOrganizationProvisioningCapability, aH as PluginPaginatedResult, aI as PluginPermissionCapability, aJ as PluginPermissionCheckContext, aK as PluginPermissionDef, aL as PluginQueueCapability, aM as PluginScopedDb, aN as PluginSettingEntry, aO as PluginSettingOptions, aP as PluginSettingsCapability, aQ as PluginSmsCapability, aR as PluginSmsProvider, aS as PluginSmsProviderConfig, aT as PluginSmsProviderContext, aU as PluginSmsSendInput, aV as PluginSmsSendResult, aW as PluginStorageCapability, aX as PluginStorageProvider, aY as PluginStorageProviderConfig, aZ as PluginStorageProviderInfo, a_ as PluginStorageUploadInput, a$ as PluginStorageUploadResult, b0 as PluginTraceCapability, b1 as PluginUsageCapability, b2 as PluginWebCapability, b3 as ReadonlyPluginScopedDb, b4 as WebJsonPrimitive, b5 as WebJsonValue, b6 as WebPluginDocumentMode, b7 as WebPluginHead, b8 as WebPluginHeadLink, b9 as WebPluginPresentationSurfaceResult, ba as WebPluginRouteHandler, bb as WebPluginRouteRequest, bc as WebPluginRouteResult, bd as WebPluginTenantInfo, be as WebPresentationAdapterClientDescriptor, bf as WebResolvedPresentationAdapter, bg as WebResolvedSitePresentation, bh as WebResolvedSiteShell, bi as WebResolvedThemeAsset, bj as WebSerializableGlobalizationState, bk as WebSlotExtensionQuery, bl as WebSlotQueryResult, W as WebSlotRemoteExtension, bm as WebSlotRenderMode, bn as WebSlotRenderOptions, bo as WebSlotRenderRequest, bp as WebSlotRenderResult, bq as WebSlotRenderer, br as WebThemeShellClientDescriptor, bs as WebThemeShellDocumentModel, bt as WebThemeShellRenderResult, bu as WebThemeShellRenderer, bv as WebThemeShellRouteModel } from './types-vMRNhnTU.js';
3
- import { P as PluginManifest } from './manifest-DeCaPHoR.js';
4
- export { A as AdminTour, b as AdminTourPlacement, c as AdminTourStep, d as AggregationStrategy, e as AutoCrudAction, f as AutoCrudActionZone, g as AutoCrudActions, h as EntityExtension, i as EntityExtensionCrudConfig, a as EntityExtensionField, E as EntityExtensionFieldType, j as EntityExtensionSlot, k as EntityExtensionUse, l as PluginCapabilities, m as PluginNotificationType, n as PluginStatus, W as WebDesignAction, o as WebDesignBlock, p as WebDesignDataSource, q as WebDesignSlot, r as WebDesignSurface, s as WebDesignTemplate, t as WebExtension, u as WebExtensionQuery, v as WebExtensionTarget, w as WebPluginRoute, x as WebSsrContractVersion, y as WebSurface, z as adminExtensionSchema, B as adminTourPlacementSchema, C as adminTourSchema, D as adminTourStepSchema, F as autoCrudActionSchema, G as autoCrudActionZoneSchema, H as autoCrudActionsSchema, I as autoCrudDataSourceSchema, J as autoCrudFieldConfigSchema, K as autoCrudFieldOptionSchema, L as dashboardTargetSchema, M as entityExtensionCrudConfigSchema, N as entityExtensionFieldSchema, O as entityExtensionSchema, Q as entityExtensionSlotSchema, R as entityExtensionUseSchema, S as navGroupTargetSchema, T as navTargetSchema, U as pluginI18nSchema, V as pluginManifestSchema, X as pluginUsesSchema, Y as routeTargetSchema, Z as settingsTargetSchema, _ as targetSchema, $ as webDesignActionSchema, a0 as webDesignBlockSchema, a1 as webDesignDataSourceSchema, a2 as webDesignSlotSchema, a3 as webDesignSurfaceSchema, a4 as webDesignTemplateSchema, a5 as webExtensionQuerySchema, a6 as webExtensionSchema, a7 as webExtensionTargetSchema, a8 as webPluginRouteSchema, a9 as webSsrContractVersionSchema, aa as webSurfaceSchema } from './manifest-DeCaPHoR.js';
3
+ import { P as PluginManifest } from './manifest-E_HhGXvB.js';
4
+ export { A as AdminTour, b as AdminTourPlacement, c as AdminTourStep, d as AggregationStrategy, e as AutoCrudAction, f as AutoCrudActionZone, g as AutoCrudActions, h as EntityExtension, i as EntityExtensionCrudConfig, a as EntityExtensionField, E as EntityExtensionFieldType, j as EntityExtensionSlot, k as EntityExtensionUse, l as PluginCapabilities, m as PluginNotificationType, n as PluginStatus, W as WebDesignAction, o as WebDesignBlock, p as WebDesignDataSource, q as WebDesignSlot, r as WebDesignSurface, s as WebDesignTemplate, t as WebExtension, u as WebExtensionQuery, v as WebExtensionTarget, w as WebPluginRoute, x as WebSsrContractVersion, y as WebSurface, z as adminExtensionSchema, B as adminTourPlacementSchema, C as adminTourSchema, D as adminTourStepSchema, F as autoCrudActionSchema, G as autoCrudActionZoneSchema, H as autoCrudActionsSchema, I as autoCrudDataSourceSchema, J as autoCrudFieldConfigSchema, K as autoCrudFieldOptionSchema, L as dashboardTargetSchema, M as entityExtensionCrudConfigSchema, N as entityExtensionFieldSchema, O as entityExtensionSchema, Q as entityExtensionSlotSchema, R as entityExtensionUseSchema, S as navGroupTargetSchema, T as navTargetSchema, U as pluginI18nSchema, V as pluginManifestSchema, X as pluginUsesSchema, Y as routeTargetSchema, Z as settingsTargetSchema, _ as targetSchema, $ as webDesignActionSchema, a0 as webDesignBlockSchema, a1 as webDesignDataSourceSchema, a2 as webDesignSlotSchema, a3 as webDesignSurfaceSchema, a4 as webDesignTemplateSchema, a5 as webExtensionQuerySchema, a6 as webExtensionSchema, a7 as webExtensionTargetSchema, a8 as webPluginRouteSchema, a9 as webSsrContractVersionSchema, aa as webSurfaceSchema } from './manifest-E_HhGXvB.js';
5
5
  import { z } from 'zod';
6
6
  import { Translator } from './globalization.js';
7
7
  export { CurrencyInfo, DEFAULT_CURRENCY, FormatPriceOptions, GlobalizationState, I18nTextField, LanguageInfo, PriceFormatter, TextDirection, TranslationMessages, bankersRound, buildGlobalizationUrl, convertCurrency, createPriceFormatter, createTranslator, findCurrency, formatCurrencyAmount, formatPrice, fromCents, getBaseCurrency, getI18nText, getTextDirection, normalizeCurrencies, normalizeCurrencyInfo, resolveCurrencyInfo, toCents, withGlobalizationHelpers } from './globalization.js';
8
8
  export { DEFAULT_LOCALE, canonicalizeLocale, isLocale, normalizeLocale } from './locale.js';
9
9
  export { CLIENT_TIME_ZONE_COOKIE, CLIENT_TIME_ZONE_HEADER, DEFAULT_TIME_ZONE, DateFilterInput, DateFilterRange, DateRangeResolver, FormatDateTimeOptions, canonicalizeTimeZone, formatDateTime, getClientTimeZone, getSupportedTimeZones, isValidTimeZone, normalizeTimeZone, resolveDateFilterRange, toDateTimeLocal, toUtcDateTime, toUtcDayRange } from './time.js';
10
10
  export { c as PLUGIN_ARCHIVE_MEDIA_TYPE, d as PLUGIN_RELEASE_SCHEMA_VERSION, e as PluginRegistryCatalog, f as PluginRegistryRelease, P as PluginRelease, g as PluginReleaseFile, h as PluginSignature, i as REGISTRY_CATALOG_SIGNATURE_DOMAIN, b as RegistryCatalogPageEnvelope, R as RegistryReleaseEnvelope, a as RegistrySignature, j as canonicalRegistryCatalogPageEnvelope, k as canonicalRegistryReleaseEnvelope, p as pluginArchivePathSchema, l as pluginRegistryCatalogSchema, m as pluginRegistryReleaseSchema, n as pluginReleaseFileSchema, o as pluginReleaseSchema, q as pluginSignatureSchema, r as registryCatalogPageEnvelopeSchema, s as registryCatalogPageSignaturePayload, t as registryCatalogReleasesPayload, u as registryReleaseEnvelopeSchema, v as registryReleaseSignaturePayload, w as registrySignatureSchema } from './release-BDJeO54k.js';
11
- export { E as ENTITY_EXTENSION_VALUES_SAVE_HOOK_ID, a as EXTENSION_PROJECT_SAVE_HOOK_ID, b as EntityExtensionProjectionValue, c as EntityExtensionValueSaveHandler, d as EntityExtensionValueSavePayload, e as EntityExtensionValueSaveResult, f as entityExtensions, r as registerEntityExtensionValueSaver } from './entity-extensions-B6TmuDSK.js';
12
- export { D as DashboardTarget, E as ExtensionComponentMap, G as GenericTarget, N as NavGroupTarget, a as NavTarget, P as PRESENTATION_OBSERVABILITY, b as PresentationAction, c as PresentationAdapter, d as PresentationAdapterContext, e as PresentationAdapterRenderResult, f as PresentationAdapterRenderer, g as PresentationCompatibilityCheck, h as PresentationCompatibilityResult, i as PresentationDiagnostic, j as PresentationModel, k as PresentationRegion, l as PresentationSurface, m as PresentationSurfaceRenderer, R as RouteTarget, S as SettingsTarget, n as SitePresentationRenderContext, o as SlotContext, p as StorefrontApi, q as StorefrontBrowserClient, r as StorefrontOperation, s as StorefrontOperationKind, t as StorefrontRequest, u as StorefrontResponse, v as StorefrontServerBroker, T as Target, w as ThemeAsset, x as ThemeHead, y as ThemeHomeTarget, z as ThemeIntegration, A as ThemeSiteShell, B as ThemeToken, C as ThemeTokenPreset, F as ThemeTokenType, H as ToolbarHandlerMap, U as UIExtensionDef, W as WebAppEmbed, I as WebAppEmbedConsent, J as WebAppEmbedTarget, K as WebDesignBinding, L as WebDesignMigration, M as WebDesignNodeDefinition, O as WebDesignNodeKind, Q as WebDesignRegion, V as WebPresentation, X as dashboardExtension, Y as defineAppEmbed, Z as defineExtension, _ as definePresentationAdapter, $ as definePresentationSurface, a0 as defineStorefrontApi, a1 as defineThemeHomeTarget, a2 as defineWebDesignNode, a3 as defineWebPresentation, a4 as evaluatePresentationCompatibility, a5 as multiSlotExtension, a6 as navExtension, a7 as parsePresentationModel, a8 as presentationActionSchema, a9 as presentationAdapterSchema, aa as presentationCompatibilityResultSchema, ab as presentationCompatibilityStatusSchema, ac as presentationContractRangeSchema, ad as presentationContractVersionSchema, ae as presentationDiagnosticSchema, af as presentationDiagnosticSeveritySchema, ag as presentationIdSchema, ah as presentationModelSchema, ai as presentationPluginIdSchema, aj as presentationRegionSchema, ak as presentationRenderModeSchema, al as presentationSchemaRefSchema, am as presentationSurfaceSchema, an as routeExtension, ao as satisfiesPresentationRange, ap as settingsExtension, aq as storefrontApiSchema, ar as storefrontOperationKindSchema, as as storefrontOperationSchema, at as themeAssetPathSchema, au as themeAssetSchema, av as themeHeadSchema, aw as themeHomeTargetSchema, ax as themeIntegrationSchema, ay as themeSiteShellSchema, az as themeTokenPresetSchema, aA as themeTokenSchema, aB as themeTokenTypeSchema, aC as webAppEmbedConsentSchema, aD as webAppEmbedSchema, aE as webAppEmbedTargetSchema, aF as webDesignBindingSchema, aG as webDesignMigrationSchema, aH as webDesignNodeDefinitionSchema, aI as webDesignNodeKindSchema, aJ as webDesignRegionSchema, aK as webPresentationSchema } from './client-8lkI5njC.js';
11
+ export { E as ENTITY_EXTENSION_VALUES_SAVE_HOOK_ID, a as EXTENSION_PROJECT_SAVE_HOOK_ID, b as EntityExtensionProjectionValue, c as EntityExtensionValueSaveHandler, d as EntityExtensionValueSavePayload, e as EntityExtensionValueSaveResult, f as entityExtensions, r as registerEntityExtensionValueSaver } from './entity-extensions-D24YNHG2.js';
12
+ export { D as DashboardTarget, E as ExtensionComponentMap, G as GenericTarget, N as NavGroupTarget, a as NavTarget, P as PRESENTATION_OBSERVABILITY, b as PresentationAction, c as PresentationAdapter, d as PresentationAdapterContext, e as PresentationAdapterRenderResult, f as PresentationAdapterRenderer, g as PresentationCompatibilityCheck, h as PresentationCompatibilityResult, i as PresentationDiagnostic, j as PresentationModel, k as PresentationRegion, l as PresentationSurface, m as PresentationSurfaceRenderer, R as RouteTarget, S as SettingsTarget, n as SitePresentationRenderContext, o as SlotContext, p as StorefrontApi, q as StorefrontBrowserClient, r as StorefrontOperation, s as StorefrontOperationKind, t as StorefrontRequest, u as StorefrontResponse, v as StorefrontServerBroker, T as Target, w as ThemeAsset, x as ThemeHead, y as ThemeHomeTarget, z as ThemeIntegration, A as ThemeSiteShell, B as ThemeToken, C as ThemeTokenPreset, F as ThemeTokenType, H as ToolbarHandlerMap, U as UIExtensionDef, W as WebAppEmbed, I as WebAppEmbedConsent, J as WebAppEmbedTarget, K as WebDesignBinding, L as WebDesignMigration, M as WebDesignNodeDefinition, O as WebDesignNodeKind, Q as WebDesignRegion, V as WebPresentation, X as dashboardExtension, Y as defineAppEmbed, Z as defineExtension, _ as definePresentationAdapter, $ as definePresentationSurface, a0 as defineStorefrontApi, a1 as defineThemeHomeTarget, a2 as defineWebDesignNode, a3 as defineWebPresentation, a4 as evaluatePresentationCompatibility, a5 as multiSlotExtension, a6 as navExtension, a7 as parsePresentationModel, a8 as presentationActionSchema, a9 as presentationAdapterSchema, aa as presentationCompatibilityResultSchema, ab as presentationCompatibilityStatusSchema, ac as presentationContractRangeSchema, ad as presentationContractVersionSchema, ae as presentationDiagnosticSchema, af as presentationDiagnosticSeveritySchema, ag as presentationIdSchema, ah as presentationModelSchema, ai as presentationPluginIdSchema, aj as presentationRegionSchema, ak as presentationRenderModeSchema, al as presentationSchemaRefSchema, am as presentationSurfaceSchema, an as routeExtension, ao as satisfiesPresentationRange, ap as settingsExtension, aq as storefrontApiSchema, ar as storefrontOperationKindSchema, as as storefrontOperationSchema, at as themeAssetPathSchema, au as themeAssetSchema, av as themeHeadSchema, aw as themeHomeTargetSchema, ax as themeIntegrationSchema, ay as themeSiteShellSchema, az as themeTokenPresetSchema, aA as themeTokenSchema, aB as themeTokenTypeSchema, aC as webAppEmbedConsentSchema, aD as webAppEmbedSchema, aE as webAppEmbedTargetSchema, aF as webDesignBindingSchema, aG as webDesignMigrationSchema, aH as webDesignNodeDefinitionSchema, aI as webDesignNodeKindSchema, aJ as webDesignRegionSchema, aK as webPresentationSchema } from './client-B1Lj10we.js';
13
13
  export { PluginDevRuntimeConfig, PluginPublicWebSharedName, PluginReactOptions, PluginReactSharedOptions, PluginRemoteSharedName, getPluginDevPort, getPluginDevRemoteEntry, getPluginDevRuntimeConfig, getPluginMfName, isPluginDevRemoteSelected, parsePluginList, pluginPublicWebShared, pluginReactOptions, pluginReactShared, pluginRemoteShared } from './dev-utils.js';
14
14
  import 'decimal.js';
15
15
 
package/dist/index.js CHANGED
@@ -130,7 +130,7 @@ import {
130
130
  webPresentationSchema,
131
131
  webSsrContractVersionSchema,
132
132
  webSurfaceSchema
133
- } from "./chunk-QUUDT6V5.js";
133
+ } from "./chunk-QY5CGT7R.js";
134
134
  import {
135
135
  getPluginDevPort,
136
136
  getPluginDevRemoteEntry,
@@ -179,6 +179,7 @@ declare const adminExtensionSchema: z.ZodObject<{
179
179
  }, z.core.$strip>]>>;
180
180
  }, z.core.$strip>;
181
181
  declare const adminTourPlacementSchema: z.ZodEnum<{
182
+ auto: "auto";
182
183
  top: "top";
183
184
  "top-start": "top-start";
184
185
  "top-end": "top-end";
@@ -191,7 +192,6 @@ declare const adminTourPlacementSchema: z.ZodEnum<{
191
192
  right: "right";
192
193
  "right-start": "right-start";
193
194
  "right-end": "right-end";
194
- auto: "auto";
195
195
  center: "center";
196
196
  }>;
197
197
  type AdminTourPlacement = z.infer<typeof adminTourPlacementSchema>;
@@ -202,6 +202,7 @@ declare const adminTourStepSchema: z.ZodObject<{
202
202
  content: z.ZodOptional<z.ZodString>;
203
203
  contentKey: z.ZodOptional<z.ZodString>;
204
204
  placement: z.ZodOptional<z.ZodEnum<{
205
+ auto: "auto";
205
206
  top: "top";
206
207
  "top-start": "top-start";
207
208
  "top-end": "top-end";
@@ -214,7 +215,6 @@ declare const adminTourStepSchema: z.ZodObject<{
214
215
  right: "right";
215
216
  "right-start": "right-start";
216
217
  "right-end": "right-end";
217
- auto: "auto";
218
218
  center: "center";
219
219
  }>>;
220
220
  }, z.core.$strip>;
@@ -232,6 +232,7 @@ declare const adminTourSchema: z.ZodObject<{
232
232
  content: z.ZodOptional<z.ZodString>;
233
233
  contentKey: z.ZodOptional<z.ZodString>;
234
234
  placement: z.ZodOptional<z.ZodEnum<{
235
+ auto: "auto";
235
236
  top: "top";
236
237
  "top-start": "top-start";
237
238
  "top-end": "top-end";
@@ -244,7 +245,6 @@ declare const adminTourSchema: z.ZodObject<{
244
245
  right: "right";
245
246
  "right-start": "right-start";
246
247
  "right-end": "right-end";
247
- auto: "auto";
248
248
  center: "center";
249
249
  }>>;
250
250
  }, z.core.$strip>>;
@@ -255,9 +255,9 @@ declare const pluginI18nSchema: z.ZodUnion<readonly [z.ZodPipe<z.ZodRecord<z.Zod
255
255
  messages: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodPipe<z.ZodRecord<z.ZodString, z.ZodString>, z.ZodTransform<Record<string, string>, Record<string, string>>>>>;
256
256
  localesFile: z.ZodOptional<z.ZodString>;
257
257
  onUninstall: z.ZodOptional<z.ZodEnum<{
258
- delete: "delete";
259
- archive: "archive";
260
258
  retain: "retain";
259
+ archive: "archive";
260
+ delete: "delete";
261
261
  }>>;
262
262
  }, z.core.$strict>]>;
263
263
  declare const entityExtensionFieldTypeSchema: z.ZodEnum<{
@@ -749,10 +749,10 @@ declare const webDesignSlotSchema: z.ZodObject<{
749
749
  react: "react";
750
750
  }>>;
751
751
  scope: z.ZodOptional<z.ZodEnum<{
752
- site: "site";
753
752
  route: "route";
754
- template: "template";
755
753
  entity: "entity";
754
+ site: "site";
755
+ template: "template";
756
756
  }>>;
757
757
  routeId: z.ZodOptional<z.ZodString>;
758
758
  templateId: z.ZodOptional<z.ZodString>;
@@ -859,10 +859,10 @@ declare const webDesignSurfaceSchema: z.ZodObject<{
859
859
  react: "react";
860
860
  }>>;
861
861
  scope: z.ZodOptional<z.ZodEnum<{
862
- site: "site";
863
862
  route: "route";
864
- template: "template";
865
863
  entity: "entity";
864
+ site: "site";
865
+ template: "template";
866
866
  }>>;
867
867
  routeId: z.ZodOptional<z.ZodString>;
868
868
  templateId: z.ZodOptional<z.ZodString>;
@@ -1047,10 +1047,10 @@ declare const webSurfaceSchema: z.ZodObject<{
1047
1047
  react: "react";
1048
1048
  }>>;
1049
1049
  scope: z.ZodOptional<z.ZodEnum<{
1050
- site: "site";
1051
1050
  route: "route";
1052
- template: "template";
1053
1051
  entity: "entity";
1052
+ site: "site";
1053
+ template: "template";
1054
1054
  }>>;
1055
1055
  routeId: z.ZodOptional<z.ZodString>;
1056
1056
  templateId: z.ZodOptional<z.ZodString>;
@@ -1206,11 +1206,11 @@ declare const webSurfaceSchema: z.ZodObject<{
1206
1206
  assets: z.ZodOptional<z.ZodArray<z.ZodObject<{
1207
1207
  path: z.ZodString;
1208
1208
  kind: z.ZodEnum<{
1209
+ other: "other";
1209
1210
  stylesheet: "stylesheet";
1210
1211
  script: "script";
1211
1212
  font: "font";
1212
1213
  image: "image";
1213
- other: "other";
1214
1214
  }>;
1215
1215
  integrity: z.ZodOptional<z.ZodString>;
1216
1216
  media: z.ZodOptional<z.ZodString>;
@@ -1222,10 +1222,10 @@ declare const webSurfaceSchema: z.ZodObject<{
1222
1222
  cssVariable: z.ZodString;
1223
1223
  type: z.ZodEnum<{
1224
1224
  number: "number";
1225
+ length: "length";
1225
1226
  enum: "enum";
1226
1227
  image: "image";
1227
1228
  color: "color";
1228
- length: "length";
1229
1229
  "font-family": "font-family";
1230
1230
  shadow: "shadow";
1231
1231
  }>;
@@ -1303,9 +1303,9 @@ declare const pluginManifestSchema: z.ZodObject<{
1303
1303
  messages: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodPipe<z.ZodRecord<z.ZodString, z.ZodString>, z.ZodTransform<Record<string, string>, Record<string, string>>>>>;
1304
1304
  localesFile: z.ZodOptional<z.ZodString>;
1305
1305
  onUninstall: z.ZodOptional<z.ZodEnum<{
1306
- delete: "delete";
1307
- archive: "archive";
1308
1306
  retain: "retain";
1307
+ archive: "archive";
1308
+ delete: "delete";
1309
1309
  }>>;
1310
1310
  }, z.core.$strict>]>>;
1311
1311
  runtime: z.ZodDefault<z.ZodEnum<{
@@ -1385,6 +1385,13 @@ declare const pluginManifestSchema: z.ZodObject<{
1385
1385
  }, z.core.$strip>>;
1386
1386
  server: z.ZodOptional<z.ZodObject<{
1387
1387
  entry: z.ZodOptional<z.ZodString>;
1388
+ router: z.ZodOptional<z.ZodBoolean>;
1389
+ hooks: z.ZodOptional<z.ZodArray<z.ZodEnum<{
1390
+ onUninstall: "onUninstall";
1391
+ onInstall: "onInstall";
1392
+ onEnable: "onEnable";
1393
+ onDisable: "onDisable";
1394
+ }>>>;
1388
1395
  }, z.core.$strict>>;
1389
1396
  admin: z.ZodOptional<z.ZodObject<{
1390
1397
  remoteEntry: z.ZodString;
@@ -1469,6 +1476,7 @@ declare const pluginManifestSchema: z.ZodObject<{
1469
1476
  content: z.ZodOptional<z.ZodString>;
1470
1477
  contentKey: z.ZodOptional<z.ZodString>;
1471
1478
  placement: z.ZodOptional<z.ZodEnum<{
1479
+ auto: "auto";
1472
1480
  top: "top";
1473
1481
  "top-start": "top-start";
1474
1482
  "top-end": "top-end";
@@ -1481,7 +1489,6 @@ declare const pluginManifestSchema: z.ZodObject<{
1481
1489
  right: "right";
1482
1490
  "right-start": "right-start";
1483
1491
  "right-end": "right-end";
1484
- auto: "auto";
1485
1492
  center: "center";
1486
1493
  }>>;
1487
1494
  }, z.core.$strip>>;
@@ -1628,10 +1635,10 @@ declare const pluginManifestSchema: z.ZodObject<{
1628
1635
  react: "react";
1629
1636
  }>>;
1630
1637
  scope: z.ZodOptional<z.ZodEnum<{
1631
- site: "site";
1632
1638
  route: "route";
1633
- template: "template";
1634
1639
  entity: "entity";
1640
+ site: "site";
1641
+ template: "template";
1635
1642
  }>>;
1636
1643
  routeId: z.ZodOptional<z.ZodString>;
1637
1644
  templateId: z.ZodOptional<z.ZodString>;
@@ -1787,11 +1794,11 @@ declare const pluginManifestSchema: z.ZodObject<{
1787
1794
  assets: z.ZodOptional<z.ZodArray<z.ZodObject<{
1788
1795
  path: z.ZodString;
1789
1796
  kind: z.ZodEnum<{
1797
+ other: "other";
1790
1798
  stylesheet: "stylesheet";
1791
1799
  script: "script";
1792
1800
  font: "font";
1793
1801
  image: "image";
1794
- other: "other";
1795
1802
  }>;
1796
1803
  integrity: z.ZodOptional<z.ZodString>;
1797
1804
  media: z.ZodOptional<z.ZodString>;
@@ -1803,10 +1810,10 @@ declare const pluginManifestSchema: z.ZodObject<{
1803
1810
  cssVariable: z.ZodString;
1804
1811
  type: z.ZodEnum<{
1805
1812
  number: "number";
1813
+ length: "length";
1806
1814
  enum: "enum";
1807
1815
  image: "image";
1808
1816
  color: "color";
1809
- length: "length";
1810
1817
  "font-family": "font-family";
1811
1818
  shadow: "shadow";
1812
1819
  }>;
@@ -1863,9 +1870,9 @@ declare const pluginManifestSchema: z.ZodObject<{
1863
1870
  conflicts: z.ZodOptional<z.ZodArray<z.ZodString>>;
1864
1871
  peerDependencies: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
1865
1872
  compatibilityMode: z.ZodOptional<z.ZodEnum<{
1873
+ fallback: "fallback";
1866
1874
  strict: "strict";
1867
1875
  lenient: "lenient";
1868
- fallback: "fallback";
1869
1876
  }>>;
1870
1877
  extends: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
1871
1878
  fields: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodObject<{
@@ -1935,18 +1942,18 @@ declare const pluginManifestSchema: z.ZodObject<{
1935
1942
  retain: "retain";
1936
1943
  }>>;
1937
1944
  onUninstall: z.ZodOptional<z.ZodEnum<{
1938
- delete: "delete";
1939
- archive: "archive";
1940
1945
  retain: "retain";
1946
+ archive: "archive";
1947
+ delete: "delete";
1941
1948
  }>>;
1942
1949
  tables: z.ZodOptional<z.ZodArray<z.ZodString>>;
1943
1950
  }, z.core.$strip>>;
1944
1951
  infrastructure: z.ZodOptional<z.ZodObject<{
1945
1952
  tenantOverride: z.ZodBoolean;
1946
1953
  riskLevel: z.ZodEnum<{
1947
- high: "high";
1948
- medium: "medium";
1949
1954
  low: "low";
1955
+ medium: "medium";
1956
+ high: "high";
1950
1957
  }>;
1951
1958
  sensitiveFields: z.ZodDefault<z.ZodArray<z.ZodString>>;
1952
1959
  }, z.core.$strip>>;
package/dist/server.d.ts CHANGED
@@ -3,13 +3,13 @@ import { a as PluginContext } from './types-vMRNhnTU.js';
3
3
  export { H as HookContext, c as HookTransaction } from './types-vMRNhnTU.js';
4
4
  import { DateRangeResolver } from './time.js';
5
5
  export { inferRouterInputs, inferRouterOutputs } from '@trpc/server';
6
- export { E as ENTITY_EXTENSION_VALUES_SAVE_HOOK_ID, a as EXTENSION_PROJECT_SAVE_HOOK_ID, b as EntityExtensionProjectionValue, c as EntityExtensionValueSaveHandler, d as EntityExtensionValueSavePayload, e as EntityExtensionValueSaveResult, f as entityExtensions, r as registerEntityExtensionValueSaver } from './entity-extensions-B6TmuDSK.js';
6
+ export { E as ENTITY_EXTENSION_VALUES_SAVE_HOOK_ID, a as EXTENSION_PROJECT_SAVE_HOOK_ID, b as EntityExtensionProjectionValue, c as EntityExtensionValueSaveHandler, d as EntityExtensionValueSavePayload, e as EntityExtensionValueSaveResult, f as entityExtensions, r as registerEntityExtensionValueSaver } from './entity-extensions-D24YNHG2.js';
7
7
  import './globalization.js';
8
8
  import 'decimal.js';
9
9
  import './locale.js';
10
10
  import './release-BDJeO54k.js';
11
11
  import 'zod';
12
- import './manifest-DeCaPHoR.js';
12
+ import './manifest-E_HhGXvB.js';
13
13
 
14
14
  interface PluginRuntimeRequestContext {
15
15
  requestId?: string | undefined;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wordrhyme/plugin",
3
- "version": "0.1.0-alpha.14",
3
+ "version": "0.1.0-alpha.16",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "repository": {