@inf-monkeys-tech/monkeys 1.1.24 → 1.1.26

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.
Files changed (65) hide show
  1. package/README.md +33 -0
  2. package/lib/contracts/declarative-control-http.d.ts +148 -0
  3. package/lib/contracts/declarative-control-http.d.ts.map +1 -1
  4. package/lib/contracts/declarative-control.d.ts +31 -0
  5. package/lib/contracts/declarative-control.d.ts.map +1 -1
  6. package/lib/contracts/declarative-control.js +6 -0
  7. package/lib/contracts/declarative-control.js.map +1 -1
  8. package/lib/contracts/declarative-document-import.d.ts +25 -0
  9. package/lib/contracts/declarative-document-import.d.ts.map +1 -1
  10. package/lib/contracts/declarative-publication-job.d.ts +16 -0
  11. package/lib/contracts/declarative-publication-job.d.ts.map +1 -1
  12. package/lib/contracts/page-expression.d.ts.map +1 -1
  13. package/lib/contracts/page-expression.js +7 -0
  14. package/lib/contracts/page-expression.js.map +1 -1
  15. package/lib/esm/chunk-4UVW5LEP.mjs +78 -0
  16. package/lib/esm/chunk-4UVW5LEP.mjs.map +1 -0
  17. package/lib/esm/chunk-6BWJ6PMM.mjs +7314 -0
  18. package/lib/esm/chunk-6BWJ6PMM.mjs.map +1 -0
  19. package/lib/esm/chunk-J7I5CBDN.mjs +20332 -0
  20. package/lib/esm/chunk-J7I5CBDN.mjs.map +1 -0
  21. package/lib/esm/chunk-NNHXKONM.mjs +205 -0
  22. package/lib/esm/chunk-NNHXKONM.mjs.map +1 -0
  23. package/lib/esm/chunk-QLAQOBO2.mjs +1009 -0
  24. package/lib/esm/chunk-QLAQOBO2.mjs.map +1 -0
  25. package/lib/esm/chunk-VY4ZEIL3.mjs +159 -0
  26. package/lib/esm/chunk-VY4ZEIL3.mjs.map +1 -0
  27. package/lib/esm/contracts/index.mjs +585 -20882
  28. package/lib/esm/contracts/index.mjs.map +1 -1
  29. package/lib/esm/index.mjs +769 -27904
  30. package/lib/esm/index.mjs.map +1 -1
  31. package/lib/esm/runtime/index.mjs +148 -26592
  32. package/lib/esm/runtime/index.mjs.map +1 -1
  33. package/lib/esm/schemas/index.mjs +352 -20670
  34. package/lib/esm/schemas/index.mjs.map +1 -1
  35. package/lib/index.d.ts +2 -0
  36. package/lib/index.d.ts.map +1 -1
  37. package/lib/index.js +2 -0
  38. package/lib/index.js.map +1 -1
  39. package/lib/json-schema/page-runtime-bundle.schema.json +15 -0
  40. package/lib/json-schema/page.schema.json +15 -0
  41. package/lib/runtime/declarative-control-compiler.d.ts.map +1 -1
  42. package/lib/runtime/declarative-control-compiler.js +2 -0
  43. package/lib/runtime/declarative-control-compiler.js.map +1 -1
  44. package/lib/runtime/index.d.ts +2 -0
  45. package/lib/runtime/index.d.ts.map +1 -1
  46. package/lib/runtime/index.js +2 -0
  47. package/lib/runtime/index.js.map +1 -1
  48. package/lib/runtime/page-composition.d.ts +35 -0
  49. package/lib/runtime/page-composition.d.ts.map +1 -0
  50. package/lib/runtime/page-composition.js +107 -0
  51. package/lib/runtime/page-composition.js.map +1 -0
  52. package/lib/runtime/page-expression.d.ts +10 -0
  53. package/lib/runtime/page-expression.d.ts.map +1 -1
  54. package/lib/runtime/page-expression.js +63 -11
  55. package/lib/runtime/page-expression.js.map +1 -1
  56. package/lib/runtime/runtime-definition-wire.d.ts +8275 -0
  57. package/lib/runtime/runtime-definition-wire.d.ts.map +1 -0
  58. package/lib/runtime/runtime-definition-wire.js +111 -0
  59. package/lib/runtime/runtime-definition-wire.js.map +1 -0
  60. package/lib/schemas/index.d.ts +14 -0
  61. package/lib/schemas/index.d.ts.map +1 -1
  62. package/lib/theme-tokens/core.d.ts.map +1 -1
  63. package/lib/theme-tokens/core.js +16 -8
  64. package/lib/theme-tokens/core.js.map +1 -1
  65. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../node_modules/ajv/lib/compile/codegen/code.ts","../../../node_modules/ajv/lib/compile/codegen/scope.ts","../../../node_modules/ajv/lib/compile/codegen/index.ts","../../../node_modules/ajv/lib/compile/util.ts","../../../node_modules/ajv/lib/compile/names.ts","../../../node_modules/ajv/lib/compile/errors.ts","../../../node_modules/ajv/lib/compile/validate/boolSchema.ts","../../../node_modules/ajv/lib/compile/rules.ts","../../../node_modules/ajv/lib/compile/validate/applicability.ts","../../../node_modules/ajv/lib/compile/validate/dataType.ts","../../../node_modules/ajv/lib/compile/validate/defaults.ts","../../../node_modules/ajv/lib/vocabularies/code.ts","../../../node_modules/ajv/lib/compile/validate/keyword.ts","../../../node_modules/ajv/lib/compile/validate/subschema.ts","../../../node_modules/fast-deep-equal/index.js","../../../node_modules/json-schema-traverse/index.js","../../../node_modules/ajv/lib/compile/resolve.ts","../../../node_modules/ajv/lib/compile/validate/index.ts","../../../node_modules/ajv/lib/runtime/validation_error.ts","../../../node_modules/ajv/lib/compile/ref_error.ts","../../../node_modules/ajv/lib/compile/index.ts","../../../node_modules/ajv/dist/refs/data.json","../../../node_modules/fast-uri/lib/utils.js","../../../node_modules/fast-uri/lib/schemes.js","../../../node_modules/fast-uri/index.js","../../../node_modules/ajv/lib/runtime/uri.ts","../../../node_modules/ajv/lib/core.ts","../../../node_modules/ajv/lib/vocabularies/core/id.ts","../../../node_modules/ajv/lib/vocabularies/core/ref.ts","../../../node_modules/ajv/lib/vocabularies/core/index.ts","../../../node_modules/ajv/lib/vocabularies/validation/limitNumber.ts","../../../node_modules/ajv/lib/vocabularies/validation/multipleOf.ts","../../../node_modules/ajv/lib/runtime/ucs2length.ts","../../../node_modules/ajv/lib/vocabularies/validation/limitLength.ts","../../../node_modules/ajv/lib/vocabularies/validation/pattern.ts","../../../node_modules/ajv/lib/vocabularies/validation/limitProperties.ts","../../../node_modules/ajv/lib/vocabularies/validation/required.ts","../../../node_modules/ajv/lib/vocabularies/validation/limitItems.ts","../../../node_modules/ajv/lib/runtime/equal.ts","../../../node_modules/ajv/lib/vocabularies/validation/uniqueItems.ts","../../../node_modules/ajv/lib/vocabularies/validation/const.ts","../../../node_modules/ajv/lib/vocabularies/validation/enum.ts","../../../node_modules/ajv/lib/vocabularies/validation/index.ts","../../../node_modules/ajv/lib/vocabularies/applicator/additionalItems.ts","../../../node_modules/ajv/lib/vocabularies/applicator/items.ts","../../../node_modules/ajv/lib/vocabularies/applicator/prefixItems.ts","../../../node_modules/ajv/lib/vocabularies/applicator/items2020.ts","../../../node_modules/ajv/lib/vocabularies/applicator/contains.ts","../../../node_modules/ajv/lib/vocabularies/applicator/dependencies.ts","../../../node_modules/ajv/lib/vocabularies/applicator/propertyNames.ts","../../../node_modules/ajv/lib/vocabularies/applicator/additionalProperties.ts","../../../node_modules/ajv/lib/vocabularies/applicator/properties.ts","../../../node_modules/ajv/lib/vocabularies/applicator/patternProperties.ts","../../../node_modules/ajv/lib/vocabularies/applicator/not.ts","../../../node_modules/ajv/lib/vocabularies/applicator/anyOf.ts","../../../node_modules/ajv/lib/vocabularies/applicator/oneOf.ts","../../../node_modules/ajv/lib/vocabularies/applicator/allOf.ts","../../../node_modules/ajv/lib/vocabularies/applicator/if.ts","../../../node_modules/ajv/lib/vocabularies/applicator/thenElse.ts","../../../node_modules/ajv/lib/vocabularies/applicator/index.ts","../../../node_modules/ajv/lib/vocabularies/format/format.ts","../../../node_modules/ajv/lib/vocabularies/format/index.ts","../../../node_modules/ajv/lib/vocabularies/metadata.ts","../../../node_modules/ajv/lib/vocabularies/draft7.ts","../../../node_modules/ajv/lib/vocabularies/discriminator/types.ts","../../../node_modules/ajv/lib/vocabularies/discriminator/index.ts","../../../node_modules/ajv/dist/refs/json-schema-draft-07.json","../../../node_modules/ajv/lib/ajv.ts","../../../node_modules/ajv/lib/vocabularies/dynamic/dynamicAnchor.ts","../../../node_modules/ajv/lib/vocabularies/dynamic/dynamicRef.ts","../../../node_modules/ajv/lib/vocabularies/dynamic/recursiveAnchor.ts","../../../node_modules/ajv/lib/vocabularies/dynamic/recursiveRef.ts","../../../node_modules/ajv/lib/vocabularies/dynamic/index.ts","../../../node_modules/ajv/lib/vocabularies/validation/dependentRequired.ts","../../../node_modules/ajv/lib/vocabularies/applicator/dependentSchemas.ts","../../../node_modules/ajv/lib/vocabularies/validation/limitContains.ts","../../../node_modules/ajv/lib/vocabularies/next.ts","../../../node_modules/ajv/lib/vocabularies/unevaluated/unevaluatedProperties.ts","../../../node_modules/ajv/lib/vocabularies/unevaluated/unevaluatedItems.ts","../../../node_modules/ajv/lib/vocabularies/unevaluated/index.ts","../../../node_modules/ajv/lib/vocabularies/draft2020.ts","../../../node_modules/ajv/dist/refs/json-schema-2020-12/schema.json","../../../node_modules/ajv/dist/refs/json-schema-2020-12/meta/applicator.json","../../../node_modules/ajv/dist/refs/json-schema-2020-12/meta/unevaluated.json","../../../node_modules/ajv/dist/refs/json-schema-2020-12/meta/content.json","../../../node_modules/ajv/dist/refs/json-schema-2020-12/meta/core.json","../../../node_modules/ajv/dist/refs/json-schema-2020-12/meta/format-annotation.json","../../../node_modules/ajv/dist/refs/json-schema-2020-12/meta/meta-data.json","../../../node_modules/ajv/dist/refs/json-schema-2020-12/meta/validation.json","../../../node_modules/ajv/lib/refs/json-schema-2020-12/index.ts","../../../node_modules/ajv/lib/2020.ts","../../../src/contracts/capability.ts","../../../src/contracts/common.ts","../../../src/contracts/page-expression.ts","../../../src/contracts/render.ts","../../../src/contracts/workflow-definition.ts","../../../src/runtime/capability-registry.ts","../../../src/contracts/agent.ts","../../../src/runtime/agent-session-projector.ts","../../../src/contracts/semantic.ts","../../../src/contracts/data.ts","../../../src/contracts/menu.ts","../../../src/contracts/page.ts","../../../src/contracts/legacy-route.ts","../../../src/contracts/declarative-control.ts","../../../src/contracts/file.ts","../../../src/contracts/page-binding-dependencies.ts","../../../src/contracts/declarative-diagnostic.ts","../../../src/runtime/declaration-compiler.ts","../../../src/contracts/declarative-control-http.ts","../../../src/runtime/render-tree-compiler.ts","../../../src/runtime/declarative-control-compiler.ts","../../../src/runtime/navigation-availability.ts","../../../src/runtime/menu-compiler.ts","../../../src/runtime/view-provider-registry.ts","../../../src/runtime/page-compiler.ts","../../../src/runtime/product-runtime.ts","../../../src/contracts/tenant.ts","../../../src/contracts/theme.ts","../../../src/theme-tokens/core.ts","../../../src/contracts/dtcg-format.schema.json","../../../src/runtime/tenant-config.ts","../../../src/runtime/tenant-runtime-bindings.ts","../../../src/runtime/declarative-runtime-contract.ts","../../../src/runtime/view-render-model.ts","../../../src/runtime/workflow-compiler.ts","../../../src/contracts/workflow-column.ts","../../../src/runtime/workflow-column.ts","../../../src/contracts/access.ts","../../../src/runtime/access-compiler.ts","../../../src/runtime/component-assembly.ts","../../../src/contracts/component-assembly.ts","../../../src/runtime/page-expression.ts","../../../src/contracts/record-editor-draft.ts","../../../src/runtime/record-editor-draft.ts","../../../src/runtime/target-render-model.ts","../../../src/contracts/page-stream.ts","../../../src/runtime/page-stream.ts","../../../src/runtime/action-program-author.ts"],"sourcesContent":["// eslint-disable-next-line @typescript-eslint/no-extraneous-class\nexport abstract class _CodeOrName {\n abstract readonly str: string\n abstract readonly names: UsedNames\n abstract toString(): string\n abstract emptyStr(): boolean\n}\n\nexport const IDENTIFIER = /^[a-z$_][a-z$_0-9]*$/i\n\nexport class Name extends _CodeOrName {\n readonly str: string\n constructor(s: string) {\n super()\n if (!IDENTIFIER.test(s)) throw new Error(\"CodeGen: name must be a valid identifier\")\n this.str = s\n }\n\n toString(): string {\n return this.str\n }\n\n emptyStr(): boolean {\n return false\n }\n\n get names(): UsedNames {\n return {[this.str]: 1}\n }\n}\n\nexport class _Code extends _CodeOrName {\n readonly _items: readonly CodeItem[]\n private _str?: string\n private _names?: UsedNames\n\n constructor(code: string | readonly CodeItem[]) {\n super()\n this._items = typeof code === \"string\" ? [code] : code\n }\n\n toString(): string {\n return this.str\n }\n\n emptyStr(): boolean {\n if (this._items.length > 1) return false\n const item = this._items[0]\n return item === \"\" || item === '\"\"'\n }\n\n get str(): string {\n return (this._str ??= this._items.reduce((s: string, c: CodeItem) => `${s}${c}`, \"\"))\n }\n\n get names(): UsedNames {\n return (this._names ??= this._items.reduce((names: UsedNames, c) => {\n if (c instanceof Name) names[c.str] = (names[c.str] || 0) + 1\n return names\n }, {}))\n }\n}\n\nexport type CodeItem = Name | string | number | boolean | null\n\nexport type UsedNames = Record<string, number | undefined>\n\nexport type Code = _Code | Name\n\nexport type SafeExpr = Code | number | boolean | null\n\nexport const nil = new _Code(\"\")\n\ntype CodeArg = SafeExpr | string | undefined\n\nexport function _(strs: TemplateStringsArray, ...args: CodeArg[]): _Code {\n const code: CodeItem[] = [strs[0]]\n let i = 0\n while (i < args.length) {\n addCodeArg(code, args[i])\n code.push(strs[++i])\n }\n return new _Code(code)\n}\n\nconst plus = new _Code(\"+\")\n\nexport function str(strs: TemplateStringsArray, ...args: (CodeArg | string[])[]): _Code {\n const expr: CodeItem[] = [safeStringify(strs[0])]\n let i = 0\n while (i < args.length) {\n expr.push(plus)\n addCodeArg(expr, args[i])\n expr.push(plus, safeStringify(strs[++i]))\n }\n optimize(expr)\n return new _Code(expr)\n}\n\nexport function addCodeArg(code: CodeItem[], arg: CodeArg | string[]): void {\n if (arg instanceof _Code) code.push(...arg._items)\n else if (arg instanceof Name) code.push(arg)\n else code.push(interpolate(arg))\n}\n\nfunction optimize(expr: CodeItem[]): void {\n let i = 1\n while (i < expr.length - 1) {\n if (expr[i] === plus) {\n const res = mergeExprItems(expr[i - 1], expr[i + 1])\n if (res !== undefined) {\n expr.splice(i - 1, 3, res)\n continue\n }\n expr[i++] = \"+\"\n }\n i++\n }\n}\n\nfunction mergeExprItems(a: CodeItem, b: CodeItem): CodeItem | undefined {\n if (b === '\"\"') return a\n if (a === '\"\"') return b\n if (typeof a == \"string\") {\n if (b instanceof Name || a[a.length - 1] !== '\"') return\n if (typeof b != \"string\") return `${a.slice(0, -1)}${b}\"`\n if (b[0] === '\"') return a.slice(0, -1) + b.slice(1)\n return\n }\n if (typeof b == \"string\" && b[0] === '\"' && !(a instanceof Name)) return `\"${a}${b.slice(1)}`\n return\n}\n\nexport function strConcat(c1: Code, c2: Code): Code {\n return c2.emptyStr() ? c1 : c1.emptyStr() ? c2 : str`${c1}${c2}`\n}\n\n// TODO do not allow arrays here\nfunction interpolate(x?: string | string[] | number | boolean | null): SafeExpr | string {\n return typeof x == \"number\" || typeof x == \"boolean\" || x === null\n ? x\n : safeStringify(Array.isArray(x) ? x.join(\",\") : x)\n}\n\nexport function stringify(x: unknown): Code {\n return new _Code(safeStringify(x))\n}\n\nexport function safeStringify(x: unknown): string {\n return JSON.stringify(x)\n .replace(/\\u2028/g, \"\\\\u2028\")\n .replace(/\\u2029/g, \"\\\\u2029\")\n}\n\nexport function getProperty(key: Code | string | number): Code {\n return typeof key == \"string\" && IDENTIFIER.test(key) ? new _Code(`.${key}`) : _`[${key}]`\n}\n\n//Does best effort to format the name properly\nexport function getEsmExportName(key: Code | string | number): Code {\n if (typeof key == \"string\" && IDENTIFIER.test(key)) {\n return new _Code(`${key}`)\n }\n throw new Error(`CodeGen: invalid export name: ${key}, use explicit $id name mapping`)\n}\n\nexport function regexpCode(rx: RegExp): Code {\n return new _Code(rx.toString())\n}\n","import {_, nil, Code, Name} from \"./code\"\n\ninterface NameGroup {\n prefix: string\n index: number\n}\n\nexport interface NameValue {\n ref: ValueReference // this is the reference to any value that can be referred to from generated code via `globals` var in the closure\n key?: unknown // any key to identify a global to avoid duplicates, if not passed ref is used\n code?: Code // this is the code creating the value needed for standalone code wit_out closure - can be a primitive value, function or import (`require`)\n}\n\nexport type ValueReference = unknown // possibly make CodeGen parameterized type on this type\n\nclass ValueError extends Error {\n readonly value?: NameValue\n constructor(name: ValueScopeName) {\n super(`CodeGen: \"code\" for ${name} not defined`)\n this.value = name.value\n }\n}\n\ninterface ScopeOptions {\n prefixes?: Set<string>\n parent?: Scope\n}\n\ninterface ValueScopeOptions extends ScopeOptions {\n scope: ScopeStore\n es5?: boolean\n lines?: boolean\n}\n\nexport type ScopeStore = Record<string, ValueReference[] | undefined>\n\ntype ScopeValues = {\n [Prefix in string]?: Map<unknown, ValueScopeName>\n}\n\nexport type ScopeValueSets = {\n [Prefix in string]?: Set<ValueScopeName>\n}\n\nexport enum UsedValueState {\n Started,\n Completed,\n}\n\nexport type UsedScopeValues = {\n [Prefix in string]?: Map<ValueScopeName, UsedValueState | undefined>\n}\n\nexport const varKinds = {\n const: new Name(\"const\"),\n let: new Name(\"let\"),\n var: new Name(\"var\"),\n}\n\nexport class Scope {\n protected readonly _names: {[Prefix in string]?: NameGroup} = {}\n protected readonly _prefixes?: Set<string>\n protected readonly _parent?: Scope\n\n constructor({prefixes, parent}: ScopeOptions = {}) {\n this._prefixes = prefixes\n this._parent = parent\n }\n\n toName(nameOrPrefix: Name | string): Name {\n return nameOrPrefix instanceof Name ? nameOrPrefix : this.name(nameOrPrefix)\n }\n\n name(prefix: string): Name {\n return new Name(this._newName(prefix))\n }\n\n protected _newName(prefix: string): string {\n const ng = this._names[prefix] || this._nameGroup(prefix)\n return `${prefix}${ng.index++}`\n }\n\n private _nameGroup(prefix: string): NameGroup {\n if (this._parent?._prefixes?.has(prefix) || (this._prefixes && !this._prefixes.has(prefix))) {\n throw new Error(`CodeGen: prefix \"${prefix}\" is not allowed in this scope`)\n }\n return (this._names[prefix] = {prefix, index: 0})\n }\n}\n\ninterface ScopePath {\n property: string\n itemIndex: number\n}\n\nexport class ValueScopeName extends Name {\n readonly prefix: string\n value?: NameValue\n scopePath?: Code\n\n constructor(prefix: string, nameStr: string) {\n super(nameStr)\n this.prefix = prefix\n }\n\n setValue(value: NameValue, {property, itemIndex}: ScopePath): void {\n this.value = value\n this.scopePath = _`.${new Name(property)}[${itemIndex}]`\n }\n}\n\ninterface VSOptions extends ValueScopeOptions {\n _n: Code\n}\n\nconst line = _`\\n`\n\nexport class ValueScope extends Scope {\n protected readonly _values: ScopeValues = {}\n protected readonly _scope: ScopeStore\n readonly opts: VSOptions\n\n constructor(opts: ValueScopeOptions) {\n super(opts)\n this._scope = opts.scope\n this.opts = {...opts, _n: opts.lines ? line : nil}\n }\n\n get(): ScopeStore {\n return this._scope\n }\n\n name(prefix: string): ValueScopeName {\n return new ValueScopeName(prefix, this._newName(prefix))\n }\n\n value(nameOrPrefix: ValueScopeName | string, value: NameValue): ValueScopeName {\n if (value.ref === undefined) throw new Error(\"CodeGen: ref must be passed in value\")\n const name = this.toName(nameOrPrefix) as ValueScopeName\n const {prefix} = name\n const valueKey = value.key ?? value.ref\n let vs = this._values[prefix]\n if (vs) {\n const _name = vs.get(valueKey)\n if (_name) return _name\n } else {\n vs = this._values[prefix] = new Map()\n }\n vs.set(valueKey, name)\n\n const s = this._scope[prefix] || (this._scope[prefix] = [])\n const itemIndex = s.length\n s[itemIndex] = value.ref\n name.setValue(value, {property: prefix, itemIndex})\n return name\n }\n\n getValue(prefix: string, keyOrRef: unknown): ValueScopeName | undefined {\n const vs = this._values[prefix]\n if (!vs) return\n return vs.get(keyOrRef)\n }\n\n scopeRefs(scopeName: Name, values: ScopeValues | ScopeValueSets = this._values): Code {\n return this._reduceValues(values, (name: ValueScopeName) => {\n if (name.scopePath === undefined) throw new Error(`CodeGen: name \"${name}\" has no value`)\n return _`${scopeName}${name.scopePath}`\n })\n }\n\n scopeCode(\n values: ScopeValues | ScopeValueSets = this._values,\n usedValues?: UsedScopeValues,\n getCode?: (n: ValueScopeName) => Code | undefined\n ): Code {\n return this._reduceValues(\n values,\n (name: ValueScopeName) => {\n if (name.value === undefined) throw new Error(`CodeGen: name \"${name}\" has no value`)\n return name.value.code\n },\n usedValues,\n getCode\n )\n }\n\n private _reduceValues(\n values: ScopeValues | ScopeValueSets,\n valueCode: (n: ValueScopeName) => Code | undefined,\n usedValues: UsedScopeValues = {},\n getCode?: (n: ValueScopeName) => Code | undefined\n ): Code {\n let code: Code = nil\n for (const prefix in values) {\n const vs = values[prefix]\n if (!vs) continue\n const nameSet = (usedValues[prefix] = usedValues[prefix] || new Map())\n vs.forEach((name: ValueScopeName) => {\n if (nameSet.has(name)) return\n nameSet.set(name, UsedValueState.Started)\n let c = valueCode(name)\n if (c) {\n const def = this.opts.es5 ? varKinds.var : varKinds.const\n code = _`${code}${def} ${name} = ${c};${this.opts._n}`\n } else if ((c = getCode?.(name))) {\n code = _`${code}${c}${this.opts._n}`\n } else {\n throw new ValueError(name)\n }\n nameSet.set(name, UsedValueState.Completed)\n })\n }\n return code\n }\n}\n","import type {ScopeValueSets, NameValue, ValueScope, ValueScopeName} from \"./scope\"\nimport {_, nil, _Code, Code, Name, UsedNames, CodeItem, addCodeArg, _CodeOrName} from \"./code\"\nimport {Scope, varKinds} from \"./scope\"\n\nexport {_, str, strConcat, nil, getProperty, stringify, regexpCode, Name, Code} from \"./code\"\nexport {Scope, ScopeStore, ValueScope, ValueScopeName, ScopeValueSets, varKinds} from \"./scope\"\n\n// type for expressions that can be safely inserted in code without quotes\nexport type SafeExpr = Code | number | boolean | null\n\n// type that is either Code of function that adds code to CodeGen instance using its methods\nexport type Block = Code | (() => void)\n\nexport const operators = {\n GT: new _Code(\">\"),\n GTE: new _Code(\">=\"),\n LT: new _Code(\"<\"),\n LTE: new _Code(\"<=\"),\n EQ: new _Code(\"===\"),\n NEQ: new _Code(\"!==\"),\n NOT: new _Code(\"!\"),\n OR: new _Code(\"||\"),\n AND: new _Code(\"&&\"),\n ADD: new _Code(\"+\"),\n}\n\nabstract class Node {\n abstract readonly names: UsedNames\n\n optimizeNodes(): this | ChildNode | ChildNode[] | undefined {\n return this\n }\n\n optimizeNames(_names: UsedNames, _constants: Constants): this | undefined {\n return this\n }\n\n // get count(): number {\n // return 1\n // }\n}\n\nclass Def extends Node {\n constructor(\n private readonly varKind: Name,\n private readonly name: Name,\n private rhs?: SafeExpr\n ) {\n super()\n }\n\n render({es5, _n}: CGOptions): string {\n const varKind = es5 ? varKinds.var : this.varKind\n const rhs = this.rhs === undefined ? \"\" : ` = ${this.rhs}`\n return `${varKind} ${this.name}${rhs};` + _n\n }\n\n optimizeNames(names: UsedNames, constants: Constants): this | undefined {\n if (!names[this.name.str]) return\n if (this.rhs) this.rhs = optimizeExpr(this.rhs, names, constants)\n return this\n }\n\n get names(): UsedNames {\n return this.rhs instanceof _CodeOrName ? this.rhs.names : {}\n }\n}\n\nclass Assign extends Node {\n constructor(\n readonly lhs: Code,\n public rhs: SafeExpr,\n private readonly sideEffects?: boolean\n ) {\n super()\n }\n\n render({_n}: CGOptions): string {\n return `${this.lhs} = ${this.rhs};` + _n\n }\n\n optimizeNames(names: UsedNames, constants: Constants): this | undefined {\n if (this.lhs instanceof Name && !names[this.lhs.str] && !this.sideEffects) return\n this.rhs = optimizeExpr(this.rhs, names, constants)\n return this\n }\n\n get names(): UsedNames {\n const names = this.lhs instanceof Name ? {} : {...this.lhs.names}\n return addExprNames(names, this.rhs)\n }\n}\n\nclass AssignOp extends Assign {\n constructor(\n lhs: Code,\n private readonly op: Code,\n rhs: SafeExpr,\n sideEffects?: boolean\n ) {\n super(lhs, rhs, sideEffects)\n }\n\n render({_n}: CGOptions): string {\n return `${this.lhs} ${this.op}= ${this.rhs};` + _n\n }\n}\n\nclass Label extends Node {\n readonly names: UsedNames = {}\n constructor(readonly label: Name) {\n super()\n }\n\n render({_n}: CGOptions): string {\n return `${this.label}:` + _n\n }\n}\n\nclass Break extends Node {\n readonly names: UsedNames = {}\n constructor(readonly label?: Code) {\n super()\n }\n\n render({_n}: CGOptions): string {\n const label = this.label ? ` ${this.label}` : \"\"\n return `break${label};` + _n\n }\n}\n\nclass Throw extends Node {\n constructor(readonly error: Code) {\n super()\n }\n\n render({_n}: CGOptions): string {\n return `throw ${this.error};` + _n\n }\n\n get names(): UsedNames {\n return this.error.names\n }\n}\n\nclass AnyCode extends Node {\n constructor(private code: SafeExpr) {\n super()\n }\n\n render({_n}: CGOptions): string {\n return `${this.code};` + _n\n }\n\n optimizeNodes(): this | undefined {\n return `${this.code}` ? this : undefined\n }\n\n optimizeNames(names: UsedNames, constants: Constants): this {\n this.code = optimizeExpr(this.code, names, constants)\n return this\n }\n\n get names(): UsedNames {\n return this.code instanceof _CodeOrName ? this.code.names : {}\n }\n}\n\nabstract class ParentNode extends Node {\n constructor(readonly nodes: ChildNode[] = []) {\n super()\n }\n\n render(opts: CGOptions): string {\n return this.nodes.reduce((code, n) => code + n.render(opts), \"\")\n }\n\n optimizeNodes(): this | ChildNode | ChildNode[] | undefined {\n const {nodes} = this\n let i = nodes.length\n while (i--) {\n const n = nodes[i].optimizeNodes()\n if (Array.isArray(n)) nodes.splice(i, 1, ...n)\n else if (n) nodes[i] = n\n else nodes.splice(i, 1)\n }\n return nodes.length > 0 ? this : undefined\n }\n\n optimizeNames(names: UsedNames, constants: Constants): this | undefined {\n const {nodes} = this\n let i = nodes.length\n while (i--) {\n // iterating backwards improves 1-pass optimization\n const n = nodes[i]\n if (n.optimizeNames(names, constants)) continue\n subtractNames(names, n.names)\n nodes.splice(i, 1)\n }\n return nodes.length > 0 ? this : undefined\n }\n\n get names(): UsedNames {\n return this.nodes.reduce((names: UsedNames, n) => addNames(names, n.names), {})\n }\n\n // get count(): number {\n // return this.nodes.reduce((c, n) => c + n.count, 1)\n // }\n}\n\nabstract class BlockNode extends ParentNode {\n render(opts: CGOptions): string {\n return \"{\" + opts._n + super.render(opts) + \"}\" + opts._n\n }\n}\n\nclass Root extends ParentNode {}\n\nclass Else extends BlockNode {\n static readonly kind = \"else\"\n}\n\nclass If extends BlockNode {\n static readonly kind = \"if\"\n else?: If | Else\n constructor(\n private condition: Code | boolean,\n nodes?: ChildNode[]\n ) {\n super(nodes)\n }\n\n render(opts: CGOptions): string {\n let code = `if(${this.condition})` + super.render(opts)\n if (this.else) code += \"else \" + this.else.render(opts)\n return code\n }\n\n optimizeNodes(): If | ChildNode[] | undefined {\n super.optimizeNodes()\n const cond = this.condition\n if (cond === true) return this.nodes // else is ignored here\n let e = this.else\n if (e) {\n const ns = e.optimizeNodes()\n e = this.else = Array.isArray(ns) ? new Else(ns) : (ns as Else | undefined)\n }\n if (e) {\n if (cond === false) return e instanceof If ? e : e.nodes\n if (this.nodes.length) return this\n return new If(not(cond), e instanceof If ? [e] : e.nodes)\n }\n if (cond === false || !this.nodes.length) return undefined\n return this\n }\n\n optimizeNames(names: UsedNames, constants: Constants): this | undefined {\n this.else = this.else?.optimizeNames(names, constants)\n if (!(super.optimizeNames(names, constants) || this.else)) return\n this.condition = optimizeExpr(this.condition, names, constants)\n return this\n }\n\n get names(): UsedNames {\n const names = super.names\n addExprNames(names, this.condition)\n if (this.else) addNames(names, this.else.names)\n return names\n }\n\n // get count(): number {\n // return super.count + (this.else?.count || 0)\n // }\n}\n\nabstract class For extends BlockNode {\n static readonly kind = \"for\"\n}\n\nclass ForLoop extends For {\n constructor(private iteration: Code) {\n super()\n }\n\n render(opts: CGOptions): string {\n return `for(${this.iteration})` + super.render(opts)\n }\n\n optimizeNames(names: UsedNames, constants: Constants): this | undefined {\n if (!super.optimizeNames(names, constants)) return\n this.iteration = optimizeExpr(this.iteration, names, constants)\n return this\n }\n\n get names(): UsedNames {\n return addNames(super.names, this.iteration.names)\n }\n}\n\nclass ForRange extends For {\n constructor(\n private readonly varKind: Name,\n private readonly name: Name,\n private readonly from: SafeExpr,\n private readonly to: SafeExpr\n ) {\n super()\n }\n\n render(opts: CGOptions): string {\n const varKind = opts.es5 ? varKinds.var : this.varKind\n const {name, from, to} = this\n return `for(${varKind} ${name}=${from}; ${name}<${to}; ${name}++)` + super.render(opts)\n }\n\n get names(): UsedNames {\n const names = addExprNames(super.names, this.from)\n return addExprNames(names, this.to)\n }\n}\n\nclass ForIter extends For {\n constructor(\n private readonly loop: \"of\" | \"in\",\n private readonly varKind: Name,\n private readonly name: Name,\n private iterable: Code\n ) {\n super()\n }\n\n render(opts: CGOptions): string {\n return `for(${this.varKind} ${this.name} ${this.loop} ${this.iterable})` + super.render(opts)\n }\n\n optimizeNames(names: UsedNames, constants: Constants): this | undefined {\n if (!super.optimizeNames(names, constants)) return\n this.iterable = optimizeExpr(this.iterable, names, constants)\n return this\n }\n\n get names(): UsedNames {\n return addNames(super.names, this.iterable.names)\n }\n}\n\nclass Func extends BlockNode {\n static readonly kind = \"func\"\n constructor(\n public name: Name,\n public args: Code,\n public async?: boolean\n ) {\n super()\n }\n\n render(opts: CGOptions): string {\n const _async = this.async ? \"async \" : \"\"\n return `${_async}function ${this.name}(${this.args})` + super.render(opts)\n }\n}\n\nclass Return extends ParentNode {\n static readonly kind = \"return\"\n\n render(opts: CGOptions): string {\n return \"return \" + super.render(opts)\n }\n}\n\nclass Try extends BlockNode {\n catch?: Catch\n finally?: Finally\n\n render(opts: CGOptions): string {\n let code = \"try\" + super.render(opts)\n if (this.catch) code += this.catch.render(opts)\n if (this.finally) code += this.finally.render(opts)\n return code\n }\n\n optimizeNodes(): this {\n super.optimizeNodes()\n this.catch?.optimizeNodes() as Catch | undefined\n this.finally?.optimizeNodes() as Finally | undefined\n return this\n }\n\n optimizeNames(names: UsedNames, constants: Constants): this {\n super.optimizeNames(names, constants)\n this.catch?.optimizeNames(names, constants)\n this.finally?.optimizeNames(names, constants)\n return this\n }\n\n get names(): UsedNames {\n const names = super.names\n if (this.catch) addNames(names, this.catch.names)\n if (this.finally) addNames(names, this.finally.names)\n return names\n }\n\n // get count(): number {\n // return super.count + (this.catch?.count || 0) + (this.finally?.count || 0)\n // }\n}\n\nclass Catch extends BlockNode {\n static readonly kind = \"catch\"\n constructor(readonly error: Name) {\n super()\n }\n\n render(opts: CGOptions): string {\n return `catch(${this.error})` + super.render(opts)\n }\n}\n\nclass Finally extends BlockNode {\n static readonly kind = \"finally\"\n render(opts: CGOptions): string {\n return \"finally\" + super.render(opts)\n }\n}\n\ntype StartBlockNode = If | For | Func | Return | Try\n\ntype LeafNode = Def | Assign | Label | Break | Throw | AnyCode\n\ntype ChildNode = StartBlockNode | LeafNode\n\ntype EndBlockNodeType =\n | typeof If\n | typeof Else\n | typeof For\n | typeof Func\n | typeof Return\n | typeof Catch\n | typeof Finally\n\ntype Constants = Record<string, SafeExpr | undefined>\n\nexport interface CodeGenOptions {\n es5?: boolean\n lines?: boolean\n ownProperties?: boolean\n}\n\ninterface CGOptions extends CodeGenOptions {\n _n: \"\\n\" | \"\"\n}\n\nexport class CodeGen {\n readonly _scope: Scope\n readonly _extScope: ValueScope\n readonly _values: ScopeValueSets = {}\n private readonly _nodes: ParentNode[]\n private readonly _blockStarts: number[] = []\n private readonly _constants: Constants = {}\n private readonly opts: CGOptions\n\n constructor(extScope: ValueScope, opts: CodeGenOptions = {}) {\n this.opts = {...opts, _n: opts.lines ? \"\\n\" : \"\"}\n this._extScope = extScope\n this._scope = new Scope({parent: extScope})\n this._nodes = [new Root()]\n }\n\n toString(): string {\n return this._root.render(this.opts)\n }\n\n // returns unique name in the internal scope\n name(prefix: string): Name {\n return this._scope.name(prefix)\n }\n\n // reserves unique name in the external scope\n scopeName(prefix: string): ValueScopeName {\n return this._extScope.name(prefix)\n }\n\n // reserves unique name in the external scope and assigns value to it\n scopeValue(prefixOrName: ValueScopeName | string, value: NameValue): Name {\n const name = this._extScope.value(prefixOrName, value)\n const vs = this._values[name.prefix] || (this._values[name.prefix] = new Set())\n vs.add(name)\n return name\n }\n\n getScopeValue(prefix: string, keyOrRef: unknown): ValueScopeName | undefined {\n return this._extScope.getValue(prefix, keyOrRef)\n }\n\n // return code that assigns values in the external scope to the names that are used internally\n // (same names that were returned by gen.scopeName or gen.scopeValue)\n scopeRefs(scopeName: Name): Code {\n return this._extScope.scopeRefs(scopeName, this._values)\n }\n\n scopeCode(): Code {\n return this._extScope.scopeCode(this._values)\n }\n\n private _def(\n varKind: Name,\n nameOrPrefix: Name | string,\n rhs?: SafeExpr,\n constant?: boolean\n ): Name {\n const name = this._scope.toName(nameOrPrefix)\n if (rhs !== undefined && constant) this._constants[name.str] = rhs\n this._leafNode(new Def(varKind, name, rhs))\n return name\n }\n\n // `const` declaration (`var` in es5 mode)\n const(nameOrPrefix: Name | string, rhs: SafeExpr, _constant?: boolean): Name {\n return this._def(varKinds.const, nameOrPrefix, rhs, _constant)\n }\n\n // `let` declaration with optional assignment (`var` in es5 mode)\n let(nameOrPrefix: Name | string, rhs?: SafeExpr, _constant?: boolean): Name {\n return this._def(varKinds.let, nameOrPrefix, rhs, _constant)\n }\n\n // `var` declaration with optional assignment\n var(nameOrPrefix: Name | string, rhs?: SafeExpr, _constant?: boolean): Name {\n return this._def(varKinds.var, nameOrPrefix, rhs, _constant)\n }\n\n // assignment code\n assign(lhs: Code, rhs: SafeExpr, sideEffects?: boolean): CodeGen {\n return this._leafNode(new Assign(lhs, rhs, sideEffects))\n }\n\n // `+=` code\n add(lhs: Code, rhs: SafeExpr): CodeGen {\n return this._leafNode(new AssignOp(lhs, operators.ADD, rhs))\n }\n\n // appends passed SafeExpr to code or executes Block\n code(c: Block | SafeExpr): CodeGen {\n if (typeof c == \"function\") c()\n else if (c !== nil) this._leafNode(new AnyCode(c))\n return this\n }\n\n // returns code for object literal for the passed argument list of key-value pairs\n object(...keyValues: [Name | string, SafeExpr | string][]): _Code {\n const code: CodeItem[] = [\"{\"]\n for (const [key, value] of keyValues) {\n if (code.length > 1) code.push(\",\")\n code.push(key)\n if (key !== value || this.opts.es5) {\n code.push(\":\")\n addCodeArg(code, value)\n }\n }\n code.push(\"}\")\n return new _Code(code)\n }\n\n // `if` clause (or statement if `thenBody` and, optionally, `elseBody` are passed)\n if(condition: Code | boolean, thenBody?: Block, elseBody?: Block): CodeGen {\n this._blockNode(new If(condition))\n\n if (thenBody && elseBody) {\n this.code(thenBody).else().code(elseBody).endIf()\n } else if (thenBody) {\n this.code(thenBody).endIf()\n } else if (elseBody) {\n throw new Error('CodeGen: \"else\" body without \"then\" body')\n }\n return this\n }\n\n // `else if` clause - invalid without `if` or after `else` clauses\n elseIf(condition: Code | boolean): CodeGen {\n return this._elseNode(new If(condition))\n }\n\n // `else` clause - only valid after `if` or `else if` clauses\n else(): CodeGen {\n return this._elseNode(new Else())\n }\n\n // end `if` statement (needed if gen.if was used only with condition)\n endIf(): CodeGen {\n return this._endBlockNode(If, Else)\n }\n\n private _for(node: For, forBody?: Block): CodeGen {\n this._blockNode(node)\n if (forBody) this.code(forBody).endFor()\n return this\n }\n\n // a generic `for` clause (or statement if `forBody` is passed)\n for(iteration: Code, forBody?: Block): CodeGen {\n return this._for(new ForLoop(iteration), forBody)\n }\n\n // `for` statement for a range of values\n forRange(\n nameOrPrefix: Name | string,\n from: SafeExpr,\n to: SafeExpr,\n forBody: (index: Name) => void,\n varKind: Code = this.opts.es5 ? varKinds.var : varKinds.let\n ): CodeGen {\n const name = this._scope.toName(nameOrPrefix)\n return this._for(new ForRange(varKind, name, from, to), () => forBody(name))\n }\n\n // `for-of` statement (in es5 mode replace with a normal for loop)\n forOf(\n nameOrPrefix: Name | string,\n iterable: Code,\n forBody: (item: Name) => void,\n varKind: Code = varKinds.const\n ): CodeGen {\n const name = this._scope.toName(nameOrPrefix)\n if (this.opts.es5) {\n const arr = iterable instanceof Name ? iterable : this.var(\"_arr\", iterable)\n return this.forRange(\"_i\", 0, _`${arr}.length`, (i) => {\n this.var(name, _`${arr}[${i}]`)\n forBody(name)\n })\n }\n return this._for(new ForIter(\"of\", varKind, name, iterable), () => forBody(name))\n }\n\n // `for-in` statement.\n // With option `ownProperties` replaced with a `for-of` loop for object keys\n forIn(\n nameOrPrefix: Name | string,\n obj: Code,\n forBody: (item: Name) => void,\n varKind: Code = this.opts.es5 ? varKinds.var : varKinds.const\n ): CodeGen {\n if (this.opts.ownProperties) {\n return this.forOf(nameOrPrefix, _`Object.keys(${obj})`, forBody)\n }\n const name = this._scope.toName(nameOrPrefix)\n return this._for(new ForIter(\"in\", varKind, name, obj), () => forBody(name))\n }\n\n // end `for` loop\n endFor(): CodeGen {\n return this._endBlockNode(For)\n }\n\n // `label` statement\n label(label: Name): CodeGen {\n return this._leafNode(new Label(label))\n }\n\n // `break` statement\n break(label?: Code): CodeGen {\n return this._leafNode(new Break(label))\n }\n\n // `return` statement\n return(value: Block | SafeExpr): CodeGen {\n const node = new Return()\n this._blockNode(node)\n this.code(value)\n if (node.nodes.length !== 1) throw new Error('CodeGen: \"return\" should have one node')\n return this._endBlockNode(Return)\n }\n\n // `try` statement\n try(tryBody: Block, catchCode?: (e: Name) => void, finallyCode?: Block): CodeGen {\n if (!catchCode && !finallyCode) throw new Error('CodeGen: \"try\" without \"catch\" and \"finally\"')\n const node = new Try()\n this._blockNode(node)\n this.code(tryBody)\n if (catchCode) {\n const error = this.name(\"e\")\n this._currNode = node.catch = new Catch(error)\n catchCode(error)\n }\n if (finallyCode) {\n this._currNode = node.finally = new Finally()\n this.code(finallyCode)\n }\n return this._endBlockNode(Catch, Finally)\n }\n\n // `throw` statement\n throw(error: Code): CodeGen {\n return this._leafNode(new Throw(error))\n }\n\n // start self-balancing block\n block(body?: Block, nodeCount?: number): CodeGen {\n this._blockStarts.push(this._nodes.length)\n if (body) this.code(body).endBlock(nodeCount)\n return this\n }\n\n // end the current self-balancing block\n endBlock(nodeCount?: number): CodeGen {\n const len = this._blockStarts.pop()\n if (len === undefined) throw new Error(\"CodeGen: not in self-balancing block\")\n const toClose = this._nodes.length - len\n if (toClose < 0 || (nodeCount !== undefined && toClose !== nodeCount)) {\n throw new Error(`CodeGen: wrong number of nodes: ${toClose} vs ${nodeCount} expected`)\n }\n this._nodes.length = len\n return this\n }\n\n // `function` heading (or definition if funcBody is passed)\n func(name: Name, args: Code = nil, async?: boolean, funcBody?: Block): CodeGen {\n this._blockNode(new Func(name, args, async))\n if (funcBody) this.code(funcBody).endFunc()\n return this\n }\n\n // end function definition\n endFunc(): CodeGen {\n return this._endBlockNode(Func)\n }\n\n optimize(n = 1): void {\n while (n-- > 0) {\n this._root.optimizeNodes()\n this._root.optimizeNames(this._root.names, this._constants)\n }\n }\n\n private _leafNode(node: LeafNode): CodeGen {\n this._currNode.nodes.push(node)\n return this\n }\n\n private _blockNode(node: StartBlockNode): void {\n this._currNode.nodes.push(node)\n this._nodes.push(node)\n }\n\n private _endBlockNode(N1: EndBlockNodeType, N2?: EndBlockNodeType): CodeGen {\n const n = this._currNode\n if (n instanceof N1 || (N2 && n instanceof N2)) {\n this._nodes.pop()\n return this\n }\n throw new Error(`CodeGen: not in block \"${N2 ? `${N1.kind}/${N2.kind}` : N1.kind}\"`)\n }\n\n private _elseNode(node: If | Else): CodeGen {\n const n = this._currNode\n if (!(n instanceof If)) {\n throw new Error('CodeGen: \"else\" without \"if\"')\n }\n this._currNode = n.else = node\n return this\n }\n\n private get _root(): Root {\n return this._nodes[0] as Root\n }\n\n private get _currNode(): ParentNode {\n const ns = this._nodes\n return ns[ns.length - 1]\n }\n\n private set _currNode(node: ParentNode) {\n const ns = this._nodes\n ns[ns.length - 1] = node\n }\n\n // get nodeCount(): number {\n // return this._root.count\n // }\n}\n\nfunction addNames(names: UsedNames, from: UsedNames): UsedNames {\n for (const n in from) names[n] = (names[n] || 0) + (from[n] || 0)\n return names\n}\n\nfunction addExprNames(names: UsedNames, from: SafeExpr): UsedNames {\n return from instanceof _CodeOrName ? addNames(names, from.names) : names\n}\n\nfunction optimizeExpr<T extends SafeExpr | Code>(expr: T, names: UsedNames, constants: Constants): T\nfunction optimizeExpr(expr: SafeExpr, names: UsedNames, constants: Constants): SafeExpr {\n if (expr instanceof Name) return replaceName(expr)\n if (!canOptimize(expr)) return expr\n return new _Code(\n expr._items.reduce((items: CodeItem[], c: SafeExpr | string) => {\n if (c instanceof Name) c = replaceName(c)\n if (c instanceof _Code) items.push(...c._items)\n else items.push(c)\n return items\n }, [])\n )\n\n function replaceName(n: Name): SafeExpr {\n const c = constants[n.str]\n if (c === undefined || names[n.str] !== 1) return n\n delete names[n.str]\n return c\n }\n\n function canOptimize(e: SafeExpr): e is _Code {\n return (\n e instanceof _Code &&\n e._items.some(\n (c) => c instanceof Name && names[c.str] === 1 && constants[c.str] !== undefined\n )\n )\n }\n}\n\nfunction subtractNames(names: UsedNames, from: UsedNames): void {\n for (const n in from) names[n] = (names[n] || 0) - (from[n] || 0)\n}\n\nexport function not<T extends Code | SafeExpr>(x: T): T\nexport function not(x: Code | SafeExpr): Code | SafeExpr {\n return typeof x == \"boolean\" || typeof x == \"number\" || x === null ? !x : _`!${par(x)}`\n}\n\nconst andCode = mappend(operators.AND)\n\n// boolean AND (&&) expression with the passed arguments\nexport function and(...args: Code[]): Code {\n return args.reduce(andCode)\n}\n\nconst orCode = mappend(operators.OR)\n\n// boolean OR (||) expression with the passed arguments\nexport function or(...args: Code[]): Code {\n return args.reduce(orCode)\n}\n\ntype MAppend = (x: Code, y: Code) => Code\n\nfunction mappend(op: Code): MAppend {\n return (x, y) => (x === nil ? y : y === nil ? x : _`${par(x)} ${op} ${par(y)}`)\n}\n\nfunction par(x: Code): Code {\n return x instanceof Name ? x : _`(${x})`\n}\n","import type {AnySchema, EvaluatedProperties, EvaluatedItems} from \"../types\"\nimport type {SchemaCxt, SchemaObjCxt} from \".\"\nimport {_, getProperty, Code, Name, CodeGen} from \"./codegen\"\nimport {_Code} from \"./codegen/code\"\nimport type {Rule, ValidationRules} from \"./rules\"\n\n// TODO refactor to use Set\nexport function toHash<T extends string = string>(arr: T[]): {[K in T]?: true} {\n const hash: {[K in T]?: true} = {}\n for (const item of arr) hash[item] = true\n return hash\n}\n\nexport function alwaysValidSchema(it: SchemaCxt, schema: AnySchema): boolean | void {\n if (typeof schema == \"boolean\") return schema\n if (Object.keys(schema).length === 0) return true\n checkUnknownRules(it, schema)\n return !schemaHasRules(schema, it.self.RULES.all)\n}\n\nexport function checkUnknownRules(it: SchemaCxt, schema: AnySchema = it.schema): void {\n const {opts, self} = it\n if (!opts.strictSchema) return\n if (typeof schema === \"boolean\") return\n const rules = self.RULES.keywords\n for (const key in schema) {\n if (!rules[key]) checkStrictMode(it, `unknown keyword: \"${key}\"`)\n }\n}\n\nexport function schemaHasRules(\n schema: AnySchema,\n rules: {[Key in string]?: boolean | Rule}\n): boolean {\n if (typeof schema == \"boolean\") return !schema\n for (const key in schema) if (rules[key]) return true\n return false\n}\n\nexport function schemaHasRulesButRef(schema: AnySchema, RULES: ValidationRules): boolean {\n if (typeof schema == \"boolean\") return !schema\n for (const key in schema) if (key !== \"$ref\" && RULES.all[key]) return true\n return false\n}\n\nexport function schemaRefOrVal(\n {topSchemaRef, schemaPath}: SchemaObjCxt,\n schema: unknown,\n keyword: string,\n $data?: string | false\n): Code | number | boolean {\n if (!$data) {\n if (typeof schema == \"number\" || typeof schema == \"boolean\") return schema\n if (typeof schema == \"string\") return _`${schema}`\n }\n return _`${topSchemaRef}${schemaPath}${getProperty(keyword)}`\n}\n\nexport function unescapeFragment(str: string): string {\n return unescapeJsonPointer(decodeURIComponent(str))\n}\n\nexport function escapeFragment(str: string | number): string {\n return encodeURIComponent(escapeJsonPointer(str))\n}\n\nexport function escapeJsonPointer(str: string | number): string {\n if (typeof str == \"number\") return `${str}`\n return str.replace(/~/g, \"~0\").replace(/\\//g, \"~1\")\n}\n\nexport function unescapeJsonPointer(str: string): string {\n return str.replace(/~1/g, \"/\").replace(/~0/g, \"~\")\n}\n\nexport function eachItem<T>(xs: T | T[], f: (x: T) => void): void {\n if (Array.isArray(xs)) {\n for (const x of xs) f(x)\n } else {\n f(xs)\n }\n}\n\ntype SomeEvaluated = EvaluatedProperties | EvaluatedItems\n\ntype MergeEvaluatedFunc<T extends SomeEvaluated> = (\n gen: CodeGen,\n from: Name | T,\n to: Name | Exclude<T, true> | undefined,\n toName?: typeof Name\n) => Name | T\n\ninterface MakeMergeFuncArgs<T extends SomeEvaluated> {\n mergeNames: (gen: CodeGen, from: Name, to: Name) => void\n mergeToName: (gen: CodeGen, from: T, to: Name) => void\n mergeValues: (from: T, to: Exclude<T, true>) => T\n resultToName: (gen: CodeGen, res?: T) => Name\n}\n\nfunction makeMergeEvaluated<T extends SomeEvaluated>({\n mergeNames,\n mergeToName,\n mergeValues,\n resultToName,\n}: MakeMergeFuncArgs<T>): MergeEvaluatedFunc<T> {\n return (gen, from, to, toName) => {\n const res =\n to === undefined\n ? from\n : to instanceof Name\n ? (from instanceof Name ? mergeNames(gen, from, to) : mergeToName(gen, from, to), to)\n : from instanceof Name\n ? (mergeToName(gen, to, from), from)\n : mergeValues(from, to)\n return toName === Name && !(res instanceof Name) ? resultToName(gen, res) : res\n }\n}\n\ninterface MergeEvaluated {\n props: MergeEvaluatedFunc<EvaluatedProperties>\n items: MergeEvaluatedFunc<EvaluatedItems>\n}\n\nexport const mergeEvaluated: MergeEvaluated = {\n props: makeMergeEvaluated({\n mergeNames: (gen, from, to) =>\n gen.if(_`${to} !== true && ${from} !== undefined`, () => {\n gen.if(\n _`${from} === true`,\n () => gen.assign(to, true),\n () => gen.assign(to, _`${to} || {}`).code(_`Object.assign(${to}, ${from})`)\n )\n }),\n mergeToName: (gen, from, to) =>\n gen.if(_`${to} !== true`, () => {\n if (from === true) {\n gen.assign(to, true)\n } else {\n gen.assign(to, _`${to} || {}`)\n setEvaluated(gen, to, from)\n }\n }),\n mergeValues: (from, to) => (from === true ? true : {...from, ...to}),\n resultToName: evaluatedPropsToName,\n }),\n items: makeMergeEvaluated({\n mergeNames: (gen, from, to) =>\n gen.if(_`${to} !== true && ${from} !== undefined`, () =>\n gen.assign(to, _`${from} === true ? true : ${to} > ${from} ? ${to} : ${from}`)\n ),\n mergeToName: (gen, from, to) =>\n gen.if(_`${to} !== true`, () =>\n gen.assign(to, from === true ? true : _`${to} > ${from} ? ${to} : ${from}`)\n ),\n mergeValues: (from, to) => (from === true ? true : Math.max(from, to)),\n resultToName: (gen, items) => gen.var(\"items\", items),\n }),\n}\n\nexport function evaluatedPropsToName(gen: CodeGen, ps?: EvaluatedProperties): Name {\n if (ps === true) return gen.var(\"props\", true)\n const props = gen.var(\"props\", _`{}`)\n if (ps !== undefined) setEvaluated(gen, props, ps)\n return props\n}\n\nexport function setEvaluated(gen: CodeGen, props: Name, ps: {[K in string]?: true}): void {\n Object.keys(ps).forEach((p) => gen.assign(_`${props}${getProperty(p)}`, true))\n}\n\nconst snippets: {[S in string]?: _Code} = {}\n\nexport function useFunc(gen: CodeGen, f: {code: string}): Name {\n return gen.scopeValue(\"func\", {\n ref: f,\n code: snippets[f.code] || (snippets[f.code] = new _Code(f.code)),\n })\n}\n\nexport enum Type {\n Num,\n Str,\n}\n\nexport function getErrorPath(\n dataProp: Name | string | number,\n dataPropType?: Type,\n jsPropertySyntax?: boolean\n): Code | string {\n // let path\n if (dataProp instanceof Name) {\n const isNumber = dataPropType === Type.Num\n return jsPropertySyntax\n ? isNumber\n ? _`\"[\" + ${dataProp} + \"]\"`\n : _`\"['\" + ${dataProp} + \"']\"`\n : isNumber\n ? _`\"/\" + ${dataProp}`\n : _`\"/\" + ${dataProp}.replace(/~/g, \"~0\").replace(/\\\\//g, \"~1\")` // TODO maybe use global escapePointer\n }\n return jsPropertySyntax ? getProperty(dataProp).toString() : \"/\" + escapeJsonPointer(dataProp)\n}\n\nexport function checkStrictMode(\n it: SchemaCxt,\n msg: string,\n mode: boolean | \"log\" = it.opts.strictSchema\n): void {\n if (!mode) return\n msg = `strict mode: ${msg}`\n if (mode === true) throw new Error(msg)\n it.self.logger.warn(msg)\n}\n","import {Name} from \"./codegen\"\n\nconst names = {\n // validation function arguments\n data: new Name(\"data\"), // data passed to validation function\n // args passed from referencing schema\n valCxt: new Name(\"valCxt\"), // validation/data context - should not be used directly, it is destructured to the names below\n instancePath: new Name(\"instancePath\"),\n parentData: new Name(\"parentData\"),\n parentDataProperty: new Name(\"parentDataProperty\"),\n rootData: new Name(\"rootData\"), // root data - same as the data passed to the first/top validation function\n dynamicAnchors: new Name(\"dynamicAnchors\"), // used to support recursiveRef and dynamicRef\n // function scoped variables\n vErrors: new Name(\"vErrors\"), // null or array of validation errors\n errors: new Name(\"errors\"), // counter of validation errors\n this: new Name(\"this\"),\n // \"globals\"\n self: new Name(\"self\"),\n scope: new Name(\"scope\"),\n // JTD serialize/parse name for JSON string and position\n json: new Name(\"json\"),\n jsonPos: new Name(\"jsonPos\"),\n jsonLen: new Name(\"jsonLen\"),\n jsonPart: new Name(\"jsonPart\"),\n}\n\nexport default names\n","import type {KeywordErrorCxt, KeywordErrorDefinition} from \"../types\"\nimport type {SchemaCxt} from \"./index\"\nimport {CodeGen, _, str, strConcat, Code, Name} from \"./codegen\"\nimport {SafeExpr} from \"./codegen/code\"\nimport {getErrorPath, Type} from \"./util\"\nimport N from \"./names\"\n\nexport const keywordError: KeywordErrorDefinition = {\n message: ({keyword}) => str`must pass \"${keyword}\" keyword validation`,\n}\n\nexport const keyword$DataError: KeywordErrorDefinition = {\n message: ({keyword, schemaType}) =>\n schemaType\n ? str`\"${keyword}\" keyword must be ${schemaType} ($data)`\n : str`\"${keyword}\" keyword is invalid ($data)`,\n}\n\nexport interface ErrorPaths {\n instancePath?: Code\n schemaPath?: string\n parentSchema?: boolean\n}\n\nexport function reportError(\n cxt: KeywordErrorCxt,\n error: KeywordErrorDefinition = keywordError,\n errorPaths?: ErrorPaths,\n overrideAllErrors?: boolean\n): void {\n const {it} = cxt\n const {gen, compositeRule, allErrors} = it\n const errObj = errorObjectCode(cxt, error, errorPaths)\n if (overrideAllErrors ?? (compositeRule || allErrors)) {\n addError(gen, errObj)\n } else {\n returnErrors(it, _`[${errObj}]`)\n }\n}\n\nexport function reportExtraError(\n cxt: KeywordErrorCxt,\n error: KeywordErrorDefinition = keywordError,\n errorPaths?: ErrorPaths\n): void {\n const {it} = cxt\n const {gen, compositeRule, allErrors} = it\n const errObj = errorObjectCode(cxt, error, errorPaths)\n addError(gen, errObj)\n if (!(compositeRule || allErrors)) {\n returnErrors(it, N.vErrors)\n }\n}\n\nexport function resetErrorsCount(gen: CodeGen, errsCount: Name): void {\n gen.assign(N.errors, errsCount)\n gen.if(_`${N.vErrors} !== null`, () =>\n gen.if(\n errsCount,\n () => gen.assign(_`${N.vErrors}.length`, errsCount),\n () => gen.assign(N.vErrors, null)\n )\n )\n}\n\nexport function extendErrors({\n gen,\n keyword,\n schemaValue,\n data,\n errsCount,\n it,\n}: KeywordErrorCxt): void {\n /* istanbul ignore if */\n if (errsCount === undefined) throw new Error(\"ajv implementation error\")\n const err = gen.name(\"err\")\n gen.forRange(\"i\", errsCount, N.errors, (i) => {\n gen.const(err, _`${N.vErrors}[${i}]`)\n gen.if(_`${err}.instancePath === undefined`, () =>\n gen.assign(_`${err}.instancePath`, strConcat(N.instancePath, it.errorPath))\n )\n gen.assign(_`${err}.schemaPath`, str`${it.errSchemaPath}/${keyword}`)\n if (it.opts.verbose) {\n gen.assign(_`${err}.schema`, schemaValue)\n gen.assign(_`${err}.data`, data)\n }\n })\n}\n\nfunction addError(gen: CodeGen, errObj: Code): void {\n const err = gen.const(\"err\", errObj)\n gen.if(\n _`${N.vErrors} === null`,\n () => gen.assign(N.vErrors, _`[${err}]`),\n _`${N.vErrors}.push(${err})`\n )\n gen.code(_`${N.errors}++`)\n}\n\nfunction returnErrors(it: SchemaCxt, errs: Code): void {\n const {gen, validateName, schemaEnv} = it\n if (schemaEnv.$async) {\n gen.throw(_`new ${it.ValidationError as Name}(${errs})`)\n } else {\n gen.assign(_`${validateName}.errors`, errs)\n gen.return(false)\n }\n}\n\nconst E = {\n keyword: new Name(\"keyword\"),\n schemaPath: new Name(\"schemaPath\"), // also used in JTD errors\n params: new Name(\"params\"),\n propertyName: new Name(\"propertyName\"),\n message: new Name(\"message\"),\n schema: new Name(\"schema\"),\n parentSchema: new Name(\"parentSchema\"),\n}\n\nfunction errorObjectCode(\n cxt: KeywordErrorCxt,\n error: KeywordErrorDefinition,\n errorPaths?: ErrorPaths\n): Code {\n const {createErrors} = cxt.it\n if (createErrors === false) return _`{}`\n return errorObject(cxt, error, errorPaths)\n}\n\nfunction errorObject(\n cxt: KeywordErrorCxt,\n error: KeywordErrorDefinition,\n errorPaths: ErrorPaths = {}\n): Code {\n const {gen, it} = cxt\n const keyValues: [Name, SafeExpr | string][] = [\n errorInstancePath(it, errorPaths),\n errorSchemaPath(cxt, errorPaths),\n ]\n extraErrorProps(cxt, error, keyValues)\n return gen.object(...keyValues)\n}\n\nfunction errorInstancePath({errorPath}: SchemaCxt, {instancePath}: ErrorPaths): [Name, Code] {\n const instPath = instancePath\n ? str`${errorPath}${getErrorPath(instancePath, Type.Str)}`\n : errorPath\n return [N.instancePath, strConcat(N.instancePath, instPath)]\n}\n\nfunction errorSchemaPath(\n {keyword, it: {errSchemaPath}}: KeywordErrorCxt,\n {schemaPath, parentSchema}: ErrorPaths\n): [Name, string | Code] {\n let schPath = parentSchema ? errSchemaPath : str`${errSchemaPath}/${keyword}`\n if (schemaPath) {\n schPath = str`${schPath}${getErrorPath(schemaPath, Type.Str)}`\n }\n return [E.schemaPath, schPath]\n}\n\nfunction extraErrorProps(\n cxt: KeywordErrorCxt,\n {params, message}: KeywordErrorDefinition,\n keyValues: [Name, SafeExpr | string][]\n): void {\n const {keyword, data, schemaValue, it} = cxt\n const {opts, propertyName, topSchemaRef, schemaPath} = it\n keyValues.push(\n [E.keyword, keyword],\n [E.params, typeof params == \"function\" ? params(cxt) : params || _`{}`]\n )\n if (opts.messages) {\n keyValues.push([E.message, typeof message == \"function\" ? message(cxt) : message])\n }\n if (opts.verbose) {\n keyValues.push(\n [E.schema, schemaValue],\n [E.parentSchema, _`${topSchemaRef}${schemaPath}`],\n [N.data, data]\n )\n }\n if (propertyName) keyValues.push([E.propertyName, propertyName])\n}\n","import type {KeywordErrorDefinition, KeywordErrorCxt} from \"../../types\"\nimport type {SchemaCxt} from \"..\"\nimport {reportError} from \"../errors\"\nimport {_, Name} from \"../codegen\"\nimport N from \"../names\"\n\nconst boolError: KeywordErrorDefinition = {\n message: \"boolean schema is false\",\n}\n\nexport function topBoolOrEmptySchema(it: SchemaCxt): void {\n const {gen, schema, validateName} = it\n if (schema === false) {\n falseSchemaError(it, false)\n } else if (typeof schema == \"object\" && schema.$async === true) {\n gen.return(N.data)\n } else {\n gen.assign(_`${validateName}.errors`, null)\n gen.return(true)\n }\n}\n\nexport function boolOrEmptySchema(it: SchemaCxt, valid: Name): void {\n const {gen, schema} = it\n if (schema === false) {\n gen.var(valid, false) // TODO var\n falseSchemaError(it)\n } else {\n gen.var(valid, true) // TODO var\n }\n}\n\nfunction falseSchemaError(it: SchemaCxt, overrideAllErrors?: boolean): void {\n const {gen, data} = it\n // TODO maybe some other interface should be used for non-keyword validation errors...\n const cxt: KeywordErrorCxt = {\n gen,\n keyword: \"false schema\",\n data,\n schema: false,\n schemaCode: false,\n schemaValue: false,\n params: {},\n it,\n }\n reportError(cxt, boolError, undefined, overrideAllErrors)\n}\n","import type {AddedKeywordDefinition} from \"../types\"\n\nconst _jsonTypes = [\"string\", \"number\", \"integer\", \"boolean\", \"null\", \"object\", \"array\"] as const\n\nexport type JSONType = (typeof _jsonTypes)[number]\n\nconst jsonTypes: Set<string> = new Set(_jsonTypes)\n\nexport function isJSONType(x: unknown): x is JSONType {\n return typeof x == \"string\" && jsonTypes.has(x)\n}\n\ntype ValidationTypes = {\n [K in JSONType]: boolean | RuleGroup | undefined\n}\n\nexport interface ValidationRules {\n rules: RuleGroup[]\n post: RuleGroup\n all: {[Key in string]?: boolean | Rule} // rules that have to be validated\n keywords: {[Key in string]?: boolean} // all known keywords (superset of \"all\")\n types: ValidationTypes\n}\n\nexport interface RuleGroup {\n type?: JSONType\n rules: Rule[]\n}\n\n// This interface wraps KeywordDefinition because definition can have multiple keywords\nexport interface Rule {\n keyword: string\n definition: AddedKeywordDefinition\n}\n\nexport function getRules(): ValidationRules {\n const groups: Record<\"number\" | \"string\" | \"array\" | \"object\", RuleGroup> = {\n number: {type: \"number\", rules: []},\n string: {type: \"string\", rules: []},\n array: {type: \"array\", rules: []},\n object: {type: \"object\", rules: []},\n }\n return {\n types: {...groups, integer: true, boolean: true, null: true},\n rules: [{rules: []}, groups.number, groups.string, groups.array, groups.object],\n post: {rules: []},\n all: {},\n keywords: {},\n }\n}\n","import type {AnySchemaObject} from \"../../types\"\nimport type {SchemaObjCxt} from \"..\"\nimport type {JSONType, RuleGroup, Rule} from \"../rules\"\n\nexport function schemaHasRulesForType(\n {schema, self}: SchemaObjCxt,\n type: JSONType\n): boolean | undefined {\n const group = self.RULES.types[type]\n return group && group !== true && shouldUseGroup(schema, group)\n}\n\nexport function shouldUseGroup(schema: AnySchemaObject, group: RuleGroup): boolean {\n return group.rules.some((rule) => shouldUseRule(schema, rule))\n}\n\nexport function shouldUseRule(schema: AnySchemaObject, rule: Rule): boolean | undefined {\n return (\n schema[rule.keyword] !== undefined ||\n rule.definition.implements?.some((kwd) => schema[kwd] !== undefined)\n )\n}\n","import type {\n KeywordErrorDefinition,\n KeywordErrorCxt,\n ErrorObject,\n AnySchemaObject,\n} from \"../../types\"\nimport type {SchemaObjCxt} from \"..\"\nimport {isJSONType, JSONType} from \"../rules\"\nimport {schemaHasRulesForType} from \"./applicability\"\nimport {reportError} from \"../errors\"\nimport {_, nil, and, not, operators, Code, Name} from \"../codegen\"\nimport {toHash, schemaRefOrVal} from \"../util\"\n\nexport enum DataType {\n Correct,\n Wrong,\n}\n\nexport function getSchemaTypes(schema: AnySchemaObject): JSONType[] {\n const types = getJSONTypes(schema.type)\n const hasNull = types.includes(\"null\")\n if (hasNull) {\n if (schema.nullable === false) throw new Error(\"type: null contradicts nullable: false\")\n } else {\n if (!types.length && schema.nullable !== undefined) {\n throw new Error('\"nullable\" cannot be used without \"type\"')\n }\n if (schema.nullable === true) types.push(\"null\")\n }\n return types\n}\n\n// eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\nexport function getJSONTypes(ts: unknown | unknown[]): JSONType[] {\n const types: unknown[] = Array.isArray(ts) ? ts : ts ? [ts] : []\n if (types.every(isJSONType)) return types\n throw new Error(\"type must be JSONType or JSONType[]: \" + types.join(\",\"))\n}\n\nexport function coerceAndCheckDataType(it: SchemaObjCxt, types: JSONType[]): boolean {\n const {gen, data, opts} = it\n const coerceTo = coerceToTypes(types, opts.coerceTypes)\n const checkTypes =\n types.length > 0 &&\n !(coerceTo.length === 0 && types.length === 1 && schemaHasRulesForType(it, types[0]))\n if (checkTypes) {\n const wrongType = checkDataTypes(types, data, opts.strictNumbers, DataType.Wrong)\n gen.if(wrongType, () => {\n if (coerceTo.length) coerceData(it, types, coerceTo)\n else reportTypeError(it)\n })\n }\n return checkTypes\n}\n\nconst COERCIBLE: Set<JSONType> = new Set([\"string\", \"number\", \"integer\", \"boolean\", \"null\"])\nfunction coerceToTypes(types: JSONType[], coerceTypes?: boolean | \"array\"): JSONType[] {\n return coerceTypes\n ? types.filter((t) => COERCIBLE.has(t) || (coerceTypes === \"array\" && t === \"array\"))\n : []\n}\n\nfunction coerceData(it: SchemaObjCxt, types: JSONType[], coerceTo: JSONType[]): void {\n const {gen, data, opts} = it\n const dataType = gen.let(\"dataType\", _`typeof ${data}`)\n const coerced = gen.let(\"coerced\", _`undefined`)\n if (opts.coerceTypes === \"array\") {\n gen.if(_`${dataType} == 'object' && Array.isArray(${data}) && ${data}.length == 1`, () =>\n gen\n .assign(data, _`${data}[0]`)\n .assign(dataType, _`typeof ${data}`)\n .if(checkDataTypes(types, data, opts.strictNumbers), () => gen.assign(coerced, data))\n )\n }\n gen.if(_`${coerced} !== undefined`)\n for (const t of coerceTo) {\n if (COERCIBLE.has(t) || (t === \"array\" && opts.coerceTypes === \"array\")) {\n coerceSpecificType(t)\n }\n }\n gen.else()\n reportTypeError(it)\n gen.endIf()\n\n gen.if(_`${coerced} !== undefined`, () => {\n gen.assign(data, coerced)\n assignParentData(it, coerced)\n })\n\n function coerceSpecificType(t: string): void {\n switch (t) {\n case \"string\":\n gen\n .elseIf(_`${dataType} == \"number\" || ${dataType} == \"boolean\"`)\n .assign(coerced, _`\"\" + ${data}`)\n .elseIf(_`${data} === null`)\n .assign(coerced, _`\"\"`)\n return\n case \"number\":\n gen\n .elseIf(\n _`${dataType} == \"boolean\" || ${data} === null\n || (${dataType} == \"string\" && ${data} && ${data} == +${data})`\n )\n .assign(coerced, _`+${data}`)\n return\n case \"integer\":\n gen\n .elseIf(\n _`${dataType} === \"boolean\" || ${data} === null\n || (${dataType} === \"string\" && ${data} && ${data} == +${data} && !(${data} % 1))`\n )\n .assign(coerced, _`+${data}`)\n return\n case \"boolean\":\n gen\n .elseIf(_`${data} === \"false\" || ${data} === 0 || ${data} === null`)\n .assign(coerced, false)\n .elseIf(_`${data} === \"true\" || ${data} === 1`)\n .assign(coerced, true)\n return\n case \"null\":\n gen.elseIf(_`${data} === \"\" || ${data} === 0 || ${data} === false`)\n gen.assign(coerced, null)\n return\n\n case \"array\":\n gen\n .elseIf(\n _`${dataType} === \"string\" || ${dataType} === \"number\"\n || ${dataType} === \"boolean\" || ${data} === null`\n )\n .assign(coerced, _`[${data}]`)\n }\n }\n}\n\nfunction assignParentData({gen, parentData, parentDataProperty}: SchemaObjCxt, expr: Name): void {\n // TODO use gen.property\n gen.if(_`${parentData} !== undefined`, () =>\n gen.assign(_`${parentData}[${parentDataProperty}]`, expr)\n )\n}\n\nexport function checkDataType(\n dataType: JSONType,\n data: Name,\n strictNums?: boolean | \"log\",\n correct = DataType.Correct\n): Code {\n const EQ = correct === DataType.Correct ? operators.EQ : operators.NEQ\n let cond: Code\n switch (dataType) {\n case \"null\":\n return _`${data} ${EQ} null`\n case \"array\":\n cond = _`Array.isArray(${data})`\n break\n case \"object\":\n cond = _`${data} && typeof ${data} == \"object\" && !Array.isArray(${data})`\n break\n case \"integer\":\n cond = numCond(_`!(${data} % 1) && !isNaN(${data})`)\n break\n case \"number\":\n cond = numCond()\n break\n default:\n return _`typeof ${data} ${EQ} ${dataType}`\n }\n return correct === DataType.Correct ? cond : not(cond)\n\n function numCond(_cond: Code = nil): Code {\n return and(_`typeof ${data} == \"number\"`, _cond, strictNums ? _`isFinite(${data})` : nil)\n }\n}\n\nexport function checkDataTypes(\n dataTypes: JSONType[],\n data: Name,\n strictNums?: boolean | \"log\",\n correct?: DataType\n): Code {\n if (dataTypes.length === 1) {\n return checkDataType(dataTypes[0], data, strictNums, correct)\n }\n let cond: Code\n const types = toHash(dataTypes)\n if (types.array && types.object) {\n const notObj = _`typeof ${data} != \"object\"`\n cond = types.null ? notObj : _`!${data} || ${notObj}`\n delete types.null\n delete types.array\n delete types.object\n } else {\n cond = nil\n }\n if (types.number) delete types.integer\n for (const t in types) cond = and(cond, checkDataType(t as JSONType, data, strictNums, correct))\n return cond\n}\n\nexport type TypeError = ErrorObject<\"type\", {type: string}>\n\nconst typeError: KeywordErrorDefinition = {\n message: ({schema}) => `must be ${schema}`,\n params: ({schema, schemaValue}) =>\n typeof schema == \"string\" ? _`{type: ${schema}}` : _`{type: ${schemaValue}}`,\n}\n\nexport function reportTypeError(it: SchemaObjCxt): void {\n const cxt = getTypeErrorContext(it)\n reportError(cxt, typeError)\n}\n\nfunction getTypeErrorContext(it: SchemaObjCxt): KeywordErrorCxt {\n const {gen, data, schema} = it\n const schemaCode = schemaRefOrVal(it, schema, \"type\")\n return {\n gen,\n keyword: \"type\",\n data,\n schema: schema.type,\n schemaCode,\n schemaValue: schemaCode,\n parentSchema: schema,\n params: {},\n it,\n }\n}\n","import type {SchemaObjCxt} from \"..\"\nimport {_, getProperty, stringify} from \"../codegen\"\nimport {checkStrictMode} from \"../util\"\n\nexport function assignDefaults(it: SchemaObjCxt, ty?: string): void {\n const {properties, items} = it.schema\n if (ty === \"object\" && properties) {\n for (const key in properties) {\n assignDefault(it, key, properties[key].default)\n }\n } else if (ty === \"array\" && Array.isArray(items)) {\n items.forEach((sch, i: number) => assignDefault(it, i, sch.default))\n }\n}\n\nfunction assignDefault(it: SchemaObjCxt, prop: string | number, defaultValue: unknown): void {\n const {gen, compositeRule, data, opts} = it\n if (defaultValue === undefined) return\n const childData = _`${data}${getProperty(prop)}`\n if (compositeRule) {\n checkStrictMode(it, `default is ignored for: ${childData}`)\n return\n }\n\n let condition = _`${childData} === undefined`\n if (opts.useDefaults === \"empty\") {\n condition = _`${condition} || ${childData} === null || ${childData} === \"\"`\n }\n // `${childData} === undefined` +\n // (opts.useDefaults === \"empty\" ? ` || ${childData} === null || ${childData} === \"\"` : \"\")\n gen.if(condition, _`${childData} = ${stringify(defaultValue)}`)\n}\n","import type {AnySchema, SchemaMap} from \"../types\"\nimport type {SchemaCxt} from \"../compile\"\nimport type {KeywordCxt} from \"../compile/validate\"\nimport {CodeGen, _, and, or, not, nil, strConcat, getProperty, Code, Name} from \"../compile/codegen\"\nimport {alwaysValidSchema, Type} from \"../compile/util\"\nimport N from \"../compile/names\"\nimport {useFunc} from \"../compile/util\"\nexport function checkReportMissingProp(cxt: KeywordCxt, prop: string): void {\n const {gen, data, it} = cxt\n gen.if(noPropertyInData(gen, data, prop, it.opts.ownProperties), () => {\n cxt.setParams({missingProperty: _`${prop}`}, true)\n cxt.error()\n })\n}\n\nexport function checkMissingProp(\n {gen, data, it: {opts}}: KeywordCxt,\n properties: string[],\n missing: Name\n): Code {\n return or(\n ...properties.map((prop) =>\n and(noPropertyInData(gen, data, prop, opts.ownProperties), _`${missing} = ${prop}`)\n )\n )\n}\n\nexport function reportMissingProp(cxt: KeywordCxt, missing: Name): void {\n cxt.setParams({missingProperty: missing}, true)\n cxt.error()\n}\n\nexport function hasPropFunc(gen: CodeGen): Name {\n return gen.scopeValue(\"func\", {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n ref: Object.prototype.hasOwnProperty,\n code: _`Object.prototype.hasOwnProperty`,\n })\n}\n\nexport function isOwnProperty(gen: CodeGen, data: Name, property: Name | string): Code {\n return _`${hasPropFunc(gen)}.call(${data}, ${property})`\n}\n\nexport function propertyInData(\n gen: CodeGen,\n data: Name,\n property: Name | string,\n ownProperties?: boolean\n): Code {\n const cond = _`${data}${getProperty(property)} !== undefined`\n return ownProperties ? _`${cond} && ${isOwnProperty(gen, data, property)}` : cond\n}\n\nexport function noPropertyInData(\n gen: CodeGen,\n data: Name,\n property: Name | string,\n ownProperties?: boolean\n): Code {\n const cond = _`${data}${getProperty(property)} === undefined`\n return ownProperties ? or(cond, not(isOwnProperty(gen, data, property))) : cond\n}\n\nexport function allSchemaProperties(schemaMap?: SchemaMap): string[] {\n return schemaMap ? Object.keys(schemaMap).filter((p) => p !== \"__proto__\") : []\n}\n\nexport function schemaProperties(it: SchemaCxt, schemaMap: SchemaMap): string[] {\n return allSchemaProperties(schemaMap).filter(\n (p) => !alwaysValidSchema(it, schemaMap[p] as AnySchema)\n )\n}\n\nexport function callValidateCode(\n {schemaCode, data, it: {gen, topSchemaRef, schemaPath, errorPath}, it}: KeywordCxt,\n func: Code,\n context: Code,\n passSchema?: boolean\n): Code {\n const dataAndSchema = passSchema ? _`${schemaCode}, ${data}, ${topSchemaRef}${schemaPath}` : data\n const valCxt: [Name, Code | number][] = [\n [N.instancePath, strConcat(N.instancePath, errorPath)],\n [N.parentData, it.parentData],\n [N.parentDataProperty, it.parentDataProperty],\n [N.rootData, N.rootData],\n ]\n if (it.opts.dynamicRef) valCxt.push([N.dynamicAnchors, N.dynamicAnchors])\n const args = _`${dataAndSchema}, ${gen.object(...valCxt)}`\n return context !== nil ? _`${func}.call(${context}, ${args})` : _`${func}(${args})`\n}\n\nconst newRegExp = _`new RegExp`\n\nexport function usePattern({gen, it: {opts}}: KeywordCxt, pattern: string): Name {\n const u = opts.unicodeRegExp ? \"u\" : \"\"\n const {regExp} = opts.code\n const rx = regExp(pattern, u)\n\n return gen.scopeValue(\"pattern\", {\n key: rx.toString(),\n ref: rx,\n code: _`${regExp.code === \"new RegExp\" ? newRegExp : useFunc(gen, regExp)}(${pattern}, ${u})`,\n })\n}\n\nexport function validateArray(cxt: KeywordCxt): Name {\n const {gen, data, keyword, it} = cxt\n const valid = gen.name(\"valid\")\n if (it.allErrors) {\n const validArr = gen.let(\"valid\", true)\n validateItems(() => gen.assign(validArr, false))\n return validArr\n }\n gen.var(valid, true)\n validateItems(() => gen.break())\n return valid\n\n function validateItems(notValid: () => void): void {\n const len = gen.const(\"len\", _`${data}.length`)\n gen.forRange(\"i\", 0, len, (i) => {\n cxt.subschema(\n {\n keyword,\n dataProp: i,\n dataPropType: Type.Num,\n },\n valid\n )\n gen.if(not(valid), notValid)\n })\n }\n}\n\nexport function validateUnion(cxt: KeywordCxt): void {\n const {gen, schema, keyword, it} = cxt\n /* istanbul ignore if */\n if (!Array.isArray(schema)) throw new Error(\"ajv implementation error\")\n const alwaysValid = schema.some((sch: AnySchema) => alwaysValidSchema(it, sch))\n if (alwaysValid && !it.opts.unevaluated) return\n\n const valid = gen.let(\"valid\", false)\n const schValid = gen.name(\"_valid\")\n\n gen.block(() =>\n schema.forEach((_sch: AnySchema, i: number) => {\n const schCxt = cxt.subschema(\n {\n keyword,\n schemaProp: i,\n compositeRule: true,\n },\n schValid\n )\n gen.assign(valid, _`${valid} || ${schValid}`)\n const merged = cxt.mergeValidEvaluated(schCxt, schValid)\n // can short-circuit if `unevaluatedProperties/Items` not supported (opts.unevaluated !== true)\n // or if all properties and items were evaluated (it.props === true && it.items === true)\n if (!merged) gen.if(not(valid))\n })\n )\n\n cxt.result(\n valid,\n () => cxt.reset(),\n () => cxt.error(true)\n )\n}\n","import type {KeywordCxt} from \".\"\nimport type {\n AnySchema,\n SchemaValidateFunction,\n AnyValidateFunction,\n AddedKeywordDefinition,\n MacroKeywordDefinition,\n FuncKeywordDefinition,\n} from \"../../types\"\nimport type {SchemaObjCxt} from \"..\"\nimport {_, nil, not, stringify, Code, Name, CodeGen} from \"../codegen\"\nimport N from \"../names\"\nimport type {JSONType} from \"../rules\"\nimport {callValidateCode} from \"../../vocabularies/code\"\nimport {extendErrors} from \"../errors\"\n\ntype KeywordCompilationResult = AnySchema | SchemaValidateFunction | AnyValidateFunction\n\nexport function macroKeywordCode(cxt: KeywordCxt, def: MacroKeywordDefinition): void {\n const {gen, keyword, schema, parentSchema, it} = cxt\n const macroSchema = def.macro.call(it.self, schema, parentSchema, it)\n const schemaRef = useKeyword(gen, keyword, macroSchema)\n if (it.opts.validateSchema !== false) it.self.validateSchema(macroSchema, true)\n\n const valid = gen.name(\"valid\")\n cxt.subschema(\n {\n schema: macroSchema,\n schemaPath: nil,\n errSchemaPath: `${it.errSchemaPath}/${keyword}`,\n topSchemaRef: schemaRef,\n compositeRule: true,\n },\n valid\n )\n cxt.pass(valid, () => cxt.error(true))\n}\n\nexport function funcKeywordCode(cxt: KeywordCxt, def: FuncKeywordDefinition): void {\n const {gen, keyword, schema, parentSchema, $data, it} = cxt\n checkAsyncKeyword(it, def)\n const validate =\n !$data && def.compile ? def.compile.call(it.self, schema, parentSchema, it) : def.validate\n const validateRef = useKeyword(gen, keyword, validate)\n const valid = gen.let(\"valid\")\n cxt.block$data(valid, validateKeyword)\n cxt.ok(def.valid ?? valid)\n\n function validateKeyword(): void {\n if (def.errors === false) {\n assignValid()\n if (def.modifying) modifyData(cxt)\n reportErrs(() => cxt.error())\n } else {\n const ruleErrs = def.async ? validateAsync() : validateSync()\n if (def.modifying) modifyData(cxt)\n reportErrs(() => addErrs(cxt, ruleErrs))\n }\n }\n\n function validateAsync(): Name {\n const ruleErrs = gen.let(\"ruleErrs\", null)\n gen.try(\n () => assignValid(_`await `),\n (e) =>\n gen.assign(valid, false).if(\n _`${e} instanceof ${it.ValidationError as Name}`,\n () => gen.assign(ruleErrs, _`${e}.errors`),\n () => gen.throw(e)\n )\n )\n return ruleErrs\n }\n\n function validateSync(): Code {\n const validateErrs = _`${validateRef}.errors`\n gen.assign(validateErrs, null)\n assignValid(nil)\n return validateErrs\n }\n\n function assignValid(_await: Code = def.async ? _`await ` : nil): void {\n const passCxt = it.opts.passContext ? N.this : N.self\n const passSchema = !((\"compile\" in def && !$data) || def.schema === false)\n gen.assign(\n valid,\n _`${_await}${callValidateCode(cxt, validateRef, passCxt, passSchema)}`,\n def.modifying\n )\n }\n\n function reportErrs(errors: () => void): void {\n gen.if(not(def.valid ?? valid), errors)\n }\n}\n\nfunction modifyData(cxt: KeywordCxt): void {\n const {gen, data, it} = cxt\n gen.if(it.parentData, () => gen.assign(data, _`${it.parentData}[${it.parentDataProperty}]`))\n}\n\nfunction addErrs(cxt: KeywordCxt, errs: Code): void {\n const {gen} = cxt\n gen.if(\n _`Array.isArray(${errs})`,\n () => {\n gen\n .assign(N.vErrors, _`${N.vErrors} === null ? ${errs} : ${N.vErrors}.concat(${errs})`)\n .assign(N.errors, _`${N.vErrors}.length`)\n extendErrors(cxt)\n },\n () => cxt.error()\n )\n}\n\nfunction checkAsyncKeyword({schemaEnv}: SchemaObjCxt, def: FuncKeywordDefinition): void {\n if (def.async && !schemaEnv.$async) throw new Error(\"async keyword in sync schema\")\n}\n\nfunction useKeyword(gen: CodeGen, keyword: string, result?: KeywordCompilationResult): Name {\n if (result === undefined) throw new Error(`keyword \"${keyword}\" failed to compile`)\n return gen.scopeValue(\n \"keyword\",\n typeof result == \"function\" ? {ref: result} : {ref: result, code: stringify(result)}\n )\n}\n\nexport function validSchemaType(\n schema: unknown,\n schemaType: JSONType[],\n allowUndefined = false\n): boolean {\n // TODO add tests\n return (\n !schemaType.length ||\n schemaType.some((st) =>\n st === \"array\"\n ? Array.isArray(schema)\n : st === \"object\"\n ? schema && typeof schema == \"object\" && !Array.isArray(schema)\n : typeof schema == st || (allowUndefined && typeof schema == \"undefined\")\n )\n )\n}\n\nexport function validateKeywordUsage(\n {schema, opts, self, errSchemaPath}: SchemaObjCxt,\n def: AddedKeywordDefinition,\n keyword: string\n): void {\n /* istanbul ignore if */\n if (Array.isArray(def.keyword) ? !def.keyword.includes(keyword) : def.keyword !== keyword) {\n throw new Error(\"ajv implementation error\")\n }\n\n const deps = def.dependencies\n if (deps?.some((kwd) => !Object.prototype.hasOwnProperty.call(schema, kwd))) {\n throw new Error(`parent schema must have dependencies of ${keyword}: ${deps.join(\",\")}`)\n }\n\n if (def.validateSchema) {\n const valid = def.validateSchema(schema[keyword])\n if (!valid) {\n const msg =\n `keyword \"${keyword}\" value is invalid at path \"${errSchemaPath}\": ` +\n self.errorsText(def.validateSchema.errors)\n if (opts.validateSchema === \"log\") self.logger.error(msg)\n else throw new Error(msg)\n }\n }\n}\n","import type {AnySchema} from \"../../types\"\nimport type {SchemaObjCxt} from \"..\"\nimport {_, str, getProperty, Code, Name} from \"../codegen\"\nimport {escapeFragment, getErrorPath, Type} from \"../util\"\nimport type {JSONType} from \"../rules\"\n\nexport interface SubschemaContext {\n // TODO use Optional? align with SchemCxt property types\n schema: AnySchema\n schemaPath: Code\n errSchemaPath: string\n topSchemaRef?: Code\n errorPath?: Code\n dataLevel?: number\n dataTypes?: JSONType[]\n data?: Name\n parentData?: Name\n parentDataProperty?: Code | number\n dataNames?: Name[]\n dataPathArr?: (Code | number)[]\n propertyName?: Name\n jtdDiscriminator?: string\n jtdMetadata?: boolean\n compositeRule?: true\n createErrors?: boolean\n allErrors?: boolean\n}\n\nexport type SubschemaArgs = Partial<{\n keyword: string\n schemaProp: string | number\n schema: AnySchema\n schemaPath: Code\n errSchemaPath: string\n topSchemaRef: Code\n data: Name | Code\n dataProp: Code | string | number\n dataTypes: JSONType[]\n definedProperties: Set<string>\n propertyName: Name\n dataPropType: Type\n jtdDiscriminator: string\n jtdMetadata: boolean\n compositeRule: true\n createErrors: boolean\n allErrors: boolean\n}>\n\nexport function getSubschema(\n it: SchemaObjCxt,\n {keyword, schemaProp, schema, schemaPath, errSchemaPath, topSchemaRef}: SubschemaArgs\n): SubschemaContext {\n if (keyword !== undefined && schema !== undefined) {\n throw new Error('both \"keyword\" and \"schema\" passed, only one allowed')\n }\n\n if (keyword !== undefined) {\n const sch = it.schema[keyword]\n return schemaProp === undefined\n ? {\n schema: sch,\n schemaPath: _`${it.schemaPath}${getProperty(keyword)}`,\n errSchemaPath: `${it.errSchemaPath}/${keyword}`,\n }\n : {\n schema: sch[schemaProp],\n schemaPath: _`${it.schemaPath}${getProperty(keyword)}${getProperty(schemaProp)}`,\n errSchemaPath: `${it.errSchemaPath}/${keyword}/${escapeFragment(schemaProp)}`,\n }\n }\n\n if (schema !== undefined) {\n if (schemaPath === undefined || errSchemaPath === undefined || topSchemaRef === undefined) {\n throw new Error('\"schemaPath\", \"errSchemaPath\" and \"topSchemaRef\" are required with \"schema\"')\n }\n return {\n schema,\n schemaPath,\n topSchemaRef,\n errSchemaPath,\n }\n }\n\n throw new Error('either \"keyword\" or \"schema\" must be passed')\n}\n\nexport function extendSubschemaData(\n subschema: SubschemaContext,\n it: SchemaObjCxt,\n {dataProp, dataPropType: dpType, data, dataTypes, propertyName}: SubschemaArgs\n): void {\n if (data !== undefined && dataProp !== undefined) {\n throw new Error('both \"data\" and \"dataProp\" passed, only one allowed')\n }\n\n const {gen} = it\n\n if (dataProp !== undefined) {\n const {errorPath, dataPathArr, opts} = it\n const nextData = gen.let(\"data\", _`${it.data}${getProperty(dataProp)}`, true)\n dataContextProps(nextData)\n subschema.errorPath = str`${errorPath}${getErrorPath(dataProp, dpType, opts.jsPropertySyntax)}`\n subschema.parentDataProperty = _`${dataProp}`\n subschema.dataPathArr = [...dataPathArr, subschema.parentDataProperty]\n }\n\n if (data !== undefined) {\n const nextData = data instanceof Name ? data : gen.let(\"data\", data, true) // replaceable if used once?\n dataContextProps(nextData)\n if (propertyName !== undefined) subschema.propertyName = propertyName\n // TODO something is possibly wrong here with not changing parentDataProperty and not appending dataPathArr\n }\n\n if (dataTypes) subschema.dataTypes = dataTypes\n\n function dataContextProps(_nextData: Name): void {\n subschema.data = _nextData\n subschema.dataLevel = it.dataLevel + 1\n subschema.dataTypes = []\n it.definedProperties = new Set<string>()\n subschema.parentData = it.data\n subschema.dataNames = [...it.dataNames, _nextData]\n }\n}\n\nexport function extendSubschemaMode(\n subschema: SubschemaContext,\n {jtdDiscriminator, jtdMetadata, compositeRule, createErrors, allErrors}: SubschemaArgs\n): void {\n if (compositeRule !== undefined) subschema.compositeRule = compositeRule\n if (createErrors !== undefined) subschema.createErrors = createErrors\n if (allErrors !== undefined) subschema.allErrors = allErrors\n subschema.jtdDiscriminator = jtdDiscriminator // not inherited\n subschema.jtdMetadata = jtdMetadata // not inherited\n}\n","'use strict';\n\n// do not edit .js files directly - edit src/index.jst\n\n\n\nmodule.exports = function equal(a, b) {\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n\n for (i = length; i-- !== 0;) {\n var key = keys[i];\n\n if (!equal(a[key], b[key])) return false;\n }\n\n return true;\n }\n\n // true if both NaN, false otherwise\n return a!==a && b!==b;\n};\n","'use strict';\n\nvar traverse = module.exports = function (schema, opts, cb) {\n // Legacy support for v0.3.1 and earlier.\n if (typeof opts == 'function') {\n cb = opts;\n opts = {};\n }\n\n cb = opts.cb || cb;\n var pre = (typeof cb == 'function') ? cb : cb.pre || function() {};\n var post = cb.post || function() {};\n\n _traverse(opts, pre, post, schema, '', schema);\n};\n\n\ntraverse.keywords = {\n additionalItems: true,\n items: true,\n contains: true,\n additionalProperties: true,\n propertyNames: true,\n not: true,\n if: true,\n then: true,\n else: true\n};\n\ntraverse.arrayKeywords = {\n items: true,\n allOf: true,\n anyOf: true,\n oneOf: true\n};\n\ntraverse.propsKeywords = {\n $defs: true,\n definitions: true,\n properties: true,\n patternProperties: true,\n dependencies: true\n};\n\ntraverse.skipKeywords = {\n default: true,\n enum: true,\n const: true,\n required: true,\n maximum: true,\n minimum: true,\n exclusiveMaximum: true,\n exclusiveMinimum: true,\n multipleOf: true,\n maxLength: true,\n minLength: true,\n pattern: true,\n format: true,\n maxItems: true,\n minItems: true,\n uniqueItems: true,\n maxProperties: true,\n minProperties: true\n};\n\n\nfunction _traverse(opts, pre, post, schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex) {\n if (schema && typeof schema == 'object' && !Array.isArray(schema)) {\n pre(schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex);\n for (var key in schema) {\n var sch = schema[key];\n if (Array.isArray(sch)) {\n if (key in traverse.arrayKeywords) {\n for (var i=0; i<sch.length; i++)\n _traverse(opts, pre, post, sch[i], jsonPtr + '/' + key + '/' + i, rootSchema, jsonPtr, key, schema, i);\n }\n } else if (key in traverse.propsKeywords) {\n if (sch && typeof sch == 'object') {\n for (var prop in sch)\n _traverse(opts, pre, post, sch[prop], jsonPtr + '/' + key + '/' + escapeJsonPtr(prop), rootSchema, jsonPtr, key, schema, prop);\n }\n } else if (key in traverse.keywords || (opts.allKeys && !(key in traverse.skipKeywords))) {\n _traverse(opts, pre, post, sch, jsonPtr + '/' + key, rootSchema, jsonPtr, key, schema);\n }\n }\n post(schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex);\n }\n}\n\n\nfunction escapeJsonPtr(str) {\n return str.replace(/~/g, '~0').replace(/\\//g, '~1');\n}\n","import type {AnySchema, AnySchemaObject, UriResolver} from \"../types\"\nimport type Ajv from \"../ajv\"\nimport type {URIComponent} from \"fast-uri\"\nimport {eachItem} from \"./util\"\nimport * as equal from \"fast-deep-equal\"\nimport * as traverse from \"json-schema-traverse\"\n\n// the hash of local references inside the schema (created by getSchemaRefs), used for inline resolution\nexport type LocalRefs = {[Ref in string]?: AnySchemaObject}\n\n// TODO refactor to use keyword definitions\nconst SIMPLE_INLINED = new Set([\n \"type\",\n \"format\",\n \"pattern\",\n \"maxLength\",\n \"minLength\",\n \"maxProperties\",\n \"minProperties\",\n \"maxItems\",\n \"minItems\",\n \"maximum\",\n \"minimum\",\n \"uniqueItems\",\n \"multipleOf\",\n \"required\",\n \"enum\",\n \"const\",\n])\n\nexport function inlineRef(schema: AnySchema, limit: boolean | number = true): boolean {\n if (typeof schema == \"boolean\") return true\n if (limit === true) return !hasRef(schema)\n if (!limit) return false\n return countKeys(schema) <= limit\n}\n\nconst REF_KEYWORDS = new Set([\n \"$ref\",\n \"$recursiveRef\",\n \"$recursiveAnchor\",\n \"$dynamicRef\",\n \"$dynamicAnchor\",\n])\n\nfunction hasRef(schema: AnySchemaObject): boolean {\n for (const key in schema) {\n if (REF_KEYWORDS.has(key)) return true\n const sch = schema[key]\n if (Array.isArray(sch) && sch.some(hasRef)) return true\n if (typeof sch == \"object\" && hasRef(sch)) return true\n }\n return false\n}\n\nfunction countKeys(schema: AnySchemaObject): number {\n let count = 0\n for (const key in schema) {\n if (key === \"$ref\") return Infinity\n count++\n if (SIMPLE_INLINED.has(key)) continue\n if (typeof schema[key] == \"object\") {\n eachItem(schema[key], (sch) => (count += countKeys(sch)))\n }\n if (count === Infinity) return Infinity\n }\n return count\n}\n\nexport function getFullPath(resolver: UriResolver, id = \"\", normalize?: boolean): string {\n if (normalize !== false) id = normalizeId(id)\n const p = resolver.parse(id)\n return _getFullPath(resolver, p)\n}\n\nexport function _getFullPath(resolver: UriResolver, p: URIComponent): string {\n const serialized = resolver.serialize(p)\n return serialized.split(\"#\")[0] + \"#\"\n}\n\nconst TRAILING_SLASH_HASH = /#\\/?$/\nexport function normalizeId(id: string | undefined): string {\n return id ? id.replace(TRAILING_SLASH_HASH, \"\") : \"\"\n}\n\nexport function resolveUrl(resolver: UriResolver, baseId: string, id: string): string {\n id = normalizeId(id)\n return resolver.resolve(baseId, id)\n}\n\nconst ANCHOR = /^[a-z_][-a-z0-9._]*$/i\n\nexport function getSchemaRefs(this: Ajv, schema: AnySchema, baseId: string): LocalRefs {\n if (typeof schema == \"boolean\") return {}\n const {schemaId, uriResolver} = this.opts\n const schId = normalizeId(schema[schemaId] || baseId)\n const baseIds: {[JsonPtr in string]?: string} = {\"\": schId}\n const pathPrefix = getFullPath(uriResolver, schId, false)\n const localRefs: LocalRefs = {}\n const schemaRefs: Set<string> = new Set()\n\n traverse(schema, {allKeys: true}, (sch, jsonPtr, _, parentJsonPtr) => {\n if (parentJsonPtr === undefined) return\n const fullPath = pathPrefix + jsonPtr\n let innerBaseId = baseIds[parentJsonPtr]\n if (typeof sch[schemaId] == \"string\") innerBaseId = addRef.call(this, sch[schemaId])\n addAnchor.call(this, sch.$anchor)\n addAnchor.call(this, sch.$dynamicAnchor)\n baseIds[jsonPtr] = innerBaseId\n\n function addRef(this: Ajv, ref: string): string {\n // eslint-disable-next-line @typescript-eslint/unbound-method\n const _resolve = this.opts.uriResolver.resolve\n ref = normalizeId(innerBaseId ? _resolve(innerBaseId, ref) : ref)\n if (schemaRefs.has(ref)) throw ambiguos(ref)\n schemaRefs.add(ref)\n let schOrRef = this.refs[ref]\n if (typeof schOrRef == \"string\") schOrRef = this.refs[schOrRef]\n if (typeof schOrRef == \"object\") {\n checkAmbiguosRef(sch, schOrRef.schema, ref)\n } else if (ref !== normalizeId(fullPath)) {\n if (ref[0] === \"#\") {\n checkAmbiguosRef(sch, localRefs[ref], ref)\n localRefs[ref] = sch\n } else {\n this.refs[ref] = fullPath\n }\n }\n return ref\n }\n\n function addAnchor(this: Ajv, anchor: unknown): void {\n if (typeof anchor == \"string\") {\n if (!ANCHOR.test(anchor)) throw new Error(`invalid anchor \"${anchor}\"`)\n addRef.call(this, `#${anchor}`)\n }\n }\n })\n\n return localRefs\n\n function checkAmbiguosRef(sch1: AnySchema, sch2: AnySchema | undefined, ref: string): void {\n if (sch2 !== undefined && !equal(sch1, sch2)) throw ambiguos(ref)\n }\n\n function ambiguos(ref: string): Error {\n return new Error(`reference \"${ref}\" resolves to more than one schema`)\n }\n}\n","import type {\n AddedKeywordDefinition,\n AnySchema,\n AnySchemaObject,\n KeywordErrorCxt,\n KeywordCxtParams,\n} from \"../../types\"\nimport type {SchemaCxt, SchemaObjCxt} from \"..\"\nimport type {InstanceOptions} from \"../../core\"\nimport {boolOrEmptySchema, topBoolOrEmptySchema} from \"./boolSchema\"\nimport {coerceAndCheckDataType, getSchemaTypes} from \"./dataType\"\nimport {shouldUseGroup, shouldUseRule} from \"./applicability\"\nimport {checkDataType, checkDataTypes, reportTypeError, DataType} from \"./dataType\"\nimport {assignDefaults} from \"./defaults\"\nimport {funcKeywordCode, macroKeywordCode, validateKeywordUsage, validSchemaType} from \"./keyword\"\nimport {getSubschema, extendSubschemaData, SubschemaArgs, extendSubschemaMode} from \"./subschema\"\nimport {_, nil, str, or, not, getProperty, Block, Code, Name, CodeGen} from \"../codegen\"\nimport N from \"../names\"\nimport {resolveUrl} from \"../resolve\"\nimport {\n schemaRefOrVal,\n schemaHasRulesButRef,\n checkUnknownRules,\n checkStrictMode,\n unescapeJsonPointer,\n mergeEvaluated,\n} from \"../util\"\nimport type {JSONType, Rule, RuleGroup} from \"../rules\"\nimport {\n ErrorPaths,\n reportError,\n reportExtraError,\n resetErrorsCount,\n keyword$DataError,\n} from \"../errors\"\n\n// schema compilation - generates validation function, subschemaCode (below) is used for subschemas\nexport function validateFunctionCode(it: SchemaCxt): void {\n if (isSchemaObj(it)) {\n checkKeywords(it)\n if (schemaCxtHasRules(it)) {\n topSchemaObjCode(it)\n return\n }\n }\n validateFunction(it, () => topBoolOrEmptySchema(it))\n}\n\nfunction validateFunction(\n {gen, validateName, schema, schemaEnv, opts}: SchemaCxt,\n body: Block\n): void {\n if (opts.code.es5) {\n gen.func(validateName, _`${N.data}, ${N.valCxt}`, schemaEnv.$async, () => {\n gen.code(_`\"use strict\"; ${funcSourceUrl(schema, opts)}`)\n destructureValCxtES5(gen, opts)\n gen.code(body)\n })\n } else {\n gen.func(validateName, _`${N.data}, ${destructureValCxt(opts)}`, schemaEnv.$async, () =>\n gen.code(funcSourceUrl(schema, opts)).code(body)\n )\n }\n}\n\nfunction destructureValCxt(opts: InstanceOptions): Code {\n return _`{${N.instancePath}=\"\", ${N.parentData}, ${N.parentDataProperty}, ${N.rootData}=${\n N.data\n }${opts.dynamicRef ? _`, ${N.dynamicAnchors}={}` : nil}}={}`\n}\n\nfunction destructureValCxtES5(gen: CodeGen, opts: InstanceOptions): void {\n gen.if(\n N.valCxt,\n () => {\n gen.var(N.instancePath, _`${N.valCxt}.${N.instancePath}`)\n gen.var(N.parentData, _`${N.valCxt}.${N.parentData}`)\n gen.var(N.parentDataProperty, _`${N.valCxt}.${N.parentDataProperty}`)\n gen.var(N.rootData, _`${N.valCxt}.${N.rootData}`)\n if (opts.dynamicRef) gen.var(N.dynamicAnchors, _`${N.valCxt}.${N.dynamicAnchors}`)\n },\n () => {\n gen.var(N.instancePath, _`\"\"`)\n gen.var(N.parentData, _`undefined`)\n gen.var(N.parentDataProperty, _`undefined`)\n gen.var(N.rootData, N.data)\n if (opts.dynamicRef) gen.var(N.dynamicAnchors, _`{}`)\n }\n )\n}\n\nfunction topSchemaObjCode(it: SchemaObjCxt): void {\n const {schema, opts, gen} = it\n validateFunction(it, () => {\n if (opts.$comment && schema.$comment) commentKeyword(it)\n checkNoDefault(it)\n gen.let(N.vErrors, null)\n gen.let(N.errors, 0)\n if (opts.unevaluated) resetEvaluated(it)\n typeAndKeywords(it)\n returnResults(it)\n })\n return\n}\n\nfunction resetEvaluated(it: SchemaObjCxt): void {\n // TODO maybe some hook to execute it in the end to check whether props/items are Name, as in assignEvaluated\n const {gen, validateName} = it\n it.evaluated = gen.const(\"evaluated\", _`${validateName}.evaluated`)\n gen.if(_`${it.evaluated}.dynamicProps`, () => gen.assign(_`${it.evaluated}.props`, _`undefined`))\n gen.if(_`${it.evaluated}.dynamicItems`, () => gen.assign(_`${it.evaluated}.items`, _`undefined`))\n}\n\nfunction funcSourceUrl(schema: AnySchema, opts: InstanceOptions): Code {\n const schId = typeof schema == \"object\" && schema[opts.schemaId]\n return schId && (opts.code.source || opts.code.process) ? _`/*# sourceURL=${schId} */` : nil\n}\n\n// schema compilation - this function is used recursively to generate code for sub-schemas\nfunction subschemaCode(it: SchemaCxt, valid: Name): void {\n if (isSchemaObj(it)) {\n checkKeywords(it)\n if (schemaCxtHasRules(it)) {\n subSchemaObjCode(it, valid)\n return\n }\n }\n boolOrEmptySchema(it, valid)\n}\n\nfunction schemaCxtHasRules({schema, self}: SchemaCxt): boolean {\n if (typeof schema == \"boolean\") return !schema\n for (const key in schema) if (self.RULES.all[key]) return true\n return false\n}\n\nfunction isSchemaObj(it: SchemaCxt): it is SchemaObjCxt {\n return typeof it.schema != \"boolean\"\n}\n\nfunction subSchemaObjCode(it: SchemaObjCxt, valid: Name): void {\n const {schema, gen, opts} = it\n if (opts.$comment && schema.$comment) commentKeyword(it)\n updateContext(it)\n checkAsyncSchema(it)\n const errsCount = gen.const(\"_errs\", N.errors)\n typeAndKeywords(it, errsCount)\n // TODO var\n gen.var(valid, _`${errsCount} === ${N.errors}`)\n}\n\nfunction checkKeywords(it: SchemaObjCxt): void {\n checkUnknownRules(it)\n checkRefsAndKeywords(it)\n}\n\nfunction typeAndKeywords(it: SchemaObjCxt, errsCount?: Name): void {\n if (it.opts.jtd) return schemaKeywords(it, [], false, errsCount)\n const types = getSchemaTypes(it.schema)\n const checkedTypes = coerceAndCheckDataType(it, types)\n schemaKeywords(it, types, !checkedTypes, errsCount)\n}\n\nfunction checkRefsAndKeywords(it: SchemaObjCxt): void {\n const {schema, errSchemaPath, opts, self} = it\n if (schema.$ref && opts.ignoreKeywordsWithRef && schemaHasRulesButRef(schema, self.RULES)) {\n self.logger.warn(`$ref: keywords ignored in schema at path \"${errSchemaPath}\"`)\n }\n}\n\nfunction checkNoDefault(it: SchemaObjCxt): void {\n const {schema, opts} = it\n if (schema.default !== undefined && opts.useDefaults && opts.strictSchema) {\n checkStrictMode(it, \"default is ignored in the schema root\")\n }\n}\n\nfunction updateContext(it: SchemaObjCxt): void {\n const schId = it.schema[it.opts.schemaId]\n if (schId) it.baseId = resolveUrl(it.opts.uriResolver, it.baseId, schId)\n}\n\nfunction checkAsyncSchema(it: SchemaObjCxt): void {\n if (it.schema.$async && !it.schemaEnv.$async) throw new Error(\"async schema in sync schema\")\n}\n\nfunction commentKeyword({gen, schemaEnv, schema, errSchemaPath, opts}: SchemaObjCxt): void {\n const msg = schema.$comment\n if (opts.$comment === true) {\n gen.code(_`${N.self}.logger.log(${msg})`)\n } else if (typeof opts.$comment == \"function\") {\n const schemaPath = str`${errSchemaPath}/$comment`\n const rootName = gen.scopeValue(\"root\", {ref: schemaEnv.root})\n gen.code(_`${N.self}.opts.$comment(${msg}, ${schemaPath}, ${rootName}.schema)`)\n }\n}\n\nfunction returnResults(it: SchemaCxt): void {\n const {gen, schemaEnv, validateName, ValidationError, opts} = it\n if (schemaEnv.$async) {\n // TODO assign unevaluated\n gen.if(\n _`${N.errors} === 0`,\n () => gen.return(N.data),\n () => gen.throw(_`new ${ValidationError as Name}(${N.vErrors})`)\n )\n } else {\n gen.assign(_`${validateName}.errors`, N.vErrors)\n if (opts.unevaluated) assignEvaluated(it)\n gen.return(_`${N.errors} === 0`)\n }\n}\n\nfunction assignEvaluated({gen, evaluated, props, items}: SchemaCxt): void {\n if (props instanceof Name) gen.assign(_`${evaluated}.props`, props)\n if (items instanceof Name) gen.assign(_`${evaluated}.items`, items)\n}\n\nfunction schemaKeywords(\n it: SchemaObjCxt,\n types: JSONType[],\n typeErrors: boolean,\n errsCount?: Name\n): void {\n const {gen, schema, data, allErrors, opts, self} = it\n const {RULES} = self\n if (schema.$ref && (opts.ignoreKeywordsWithRef || !schemaHasRulesButRef(schema, RULES))) {\n gen.block(() => keywordCode(it, \"$ref\", (RULES.all.$ref as Rule).definition)) // TODO typecast\n return\n }\n if (!opts.jtd) checkStrictTypes(it, types)\n gen.block(() => {\n for (const group of RULES.rules) groupKeywords(group)\n groupKeywords(RULES.post)\n })\n\n function groupKeywords(group: RuleGroup): void {\n if (!shouldUseGroup(schema, group)) return\n if (group.type) {\n gen.if(checkDataType(group.type, data, opts.strictNumbers))\n iterateKeywords(it, group)\n if (types.length === 1 && types[0] === group.type && typeErrors) {\n gen.else()\n reportTypeError(it)\n }\n gen.endIf()\n } else {\n iterateKeywords(it, group)\n }\n // TODO make it \"ok\" call?\n if (!allErrors) gen.if(_`${N.errors} === ${errsCount || 0}`)\n }\n}\n\nfunction iterateKeywords(it: SchemaObjCxt, group: RuleGroup): void {\n const {\n gen,\n schema,\n opts: {useDefaults},\n } = it\n if (useDefaults) assignDefaults(it, group.type)\n gen.block(() => {\n for (const rule of group.rules) {\n if (shouldUseRule(schema, rule)) {\n keywordCode(it, rule.keyword, rule.definition, group.type)\n }\n }\n })\n}\n\nfunction checkStrictTypes(it: SchemaObjCxt, types: JSONType[]): void {\n if (it.schemaEnv.meta || !it.opts.strictTypes) return\n checkContextTypes(it, types)\n if (!it.opts.allowUnionTypes) checkMultipleTypes(it, types)\n checkKeywordTypes(it, it.dataTypes)\n}\n\nfunction checkContextTypes(it: SchemaObjCxt, types: JSONType[]): void {\n if (!types.length) return\n if (!it.dataTypes.length) {\n it.dataTypes = types\n return\n }\n types.forEach((t) => {\n if (!includesType(it.dataTypes, t)) {\n strictTypesError(it, `type \"${t}\" not allowed by context \"${it.dataTypes.join(\",\")}\"`)\n }\n })\n narrowSchemaTypes(it, types)\n}\n\nfunction checkMultipleTypes(it: SchemaObjCxt, ts: JSONType[]): void {\n if (ts.length > 1 && !(ts.length === 2 && ts.includes(\"null\"))) {\n strictTypesError(it, \"use allowUnionTypes to allow union type keyword\")\n }\n}\n\nfunction checkKeywordTypes(it: SchemaObjCxt, ts: JSONType[]): void {\n const rules = it.self.RULES.all\n for (const keyword in rules) {\n const rule = rules[keyword]\n if (typeof rule == \"object\" && shouldUseRule(it.schema, rule)) {\n const {type} = rule.definition\n if (type.length && !type.some((t) => hasApplicableType(ts, t))) {\n strictTypesError(it, `missing type \"${type.join(\",\")}\" for keyword \"${keyword}\"`)\n }\n }\n }\n}\n\nfunction hasApplicableType(schTs: JSONType[], kwdT: JSONType): boolean {\n return schTs.includes(kwdT) || (kwdT === \"number\" && schTs.includes(\"integer\"))\n}\n\nfunction includesType(ts: JSONType[], t: JSONType): boolean {\n return ts.includes(t) || (t === \"integer\" && ts.includes(\"number\"))\n}\n\nfunction narrowSchemaTypes(it: SchemaObjCxt, withTypes: JSONType[]): void {\n const ts: JSONType[] = []\n for (const t of it.dataTypes) {\n if (includesType(withTypes, t)) ts.push(t)\n else if (withTypes.includes(\"integer\") && t === \"number\") ts.push(\"integer\")\n }\n it.dataTypes = ts\n}\n\nfunction strictTypesError(it: SchemaObjCxt, msg: string): void {\n const schemaPath = it.schemaEnv.baseId + it.errSchemaPath\n msg += ` at \"${schemaPath}\" (strictTypes)`\n checkStrictMode(it, msg, it.opts.strictTypes)\n}\n\nexport class KeywordCxt implements KeywordErrorCxt {\n readonly gen: CodeGen\n readonly allErrors?: boolean\n readonly keyword: string\n readonly data: Name // Name referencing the current level of the data instance\n readonly $data?: string | false\n schema: any // keyword value in the schema\n readonly schemaValue: Code | number | boolean // Code reference to keyword schema value or primitive value\n readonly schemaCode: Code | number | boolean // Code reference to resolved schema value (different if schema is $data)\n readonly schemaType: JSONType[] // allowed type(s) of keyword value in the schema\n readonly parentSchema: AnySchemaObject\n readonly errsCount?: Name // Name reference to the number of validation errors collected before this keyword,\n // requires option trackErrors in keyword definition\n params: KeywordCxtParams // object to pass parameters to error messages from keyword code\n readonly it: SchemaObjCxt // schema compilation context (schema is guaranteed to be an object, not boolean)\n readonly def: AddedKeywordDefinition\n\n constructor(it: SchemaObjCxt, def: AddedKeywordDefinition, keyword: string) {\n validateKeywordUsage(it, def, keyword)\n this.gen = it.gen\n this.allErrors = it.allErrors\n this.keyword = keyword\n this.data = it.data\n this.schema = it.schema[keyword]\n this.$data = def.$data && it.opts.$data && this.schema && this.schema.$data\n this.schemaValue = schemaRefOrVal(it, this.schema, keyword, this.$data)\n this.schemaType = def.schemaType\n this.parentSchema = it.schema\n this.params = {}\n this.it = it\n this.def = def\n\n if (this.$data) {\n this.schemaCode = it.gen.const(\"vSchema\", getData(this.$data, it))\n } else {\n this.schemaCode = this.schemaValue\n if (!validSchemaType(this.schema, def.schemaType, def.allowUndefined)) {\n throw new Error(`${keyword} value must be ${JSON.stringify(def.schemaType)}`)\n }\n }\n\n if (\"code\" in def ? def.trackErrors : def.errors !== false) {\n this.errsCount = it.gen.const(\"_errs\", N.errors)\n }\n }\n\n result(condition: Code, successAction?: () => void, failAction?: () => void): void {\n this.failResult(not(condition), successAction, failAction)\n }\n\n failResult(condition: Code, successAction?: () => void, failAction?: () => void): void {\n this.gen.if(condition)\n if (failAction) failAction()\n else this.error()\n if (successAction) {\n this.gen.else()\n successAction()\n if (this.allErrors) this.gen.endIf()\n } else {\n if (this.allErrors) this.gen.endIf()\n else this.gen.else()\n }\n }\n\n pass(condition: Code, failAction?: () => void): void {\n this.failResult(not(condition), undefined, failAction)\n }\n\n fail(condition?: Code): void {\n if (condition === undefined) {\n this.error()\n if (!this.allErrors) this.gen.if(false) // this branch will be removed by gen.optimize\n return\n }\n this.gen.if(condition)\n this.error()\n if (this.allErrors) this.gen.endIf()\n else this.gen.else()\n }\n\n fail$data(condition: Code): void {\n if (!this.$data) return this.fail(condition)\n const {schemaCode} = this\n this.fail(_`${schemaCode} !== undefined && (${or(this.invalid$data(), condition)})`)\n }\n\n error(append?: boolean, errorParams?: KeywordCxtParams, errorPaths?: ErrorPaths): void {\n if (errorParams) {\n this.setParams(errorParams)\n this._error(append, errorPaths)\n this.setParams({})\n return\n }\n this._error(append, errorPaths)\n }\n\n private _error(append?: boolean, errorPaths?: ErrorPaths): void {\n ;(append ? reportExtraError : reportError)(this, this.def.error, errorPaths)\n }\n\n $dataError(): void {\n reportError(this, this.def.$dataError || keyword$DataError)\n }\n\n reset(): void {\n if (this.errsCount === undefined) throw new Error('add \"trackErrors\" to keyword definition')\n resetErrorsCount(this.gen, this.errsCount)\n }\n\n ok(cond: Code | boolean): void {\n if (!this.allErrors) this.gen.if(cond)\n }\n\n setParams(obj: KeywordCxtParams, assign?: true): void {\n if (assign) Object.assign(this.params, obj)\n else this.params = obj\n }\n\n block$data(valid: Name, codeBlock: () => void, $dataValid: Code = nil): void {\n this.gen.block(() => {\n this.check$data(valid, $dataValid)\n codeBlock()\n })\n }\n\n check$data(valid: Name = nil, $dataValid: Code = nil): void {\n if (!this.$data) return\n const {gen, schemaCode, schemaType, def} = this\n gen.if(or(_`${schemaCode} === undefined`, $dataValid))\n if (valid !== nil) gen.assign(valid, true)\n if (schemaType.length || def.validateSchema) {\n gen.elseIf(this.invalid$data())\n this.$dataError()\n if (valid !== nil) gen.assign(valid, false)\n }\n gen.else()\n }\n\n invalid$data(): Code {\n const {gen, schemaCode, schemaType, def, it} = this\n return or(wrong$DataType(), invalid$DataSchema())\n\n function wrong$DataType(): Code {\n if (schemaType.length) {\n /* istanbul ignore if */\n if (!(schemaCode instanceof Name)) throw new Error(\"ajv implementation error\")\n const st = Array.isArray(schemaType) ? schemaType : [schemaType]\n return _`${checkDataTypes(st, schemaCode, it.opts.strictNumbers, DataType.Wrong)}`\n }\n return nil\n }\n\n function invalid$DataSchema(): Code {\n if (def.validateSchema) {\n const validateSchemaRef = gen.scopeValue(\"validate$data\", {ref: def.validateSchema}) // TODO value.code for standalone\n return _`!${validateSchemaRef}(${schemaCode})`\n }\n return nil\n }\n }\n\n subschema(appl: SubschemaArgs, valid: Name): SchemaCxt {\n const subschema = getSubschema(this.it, appl)\n extendSubschemaData(subschema, this.it, appl)\n extendSubschemaMode(subschema, appl)\n const nextContext = {...this.it, ...subschema, items: undefined, props: undefined}\n subschemaCode(nextContext, valid)\n return nextContext\n }\n\n mergeEvaluated(schemaCxt: SchemaCxt, toName?: typeof Name): void {\n const {it, gen} = this\n if (!it.opts.unevaluated) return\n if (it.props !== true && schemaCxt.props !== undefined) {\n it.props = mergeEvaluated.props(gen, schemaCxt.props, it.props, toName)\n }\n if (it.items !== true && schemaCxt.items !== undefined) {\n it.items = mergeEvaluated.items(gen, schemaCxt.items, it.items, toName)\n }\n }\n\n mergeValidEvaluated(schemaCxt: SchemaCxt, valid: Name): boolean | void {\n const {it, gen} = this\n if (it.opts.unevaluated && (it.props !== true || it.items !== true)) {\n gen.if(valid, () => this.mergeEvaluated(schemaCxt, Name))\n return true\n }\n }\n}\n\nfunction keywordCode(\n it: SchemaObjCxt,\n keyword: string,\n def: AddedKeywordDefinition,\n ruleType?: JSONType\n): void {\n const cxt = new KeywordCxt(it, def, keyword)\n if (\"code\" in def) {\n def.code(cxt, ruleType)\n } else if (cxt.$data && def.validate) {\n funcKeywordCode(cxt, def)\n } else if (\"macro\" in def) {\n macroKeywordCode(cxt, def)\n } else if (def.compile || def.validate) {\n funcKeywordCode(cxt, def)\n }\n}\n\nconst JSON_POINTER = /^\\/(?:[^~]|~0|~1)*$/\nconst RELATIVE_JSON_POINTER = /^([0-9]+)(#|\\/(?:[^~]|~0|~1)*)?$/\nexport function getData(\n $data: string,\n {dataLevel, dataNames, dataPathArr}: SchemaCxt\n): Code | number {\n let jsonPointer\n let data: Code\n if ($data === \"\") return N.rootData\n if ($data[0] === \"/\") {\n if (!JSON_POINTER.test($data)) throw new Error(`Invalid JSON-pointer: ${$data}`)\n jsonPointer = $data\n data = N.rootData\n } else {\n const matches = RELATIVE_JSON_POINTER.exec($data)\n if (!matches) throw new Error(`Invalid JSON-pointer: ${$data}`)\n const up: number = +matches[1]\n jsonPointer = matches[2]\n if (jsonPointer === \"#\") {\n if (up >= dataLevel) throw new Error(errorMsg(\"property/index\", up))\n return dataPathArr[dataLevel - up]\n }\n if (up > dataLevel) throw new Error(errorMsg(\"data\", up))\n data = dataNames[dataLevel - up]\n if (!jsonPointer) return data\n }\n\n let expr = data\n const segments = jsonPointer.split(\"/\")\n for (const segment of segments) {\n if (segment) {\n data = _`${data}${getProperty(unescapeJsonPointer(segment))}`\n expr = _`${expr} && ${data}`\n }\n }\n return expr\n\n function errorMsg(pointerType: string, up: number): string {\n return `Cannot access ${pointerType} ${up} levels up, current level is ${dataLevel}`\n }\n}\n","import type {ErrorObject} from \"../types\"\n\nexport default class ValidationError extends Error {\n readonly errors: Partial<ErrorObject>[]\n readonly ajv: true\n readonly validation: true\n\n constructor(errors: Partial<ErrorObject>[]) {\n super(\"validation failed\")\n this.errors = errors\n this.ajv = this.validation = true\n }\n}\n","import {resolveUrl, normalizeId, getFullPath} from \"./resolve\"\nimport type {UriResolver} from \"../types\"\n\nexport default class MissingRefError extends Error {\n readonly missingRef: string\n readonly missingSchema: string\n\n constructor(resolver: UriResolver, baseId: string, ref: string, msg?: string) {\n super(msg || `can't resolve reference ${ref} from id ${baseId}`)\n this.missingRef = resolveUrl(resolver, baseId, ref)\n this.missingSchema = normalizeId(getFullPath(resolver, this.missingRef))\n }\n}\n","import type {\n AnySchema,\n AnySchemaObject,\n AnyValidateFunction,\n AsyncValidateFunction,\n EvaluatedProperties,\n EvaluatedItems,\n} from \"../types\"\nimport type Ajv from \"../core\"\nimport type {InstanceOptions} from \"../core\"\nimport {CodeGen, _, nil, stringify, Name, Code, ValueScopeName} from \"./codegen\"\nimport ValidationError from \"../runtime/validation_error\"\nimport N from \"./names\"\nimport {LocalRefs, getFullPath, _getFullPath, inlineRef, normalizeId, resolveUrl} from \"./resolve\"\nimport {schemaHasRulesButRef, unescapeFragment} from \"./util\"\nimport {validateFunctionCode} from \"./validate\"\nimport {URIComponent} from \"fast-uri\"\nimport {JSONType} from \"./rules\"\n\nexport type SchemaRefs = {\n [Ref in string]?: SchemaEnv | AnySchema\n}\n\nexport interface SchemaCxt {\n readonly gen: CodeGen\n readonly allErrors?: boolean // validation mode - whether to collect all errors or break on error\n readonly data: Name // Name with reference to the current part of data instance\n readonly parentData: Name // should be used in keywords modifying data\n readonly parentDataProperty: Code | number // should be used in keywords modifying data\n readonly dataNames: Name[]\n readonly dataPathArr: (Code | number)[]\n readonly dataLevel: number // the level of the currently validated data,\n // it can be used to access both the property names and the data on all levels from the top.\n dataTypes: JSONType[] // data types applied to the current part of data instance\n definedProperties: Set<string> // set of properties to keep track of for required checks\n readonly topSchemaRef: Code\n readonly validateName: Name\n evaluated?: Name\n readonly ValidationError?: Name\n readonly schema: AnySchema // current schema object - equal to parentSchema passed via KeywordCxt\n readonly schemaEnv: SchemaEnv\n readonly rootId: string\n baseId: string // the current schema base URI that should be used as the base for resolving URIs in references (\\$ref)\n readonly schemaPath: Code // the run-time expression that evaluates to the property name of the current schema\n readonly errSchemaPath: string // this is actual string, should not be changed to Code\n readonly errorPath: Code\n readonly propertyName?: Name\n readonly compositeRule?: boolean // true indicates that the current schema is inside the compound keyword,\n // where failing some rule doesn't mean validation failure (`anyOf`, `oneOf`, `not`, `if`).\n // This flag is used to determine whether you can return validation result immediately after any error in case the option `allErrors` is not `true.\n // You only need to use it if you have many steps in your keywords and potentially can define multiple errors.\n props?: EvaluatedProperties | Name // properties evaluated by this schema - used by parent schema or assigned to validation function\n items?: EvaluatedItems | Name // last item evaluated by this schema - used by parent schema or assigned to validation function\n jtdDiscriminator?: string\n jtdMetadata?: boolean\n readonly createErrors?: boolean\n readonly opts: InstanceOptions // Ajv instance option.\n readonly self: Ajv // current Ajv instance\n}\n\nexport interface SchemaObjCxt extends SchemaCxt {\n readonly schema: AnySchemaObject\n}\ninterface SchemaEnvArgs {\n readonly schema: AnySchema\n readonly schemaId?: \"$id\" | \"id\"\n readonly root?: SchemaEnv\n readonly baseId?: string\n readonly schemaPath?: string\n readonly localRefs?: LocalRefs\n readonly meta?: boolean\n}\n\nexport class SchemaEnv implements SchemaEnvArgs {\n readonly schema: AnySchema\n readonly schemaId?: \"$id\" | \"id\"\n readonly root: SchemaEnv\n baseId: string // TODO possibly, it should be readonly\n schemaPath?: string\n localRefs?: LocalRefs\n readonly meta?: boolean\n readonly $async?: boolean // true if the current schema is asynchronous.\n readonly refs: SchemaRefs = {}\n readonly dynamicAnchors: {[Ref in string]?: true} = {}\n validate?: AnyValidateFunction\n validateName?: ValueScopeName\n serialize?: (data: unknown) => string\n serializeName?: ValueScopeName\n parse?: (data: string) => unknown\n parseName?: ValueScopeName\n\n constructor(env: SchemaEnvArgs) {\n let schema: AnySchemaObject | undefined\n if (typeof env.schema == \"object\") schema = env.schema\n this.schema = env.schema\n this.schemaId = env.schemaId\n this.root = env.root || this\n this.baseId = env.baseId ?? normalizeId(schema?.[env.schemaId || \"$id\"])\n this.schemaPath = env.schemaPath\n this.localRefs = env.localRefs\n this.meta = env.meta\n this.$async = schema?.$async\n this.refs = {}\n }\n}\n\n// let codeSize = 0\n// let nodeCount = 0\n\n// Compiles schema in SchemaEnv\nexport function compileSchema(this: Ajv, sch: SchemaEnv): SchemaEnv {\n // TODO refactor - remove compilations\n const _sch = getCompilingSchema.call(this, sch)\n if (_sch) return _sch\n const rootId = getFullPath(this.opts.uriResolver, sch.root.baseId) // TODO if getFullPath removed 1 tests fails\n const {es5, lines} = this.opts.code\n const {ownProperties} = this.opts\n const gen = new CodeGen(this.scope, {es5, lines, ownProperties})\n let _ValidationError\n if (sch.$async) {\n _ValidationError = gen.scopeValue(\"Error\", {\n ref: ValidationError,\n code: _`require(\"ajv/dist/runtime/validation_error\").default`,\n })\n }\n\n const validateName = gen.scopeName(\"validate\")\n sch.validateName = validateName\n\n const schemaCxt: SchemaCxt = {\n gen,\n allErrors: this.opts.allErrors,\n data: N.data,\n parentData: N.parentData,\n parentDataProperty: N.parentDataProperty,\n dataNames: [N.data],\n dataPathArr: [nil], // TODO can its length be used as dataLevel if nil is removed?\n dataLevel: 0,\n dataTypes: [],\n definedProperties: new Set<string>(),\n topSchemaRef: gen.scopeValue(\n \"schema\",\n this.opts.code.source === true\n ? {ref: sch.schema, code: stringify(sch.schema)}\n : {ref: sch.schema}\n ),\n validateName,\n ValidationError: _ValidationError,\n schema: sch.schema,\n schemaEnv: sch,\n rootId,\n baseId: sch.baseId || rootId,\n schemaPath: nil,\n errSchemaPath: sch.schemaPath || (this.opts.jtd ? \"\" : \"#\"),\n errorPath: _`\"\"`,\n opts: this.opts,\n self: this,\n }\n\n let sourceCode: string | undefined\n try {\n this._compilations.add(sch)\n validateFunctionCode(schemaCxt)\n gen.optimize(this.opts.code.optimize)\n // gen.optimize(1)\n const validateCode = gen.toString()\n sourceCode = `${gen.scopeRefs(N.scope)}return ${validateCode}`\n // console.log((codeSize += sourceCode.length), (nodeCount += gen.nodeCount))\n if (this.opts.code.process) sourceCode = this.opts.code.process(sourceCode, sch)\n // console.log(\"\\n\\n\\n *** \\n\", sourceCode)\n const makeValidate = new Function(`${N.self}`, `${N.scope}`, sourceCode)\n const validate: AnyValidateFunction = makeValidate(this, this.scope.get())\n this.scope.value(validateName, {ref: validate})\n\n validate.errors = null\n validate.schema = sch.schema\n validate.schemaEnv = sch\n if (sch.$async) (validate as AsyncValidateFunction).$async = true\n if (this.opts.code.source === true) {\n validate.source = {validateName, validateCode, scopeValues: gen._values}\n }\n if (this.opts.unevaluated) {\n const {props, items} = schemaCxt\n validate.evaluated = {\n props: props instanceof Name ? undefined : props,\n items: items instanceof Name ? undefined : items,\n dynamicProps: props instanceof Name,\n dynamicItems: items instanceof Name,\n }\n if (validate.source) validate.source.evaluated = stringify(validate.evaluated)\n }\n sch.validate = validate\n return sch\n } catch (e) {\n delete sch.validate\n delete sch.validateName\n if (sourceCode) this.logger.error(\"Error compiling schema, function code:\", sourceCode)\n // console.log(\"\\n\\n\\n *** \\n\", sourceCode, this.opts)\n throw e\n } finally {\n this._compilations.delete(sch)\n }\n}\n\nexport function resolveRef(\n this: Ajv,\n root: SchemaEnv,\n baseId: string,\n ref: string\n): AnySchema | SchemaEnv | undefined {\n ref = resolveUrl(this.opts.uriResolver, baseId, ref)\n const schOrFunc = root.refs[ref]\n if (schOrFunc) return schOrFunc\n\n let _sch = resolve.call(this, root, ref)\n if (_sch === undefined) {\n const schema = root.localRefs?.[ref] // TODO maybe localRefs should hold SchemaEnv\n const {schemaId} = this.opts\n if (schema) _sch = new SchemaEnv({schema, schemaId, root, baseId})\n }\n\n if (_sch === undefined) return\n return (root.refs[ref] = inlineOrCompile.call(this, _sch))\n}\n\nfunction inlineOrCompile(this: Ajv, sch: SchemaEnv): AnySchema | SchemaEnv {\n if (inlineRef(sch.schema, this.opts.inlineRefs)) return sch.schema\n return sch.validate ? sch : compileSchema.call(this, sch)\n}\n\n// Index of schema compilation in the currently compiled list\nexport function getCompilingSchema(this: Ajv, schEnv: SchemaEnv): SchemaEnv | void {\n for (const sch of this._compilations) {\n if (sameSchemaEnv(sch, schEnv)) return sch\n }\n}\n\nfunction sameSchemaEnv(s1: SchemaEnv, s2: SchemaEnv): boolean {\n return s1.schema === s2.schema && s1.root === s2.root && s1.baseId === s2.baseId\n}\n\n// resolve and compile the references ($ref)\n// TODO returns AnySchemaObject (if the schema can be inlined) or validation function\nfunction resolve(\n this: Ajv,\n root: SchemaEnv, // information about the root schema for the current schema\n ref: string // reference to resolve\n): SchemaEnv | undefined {\n let sch\n while (typeof (sch = this.refs[ref]) == \"string\") ref = sch\n return sch || this.schemas[ref] || resolveSchema.call(this, root, ref)\n}\n\n// Resolve schema, its root and baseId\nexport function resolveSchema(\n this: Ajv,\n root: SchemaEnv, // root object with properties schema, refs TODO below SchemaEnv is assigned to it\n ref: string // reference to resolve\n): SchemaEnv | undefined {\n const p = this.opts.uriResolver.parse(ref)\n const refPath = _getFullPath(this.opts.uriResolver, p)\n let baseId = getFullPath(this.opts.uriResolver, root.baseId, undefined)\n // TODO `Object.keys(root.schema).length > 0` should not be needed - but removing breaks 2 tests\n if (Object.keys(root.schema).length > 0 && refPath === baseId) {\n return getJsonPointer.call(this, p, root)\n }\n\n const id = normalizeId(refPath)\n const schOrRef = this.refs[id] || this.schemas[id]\n if (typeof schOrRef == \"string\") {\n const sch = resolveSchema.call(this, root, schOrRef)\n if (typeof sch?.schema !== \"object\") return\n return getJsonPointer.call(this, p, sch)\n }\n\n if (typeof schOrRef?.schema !== \"object\") return\n if (!schOrRef.validate) compileSchema.call(this, schOrRef)\n if (id === normalizeId(ref)) {\n const {schema} = schOrRef\n const {schemaId} = this.opts\n const schId = schema[schemaId]\n if (schId) baseId = resolveUrl(this.opts.uriResolver, baseId, schId)\n return new SchemaEnv({schema, schemaId, root, baseId})\n }\n return getJsonPointer.call(this, p, schOrRef)\n}\n\nconst PREVENT_SCOPE_CHANGE = new Set([\n \"properties\",\n \"patternProperties\",\n \"enum\",\n \"dependencies\",\n \"definitions\",\n])\n\nfunction getJsonPointer(\n this: Ajv,\n parsedRef: URIComponent,\n {baseId, schema, root}: SchemaEnv\n): SchemaEnv | undefined {\n if (parsedRef.fragment?.[0] !== \"/\") return\n for (const part of parsedRef.fragment.slice(1).split(\"/\")) {\n if (typeof schema === \"boolean\") return\n const partSchema = schema[unescapeFragment(part)]\n if (partSchema === undefined) return\n schema = partSchema\n // TODO PREVENT_SCOPE_CHANGE could be defined in keyword def?\n const schId = typeof schema === \"object\" && schema[this.opts.schemaId]\n if (!PREVENT_SCOPE_CHANGE.has(part) && schId) {\n baseId = resolveUrl(this.opts.uriResolver, baseId, schId)\n }\n }\n let env: SchemaEnv | undefined\n if (typeof schema != \"boolean\" && schema.$ref && !schemaHasRulesButRef(schema, this.RULES)) {\n const $ref = resolveUrl(this.opts.uriResolver, baseId, schema.$ref)\n env = resolveSchema.call(this, root, $ref)\n }\n // even though resolution failed we need to return SchemaEnv to throw exception\n // so that compileAsync loads missing schema.\n const {schemaId} = this.opts\n env = env || new SchemaEnv({schema, schemaId, root, baseId})\n if (env.schema !== env.root.schema) return env\n return undefined\n}\n","{\n \"$id\": \"https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#\",\n \"description\": \"Meta-schema for $data reference (JSON AnySchema extension proposal)\",\n \"type\": \"object\",\n \"required\": [\"$data\"],\n \"properties\": {\n \"$data\": {\n \"type\": \"string\",\n \"anyOf\": [{\"format\": \"relative-json-pointer\"}, {\"format\": \"json-pointer\"}]\n }\n },\n \"additionalProperties\": false\n}\n","'use strict'\n\n/** @type {(value: string) => boolean} */\nconst isUUID = RegExp.prototype.test.bind(/^[\\da-f]{8}-[\\da-f]{4}-[\\da-f]{4}-[\\da-f]{4}-[\\da-f]{12}$/iu)\n\n/** @type {(value: string) => boolean} */\nconst isIPv4 = RegExp.prototype.test.bind(/^(?:(?:25[0-5]|2[0-4]\\d|1\\d{2}|[1-9]\\d|\\d)\\.){3}(?:25[0-5]|2[0-4]\\d|1\\d{2}|[1-9]\\d|\\d)$/u)\n\n/** @type {(value: string) => boolean} */\nconst isHexPair = RegExp.prototype.test.bind(/^[\\da-f]{2}$/iu)\n\n/** @type {(value: string) => boolean} */\nconst isUnreserved = RegExp.prototype.test.bind(/^[\\da-z\\-._~]$/iu)\n\n/** @type {(value: string) => boolean} */\nconst isPathCharacter = RegExp.prototype.test.bind(/^[\\da-z\\-._~!$&'()*+,;=:@/]$/iu)\n\n/**\n * @param {Array<string>} input\n * @returns {string}\n */\nfunction stringArrayToHexStripped (input) {\n let acc = ''\n let code = 0\n let i = 0\n\n for (i = 0; i < input.length; i++) {\n code = input[i].charCodeAt(0)\n if (code === 48) {\n continue\n }\n if (!((code >= 48 && code <= 57) || (code >= 65 && code <= 70) || (code >= 97 && code <= 102))) {\n return ''\n }\n acc += input[i]\n break\n }\n\n for (i += 1; i < input.length; i++) {\n code = input[i].charCodeAt(0)\n if (!((code >= 48 && code <= 57) || (code >= 65 && code <= 70) || (code >= 97 && code <= 102))) {\n return ''\n }\n acc += input[i]\n }\n return acc\n}\n\n/**\n * @typedef {Object} GetIPV6Result\n * @property {boolean} error - Indicates if there was an error parsing the IPv6 address.\n * @property {string} address - The parsed IPv6 address.\n * @property {string} [zone] - The zone identifier, if present.\n */\n\n/**\n * @param {string} value\n * @returns {boolean}\n */\nconst nonSimpleDomain = RegExp.prototype.test.bind(/[^!\"$&'()*+,\\-.;=_`a-z{}~]/u)\n\n/**\n * @param {Array<string>} buffer\n * @returns {boolean}\n */\nfunction consumeIsZone (buffer) {\n buffer.length = 0\n return true\n}\n\n/**\n * @param {Array<string>} buffer\n * @param {Array<string>} address\n * @param {GetIPV6Result} output\n * @returns {boolean}\n */\nfunction consumeHextets (buffer, address, output) {\n if (buffer.length) {\n const hex = stringArrayToHexStripped(buffer)\n if (hex !== '') {\n address.push(hex)\n } else {\n output.error = true\n return false\n }\n buffer.length = 0\n }\n return true\n}\n\n/**\n * @param {string} input\n * @returns {GetIPV6Result}\n */\nfunction getIPV6 (input) {\n let tokenCount = 0\n const output = { error: false, address: '', zone: '' }\n /** @type {Array<string>} */\n const address = []\n /** @type {Array<string>} */\n const buffer = []\n let endipv6Encountered = false\n let endIpv6 = false\n\n let consume = consumeHextets\n\n for (let i = 0; i < input.length; i++) {\n const cursor = input[i]\n if (cursor === '[' || cursor === ']') { continue }\n if (cursor === ':') {\n if (endipv6Encountered === true) {\n endIpv6 = true\n }\n if (!consume(buffer, address, output)) { break }\n if (++tokenCount > 7) {\n // not valid\n output.error = true\n break\n }\n if (i > 0 && input[i - 1] === ':') {\n endipv6Encountered = true\n }\n address.push(':')\n continue\n } else if (cursor === '%') {\n if (!consume(buffer, address, output)) { break }\n // switch to zone detection\n consume = consumeIsZone\n } else {\n buffer.push(cursor)\n continue\n }\n }\n if (buffer.length) {\n if (consume === consumeIsZone) {\n output.zone = buffer.join('')\n } else if (endIpv6) {\n address.push(buffer.join(''))\n } else {\n address.push(stringArrayToHexStripped(buffer))\n }\n }\n output.address = address.join('')\n return output\n}\n\n/**\n * @typedef {Object} NormalizeIPv6Result\n * @property {string} host - The normalized host.\n * @property {string} [escapedHost] - The escaped host.\n * @property {boolean} isIPV6 - Indicates if the host is an IPv6 address.\n */\n\n/**\n * @param {string} host\n * @returns {NormalizeIPv6Result}\n */\nfunction normalizeIPv6 (host) {\n if (findToken(host, ':') < 2) { return { host, isIPV6: false } }\n const ipv6 = getIPV6(host)\n\n if (!ipv6.error) {\n let newHost = ipv6.address\n let escapedHost = ipv6.address\n if (ipv6.zone) {\n newHost += '%' + ipv6.zone\n escapedHost += '%25' + ipv6.zone\n }\n return { host: newHost, isIPV6: true, escapedHost }\n } else {\n return { host, isIPV6: false }\n }\n}\n\n/**\n * @param {string} str\n * @param {string} token\n * @returns {number}\n */\nfunction findToken (str, token) {\n let ind = 0\n for (let i = 0; i < str.length; i++) {\n if (str[i] === token) ind++\n }\n return ind\n}\n\n/**\n * @param {string} path\n * @returns {string}\n *\n * @see https://datatracker.ietf.org/doc/html/rfc3986#section-5.2.4\n */\nfunction removeDotSegments (path) {\n let input = path\n const output = []\n let nextSlash = -1\n let len = 0\n\n // eslint-disable-next-line no-cond-assign\n while (len = input.length) {\n if (len === 1) {\n if (input === '.') {\n break\n } else if (input === '/') {\n output.push('/')\n break\n } else {\n output.push(input)\n break\n }\n } else if (len === 2) {\n if (input[0] === '.') {\n if (input[1] === '.') {\n break\n } else if (input[1] === '/') {\n input = input.slice(2)\n continue\n }\n } else if (input[0] === '/') {\n if (input[1] === '.' || input[1] === '/') {\n output.push('/')\n break\n }\n }\n } else if (len === 3) {\n if (input === '/..') {\n if (output.length !== 0) {\n output.pop()\n }\n output.push('/')\n break\n }\n }\n if (input[0] === '.') {\n if (input[1] === '.') {\n if (input[2] === '/') {\n input = input.slice(3)\n continue\n }\n } else if (input[1] === '/') {\n input = input.slice(2)\n continue\n }\n } else if (input[0] === '/') {\n if (input[1] === '.') {\n if (input[2] === '/') {\n input = input.slice(2)\n continue\n } else if (input[2] === '.') {\n if (input[3] === '/') {\n input = input.slice(3)\n if (output.length !== 0) {\n output.pop()\n }\n continue\n }\n }\n }\n }\n\n // Rule 2E: Move normal path segment to output\n if ((nextSlash = input.indexOf('/', 1)) === -1) {\n output.push(input)\n break\n } else {\n output.push(input.slice(0, nextSlash))\n input = input.slice(nextSlash)\n }\n }\n\n return output.join('')\n}\n\n/**\n * Re-escape RFC 3986 gen-delims that must not appear literally in the host.\n * After the URI regex parses, these characters cannot be literal in the host\n * field, so any that appear after decoding came from percent-encoding and\n * must be restored to prevent authority structure changes.\n *\n * @param {string} host\n * @param {boolean} isIP - true for IPv4/IPv6 hosts (skip colon re-escaping)\n * @returns {string}\n */\nconst HOST_DELIMS = { '@': '%40', '/': '%2F', '?': '%3F', '#': '%23', ':': '%3A' }\nconst HOST_DELIM_RE = /[@/?#:]/g\nconst HOST_DELIM_NO_COLON_RE = /[@/?#]/g\n\nfunction reescapeHostDelimiters (host, isIP) {\n const re = isIP ? HOST_DELIM_NO_COLON_RE : HOST_DELIM_RE\n re.lastIndex = 0\n return host.replace(re, (ch) => HOST_DELIMS[ch])\n}\n\n/**\n * Normalizes percent escapes and optionally decodes only unreserved ASCII bytes.\n * Reserved delimiters such as `%2F` and `%2E` stay escaped.\n *\n * @param {string} input\n * @param {boolean} [decodeUnreserved=false]\n * @returns {string}\n */\nfunction normalizePercentEncoding (input, decodeUnreserved = false) {\n if (input.indexOf('%') === -1) {\n return input\n }\n\n let output = ''\n\n for (let i = 0; i < input.length; i++) {\n if (input[i] === '%' && i + 2 < input.length) {\n const hex = input.slice(i + 1, i + 3)\n if (isHexPair(hex)) {\n const normalizedHex = hex.toUpperCase()\n const decoded = String.fromCharCode(parseInt(normalizedHex, 16))\n\n if (decodeUnreserved && isUnreserved(decoded)) {\n output += decoded\n } else {\n output += '%' + normalizedHex\n }\n\n i += 2\n continue\n }\n }\n\n output += input[i]\n }\n\n return output\n}\n\n/**\n * Normalizes path data without turning reserved escapes into live path syntax.\n * Valid escapes are uppercased, raw unsafe characters are escaped, and only\n * unreserved bytes that are not `.` are decoded.\n *\n * @param {string} input\n * @returns {string}\n */\nfunction normalizePathEncoding (input) {\n let output = ''\n\n for (let i = 0; i < input.length; i++) {\n if (input[i] === '%' && i + 2 < input.length) {\n const hex = input.slice(i + 1, i + 3)\n if (isHexPair(hex)) {\n const normalizedHex = hex.toUpperCase()\n const decoded = String.fromCharCode(parseInt(normalizedHex, 16))\n\n if (decoded !== '.' && isUnreserved(decoded)) {\n output += decoded\n } else {\n output += '%' + normalizedHex\n }\n\n i += 2\n continue\n }\n }\n\n if (isPathCharacter(input[i])) {\n output += input[i]\n } else {\n output += escape(input[i])\n }\n }\n\n return output\n}\n\n/**\n * Escapes a component while preserving existing valid percent escapes.\n *\n * @param {string} input\n * @returns {string}\n */\nfunction escapePreservingEscapes (input) {\n let output = ''\n\n for (let i = 0; i < input.length; i++) {\n if (input[i] === '%' && i + 2 < input.length) {\n const hex = input.slice(i + 1, i + 3)\n if (isHexPair(hex)) {\n output += '%' + hex.toUpperCase()\n i += 2\n continue\n }\n }\n\n output += escape(input[i])\n }\n\n return output\n}\n\n/**\n * @param {import('../types/index').URIComponent} component\n * @returns {string|undefined}\n */\nfunction recomposeAuthority (component) {\n const uriTokens = []\n\n if (component.userinfo !== undefined) {\n uriTokens.push(component.userinfo)\n uriTokens.push('@')\n }\n\n if (component.host !== undefined) {\n let host = unescape(component.host)\n if (!isIPv4(host)) {\n const ipV6res = normalizeIPv6(host)\n if (ipV6res.isIPV6 === true) {\n host = `[${ipV6res.escapedHost}]`\n } else {\n host = reescapeHostDelimiters(host, false)\n }\n }\n uriTokens.push(host)\n }\n\n if (typeof component.port === 'number' || typeof component.port === 'string') {\n uriTokens.push(':')\n uriTokens.push(String(component.port))\n }\n\n return uriTokens.length ? uriTokens.join('') : undefined\n};\n\nmodule.exports = {\n nonSimpleDomain,\n recomposeAuthority,\n reescapeHostDelimiters,\n normalizePercentEncoding,\n normalizePathEncoding,\n escapePreservingEscapes,\n removeDotSegments,\n isIPv4,\n isUUID,\n normalizeIPv6,\n stringArrayToHexStripped\n}\n","'use strict'\n\nconst { isUUID } = require('./utils')\nconst URN_REG = /([\\da-z][\\d\\-a-z]{0,31}):((?:[\\w!$'()*+,\\-.:;=@]|%[\\da-f]{2})+)/iu\n\nconst supportedSchemeNames = /** @type {const} */ (['http', 'https', 'ws',\n 'wss', 'urn', 'urn:uuid'])\n\n/** @typedef {supportedSchemeNames[number]} SchemeName */\n\n/**\n * @param {string} name\n * @returns {name is SchemeName}\n */\nfunction isValidSchemeName (name) {\n return supportedSchemeNames.indexOf(/** @type {*} */ (name)) !== -1\n}\n\n/**\n * @callback SchemeFn\n * @param {import('../types/index').URIComponent} component\n * @param {import('../types/index').Options} options\n * @returns {import('../types/index').URIComponent}\n */\n\n/**\n * @typedef {Object} SchemeHandler\n * @property {SchemeName} scheme - The scheme name.\n * @property {boolean} [domainHost] - Indicates if the scheme supports domain hosts.\n * @property {SchemeFn} parse - Function to parse the URI component for this scheme.\n * @property {SchemeFn} serialize - Function to serialize the URI component for this scheme.\n * @property {boolean} [skipNormalize] - Indicates if normalization should be skipped for this scheme.\n * @property {boolean} [absolutePath] - Indicates if the scheme uses absolute paths.\n * @property {boolean} [unicodeSupport] - Indicates if the scheme supports Unicode.\n */\n\n/**\n * @param {import('../types/index').URIComponent} wsComponent\n * @returns {boolean}\n */\nfunction wsIsSecure (wsComponent) {\n if (wsComponent.secure === true) {\n return true\n } else if (wsComponent.secure === false) {\n return false\n } else if (wsComponent.scheme) {\n return (\n wsComponent.scheme.length === 3 &&\n (wsComponent.scheme[0] === 'w' || wsComponent.scheme[0] === 'W') &&\n (wsComponent.scheme[1] === 's' || wsComponent.scheme[1] === 'S') &&\n (wsComponent.scheme[2] === 's' || wsComponent.scheme[2] === 'S')\n )\n } else {\n return false\n }\n}\n\n/** @type {SchemeFn} */\nfunction httpParse (component) {\n if (!component.host) {\n component.error = component.error || 'HTTP URIs must have a host.'\n }\n\n return component\n}\n\n/** @type {SchemeFn} */\nfunction httpSerialize (component) {\n const secure = String(component.scheme).toLowerCase() === 'https'\n\n // normalize the default port\n if (component.port === (secure ? 443 : 80) || component.port === '') {\n component.port = undefined\n }\n\n // normalize the empty path\n if (!component.path) {\n component.path = '/'\n }\n\n // NOTE: We do not parse query strings for HTTP URIs\n // as WWW Form Url Encoded query strings are part of the HTML4+ spec,\n // and not the HTTP spec.\n\n return component\n}\n\n/** @type {SchemeFn} */\nfunction wsParse (wsComponent) {\n// indicate if the secure flag is set\n wsComponent.secure = wsIsSecure(wsComponent)\n\n // construct resouce name\n wsComponent.resourceName = (wsComponent.path || '/') + (wsComponent.query ? '?' + wsComponent.query : '')\n wsComponent.path = undefined\n wsComponent.query = undefined\n\n return wsComponent\n}\n\n/** @type {SchemeFn} */\nfunction wsSerialize (wsComponent) {\n// normalize the default port\n if (wsComponent.port === (wsIsSecure(wsComponent) ? 443 : 80) || wsComponent.port === '') {\n wsComponent.port = undefined\n }\n\n // ensure scheme matches secure flag\n if (typeof wsComponent.secure === 'boolean') {\n wsComponent.scheme = (wsComponent.secure ? 'wss' : 'ws')\n wsComponent.secure = undefined\n }\n\n // reconstruct path from resource name\n if (wsComponent.resourceName) {\n const [path, query] = wsComponent.resourceName.split('?')\n wsComponent.path = (path && path !== '/' ? path : undefined)\n wsComponent.query = query\n wsComponent.resourceName = undefined\n }\n\n // forbid fragment component\n wsComponent.fragment = undefined\n\n return wsComponent\n}\n\n/** @type {SchemeFn} */\nfunction urnParse (urnComponent, options) {\n if (!urnComponent.path) {\n urnComponent.error = 'URN can not be parsed'\n return urnComponent\n }\n const matches = urnComponent.path.match(URN_REG)\n if (matches) {\n const scheme = options.scheme || urnComponent.scheme || 'urn'\n urnComponent.nid = matches[1].toLowerCase()\n urnComponent.nss = matches[2]\n const urnScheme = `${scheme}:${options.nid || urnComponent.nid}`\n const schemeHandler = getSchemeHandler(urnScheme)\n urnComponent.path = undefined\n\n if (schemeHandler) {\n urnComponent = schemeHandler.parse(urnComponent, options)\n }\n } else {\n urnComponent.error = urnComponent.error || 'URN can not be parsed.'\n }\n\n return urnComponent\n}\n\n/** @type {SchemeFn} */\nfunction urnSerialize (urnComponent, options) {\n if (urnComponent.nid === undefined) {\n throw new Error('URN without nid cannot be serialized')\n }\n const scheme = options.scheme || urnComponent.scheme || 'urn'\n const nid = urnComponent.nid.toLowerCase()\n const urnScheme = `${scheme}:${options.nid || nid}`\n const schemeHandler = getSchemeHandler(urnScheme)\n\n if (schemeHandler) {\n urnComponent = schemeHandler.serialize(urnComponent, options)\n }\n\n const uriComponent = urnComponent\n const nss = urnComponent.nss\n uriComponent.path = `${nid || options.nid}:${nss}`\n\n options.skipEscape = true\n return uriComponent\n}\n\n/** @type {SchemeFn} */\nfunction urnuuidParse (urnComponent, options) {\n const uuidComponent = urnComponent\n uuidComponent.uuid = uuidComponent.nss\n uuidComponent.nss = undefined\n\n if (!options.tolerant && (!uuidComponent.uuid || !isUUID(uuidComponent.uuid))) {\n uuidComponent.error = uuidComponent.error || 'UUID is not valid.'\n }\n\n return uuidComponent\n}\n\n/** @type {SchemeFn} */\nfunction urnuuidSerialize (uuidComponent) {\n const urnComponent = uuidComponent\n // normalize UUID\n urnComponent.nss = (uuidComponent.uuid || '').toLowerCase()\n return urnComponent\n}\n\nconst http = /** @type {SchemeHandler} */ ({\n scheme: 'http',\n domainHost: true,\n parse: httpParse,\n serialize: httpSerialize\n})\n\nconst https = /** @type {SchemeHandler} */ ({\n scheme: 'https',\n domainHost: http.domainHost,\n parse: httpParse,\n serialize: httpSerialize\n})\n\nconst ws = /** @type {SchemeHandler} */ ({\n scheme: 'ws',\n domainHost: true,\n parse: wsParse,\n serialize: wsSerialize\n})\n\nconst wss = /** @type {SchemeHandler} */ ({\n scheme: 'wss',\n domainHost: ws.domainHost,\n parse: ws.parse,\n serialize: ws.serialize\n})\n\nconst urn = /** @type {SchemeHandler} */ ({\n scheme: 'urn',\n parse: urnParse,\n serialize: urnSerialize,\n skipNormalize: true\n})\n\nconst urnuuid = /** @type {SchemeHandler} */ ({\n scheme: 'urn:uuid',\n parse: urnuuidParse,\n serialize: urnuuidSerialize,\n skipNormalize: true\n})\n\nconst SCHEMES = /** @type {Record<SchemeName, SchemeHandler>} */ ({\n http,\n https,\n ws,\n wss,\n urn,\n 'urn:uuid': urnuuid\n})\n\nObject.setPrototypeOf(SCHEMES, null)\n\n/**\n * @param {string|undefined} scheme\n * @returns {SchemeHandler|undefined}\n */\nfunction getSchemeHandler (scheme) {\n return (\n scheme && (\n SCHEMES[/** @type {SchemeName} */ (scheme)] ||\n SCHEMES[/** @type {SchemeName} */(scheme.toLowerCase())])\n ) ||\n undefined\n}\n\nmodule.exports = {\n wsIsSecure,\n SCHEMES,\n isValidSchemeName,\n getSchemeHandler,\n}\n","'use strict'\n\nconst { normalizeIPv6, removeDotSegments, recomposeAuthority, normalizePercentEncoding, normalizePathEncoding, escapePreservingEscapes, reescapeHostDelimiters, isIPv4, nonSimpleDomain } = require('./lib/utils')\nconst { SCHEMES, getSchemeHandler } = require('./lib/schemes')\n\n/**\n * @template {import('./types/index').URIComponent|string} T\n * @param {T} uri\n * @param {import('./types/index').Options} [options]\n * @returns {T}\n */\nfunction normalize (uri, options) {\n if (typeof uri === 'string') {\n uri = /** @type {T} */ (normalizeString(uri, options))\n } else if (typeof uri === 'object') {\n uri = /** @type {T} */ (parse(serialize(uri, options), options))\n }\n return uri\n}\n\n/**\n * @param {string} baseURI\n * @param {string} relativeURI\n * @param {import('./types/index').Options} [options]\n * @returns {string}\n */\nfunction resolve (baseURI, relativeURI, options) {\n const schemelessOptions = options ? Object.assign({ scheme: 'null' }, options) : { scheme: 'null' }\n const resolved = resolveComponent(parse(baseURI, schemelessOptions), parse(relativeURI, schemelessOptions), schemelessOptions, true)\n schemelessOptions.skipEscape = true\n return serialize(resolved, schemelessOptions)\n}\n\n/**\n * @param {import ('./types/index').URIComponent} base\n * @param {import ('./types/index').URIComponent} relative\n * @param {import('./types/index').Options} [options]\n * @param {boolean} [skipNormalization=false]\n * @returns {import ('./types/index').URIComponent}\n */\nfunction resolveComponent (base, relative, options, skipNormalization) {\n /** @type {import('./types/index').URIComponent} */\n const target = {}\n if (!skipNormalization) {\n base = parse(serialize(base, options), options) // normalize base component\n relative = parse(serialize(relative, options), options) // normalize relative component\n }\n options = options || {}\n\n if (!options.tolerant && relative.scheme) {\n target.scheme = relative.scheme\n // target.authority = relative.authority;\n target.userinfo = relative.userinfo\n target.host = relative.host\n target.port = relative.port\n target.path = removeDotSegments(relative.path || '')\n target.query = relative.query\n } else {\n if (relative.userinfo !== undefined || relative.host !== undefined || relative.port !== undefined) {\n // target.authority = relative.authority;\n target.userinfo = relative.userinfo\n target.host = relative.host\n target.port = relative.port\n target.path = removeDotSegments(relative.path || '')\n target.query = relative.query\n } else {\n if (!relative.path) {\n target.path = base.path\n if (relative.query !== undefined) {\n target.query = relative.query\n } else {\n target.query = base.query\n }\n } else {\n if (relative.path[0] === '/') {\n target.path = removeDotSegments(relative.path)\n } else {\n if ((base.userinfo !== undefined || base.host !== undefined || base.port !== undefined) && !base.path) {\n target.path = '/' + relative.path\n } else if (!base.path) {\n target.path = relative.path\n } else {\n target.path = base.path.slice(0, base.path.lastIndexOf('/') + 1) + relative.path\n }\n target.path = removeDotSegments(target.path)\n }\n target.query = relative.query\n }\n // target.authority = base.authority;\n target.userinfo = base.userinfo\n target.host = base.host\n target.port = base.port\n }\n target.scheme = base.scheme\n }\n\n target.fragment = relative.fragment\n\n return target\n}\n\n/**\n * @param {import ('./types/index').URIComponent|string} uriA\n * @param {import ('./types/index').URIComponent|string} uriB\n * @param {import ('./types/index').Options} options\n * @returns {boolean}\n */\nfunction equal (uriA, uriB, options) {\n const normalizedA = normalizeComparableURI(uriA, options)\n const normalizedB = normalizeComparableURI(uriB, options)\n\n return normalizedA !== undefined && normalizedB !== undefined && normalizedA.toLowerCase() === normalizedB.toLowerCase()\n}\n\n/**\n * @param {Readonly<import('./types/index').URIComponent>} cmpts\n * @param {import('./types/index').Options} [opts]\n * @returns {string}\n */\nfunction serialize (cmpts, opts) {\n const component = {\n host: cmpts.host,\n scheme: cmpts.scheme,\n userinfo: cmpts.userinfo,\n port: cmpts.port,\n path: cmpts.path,\n query: cmpts.query,\n nid: cmpts.nid,\n nss: cmpts.nss,\n uuid: cmpts.uuid,\n fragment: cmpts.fragment,\n reference: cmpts.reference,\n resourceName: cmpts.resourceName,\n secure: cmpts.secure,\n error: ''\n }\n const options = Object.assign({}, opts)\n const uriTokens = []\n\n // find scheme handler\n const schemeHandler = getSchemeHandler(options.scheme || component.scheme)\n\n // perform scheme specific serialization\n if (schemeHandler && schemeHandler.serialize) schemeHandler.serialize(component, options)\n\n if (component.path !== undefined) {\n if (!options.skipEscape) {\n component.path = escapePreservingEscapes(component.path)\n\n if (component.scheme !== undefined) {\n component.path = component.path.split('%3A').join(':')\n }\n } else {\n component.path = normalizePercentEncoding(component.path)\n }\n }\n\n if (options.reference !== 'suffix' && component.scheme) {\n uriTokens.push(component.scheme, ':')\n }\n\n const authority = recomposeAuthority(component)\n if (authority !== undefined) {\n if (options.reference !== 'suffix') {\n uriTokens.push('//')\n }\n\n uriTokens.push(authority)\n\n if (component.path && component.path[0] !== '/') {\n uriTokens.push('/')\n }\n }\n if (component.path !== undefined) {\n let s = component.path\n\n if (!options.absolutePath && (!schemeHandler || !schemeHandler.absolutePath)) {\n s = removeDotSegments(s)\n }\n\n if (\n authority === undefined &&\n s[0] === '/' &&\n s[1] === '/'\n ) {\n // don't allow the path to start with \"//\"\n s = '/%2F' + s.slice(2)\n }\n\n uriTokens.push(s)\n }\n\n if (component.query !== undefined) {\n uriTokens.push('?', component.query)\n }\n\n if (component.fragment !== undefined) {\n uriTokens.push('#', component.fragment)\n }\n return uriTokens.join('')\n}\n\nconst URI_PARSE = /^(?:([^#/:?]+):)?(?:\\/\\/((?:([^#/?@]*)@)?(\\[[^#/?\\]]+\\]|[^#/:?]*)(?::(\\d*))?))?([^#?]*)(?:\\?([^#]*))?(?:#((?:.|[\\n\\r])*))?/u\n\n/**\n * @param {import('./types/index').URIComponent} parsed\n * @param {RegExpMatchArray} matches\n * @returns {string|undefined}\n */\nfunction getParseError (parsed, matches) {\n if (matches[2] !== undefined && parsed.path && parsed.path[0] !== '/') {\n return 'URI path must start with \"/\" when authority is present.'\n }\n\n if (typeof parsed.port === 'number' && (parsed.port < 0 || parsed.port > 65535)) {\n return 'URI port is malformed.'\n }\n\n return undefined\n}\n\n/**\n * @param {string} uri\n * @param {import('./types/index').Options} [opts]\n * @returns {{ parsed: import('./types/index').URIComponent, malformedAuthorityOrPort: boolean }}\n */\nfunction parseWithStatus (uri, opts) {\n const options = Object.assign({}, opts)\n /** @type {import('./types/index').URIComponent} */\n const parsed = {\n scheme: undefined,\n userinfo: undefined,\n host: '',\n port: undefined,\n path: '',\n query: undefined,\n fragment: undefined\n }\n\n let malformedAuthorityOrPort = false\n\n let isIP = false\n if (options.reference === 'suffix') {\n if (options.scheme) {\n uri = options.scheme + ':' + uri\n } else {\n uri = '//' + uri\n }\n }\n\n const matches = uri.match(URI_PARSE)\n\n if (matches) {\n // store each component\n parsed.scheme = matches[1]\n parsed.userinfo = matches[3]\n parsed.host = matches[4]\n parsed.port = parseInt(matches[5], 10)\n parsed.path = matches[6] || ''\n parsed.query = matches[7]\n parsed.fragment = matches[8]\n\n // fix port number\n if (isNaN(parsed.port)) {\n parsed.port = matches[5]\n }\n\n const parseError = getParseError(parsed, matches)\n if (parseError !== undefined) {\n parsed.error = parsed.error || parseError\n malformedAuthorityOrPort = true\n }\n\n if (parsed.host) {\n const ipv4result = isIPv4(parsed.host)\n if (ipv4result === false) {\n const ipv6result = normalizeIPv6(parsed.host)\n parsed.host = ipv6result.host.toLowerCase()\n isIP = ipv6result.isIPV6\n } else {\n isIP = true\n }\n }\n if (parsed.scheme === undefined && parsed.userinfo === undefined && parsed.host === undefined && parsed.port === undefined && parsed.query === undefined && !parsed.path) {\n parsed.reference = 'same-document'\n } else if (parsed.scheme === undefined) {\n parsed.reference = 'relative'\n } else if (parsed.fragment === undefined) {\n parsed.reference = 'absolute'\n } else {\n parsed.reference = 'uri'\n }\n\n // check for reference errors\n if (options.reference && options.reference !== 'suffix' && options.reference !== parsed.reference) {\n parsed.error = parsed.error || 'URI is not a ' + options.reference + ' reference.'\n }\n\n // find scheme handler\n const schemeHandler = getSchemeHandler(options.scheme || parsed.scheme)\n\n // check if scheme can't handle IRIs\n if (!options.unicodeSupport && (!schemeHandler || !schemeHandler.unicodeSupport)) {\n // if host component is a domain name\n if (parsed.host && (options.domainHost || (schemeHandler && schemeHandler.domainHost)) && isIP === false && nonSimpleDomain(parsed.host)) {\n // convert Unicode IDN -> ASCII IDN\n try {\n parsed.host = new URL('http://' + parsed.host).hostname\n } catch (e) {\n parsed.error = parsed.error || \"Host's domain name can not be converted to ASCII: \" + e\n }\n }\n // convert IRI -> URI\n }\n\n if (!schemeHandler || (schemeHandler && !schemeHandler.skipNormalize)) {\n if (uri.indexOf('%') !== -1) {\n if (parsed.scheme !== undefined) {\n parsed.scheme = unescape(parsed.scheme)\n }\n if (parsed.host !== undefined) {\n parsed.host = reescapeHostDelimiters(unescape(parsed.host), isIP)\n }\n }\n if (parsed.path) {\n parsed.path = normalizePathEncoding(parsed.path)\n }\n if (parsed.fragment) {\n try {\n parsed.fragment = encodeURI(decodeURIComponent(parsed.fragment))\n } catch {\n parsed.error = parsed.error || 'URI malformed'\n }\n }\n }\n\n // perform scheme specific parsing\n if (schemeHandler && schemeHandler.parse) {\n schemeHandler.parse(parsed, options)\n }\n } else {\n parsed.error = parsed.error || 'URI can not be parsed.'\n }\n return { parsed, malformedAuthorityOrPort }\n}\n\n/**\n * @param {string} uri\n * @param {import('./types/index').Options} [opts]\n * @returns\n */\nfunction parse (uri, opts) {\n return parseWithStatus(uri, opts).parsed\n}\n\n/**\n * @param {string} uri\n * @param {import('./types/index').Options} [opts]\n * @returns {string}\n */\nfunction normalizeString (uri, opts) {\n return normalizeStringWithStatus(uri, opts).normalized\n}\n\n/**\n * @param {string} uri\n * @param {import('./types/index').Options} [opts]\n * @returns {{ normalized: string, malformedAuthorityOrPort: boolean }}\n */\nfunction normalizeStringWithStatus (uri, opts) {\n const { parsed, malformedAuthorityOrPort } = parseWithStatus(uri, opts)\n return {\n normalized: malformedAuthorityOrPort ? uri : serialize(parsed, opts),\n malformedAuthorityOrPort\n }\n}\n\n/**\n * @param {import ('./types/index').URIComponent|string} uri\n * @param {import('./types/index').Options} [opts]\n * @returns {string|undefined}\n */\nfunction normalizeComparableURI (uri, opts) {\n if (typeof uri === 'string') {\n const { normalized, malformedAuthorityOrPort } = normalizeStringWithStatus(uri, opts)\n return malformedAuthorityOrPort ? undefined : normalized\n }\n\n if (typeof uri === 'object') {\n return serialize(uri, opts)\n }\n}\n\nconst fastUri = {\n SCHEMES,\n normalize,\n resolve,\n resolveComponent,\n equal,\n serialize,\n parse\n}\n\nmodule.exports = fastUri\nmodule.exports.default = fastUri\nmodule.exports.fastUri = fastUri\n","import * as uri from \"fast-uri\"\n\ntype URI = typeof uri & {code: string}\n;(uri as URI).code = 'require(\"ajv/dist/runtime/uri\").default'\n\nexport default uri as URI\n","export {\n Format,\n FormatDefinition,\n AsyncFormatDefinition,\n KeywordDefinition,\n KeywordErrorDefinition,\n CodeKeywordDefinition,\n MacroKeywordDefinition,\n FuncKeywordDefinition,\n Vocabulary,\n Schema,\n SchemaObject,\n AnySchemaObject,\n AsyncSchema,\n AnySchema,\n ValidateFunction,\n AsyncValidateFunction,\n AnyValidateFunction,\n ErrorObject,\n ErrorNoParams,\n} from \"./types\"\n\nexport {SchemaCxt, SchemaObjCxt} from \"./compile\"\nexport interface Plugin<Opts> {\n (ajv: Ajv, options?: Opts): Ajv\n [prop: string]: any\n}\n\nexport {KeywordCxt} from \"./compile/validate\"\nexport {DefinedError} from \"./vocabularies/errors\"\nexport {JSONType} from \"./compile/rules\"\nexport {JSONSchemaType} from \"./types/json-schema\"\nexport {JTDSchemaType, SomeJTDSchemaType, JTDDataType} from \"./types/jtd-schema\"\nexport {_, str, stringify, nil, Name, Code, CodeGen, CodeGenOptions} from \"./compile/codegen\"\n\nimport type {\n Schema,\n AnySchema,\n AnySchemaObject,\n SchemaObject,\n AsyncSchema,\n Vocabulary,\n KeywordDefinition,\n AddedKeywordDefinition,\n AnyValidateFunction,\n ValidateFunction,\n AsyncValidateFunction,\n ErrorObject,\n Format,\n AddedFormat,\n RegExpEngine,\n UriResolver,\n} from \"./types\"\nimport type {JSONSchemaType} from \"./types/json-schema\"\nimport type {JTDSchemaType, SomeJTDSchemaType, JTDDataType} from \"./types/jtd-schema\"\nimport ValidationError from \"./runtime/validation_error\"\nimport MissingRefError from \"./compile/ref_error\"\nimport {getRules, ValidationRules, Rule, RuleGroup, JSONType} from \"./compile/rules\"\nimport {SchemaEnv, compileSchema, resolveSchema} from \"./compile\"\nimport {Code, ValueScope} from \"./compile/codegen\"\nimport {normalizeId, getSchemaRefs} from \"./compile/resolve\"\nimport {getJSONTypes} from \"./compile/validate/dataType\"\nimport {eachItem} from \"./compile/util\"\nimport * as $dataRefSchema from \"./refs/data.json\"\n\nimport DefaultUriResolver from \"./runtime/uri\"\n\nconst defaultRegExp: RegExpEngine = (str, flags) => new RegExp(str, flags)\ndefaultRegExp.code = \"new RegExp\"\n\nconst META_IGNORE_OPTIONS: (keyof Options)[] = [\"removeAdditional\", \"useDefaults\", \"coerceTypes\"]\nconst EXT_SCOPE_NAMES = new Set([\n \"validate\",\n \"serialize\",\n \"parse\",\n \"wrapper\",\n \"root\",\n \"schema\",\n \"keyword\",\n \"pattern\",\n \"formats\",\n \"validate$data\",\n \"func\",\n \"obj\",\n \"Error\",\n])\n\nexport type Options = CurrentOptions & DeprecatedOptions\n\nexport interface CurrentOptions {\n // strict mode options (NEW)\n strict?: boolean | \"log\"\n strictSchema?: boolean | \"log\"\n strictNumbers?: boolean | \"log\"\n strictTypes?: boolean | \"log\"\n strictTuples?: boolean | \"log\"\n strictRequired?: boolean | \"log\"\n allowMatchingProperties?: boolean // disables a strict mode restriction\n allowUnionTypes?: boolean\n validateFormats?: boolean\n // validation and reporting options:\n $data?: boolean\n allErrors?: boolean\n verbose?: boolean\n discriminator?: boolean\n unicodeRegExp?: boolean\n timestamp?: \"string\" | \"date\" // JTD only\n parseDate?: boolean // JTD only\n allowDate?: boolean // JTD only\n specialNumbers?: \"fast\" | \"null\" // JTD only\n $comment?:\n | true\n | ((comment: string, schemaPath?: string, rootSchema?: AnySchemaObject) => unknown)\n formats?: {[Name in string]?: Format}\n keywords?: Vocabulary\n schemas?: AnySchema[] | {[Key in string]?: AnySchema}\n logger?: Logger | false\n loadSchema?: (uri: string) => Promise<AnySchemaObject>\n // options to modify validated data:\n removeAdditional?: boolean | \"all\" | \"failing\"\n useDefaults?: boolean | \"empty\"\n coerceTypes?: boolean | \"array\"\n // advanced options:\n next?: boolean // NEW\n unevaluated?: boolean // NEW\n dynamicRef?: boolean // NEW\n schemaId?: \"id\" | \"$id\"\n jtd?: boolean // NEW\n meta?: SchemaObject | boolean\n defaultMeta?: string | AnySchemaObject\n validateSchema?: boolean | \"log\"\n addUsedSchema?: boolean\n inlineRefs?: boolean | number\n passContext?: boolean\n loopRequired?: number\n loopEnum?: number // NEW\n ownProperties?: boolean\n multipleOfPrecision?: number\n int32range?: boolean // JTD only\n messages?: boolean\n code?: CodeOptions // NEW\n uriResolver?: UriResolver\n}\n\nexport interface CodeOptions {\n es5?: boolean\n esm?: boolean\n lines?: boolean\n optimize?: boolean | number\n formats?: Code // code to require (or construct) map of available formats - for standalone code\n source?: boolean\n process?: (code: string, schema?: SchemaEnv) => string\n regExp?: RegExpEngine\n}\n\ninterface InstanceCodeOptions extends CodeOptions {\n regExp: RegExpEngine\n optimize: number\n}\n\ninterface DeprecatedOptions {\n /** @deprecated */\n ignoreKeywordsWithRef?: boolean\n /** @deprecated */\n jsPropertySyntax?: boolean // added instead of jsonPointers\n /** @deprecated */\n unicode?: boolean\n}\n\ninterface RemovedOptions {\n format?: boolean\n errorDataPath?: \"object\" | \"property\"\n nullable?: boolean // \"nullable\" keyword is supported by default\n jsonPointers?: boolean\n extendRefs?: true | \"ignore\" | \"fail\"\n missingRefs?: true | \"ignore\" | \"fail\"\n processCode?: (code: string, schema?: SchemaEnv) => string\n sourceCode?: boolean\n strictDefaults?: boolean\n strictKeywords?: boolean\n uniqueItems?: boolean\n unknownFormats?: true | string[] | \"ignore\"\n cache?: any\n serialize?: (schema: AnySchema) => unknown\n ajvErrors?: boolean\n}\n\ntype OptionsInfo<T extends RemovedOptions | DeprecatedOptions> = {\n [K in keyof T]-?: string | undefined\n}\n\nconst removedOptions: OptionsInfo<RemovedOptions> = {\n errorDataPath: \"\",\n format: \"`validateFormats: false` can be used instead.\",\n nullable: '\"nullable\" keyword is supported by default.',\n jsonPointers: \"Deprecated jsPropertySyntax can be used instead.\",\n extendRefs: \"Deprecated ignoreKeywordsWithRef can be used instead.\",\n missingRefs: \"Pass empty schema with $id that should be ignored to ajv.addSchema.\",\n processCode: \"Use option `code: {process: (code, schemaEnv: object) => string}`\",\n sourceCode: \"Use option `code: {source: true}`\",\n strictDefaults: \"It is default now, see option `strict`.\",\n strictKeywords: \"It is default now, see option `strict`.\",\n uniqueItems: '\"uniqueItems\" keyword is always validated.',\n unknownFormats: \"Disable strict mode or pass `true` to `ajv.addFormat` (or `formats` option).\",\n cache: \"Map is used as cache, schema object as key.\",\n serialize: \"Map is used as cache, schema object as key.\",\n ajvErrors: \"It is default now.\",\n}\n\nconst deprecatedOptions: OptionsInfo<DeprecatedOptions> = {\n ignoreKeywordsWithRef: \"\",\n jsPropertySyntax: \"\",\n unicode: '\"minLength\"/\"maxLength\" account for unicode characters by default.',\n}\n\ntype RequiredInstanceOptions = {\n [K in\n | \"strictSchema\"\n | \"strictNumbers\"\n | \"strictTypes\"\n | \"strictTuples\"\n | \"strictRequired\"\n | \"inlineRefs\"\n | \"loopRequired\"\n | \"loopEnum\"\n | \"meta\"\n | \"messages\"\n | \"schemaId\"\n | \"addUsedSchema\"\n | \"validateSchema\"\n | \"validateFormats\"\n | \"int32range\"\n | \"unicodeRegExp\"\n | \"uriResolver\"]: NonNullable<Options[K]>\n} & {code: InstanceCodeOptions}\n\nexport type InstanceOptions = Options & RequiredInstanceOptions\n\nconst MAX_EXPRESSION = 200\n\n// eslint-disable-next-line complexity\nfunction requiredOptions(o: Options): RequiredInstanceOptions {\n const s = o.strict\n const _optz = o.code?.optimize\n const optimize = _optz === true || _optz === undefined ? 1 : _optz || 0\n const regExp = o.code?.regExp ?? defaultRegExp\n const uriResolver = o.uriResolver ?? DefaultUriResolver\n return {\n strictSchema: o.strictSchema ?? s ?? true,\n strictNumbers: o.strictNumbers ?? s ?? true,\n strictTypes: o.strictTypes ?? s ?? \"log\",\n strictTuples: o.strictTuples ?? s ?? \"log\",\n strictRequired: o.strictRequired ?? s ?? false,\n code: o.code ? {...o.code, optimize, regExp} : {optimize, regExp},\n loopRequired: o.loopRequired ?? MAX_EXPRESSION,\n loopEnum: o.loopEnum ?? MAX_EXPRESSION,\n meta: o.meta ?? true,\n messages: o.messages ?? true,\n inlineRefs: o.inlineRefs ?? true,\n schemaId: o.schemaId ?? \"$id\",\n addUsedSchema: o.addUsedSchema ?? true,\n validateSchema: o.validateSchema ?? true,\n validateFormats: o.validateFormats ?? true,\n unicodeRegExp: o.unicodeRegExp ?? true,\n int32range: o.int32range ?? true,\n uriResolver: uriResolver,\n }\n}\n\nexport interface Logger {\n log(...args: unknown[]): unknown\n warn(...args: unknown[]): unknown\n error(...args: unknown[]): unknown\n}\n\nexport default class Ajv {\n opts: InstanceOptions\n errors?: ErrorObject[] | null // errors from the last validation\n logger: Logger\n // shared external scope values for compiled functions\n readonly scope: ValueScope\n readonly schemas: {[Key in string]?: SchemaEnv} = {}\n readonly refs: {[Ref in string]?: SchemaEnv | string} = {}\n readonly formats: {[Name in string]?: AddedFormat} = Object.create(null)\n readonly RULES: ValidationRules\n readonly _compilations: Set<SchemaEnv> = new Set()\n private readonly _loading: {[Ref in string]?: Promise<AnySchemaObject>} = {}\n private readonly _cache: Map<AnySchema, SchemaEnv> = new Map()\n private readonly _metaOpts: InstanceOptions\n\n static ValidationError = ValidationError\n static MissingRefError = MissingRefError\n\n constructor(opts: Options = {}) {\n opts = this.opts = {...opts, ...requiredOptions(opts)}\n const {es5, lines} = this.opts.code\n\n this.scope = new ValueScope({scope: {}, prefixes: EXT_SCOPE_NAMES, es5, lines})\n this.logger = getLogger(opts.logger)\n const formatOpt = opts.validateFormats\n opts.validateFormats = false\n\n this.RULES = getRules()\n checkOptions.call(this, removedOptions, opts, \"NOT SUPPORTED\")\n checkOptions.call(this, deprecatedOptions, opts, \"DEPRECATED\", \"warn\")\n this._metaOpts = getMetaSchemaOptions.call(this)\n\n if (opts.formats) addInitialFormats.call(this)\n this._addVocabularies()\n this._addDefaultMetaSchema()\n if (opts.keywords) addInitialKeywords.call(this, opts.keywords)\n if (typeof opts.meta == \"object\") this.addMetaSchema(opts.meta)\n addInitialSchemas.call(this)\n opts.validateFormats = formatOpt\n }\n\n _addVocabularies(): void {\n this.addKeyword(\"$async\")\n }\n\n _addDefaultMetaSchema(): void {\n const {$data, meta, schemaId} = this.opts\n let _dataRefSchema: SchemaObject = $dataRefSchema\n if (schemaId === \"id\") {\n _dataRefSchema = {...$dataRefSchema}\n _dataRefSchema.id = _dataRefSchema.$id\n delete _dataRefSchema.$id\n }\n if (meta && $data) this.addMetaSchema(_dataRefSchema, _dataRefSchema[schemaId], false)\n }\n\n defaultMeta(): string | AnySchemaObject | undefined {\n const {meta, schemaId} = this.opts\n return (this.opts.defaultMeta = typeof meta == \"object\" ? meta[schemaId] || meta : undefined)\n }\n\n // Validate data using schema\n // AnySchema will be compiled and cached using schema itself as a key for Map\n validate(schema: Schema | string, data: unknown): boolean\n validate(schemaKeyRef: AnySchema | string, data: unknown): boolean | Promise<unknown>\n validate<T>(schema: Schema | JSONSchemaType<T> | string, data: unknown): data is T\n // Separated for type inference to work\n // eslint-disable-next-line @typescript-eslint/unified-signatures\n validate<T>(schema: JTDSchemaType<T>, data: unknown): data is T\n // This overload is only intended for typescript inference, the first\n // argument prevents manual type annotation from matching this overload\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n validate<N extends never, T extends SomeJTDSchemaType>(\n schema: T,\n data: unknown\n ): data is JTDDataType<T>\n // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\n validate<T>(schema: AsyncSchema, data: unknown | T): Promise<T>\n validate<T>(schemaKeyRef: AnySchema | string, data: unknown): data is T | Promise<T>\n validate<T>(\n schemaKeyRef: AnySchema | string, // key, ref or schema object\n // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\n data: unknown | T // to be validated\n ): boolean | Promise<T> {\n let v: AnyValidateFunction | undefined\n if (typeof schemaKeyRef == \"string\") {\n v = this.getSchema<T>(schemaKeyRef)\n if (!v) throw new Error(`no schema with key or ref \"${schemaKeyRef}\"`)\n } else {\n v = this.compile<T>(schemaKeyRef)\n }\n\n const valid = v(data)\n if (!(\"$async\" in v)) this.errors = v.errors\n return valid\n }\n\n // Create validation function for passed schema\n // _meta: true if schema is a meta-schema. Used internally to compile meta schemas of user-defined keywords.\n compile<T = unknown>(schema: Schema | JSONSchemaType<T>, _meta?: boolean): ValidateFunction<T>\n // Separated for type inference to work\n // eslint-disable-next-line @typescript-eslint/unified-signatures\n compile<T = unknown>(schema: JTDSchemaType<T>, _meta?: boolean): ValidateFunction<T>\n // This overload is only intended for typescript inference, the first\n // argument prevents manual type annotation from matching this overload\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n compile<N extends never, T extends SomeJTDSchemaType>(\n schema: T,\n _meta?: boolean\n ): ValidateFunction<JTDDataType<T>>\n compile<T = unknown>(schema: AsyncSchema, _meta?: boolean): AsyncValidateFunction<T>\n compile<T = unknown>(schema: AnySchema, _meta?: boolean): AnyValidateFunction<T>\n compile<T = unknown>(schema: AnySchema, _meta?: boolean): AnyValidateFunction<T> {\n const sch = this._addSchema(schema, _meta)\n return (sch.validate || this._compileSchemaEnv(sch)) as AnyValidateFunction<T>\n }\n\n // Creates validating function for passed schema with asynchronous loading of missing schemas.\n // `loadSchema` option should be a function that accepts schema uri and returns promise that resolves with the schema.\n // TODO allow passing schema URI\n // meta - optional true to compile meta-schema\n compileAsync<T = unknown>(\n schema: SchemaObject | JSONSchemaType<T>,\n _meta?: boolean\n ): Promise<ValidateFunction<T>>\n // Separated for type inference to work\n // eslint-disable-next-line @typescript-eslint/unified-signatures\n compileAsync<T = unknown>(schema: JTDSchemaType<T>, _meta?: boolean): Promise<ValidateFunction<T>>\n compileAsync<T = unknown>(schema: AsyncSchema, meta?: boolean): Promise<AsyncValidateFunction<T>>\n // eslint-disable-next-line @typescript-eslint/unified-signatures\n compileAsync<T = unknown>(\n schema: AnySchemaObject,\n meta?: boolean\n ): Promise<AnyValidateFunction<T>>\n compileAsync<T = unknown>(\n schema: AnySchemaObject,\n meta?: boolean\n ): Promise<AnyValidateFunction<T>> {\n if (typeof this.opts.loadSchema != \"function\") {\n throw new Error(\"options.loadSchema should be a function\")\n }\n const {loadSchema} = this.opts\n return runCompileAsync.call(this, schema, meta)\n\n async function runCompileAsync(\n this: Ajv,\n _schema: AnySchemaObject,\n _meta?: boolean\n ): Promise<AnyValidateFunction> {\n await loadMetaSchema.call(this, _schema.$schema)\n const sch = this._addSchema(_schema, _meta)\n return sch.validate || _compileAsync.call(this, sch)\n }\n\n async function loadMetaSchema(this: Ajv, $ref?: string): Promise<void> {\n if ($ref && !this.getSchema($ref)) {\n await runCompileAsync.call(this, {$ref}, true)\n }\n }\n\n async function _compileAsync(this: Ajv, sch: SchemaEnv): Promise<AnyValidateFunction> {\n try {\n return this._compileSchemaEnv(sch)\n } catch (e) {\n if (!(e instanceof MissingRefError)) throw e\n checkLoaded.call(this, e)\n await loadMissingSchema.call(this, e.missingSchema)\n return _compileAsync.call(this, sch)\n }\n }\n\n function checkLoaded(this: Ajv, {missingSchema: ref, missingRef}: MissingRefError): void {\n if (this.refs[ref]) {\n throw new Error(`AnySchema ${ref} is loaded but ${missingRef} cannot be resolved`)\n }\n }\n\n async function loadMissingSchema(this: Ajv, ref: string): Promise<void> {\n const _schema = await _loadSchema.call(this, ref)\n if (!this.refs[ref]) await loadMetaSchema.call(this, _schema.$schema)\n if (!this.refs[ref]) this.addSchema(_schema, ref, meta)\n }\n\n async function _loadSchema(this: Ajv, ref: string): Promise<AnySchemaObject> {\n const p = this._loading[ref]\n if (p) return p\n try {\n return await (this._loading[ref] = loadSchema(ref))\n } finally {\n delete this._loading[ref]\n }\n }\n }\n\n // Adds schema to the instance\n addSchema(\n schema: AnySchema | AnySchema[], // If array is passed, `key` will be ignored\n key?: string, // Optional schema key. Can be passed to `validate` method instead of schema object or id/ref. One schema per instance can have empty `id` and `key`.\n _meta?: boolean, // true if schema is a meta-schema. Used internally, addMetaSchema should be used instead.\n _validateSchema = this.opts.validateSchema // false to skip schema validation. Used internally, option validateSchema should be used instead.\n ): Ajv {\n if (Array.isArray(schema)) {\n for (const sch of schema) this.addSchema(sch, undefined, _meta, _validateSchema)\n return this\n }\n let id: string | undefined\n if (typeof schema === \"object\") {\n const {schemaId} = this.opts\n id = schema[schemaId]\n if (id !== undefined && typeof id != \"string\") {\n throw new Error(`schema ${schemaId} must be string`)\n }\n }\n key = normalizeId(key || id)\n this._checkUnique(key)\n this.schemas[key] = this._addSchema(schema, _meta, key, _validateSchema, true)\n return this\n }\n\n // Add schema that will be used to validate other schemas\n // options in META_IGNORE_OPTIONS are alway set to false\n addMetaSchema(\n schema: AnySchemaObject,\n key?: string, // schema key\n _validateSchema = this.opts.validateSchema // false to skip schema validation, can be used to override validateSchema option for meta-schema\n ): Ajv {\n this.addSchema(schema, key, true, _validateSchema)\n return this\n }\n\n // Validate schema against its meta-schema\n validateSchema(schema: AnySchema, throwOrLogError?: boolean): boolean | Promise<unknown> {\n if (typeof schema == \"boolean\") return true\n let $schema: string | AnySchemaObject | undefined\n $schema = schema.$schema\n if ($schema !== undefined && typeof $schema != \"string\") {\n throw new Error(\"$schema must be a string\")\n }\n $schema = $schema || this.opts.defaultMeta || this.defaultMeta()\n if (!$schema) {\n this.logger.warn(\"meta-schema not available\")\n this.errors = null\n return true\n }\n const valid = this.validate($schema, schema)\n if (!valid && throwOrLogError) {\n const message = \"schema is invalid: \" + this.errorsText()\n if (this.opts.validateSchema === \"log\") this.logger.error(message)\n else throw new Error(message)\n }\n return valid\n }\n\n // Get compiled schema by `key` or `ref`.\n // (`key` that was passed to `addSchema` or full schema reference - `schema.$id` or resolved id)\n getSchema<T = unknown>(keyRef: string): AnyValidateFunction<T> | undefined {\n let sch\n while (typeof (sch = getSchEnv.call(this, keyRef)) == \"string\") keyRef = sch\n if (sch === undefined) {\n const {schemaId} = this.opts\n const root = new SchemaEnv({schema: {}, schemaId})\n sch = resolveSchema.call(this, root, keyRef)\n if (!sch) return\n this.refs[keyRef] = sch\n }\n return (sch.validate || this._compileSchemaEnv(sch)) as AnyValidateFunction<T> | undefined\n }\n\n // Remove cached schema(s).\n // If no parameter is passed all schemas but meta-schemas are removed.\n // If RegExp is passed all schemas with key/id matching pattern but meta-schemas are removed.\n // Even if schema is referenced by other schemas it still can be removed as other schemas have local references.\n removeSchema(schemaKeyRef?: AnySchema | string | RegExp): Ajv {\n if (schemaKeyRef instanceof RegExp) {\n this._removeAllSchemas(this.schemas, schemaKeyRef)\n this._removeAllSchemas(this.refs, schemaKeyRef)\n return this\n }\n switch (typeof schemaKeyRef) {\n case \"undefined\":\n this._removeAllSchemas(this.schemas)\n this._removeAllSchemas(this.refs)\n this._cache.clear()\n return this\n case \"string\": {\n const sch = getSchEnv.call(this, schemaKeyRef)\n if (typeof sch == \"object\") this._cache.delete(sch.schema)\n delete this.schemas[schemaKeyRef]\n delete this.refs[schemaKeyRef]\n return this\n }\n case \"object\": {\n const cacheKey = schemaKeyRef\n this._cache.delete(cacheKey)\n let id = schemaKeyRef[this.opts.schemaId]\n if (id) {\n id = normalizeId(id)\n delete this.schemas[id]\n delete this.refs[id]\n }\n return this\n }\n default:\n throw new Error(\"ajv.removeSchema: invalid parameter\")\n }\n }\n\n // add \"vocabulary\" - a collection of keywords\n addVocabulary(definitions: Vocabulary): Ajv {\n for (const def of definitions) this.addKeyword(def)\n return this\n }\n\n addKeyword(\n kwdOrDef: string | KeywordDefinition,\n def?: KeywordDefinition // deprecated\n ): Ajv {\n let keyword: string | string[]\n if (typeof kwdOrDef == \"string\") {\n keyword = kwdOrDef\n if (typeof def == \"object\") {\n this.logger.warn(\"these parameters are deprecated, see docs for addKeyword\")\n def.keyword = keyword\n }\n } else if (typeof kwdOrDef == \"object\" && def === undefined) {\n def = kwdOrDef\n keyword = def.keyword\n if (Array.isArray(keyword) && !keyword.length) {\n throw new Error(\"addKeywords: keyword must be string or non-empty array\")\n }\n } else {\n throw new Error(\"invalid addKeywords parameters\")\n }\n\n checkKeyword.call(this, keyword, def)\n if (!def) {\n eachItem(keyword, (kwd) => addRule.call(this, kwd))\n return this\n }\n keywordMetaschema.call(this, def)\n const definition: AddedKeywordDefinition = {\n ...def,\n type: getJSONTypes(def.type),\n schemaType: getJSONTypes(def.schemaType),\n }\n eachItem(\n keyword,\n definition.type.length === 0\n ? (k) => addRule.call(this, k, definition)\n : (k) => definition.type.forEach((t) => addRule.call(this, k, definition, t))\n )\n return this\n }\n\n getKeyword(keyword: string): AddedKeywordDefinition | boolean {\n const rule = this.RULES.all[keyword]\n return typeof rule == \"object\" ? rule.definition : !!rule\n }\n\n // Remove keyword\n removeKeyword(keyword: string): Ajv {\n // TODO return type should be Ajv\n const {RULES} = this\n delete RULES.keywords[keyword]\n delete RULES.all[keyword]\n for (const group of RULES.rules) {\n const i = group.rules.findIndex((rule) => rule.keyword === keyword)\n if (i >= 0) group.rules.splice(i, 1)\n }\n return this\n }\n\n // Add format\n addFormat(name: string, format: Format): Ajv {\n if (typeof format == \"string\") format = new RegExp(format)\n this.formats[name] = format\n return this\n }\n\n errorsText(\n errors: ErrorObject[] | null | undefined = this.errors, // optional array of validation errors\n {separator = \", \", dataVar = \"data\"}: ErrorsTextOptions = {} // optional options with properties `separator` and `dataVar`\n ): string {\n if (!errors || errors.length === 0) return \"No errors\"\n return errors\n .map((e) => `${dataVar}${e.instancePath} ${e.message}`)\n .reduce((text, msg) => text + separator + msg)\n }\n\n $dataMetaSchema(metaSchema: AnySchemaObject, keywordsJsonPointers: string[]): AnySchemaObject {\n const rules = this.RULES.all\n metaSchema = JSON.parse(JSON.stringify(metaSchema))\n for (const jsonPointer of keywordsJsonPointers) {\n const segments = jsonPointer.split(\"/\").slice(1) // first segment is an empty string\n let keywords = metaSchema\n for (const seg of segments) keywords = keywords[seg] as AnySchemaObject\n\n for (const key in rules) {\n const rule = rules[key]\n if (typeof rule != \"object\") continue\n const {$data} = rule.definition\n const schema = keywords[key] as AnySchemaObject | undefined\n if ($data && schema) keywords[key] = schemaOrData(schema)\n }\n }\n\n return metaSchema\n }\n\n private _removeAllSchemas(schemas: {[Ref in string]?: SchemaEnv | string}, regex?: RegExp): void {\n for (const keyRef in schemas) {\n const sch = schemas[keyRef]\n if (!regex || regex.test(keyRef)) {\n if (typeof sch == \"string\") {\n delete schemas[keyRef]\n } else if (sch && !sch.meta) {\n this._cache.delete(sch.schema)\n delete schemas[keyRef]\n }\n }\n }\n }\n\n _addSchema(\n schema: AnySchema,\n meta?: boolean,\n baseId?: string,\n validateSchema = this.opts.validateSchema,\n addSchema = this.opts.addUsedSchema\n ): SchemaEnv {\n let id: string | undefined\n const {schemaId} = this.opts\n if (typeof schema == \"object\") {\n id = schema[schemaId]\n } else {\n if (this.opts.jtd) throw new Error(\"schema must be object\")\n else if (typeof schema != \"boolean\") throw new Error(\"schema must be object or boolean\")\n }\n let sch = this._cache.get(schema)\n if (sch !== undefined) return sch\n\n baseId = normalizeId(id || baseId)\n const localRefs = getSchemaRefs.call(this, schema, baseId)\n sch = new SchemaEnv({schema, schemaId, meta, baseId, localRefs})\n this._cache.set(sch.schema, sch)\n if (addSchema && !baseId.startsWith(\"#\")) {\n // TODO atm it is allowed to overwrite schemas without id (instead of not adding them)\n if (baseId) this._checkUnique(baseId)\n this.refs[baseId] = sch\n }\n if (validateSchema) this.validateSchema(schema, true)\n return sch\n }\n\n private _checkUnique(id: string): void {\n if (this.schemas[id] || this.refs[id]) {\n throw new Error(`schema with key or id \"${id}\" already exists`)\n }\n }\n\n private _compileSchemaEnv(sch: SchemaEnv): AnyValidateFunction {\n if (sch.meta) this._compileMetaSchema(sch)\n else compileSchema.call(this, sch)\n\n /* istanbul ignore if */\n if (!sch.validate) throw new Error(\"ajv implementation error\")\n return sch.validate\n }\n\n private _compileMetaSchema(sch: SchemaEnv): void {\n const currentOpts = this.opts\n this.opts = this._metaOpts\n try {\n compileSchema.call(this, sch)\n } finally {\n this.opts = currentOpts\n }\n }\n}\n\nexport interface ErrorsTextOptions {\n separator?: string\n dataVar?: string\n}\n\nfunction checkOptions(\n this: Ajv,\n checkOpts: OptionsInfo<RemovedOptions | DeprecatedOptions>,\n options: Options & RemovedOptions,\n msg: string,\n log: \"warn\" | \"error\" = \"error\"\n): void {\n for (const key in checkOpts) {\n const opt = key as keyof typeof checkOpts\n if (opt in options) this.logger[log](`${msg}: option ${key}. ${checkOpts[opt]}`)\n }\n}\n\nfunction getSchEnv(this: Ajv, keyRef: string): SchemaEnv | string | undefined {\n keyRef = normalizeId(keyRef) // TODO tests fail without this line\n return this.schemas[keyRef] || this.refs[keyRef]\n}\n\nfunction addInitialSchemas(this: Ajv): void {\n const optsSchemas = this.opts.schemas\n if (!optsSchemas) return\n if (Array.isArray(optsSchemas)) this.addSchema(optsSchemas)\n else for (const key in optsSchemas) this.addSchema(optsSchemas[key] as AnySchema, key)\n}\n\nfunction addInitialFormats(this: Ajv): void {\n for (const name in this.opts.formats) {\n const format = this.opts.formats[name]\n if (format) this.addFormat(name, format)\n }\n}\n\nfunction addInitialKeywords(\n this: Ajv,\n defs: Vocabulary | {[K in string]?: KeywordDefinition}\n): void {\n if (Array.isArray(defs)) {\n this.addVocabulary(defs)\n return\n }\n this.logger.warn(\"keywords option as map is deprecated, pass array\")\n for (const keyword in defs) {\n const def = defs[keyword] as KeywordDefinition\n if (!def.keyword) def.keyword = keyword\n this.addKeyword(def)\n }\n}\n\nfunction getMetaSchemaOptions(this: Ajv): InstanceOptions {\n const metaOpts = {...this.opts}\n for (const opt of META_IGNORE_OPTIONS) delete metaOpts[opt]\n return metaOpts\n}\n\nconst noLogs = {log() {}, warn() {}, error() {}}\n\nfunction getLogger(logger?: Partial<Logger> | false): Logger {\n if (logger === false) return noLogs\n if (logger === undefined) return console\n if (logger.log && logger.warn && logger.error) return logger as Logger\n throw new Error(\"logger must implement log, warn and error methods\")\n}\n\nconst KEYWORD_NAME = /^[a-z_$][a-z0-9_$:-]*$/i\n\nfunction checkKeyword(this: Ajv, keyword: string | string[], def?: KeywordDefinition): void {\n const {RULES} = this\n eachItem(keyword, (kwd) => {\n if (RULES.keywords[kwd]) throw new Error(`Keyword ${kwd} is already defined`)\n if (!KEYWORD_NAME.test(kwd)) throw new Error(`Keyword ${kwd} has invalid name`)\n })\n if (!def) return\n if (def.$data && !(\"code\" in def || \"validate\" in def)) {\n throw new Error('$data keyword must have \"code\" or \"validate\" function')\n }\n}\n\nfunction addRule(\n this: Ajv,\n keyword: string,\n definition?: AddedKeywordDefinition,\n dataType?: JSONType\n): void {\n const post = definition?.post\n if (dataType && post) throw new Error('keyword with \"post\" flag cannot have \"type\"')\n const {RULES} = this\n let ruleGroup = post ? RULES.post : RULES.rules.find(({type: t}) => t === dataType)\n if (!ruleGroup) {\n ruleGroup = {type: dataType, rules: []}\n RULES.rules.push(ruleGroup)\n }\n RULES.keywords[keyword] = true\n if (!definition) return\n\n const rule: Rule = {\n keyword,\n definition: {\n ...definition,\n type: getJSONTypes(definition.type),\n schemaType: getJSONTypes(definition.schemaType),\n },\n }\n if (definition.before) addBeforeRule.call(this, ruleGroup, rule, definition.before)\n else ruleGroup.rules.push(rule)\n RULES.all[keyword] = rule\n definition.implements?.forEach((kwd) => this.addKeyword(kwd))\n}\n\nfunction addBeforeRule(this: Ajv, ruleGroup: RuleGroup, rule: Rule, before: string): void {\n const i = ruleGroup.rules.findIndex((_rule) => _rule.keyword === before)\n if (i >= 0) {\n ruleGroup.rules.splice(i, 0, rule)\n } else {\n ruleGroup.rules.push(rule)\n this.logger.warn(`rule ${before} is not defined`)\n }\n}\n\nfunction keywordMetaschema(this: Ajv, def: KeywordDefinition): void {\n let {metaSchema} = def\n if (metaSchema === undefined) return\n if (def.$data && this.opts.$data) metaSchema = schemaOrData(metaSchema)\n def.validateSchema = this.compile(metaSchema, true)\n}\n\nconst $dataRef = {\n $ref: \"https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#\",\n}\n\nfunction schemaOrData(schema: AnySchema): AnySchemaObject {\n return {anyOf: [schema, $dataRef]}\n}\n","import type {CodeKeywordDefinition} from \"../../types\"\n\nconst def: CodeKeywordDefinition = {\n keyword: \"id\",\n code() {\n throw new Error('NOT SUPPORTED: keyword \"id\", use \"$id\" for schema ID')\n },\n}\n\nexport default def\n","import type {CodeKeywordDefinition, AnySchema} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport MissingRefError from \"../../compile/ref_error\"\nimport {callValidateCode} from \"../code\"\nimport {_, nil, stringify, Code, Name} from \"../../compile/codegen\"\nimport N from \"../../compile/names\"\nimport {SchemaEnv, resolveRef} from \"../../compile\"\nimport {mergeEvaluated} from \"../../compile/util\"\n\nconst def: CodeKeywordDefinition = {\n keyword: \"$ref\",\n schemaType: \"string\",\n code(cxt: KeywordCxt): void {\n const {gen, schema: $ref, it} = cxt\n const {baseId, schemaEnv: env, validateName, opts, self} = it\n const {root} = env\n if (($ref === \"#\" || $ref === \"#/\") && baseId === root.baseId) return callRootRef()\n const schOrEnv = resolveRef.call(self, root, baseId, $ref)\n if (schOrEnv === undefined) throw new MissingRefError(it.opts.uriResolver, baseId, $ref)\n if (schOrEnv instanceof SchemaEnv) return callValidate(schOrEnv)\n return inlineRefSchema(schOrEnv)\n\n function callRootRef(): void {\n if (env === root) return callRef(cxt, validateName, env, env.$async)\n const rootName = gen.scopeValue(\"root\", {ref: root})\n return callRef(cxt, _`${rootName}.validate`, root, root.$async)\n }\n\n function callValidate(sch: SchemaEnv): void {\n const v = getValidate(cxt, sch)\n callRef(cxt, v, sch, sch.$async)\n }\n\n function inlineRefSchema(sch: AnySchema): void {\n const schName = gen.scopeValue(\n \"schema\",\n opts.code.source === true ? {ref: sch, code: stringify(sch)} : {ref: sch}\n )\n const valid = gen.name(\"valid\")\n const schCxt = cxt.subschema(\n {\n schema: sch,\n dataTypes: [],\n schemaPath: nil,\n topSchemaRef: schName,\n errSchemaPath: $ref,\n },\n valid\n )\n cxt.mergeEvaluated(schCxt)\n cxt.ok(valid)\n }\n },\n}\n\nexport function getValidate(cxt: KeywordCxt, sch: SchemaEnv): Code {\n const {gen} = cxt\n return sch.validate\n ? gen.scopeValue(\"validate\", {ref: sch.validate})\n : _`${gen.scopeValue(\"wrapper\", {ref: sch})}.validate`\n}\n\nexport function callRef(cxt: KeywordCxt, v: Code, sch?: SchemaEnv, $async?: boolean): void {\n const {gen, it} = cxt\n const {allErrors, schemaEnv: env, opts} = it\n const passCxt = opts.passContext ? N.this : nil\n if ($async) callAsyncRef()\n else callSyncRef()\n\n function callAsyncRef(): void {\n if (!env.$async) throw new Error(\"async schema referenced by sync schema\")\n const valid = gen.let(\"valid\")\n gen.try(\n () => {\n gen.code(_`await ${callValidateCode(cxt, v, passCxt)}`)\n addEvaluatedFrom(v) // TODO will not work with async, it has to be returned with the result\n if (!allErrors) gen.assign(valid, true)\n },\n (e) => {\n gen.if(_`!(${e} instanceof ${it.ValidationError as Name})`, () => gen.throw(e))\n addErrorsFrom(e)\n if (!allErrors) gen.assign(valid, false)\n }\n )\n cxt.ok(valid)\n }\n\n function callSyncRef(): void {\n cxt.result(\n callValidateCode(cxt, v, passCxt),\n () => addEvaluatedFrom(v),\n () => addErrorsFrom(v)\n )\n }\n\n function addErrorsFrom(source: Code): void {\n const errs = _`${source}.errors`\n gen.assign(N.vErrors, _`${N.vErrors} === null ? ${errs} : ${N.vErrors}.concat(${errs})`) // TODO tagged\n gen.assign(N.errors, _`${N.vErrors}.length`)\n }\n\n function addEvaluatedFrom(source: Code): void {\n if (!it.opts.unevaluated) return\n const schEvaluated = sch?.validate?.evaluated\n // TODO refactor\n if (it.props !== true) {\n if (schEvaluated && !schEvaluated.dynamicProps) {\n if (schEvaluated.props !== undefined) {\n it.props = mergeEvaluated.props(gen, schEvaluated.props, it.props)\n }\n } else {\n const props = gen.var(\"props\", _`${source}.evaluated.props`)\n it.props = mergeEvaluated.props(gen, props, it.props, Name)\n }\n }\n if (it.items !== true) {\n if (schEvaluated && !schEvaluated.dynamicItems) {\n if (schEvaluated.items !== undefined) {\n it.items = mergeEvaluated.items(gen, schEvaluated.items, it.items)\n }\n } else {\n const items = gen.var(\"items\", _`${source}.evaluated.items`)\n it.items = mergeEvaluated.items(gen, items, it.items, Name)\n }\n }\n }\n}\n\nexport default def\n","import type {Vocabulary} from \"../../types\"\nimport idKeyword from \"./id\"\nimport refKeyword from \"./ref\"\n\nconst core: Vocabulary = [\n \"$schema\",\n \"$id\",\n \"$defs\",\n \"$vocabulary\",\n {keyword: \"$comment\"},\n \"definitions\",\n idKeyword,\n refKeyword,\n]\n\nexport default core\n","import type {CodeKeywordDefinition, ErrorObject, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str, operators, Code} from \"../../compile/codegen\"\n\nconst ops = operators\n\ntype Kwd = \"maximum\" | \"minimum\" | \"exclusiveMaximum\" | \"exclusiveMinimum\"\n\ntype Comparison = \"<=\" | \">=\" | \"<\" | \">\"\n\nconst KWDs: {[K in Kwd]: {okStr: Comparison; ok: Code; fail: Code}} = {\n maximum: {okStr: \"<=\", ok: ops.LTE, fail: ops.GT},\n minimum: {okStr: \">=\", ok: ops.GTE, fail: ops.LT},\n exclusiveMaximum: {okStr: \"<\", ok: ops.LT, fail: ops.GTE},\n exclusiveMinimum: {okStr: \">\", ok: ops.GT, fail: ops.LTE},\n}\n\nexport type LimitNumberError = ErrorObject<\n Kwd,\n {limit: number; comparison: Comparison},\n number | {$data: string}\n>\n\nconst error: KeywordErrorDefinition = {\n message: ({keyword, schemaCode}) => str`must be ${KWDs[keyword as Kwd].okStr} ${schemaCode}`,\n params: ({keyword, schemaCode}) =>\n _`{comparison: ${KWDs[keyword as Kwd].okStr}, limit: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: Object.keys(KWDs),\n type: \"number\",\n schemaType: \"number\",\n $data: true,\n error,\n code(cxt: KeywordCxt) {\n const {keyword, data, schemaCode} = cxt\n cxt.fail$data(_`${data} ${KWDs[keyword as Kwd].fail} ${schemaCode} || isNaN(${data})`)\n },\n}\n\nexport default def\n","import type {CodeKeywordDefinition, ErrorObject, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str} from \"../../compile/codegen\"\n\nexport type MultipleOfError = ErrorObject<\n \"multipleOf\",\n {multipleOf: number},\n number | {$data: string}\n>\n\nconst error: KeywordErrorDefinition = {\n message: ({schemaCode}) => str`must be multiple of ${schemaCode}`,\n params: ({schemaCode}) => _`{multipleOf: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"multipleOf\",\n type: \"number\",\n schemaType: \"number\",\n $data: true,\n error,\n code(cxt: KeywordCxt) {\n const {gen, data, schemaCode, it} = cxt\n // const bdt = bad$DataType(schemaCode, <string>def.schemaType, $data)\n const prec = it.opts.multipleOfPrecision\n const res = gen.let(\"res\")\n const invalid = prec\n ? _`Math.abs(Math.round(${res}) - ${res}) > 1e-${prec}`\n : _`${res} !== parseInt(${res})`\n cxt.fail$data(_`(${schemaCode} === 0 || (${res} = ${data}/${schemaCode}, ${invalid}))`)\n },\n}\n\nexport default def\n","// https://mathiasbynens.be/notes/javascript-encoding\n// https://github.com/bestiejs/punycode.js - punycode.ucs2.decode\nexport default function ucs2length(str: string): number {\n const len = str.length\n let length = 0\n let pos = 0\n let value: number\n while (pos < len) {\n length++\n value = str.charCodeAt(pos++)\n if (value >= 0xd800 && value <= 0xdbff && pos < len) {\n // high surrogate, and there is a next character\n value = str.charCodeAt(pos)\n if ((value & 0xfc00) === 0xdc00) pos++ // low surrogate\n }\n }\n return length\n}\n\nucs2length.code = 'require(\"ajv/dist/runtime/ucs2length\").default'\n","import type {CodeKeywordDefinition, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str, operators} from \"../../compile/codegen\"\nimport {useFunc} from \"../../compile/util\"\nimport ucs2length from \"../../runtime/ucs2length\"\n\nconst error: KeywordErrorDefinition = {\n message({keyword, schemaCode}) {\n const comp = keyword === \"maxLength\" ? \"more\" : \"fewer\"\n return str`must NOT have ${comp} than ${schemaCode} characters`\n },\n params: ({schemaCode}) => _`{limit: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: [\"maxLength\", \"minLength\"],\n type: \"string\",\n schemaType: \"number\",\n $data: true,\n error,\n code(cxt: KeywordCxt) {\n const {keyword, data, schemaCode, it} = cxt\n const op = keyword === \"maxLength\" ? operators.GT : operators.LT\n const len =\n it.opts.unicode === false ? _`${data}.length` : _`${useFunc(cxt.gen, ucs2length)}(${data})`\n cxt.fail$data(_`${len} ${op} ${schemaCode}`)\n },\n}\n\nexport default def\n","import type {CodeKeywordDefinition, ErrorObject, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {usePattern} from \"../code\"\nimport {useFunc} from \"../../compile/util\"\nimport {_, str} from \"../../compile/codegen\"\n\nexport type PatternError = ErrorObject<\"pattern\", {pattern: string}, string | {$data: string}>\n\nconst error: KeywordErrorDefinition = {\n message: ({schemaCode}) => str`must match pattern \"${schemaCode}\"`,\n params: ({schemaCode}) => _`{pattern: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"pattern\",\n type: \"string\",\n schemaType: \"string\",\n $data: true,\n error,\n code(cxt: KeywordCxt) {\n const {gen, data, $data, schema, schemaCode, it} = cxt\n const u = it.opts.unicodeRegExp ? \"u\" : \"\"\n if ($data) {\n const {regExp} = it.opts.code\n const regExpCode = regExp.code === \"new RegExp\" ? _`new RegExp` : useFunc(gen, regExp)\n const valid = gen.let(\"valid\")\n gen.try(\n () => gen.assign(valid, _`${regExpCode}(${schemaCode}, ${u}).test(${data})`),\n () => gen.assign(valid, false)\n )\n cxt.fail$data(_`!${valid}`)\n } else {\n const regExp = usePattern(cxt, schema)\n cxt.fail$data(_`!${regExp}.test(${data})`)\n }\n },\n}\n\nexport default def\n","import type {CodeKeywordDefinition, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str, operators} from \"../../compile/codegen\"\n\nconst error: KeywordErrorDefinition = {\n message({keyword, schemaCode}) {\n const comp = keyword === \"maxProperties\" ? \"more\" : \"fewer\"\n return str`must NOT have ${comp} than ${schemaCode} properties`\n },\n params: ({schemaCode}) => _`{limit: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: [\"maxProperties\", \"minProperties\"],\n type: \"object\",\n schemaType: \"number\",\n $data: true,\n error,\n code(cxt: KeywordCxt) {\n const {keyword, data, schemaCode} = cxt\n const op = keyword === \"maxProperties\" ? operators.GT : operators.LT\n cxt.fail$data(_`Object.keys(${data}).length ${op} ${schemaCode}`)\n },\n}\n\nexport default def\n","import type {CodeKeywordDefinition, ErrorObject, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {\n checkReportMissingProp,\n checkMissingProp,\n reportMissingProp,\n propertyInData,\n noPropertyInData,\n} from \"../code\"\nimport {_, str, nil, not, Name, Code} from \"../../compile/codegen\"\nimport {checkStrictMode} from \"../../compile/util\"\n\nexport type RequiredError = ErrorObject<\n \"required\",\n {missingProperty: string},\n string[] | {$data: string}\n>\n\nconst error: KeywordErrorDefinition = {\n message: ({params: {missingProperty}}) => str`must have required property '${missingProperty}'`,\n params: ({params: {missingProperty}}) => _`{missingProperty: ${missingProperty}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"required\",\n type: \"object\",\n schemaType: \"array\",\n $data: true,\n error,\n code(cxt: KeywordCxt) {\n const {gen, schema, schemaCode, data, $data, it} = cxt\n const {opts} = it\n if (!$data && schema.length === 0) return\n const useLoop = schema.length >= opts.loopRequired\n if (it.allErrors) allErrorsMode()\n else exitOnErrorMode()\n\n if (opts.strictRequired) {\n const props = cxt.parentSchema.properties\n const {definedProperties} = cxt.it\n for (const requiredKey of schema) {\n if (props?.[requiredKey] === undefined && !definedProperties.has(requiredKey)) {\n const schemaPath = it.schemaEnv.baseId + it.errSchemaPath\n const msg = `required property \"${requiredKey}\" is not defined at \"${schemaPath}\" (strictRequired)`\n checkStrictMode(it, msg, it.opts.strictRequired)\n }\n }\n }\n\n function allErrorsMode(): void {\n if (useLoop || $data) {\n cxt.block$data(nil, loopAllRequired)\n } else {\n for (const prop of schema) {\n checkReportMissingProp(cxt, prop)\n }\n }\n }\n\n function exitOnErrorMode(): void {\n const missing = gen.let(\"missing\")\n if (useLoop || $data) {\n const valid = gen.let(\"valid\", true)\n cxt.block$data(valid, () => loopUntilMissing(missing, valid))\n cxt.ok(valid)\n } else {\n gen.if(checkMissingProp(cxt, schema, missing))\n reportMissingProp(cxt, missing)\n gen.else()\n }\n }\n\n function loopAllRequired(): void {\n gen.forOf(\"prop\", schemaCode as Code, (prop) => {\n cxt.setParams({missingProperty: prop})\n gen.if(noPropertyInData(gen, data, prop, opts.ownProperties), () => cxt.error())\n })\n }\n\n function loopUntilMissing(missing: Name, valid: Name): void {\n cxt.setParams({missingProperty: missing})\n gen.forOf(\n missing,\n schemaCode as Code,\n () => {\n gen.assign(valid, propertyInData(gen, data, missing, opts.ownProperties))\n gen.if(not(valid), () => {\n cxt.error()\n gen.break()\n })\n },\n nil\n )\n }\n },\n}\n\nexport default def\n","import type {CodeKeywordDefinition, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str, operators} from \"../../compile/codegen\"\n\nconst error: KeywordErrorDefinition = {\n message({keyword, schemaCode}) {\n const comp = keyword === \"maxItems\" ? \"more\" : \"fewer\"\n return str`must NOT have ${comp} than ${schemaCode} items`\n },\n params: ({schemaCode}) => _`{limit: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: [\"maxItems\", \"minItems\"],\n type: \"array\",\n schemaType: \"number\",\n $data: true,\n error,\n code(cxt: KeywordCxt) {\n const {keyword, data, schemaCode} = cxt\n const op = keyword === \"maxItems\" ? operators.GT : operators.LT\n cxt.fail$data(_`${data}.length ${op} ${schemaCode}`)\n },\n}\n\nexport default def\n","// https://github.com/ajv-validator/ajv/issues/889\nimport * as equal from \"fast-deep-equal\"\n\ntype Equal = typeof equal & {code: string}\n;(equal as Equal).code = 'require(\"ajv/dist/runtime/equal\").default'\n\nexport default equal as Equal\n","import type {CodeKeywordDefinition, ErrorObject, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {checkDataTypes, getSchemaTypes, DataType} from \"../../compile/validate/dataType\"\nimport {_, str, Name} from \"../../compile/codegen\"\nimport {useFunc} from \"../../compile/util\"\nimport equal from \"../../runtime/equal\"\n\nexport type UniqueItemsError = ErrorObject<\n \"uniqueItems\",\n {i: number; j: number},\n boolean | {$data: string}\n>\n\nconst error: KeywordErrorDefinition = {\n message: ({params: {i, j}}) =>\n str`must NOT have duplicate items (items ## ${j} and ${i} are identical)`,\n params: ({params: {i, j}}) => _`{i: ${i}, j: ${j}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"uniqueItems\",\n type: \"array\",\n schemaType: \"boolean\",\n $data: true,\n error,\n code(cxt: KeywordCxt) {\n const {gen, data, $data, schema, parentSchema, schemaCode, it} = cxt\n if (!$data && !schema) return\n const valid = gen.let(\"valid\")\n const itemTypes = parentSchema.items ? getSchemaTypes(parentSchema.items) : []\n cxt.block$data(valid, validateUniqueItems, _`${schemaCode} === false`)\n cxt.ok(valid)\n\n function validateUniqueItems(): void {\n const i = gen.let(\"i\", _`${data}.length`)\n const j = gen.let(\"j\")\n cxt.setParams({i, j})\n gen.assign(valid, true)\n gen.if(_`${i} > 1`, () => (canOptimize() ? loopN : loopN2)(i, j))\n }\n\n function canOptimize(): boolean {\n return itemTypes.length > 0 && !itemTypes.some((t) => t === \"object\" || t === \"array\")\n }\n\n function loopN(i: Name, j: Name): void {\n const item = gen.name(\"item\")\n const wrongType = checkDataTypes(itemTypes, item, it.opts.strictNumbers, DataType.Wrong)\n const indices = gen.const(\"indices\", _`{}`)\n gen.for(_`;${i}--;`, () => {\n gen.let(item, _`${data}[${i}]`)\n gen.if(wrongType, _`continue`)\n if (itemTypes.length > 1) gen.if(_`typeof ${item} == \"string\"`, _`${item} += \"_\"`)\n gen\n .if(_`typeof ${indices}[${item}] == \"number\"`, () => {\n gen.assign(j, _`${indices}[${item}]`)\n cxt.error()\n gen.assign(valid, false).break()\n })\n .code(_`${indices}[${item}] = ${i}`)\n })\n }\n\n function loopN2(i: Name, j: Name): void {\n const eql = useFunc(gen, equal)\n const outer = gen.name(\"outer\")\n gen.label(outer).for(_`;${i}--;`, () =>\n gen.for(_`${j} = ${i}; ${j}--;`, () =>\n gen.if(_`${eql}(${data}[${i}], ${data}[${j}])`, () => {\n cxt.error()\n gen.assign(valid, false).break(outer)\n })\n )\n )\n }\n },\n}\n\nexport default def\n","import type {CodeKeywordDefinition, ErrorObject, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_} from \"../../compile/codegen\"\nimport {useFunc} from \"../../compile/util\"\nimport equal from \"../../runtime/equal\"\n\nexport type ConstError = ErrorObject<\"const\", {allowedValue: any}>\n\nconst error: KeywordErrorDefinition = {\n message: \"must be equal to constant\",\n params: ({schemaCode}) => _`{allowedValue: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"const\",\n $data: true,\n error,\n code(cxt: KeywordCxt) {\n const {gen, data, $data, schemaCode, schema} = cxt\n if ($data || (schema && typeof schema == \"object\")) {\n cxt.fail$data(_`!${useFunc(gen, equal)}(${data}, ${schemaCode})`)\n } else {\n cxt.fail(_`${schema} !== ${data}`)\n }\n },\n}\n\nexport default def\n","import type {CodeKeywordDefinition, ErrorObject, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, or, Name, Code} from \"../../compile/codegen\"\nimport {useFunc} from \"../../compile/util\"\nimport equal from \"../../runtime/equal\"\n\nexport type EnumError = ErrorObject<\"enum\", {allowedValues: any[]}, any[] | {$data: string}>\n\nconst error: KeywordErrorDefinition = {\n message: \"must be equal to one of the allowed values\",\n params: ({schemaCode}) => _`{allowedValues: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"enum\",\n schemaType: \"array\",\n $data: true,\n error,\n code(cxt: KeywordCxt) {\n const {gen, data, $data, schema, schemaCode, it} = cxt\n if (!$data && schema.length === 0) throw new Error(\"enum must have non-empty array\")\n const useLoop = schema.length >= it.opts.loopEnum\n let eql: Name | undefined\n const getEql = (): Name => (eql ??= useFunc(gen, equal))\n\n let valid: Code\n if (useLoop || $data) {\n valid = gen.let(\"valid\")\n cxt.block$data(valid, loopEnum)\n } else {\n /* istanbul ignore if */\n if (!Array.isArray(schema)) throw new Error(\"ajv implementation error\")\n const vSchema = gen.const(\"vSchema\", schemaCode)\n valid = or(...schema.map((_x: unknown, i: number) => equalCode(vSchema, i)))\n }\n cxt.pass(valid)\n\n function loopEnum(): void {\n gen.assign(valid, false)\n gen.forOf(\"v\", schemaCode as Code, (v) =>\n gen.if(_`${getEql()}(${data}, ${v})`, () => gen.assign(valid, true).break())\n )\n }\n\n function equalCode(vSchema: Name, i: number): Code {\n const sch = schema[i]\n return typeof sch === \"object\" && sch !== null\n ? _`${getEql()}(${data}, ${vSchema}[${i}])`\n : _`${data} === ${sch}`\n }\n },\n}\n\nexport default def\n","import type {ErrorObject, Vocabulary} from \"../../types\"\nimport limitNumber, {LimitNumberError} from \"./limitNumber\"\nimport multipleOf, {MultipleOfError} from \"./multipleOf\"\nimport limitLength from \"./limitLength\"\nimport pattern, {PatternError} from \"./pattern\"\nimport limitProperties from \"./limitProperties\"\nimport required, {RequiredError} from \"./required\"\nimport limitItems from \"./limitItems\"\nimport uniqueItems, {UniqueItemsError} from \"./uniqueItems\"\nimport constKeyword, {ConstError} from \"./const\"\nimport enumKeyword, {EnumError} from \"./enum\"\n\nconst validation: Vocabulary = [\n // number\n limitNumber,\n multipleOf,\n // string\n limitLength,\n pattern,\n // object\n limitProperties,\n required,\n // array\n limitItems,\n uniqueItems,\n // any\n {keyword: \"type\", schemaType: [\"string\", \"array\"]},\n {keyword: \"nullable\", schemaType: \"boolean\"},\n constKeyword,\n enumKeyword,\n]\n\nexport default validation\n\ntype LimitError = ErrorObject<\n \"maxItems\" | \"minItems\" | \"minProperties\" | \"maxProperties\" | \"minLength\" | \"maxLength\",\n {limit: number},\n number | {$data: string}\n>\n\nexport type ValidationKeywordError =\n | LimitError\n | LimitNumberError\n | MultipleOfError\n | PatternError\n | RequiredError\n | UniqueItemsError\n | ConstError\n | EnumError\n","import type {\n CodeKeywordDefinition,\n ErrorObject,\n KeywordErrorDefinition,\n AnySchema,\n} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str, not, Name} from \"../../compile/codegen\"\nimport {alwaysValidSchema, checkStrictMode, Type} from \"../../compile/util\"\n\nexport type AdditionalItemsError = ErrorObject<\"additionalItems\", {limit: number}, AnySchema>\n\nconst error: KeywordErrorDefinition = {\n message: ({params: {len}}) => str`must NOT have more than ${len} items`,\n params: ({params: {len}}) => _`{limit: ${len}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"additionalItems\" as const,\n type: \"array\",\n schemaType: [\"boolean\", \"object\"],\n before: \"uniqueItems\",\n error,\n code(cxt: KeywordCxt) {\n const {parentSchema, it} = cxt\n const {items} = parentSchema\n if (!Array.isArray(items)) {\n checkStrictMode(it, '\"additionalItems\" is ignored when \"items\" is not an array of schemas')\n return\n }\n validateAdditionalItems(cxt, items)\n },\n}\n\nexport function validateAdditionalItems(cxt: KeywordCxt, items: AnySchema[]): void {\n const {gen, schema, data, keyword, it} = cxt\n it.items = true\n const len = gen.const(\"len\", _`${data}.length`)\n if (schema === false) {\n cxt.setParams({len: items.length})\n cxt.pass(_`${len} <= ${items.length}`)\n } else if (typeof schema == \"object\" && !alwaysValidSchema(it, schema)) {\n const valid = gen.var(\"valid\", _`${len} <= ${items.length}`) // TODO var\n gen.if(not(valid), () => validateItems(valid))\n cxt.ok(valid)\n }\n\n function validateItems(valid: Name): void {\n gen.forRange(\"i\", items.length, len, (i) => {\n cxt.subschema({keyword, dataProp: i, dataPropType: Type.Num}, valid)\n if (!it.allErrors) gen.if(not(valid), () => gen.break())\n })\n }\n}\n\nexport default def\n","import type {CodeKeywordDefinition, AnySchema, AnySchemaObject} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_} from \"../../compile/codegen\"\nimport {alwaysValidSchema, mergeEvaluated, checkStrictMode} from \"../../compile/util\"\nimport {validateArray} from \"../code\"\n\nconst def: CodeKeywordDefinition = {\n keyword: \"items\",\n type: \"array\",\n schemaType: [\"object\", \"array\", \"boolean\"],\n before: \"uniqueItems\",\n code(cxt: KeywordCxt) {\n const {schema, it} = cxt\n if (Array.isArray(schema)) return validateTuple(cxt, \"additionalItems\", schema)\n it.items = true\n if (alwaysValidSchema(it, schema)) return\n cxt.ok(validateArray(cxt))\n },\n}\n\nexport function validateTuple(\n cxt: KeywordCxt,\n extraItems: string,\n schArr: AnySchema[] = cxt.schema\n): void {\n const {gen, parentSchema, data, keyword, it} = cxt\n checkStrictTuple(parentSchema)\n if (it.opts.unevaluated && schArr.length && it.items !== true) {\n it.items = mergeEvaluated.items(gen, schArr.length, it.items)\n }\n const valid = gen.name(\"valid\")\n const len = gen.const(\"len\", _`${data}.length`)\n schArr.forEach((sch: AnySchema, i: number) => {\n if (alwaysValidSchema(it, sch)) return\n gen.if(_`${len} > ${i}`, () =>\n cxt.subschema(\n {\n keyword,\n schemaProp: i,\n dataProp: i,\n },\n valid\n )\n )\n cxt.ok(valid)\n })\n\n function checkStrictTuple(sch: AnySchemaObject): void {\n const {opts, errSchemaPath} = it\n const l = schArr.length\n const fullTuple = l === sch.minItems && (l === sch.maxItems || sch[extraItems] === false)\n if (opts.strictTuples && !fullTuple) {\n const msg = `\"${keyword}\" is ${l}-tuple, but minItems or maxItems/${extraItems} are not specified or different at path \"${errSchemaPath}\"`\n checkStrictMode(it, msg, opts.strictTuples)\n }\n }\n}\n\nexport default def\n","import type {CodeKeywordDefinition} from \"../../types\"\nimport {validateTuple} from \"./items\"\n\nconst def: CodeKeywordDefinition = {\n keyword: \"prefixItems\",\n type: \"array\",\n schemaType: [\"array\"],\n before: \"uniqueItems\",\n code: (cxt) => validateTuple(cxt, \"items\"),\n}\n\nexport default def\n","import type {\n CodeKeywordDefinition,\n KeywordErrorDefinition,\n ErrorObject,\n AnySchema,\n} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str} from \"../../compile/codegen\"\nimport {alwaysValidSchema} from \"../../compile/util\"\nimport {validateArray} from \"../code\"\nimport {validateAdditionalItems} from \"./additionalItems\"\n\nexport type ItemsError = ErrorObject<\"items\", {limit: number}, AnySchema>\n\nconst error: KeywordErrorDefinition = {\n message: ({params: {len}}) => str`must NOT have more than ${len} items`,\n params: ({params: {len}}) => _`{limit: ${len}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"items\",\n type: \"array\",\n schemaType: [\"object\", \"boolean\"],\n before: \"uniqueItems\",\n error,\n code(cxt: KeywordCxt) {\n const {schema, parentSchema, it} = cxt\n const {prefixItems} = parentSchema\n it.items = true\n if (alwaysValidSchema(it, schema)) return\n if (prefixItems) validateAdditionalItems(cxt, prefixItems)\n else cxt.ok(validateArray(cxt))\n },\n}\n\nexport default def\n","import type {\n CodeKeywordDefinition,\n KeywordErrorDefinition,\n ErrorObject,\n AnySchema,\n} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str, Name} from \"../../compile/codegen\"\nimport {alwaysValidSchema, checkStrictMode, Type} from \"../../compile/util\"\n\nexport type ContainsError = ErrorObject<\n \"contains\",\n {minContains: number; maxContains?: number},\n AnySchema\n>\n\nconst error: KeywordErrorDefinition = {\n message: ({params: {min, max}}) =>\n max === undefined\n ? str`must contain at least ${min} valid item(s)`\n : str`must contain at least ${min} and no more than ${max} valid item(s)`,\n params: ({params: {min, max}}) =>\n max === undefined ? _`{minContains: ${min}}` : _`{minContains: ${min}, maxContains: ${max}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"contains\",\n type: \"array\",\n schemaType: [\"object\", \"boolean\"],\n before: \"uniqueItems\",\n trackErrors: true,\n error,\n code(cxt: KeywordCxt) {\n const {gen, schema, parentSchema, data, it} = cxt\n let min: number\n let max: number | undefined\n const {minContains, maxContains} = parentSchema\n if (it.opts.next) {\n min = minContains === undefined ? 1 : minContains\n max = maxContains\n } else {\n min = 1\n }\n const len = gen.const(\"len\", _`${data}.length`)\n cxt.setParams({min, max})\n if (max === undefined && min === 0) {\n checkStrictMode(it, `\"minContains\" == 0 without \"maxContains\": \"contains\" keyword ignored`)\n return\n }\n if (max !== undefined && min > max) {\n checkStrictMode(it, `\"minContains\" > \"maxContains\" is always invalid`)\n cxt.fail()\n return\n }\n if (alwaysValidSchema(it, schema)) {\n let cond = _`${len} >= ${min}`\n if (max !== undefined) cond = _`${cond} && ${len} <= ${max}`\n cxt.pass(cond)\n return\n }\n\n it.items = true\n const valid = gen.name(\"valid\")\n if (max === undefined && min === 1) {\n validateItems(valid, () => gen.if(valid, () => gen.break()))\n } else if (min === 0) {\n gen.let(valid, true)\n if (max !== undefined) gen.if(_`${data}.length > 0`, validateItemsWithCount)\n } else {\n gen.let(valid, false)\n validateItemsWithCount()\n }\n cxt.result(valid, () => cxt.reset())\n\n function validateItemsWithCount(): void {\n const schValid = gen.name(\"_valid\")\n const count = gen.let(\"count\", 0)\n validateItems(schValid, () => gen.if(schValid, () => checkLimits(count)))\n }\n\n function validateItems(_valid: Name, block: () => void): void {\n gen.forRange(\"i\", 0, len, (i) => {\n cxt.subschema(\n {\n keyword: \"contains\",\n dataProp: i,\n dataPropType: Type.Num,\n compositeRule: true,\n },\n _valid\n )\n block()\n })\n }\n\n function checkLimits(count: Name): void {\n gen.code(_`${count}++`)\n if (max === undefined) {\n gen.if(_`${count} >= ${min}`, () => gen.assign(valid, true).break())\n } else {\n gen.if(_`${count} > ${max}`, () => gen.assign(valid, false).break())\n if (min === 1) gen.assign(valid, true)\n else gen.if(_`${count} >= ${min}`, () => gen.assign(valid, true))\n }\n }\n },\n}\n\nexport default def\n","import type {\n CodeKeywordDefinition,\n ErrorObject,\n KeywordErrorDefinition,\n SchemaMap,\n AnySchema,\n} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str} from \"../../compile/codegen\"\nimport {alwaysValidSchema} from \"../../compile/util\"\nimport {checkReportMissingProp, checkMissingProp, reportMissingProp, propertyInData} from \"../code\"\n\nexport type PropertyDependencies = {[K in string]?: string[]}\n\nexport interface DependenciesErrorParams {\n property: string\n missingProperty: string\n depsCount: number\n deps: string // TODO change to string[]\n}\n\ntype SchemaDependencies = SchemaMap\n\nexport type DependenciesError = ErrorObject<\n \"dependencies\",\n DependenciesErrorParams,\n {[K in string]?: string[] | AnySchema}\n>\n\nexport const error: KeywordErrorDefinition = {\n message: ({params: {property, depsCount, deps}}) => {\n const property_ies = depsCount === 1 ? \"property\" : \"properties\"\n return str`must have ${property_ies} ${deps} when property ${property} is present`\n },\n params: ({params: {property, depsCount, deps, missingProperty}}) =>\n _`{property: ${property},\n missingProperty: ${missingProperty},\n depsCount: ${depsCount},\n deps: ${deps}}`, // TODO change to reference\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"dependencies\",\n type: \"object\",\n schemaType: \"object\",\n error,\n code(cxt: KeywordCxt) {\n const [propDeps, schDeps] = splitDependencies(cxt)\n validatePropertyDeps(cxt, propDeps)\n validateSchemaDeps(cxt, schDeps)\n },\n}\n\nfunction splitDependencies({schema}: KeywordCxt): [PropertyDependencies, SchemaDependencies] {\n const propertyDeps: PropertyDependencies = {}\n const schemaDeps: SchemaDependencies = {}\n for (const key in schema) {\n if (key === \"__proto__\") continue\n const deps = Array.isArray(schema[key]) ? propertyDeps : schemaDeps\n deps[key] = schema[key]\n }\n return [propertyDeps, schemaDeps]\n}\n\nexport function validatePropertyDeps(\n cxt: KeywordCxt,\n propertyDeps: {[K in string]?: string[]} = cxt.schema\n): void {\n const {gen, data, it} = cxt\n if (Object.keys(propertyDeps).length === 0) return\n const missing = gen.let(\"missing\")\n for (const prop in propertyDeps) {\n const deps = propertyDeps[prop] as string[]\n if (deps.length === 0) continue\n const hasProperty = propertyInData(gen, data, prop, it.opts.ownProperties)\n cxt.setParams({\n property: prop,\n depsCount: deps.length,\n deps: deps.join(\", \"),\n })\n if (it.allErrors) {\n gen.if(hasProperty, () => {\n for (const depProp of deps) {\n checkReportMissingProp(cxt, depProp)\n }\n })\n } else {\n gen.if(_`${hasProperty} && (${checkMissingProp(cxt, deps, missing)})`)\n reportMissingProp(cxt, missing)\n gen.else()\n }\n }\n}\n\nexport function validateSchemaDeps(cxt: KeywordCxt, schemaDeps: SchemaMap = cxt.schema): void {\n const {gen, data, keyword, it} = cxt\n const valid = gen.name(\"valid\")\n for (const prop in schemaDeps) {\n if (alwaysValidSchema(it, schemaDeps[prop] as AnySchema)) continue\n gen.if(\n propertyInData(gen, data, prop, it.opts.ownProperties),\n () => {\n const schCxt = cxt.subschema({keyword, schemaProp: prop}, valid)\n cxt.mergeValidEvaluated(schCxt, valid)\n },\n () => gen.var(valid, true) // TODO var\n )\n cxt.ok(valid)\n }\n}\n\nexport default def\n","import type {\n CodeKeywordDefinition,\n ErrorObject,\n KeywordErrorDefinition,\n AnySchema,\n} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, not} from \"../../compile/codegen\"\nimport {alwaysValidSchema} from \"../../compile/util\"\n\nexport type PropertyNamesError = ErrorObject<\"propertyNames\", {propertyName: string}, AnySchema>\n\nconst error: KeywordErrorDefinition = {\n message: \"property name must be valid\",\n params: ({params}) => _`{propertyName: ${params.propertyName}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"propertyNames\",\n type: \"object\",\n schemaType: [\"object\", \"boolean\"],\n error,\n code(cxt: KeywordCxt) {\n const {gen, schema, data, it} = cxt\n if (alwaysValidSchema(it, schema)) return\n const valid = gen.name(\"valid\")\n\n gen.forIn(\"key\", data, (key) => {\n cxt.setParams({propertyName: key})\n cxt.subschema(\n {\n keyword: \"propertyNames\",\n data: key,\n dataTypes: [\"string\"],\n propertyName: key,\n compositeRule: true,\n },\n valid\n )\n gen.if(not(valid), () => {\n cxt.error(true)\n if (!it.allErrors) gen.break()\n })\n })\n\n cxt.ok(valid)\n },\n}\n\nexport default def\n","import type {\n CodeKeywordDefinition,\n AddedKeywordDefinition,\n ErrorObject,\n KeywordErrorDefinition,\n AnySchema,\n} from \"../../types\"\nimport {allSchemaProperties, usePattern, isOwnProperty} from \"../code\"\nimport {_, nil, or, not, Code, Name} from \"../../compile/codegen\"\nimport N from \"../../compile/names\"\nimport type {SubschemaArgs} from \"../../compile/validate/subschema\"\nimport {alwaysValidSchema, schemaRefOrVal, Type} from \"../../compile/util\"\n\nexport type AdditionalPropertiesError = ErrorObject<\n \"additionalProperties\",\n {additionalProperty: string},\n AnySchema\n>\n\nconst error: KeywordErrorDefinition = {\n message: \"must NOT have additional properties\",\n params: ({params}) => _`{additionalProperty: ${params.additionalProperty}}`,\n}\n\nconst def: CodeKeywordDefinition & AddedKeywordDefinition = {\n keyword: \"additionalProperties\",\n type: [\"object\"],\n schemaType: [\"boolean\", \"object\"],\n allowUndefined: true,\n trackErrors: true,\n error,\n code(cxt) {\n const {gen, schema, parentSchema, data, errsCount, it} = cxt\n /* istanbul ignore if */\n if (!errsCount) throw new Error(\"ajv implementation error\")\n const {allErrors, opts} = it\n it.props = true\n if (opts.removeAdditional !== \"all\" && alwaysValidSchema(it, schema)) return\n const props = allSchemaProperties(parentSchema.properties)\n const patProps = allSchemaProperties(parentSchema.patternProperties)\n checkAdditionalProperties()\n cxt.ok(_`${errsCount} === ${N.errors}`)\n\n function checkAdditionalProperties(): void {\n gen.forIn(\"key\", data, (key: Name) => {\n if (!props.length && !patProps.length) additionalPropertyCode(key)\n else gen.if(isAdditional(key), () => additionalPropertyCode(key))\n })\n }\n\n function isAdditional(key: Name): Code {\n let definedProp: Code\n if (props.length > 8) {\n // TODO maybe an option instead of hard-coded 8?\n const propsSchema = schemaRefOrVal(it, parentSchema.properties, \"properties\")\n definedProp = isOwnProperty(gen, propsSchema as Code, key)\n } else if (props.length) {\n definedProp = or(...props.map((p) => _`${key} === ${p}`))\n } else {\n definedProp = nil\n }\n if (patProps.length) {\n definedProp = or(definedProp, ...patProps.map((p) => _`${usePattern(cxt, p)}.test(${key})`))\n }\n return not(definedProp)\n }\n\n function deleteAdditional(key: Name): void {\n gen.code(_`delete ${data}[${key}]`)\n }\n\n function additionalPropertyCode(key: Name): void {\n if (opts.removeAdditional === \"all\" || (opts.removeAdditional && schema === false)) {\n deleteAdditional(key)\n return\n }\n\n if (schema === false) {\n cxt.setParams({additionalProperty: key})\n cxt.error()\n if (!allErrors) gen.break()\n return\n }\n\n if (typeof schema == \"object\" && !alwaysValidSchema(it, schema)) {\n const valid = gen.name(\"valid\")\n if (opts.removeAdditional === \"failing\") {\n applyAdditionalSchema(key, valid, false)\n gen.if(not(valid), () => {\n cxt.reset()\n deleteAdditional(key)\n })\n } else {\n applyAdditionalSchema(key, valid)\n if (!allErrors) gen.if(not(valid), () => gen.break())\n }\n }\n }\n\n function applyAdditionalSchema(key: Name, valid: Name, errors?: false): void {\n const subschema: SubschemaArgs = {\n keyword: \"additionalProperties\",\n dataProp: key,\n dataPropType: Type.Str,\n }\n if (errors === false) {\n Object.assign(subschema, {\n compositeRule: true,\n createErrors: false,\n allErrors: false,\n })\n }\n cxt.subschema(subschema, valid)\n }\n },\n}\n\nexport default def\n","import type {CodeKeywordDefinition} from \"../../types\"\nimport {KeywordCxt} from \"../../compile/validate\"\nimport {propertyInData, allSchemaProperties} from \"../code\"\nimport {alwaysValidSchema, toHash, mergeEvaluated} from \"../../compile/util\"\nimport apDef from \"./additionalProperties\"\n\nconst def: CodeKeywordDefinition = {\n keyword: \"properties\",\n type: \"object\",\n schemaType: \"object\",\n code(cxt: KeywordCxt) {\n const {gen, schema, parentSchema, data, it} = cxt\n if (it.opts.removeAdditional === \"all\" && parentSchema.additionalProperties === undefined) {\n apDef.code(new KeywordCxt(it, apDef, \"additionalProperties\"))\n }\n const allProps = allSchemaProperties(schema)\n for (const prop of allProps) {\n it.definedProperties.add(prop)\n }\n if (it.opts.unevaluated && allProps.length && it.props !== true) {\n it.props = mergeEvaluated.props(gen, toHash(allProps), it.props)\n }\n const properties = allProps.filter((p) => !alwaysValidSchema(it, schema[p]))\n if (properties.length === 0) return\n const valid = gen.name(\"valid\")\n\n for (const prop of properties) {\n if (hasDefault(prop)) {\n applyPropertySchema(prop)\n } else {\n gen.if(propertyInData(gen, data, prop, it.opts.ownProperties))\n applyPropertySchema(prop)\n if (!it.allErrors) gen.else().var(valid, true)\n gen.endIf()\n }\n cxt.it.definedProperties.add(prop)\n cxt.ok(valid)\n }\n\n function hasDefault(prop: string): boolean | undefined {\n return it.opts.useDefaults && !it.compositeRule && schema[prop].default !== undefined\n }\n\n function applyPropertySchema(prop: string): void {\n cxt.subschema(\n {\n keyword: \"properties\",\n schemaProp: prop,\n dataProp: prop,\n },\n valid\n )\n }\n },\n}\n\nexport default def\n","import type {CodeKeywordDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {allSchemaProperties, usePattern} from \"../code\"\nimport {_, not, Name} from \"../../compile/codegen\"\nimport {alwaysValidSchema, checkStrictMode} from \"../../compile/util\"\nimport {evaluatedPropsToName, Type} from \"../../compile/util\"\nimport {AnySchema} from \"../../types\"\n\nconst def: CodeKeywordDefinition = {\n keyword: \"patternProperties\",\n type: \"object\",\n schemaType: \"object\",\n code(cxt: KeywordCxt) {\n const {gen, schema, data, parentSchema, it} = cxt\n const {opts} = it\n const patterns = allSchemaProperties(schema)\n const alwaysValidPatterns = patterns.filter((p) =>\n alwaysValidSchema(it, schema[p] as AnySchema)\n )\n\n if (\n patterns.length === 0 ||\n (alwaysValidPatterns.length === patterns.length &&\n (!it.opts.unevaluated || it.props === true))\n ) {\n return\n }\n\n const checkProperties =\n opts.strictSchema && !opts.allowMatchingProperties && parentSchema.properties\n const valid = gen.name(\"valid\")\n if (it.props !== true && !(it.props instanceof Name)) {\n it.props = evaluatedPropsToName(gen, it.props)\n }\n const {props} = it\n validatePatternProperties()\n\n function validatePatternProperties(): void {\n for (const pat of patterns) {\n if (checkProperties) checkMatchingProperties(pat)\n if (it.allErrors) {\n validateProperties(pat)\n } else {\n gen.var(valid, true) // TODO var\n validateProperties(pat)\n gen.if(valid)\n }\n }\n }\n\n function checkMatchingProperties(pat: string): void {\n for (const prop in checkProperties) {\n if (new RegExp(pat).test(prop)) {\n checkStrictMode(\n it,\n `property ${prop} matches pattern ${pat} (use allowMatchingProperties)`\n )\n }\n }\n }\n\n function validateProperties(pat: string): void {\n gen.forIn(\"key\", data, (key) => {\n gen.if(_`${usePattern(cxt, pat)}.test(${key})`, () => {\n const alwaysValid = alwaysValidPatterns.includes(pat)\n if (!alwaysValid) {\n cxt.subschema(\n {\n keyword: \"patternProperties\",\n schemaProp: pat,\n dataProp: key,\n dataPropType: Type.Str,\n },\n valid\n )\n }\n\n if (it.opts.unevaluated && props !== true) {\n gen.assign(_`${props}[${key}]`, true)\n } else if (!alwaysValid && !it.allErrors) {\n // can short-circuit if `unevaluatedProperties` is not supported (opts.next === false)\n // or if all properties were evaluated (props === true)\n gen.if(not(valid), () => gen.break())\n }\n })\n })\n }\n },\n}\n\nexport default def\n","import type {CodeKeywordDefinition, ErrorNoParams, AnySchema} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {alwaysValidSchema} from \"../../compile/util\"\n\nexport type NotKeywordError = ErrorNoParams<\"not\", AnySchema>\n\nconst def: CodeKeywordDefinition = {\n keyword: \"not\",\n schemaType: [\"object\", \"boolean\"],\n trackErrors: true,\n code(cxt: KeywordCxt) {\n const {gen, schema, it} = cxt\n if (alwaysValidSchema(it, schema)) {\n cxt.fail()\n return\n }\n\n const valid = gen.name(\"valid\")\n cxt.subschema(\n {\n keyword: \"not\",\n compositeRule: true,\n createErrors: false,\n allErrors: false,\n },\n valid\n )\n\n cxt.failResult(\n valid,\n () => cxt.reset(),\n () => cxt.error()\n )\n },\n error: {message: \"must NOT be valid\"},\n}\n\nexport default def\n","import type {CodeKeywordDefinition, ErrorNoParams, AnySchema} from \"../../types\"\nimport {validateUnion} from \"../code\"\n\nexport type AnyOfError = ErrorNoParams<\"anyOf\", AnySchema[]>\n\nconst def: CodeKeywordDefinition = {\n keyword: \"anyOf\",\n schemaType: \"array\",\n trackErrors: true,\n code: validateUnion,\n error: {message: \"must match a schema in anyOf\"},\n}\n\nexport default def\n","import type {\n CodeKeywordDefinition,\n ErrorObject,\n KeywordErrorDefinition,\n AnySchema,\n} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, Name} from \"../../compile/codegen\"\nimport {alwaysValidSchema} from \"../../compile/util\"\nimport {SchemaCxt} from \"../../compile\"\n\nexport type OneOfError = ErrorObject<\n \"oneOf\",\n {passingSchemas: [number, number] | null},\n AnySchema[]\n>\n\nconst error: KeywordErrorDefinition = {\n message: \"must match exactly one schema in oneOf\",\n params: ({params}) => _`{passingSchemas: ${params.passing}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"oneOf\",\n schemaType: \"array\",\n trackErrors: true,\n error,\n code(cxt: KeywordCxt) {\n const {gen, schema, parentSchema, it} = cxt\n /* istanbul ignore if */\n if (!Array.isArray(schema)) throw new Error(\"ajv implementation error\")\n if (it.opts.discriminator && parentSchema.discriminator) return\n const schArr: AnySchema[] = schema\n const valid = gen.let(\"valid\", false)\n const passing = gen.let(\"passing\", null)\n const schValid = gen.name(\"_valid\")\n cxt.setParams({passing})\n // TODO possibly fail straight away (with warning or exception) if there are two empty always valid schemas\n\n gen.block(validateOneOf)\n\n cxt.result(\n valid,\n () => cxt.reset(),\n () => cxt.error(true)\n )\n\n function validateOneOf(): void {\n schArr.forEach((sch: AnySchema, i: number) => {\n let schCxt: SchemaCxt | undefined\n if (alwaysValidSchema(it, sch)) {\n gen.var(schValid, true)\n } else {\n schCxt = cxt.subschema(\n {\n keyword: \"oneOf\",\n schemaProp: i,\n compositeRule: true,\n },\n schValid\n )\n }\n\n if (i > 0) {\n gen\n .if(_`${schValid} && ${valid}`)\n .assign(valid, false)\n .assign(passing, _`[${passing}, ${i}]`)\n .else()\n }\n\n gen.if(schValid, () => {\n gen.assign(valid, true)\n gen.assign(passing, i)\n if (schCxt) cxt.mergeEvaluated(schCxt, Name)\n })\n })\n }\n },\n}\n\nexport default def\n","import type {CodeKeywordDefinition, AnySchema} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {alwaysValidSchema} from \"../../compile/util\"\n\nconst def: CodeKeywordDefinition = {\n keyword: \"allOf\",\n schemaType: \"array\",\n code(cxt: KeywordCxt) {\n const {gen, schema, it} = cxt\n /* istanbul ignore if */\n if (!Array.isArray(schema)) throw new Error(\"ajv implementation error\")\n const valid = gen.name(\"valid\")\n schema.forEach((sch: AnySchema, i: number) => {\n if (alwaysValidSchema(it, sch)) return\n const schCxt = cxt.subschema({keyword: \"allOf\", schemaProp: i}, valid)\n cxt.ok(valid)\n cxt.mergeEvaluated(schCxt)\n })\n },\n}\n\nexport default def\n","import type {\n CodeKeywordDefinition,\n ErrorObject,\n KeywordErrorDefinition,\n AnySchema,\n} from \"../../types\"\nimport type {SchemaObjCxt} from \"../../compile\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str, not, Name} from \"../../compile/codegen\"\nimport {alwaysValidSchema, checkStrictMode} from \"../../compile/util\"\n\nexport type IfKeywordError = ErrorObject<\"if\", {failingKeyword: string}, AnySchema>\n\nconst error: KeywordErrorDefinition = {\n message: ({params}) => str`must match \"${params.ifClause}\" schema`,\n params: ({params}) => _`{failingKeyword: ${params.ifClause}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"if\",\n schemaType: [\"object\", \"boolean\"],\n trackErrors: true,\n error,\n code(cxt: KeywordCxt) {\n const {gen, parentSchema, it} = cxt\n if (parentSchema.then === undefined && parentSchema.else === undefined) {\n checkStrictMode(it, '\"if\" without \"then\" and \"else\" is ignored')\n }\n const hasThen = hasSchema(it, \"then\")\n const hasElse = hasSchema(it, \"else\")\n if (!hasThen && !hasElse) return\n\n const valid = gen.let(\"valid\", true)\n const schValid = gen.name(\"_valid\")\n validateIf()\n cxt.reset()\n\n if (hasThen && hasElse) {\n const ifClause = gen.let(\"ifClause\")\n cxt.setParams({ifClause})\n gen.if(schValid, validateClause(\"then\", ifClause), validateClause(\"else\", ifClause))\n } else if (hasThen) {\n gen.if(schValid, validateClause(\"then\"))\n } else {\n gen.if(not(schValid), validateClause(\"else\"))\n }\n\n cxt.pass(valid, () => cxt.error(true))\n\n function validateIf(): void {\n const schCxt = cxt.subschema(\n {\n keyword: \"if\",\n compositeRule: true,\n createErrors: false,\n allErrors: false,\n },\n schValid\n )\n cxt.mergeEvaluated(schCxt)\n }\n\n function validateClause(keyword: string, ifClause?: Name): () => void {\n return () => {\n const schCxt = cxt.subschema({keyword}, schValid)\n gen.assign(valid, schValid)\n cxt.mergeValidEvaluated(schCxt, valid)\n if (ifClause) gen.assign(ifClause, _`${keyword}`)\n else cxt.setParams({ifClause: keyword})\n }\n }\n },\n}\n\nfunction hasSchema(it: SchemaObjCxt, keyword: string): boolean {\n const schema = it.schema[keyword]\n return schema !== undefined && !alwaysValidSchema(it, schema)\n}\n\nexport default def\n","import type {CodeKeywordDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {checkStrictMode} from \"../../compile/util\"\n\nconst def: CodeKeywordDefinition = {\n keyword: [\"then\", \"else\"],\n schemaType: [\"object\", \"boolean\"],\n code({keyword, parentSchema, it}: KeywordCxt) {\n if (parentSchema.if === undefined) checkStrictMode(it, `\"${keyword}\" without \"if\" is ignored`)\n },\n}\n\nexport default def\n","import type {ErrorNoParams, Vocabulary} from \"../../types\"\nimport additionalItems, {AdditionalItemsError} from \"./additionalItems\"\nimport prefixItems from \"./prefixItems\"\nimport items from \"./items\"\nimport items2020, {ItemsError} from \"./items2020\"\nimport contains, {ContainsError} from \"./contains\"\nimport dependencies, {DependenciesError} from \"./dependencies\"\nimport propertyNames, {PropertyNamesError} from \"./propertyNames\"\nimport additionalProperties, {AdditionalPropertiesError} from \"./additionalProperties\"\nimport properties from \"./properties\"\nimport patternProperties from \"./patternProperties\"\nimport notKeyword, {NotKeywordError} from \"./not\"\nimport anyOf, {AnyOfError} from \"./anyOf\"\nimport oneOf, {OneOfError} from \"./oneOf\"\nimport allOf from \"./allOf\"\nimport ifKeyword, {IfKeywordError} from \"./if\"\nimport thenElse from \"./thenElse\"\n\nexport default function getApplicator(draft2020 = false): Vocabulary {\n const applicator = [\n // any\n notKeyword,\n anyOf,\n oneOf,\n allOf,\n ifKeyword,\n thenElse,\n // object\n propertyNames,\n additionalProperties,\n dependencies,\n properties,\n patternProperties,\n ]\n // array\n if (draft2020) applicator.push(prefixItems, items2020)\n else applicator.push(additionalItems, items)\n applicator.push(contains)\n return applicator\n}\n\nexport type ApplicatorKeywordError =\n | ErrorNoParams<\"false schema\">\n | AdditionalItemsError\n | ItemsError\n | ContainsError\n | AdditionalPropertiesError\n | DependenciesError\n | IfKeywordError\n | AnyOfError\n | OneOfError\n | NotKeywordError\n | PropertyNamesError\n","import type {\n AddedFormat,\n FormatValidator,\n AsyncFormatValidator,\n CodeKeywordDefinition,\n KeywordErrorDefinition,\n ErrorObject,\n} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str, nil, or, Code, getProperty, regexpCode} from \"../../compile/codegen\"\n\ntype FormatValidate =\n | FormatValidator<string>\n | FormatValidator<number>\n | AsyncFormatValidator<string>\n | AsyncFormatValidator<number>\n | RegExp\n | string\n | true\n\nexport type FormatError = ErrorObject<\"format\", {format: string}, string | {$data: string}>\n\nconst error: KeywordErrorDefinition = {\n message: ({schemaCode}) => str`must match format \"${schemaCode}\"`,\n params: ({schemaCode}) => _`{format: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"format\",\n type: [\"number\", \"string\"],\n schemaType: \"string\",\n $data: true,\n error,\n code(cxt: KeywordCxt, ruleType?: string) {\n const {gen, data, $data, schema, schemaCode, it} = cxt\n const {opts, errSchemaPath, schemaEnv, self} = it\n if (!opts.validateFormats) return\n\n if ($data) validate$DataFormat()\n else validateFormat()\n\n function validate$DataFormat(): void {\n const fmts = gen.scopeValue(\"formats\", {\n ref: self.formats,\n code: opts.code.formats,\n })\n const fDef = gen.const(\"fDef\", _`${fmts}[${schemaCode}]`)\n const fType = gen.let(\"fType\")\n const format = gen.let(\"format\")\n // TODO simplify\n gen.if(\n _`typeof ${fDef} == \"object\" && !(${fDef} instanceof RegExp)`,\n () => gen.assign(fType, _`${fDef}.type || \"string\"`).assign(format, _`${fDef}.validate`),\n () => gen.assign(fType, _`\"string\"`).assign(format, fDef)\n )\n cxt.fail$data(or(unknownFmt(), invalidFmt()))\n\n function unknownFmt(): Code {\n if (opts.strictSchema === false) return nil\n return _`${schemaCode} && !${format}`\n }\n\n function invalidFmt(): Code {\n const callFormat = schemaEnv.$async\n ? _`(${fDef}.async ? await ${format}(${data}) : ${format}(${data}))`\n : _`${format}(${data})`\n const validData = _`(typeof ${format} == \"function\" ? ${callFormat} : ${format}.test(${data}))`\n return _`${format} && ${format} !== true && ${fType} === ${ruleType} && !${validData}`\n }\n }\n\n function validateFormat(): void {\n const formatDef: AddedFormat | undefined = self.formats[schema]\n if (!formatDef) {\n unknownFormat()\n return\n }\n if (formatDef === true) return\n const [fmtType, format, fmtRef] = getFormat(formatDef)\n if (fmtType === ruleType) cxt.pass(validCondition())\n\n function unknownFormat(): void {\n if (opts.strictSchema === false) {\n self.logger.warn(unknownMsg())\n return\n }\n throw new Error(unknownMsg())\n\n function unknownMsg(): string {\n return `unknown format \"${schema as string}\" ignored in schema at path \"${errSchemaPath}\"`\n }\n }\n\n function getFormat(fmtDef: AddedFormat): [string, FormatValidate, Code] {\n const code =\n fmtDef instanceof RegExp\n ? regexpCode(fmtDef)\n : opts.code.formats\n ? _`${opts.code.formats}${getProperty(schema)}`\n : undefined\n const fmt = gen.scopeValue(\"formats\", {key: schema, ref: fmtDef, code})\n if (typeof fmtDef == \"object\" && !(fmtDef instanceof RegExp)) {\n return [fmtDef.type || \"string\", fmtDef.validate, _`${fmt}.validate`]\n }\n\n return [\"string\", fmtDef, fmt]\n }\n\n function validCondition(): Code {\n if (typeof formatDef == \"object\" && !(formatDef instanceof RegExp) && formatDef.async) {\n if (!schemaEnv.$async) throw new Error(\"async format in sync schema\")\n return _`await ${fmtRef}(${data})`\n }\n return typeof format == \"function\" ? _`${fmtRef}(${data})` : _`${fmtRef}.test(${data})`\n }\n }\n },\n}\n\nexport default def\n","import type {Vocabulary} from \"../../types\"\nimport formatKeyword from \"./format\"\n\nconst format: Vocabulary = [formatKeyword]\n\nexport default format\n","import type {Vocabulary} from \"../types\"\n\nexport const metadataVocabulary: Vocabulary = [\n \"title\",\n \"description\",\n \"default\",\n \"deprecated\",\n \"readOnly\",\n \"writeOnly\",\n \"examples\",\n]\n\nexport const contentVocabulary: Vocabulary = [\n \"contentMediaType\",\n \"contentEncoding\",\n \"contentSchema\",\n]\n","import type {Vocabulary} from \"../types\"\nimport coreVocabulary from \"./core\"\nimport validationVocabulary from \"./validation\"\nimport getApplicatorVocabulary from \"./applicator\"\nimport formatVocabulary from \"./format\"\nimport {metadataVocabulary, contentVocabulary} from \"./metadata\"\n\nconst draft7Vocabularies: Vocabulary[] = [\n coreVocabulary,\n validationVocabulary,\n getApplicatorVocabulary(),\n formatVocabulary,\n metadataVocabulary,\n contentVocabulary,\n]\n\nexport default draft7Vocabularies\n","import type {ErrorObject} from \"../../types\"\n\nexport enum DiscrError {\n Tag = \"tag\",\n Mapping = \"mapping\",\n}\n\nexport type DiscrErrorObj<E extends DiscrError> = ErrorObject<\n \"discriminator\",\n {error: E; tag: string; tagValue: unknown},\n string\n>\n","import type {CodeKeywordDefinition, AnySchemaObject, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, getProperty, Name} from \"../../compile/codegen\"\nimport {DiscrError, DiscrErrorObj} from \"../discriminator/types\"\nimport {resolveRef, SchemaEnv} from \"../../compile\"\nimport MissingRefError from \"../../compile/ref_error\"\nimport {schemaHasRulesButRef} from \"../../compile/util\"\n\nexport type DiscriminatorError = DiscrErrorObj<DiscrError.Tag> | DiscrErrorObj<DiscrError.Mapping>\n\nconst error: KeywordErrorDefinition = {\n message: ({params: {discrError, tagName}}) =>\n discrError === DiscrError.Tag\n ? `tag \"${tagName}\" must be string`\n : `value of tag \"${tagName}\" must be in oneOf`,\n params: ({params: {discrError, tag, tagName}}) =>\n _`{error: ${discrError}, tag: ${tagName}, tagValue: ${tag}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"discriminator\",\n type: \"object\",\n schemaType: \"object\",\n error,\n code(cxt: KeywordCxt) {\n const {gen, data, schema, parentSchema, it} = cxt\n const {oneOf} = parentSchema\n if (!it.opts.discriminator) {\n throw new Error(\"discriminator: requires discriminator option\")\n }\n const tagName = schema.propertyName\n if (typeof tagName != \"string\") throw new Error(\"discriminator: requires propertyName\")\n if (schema.mapping) throw new Error(\"discriminator: mapping is not supported\")\n if (!oneOf) throw new Error(\"discriminator: requires oneOf keyword\")\n const valid = gen.let(\"valid\", false)\n const tag = gen.const(\"tag\", _`${data}${getProperty(tagName)}`)\n gen.if(\n _`typeof ${tag} == \"string\"`,\n () => validateMapping(),\n () => cxt.error(false, {discrError: DiscrError.Tag, tag, tagName})\n )\n cxt.ok(valid)\n\n function validateMapping(): void {\n const mapping = getMapping()\n gen.if(false)\n for (const tagValue in mapping) {\n gen.elseIf(_`${tag} === ${tagValue}`)\n gen.assign(valid, applyTagSchema(mapping[tagValue]))\n }\n gen.else()\n cxt.error(false, {discrError: DiscrError.Mapping, tag, tagName})\n gen.endIf()\n }\n\n function applyTagSchema(schemaProp?: number): Name {\n const _valid = gen.name(\"valid\")\n const schCxt = cxt.subschema({keyword: \"oneOf\", schemaProp}, _valid)\n cxt.mergeEvaluated(schCxt, Name)\n return _valid\n }\n\n function getMapping(): {[T in string]?: number} {\n const oneOfMapping: {[T in string]?: number} = {}\n const topRequired = hasRequired(parentSchema)\n let tagRequired = true\n for (let i = 0; i < oneOf.length; i++) {\n let sch = oneOf[i]\n if (sch?.$ref && !schemaHasRulesButRef(sch, it.self.RULES)) {\n const ref = sch.$ref\n sch = resolveRef.call(it.self, it.schemaEnv.root, it.baseId, ref)\n if (sch instanceof SchemaEnv) sch = sch.schema\n if (sch === undefined) throw new MissingRefError(it.opts.uriResolver, it.baseId, ref)\n }\n const propSch = sch?.properties?.[tagName]\n if (typeof propSch != \"object\") {\n throw new Error(\n `discriminator: oneOf subschemas (or referenced schemas) must have \"properties/${tagName}\"`\n )\n }\n tagRequired = tagRequired && (topRequired || hasRequired(sch))\n addMappings(propSch, i)\n }\n if (!tagRequired) throw new Error(`discriminator: \"${tagName}\" must be required`)\n return oneOfMapping\n\n function hasRequired({required}: AnySchemaObject): boolean {\n return Array.isArray(required) && required.includes(tagName)\n }\n\n function addMappings(sch: AnySchemaObject, i: number): void {\n if (sch.const) {\n addMapping(sch.const, i)\n } else if (sch.enum) {\n for (const tagValue of sch.enum) {\n addMapping(tagValue, i)\n }\n } else {\n throw new Error(`discriminator: \"properties/${tagName}\" must have \"const\" or \"enum\"`)\n }\n }\n\n function addMapping(tagValue: unknown, i: number): void {\n if (typeof tagValue != \"string\" || tagValue in oneOfMapping) {\n throw new Error(`discriminator: \"${tagName}\" values must be unique strings`)\n }\n oneOfMapping[tagValue] = i\n }\n }\n },\n}\n\nexport default def\n","{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": \"http://json-schema.org/draft-07/schema#\",\n \"title\": \"Core schema meta-schema\",\n \"definitions\": {\n \"schemaArray\": {\n \"type\": \"array\",\n \"minItems\": 1,\n \"items\": {\"$ref\": \"#\"}\n },\n \"nonNegativeInteger\": {\n \"type\": \"integer\",\n \"minimum\": 0\n },\n \"nonNegativeIntegerDefault0\": {\n \"allOf\": [{\"$ref\": \"#/definitions/nonNegativeInteger\"}, {\"default\": 0}]\n },\n \"simpleTypes\": {\n \"enum\": [\"array\", \"boolean\", \"integer\", \"null\", \"number\", \"object\", \"string\"]\n },\n \"stringArray\": {\n \"type\": \"array\",\n \"items\": {\"type\": \"string\"},\n \"uniqueItems\": true,\n \"default\": []\n }\n },\n \"type\": [\"object\", \"boolean\"],\n \"properties\": {\n \"$id\": {\n \"type\": \"string\",\n \"format\": \"uri-reference\"\n },\n \"$schema\": {\n \"type\": \"string\",\n \"format\": \"uri\"\n },\n \"$ref\": {\n \"type\": \"string\",\n \"format\": \"uri-reference\"\n },\n \"$comment\": {\n \"type\": \"string\"\n },\n \"title\": {\n \"type\": \"string\"\n },\n \"description\": {\n \"type\": \"string\"\n },\n \"default\": true,\n \"readOnly\": {\n \"type\": \"boolean\",\n \"default\": false\n },\n \"examples\": {\n \"type\": \"array\",\n \"items\": true\n },\n \"multipleOf\": {\n \"type\": \"number\",\n \"exclusiveMinimum\": 0\n },\n \"maximum\": {\n \"type\": \"number\"\n },\n \"exclusiveMaximum\": {\n \"type\": \"number\"\n },\n \"minimum\": {\n \"type\": \"number\"\n },\n \"exclusiveMinimum\": {\n \"type\": \"number\"\n },\n \"maxLength\": {\"$ref\": \"#/definitions/nonNegativeInteger\"},\n \"minLength\": {\"$ref\": \"#/definitions/nonNegativeIntegerDefault0\"},\n \"pattern\": {\n \"type\": \"string\",\n \"format\": \"regex\"\n },\n \"additionalItems\": {\"$ref\": \"#\"},\n \"items\": {\n \"anyOf\": [{\"$ref\": \"#\"}, {\"$ref\": \"#/definitions/schemaArray\"}],\n \"default\": true\n },\n \"maxItems\": {\"$ref\": \"#/definitions/nonNegativeInteger\"},\n \"minItems\": {\"$ref\": \"#/definitions/nonNegativeIntegerDefault0\"},\n \"uniqueItems\": {\n \"type\": \"boolean\",\n \"default\": false\n },\n \"contains\": {\"$ref\": \"#\"},\n \"maxProperties\": {\"$ref\": \"#/definitions/nonNegativeInteger\"},\n \"minProperties\": {\"$ref\": \"#/definitions/nonNegativeIntegerDefault0\"},\n \"required\": {\"$ref\": \"#/definitions/stringArray\"},\n \"additionalProperties\": {\"$ref\": \"#\"},\n \"definitions\": {\n \"type\": \"object\",\n \"additionalProperties\": {\"$ref\": \"#\"},\n \"default\": {}\n },\n \"properties\": {\n \"type\": \"object\",\n \"additionalProperties\": {\"$ref\": \"#\"},\n \"default\": {}\n },\n \"patternProperties\": {\n \"type\": \"object\",\n \"additionalProperties\": {\"$ref\": \"#\"},\n \"propertyNames\": {\"format\": \"regex\"},\n \"default\": {}\n },\n \"dependencies\": {\n \"type\": \"object\",\n \"additionalProperties\": {\n \"anyOf\": [{\"$ref\": \"#\"}, {\"$ref\": \"#/definitions/stringArray\"}]\n }\n },\n \"propertyNames\": {\"$ref\": \"#\"},\n \"const\": true,\n \"enum\": {\n \"type\": \"array\",\n \"items\": true,\n \"minItems\": 1,\n \"uniqueItems\": true\n },\n \"type\": {\n \"anyOf\": [\n {\"$ref\": \"#/definitions/simpleTypes\"},\n {\n \"type\": \"array\",\n \"items\": {\"$ref\": \"#/definitions/simpleTypes\"},\n \"minItems\": 1,\n \"uniqueItems\": true\n }\n ]\n },\n \"format\": {\"type\": \"string\"},\n \"contentMediaType\": {\"type\": \"string\"},\n \"contentEncoding\": {\"type\": \"string\"},\n \"if\": {\"$ref\": \"#\"},\n \"then\": {\"$ref\": \"#\"},\n \"else\": {\"$ref\": \"#\"},\n \"allOf\": {\"$ref\": \"#/definitions/schemaArray\"},\n \"anyOf\": {\"$ref\": \"#/definitions/schemaArray\"},\n \"oneOf\": {\"$ref\": \"#/definitions/schemaArray\"},\n \"not\": {\"$ref\": \"#\"}\n },\n \"default\": true\n}\n","import type {AnySchemaObject} from \"./types\"\nimport AjvCore from \"./core\"\nimport draft7Vocabularies from \"./vocabularies/draft7\"\nimport discriminator from \"./vocabularies/discriminator\"\nimport * as draft7MetaSchema from \"./refs/json-schema-draft-07.json\"\n\nconst META_SUPPORT_DATA = [\"/properties\"]\n\nconst META_SCHEMA_ID = \"http://json-schema.org/draft-07/schema\"\n\nexport class Ajv extends AjvCore {\n _addVocabularies(): void {\n super._addVocabularies()\n draft7Vocabularies.forEach((v) => this.addVocabulary(v))\n if (this.opts.discriminator) this.addKeyword(discriminator)\n }\n\n _addDefaultMetaSchema(): void {\n super._addDefaultMetaSchema()\n if (!this.opts.meta) return\n const metaSchema = this.opts.$data\n ? this.$dataMetaSchema(draft7MetaSchema, META_SUPPORT_DATA)\n : draft7MetaSchema\n this.addMetaSchema(metaSchema, META_SCHEMA_ID, false)\n this.refs[\"http://json-schema.org/schema\"] = META_SCHEMA_ID\n }\n\n defaultMeta(): string | AnySchemaObject | undefined {\n return (this.opts.defaultMeta =\n super.defaultMeta() || (this.getSchema(META_SCHEMA_ID) ? META_SCHEMA_ID : undefined))\n }\n}\n\nmodule.exports = exports = Ajv\nmodule.exports.Ajv = Ajv\nObject.defineProperty(exports, \"__esModule\", {value: true})\n\nexport default Ajv\n\nexport {\n Format,\n FormatDefinition,\n AsyncFormatDefinition,\n KeywordDefinition,\n KeywordErrorDefinition,\n CodeKeywordDefinition,\n MacroKeywordDefinition,\n FuncKeywordDefinition,\n Vocabulary,\n Schema,\n SchemaObject,\n AnySchemaObject,\n AsyncSchema,\n AnySchema,\n ValidateFunction,\n AsyncValidateFunction,\n SchemaValidateFunction,\n ErrorObject,\n ErrorNoParams,\n} from \"./types\"\n\nexport {Plugin, Options, CodeOptions, InstanceOptions, Logger, ErrorsTextOptions} from \"./core\"\nexport {SchemaCxt, SchemaObjCxt} from \"./compile\"\nexport {KeywordCxt} from \"./compile/validate\"\nexport {DefinedError} from \"./vocabularies/errors\"\nexport {JSONType} from \"./compile/rules\"\nexport {JSONSchemaType} from \"./types/json-schema\"\nexport {_, str, stringify, nil, Name, Code, CodeGen, CodeGenOptions} from \"./compile/codegen\"\nexport {default as ValidationError} from \"./runtime/validation_error\"\nexport {default as MissingRefError} from \"./compile/ref_error\"\n","import type {CodeKeywordDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, getProperty, Code} from \"../../compile/codegen\"\nimport N from \"../../compile/names\"\nimport {SchemaEnv, compileSchema} from \"../../compile\"\nimport {getValidate} from \"../core/ref\"\n\nconst def: CodeKeywordDefinition = {\n keyword: \"$dynamicAnchor\",\n schemaType: \"string\",\n code: (cxt) => dynamicAnchor(cxt, cxt.schema),\n}\n\nexport function dynamicAnchor(cxt: KeywordCxt, anchor: string): void {\n const {gen, it} = cxt\n it.schemaEnv.root.dynamicAnchors[anchor] = true\n const v = _`${N.dynamicAnchors}${getProperty(anchor)}`\n const validate = it.errSchemaPath === \"#\" ? it.validateName : _getValidate(cxt)\n gen.if(_`!${v}`, () => gen.assign(v, validate))\n}\n\nfunction _getValidate(cxt: KeywordCxt): Code {\n const {schemaEnv, schema, self} = cxt.it\n const {root, baseId, localRefs, meta} = schemaEnv.root\n const {schemaId} = self.opts\n const sch = new SchemaEnv({schema, schemaId, root, baseId, localRefs, meta})\n compileSchema.call(self, sch)\n return getValidate(cxt, sch)\n}\n\nexport default def\n","import type {CodeKeywordDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, getProperty, Code, Name} from \"../../compile/codegen\"\nimport N from \"../../compile/names\"\nimport {callRef} from \"../core/ref\"\n\nconst def: CodeKeywordDefinition = {\n keyword: \"$dynamicRef\",\n schemaType: \"string\",\n code: (cxt) => dynamicRef(cxt, cxt.schema),\n}\n\nexport function dynamicRef(cxt: KeywordCxt, ref: string): void {\n const {gen, keyword, it} = cxt\n if (ref[0] !== \"#\") throw new Error(`\"${keyword}\" only supports hash fragment reference`)\n const anchor = ref.slice(1)\n if (it.allErrors) {\n _dynamicRef()\n } else {\n const valid = gen.let(\"valid\", false)\n _dynamicRef(valid)\n cxt.ok(valid)\n }\n\n function _dynamicRef(valid?: Name): void {\n // TODO the assumption here is that `recursiveRef: #` always points to the root\n // of the schema object, which is not correct, because there may be $id that\n // makes # point to it, and the target schema may not contain dynamic/recursiveAnchor.\n // Because of that 2 tests in recursiveRef.json fail.\n // This is a similar problem to #815 (`$id` doesn't alter resolution scope for `{ \"$ref\": \"#\" }`).\n // (This problem is not tested in JSON-Schema-Test-Suite)\n if (it.schemaEnv.root.dynamicAnchors[anchor]) {\n const v = gen.let(\"_v\", _`${N.dynamicAnchors}${getProperty(anchor)}`)\n gen.if(v, _callRef(v, valid), _callRef(it.validateName, valid))\n } else {\n _callRef(it.validateName, valid)()\n }\n }\n\n function _callRef(validate: Code, valid?: Name): () => void {\n return valid\n ? () =>\n gen.block(() => {\n callRef(cxt, validate)\n gen.let(valid, true)\n })\n : () => callRef(cxt, validate)\n }\n}\n\nexport default def\n","import type {CodeKeywordDefinition} from \"../../types\"\nimport {dynamicAnchor} from \"./dynamicAnchor\"\nimport {checkStrictMode} from \"../../compile/util\"\n\nconst def: CodeKeywordDefinition = {\n keyword: \"$recursiveAnchor\",\n schemaType: \"boolean\",\n code(cxt) {\n if (cxt.schema) dynamicAnchor(cxt, \"\")\n else checkStrictMode(cxt.it, \"$recursiveAnchor: false is ignored\")\n },\n}\n\nexport default def\n","import type {CodeKeywordDefinition} from \"../../types\"\nimport {dynamicRef} from \"./dynamicRef\"\n\nconst def: CodeKeywordDefinition = {\n keyword: \"$recursiveRef\",\n schemaType: \"string\",\n code: (cxt) => dynamicRef(cxt, cxt.schema),\n}\n\nexport default def\n","import type {Vocabulary} from \"../../types\"\nimport dynamicAnchor from \"./dynamicAnchor\"\nimport dynamicRef from \"./dynamicRef\"\nimport recursiveAnchor from \"./recursiveAnchor\"\nimport recursiveRef from \"./recursiveRef\"\n\nconst dynamic: Vocabulary = [dynamicAnchor, dynamicRef, recursiveAnchor, recursiveRef]\n\nexport default dynamic\n","import type {CodeKeywordDefinition, ErrorObject} from \"../../types\"\nimport {\n validatePropertyDeps,\n error,\n DependenciesErrorParams,\n PropertyDependencies,\n} from \"../applicator/dependencies\"\n\nexport type DependentRequiredError = ErrorObject<\n \"dependentRequired\",\n DependenciesErrorParams,\n PropertyDependencies\n>\n\nconst def: CodeKeywordDefinition = {\n keyword: \"dependentRequired\",\n type: \"object\",\n schemaType: \"object\",\n error,\n code: (cxt) => validatePropertyDeps(cxt),\n}\n\nexport default def\n","import type {CodeKeywordDefinition} from \"../../types\"\nimport {validateSchemaDeps} from \"./dependencies\"\n\nconst def: CodeKeywordDefinition = {\n keyword: \"dependentSchemas\",\n type: \"object\",\n schemaType: \"object\",\n code: (cxt) => validateSchemaDeps(cxt),\n}\n\nexport default def\n","import type {CodeKeywordDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {checkStrictMode} from \"../../compile/util\"\n\nconst def: CodeKeywordDefinition = {\n keyword: [\"maxContains\", \"minContains\"],\n type: \"array\",\n schemaType: \"number\",\n code({keyword, parentSchema, it}: KeywordCxt) {\n if (parentSchema.contains === undefined) {\n checkStrictMode(it, `\"${keyword}\" without \"contains\" is ignored`)\n }\n },\n}\n\nexport default def\n","import type {Vocabulary} from \"../types\"\nimport dependentRequired from \"./validation/dependentRequired\"\nimport dependentSchemas from \"./applicator/dependentSchemas\"\nimport limitContains from \"./validation/limitContains\"\n\nconst next: Vocabulary = [dependentRequired, dependentSchemas, limitContains]\n\nexport default next\n","import type {\n CodeKeywordDefinition,\n KeywordErrorDefinition,\n ErrorObject,\n AnySchema,\n} from \"../../types\"\nimport {_, not, and, Name, Code} from \"../../compile/codegen\"\nimport {alwaysValidSchema, Type} from \"../../compile/util\"\nimport N from \"../../compile/names\"\n\nexport type UnevaluatedPropertiesError = ErrorObject<\n \"unevaluatedProperties\",\n {unevaluatedProperty: string},\n AnySchema\n>\n\nconst error: KeywordErrorDefinition = {\n message: \"must NOT have unevaluated properties\",\n params: ({params}) => _`{unevaluatedProperty: ${params.unevaluatedProperty}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"unevaluatedProperties\",\n type: \"object\",\n schemaType: [\"boolean\", \"object\"],\n trackErrors: true,\n error,\n code(cxt) {\n const {gen, schema, data, errsCount, it} = cxt\n /* istanbul ignore if */\n if (!errsCount) throw new Error(\"ajv implementation error\")\n const {allErrors, props} = it\n if (props instanceof Name) {\n gen.if(_`${props} !== true`, () =>\n gen.forIn(\"key\", data, (key: Name) =>\n gen.if(unevaluatedDynamic(props, key), () => unevaluatedPropCode(key))\n )\n )\n } else if (props !== true) {\n gen.forIn(\"key\", data, (key: Name) =>\n props === undefined\n ? unevaluatedPropCode(key)\n : gen.if(unevaluatedStatic(props, key), () => unevaluatedPropCode(key))\n )\n }\n it.props = true\n cxt.ok(_`${errsCount} === ${N.errors}`)\n\n function unevaluatedPropCode(key: Name): void {\n if (schema === false) {\n cxt.setParams({unevaluatedProperty: key})\n cxt.error()\n if (!allErrors) gen.break()\n return\n }\n\n if (!alwaysValidSchema(it, schema)) {\n const valid = gen.name(\"valid\")\n cxt.subschema(\n {\n keyword: \"unevaluatedProperties\",\n dataProp: key,\n dataPropType: Type.Str,\n },\n valid\n )\n if (!allErrors) gen.if(not(valid), () => gen.break())\n }\n }\n\n function unevaluatedDynamic(evaluatedProps: Name, key: Name): Code {\n return _`!${evaluatedProps} || !${evaluatedProps}[${key}]`\n }\n\n function unevaluatedStatic(evaluatedProps: {[K in string]?: true}, key: Name): Code {\n const ps: Code[] = []\n for (const p in evaluatedProps) {\n if (evaluatedProps[p] === true) ps.push(_`${key} !== ${p}`)\n }\n return and(...ps)\n }\n },\n}\n\nexport default def\n","import type {\n CodeKeywordDefinition,\n ErrorObject,\n KeywordErrorDefinition,\n AnySchema,\n} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str, not, Name} from \"../../compile/codegen\"\nimport {alwaysValidSchema, Type} from \"../../compile/util\"\n\nexport type UnevaluatedItemsError = ErrorObject<\"unevaluatedItems\", {limit: number}, AnySchema>\n\nconst error: KeywordErrorDefinition = {\n message: ({params: {len}}) => str`must NOT have more than ${len} items`,\n params: ({params: {len}}) => _`{limit: ${len}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n keyword: \"unevaluatedItems\",\n type: \"array\",\n schemaType: [\"boolean\", \"object\"],\n error,\n code(cxt: KeywordCxt) {\n const {gen, schema, data, it} = cxt\n const items = it.items || 0\n if (items === true) return\n const len = gen.const(\"len\", _`${data}.length`)\n if (schema === false) {\n cxt.setParams({len: items})\n cxt.fail(_`${len} > ${items}`)\n } else if (typeof schema == \"object\" && !alwaysValidSchema(it, schema)) {\n const valid = gen.var(\"valid\", _`${len} <= ${items}`)\n gen.if(not(valid), () => validateItems(valid, items))\n cxt.ok(valid)\n }\n it.items = true\n\n function validateItems(valid: Name, from: Name | number): void {\n gen.forRange(\"i\", from, len, (i) => {\n cxt.subschema({keyword: \"unevaluatedItems\", dataProp: i, dataPropType: Type.Num}, valid)\n if (!it.allErrors) gen.if(not(valid), () => gen.break())\n })\n }\n },\n}\n\nexport default def\n","import type {Vocabulary} from \"../../types\"\nimport unevaluatedProperties from \"./unevaluatedProperties\"\nimport unevaluatedItems from \"./unevaluatedItems\"\n\nconst unevaluated: Vocabulary = [unevaluatedProperties, unevaluatedItems]\n\nexport default unevaluated\n","import type {Vocabulary} from \"../types\"\nimport coreVocabulary from \"./core\"\nimport validationVocabulary from \"./validation\"\nimport getApplicatorVocabulary from \"./applicator\"\nimport dynamicVocabulary from \"./dynamic\"\nimport nextVocabulary from \"./next\"\nimport unevaluatedVocabulary from \"./unevaluated\"\nimport formatVocabulary from \"./format\"\nimport {metadataVocabulary, contentVocabulary} from \"./metadata\"\n\nconst draft2020Vocabularies: Vocabulary[] = [\n dynamicVocabulary,\n coreVocabulary,\n validationVocabulary,\n getApplicatorVocabulary(true),\n formatVocabulary,\n metadataVocabulary,\n contentVocabulary,\n nextVocabulary,\n unevaluatedVocabulary,\n]\n\nexport default draft2020Vocabularies\n","{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"$id\": \"https://json-schema.org/draft/2020-12/schema\",\n \"$vocabulary\": {\n \"https://json-schema.org/draft/2020-12/vocab/core\": true,\n \"https://json-schema.org/draft/2020-12/vocab/applicator\": true,\n \"https://json-schema.org/draft/2020-12/vocab/unevaluated\": true,\n \"https://json-schema.org/draft/2020-12/vocab/validation\": true,\n \"https://json-schema.org/draft/2020-12/vocab/meta-data\": true,\n \"https://json-schema.org/draft/2020-12/vocab/format-annotation\": true,\n \"https://json-schema.org/draft/2020-12/vocab/content\": true\n },\n \"$dynamicAnchor\": \"meta\",\n\n \"title\": \"Core and Validation specifications meta-schema\",\n \"allOf\": [\n {\"$ref\": \"meta/core\"},\n {\"$ref\": \"meta/applicator\"},\n {\"$ref\": \"meta/unevaluated\"},\n {\"$ref\": \"meta/validation\"},\n {\"$ref\": \"meta/meta-data\"},\n {\"$ref\": \"meta/format-annotation\"},\n {\"$ref\": \"meta/content\"}\n ],\n \"type\": [\"object\", \"boolean\"],\n \"$comment\": \"This meta-schema also defines keywords that have appeared in previous drafts in order to prevent incompatible extensions as they remain in common use.\",\n \"properties\": {\n \"definitions\": {\n \"$comment\": \"\\\"definitions\\\" has been replaced by \\\"$defs\\\".\",\n \"type\": \"object\",\n \"additionalProperties\": {\"$dynamicRef\": \"#meta\"},\n \"deprecated\": true,\n \"default\": {}\n },\n \"dependencies\": {\n \"$comment\": \"\\\"dependencies\\\" has been split and replaced by \\\"dependentSchemas\\\" and \\\"dependentRequired\\\" in order to serve their differing semantics.\",\n \"type\": \"object\",\n \"additionalProperties\": {\n \"anyOf\": [{\"$dynamicRef\": \"#meta\"}, {\"$ref\": \"meta/validation#/$defs/stringArray\"}]\n },\n \"deprecated\": true,\n \"default\": {}\n },\n \"$recursiveAnchor\": {\n \"$comment\": \"\\\"$recursiveAnchor\\\" has been replaced by \\\"$dynamicAnchor\\\".\",\n \"$ref\": \"meta/core#/$defs/anchorString\",\n \"deprecated\": true\n },\n \"$recursiveRef\": {\n \"$comment\": \"\\\"$recursiveRef\\\" has been replaced by \\\"$dynamicRef\\\".\",\n \"$ref\": \"meta/core#/$defs/uriReferenceString\",\n \"deprecated\": true\n }\n }\n}\n","{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"$id\": \"https://json-schema.org/draft/2020-12/meta/applicator\",\n \"$vocabulary\": {\n \"https://json-schema.org/draft/2020-12/vocab/applicator\": true\n },\n \"$dynamicAnchor\": \"meta\",\n\n \"title\": \"Applicator vocabulary meta-schema\",\n \"type\": [\"object\", \"boolean\"],\n \"properties\": {\n \"prefixItems\": {\"$ref\": \"#/$defs/schemaArray\"},\n \"items\": {\"$dynamicRef\": \"#meta\"},\n \"contains\": {\"$dynamicRef\": \"#meta\"},\n \"additionalProperties\": {\"$dynamicRef\": \"#meta\"},\n \"properties\": {\n \"type\": \"object\",\n \"additionalProperties\": {\"$dynamicRef\": \"#meta\"},\n \"default\": {}\n },\n \"patternProperties\": {\n \"type\": \"object\",\n \"additionalProperties\": {\"$dynamicRef\": \"#meta\"},\n \"propertyNames\": {\"format\": \"regex\"},\n \"default\": {}\n },\n \"dependentSchemas\": {\n \"type\": \"object\",\n \"additionalProperties\": {\"$dynamicRef\": \"#meta\"},\n \"default\": {}\n },\n \"propertyNames\": {\"$dynamicRef\": \"#meta\"},\n \"if\": {\"$dynamicRef\": \"#meta\"},\n \"then\": {\"$dynamicRef\": \"#meta\"},\n \"else\": {\"$dynamicRef\": \"#meta\"},\n \"allOf\": {\"$ref\": \"#/$defs/schemaArray\"},\n \"anyOf\": {\"$ref\": \"#/$defs/schemaArray\"},\n \"oneOf\": {\"$ref\": \"#/$defs/schemaArray\"},\n \"not\": {\"$dynamicRef\": \"#meta\"}\n },\n \"$defs\": {\n \"schemaArray\": {\n \"type\": \"array\",\n \"minItems\": 1,\n \"items\": {\"$dynamicRef\": \"#meta\"}\n }\n }\n}\n","{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"$id\": \"https://json-schema.org/draft/2020-12/meta/unevaluated\",\n \"$vocabulary\": {\n \"https://json-schema.org/draft/2020-12/vocab/unevaluated\": true\n },\n \"$dynamicAnchor\": \"meta\",\n\n \"title\": \"Unevaluated applicator vocabulary meta-schema\",\n \"type\": [\"object\", \"boolean\"],\n \"properties\": {\n \"unevaluatedItems\": {\"$dynamicRef\": \"#meta\"},\n \"unevaluatedProperties\": {\"$dynamicRef\": \"#meta\"}\n }\n}\n","{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"$id\": \"https://json-schema.org/draft/2020-12/meta/content\",\n \"$vocabulary\": {\n \"https://json-schema.org/draft/2020-12/vocab/content\": true\n },\n \"$dynamicAnchor\": \"meta\",\n\n \"title\": \"Content vocabulary meta-schema\",\n\n \"type\": [\"object\", \"boolean\"],\n \"properties\": {\n \"contentEncoding\": {\"type\": \"string\"},\n \"contentMediaType\": {\"type\": \"string\"},\n \"contentSchema\": {\"$dynamicRef\": \"#meta\"}\n }\n}\n","{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"$id\": \"https://json-schema.org/draft/2020-12/meta/core\",\n \"$vocabulary\": {\n \"https://json-schema.org/draft/2020-12/vocab/core\": true\n },\n \"$dynamicAnchor\": \"meta\",\n\n \"title\": \"Core vocabulary meta-schema\",\n \"type\": [\"object\", \"boolean\"],\n \"properties\": {\n \"$id\": {\n \"$ref\": \"#/$defs/uriReferenceString\",\n \"$comment\": \"Non-empty fragments not allowed.\",\n \"pattern\": \"^[^#]*#?$\"\n },\n \"$schema\": {\"$ref\": \"#/$defs/uriString\"},\n \"$ref\": {\"$ref\": \"#/$defs/uriReferenceString\"},\n \"$anchor\": {\"$ref\": \"#/$defs/anchorString\"},\n \"$dynamicRef\": {\"$ref\": \"#/$defs/uriReferenceString\"},\n \"$dynamicAnchor\": {\"$ref\": \"#/$defs/anchorString\"},\n \"$vocabulary\": {\n \"type\": \"object\",\n \"propertyNames\": {\"$ref\": \"#/$defs/uriString\"},\n \"additionalProperties\": {\n \"type\": \"boolean\"\n }\n },\n \"$comment\": {\n \"type\": \"string\"\n },\n \"$defs\": {\n \"type\": \"object\",\n \"additionalProperties\": {\"$dynamicRef\": \"#meta\"}\n }\n },\n \"$defs\": {\n \"anchorString\": {\n \"type\": \"string\",\n \"pattern\": \"^[A-Za-z_][-A-Za-z0-9._]*$\"\n },\n \"uriString\": {\n \"type\": \"string\",\n \"format\": \"uri\"\n },\n \"uriReferenceString\": {\n \"type\": \"string\",\n \"format\": \"uri-reference\"\n }\n }\n}\n","{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"$id\": \"https://json-schema.org/draft/2020-12/meta/format-annotation\",\n \"$vocabulary\": {\n \"https://json-schema.org/draft/2020-12/vocab/format-annotation\": true\n },\n \"$dynamicAnchor\": \"meta\",\n\n \"title\": \"Format vocabulary meta-schema for annotation results\",\n \"type\": [\"object\", \"boolean\"],\n \"properties\": {\n \"format\": {\"type\": \"string\"}\n }\n}\n","{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"$id\": \"https://json-schema.org/draft/2020-12/meta/meta-data\",\n \"$vocabulary\": {\n \"https://json-schema.org/draft/2020-12/vocab/meta-data\": true\n },\n \"$dynamicAnchor\": \"meta\",\n\n \"title\": \"Meta-data vocabulary meta-schema\",\n\n \"type\": [\"object\", \"boolean\"],\n \"properties\": {\n \"title\": {\n \"type\": \"string\"\n },\n \"description\": {\n \"type\": \"string\"\n },\n \"default\": true,\n \"deprecated\": {\n \"type\": \"boolean\",\n \"default\": false\n },\n \"readOnly\": {\n \"type\": \"boolean\",\n \"default\": false\n },\n \"writeOnly\": {\n \"type\": \"boolean\",\n \"default\": false\n },\n \"examples\": {\n \"type\": \"array\",\n \"items\": true\n }\n }\n}\n","{\n \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n \"$id\": \"https://json-schema.org/draft/2020-12/meta/validation\",\n \"$vocabulary\": {\n \"https://json-schema.org/draft/2020-12/vocab/validation\": true\n },\n \"$dynamicAnchor\": \"meta\",\n\n \"title\": \"Validation vocabulary meta-schema\",\n \"type\": [\"object\", \"boolean\"],\n \"properties\": {\n \"type\": {\n \"anyOf\": [\n {\"$ref\": \"#/$defs/simpleTypes\"},\n {\n \"type\": \"array\",\n \"items\": {\"$ref\": \"#/$defs/simpleTypes\"},\n \"minItems\": 1,\n \"uniqueItems\": true\n }\n ]\n },\n \"const\": true,\n \"enum\": {\n \"type\": \"array\",\n \"items\": true\n },\n \"multipleOf\": {\n \"type\": \"number\",\n \"exclusiveMinimum\": 0\n },\n \"maximum\": {\n \"type\": \"number\"\n },\n \"exclusiveMaximum\": {\n \"type\": \"number\"\n },\n \"minimum\": {\n \"type\": \"number\"\n },\n \"exclusiveMinimum\": {\n \"type\": \"number\"\n },\n \"maxLength\": {\"$ref\": \"#/$defs/nonNegativeInteger\"},\n \"minLength\": {\"$ref\": \"#/$defs/nonNegativeIntegerDefault0\"},\n \"pattern\": {\n \"type\": \"string\",\n \"format\": \"regex\"\n },\n \"maxItems\": {\"$ref\": \"#/$defs/nonNegativeInteger\"},\n \"minItems\": {\"$ref\": \"#/$defs/nonNegativeIntegerDefault0\"},\n \"uniqueItems\": {\n \"type\": \"boolean\",\n \"default\": false\n },\n \"maxContains\": {\"$ref\": \"#/$defs/nonNegativeInteger\"},\n \"minContains\": {\n \"$ref\": \"#/$defs/nonNegativeInteger\",\n \"default\": 1\n },\n \"maxProperties\": {\"$ref\": \"#/$defs/nonNegativeInteger\"},\n \"minProperties\": {\"$ref\": \"#/$defs/nonNegativeIntegerDefault0\"},\n \"required\": {\"$ref\": \"#/$defs/stringArray\"},\n \"dependentRequired\": {\n \"type\": \"object\",\n \"additionalProperties\": {\n \"$ref\": \"#/$defs/stringArray\"\n }\n }\n },\n \"$defs\": {\n \"nonNegativeInteger\": {\n \"type\": \"integer\",\n \"minimum\": 0\n },\n \"nonNegativeIntegerDefault0\": {\n \"$ref\": \"#/$defs/nonNegativeInteger\",\n \"default\": 0\n },\n \"simpleTypes\": {\n \"enum\": [\"array\", \"boolean\", \"integer\", \"null\", \"number\", \"object\", \"string\"]\n },\n \"stringArray\": {\n \"type\": \"array\",\n \"items\": {\"type\": \"string\"},\n \"uniqueItems\": true,\n \"default\": []\n }\n }\n}\n","import type Ajv from \"../../core\"\nimport type {AnySchemaObject} from \"../../types\"\nimport * as metaSchema from \"./schema.json\"\nimport * as applicator from \"./meta/applicator.json\"\nimport * as unevaluated from \"./meta/unevaluated.json\"\nimport * as content from \"./meta/content.json\"\nimport * as core from \"./meta/core.json\"\nimport * as format from \"./meta/format-annotation.json\"\nimport * as metadata from \"./meta/meta-data.json\"\nimport * as validation from \"./meta/validation.json\"\n\nconst META_SUPPORT_DATA = [\"/properties\"]\n\nexport default function addMetaSchema2020(this: Ajv, $data?: boolean): Ajv {\n ;[\n metaSchema,\n applicator,\n unevaluated,\n content,\n core,\n with$data(this, format),\n metadata,\n with$data(this, validation),\n ].forEach((sch) => this.addMetaSchema(sch, undefined, false))\n return this\n\n function with$data(ajv: Ajv, sch: AnySchemaObject): AnySchemaObject {\n return $data ? ajv.$dataMetaSchema(sch, META_SUPPORT_DATA) : sch\n }\n}\n","import type {AnySchemaObject} from \"./types\"\nimport AjvCore, {Options} from \"./core\"\n\nimport draft2020Vocabularies from \"./vocabularies/draft2020\"\nimport discriminator from \"./vocabularies/discriminator\"\nimport addMetaSchema2020 from \"./refs/json-schema-2020-12\"\n\nconst META_SCHEMA_ID = \"https://json-schema.org/draft/2020-12/schema\"\n\nexport class Ajv2020 extends AjvCore {\n constructor(opts: Options = {}) {\n super({\n ...opts,\n dynamicRef: true,\n next: true,\n unevaluated: true,\n })\n }\n\n _addVocabularies(): void {\n super._addVocabularies()\n draft2020Vocabularies.forEach((v) => this.addVocabulary(v))\n if (this.opts.discriminator) this.addKeyword(discriminator)\n }\n\n _addDefaultMetaSchema(): void {\n super._addDefaultMetaSchema()\n const {$data, meta} = this.opts\n if (!meta) return\n addMetaSchema2020.call(this, $data)\n this.refs[\"http://json-schema.org/schema\"] = META_SCHEMA_ID\n }\n\n defaultMeta(): string | AnySchemaObject | undefined {\n return (this.opts.defaultMeta =\n super.defaultMeta() || (this.getSchema(META_SCHEMA_ID) ? META_SCHEMA_ID : undefined))\n }\n}\n\nmodule.exports = exports = Ajv2020\nmodule.exports.Ajv2020 = Ajv2020\nObject.defineProperty(exports, \"__esModule\", {value: true})\n\nexport default Ajv2020\n\nexport {\n Format,\n FormatDefinition,\n AsyncFormatDefinition,\n KeywordDefinition,\n KeywordErrorDefinition,\n CodeKeywordDefinition,\n MacroKeywordDefinition,\n FuncKeywordDefinition,\n Vocabulary,\n Schema,\n SchemaObject,\n AnySchemaObject,\n AsyncSchema,\n AnySchema,\n ValidateFunction,\n AsyncValidateFunction,\n ErrorObject,\n ErrorNoParams,\n} from \"./types\"\n\nexport {Plugin, Options, CodeOptions, InstanceOptions, Logger, ErrorsTextOptions} from \"./core\"\nexport {SchemaCxt, SchemaObjCxt} from \"./compile\"\nexport {KeywordCxt} from \"./compile/validate\"\nexport {DefinedError} from \"./vocabularies/errors\"\nexport {JSONType} from \"./compile/rules\"\nexport {JSONSchemaType} from \"./types/json-schema\"\nexport {_, str, stringify, nil, Name, Code, CodeGen, CodeGenOptions} from \"./compile/codegen\"\nexport {default as ValidationError} from \"./runtime/validation_error\"\nexport {default as MissingRefError} from \"./compile/ref_error\"\n","import { z } from 'zod';\nimport {\n ContractIdentifierSchema,\n EntityRefSchema,\n} from './common';\nimport { ProductContextSchema } from './render';\n\nexport const ContractPortSchema = z\n .object({\n name: ContractIdentifierSchema,\n schemaRef: ContractIdentifierSchema,\n required: z.boolean().default(false),\n multiple: z.boolean().default(false),\n description: z.string().optional(),\n })\n .strict();\n\nexport const CapabilityProviderBindingSchema = z\n .object({\n providerRef: EntityRefSchema,\n productContexts: z.array(ProductContextSchema).default([]),\n priority: z.number().int().default(0),\n })\n .strict();\n\nexport const CapabilityManifestSchema = z\n .object({\n contract: z.literal('CapabilityManifest'),\n id: ContractIdentifierSchema,\n capabilityVersion: ContractIdentifierSchema,\n ownerRepo: ContractIdentifierSchema,\n kind: z.enum(['primitive', 'composite', 'view', 'professional-provider', 'tool', 'workflow']),\n displayName: z.string().trim().min(1),\n description: z.string().optional(),\n ports: z\n .object({\n inputs: z.array(ContractPortSchema).default([]),\n outputs: z.array(ContractPortSchema).default([]),\n })\n .strict(),\n runtime: z\n .object({\n providerBindings: z.array(CapabilityProviderBindingSchema).min(1),\n loading: z.enum(['eager', 'lazy', 'viewport', 'on-activation']),\n fallbackCapabilityRef: EntityRefSchema.optional(),\n stateOwner: z.enum(['host', 'provider', 'external']),\n stateSchemaRef: ContractIdentifierSchema.optional(),\n sideEffects: z\n .array(z.enum(['network', 'storage', 'navigation', 'clipboard', 'worker', 'websocket']))\n .default([]),\n })\n .strict(),\n placement: z\n .object({\n surfaces: z.array(ContractIdentifierSchema).min(1),\n slots: z.array(ContractIdentifierSchema).default([]),\n variants: z.array(ContractIdentifierSchema).default([]),\n tokenRefs: z.array(ContractIdentifierSchema).default([]),\n })\n .strict(),\n accessibility: z\n .object({\n keyboardModel: ContractIdentifierSchema,\n focusModel: ContractIdentifierSchema,\n labelContract: ContractIdentifierSchema,\n })\n .strict(),\n observability: z\n .object({\n eventNamespace: ContractIdentifierSchema,\n metrics: z.array(ContractIdentifierSchema).default([]),\n evidenceRefs: z.array(ContractIdentifierSchema).default([]),\n performanceBudgetMs: z.number().positive().optional(),\n })\n .strict(),\n })\n .strict()\n .superRefine((manifest, context) => {\n const providerIds = new Set<string>();\n manifest.runtime.providerBindings.forEach((binding, index) => {\n const providerIdentity = `${binding.providerRef.kind}:${binding.providerRef.id}@${String(binding.providerRef.version)}:${binding.providerRef.ownerRepo ?? ''}`;\n if (providerIds.has(providerIdentity)) {\n context.addIssue({ code: 'custom', path: ['runtime', 'providerBindings', index], message: `Duplicate capability provider binding: ${providerIdentity}` });\n }\n providerIds.add(providerIdentity);\n if (!['view', 'professional-provider'].includes(manifest.kind)) return;\n if (binding.providerRef.kind !== 'view-provider') {\n context.addIssue({ code: 'custom', path: ['runtime', 'providerBindings', index, 'providerRef', 'kind'], message: 'View capabilities must resolve to view providers.' });\n }\n if (binding.providerRef.version === undefined) {\n context.addIssue({ code: 'custom', path: ['runtime', 'providerBindings', index, 'providerRef', 'version'], message: 'View capability providers must pin a provider version.' });\n }\n if (binding.providerRef.ownerRepo === undefined) {\n context.addIssue({ code: 'custom', path: ['runtime', 'providerBindings', index, 'providerRef', 'ownerRepo'], message: 'View capability providers must declare their owner repository.' });\n }\n });\n });\n\nexport const CapabilitySourceTypeSchema = z.enum([\n 'tool-manifest',\n 'plugin-manifest',\n 'openapi',\n 'workflow',\n 'comfyui',\n 'design-view-provider',\n]);\n\nexport const CapabilityRegistrySourceSchema = z\n .object({\n sourceType: CapabilitySourceTypeSchema,\n sourceId: ContractIdentifierSchema,\n ownerRepo: ContractIdentifierSchema,\n })\n .strict();\n\nexport const CapabilityRegistryEntrySchema = z\n .object({\n manifest: CapabilityManifestSchema,\n sources: z.array(CapabilityRegistrySourceSchema).min(1),\n })\n .strict();\n\nexport const CapabilityRegistryDocumentSchema = z\n .object({\n contract: z.literal('CapabilityRegistry'),\n entries: z.array(CapabilityRegistryEntrySchema),\n })\n .strict()\n .superRefine((registry, context) => {\n const ids = new Set<string>();\n registry.entries.forEach((entry, index) => {\n if (ids.has(entry.manifest.id)) {\n context.addIssue({\n code: 'custom',\n path: ['entries', index, 'manifest', 'id'],\n message: `Duplicate capability id: ${entry.manifest.id}`,\n });\n }\n ids.add(entry.manifest.id);\n });\n });\n\nexport type ContractPort = z.infer<typeof ContractPortSchema>;\nexport type CapabilityProviderBinding = z.infer<typeof CapabilityProviderBindingSchema>;\nexport type CapabilityManifest = z.infer<typeof CapabilityManifestSchema>;\nexport type CapabilitySourceType = z.infer<typeof CapabilitySourceTypeSchema>;\nexport type CapabilityRegistrySource = z.infer<typeof CapabilityRegistrySourceSchema>;\nexport type CapabilityRegistryEntry = z.infer<typeof CapabilityRegistryEntrySchema>;\nexport type CapabilityRegistryDocument = z.infer<typeof CapabilityRegistryDocumentSchema>;\n","import { z } from 'zod';\n\nexport type JsonPrimitive = string | number | boolean | null;\nexport type JsonObject = { [key: string]: JsonValue };\nexport type JsonValue = JsonPrimitive | JsonValue[] | JsonObject;\n\nexport const JsonValueSchema: z.ZodType<JsonValue> = z.lazy(() =>\n z.union([\n z.string(),\n z.number().finite(),\n z.boolean(),\n z.null(),\n z.array(JsonValueSchema),\n z.record(z.string(), JsonValueSchema),\n ]),\n);\n\nexport const JsonObjectSchema = z.record(z.string(), JsonValueSchema);\nexport const ContractIdentifierSchema = z.string().trim().min(1).max(256);\nexport const ContractVersionSchema = z.number().int().positive();\nexport const IsoDateTimeSchema = z.string().datetime({ offset: true });\nexport const Sha256Schema = z.string().regex(/^[a-f0-9]{64}$/i, 'Expected a SHA-256 hex digest.');\n\nexport const SensitiveResultPathSchema = z\n .string()\n .startsWith('/')\n .max(512)\n .refine(\n (path) => {\n const rawSegments = path.split('/').slice(1);\n const segments = rawSegments.map((segment) => segment.replace(/~1/g, '/').replace(/~0/g, '~'));\n return (\n segments.every((segment) => segment.length > 0 && !['__proto__', 'prototype', 'constructor'].includes(segment)) &&\n !rawSegments.some((segment) => /~(?![01])/u.test(segment))\n );\n },\n { message: 'Sensitive result paths must be safe RFC 6901 JSON Pointers.' },\n );\n\nexport const SensitiveResultPathsSchema = z\n .array(SensitiveResultPathSchema)\n .max(64)\n .superRefine((paths, context) => {\n const segments = (path: string) => path.split('/').slice(1);\n for (let index = 0; index < paths.length; index += 1) {\n const candidate = segments(paths[index]!);\n const conflict = paths.findIndex((other, otherIndex) => {\n if (otherIndex >= index) return false;\n const existing = segments(other);\n const sharedLength = Math.min(existing.length, candidate.length);\n return existing.slice(0, sharedLength).every((segment, segmentIndex) => segment === candidate[segmentIndex]);\n });\n if (conflict >= 0) {\n context.addIssue({\n code: 'custom',\n path: [index],\n message: 'Sensitive result paths cannot duplicate or contain one another.',\n });\n }\n }\n });\n\nexport const LocaleIdentifierSchema = z\n .string()\n .regex(/^[a-z]{2,3}(?:-[A-Z][a-z]{3})?(?:-[A-Z]{2}|-\\d{3})?$/, 'Expected a BCP 47 locale identifier.');\n\nexport const LocalizedTextSchema = z.union([\n z.string().trim().min(1),\n z\n .record(LocaleIdentifierSchema, z.string().trim().min(1))\n .refine((value) => Object.keys(value).length > 0, 'Localized text must contain at least one locale.'),\n]);\n\nexport const ContractMetadataSchema = z\n .object({\n id: ContractIdentifierSchema,\n version: ContractVersionSchema,\n name: z.string().trim().min(1).optional(),\n description: z.string().optional(),\n labels: z.record(z.string(), z.string()).optional(),\n createdAt: IsoDateTimeSchema.optional(),\n updatedAt: IsoDateTimeSchema.optional(),\n })\n .strict();\n\nexport const EntityRefSchema = z\n .object({\n kind: ContractIdentifierSchema,\n id: ContractIdentifierSchema,\n version: z.union([ContractVersionSchema, z.string().trim().min(1)]).optional(),\n ownerRepo: ContractIdentifierSchema.optional(),\n })\n .strict();\n\nexport type ContractMetadata = z.infer<typeof ContractMetadataSchema>;\nexport type EntityRef = z.infer<typeof EntityRefSchema>;\nexport type LocalizedText = z.infer<typeof LocalizedTextSchema>;\n","import { z } from 'zod';\nimport { JsonValueSchema, type JsonValue } from './common';\n\nexport const PageMemberSchema = z.string().min(1).max(256).refine(\n (value) => !['__proto__', 'prototype', 'constructor'].includes(value),\n 'Unsafe Page member.',\n);\nexport const PageValuePathSchema = z.array(PageMemberSchema).max(16);\nexport const PageExpressionRootSchema = z.enum(['state', 'model', 'bindings', 'queries', 'scope', 'intent', 'result', 'actions']);\nexport const PageOperatorSchema = z.enum([\n 'add', 'subtract', 'multiply', 'divide', 'min', 'max', 'round',\n 'equals', 'not-equals', 'less-than', 'less-or-equal', 'greater-than', 'greater-or-equal',\n 'and', 'or', 'not', 'coalesce', 'concat', 'string', 'number', 'length', 'includes',\n 'get', 'set-path', 'merge', 'entries', 'from-entries', 'array-concat', 'slice', 'trim', 'fixed', 'number-format', 'encode-uri-component',\n]);\nexport type PageExpression =\n | { kind: 'literal'; value: JsonValue }\n | { kind: 'read'; root: z.infer<typeof PageExpressionRootSchema>; path: string[] }\n | { kind: 'operator'; operator: z.infer<typeof PageOperatorSchema>; arguments: PageExpression[] }\n | { kind: 'conditional'; condition: PageExpression; then: PageExpression; else: PageExpression }\n | { kind: 'object'; fields: Record<string, PageExpression> }\n | { kind: 'array'; items: PageExpression[] }\n | { kind: 'map' | 'filter' | 'sum'; source: PageExpression; value: PageExpression };\n\nconst RecursivePageExpressionSchema: z.ZodType<PageExpression> = z.lazy(() => z.discriminatedUnion('kind', [\n z.object({ kind: z.literal('literal'), value: JsonValueSchema }).strict(),\n z.object({ kind: z.literal('read'), root: PageExpressionRootSchema, path: PageValuePathSchema }).strict(),\n z.object({ kind: z.literal('operator'), operator: PageOperatorSchema, arguments: z.array(RecursivePageExpressionSchema).min(1).max(32) }).strict(),\n z.object({ kind: z.literal('conditional'), condition: RecursivePageExpressionSchema, then: RecursivePageExpressionSchema, else: RecursivePageExpressionSchema }).strict(),\n z.object({ kind: z.literal('object'), fields: z.record(PageMemberSchema, RecursivePageExpressionSchema) }).strict(),\n z.object({ kind: z.literal('array'), items: z.array(RecursivePageExpressionSchema).max(1000) }).strict(),\n ...(['map', 'filter', 'sum'] as const).map((kind) => z.object({ kind: z.literal(kind), source: RecursivePageExpressionSchema, value: RecursivePageExpressionSchema }).strict()),\n]));\n\nexport const PAGE_EXPRESSION_LIMITS = Object.freeze({ depth: 32, nodes: 4096, operations: 20000, collection: 1000, bytes: 1048576 });\n\nexport const assertPageValueBudget = (value: unknown): void => {\n const queue: { value: unknown; depth: number }[] = [{ value, depth: 0 }];\n let nodes = 0;\n let bytes = 0;\n while (queue.length) {\n const item = queue.pop()!;\n if (++nodes > PAGE_EXPRESSION_LIMITS.nodes || item.depth > PAGE_EXPRESSION_LIMITS.depth) throw new Error('PAGE_EXPRESSION_BUDGET');\n if (typeof item.value === 'string') bytes += item.value.length * 2;\n if (item.value && typeof item.value === 'object') {\n for (const [key, child] of Object.entries(item.value)) {\n bytes += key.length * 2;\n if (['__proto__', 'prototype', 'constructor'].includes(key)) throw new Error('PAGE_EXPRESSION_UNSAFE_PATH');\n if (queue.length >= PAGE_EXPRESSION_LIMITS.nodes) throw new Error('PAGE_EXPRESSION_BUDGET');\n queue.push({ value: child, depth: item.depth + 1 });\n }\n }\n if (bytes > PAGE_EXPRESSION_LIMITS.bytes) throw new Error('PAGE_EXPRESSION_BUDGET');\n }\n};\n\n/** The input guard runs before recursive schema parsing, including direct Page parsing. */\nexport const PageExpressionSchema = z.unknown().superRefine((value, context) => {\n try { assertPageValueBudget(value); }\n catch (error) { context.addIssue({ code: 'custom', message: error instanceof Error ? error.message : 'PAGE_EXPRESSION_BUDGET' }); }\n}).pipe(RecursivePageExpressionSchema);\n\nexport const PagePropertyBindingSchema = z.object({\n targetPath: PageValuePathSchema.min(1),\n expression: PageExpressionSchema,\n valueType: z.enum(['string', 'number', 'boolean', 'object', 'array', 'null']).optional(),\n}).strict();\nexport type PagePropertyBinding = z.infer<typeof PagePropertyBindingSchema>;\n\nexport const visitPageExpression = (expression: PageExpression, visit: (node: PageExpression) => void): void => {\n visit(expression);\n switch (expression.kind) {\n case 'operator': expression.arguments.forEach((node) => visitPageExpression(node, visit)); break;\n case 'conditional': [expression.condition, expression.then, expression.else].forEach((node) => visitPageExpression(node, visit)); break;\n case 'object': Object.values(expression.fields).forEach((node) => visitPageExpression(node, visit)); break;\n case 'array': expression.items.forEach((node) => visitPageExpression(node, visit)); break;\n case 'map': case 'filter': case 'sum':\n visitPageExpression(expression.source, visit); visitPageExpression(expression.value, visit); break;\n }\n};\n\nexport const collectPageExpressionReads = (expression: PageExpression): Extract<PageExpression, { kind: 'read' }>[] => {\n const reads: Extract<PageExpression, { kind: 'read' }>[] = [];\n visitPageExpression(expression, (node) => { if (node.kind === 'read') reads.push(node); });\n return reads;\n};\n\n/** Reads supplied by the caller, excluding lexically bound collection item/index reads. */\nexport const collectExternalPageExpressionReads = (expression: PageExpression): Extract<PageExpression, { kind: 'read' }>[] => {\n const reads: Extract<PageExpression, { kind: 'read' }>[] = [];\n const visit = (node: PageExpression, depth: number): void => {\n if (node.kind === 'read') {\n let remaining = depth;\n let index = 0;\n while (remaining > 0 && node.path[index] === 'parent') { remaining -= 1; index += 1; }\n const local = node.root === 'scope' && remaining > 0 && ['item', 'index'].includes(node.path[index]);\n if (!local) reads.push(node);\n return;\n }\n switch (node.kind) {\n case 'operator': node.arguments.forEach(child => visit(child, depth)); break;\n case 'conditional': [node.condition, node.then, node.else].forEach(child => visit(child, depth)); break;\n case 'object': Object.values(node.fields).forEach(child => visit(child, depth)); break;\n case 'array': node.items.forEach(child => visit(child, depth)); break;\n case 'map': case 'filter': case 'sum': visit(node.source, depth); visit(node.value, depth + 1); break;\n }\n };\n visit(expression, 0);\n return reads;\n};\n","import { PageExpressionSchema, PageValuePathSchema } from \"./page-expression\";\nimport { z } from \"zod\";\nimport {\n ContractIdentifierSchema,\n ContractVersionSchema,\n EntityRefSchema,\n IsoDateTimeSchema,\n JsonObjectSchema,\n} from \"./common\";\n\nexport const ProductContextSchema = z.enum([\"studio\", \"kernel\"]);\n\nexport const RenderNodeStateSchema = z.enum([\n \"idle\",\n \"loading\",\n \"empty\",\n \"error\",\n \"success\",\n \"disabled\",\n \"selected\",\n]);\n\nexport const RenderNodeKindSchema = z.enum([\n \"shell\",\n \"page\",\n \"navigation\",\n \"view\",\n \"record\",\n \"control\",\n \"detail\",\n \"action\",\n \"overlay\",\n \"professional-provider\",\n]);\n\nexport const RenderSurfaceSchema = z\n .object({\n frameOwner: z.enum([\"host\", \"provider\", \"none\"]),\n tone: ContractIdentifierSchema.optional(),\n density: z.enum([\"compact\", \"default\", \"comfortable\"]),\n })\n .strict();\n\nexport const RenderScrollSchema = z\n .object({\n owner: z.enum([\"page\", \"surface\", \"provider\"]),\n axis: z.enum([\"x\", \"y\", \"both\", \"none\"]),\n restoreKey: ContractIdentifierSchema.optional(),\n virtualizationBoundary: z.boolean(),\n })\n .strict()\n .superRefine((scroll, context) => {\n if (scroll.owner === \"provider\" && scroll.restoreKey) {\n context.addIssue({\n code: \"custom\",\n path: [\"restoreKey\"],\n message:\n \"Provider-owned scroll state cannot declare a host restoreKey.\",\n });\n }\n if (scroll.virtualizationBoundary && scroll.owner !== \"provider\") {\n context.addIssue({\n code: \"custom\",\n path: [\"owner\"],\n message:\n \"A virtualization boundary must keep scroll ownership in the provider.\",\n });\n }\n });\n\nexport const RenderActivationSchema = z\n .object({\n activationId: ContractIdentifierSchema,\n mode: z.enum([\n \"navigate\",\n \"select\",\n \"drawer\",\n \"modal\",\n \"fullscreen\",\n \"inline\",\n ]),\n targetPath: z\n .string()\n .trim()\n .regex(/^\\/(?!\\/)/, \"Expected an application-relative path.\")\n .optional(),\n history: z.enum([\"push\", \"replace\"]).optional(),\n })\n .strict()\n .superRefine((activation, context) => {\n if (activation.mode === \"navigate\" && !activation.targetPath) {\n context.addIssue({\n code: \"custom\",\n path: [\"targetPath\"],\n message:\n \"Navigate activation requires an application-relative targetPath.\",\n });\n }\n if (activation.mode !== \"navigate\" && activation.targetPath) {\n context.addIssue({\n code: \"custom\",\n path: [\"targetPath\"],\n message: \"Only navigate activation may declare targetPath.\",\n });\n }\n });\n\nexport const RenderLifecycleSchema = z\n .object({\n mountPolicy: z.enum([\"always\", \"when-visible\", \"when-active\"]),\n queryPolicy: z.enum([\"always\", \"when-visible\", \"when-active\", \"manual\"]),\n retainOnDeactivate: z.boolean(),\n deepLink: z.boolean(),\n focusReturn: z.boolean(),\n })\n .strict();\n\nexport const RenderLayoutSchema = z\n .object({\n mode: z.enum([\"contents\", \"block\", \"flex\", \"grid\", \"absolute\"]),\n direction: z.enum([\"row\", \"column\"]).optional(),\n columns: z.number().int().positive().optional(),\n align: z.enum([\"start\", \"center\", \"end\", \"stretch\"]).optional(),\n justify: z.enum([\"start\", \"center\", \"end\", \"between\", \"around\"]).optional(),\n gapTokenRef: EntityRefSchema.optional(),\n })\n .strict()\n .superRefine((layout, context) => {\n if (layout.direction && layout.mode !== \"flex\") {\n context.addIssue({\n code: \"custom\",\n path: [\"direction\"],\n message: \"direction is only valid for flex layout.\",\n });\n }\n if (layout.columns && layout.mode !== \"grid\") {\n context.addIssue({\n code: \"custom\",\n path: [\"columns\"],\n message: \"columns is only valid for grid layout.\",\n });\n }\n if (layout.gapTokenRef && layout.gapTokenRef.kind !== \"design-token\") {\n context.addIssue({\n code: \"custom\",\n path: [\"gapTokenRef\", \"kind\"],\n message: \"gapTokenRef must reference design-token.\",\n });\n }\n });\n\nexport const RenderResponsiveRuleSchema = z\n .object({\n minWidthPx: z.number().nonnegative().optional(),\n maxWidthPx: z.number().positive().optional(),\n layout: RenderLayoutSchema,\n style: z.lazy(() => RenderStyleSchema).optional(),\n })\n .strict()\n .superRefine((rule, context) => {\n if (rule.minWidthPx === undefined && rule.maxWidthPx === undefined) {\n context.addIssue({\n code: \"custom\",\n path: [],\n message: \"Responsive rule must declare minWidthPx or maxWidthPx.\",\n });\n }\n if (\n rule.minWidthPx !== undefined &&\n rule.maxWidthPx !== undefined &&\n rule.minWidthPx > rule.maxWidthPx\n ) {\n context.addIssue({\n code: \"custom\",\n path: [\"maxWidthPx\"],\n message: \"maxWidthPx must be greater than or equal to minWidthPx.\",\n });\n }\n });\n\nexport const RenderStyleValueSchema = z.union([\n z.number().finite(),\n z\n .string()\n .trim()\n .min(1)\n .max(256)\n .superRefine((value, context) => {\n if (\n /[;{}]/.test(value) ||\n /(?:url|expression|javascript|var)\\s*\\(/i.test(value)\n ) {\n context.addIssue({\n code: \"custom\",\n message:\n \"Render style values must be bounded CSS values or $ Design Token references.\",\n });\n }\n }),\n]);\n\nexport const RenderStyleSchema = z\n .object({\n width: RenderStyleValueSchema.optional(),\n height: RenderStyleValueSchema.optional(),\n minWidth: RenderStyleValueSchema.optional(),\n maxWidth: RenderStyleValueSchema.optional(),\n minHeight: RenderStyleValueSchema.optional(),\n maxHeight: RenderStyleValueSchema.optional(),\n padding: RenderStyleValueSchema.optional(),\n paddingBlock: RenderStyleValueSchema.optional(),\n paddingInline: RenderStyleValueSchema.optional(),\n margin: RenderStyleValueSchema.optional(),\n marginBlockStart: RenderStyleValueSchema.optional(),\n marginBlockEnd: RenderStyleValueSchema.optional(),\n marginInlineStart: RenderStyleValueSchema.optional(),\n marginInlineEnd: RenderStyleValueSchema.optional(),\n display: z\n .enum([\n \"none\",\n \"block\",\n \"inline\",\n \"inline-block\",\n \"flex\",\n \"inline-flex\",\n \"grid\",\n \"contents\",\n ])\n .optional(),\n gap: RenderStyleValueSchema.optional(),\n rowGap: RenderStyleValueSchema.optional(),\n columnGap: RenderStyleValueSchema.optional(),\n background: RenderStyleValueSchema.optional(),\n color: RenderStyleValueSchema.optional(),\n borderColor: RenderStyleValueSchema.optional(),\n borderWidth: RenderStyleValueSchema.optional(),\n borderStyle: z.enum([\"none\", \"solid\", \"dashed\", \"dotted\"]).optional(),\n borderRadius: RenderStyleValueSchema.optional(),\n boxShadow: RenderStyleValueSchema.optional(),\n fontSize: RenderStyleValueSchema.optional(),\n fontFamily: RenderStyleValueSchema.optional(),\n fontWeight: RenderStyleValueSchema.optional(),\n lineHeight: RenderStyleValueSchema.optional(),\n textAlign: z.enum([\"start\", \"center\", \"end\", \"left\", \"right\"]).optional(),\n whiteSpace: z\n .enum([\"normal\", \"nowrap\", \"pre\", \"pre-wrap\", \"pre-line\", \"break-spaces\"])\n .optional(),\n overflow: z\n .enum([\"visible\", \"hidden\", \"auto\", \"scroll\", \"clip\"])\n .optional(),\n overflowX: z\n .enum([\"visible\", \"hidden\", \"auto\", \"scroll\", \"clip\"])\n .optional(),\n overflowY: z\n .enum([\"visible\", \"hidden\", \"auto\", \"scroll\", \"clip\"])\n .optional(),\n position: z\n .enum([\"static\", \"relative\", \"absolute\", \"sticky\", \"fixed\"])\n .optional(),\n inset: RenderStyleValueSchema.optional(),\n top: RenderStyleValueSchema.optional(),\n right: RenderStyleValueSchema.optional(),\n bottom: RenderStyleValueSchema.optional(),\n left: RenderStyleValueSchema.optional(),\n gridTemplateColumns: RenderStyleValueSchema.optional(),\n gridColumn: RenderStyleValueSchema.optional(),\n gridRow: RenderStyleValueSchema.optional(),\n flex: RenderStyleValueSchema.optional(),\n flexDirection: z\n .enum([\"row\", \"row-reverse\", \"column\", \"column-reverse\"])\n .optional(),\n flexWrap: z.enum([\"nowrap\", \"wrap\", \"wrap-reverse\"]).optional(),\n alignItems: z\n .enum([\"start\", \"center\", \"end\", \"stretch\", \"baseline\"])\n .optional(),\n justifyContent: z\n .enum([\n \"start\",\n \"center\",\n \"end\",\n \"space-between\",\n \"space-around\",\n \"space-evenly\",\n ])\n .optional(),\n flexGrow: z.number().finite().nonnegative().optional(),\n flexShrink: z.number().finite().nonnegative().optional(),\n alignSelf: z.enum([\"auto\", \"start\", \"center\", \"end\", \"stretch\"]).optional(),\n justifySelf: z\n .enum([\"auto\", \"start\", \"center\", \"end\", \"stretch\"])\n .optional(),\n objectFit: z\n .enum([\"contain\", \"cover\", \"fill\", \"none\", \"scale-down\"])\n .optional(),\n opacity: z.number().finite().min(0).max(1).optional(),\n })\n .strict();\n\nconst requireRef = (\n reference: z.infer<typeof EntityRefSchema> | undefined,\n expectedKind: string,\n path: (string | number)[],\n context: z.RefinementCtx,\n) => {\n if (!reference) return;\n if (reference.kind !== expectedKind) {\n context.addIssue({\n code: \"custom\",\n path: [...path, \"kind\"],\n message: `${path.join(\".\")} must reference ${expectedKind}.`,\n });\n }\n};\n\nconst requirePinnedOwnedRef = (\n reference: z.infer<typeof EntityRefSchema> | undefined,\n expectedKind: string,\n path: (string | number)[],\n context: z.RefinementCtx,\n) => {\n requireRef(reference, expectedKind, path, context);\n if (!reference) return;\n if (reference.version === undefined) {\n context.addIssue({\n code: \"custom\",\n path: [...path, \"version\"],\n message: `${path.join(\".\")} must pin a version.`,\n });\n }\n if (reference.ownerRepo === undefined) {\n context.addIssue({\n code: \"custom\",\n path: [...path, \"ownerRepo\"],\n message: `${path.join(\".\")} must declare its owner repository.`,\n });\n }\n};\n\nexport const RenderNodeSchema = z\n .object({\n contract: z.literal(\"RenderNode\"),\n nodeId: ContractIdentifierSchema,\n kind: RenderNodeKindSchema,\n version: ContractVersionSchema,\n ownerRepo: ContractIdentifierSchema,\n parentNodeId: ContractIdentifierSchema.optional(),\n children: z.array(ContractIdentifierSchema),\n slot: ContractIdentifierSchema.optional(),\n pageRef: EntityRefSchema,\n semanticRef: EntityRefSchema.optional(),\n dataContextRef: EntityRefSchema.optional(),\n capabilityRef: EntityRefSchema,\n runtimeContractVersion: ContractIdentifierSchema.optional(),\n providerRef: EntityRefSchema.optional(),\n stateRef: EntityRefSchema.optional(),\n surface: RenderSurfaceSchema,\n scroll: RenderScrollSchema,\n activation: RenderActivationSchema,\n lifecycle: RenderLifecycleSchema,\n layout: RenderLayoutSchema,\n style: RenderStyleSchema.optional(),\n responsive: z.array(RenderResponsiveRuleSchema),\n accessRef: EntityRefSchema.optional(),\n evidenceRef: EntityRefSchema.optional(),\n state: RenderNodeStateSchema,\n renderModel: JsonObjectSchema,\n repeat: z\n .object({\n source: PageExpressionSchema,\n keyPath: PageValuePathSchema.min(1),\n limit: z.number().int().min(1).max(1000).default(200),\n })\n .strict()\n .optional(),\n })\n .strict()\n .superRefine((node, context) => {\n requireRef(node.pageRef, \"page\", [\"pageRef\"], context);\n requirePinnedOwnedRef(\n node.capabilityRef,\n \"capability\",\n [\"capabilityRef\"],\n context,\n );\n requirePinnedOwnedRef(\n node.providerRef,\n \"view-provider\",\n [\"providerRef\"],\n context,\n );\n requireRef(node.accessRef, \"access-policy\", [\"accessRef\"], context);\n requireRef(node.evidenceRef, \"evidence\", [\"evidenceRef\"], context);\n if (node.parentNodeId === node.nodeId) {\n context.addIssue({\n code: \"custom\",\n path: [\"parentNodeId\"],\n message: \"RenderNode cannot be its own parent.\",\n });\n }\n if (new Set(node.children).size !== node.children.length) {\n context.addIssue({\n code: \"custom\",\n path: [\"children\"],\n message: \"RenderNode children must be unique.\",\n });\n }\n if (node.children.includes(node.nodeId)) {\n context.addIssue({\n code: \"custom\",\n path: [\"children\"],\n message: \"RenderNode cannot be its own child.\",\n });\n }\n if (node.surface.frameOwner === \"provider\" && !node.providerRef) {\n context.addIssue({\n code: \"custom\",\n path: [\"providerRef\"],\n message: \"Provider-owned surfaces require providerRef.\",\n });\n }\n });\n\nexport const RenderTreeSchema = z\n .object({\n contract: z.literal(\"RenderTree\"),\n treeId: ContractIdentifierSchema,\n product: ProductContextSchema,\n rootNodeId: ContractIdentifierSchema,\n nodes: z.array(RenderNodeSchema).min(1),\n })\n .strict();\n\nexport const OverlayZIndexLaneSchema = z.enum([\n \"popover\",\n \"drawer\",\n \"modal\",\n \"fullscreen\",\n \"system\",\n]);\n\nexport const OverlayNodeSchema = z\n .object({\n contract: z.literal(\"OverlayNode\"),\n overlayId: ContractIdentifierSchema,\n renderNode: RenderNodeSchema,\n presentation: z.enum([\"drawer\", \"modal\", \"fullscreen\"]),\n zIndexLane: OverlayZIndexLaneSchema,\n url: z\n .object({\n parameter: ContractIdentifierSchema,\n value: ContractIdentifierSchema,\n openMode: z.enum([\"push\", \"replace\"]),\n closeMode: z.enum([\"back\", \"replace\"]),\n })\n .strict(),\n focus: z\n .object({\n initial: z.enum([\"first-interactive\", \"container\", \"explicit\"]),\n trap: z.boolean(),\n })\n .strict(),\n close: z\n .object({\n escape: z.boolean(),\n backdrop: z.boolean(),\n })\n .strict(),\n })\n .strict()\n .superRefine((value, context) => {\n if (value.renderNode.kind !== \"overlay\") {\n context.addIssue({\n code: \"custom\",\n path: [\"renderNode\", \"kind\"],\n message: \"OverlayNode renderNode.kind must be overlay.\",\n });\n }\n if (value.renderNode.activation.mode !== value.presentation) {\n context.addIssue({\n code: \"custom\",\n path: [\"renderNode\", \"activation\", \"mode\"],\n message:\n \"OverlayNode presentation must match the RenderNode activation mode.\",\n });\n }\n if (value.presentation === \"drawer\" && value.zIndexLane !== \"drawer\") {\n context.addIssue({\n code: \"custom\",\n path: [\"zIndexLane\"],\n message: \"Drawer overlays must use the drawer z-index lane.\",\n });\n }\n if (value.presentation === \"modal\" && value.zIndexLane !== \"modal\") {\n context.addIssue({\n code: \"custom\",\n path: [\"zIndexLane\"],\n message: \"Modal overlays must use the modal z-index lane.\",\n });\n }\n if (\n value.presentation === \"fullscreen\" &&\n value.zIndexLane !== \"fullscreen\" &&\n value.zIndexLane !== \"system\"\n ) {\n context.addIssue({\n code: \"custom\",\n path: [\"zIndexLane\"],\n message:\n \"Fullscreen overlays must use the fullscreen or system z-index lane.\",\n });\n }\n });\n\nconst ProductPathSchema = z\n .string()\n .trim()\n .regex(/^\\/(?!\\/)/, \"Expected an application-relative path.\");\n\nexport const ApplicationHandoffEndpointSchema = z\n .object({\n product: ProductContextSchema,\n pageId: ContractIdentifierSchema,\n viewId: ContractIdentifierSchema.optional(),\n objectRef: EntityRefSchema.optional(),\n runtimeRef: EntityRefSchema.optional(),\n activationId: ContractIdentifierSchema.optional(),\n path: ProductPathSchema,\n })\n .strict();\n\nexport const ApplicationHandoffSchema = z\n .object({\n contract: z.literal(\"ApplicationHandoff\"),\n handoffId: ContractIdentifierSchema,\n source: ApplicationHandoffEndpointSchema,\n target: ApplicationHandoffEndpointSchema,\n returnTarget: ApplicationHandoffEndpointSchema.optional(),\n traceId: ContractIdentifierSchema.optional(),\n createdAt: IsoDateTimeSchema,\n })\n .strict()\n .superRefine((value, context) => {\n if (\n value.source.product === value.target.product &&\n value.source.pageId === value.target.pageId\n ) {\n context.addIssue({\n code: \"custom\",\n path: [\"target\"],\n message:\n \"ApplicationHandoff target must identify a different product page.\",\n });\n }\n });\n\nexport const ViewProviderDescriptorSchema = z\n .object({\n contract: z.literal(\"ViewProviderDescriptor\"),\n providerId: ContractIdentifierSchema,\n providerVersion: ContractIdentifierSchema,\n runtimeContractVersion: ContractIdentifierSchema.optional(),\n ownerRepo: ContractIdentifierSchema,\n capabilityRef: EntityRefSchema,\n rendererKey: ContractIdentifierSchema,\n renderModelSchemaRef: ContractIdentifierSchema,\n intentSchemaRef: ContractIdentifierSchema.optional(),\n loading: z.enum([\"eager\", \"lazy\", \"viewport\", \"on-activation\"]),\n stateOwner: z.enum([\"host\", \"provider\", \"external\"]),\n supportedPageTypes: z.array(ContractIdentifierSchema).min(1),\n supportedSurfaces: z\n .array(\n z.enum([\n \"page\",\n \"workspace\",\n \"view\",\n \"record\",\n \"action\",\n \"overlay\",\n \"agent\",\n ]),\n )\n .min(1),\n frameOwner: z.enum([\"host\", \"provider\", \"none\"]),\n sideEffects: z.array(\n z.enum([\n \"network\",\n \"storage\",\n \"navigation\",\n \"clipboard\",\n \"worker\",\n \"websocket\",\n ]),\n ),\n sideEffectAdapterRef: EntityRefSchema.optional(),\n lifecycle: z\n .object({\n preserveMount: z.boolean(),\n preserveScroll: z.boolean(),\n focusModel: ContractIdentifierSchema,\n })\n .strict(),\n performance: z\n .object({\n lazy: z.boolean(),\n virtualized: z.boolean(),\n budgetMs: z.number().positive().optional(),\n })\n .strict(),\n accessRef: EntityRefSchema.optional(),\n evidenceRef: EntityRefSchema.optional(),\n })\n .strict()\n .superRefine((provider, context) => {\n requirePinnedOwnedRef(\n provider.capabilityRef,\n \"capability\",\n [\"capabilityRef\"],\n context,\n );\n requirePinnedOwnedRef(\n provider.sideEffectAdapterRef,\n \"side-effect-adapter\",\n [\"sideEffectAdapterRef\"],\n context,\n );\n requireRef(provider.accessRef, \"access-policy\", [\"accessRef\"], context);\n requireRef(provider.evidenceRef, \"evidence\", [\"evidenceRef\"], context);\n if (provider.capabilityRef.version === undefined) {\n context.addIssue({\n code: \"custom\",\n path: [\"capabilityRef\", \"version\"],\n message:\n \"Provider capabilityRef must pin an active capability version.\",\n });\n }\n if (\n provider.frameOwner === \"provider\" &&\n provider.stateOwner === \"host\" &&\n !provider.lifecycle.preserveMount\n ) {\n context.addIssue({\n code: \"custom\",\n path: [\"lifecycle\", \"preserveMount\"],\n message:\n \"Host-owned state on a provider-owned frame must preserve the provider mount.\",\n });\n }\n if (provider.sideEffects.length > 0 && !provider.sideEffectAdapterRef) {\n context.addIssue({\n code: \"custom\",\n path: [\"sideEffectAdapterRef\"],\n message:\n \"Providers with side effects require a pinned side-effect adapter.\",\n });\n }\n if (provider.sideEffects.length === 0 && provider.sideEffectAdapterRef) {\n context.addIssue({\n code: \"custom\",\n path: [\"sideEffectAdapterRef\"],\n message: \"Pure providers cannot declare a side-effect adapter.\",\n });\n }\n });\n\nexport type ProductContext = z.infer<typeof ProductContextSchema>;\nexport type RenderNodeState = z.infer<typeof RenderNodeStateSchema>;\nexport type RenderNodeKind = z.infer<typeof RenderNodeKindSchema>;\nexport type RenderSurface = z.infer<typeof RenderSurfaceSchema>;\nexport type RenderScroll = z.infer<typeof RenderScrollSchema>;\nexport type RenderActivation = z.infer<typeof RenderActivationSchema>;\nexport type RenderLifecycle = z.infer<typeof RenderLifecycleSchema>;\nexport type RenderLayout = z.infer<typeof RenderLayoutSchema>;\nexport type RenderResponsiveRule = z.infer<typeof RenderResponsiveRuleSchema>;\nexport type RenderStyle = z.infer<typeof RenderStyleSchema>;\nexport type RenderNode = z.infer<typeof RenderNodeSchema>;\nexport type RenderTree = z.infer<typeof RenderTreeSchema>;\nexport type OverlayZIndexLane = z.infer<typeof OverlayZIndexLaneSchema>;\nexport type OverlayNode = z.infer<typeof OverlayNodeSchema>;\nexport type ApplicationHandoffEndpoint = z.infer<\n typeof ApplicationHandoffEndpointSchema\n>;\nexport type ApplicationHandoff = z.infer<typeof ApplicationHandoffSchema>;\nexport type ViewProviderDescriptor = z.infer<\n typeof ViewProviderDescriptorSchema\n>;\n","import { z } from 'zod';\nimport { ContractPortSchema } from './capability';\nimport {\n ContractIdentifierSchema,\n ContractMetadataSchema,\n EntityRefSchema,\n JsonValueSchema,\n LocalizedTextSchema,\n type JsonValue,\n type LocalizedText,\n} from './common';\n\nexport const ConductorTaskTypeSchema = z.enum([\n 'SIMPLE',\n 'DYNAMIC',\n 'FORK_JOIN',\n 'FORK_JOIN_DYNAMIC',\n 'DECISION',\n 'SWITCH',\n 'JOIN',\n 'DO_WHILE',\n 'SUB_WORKFLOW',\n 'START_WORKFLOW',\n 'EVENT',\n 'WAIT',\n 'HUMAN',\n 'USER_DEFINED',\n 'HTTP',\n 'LAMBDA',\n 'INLINE',\n 'EXCLUSIVE_JOIN',\n 'TERMINATE',\n 'KAFKA_PUBLISH',\n 'JSON_JQ_TRANSFORM',\n 'SET_VARIABLE',\n 'CALL_MCP_TOOL',\n 'GENERATE_AUDIO',\n 'GENERATE_IMAGE',\n 'GENERATE_PDF',\n 'GENERATE_VIDEO',\n 'LIST_MCP_TOOLS',\n 'LLM_CHAT_COMPLETE',\n 'LLM_GENERATE_EMBEDDINGS',\n 'LLM_INDEX_TEXT',\n 'LLM_SEARCH_INDEX',\n 'TITUS',\n 'USER_TASK',\n]);\n\nexport interface ConductorTaskDefinition {\n name: string;\n taskReferenceName: string;\n type: z.infer<typeof ConductorTaskTypeSchema>;\n inputParameters?: Record<string, JsonValue>;\n startDelay?: number;\n optional?: boolean;\n asyncComplete?: boolean;\n rateLimited?: boolean;\n retryCount?: number;\n taskDefinition?: Record<string, JsonValue>;\n loopCondition?: string;\n loopOver?: ConductorTaskDefinition[];\n sink?: string;\n forkTasks?: ConductorTaskDefinition[][];\n joinOn?: string[];\n defaultExclusiveJoinTask?: string[];\n dynamicForkTasksParam?: string;\n dynamicForkTasksInputParamName?: string;\n subWorkflowParam?: {\n $ref?: string;\n name: string;\n version?: number;\n taskToDomain?: Record<string, string>;\n workflowDefinition?: Record<string, JsonValue>;\n };\n decisionCases?: Record<string, ConductorTaskDefinition[]>;\n defaultCase?: ConductorTaskDefinition[];\n evaluatorType?: 'value-param' | 'javascript' | 'graaljs';\n expression?: string;\n __alias?: JsonValue;\n callbackFromWorker?: boolean;\n caseExpression?: JsonValue;\n caseValueParam?: string;\n dependencies?: JsonValue[];\n description?: string;\n dynamicTaskNameParam?: string;\n joinMode?: string;\n permissive?: boolean;\n joinTaskRef?: string;\n forkTaskRef?: string;\n}\n\nconst requiredTaskFields: Partial<Record<ConductorTaskDefinition['type'], readonly (keyof ConductorTaskDefinition)[]>> = {\n DO_WHILE: ['inputParameters', 'loopOver'],\n EVENT: ['sink'],\n FORK_JOIN: ['forkTasks'],\n FORK_JOIN_DYNAMIC: ['inputParameters', 'dynamicForkTasksParam', 'dynamicForkTasksInputParamName'],\n DYNAMIC: ['inputParameters'],\n JOIN: ['joinOn'],\n SUB_WORKFLOW: ['subWorkflowParam'],\n SWITCH: ['inputParameters', 'decisionCases', 'evaluatorType', 'expression'],\n DECISION: ['inputParameters', 'decisionCases'],\n WAIT: ['inputParameters'],\n TERMINATE: ['inputParameters'],\n};\n\nexport const ConductorTaskDefinitionSchema: z.ZodType<ConductorTaskDefinition> = z.lazy(() =>\n z\n .object({\n name: ContractIdentifierSchema,\n taskReferenceName: ContractIdentifierSchema,\n type: ConductorTaskTypeSchema,\n inputParameters: z.record(z.string(), JsonValueSchema).optional(),\n startDelay: z.number().int().nonnegative().optional(),\n optional: z.boolean().optional(),\n asyncComplete: z.boolean().optional(),\n rateLimited: z.boolean().optional(),\n retryCount: z.number().int().nonnegative().optional(),\n taskDefinition: z.record(z.string(), JsonValueSchema).optional(),\n loopCondition: z.string().optional(),\n loopOver: z.array(ConductorTaskDefinitionSchema).optional(),\n sink: z.string().optional(),\n forkTasks: z.array(z.array(ConductorTaskDefinitionSchema)).optional(),\n joinOn: z.array(ContractIdentifierSchema).optional(),\n defaultExclusiveJoinTask: z.array(ContractIdentifierSchema).optional(),\n dynamicForkTasksParam: z.string().optional(),\n dynamicForkTasksInputParamName: z.string().optional(),\n subWorkflowParam: z\n .object({\n $ref: z.string().optional(),\n name: ContractIdentifierSchema,\n version: z.number().int().positive().optional(),\n taskToDomain: z.record(z.string(), z.string()).optional(),\n workflowDefinition: z.record(z.string(), JsonValueSchema).optional(),\n })\n .strict()\n .optional(),\n decisionCases: z.record(z.string(), z.array(ConductorTaskDefinitionSchema)).optional(),\n defaultCase: z.array(ConductorTaskDefinitionSchema).optional(),\n evaluatorType: z.enum(['value-param', 'javascript', 'graaljs']).optional(),\n expression: z.string().optional(),\n __alias: JsonValueSchema.optional(),\n callbackFromWorker: z.boolean().optional(),\n caseExpression: JsonValueSchema.optional(),\n caseValueParam: z.string().optional(),\n dependencies: z.array(JsonValueSchema).optional(),\n description: z.string().optional(),\n dynamicTaskNameParam: z.string().optional(),\n joinMode: z.string().optional(),\n permissive: z.boolean().optional(),\n joinTaskRef: ContractIdentifierSchema.optional(),\n forkTaskRef: ContractIdentifierSchema.optional(),\n })\n .strict()\n .superRefine((task, context) => {\n for (const field of requiredTaskFields[task.type] ?? []) {\n if (task[field] === undefined) {\n context.addIssue({ code: 'custom', path: [field], message: `${task.type} task requires ${String(field)}.` });\n }\n }\n if (\n task.type === 'DO_WHILE' &&\n (task.inputParameters?.mode === undefined || task.inputParameters.mode === 'expression') &&\n task.loopCondition === undefined &&\n task.inputParameters?.loopCondition === undefined\n ) {\n context.addIssue({ code: 'custom', path: ['loopCondition'], message: 'Expression DO_WHILE task requires loopCondition.' });\n }\n }),\n);\n\nexport const ConductorWorkflowDefinitionSchema = z.object({\n ownerApp: z.string().optional(),\n createTime: z.number().int().nonnegative().optional(),\n updateTime: z.number().int().nonnegative().optional(),\n createdBy: z.string().optional(),\n updatedBy: z.string().optional(),\n name: ContractIdentifierSchema,\n description: z.string().optional(),\n version: z.number().int().positive(),\n tasks: z.array(ConductorTaskDefinitionSchema),\n inputParameters: z.array(ContractIdentifierSchema),\n outputParameters: z.record(z.string(), JsonValueSchema).optional(),\n failureWorkflow: ContractIdentifierSchema.optional(),\n schemaVersion: z.number().int().positive().optional(),\n restartable: z.boolean().optional(),\n workflowStatusListenerEnabled: z.boolean().optional(),\n ownerEmail: z.string().email().optional(),\n timeoutPolicy: z.enum(['TIME_OUT_WF', 'ALERT_ONLY']).optional(),\n timeoutSeconds: z.number().int().nonnegative(),\n variables: z.record(z.string(), JsonValueSchema).optional(),\n inputTemplate: z.record(z.string(), JsonValueSchema).optional(),\n}).strict();\n\nexport const WorkflowParameterTypeSchema = z.enum([\n 'string',\n 'file',\n 'number',\n 'boolean',\n 'options',\n 'json',\n 'notice',\n 'canvas-assist',\n]);\n\nconst WorkflowConditionalStateSchema = z\n .object({\n conditions: z.array(\n z\n .object({\n field: z.string(),\n operator: z.enum(['is', 'isNot', 'isGreaterThan', 'isLessThan', 'isGreaterThanOrEqual', 'isLessThanOrEqual', 'in', 'notIn']),\n value: JsonValueSchema,\n })\n .strict(),\n ),\n logic: z.enum(['AND', 'OR']).optional(),\n })\n .strict();\n\nconst ImageSelectMappingAppearanceSchema = z\n .object({\n columns: z.number().int().min(1).max(4).optional(),\n cardSize: z.enum(['sm', 'md', 'lg']).optional(),\n imageAspectRatio: z.enum(['square', '4:5', '3:4', '16:9']).optional(),\n gap: z.enum(['sm', 'md', 'lg']).optional(),\n radius: z.enum(['sm', 'md', 'lg', 'xl']).optional(),\n borderStyle: z.enum(['none', 'soft', 'strong']).optional(),\n borderWidth: z.union([z.literal(0), z.literal(1), z.literal(2)]).optional(),\n enableScroll: z.boolean().optional(),\n maxHeight: z.number().int().min(160).max(1200).optional(),\n enableCollapse: z.boolean().optional(),\n visibleRows: z.number().int().min(1).max(6).optional(),\n hideLabel: z.boolean().optional(),\n hideDescription: z.boolean().optional(),\n hideValue: z.boolean().optional(),\n })\n .strict();\n\nconst ComfyWorkflowPortBindingSchema = z\n .object({\n node: z.union([z.string(), z.number()]),\n key: z.string().optional(),\n })\n .strict();\n\nconst WorkflowParameterTypeOptionsSchema = z\n .object({\n editor: z.enum(['code', 'codeNodeEditor', 'htmlEditor', 'sqlEditor', 'json']).optional(),\n editorLanguage: z.enum(['javaScript', 'json', 'python', 'sql']).optional(),\n maxValue: z.number().optional(), minValue: z.number().optional(), max: z.number().optional(), min: z.number().optional(),\n multipleValues: z.boolean().optional(), numberPrecision: z.number().nonnegative().optional(), password: z.boolean().optional(), rows: z.number().int().positive().optional(),\n assetType: z.string().optional(), accept: z.string().optional(), maxSize: z.number().positive().optional(), fileType: z.string().optional(),\n aiMultiShotMainImageField: z.string().optional(), aiMultiShotWorkflowAppId: z.string().optional(), aiMultiShotWorkflowId: z.string().optional(),\n allowCustomInput: z.boolean().optional(), allowUploadVideo: z.boolean().optional(), aspectRatioField: z.string().optional(), assemblyValueType: z.string().optional(),\n autoAnalyzeDesignImage: z.boolean().optional(), autoDetectAspectRatio: z.boolean().optional(), autoIncrementId: z.boolean().optional(), comfyOptions: ComfyWorkflowPortBindingSchema.optional(), comfyuiModelServerId: z.string().optional(), comfyuiModelTypeName: z.string().optional(),\n defaultCustomInput: JsonValueSchema.optional(), descriptionAlert: z.boolean().optional(), disabled: z.union([z.boolean(), WorkflowConditionalStateSchema]).optional(), editable: z.union([z.boolean(), WorkflowConditionalStateSchema]).optional(),\n enableAiMultiShot: z.boolean().optional(), enableBooleanSwitchMode: z.boolean().optional(), enableClear: z.boolean().optional(), enableExpand: z.boolean().optional(), enableImageCrop: z.boolean().optional(), enableImageMask: z.boolean().optional(), enableImageOverlay: z.boolean().optional(), enablePopupEditor: z.boolean().optional(), enablePromptFontSize: z.boolean().optional(), enableReset: z.boolean().optional(), enableSelectItemIcon: z.boolean().optional(), enableSelectList: z.boolean().optional(), enableSelectSearch: z.boolean().optional(), enableSliderEnterMode: z.boolean().optional(), enableVoice: z.boolean().optional(),\n expandButtonText: z.string().optional(), foldUp: z.boolean().optional(), hidden: z.boolean().optional(), hideRequiredDot: z.boolean().optional(), inlineTitleWithSelect: z.boolean().optional(), knowledgeGraphButtonText: z.string().optional(),\n identifyAttributeCount: z.union([z.number().nonnegative(), z.string().min(1), z.object({ min: z.number().nonnegative().optional(), max: z.number().nonnegative().optional() }).strict()]).optional(), identifyAttributes: z.array(JsonValueSchema).optional(), identifyMaxVariants: z.number().int().nonnegative().optional(), identifySourceField: z.string().optional(),\n imageOverlayBaseField: z.string().optional(), imageOverlayOverlayField: z.string().optional(), imageSelectMappingAppearance: ImageSelectMappingAppearanceSchema.optional(), imageSelectMappingColumns: z.number().int().min(1).max(4).optional(), imageSelectMappingEnableCustomUpload: z.boolean().optional(), imageSelectMappingHideLabel: z.boolean().optional(), imageSelectMappingHideLink: z.boolean().optional(), imageSelectMappingHideMeta: z.boolean().optional(), imageSelectMappingInlineUseLargeUploadBox: z.boolean().optional(), imageSelectMappingPromptField: z.string().optional(), imageSelectMappingTabOrder: z.enum(['template-first', 'upload-first']).optional(), imageSelectMappingTabWidthMode: z.enum(['content', 'fill']).optional(), imageSelectMappingTemplatePrompt: LocalizedTextSchema.optional(), imageSelectMappingTemplateTabTitle: LocalizedTextSchema.optional(), imageSelectMappingUploadMode: z.enum(['tabs', 'inline']).optional(), imageSelectMappingUploadPrompt: LocalizedTextSchema.optional(), imageSelectMappingUploadTabTitle: LocalizedTextSchema.optional(),\n endpoints: z.array(JsonValueSchema).optional(), examples: z.array(JsonValueSchema).optional(), extraData: JsonValueSchema.optional(), layer: JsonValueSchema.optional(), map: JsonValueSchema.optional(), multiline: z.boolean().optional(), options: z.array(JsonValueSchema).optional(), originalFiles: z.array(JsonValueSchema).optional(), placeholder: LocalizedTextSchema.optional(), preserveSelectListOrder: z.boolean().optional(), promptDictionary: JsonValueSchema.optional(), promptFontSize: z.number().optional(), promptModeToggle: JsonValueSchema.optional(), requireActiveSelectFilter: z.boolean().optional(), restoreDefaultOnEmptyEnter: z.boolean().optional(), search: z.boolean().optional(),\n selectButtonEnableCollapse: z.boolean().optional(), selectButtonVisibleRows: z.number().int().positive().optional(), selectList: z.array(JsonValueSchema).optional(), selectListDisplayMode: z.string().optional(), selectPromptField: z.string().optional(), showAddLocalFileButton: z.boolean().optional(), singleColumn: z.boolean().optional(), singleFrameForMultiple: z.boolean().optional(), textSingleLine: z.boolean().optional(), textareaMiniHeight: z.number().nonnegative().optional(), tips: LocalizedTextSchema.optional(), visibility: JsonValueSchema.optional(), voiceButtonText: z.string().optional(),\n designAnalysisFields: z.array(JsonValueSchema).optional(), designAnalysisFillStrategy: z.string().optional(), designAnalysisMaxFields: z.number().int().nonnegative().optional(), designAnalysisType: z.string().optional(),\n designAnalysisFieldPrefix: z.string().optional(),\n })\n .strict();\n\nexport interface WorkflowParameter {\n displayName: LocalizedText;\n name: string;\n type: z.infer<typeof WorkflowParameterTypeSchema>;\n typeOptions?: z.infer<typeof WorkflowParameterTypeOptionsSchema>;\n default?: JsonValue;\n description?: LocalizedText;\n hint?: string;\n displayOptions?: { hide?: Record<string, JsonValue[]>; show?: Record<string, JsonValue[]> };\n options?: Array<WorkflowParameterOption | WorkflowParameter | WorkflowParameterCollection>;\n placeholder?: LocalizedText;\n isNodeSetting?: boolean;\n noDataExpression?: boolean;\n required?: boolean;\n example?: string;\n extractValue?: { type: 'regex'; regex: string };\n properties?: WorkflowParameter[];\n assetType?: string;\n flag?: boolean;\n enableExpand?: boolean;\n enableVoice?: boolean;\n expandButtonText?: string;\n knowledgeGraphButtonText?: string;\n selectListDisplayMode?: string;\n voiceButtonText?: string;\n}\n\nexport interface WorkflowParameterOption {\n name: LocalizedText;\n value: string | number | boolean;\n action?: string;\n description?: LocalizedText;\n}\n\nexport interface WorkflowParameterCollection {\n displayName: string;\n name: string;\n values: WorkflowParameter[];\n}\n\nexport const WorkflowParameterSchema: z.ZodType<WorkflowParameter> = z.lazy(() =>\n z.object({\n displayName: LocalizedTextSchema,\n name: ContractIdentifierSchema,\n type: WorkflowParameterTypeSchema,\n typeOptions: WorkflowParameterTypeOptionsSchema.optional(),\n default: JsonValueSchema.optional(),\n description: LocalizedTextSchema.optional(),\n hint: z.string().optional(),\n displayOptions: z.object({\n hide: z.record(z.string(), z.array(JsonValueSchema)).optional(),\n show: z.record(z.string(), z.array(JsonValueSchema)).optional(),\n }).strict().optional(),\n options: z.array(z.union([\n z.object({ name: LocalizedTextSchema, value: z.union([z.string(), z.number(), z.boolean()]), action: z.string().optional(), description: LocalizedTextSchema.optional() }).strict(),\n WorkflowParameterSchema,\n z.object({ displayName: z.string(), name: ContractIdentifierSchema, values: z.array(WorkflowParameterSchema) }).strict(),\n ])).optional(),\n placeholder: LocalizedTextSchema.optional(),\n isNodeSetting: z.boolean().optional(), noDataExpression: z.boolean().optional(), required: z.boolean().optional(), example: z.string().optional(),\n extractValue: z.object({ type: z.literal('regex'), regex: z.string() }).strict().optional(),\n properties: z.array(WorkflowParameterSchema).optional(), assetType: z.string().optional(), flag: z.boolean().optional(),\n enableExpand: z.boolean().optional(), enableVoice: z.boolean().optional(), expandButtonText: z.string().optional(), knowledgeGraphButtonText: z.string().optional(), selectListDisplayMode: z.string().optional(), voiceButtonText: z.string().optional(),\n }).strict(),\n);\n\nexport const WorkflowOutputBindingSchema = z.object({ key: ContractIdentifierSchema, value: z.string() }).strict();\n\nexport const WorkflowNodeSchema = z\n .object({\n id: ContractIdentifierSchema,\n referenceName: ContractIdentifierSchema,\n capabilityRef: ContractIdentifierSchema,\n capabilityVersion: ContractIdentifierSchema.optional(),\n inputBindings: z.record(z.string(), JsonValueSchema).default({}),\n configuration: z.object({ executor: z.literal('conductor'), task: ConductorTaskDefinitionSchema }).strict(),\n })\n .strict()\n .superRefine((node, context) => {\n if (node.configuration.task.taskReferenceName !== node.referenceName) context.addIssue({ code: 'custom', path: ['configuration', 'task', 'taskReferenceName'], message: 'Conductor task reference must match node referenceName.' });\n if (node.configuration.task.name !== node.capabilityRef) context.addIssue({ code: 'custom', path: ['configuration', 'task', 'name'], message: 'Conductor task name must match node capabilityRef.' });\n if (JSON.stringify(node.configuration.task.inputParameters ?? {}) !== JSON.stringify(node.inputBindings)) context.addIssue({ code: 'custom', path: ['configuration', 'task', 'inputParameters'], message: 'Conductor task inputs must match node inputBindings.' });\n });\n\nexport const WorkflowEdgeSchema = z.object({\n from: ContractIdentifierSchema, to: ContractIdentifierSchema, outputPort: ContractIdentifierSchema.optional(), inputPort: ContractIdentifierSchema.optional(), condition: z.string().optional(),\n}).strict();\n\nexport const WorkflowTriggerSchema = z.object({\n id: ContractIdentifierSchema,\n type: z.enum(['manual', 'schedule', 'webhook', 'event', 'api']),\n enabled: z.boolean(),\n schedule: z.object({ cron: z.string().trim().min(1) }).strict().optional(),\n webhook: z.object({\n path: z.string().trim().min(1).optional(),\n method: z.enum(['GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'OPTIONS', 'HEAD']),\n auth: z.enum(['NONE', 'BASIC', 'CUSTOM_HEADER']),\n basicAuth: z.object({ username: z.string(), password: z.string() }).strict().optional(),\n headerAuth: z.object({ name: z.string().trim().min(1), value: z.string() }).strict().optional(),\n responseUntil: z.enum(['WORKFLOW_STARTED', 'WORKFLOW_COMPLETED_OR_FINISHED']),\n }).strict().optional(),\n event: z.object({\n eventType: ContractIdentifierSchema,\n configuration: JsonValueSchema.optional(),\n }).strict().optional(),\n}).strict().superRefine((trigger, context) => {\n if (trigger.type === 'schedule' && !trigger.schedule) context.addIssue({ code: 'custom', path: ['schedule'], message: 'Schedule trigger requires schedule configuration.' });\n if (trigger.type === 'webhook' && !trigger.webhook) context.addIssue({ code: 'custom', path: ['webhook'], message: 'Webhook trigger requires webhook configuration.' });\n if (trigger.type === 'event' && !trigger.event) context.addIssue({ code: 'custom', path: ['event'], message: 'Event trigger requires event configuration.' });\n});\n\nexport const WorkflowValidationIssueSchema = z.object({\n taskReferenceName: ContractIdentifierSchema,\n issueType: z.enum(['ERROR', 'WARNING']),\n detailReason: z.object({ type: ContractIdentifierSchema, name: ContractIdentifierSchema, detailInformation: JsonValueSchema.optional() }).strict(),\n humanMessage: z.object({ en: z.string(), zh: z.string() }).strict(),\n}).strict();\n\nexport const WorkflowDefinitionSchema = z.object({\n contract: z.literal('WorkflowDefinition'),\n metadata: ContractMetadataSchema.omit({ name: true, description: true, labels: true }).extend({\n name: LocalizedTextSchema,\n description: LocalizedTextSchema.optional(),\n role: z.enum(['workflow', 'template']),\n teamId: ContractIdentifierSchema,\n creatorRef: EntityRefSchema,\n tags: z.array(ContractIdentifierSchema).default([]),\n }).strict(),\n revision: z.object({\n kind: z.enum(['release', 'backup']),\n recordVersion: z.number().int().positive(),\n sourceVersion: z.number().int().positive().optional(),\n }).strict().superRefine((revision, context) => {\n if (revision.kind === 'backup' && revision.sourceVersion === undefined) context.addIssue({ code: 'custom', path: ['sourceVersion'], message: 'Backup revisions require a sourceVersion.' });\n }),\n presentation: z.object({ iconUrl: z.string().optional(), thumbnail: z.string().optional() }).strict(),\n ports: z.object({ inputs: z.array(ContractPortSchema).default([]), outputs: z.array(ContractPortSchema).default([]) }).strict(),\n parameters: z.object({ variables: z.array(WorkflowParameterSchema).default([]), outputs: z.array(WorkflowOutputBindingSchema).default([]) }).strict(),\n graph: z.object({ nodes: z.array(WorkflowNodeSchema), edges: z.array(WorkflowEdgeSchema).default([]) }).strict(),\n execution: z.object({\n timeoutMs: z.number().int().positive().optional(), retries: z.number().int().nonnegative().default(0), concurrencyLimit: z.number().int().positive().optional(), idempotency: z.enum(['required', 'supported', 'none']),\n rateLimit: z.object({ enabled: z.boolean(), max: z.number().int().nonnegative(), windowMs: z.number().int().nonnegative() }).strict().superRefine((rateLimit, context) => {\n if (rateLimit.enabled && (rateLimit.max === 0 || rateLimit.windowMs === 0)) context.addIssue({ code: 'custom', message: 'Enabled rate limit requires positive max and windowMs.' });\n }).optional(),\n conductor: z.object({\n ownerApp: z.string().optional(), createTime: z.number().int().nonnegative().optional(), updateTime: z.number().int().nonnegative().optional(), createdBy: z.string().optional(), updatedBy: z.string().optional(),\n failureWorkflow: ContractIdentifierSchema.optional(), schemaVersion: z.number().int().positive().optional(), restartable: z.boolean().optional(), workflowStatusListenerEnabled: z.boolean().optional(), ownerEmail: z.string().email().optional(), timeoutPolicy: z.enum(['TIME_OUT_WF', 'ALERT_ONLY']).optional(),\n variables: z.record(z.string(), JsonValueSchema).optional(), inputTemplate: z.record(z.string(), JsonValueSchema).optional(),\n }).strict(),\n }).strict(),\n triggers: z.array(WorkflowTriggerSchema).default([]),\n views: z.array(z.object({ pageRef: ContractIdentifierSchema, placement: ContractIdentifierSchema.optional() }).strict()).default([]),\n dataContracts: z.object({ reads: z.array(ContractIdentifierSchema).default([]), writes: z.array(ContractIdentifierSchema).default([]), emits: z.array(ContractIdentifierSchema).default([]) }).strict(),\n governance: z.object({ activated: z.boolean(), validated: z.boolean(), validationIssues: z.array(WorkflowValidationIssueSchema).default([]), hidden: z.boolean().optional() }).strict(),\n interfaces: z.object({\n openai: z.object({ enabled: z.boolean(), modelName: z.string().trim().min(1).optional() }).strict(),\n shortcutRef: EntityRefSchema.optional(),\n preferredAppId: ContractIdentifierSchema.optional(),\n }).strict().superRefine((interfaces, context) => {\n if (interfaces.openai.enabled && !interfaces.openai.modelName) context.addIssue({ code: 'custom', path: ['openai', 'modelName'], message: 'Enabled OpenAI interface requires modelName.' });\n if (interfaces.shortcutRef && interfaces.shortcutRef.kind !== 'workflow') context.addIssue({ code: 'custom', path: ['shortcutRef', 'kind'], message: 'shortcutRef must reference a workflow.' });\n }),\n}).strict().superRefine((definition, context) => {\n const nodeIds = new Set(definition.graph.nodes.map((node) => node.id));\n const references = new Set(definition.graph.nodes.map((node) => node.referenceName));\n if (nodeIds.size !== definition.graph.nodes.length) context.addIssue({ code: 'custom', path: ['graph', 'nodes'], message: 'Workflow node ids must be unique.' });\n if (references.size !== definition.graph.nodes.length) context.addIssue({ code: 'custom', path: ['graph', 'nodes'], message: 'Workflow node reference names must be unique.' });\n definition.graph.edges.forEach((edge, index) => {\n if (!nodeIds.has(edge.from) || !nodeIds.has(edge.to)) context.addIssue({ code: 'custom', path: ['graph', 'edges', index], message: 'Workflow edges must reference existing node ids.' });\n });\n if (definition.revision.kind === 'release' && definition.metadata.version !== definition.revision.recordVersion) context.addIssue({ code: 'custom', path: ['revision', 'recordVersion'], message: 'Release recordVersion must equal metadata.version.' });\n});\n\nexport type ConductorTaskType = z.infer<typeof ConductorTaskTypeSchema>;\nexport type ConductorWorkflowDefinition = z.infer<typeof ConductorWorkflowDefinitionSchema>;\nexport type WorkflowNode = z.infer<typeof WorkflowNodeSchema>;\nexport type WorkflowEdge = z.infer<typeof WorkflowEdgeSchema>;\nexport type WorkflowTrigger = z.infer<typeof WorkflowTriggerSchema>;\nexport type WorkflowDefinitionValidationIssue = z.infer<typeof WorkflowValidationIssueSchema>;\nexport type WorkflowOutputBinding = z.infer<typeof WorkflowOutputBindingSchema>;\nexport type WorkflowDefinition = z.infer<typeof WorkflowDefinitionSchema>;\n","import type {\n CapabilityManifest,\n CapabilityRegistryDocument,\n CapabilityRegistrySource,\n CapabilitySourceType,\n} from '../contracts/capability';\nimport {\n CapabilityManifestSchema,\n CapabilityRegistryDocumentSchema,\n CapabilityRegistrySourceSchema,\n} from '../contracts/capability';\nimport type { EntityRef } from '../contracts/common';\nimport type { WorkflowDefinition } from '../contracts/workflow-definition';\nimport { WorkflowDefinitionSchema } from '../contracts/workflow-definition';\n\nexport interface CapabilityRegistryInputSource extends CapabilityRegistrySource {\n manifests: readonly unknown[];\n}\n\nexport interface CompiledCapabilityRegistry {\n document: CapabilityRegistryDocument;\n manifests: readonly CapabilityManifest[];\n manifestsById: ReadonlyMap<string, CapabilityManifest>;\n sourcesByCapabilityId: ReadonlyMap<string, readonly CapabilityRegistrySource[]>;\n require(reference: EntityRef | string): CapabilityManifest;\n}\n\nconst operationMethods = new Set(['get', 'post', 'put', 'patch', 'delete', 'options', 'head']);\n\n/** Extracts only canonical extensions and fails when a declared Monkeys tool has no manifest. */\nexport const extractOpenApiCapabilityManifests = (document: unknown): CapabilityManifest[] => {\n if (!document || typeof document !== 'object' || Array.isArray(document)) {\n throw new TypeError('OpenAPI capability source must be an object.');\n }\n const paths = (document as Record<string, unknown>).paths;\n if (!paths || typeof paths !== 'object' || Array.isArray(paths)) {\n throw new TypeError('OpenAPI capability source must contain a paths object.');\n }\n\n const manifests: CapabilityManifest[] = [];\n for (const [path, pathValue] of Object.entries(paths)) {\n if (!pathValue || typeof pathValue !== 'object' || Array.isArray(pathValue)) continue;\n for (const [method, operationValue] of Object.entries(pathValue as Record<string, unknown>)) {\n if (!operationMethods.has(method.toLowerCase()) || !operationValue || typeof operationValue !== 'object' || Array.isArray(operationValue)) continue;\n const operation = operationValue as Record<string, unknown>;\n const manifest = operation['x-monkeys-capability-manifest'];\n if (manifest === undefined) {\n if (operation['x-monkey-tool-name'] !== undefined) {\n throw new Error(`OpenAPI operation ${method.toUpperCase()} ${path} declares a tool without x-monkeys-capability-manifest.`);\n }\n continue;\n }\n manifests.push(CapabilityManifestSchema.parse(manifest));\n }\n }\n return manifests;\n};\n\nexport const createCapabilityRegistrySource = (\n sourceType: CapabilitySourceType,\n sourceId: string,\n ownerRepo: string,\n manifests: readonly unknown[],\n): CapabilityRegistryInputSource => ({\n ...CapabilityRegistrySourceSchema.parse({ sourceType, sourceId, ownerRepo }),\n manifests,\n});\n\nexport const createOpenApiCapabilityRegistrySource = (\n sourceId: string,\n ownerRepo: string,\n document: unknown,\n): CapabilityRegistryInputSource =>\n createCapabilityRegistrySource('openapi', sourceId, ownerRepo, extractOpenApiCapabilityManifests(document));\n\nexport interface WorkflowCapabilityManifestOptions {\n ownerRepo: string;\n surfaces: readonly string[];\n slots?: readonly string[];\n variants?: readonly string[];\n tokenRefs?: readonly string[];\n}\n\nexport const createWorkflowCapabilityManifest = (\n input: WorkflowDefinition,\n options: WorkflowCapabilityManifestOptions,\n): CapabilityManifest => {\n const workflow = WorkflowDefinitionSchema.parse(input);\n return CapabilityManifestSchema.parse({\n contract: 'CapabilityManifest',\n id: workflow.metadata.id,\n capabilityVersion: String(workflow.metadata.version),\n ownerRepo: options.ownerRepo,\n kind: 'workflow',\n displayName: typeof workflow.metadata.name === 'string'\n ? workflow.metadata.name\n : workflow.metadata.name?.['en-US'] ?? workflow.metadata.name?.['zh-CN'] ?? workflow.metadata.id,\n description: typeof workflow.metadata.description === 'string'\n ? workflow.metadata.description\n : workflow.metadata.description?.['en-US'] ?? workflow.metadata.description?.['zh-CN'],\n ports: workflow.ports,\n runtime: {\n providerBindings: [{\n providerRef: { kind: 'workflow', id: workflow.metadata.id, version: workflow.metadata.version, ownerRepo: options.ownerRepo },\n productContexts: [],\n priority: 0,\n }],\n loading: 'on-activation',\n stateOwner: 'external',\n sideEffects: ['network', 'storage', 'worker'],\n },\n placement: {\n surfaces: options.surfaces,\n slots: options.slots ?? [],\n variants: options.variants ?? [],\n tokenRefs: options.tokenRefs ?? [],\n },\n accessibility: {\n keyboardModel: 'workflow-form',\n focusModel: 'host-managed',\n labelContract: 'workflow-display-name',\n },\n observability: {\n eventNamespace: `workflow.${workflow.metadata.id}`,\n metrics: ['runs', 'duration', 'errors'],\n evidenceRefs: [],\n performanceBudgetMs: workflow.execution.timeoutMs,\n },\n });\n};\n\n/** Compiles all production declaration sources into one immutable, conflict-free registry. */\nexport const compileCapabilityRegistry = (\n sources: readonly CapabilityRegistryInputSource[],\n): CompiledCapabilityRegistry => {\n const entriesById = new Map<string, { manifest: CapabilityManifest; sources: CapabilityRegistrySource[] }>();\n const seenSources = new Set<string>();\n\n for (const sourceInput of sources) {\n const source = CapabilityRegistrySourceSchema.parse({\n sourceType: sourceInput.sourceType,\n sourceId: sourceInput.sourceId,\n ownerRepo: sourceInput.ownerRepo,\n });\n const sourceKey = `${source.sourceType}:${source.sourceId}`;\n if (seenSources.has(sourceKey)) throw new Error(`Duplicate capability source: ${sourceKey}`);\n seenSources.add(sourceKey);\n\n for (const manifestInput of sourceInput.manifests) {\n const manifest = CapabilityManifestSchema.parse(manifestInput);\n if (manifest.ownerRepo !== source.ownerRepo) {\n throw new Error(`Capability ${manifest.id} owner ${manifest.ownerRepo} does not match source owner ${source.ownerRepo}.`);\n }\n const existing = entriesById.get(manifest.id);\n if (!existing) {\n entriesById.set(manifest.id, { manifest, sources: [source] });\n continue;\n }\n if (JSON.stringify(existing.manifest) !== JSON.stringify(manifest)) {\n throw new Error(`Conflicting capability declarations for ${manifest.id}.`);\n }\n existing.sources.push(source);\n }\n }\n\n const document = CapabilityRegistryDocumentSchema.parse({\n contract: 'CapabilityRegistry',\n entries: Array.from(entriesById.values()).sort((left, right) => left.manifest.id.localeCompare(right.manifest.id)),\n });\n const manifests = Object.freeze(document.entries.map((entry) => entry.manifest));\n const manifestsById = new Map(manifests.map((manifest) => [manifest.id, manifest]));\n const sourcesByCapabilityId = new Map(document.entries.map((entry) => [entry.manifest.id, Object.freeze(entry.sources)]));\n\n return Object.freeze({\n document: Object.freeze(document),\n manifests,\n manifestsById,\n sourcesByCapabilityId,\n require(reference: EntityRef | string): CapabilityManifest {\n if (typeof reference !== 'string' && reference.kind !== 'capability') {\n throw new Error(`Expected a capability reference, received ${reference.kind}:${reference.id}.`);\n }\n const id = typeof reference === 'string' ? reference : reference.id;\n const manifest = manifestsById.get(id);\n if (!manifest) throw new Error(`Unknown capability: ${id}`);\n if (typeof reference !== 'string' && reference.version !== undefined && String(reference.version) !== manifest.capabilityVersion) {\n throw new Error(`Capability ${id} version ${String(reference.version)} is not active; expected ${manifest.capabilityVersion}.`);\n }\n return manifest;\n },\n });\n};\n","import { z } from 'zod';\nimport { ContractIdentifierSchema, IsoDateTimeSchema, JsonObjectSchema, JsonValueSchema } from './common';\n\nexport const StudioAgentModeSchema = z.enum(['chat', 'work']);\n\n/** @deprecated Use StudioAgentModeSchema. */\nexport const AgentModeSchema = StudioAgentModeSchema;\n\nexport const AgentConfigurationCapabilitySchema = z.enum([\n 'models',\n 'skills',\n 'tools',\n 'mcp',\n 'reasoning',\n]);\n\nexport const AgentModeCapabilitiesSchema = z\n .object({\n models: z.boolean(),\n skills: z.boolean(),\n tools: z.boolean(),\n mcp: z.boolean(),\n reasoning: z.boolean(),\n })\n .strict();\n\nexport const AgentResourceModeSupportSchema = z\n .object({\n modes: z.array(AgentModeSchema).min(1),\n })\n .strict();\n\nexport const AGENT_MODE_CAPABILITIES = Object.freeze({\n chat: AgentModeCapabilitiesSchema.parse({\n models: true,\n skills: true,\n tools: true,\n mcp: true,\n reasoning: false,\n }),\n work: AgentModeCapabilitiesSchema.parse({\n models: true,\n skills: true,\n tools: true,\n mcp: true,\n reasoning: true,\n }),\n}) satisfies Readonly<Record<AgentMode, AgentModeCapabilities>>;\n\nexport function getAgentModeCapabilities(mode: AgentMode): AgentModeCapabilities {\n return AGENT_MODE_CAPABILITIES[mode];\n}\n\nexport function agentModeHasCapability(mode: AgentMode, capability: AgentConfigurationCapability): boolean {\n return getAgentModeCapabilities(mode)[capability];\n}\n\nexport function isAgentResourceModeCompatible(\n support: AgentResourceModeSupport | undefined,\n mode: AgentMode,\n): boolean {\n return support?.modes.includes(mode) ?? false;\n}\n\nexport const AgentSessionCapabilitySchema = z.enum([\n 'text',\n 'reasoning',\n 'plan',\n 'tasks',\n 'tools',\n 'mcp',\n 'shell',\n 'fileChange',\n 'skills',\n 'approval',\n 'artifacts',\n 'usage',\n 'resume',\n 'diff',\n 'workspaceFiles',\n 'terminal',\n 'testResults',\n 'threadForking',\n 'editAndRerun',\n 'steering',\n 'summary',\n]);\n\nexport const AgentSessionCapabilitiesSchema = z\n .object({\n text: z.boolean().default(true),\n reasoning: z.boolean().default(false),\n plan: z.boolean().default(false),\n tasks: z.boolean().default(false),\n tools: z.boolean().default(false),\n mcp: z.boolean().default(false),\n shell: z.boolean().default(false),\n fileChange: z.boolean().default(false),\n skills: z.boolean().default(false),\n approval: z.boolean().default(false),\n artifacts: z.boolean().default(false),\n usage: z.boolean().default(false),\n resume: z.boolean().default(false),\n diff: z.boolean().default(false),\n workspaceFiles: z.boolean().default(false),\n terminal: z.boolean().default(false),\n testResults: z.boolean().default(false),\n threadForking: z.boolean().default(false),\n editAndRerun: z.boolean().default(false),\n steering: z.boolean().default(false),\n summary: z.boolean().default(false),\n })\n .strict();\n\n/**\n * Session-level execution safety profile. This is a product contract; runtime\n * adapters map it to their own approval and sandbox settings.\n */\nexport const AgentSessionPermissionProfileSchema = z.enum([\n 'approval-required',\n 'auto-approve',\n 'full-access',\n]);\n\nexport const AGENT_SESSION_RUNTIME_CAPABILITIES = Object.freeze({\n chat: AgentSessionCapabilitiesSchema.parse({ text: true, tools: true, mcp: true, skills: true, approval: true, usage: true, editAndRerun: true, summary: true }),\n work: AgentSessionCapabilitiesSchema.parse({ text: true, tools: true, mcp: true, shell: true, fileChange: true, skills: true, approval: true, artifacts: true, usage: true, resume: true, editAndRerun: true, steering: true, summary: true }),\n}) satisfies Readonly<Record<AgentMode, AgentSessionCapabilities>>;\n\nexport function getAgentSessionRuntimeCapabilities(mode: AgentMode): AgentSessionCapabilities {\n return AGENT_SESSION_RUNTIME_CAPABILITIES[mode];\n}\n\nexport const AGENT_SESSION_CAPABILITY_EVIDENCE = Object.freeze({\n text: { eventTypes: ['message'], commandTypes: [] },\n reasoning: { eventTypes: ['reasoning'], commandTypes: [] },\n plan: { eventTypes: ['plan'], commandTypes: [] },\n tasks: { eventTypes: ['task'], commandTypes: [] },\n tools: { eventTypes: ['tool'], commandTypes: [] },\n mcp: { eventTypes: ['tool'], commandTypes: [] },\n shell: { eventTypes: ['tool', 'terminal'], commandTypes: [] },\n fileChange: { eventTypes: ['tool', 'diff', 'workspace-file'], commandTypes: [] },\n skills: { eventTypes: ['tool'], commandTypes: [] },\n approval: { eventTypes: ['approval'], commandTypes: ['approval'] },\n artifacts: { eventTypes: ['artifact'], commandTypes: [] },\n usage: { eventTypes: ['usage'], commandTypes: [] },\n resume: { eventTypes: ['resume'], commandTypes: ['resume'] },\n diff: { eventTypes: ['diff'], commandTypes: [] },\n workspaceFiles: { eventTypes: ['workspace-file'], commandTypes: [] },\n terminal: { eventTypes: ['terminal'], commandTypes: [] },\n testResults: { eventTypes: ['test-result'], commandTypes: [] },\n threadForking: { eventTypes: [], commandTypes: ['fork'] },\n editAndRerun: { eventTypes: [], commandTypes: ['edit-and-rerun'] },\n steering: { eventTypes: ['steer'], commandTypes: ['steer'] },\n summary: { eventTypes: ['summary'], commandTypes: ['retry-summary'] },\n} as const) satisfies Readonly<Record<AgentSessionCapability, { readonly eventTypes: readonly string[]; readonly commandTypes: readonly string[] }>>;\n\nexport function findUnsupportedAgentSessionCapabilities(\n capabilities: AgentSessionCapabilities,\n evidence: { eventTypes?: readonly string[]; commandTypes?: readonly string[] },\n): AgentSessionCapability[] {\n const eventTypes = new Set(evidence.eventTypes || []);\n const commandTypes = new Set(evidence.commandTypes || []);\n return AgentSessionCapabilitySchema.options.filter((capability) => {\n if (!capabilities[capability]) return false;\n const requirement = AGENT_SESSION_CAPABILITY_EVIDENCE[capability];\n return !requirement.eventTypes.some((eventType) => eventTypes.has(eventType)) && !requirement.commandTypes.some((commandType) => commandTypes.has(commandType));\n });\n}\n\nexport const AgentSessionSnapshotSchema = z\n .object({\n mode: AgentModeSchema,\n modelId: z.string().trim().min(1),\n capabilities: AgentSessionCapabilitiesSchema,\n permissionProfile: AgentSessionPermissionProfileSchema.optional(),\n })\n .strict();\n\nexport const AgentSessionStatusSchema = z.enum([\n 'queued',\n 'running',\n 'waiting_approval',\n 'stopping',\n 'stopped',\n 'completed',\n 'failed',\n]);\n\nexport const AgentSessionTerminalStatusSchema = z.enum(['stopped', 'completed', 'failed']);\n\nexport const AgentSessionLineageSchema = z\n .object({\n forkedFromThreadId: ContractIdentifierSchema,\n forkedFromMessageId: ContractIdentifierSchema,\n sourceRunId: ContractIdentifierSchema,\n })\n .strict();\n\nexport const AgentSessionContextInheritanceSchema = z\n .object({\n messages: z.enum(['through-source-message', 'exclude']),\n attachments: z.enum(['inherit', 'exclude']),\n summaries: z.enum(['inherit', 'exclude']),\n toolResults: z.enum(['inherit', 'exclude']),\n codeChanges: z.enum(['inherit', 'exclude']),\n })\n .strict();\n\nexport const AgentSessionInheritedContextMessageSchema = z\n .object({\n messageId: ContractIdentifierSchema,\n role: z.enum(['user', 'assistant']),\n parts: z.array(JsonValueSchema).min(1),\n })\n .strict();\n\nexport const AgentSessionUnavailableResourceSchema = z\n .object({\n messageId: ContractIdentifierSchema,\n kind: z.enum(['attachment', 'tool-result', 'code-change']),\n reason: z.enum(['excluded', 'unavailable', 'unsupported']),\n })\n .strict();\n\nexport const AgentSessionInheritedContextSchema = z\n .object({\n sourceThreadId: ContractIdentifierSchema,\n sourceMessageId: ContractIdentifierSchema,\n sourceRunId: ContractIdentifierSchema,\n messages: z.array(AgentSessionInheritedContextMessageSchema).max(24),\n summary: z.string().trim().min(1).optional(),\n unavailableResources: z.array(AgentSessionUnavailableResourceSchema).default([]),\n capturedAt: IsoDateTimeSchema,\n })\n .strict();\n\nexport const AgentSessionContinuationRequestSchema = z\n .object({\n contract: z.literal('AgentSessionContinuationRequest'),\n idempotencyKey: ContractIdentifierSchema,\n sourceMessageId: ContractIdentifierSchema,\n sourceRunId: ContractIdentifierSchema,\n inheritance: AgentSessionContextInheritanceSchema,\n })\n .strict();\n\nexport const AgentSessionContinuationResultSchema = z\n .object({\n contract: z.literal('AgentSessionContinuationResult'),\n idempotencyKey: ContractIdentifierSchema,\n threadId: ContractIdentifierSchema,\n lineage: AgentSessionLineageSchema,\n inheritance: AgentSessionContextInheritanceSchema,\n unavailableResources: z.array(AgentSessionUnavailableResourceSchema).default([]),\n duplicate: z.boolean(),\n createdAt: IsoDateTimeSchema,\n })\n .strict();\n\nexport const AgentSessionActiveBranchSchema = z\n .object({\n branchId: ContractIdentifierSchema,\n threadId: ContractIdentifierSchema,\n sourceMessageId: ContractIdentifierSchema,\n runId: ContractIdentifierSchema,\n lineage: AgentSessionLineageSchema.optional(),\n createdAt: IsoDateTimeSchema,\n })\n .strict();\n\nexport const AgentSessionRunSchema = z\n .object({\n runId: ContractIdentifierSchema,\n sessionId: ContractIdentifierSchema,\n sourceMessageId: ContractIdentifierSchema,\n status: AgentSessionStatusSchema,\n startedAt: IsoDateTimeSchema,\n stoppingRequestedAt: IsoDateTimeSchema.optional(),\n stoppedAt: IsoDateTimeSchema.optional(),\n completedAt: IsoDateTimeSchema.optional(),\n failedAt: IsoDateTimeSchema.optional(),\n durationMs: z.number().nonnegative().optional(),\n })\n .strict()\n .superRefine((value, context) => {\n const terminalTimestamps = [value.stoppedAt, value.completedAt, value.failedAt].filter(Boolean);\n if (terminalTimestamps.length > 1) {\n context.addIssue({\n code: 'custom',\n path: ['status'],\n message: 'A run may declare only one terminal timestamp.',\n });\n }\n const expectedTimestamp =\n value.status === 'stopped'\n ? value.stoppedAt\n : value.status === 'completed'\n ? value.completedAt\n : value.status === 'failed'\n ? value.failedAt\n : undefined;\n if (AgentSessionTerminalStatusSchema.safeParse(value.status).success && !expectedTimestamp) {\n context.addIssue({\n code: 'custom',\n path: [value.status === 'stopped' ? 'stoppedAt' : value.status === 'completed' ? 'completedAt' : 'failedAt'],\n message: `Run status ${value.status} requires its matching terminal timestamp.`,\n });\n }\n if (!AgentSessionTerminalStatusSchema.safeParse(value.status).success && terminalTimestamps.length > 0) {\n context.addIssue({\n code: 'custom',\n path: ['status'],\n message: 'A non-terminal run must not declare a terminal timestamp.',\n });\n }\n if ((value.status === 'stopping' || value.status === 'stopped') && !value.stoppingRequestedAt) {\n context.addIssue({\n code: 'custom',\n path: ['stoppingRequestedAt'],\n message: `Run status ${value.status} requires stoppingRequestedAt.`,\n });\n }\n if (!isAgentSessionTerminalStatus(value.status) && value.durationMs !== undefined) {\n context.addIssue({\n code: 'custom',\n path: ['durationMs'],\n message: 'Only a terminal run may declare durationMs.',\n });\n }\n if (isAgentSessionTerminalStatus(value.status) && value.durationMs === undefined) {\n context.addIssue({\n code: 'custom',\n path: ['durationMs'],\n message: `Terminal run status ${value.status} requires durationMs.`,\n });\n }\n });\n\nexport const AgentSessionCommandTypeSchema = z.enum([\n 'stop',\n 'resume',\n 'retry',\n 'retry-summary',\n 'approval',\n 'fork',\n 'edit-and-rerun',\n 'steer',\n]);\n\nconst AgentSessionCommandHeaderSchema = z\n .object({\n contract: z.literal('AgentSessionCommand'),\n commandId: ContractIdentifierSchema,\n sessionId: ContractIdentifierSchema,\n runId: ContractIdentifierSchema.optional(),\n idempotencyKey: ContractIdentifierSchema,\n expectedSequence: z.number().int().min(-1),\n issuedAt: IsoDateTimeSchema,\n })\n .strict();\n\nconst sessionCommand = <CommandType extends string, Payload extends z.ZodRawShape>(commandType: CommandType, payload: Payload) =>\n AgentSessionCommandHeaderSchema.extend({\n commandType: z.literal(commandType),\n payload: z.object(payload).strict(),\n }).strict();\n\nexport const AgentSessionCommandSchema = z.discriminatedUnion('commandType', [\n sessionCommand('stop', {\n reason: z.string().trim().min(1).optional(),\n }),\n sessionCommand('resume', {\n resumeEventId: ContractIdentifierSchema.optional(),\n }),\n sessionCommand('retry', {\n sourceEventId: ContractIdentifierSchema,\n }),\n sessionCommand('retry-summary', {\n sourceEventId: ContractIdentifierSchema,\n sourceRunId: ContractIdentifierSchema,\n }),\n sessionCommand('approval', {\n approvalId: ContractIdentifierSchema,\n decision: z.enum(['approved', 'rejected']),\n reason: z.string().trim().min(1).optional(),\n }),\n sessionCommand('fork', {\n sourceThreadId: ContractIdentifierSchema,\n sourceMessageId: ContractIdentifierSchema,\n sourceRunId: ContractIdentifierSchema,\n inheritance: AgentSessionContextInheritanceSchema,\n }),\n sessionCommand('edit-and-rerun', {\n sourceThreadId: ContractIdentifierSchema,\n sourceMessageId: ContractIdentifierSchema,\n sourceRunId: ContractIdentifierSchema,\n replacementParts: z.array(JsonValueSchema).min(1),\n inheritance: AgentSessionContextInheritanceSchema,\n }),\n sessionCommand('steer', {\n targetRunId: ContractIdentifierSchema,\n text: z.string().trim().min(1),\n }),\n]).superRefine((value, context) => {\n if (value.commandType === 'steer' && value.runId !== value.payload.targetRunId) {\n context.addIssue({\n code: 'custom',\n path: ['payload', 'targetRunId'],\n message: 'Steering targetRunId must match the command runId.',\n });\n }\n if (value.commandType === 'retry-summary' && value.runId !== value.payload.sourceRunId) {\n context.addIssue({\n code: 'custom',\n path: ['payload', 'sourceRunId'],\n message: 'Summary retry sourceRunId must match the command runId.',\n });\n }\n});\n\nexport const AgentSessionTargetedCommandSchema = AgentSessionCommandSchema.and(\n z.object({ runId: ContractIdentifierSchema }),\n);\n\nexport const AgentSessionCommandErrorCodeSchema = z.enum([\n 'SESSION_NOT_FOUND',\n 'RUN_NOT_FOUND',\n 'ACTIVE_RUN_NOT_FOUND',\n 'RUN_ALREADY_FINISHED',\n 'STOP_TIMEOUT',\n 'COMMAND_NOT_SUPPORTED',\n 'CAPABILITY_UNAVAILABLE',\n 'SEQUENCE_CONFLICT',\n 'INVALID_SESSION_STATE',\n 'TARGET_EVENT_NOT_FOUND',\n 'TARGET_EVENT_NOT_RETRYABLE',\n 'APPROVAL_NOT_FOUND',\n 'APPROVAL_ALREADY_RESOLVED',\n 'SOURCE_THREAD_NOT_FOUND',\n 'SOURCE_MESSAGE_NOT_FOUND',\n 'SOURCE_RUN_NOT_FOUND',\n 'SOURCE_LINEAGE_INVALID',\n 'ACTIVE_BRANCH_NOT_FOUND',\n 'COMMAND_EXECUTION_FAILED',\n]);\n\nexport const AgentSessionCommandResultSchema = z\n .object({\n contract: z.literal('AgentSessionCommandResult'),\n commandId: ContractIdentifierSchema,\n sessionId: ContractIdentifierSchema,\n runId: ContractIdentifierSchema.optional(),\n idempotencyKey: ContractIdentifierSchema,\n outcome: z.enum(['accepted', 'duplicate', 'rejected', 'failed']),\n sessionStatus: AgentSessionStatusSchema,\n acceptedSequence: z.number().int().nonnegative().optional(),\n resultEventIds: z.array(ContractIdentifierSchema).default([]),\n operation: z\n .object({\n lineage: AgentSessionLineageSchema,\n activeBranch: AgentSessionActiveBranchSchema,\n })\n .strict()\n .optional(),\n termination: z.enum(['requested', 'confirmed']).optional(),\n error: z\n .object({\n code: AgentSessionCommandErrorCodeSchema,\n message: z.string(),\n retryable: z.boolean(),\n })\n .strict()\n .optional(),\n occurredAt: IsoDateTimeSchema,\n })\n .strict()\n .superRefine((value, context) => {\n const requiresError = value.outcome === 'rejected' || value.outcome === 'failed';\n if (requiresError !== Boolean(value.error)) {\n context.addIssue({\n code: 'custom',\n path: ['error'],\n message: requiresError\n ? 'Rejected and failed command results require an error.'\n : 'Accepted and duplicate command results must not contain an error.',\n });\n }\n if (value.termination === 'requested' && value.sessionStatus !== 'stopping') {\n context.addIssue({\n code: 'custom',\n path: ['termination'],\n message: 'A requested termination must leave the run in stopping status.',\n });\n }\n if (value.termination === 'confirmed' && !isAgentSessionTerminalStatus(value.sessionStatus)) {\n context.addIssue({\n code: 'custom',\n path: ['termination'],\n message: 'A confirmed termination requires a terminal run status.',\n });\n }\n if (value.operation && !value.operation.activeBranch.lineage) {\n context.addIssue({\n code: 'custom',\n path: ['operation', 'activeBranch', 'lineage'],\n message: 'A branch operation result requires lineage on its active branch.',\n });\n }\n const operation = value.operation;\n if (operation?.activeBranch.lineage) {\n const { lineage } = operation;\n const branchLineage = operation.activeBranch.lineage;\n if (\n lineage.forkedFromThreadId !== branchLineage.forkedFromThreadId ||\n lineage.forkedFromMessageId !== branchLineage.forkedFromMessageId ||\n lineage.sourceRunId !== branchLineage.sourceRunId\n ) {\n context.addIssue({\n code: 'custom',\n path: ['operation', 'activeBranch', 'lineage'],\n message: 'Active branch lineage must match the operation lineage.',\n });\n }\n }\n if (value.operation && value.runId !== value.operation.activeBranch.runId) {\n context.addIssue({\n code: 'custom',\n path: ['operation', 'activeBranch', 'runId'],\n message: 'Active branch runId must match the command result runId.',\n });\n }\n });\n\nconst AGENT_SESSION_COMMAND_TRANSITIONS: Record<AgentSessionCommandType, Partial<Record<AgentSessionStatus, AgentSessionStatus>>> = {\n stop: { queued: 'stopping', running: 'stopping', waiting_approval: 'stopping' },\n resume: { stopped: 'queued', completed: 'queued', failed: 'queued' },\n retry: { failed: 'queued' },\n 'retry-summary': {},\n approval: { waiting_approval: 'running' },\n fork: {},\n 'edit-and-rerun': {},\n steer: {},\n};\n\nexport const AgentSessionCommandPolicySchema = z\n .object({\n capability: AgentSessionCapabilitySchema.optional(),\n allowedStatuses: z.array(AgentSessionStatusSchema).min(1),\n requiresRunId: z.boolean(),\n sourceSessionEffect: z.enum(['transition', 'preserve']),\n idempotencyScope: z.literal('session-command'),\n sequenceRule: z.enum(['match-current', 'target-run']),\n })\n .strict();\n\nconst sessionCommandPolicy = (policy: z.input<typeof AgentSessionCommandPolicySchema>) =>\n AgentSessionCommandPolicySchema.parse(policy);\n\nexport const AGENT_SESSION_COMMAND_POLICIES = Object.freeze({\n stop: sessionCommandPolicy({\n allowedStatuses: ['queued', 'running', 'waiting_approval'],\n requiresRunId: true,\n sourceSessionEffect: 'transition',\n idempotencyScope: 'session-command',\n sequenceRule: 'target-run',\n }),\n resume: sessionCommandPolicy({\n capability: 'resume',\n allowedStatuses: ['stopped', 'completed', 'failed'],\n requiresRunId: true,\n sourceSessionEffect: 'transition',\n idempotencyScope: 'session-command',\n sequenceRule: 'match-current',\n }),\n retry: sessionCommandPolicy({\n allowedStatuses: ['failed'],\n requiresRunId: true,\n sourceSessionEffect: 'transition',\n idempotencyScope: 'session-command',\n sequenceRule: 'match-current',\n }),\n 'retry-summary': sessionCommandPolicy({\n capability: 'summary',\n allowedStatuses: ['stopped', 'completed', 'failed'],\n requiresRunId: true,\n sourceSessionEffect: 'preserve',\n idempotencyScope: 'session-command',\n sequenceRule: 'match-current',\n }),\n approval: sessionCommandPolicy({\n capability: 'approval',\n allowedStatuses: ['waiting_approval'],\n requiresRunId: true,\n sourceSessionEffect: 'transition',\n idempotencyScope: 'session-command',\n sequenceRule: 'match-current',\n }),\n fork: sessionCommandPolicy({\n capability: 'threadForking',\n allowedStatuses: AgentSessionStatusSchema.options,\n requiresRunId: false,\n sourceSessionEffect: 'preserve',\n idempotencyScope: 'session-command',\n sequenceRule: 'match-current',\n }),\n 'edit-and-rerun': sessionCommandPolicy({\n capability: 'editAndRerun',\n allowedStatuses: ['stopped', 'completed', 'failed'],\n requiresRunId: false,\n sourceSessionEffect: 'preserve',\n idempotencyScope: 'session-command',\n sequenceRule: 'match-current',\n }),\n steer: sessionCommandPolicy({\n capability: 'steering',\n allowedStatuses: ['queued', 'running'],\n requiresRunId: true,\n sourceSessionEffect: 'preserve',\n idempotencyScope: 'session-command',\n sequenceRule: 'match-current',\n }),\n}) satisfies Readonly<Record<AgentSessionCommandType, AgentSessionCommandPolicy>>;\n\nexport function getAgentSessionCommandPolicy(commandType: AgentSessionCommandType): AgentSessionCommandPolicy {\n return AGENT_SESSION_COMMAND_POLICIES[commandType];\n}\n\nexport function canIssueAgentSessionCommand(\n status: AgentSessionStatus,\n commandType: AgentSessionCommandType,\n): boolean {\n return getAgentSessionCommandPolicy(commandType).allowedStatuses.includes(status);\n}\n\nexport function resolveAgentSessionCommandTransition(\n status: AgentSessionStatus,\n commandType: AgentSessionCommandType,\n): AgentSessionStatus | undefined {\n return AGENT_SESSION_COMMAND_TRANSITIONS[commandType][status];\n}\n\nexport function isAgentSessionTerminalStatus(status: AgentSessionStatus): status is AgentSessionTerminalStatus {\n return AgentSessionTerminalStatusSchema.safeParse(status).success;\n}\n\nexport function canApplyAgentSessionRunStatus(current: AgentSessionStatus, next: AgentSessionStatus): boolean {\n if (current === next) return true;\n const transitions: Record<AgentSessionStatus, readonly AgentSessionStatus[]> = {\n queued: ['running', 'stopping', 'failed'],\n running: ['waiting_approval', 'stopping', 'completed', 'failed'],\n waiting_approval: ['running', 'stopping', 'failed'],\n stopping: ['stopped', 'completed', 'failed'],\n stopped: [],\n completed: [],\n failed: [],\n };\n return transitions[current].includes(next);\n}\n\nconst AgentSessionEventHeaderSchema = z\n .object({\n contract: z.literal('AgentSessionEvent'),\n eventId: ContractIdentifierSchema,\n sessionId: ContractIdentifierSchema,\n runId: ContractIdentifierSchema.optional(),\n sourceMessageId: ContractIdentifierSchema.optional(),\n sequence: z.number().int().nonnegative(),\n idempotencyKey: ContractIdentifierSchema,\n occurredAt: IsoDateTimeSchema,\n })\n .strict();\n\nconst sessionEvent = <EventType extends string, Payload extends z.ZodRawShape>(eventType: EventType, payload: Payload) =>\n AgentSessionEventHeaderSchema.extend({\n eventType: z.literal(eventType),\n payload: z.object(payload).strict(),\n }).strict();\n\nexport const AgentSessionEventSchema = z.discriminatedUnion('eventType', [\n sessionEvent('message', {\n messageId: ContractIdentifierSchema,\n role: z.enum(['user', 'assistant', 'system']),\n operation: z.enum(['append', 'replace']).default('append'),\n parts: z.array(JsonValueSchema),\n status: z.enum(['streaming', 'completed', 'failed']).optional(),\n }),\n sessionEvent('reasoning', {\n reasoningId: ContractIdentifierSchema,\n text: z.string(),\n status: z.enum(['streaming', 'completed']),\n }),\n sessionEvent('plan', {\n planId: ContractIdentifierSchema,\n title: z.string().optional(),\n status: z.enum(['pending', 'running', 'completed', 'failed']),\n steps: z.array(\n z\n .object({\n id: ContractIdentifierSchema,\n title: z.string(),\n status: z.enum(['pending', 'running', 'completed', 'failed', 'skipped']),\n })\n .strict(),\n ),\n }),\n sessionEvent('task', {\n taskId: ContractIdentifierSchema,\n title: z.string(),\n status: z.enum(['pending', 'running', 'completed', 'failed', 'skipped']),\n detail: z.string().optional(),\n }),\n sessionEvent('tool', {\n toolCallId: ContractIdentifierSchema,\n toolName: z.string().trim().min(1),\n status: z.enum(['pending', 'running', 'completed', 'failed', 'denied']),\n input: JsonValueSchema.optional(),\n output: JsonValueSchema.optional(),\n error: z.string().optional(),\n startedAt: IsoDateTimeSchema.optional(),\n completedAt: IsoDateTimeSchema.optional(),\n }),\n sessionEvent('approval', {\n approvalId: ContractIdentifierSchema,\n toolCallId: ContractIdentifierSchema.optional(),\n status: z.enum(['requested', 'approved', 'rejected', 'expired']),\n title: z.string(),\n description: z.string().optional(),\n requestedAction: JsonValueSchema.optional(),\n }),\n sessionEvent('status', {\n status: AgentSessionStatusSchema,\n detail: z.string().optional(),\n startedAt: IsoDateTimeSchema.optional(),\n stoppingRequestedAt: IsoDateTimeSchema.optional(),\n stoppedAt: IsoDateTimeSchema.optional(),\n completedAt: IsoDateTimeSchema.optional(),\n failedAt: IsoDateTimeSchema.optional(),\n durationMs: z.number().nonnegative().optional(),\n }),\n sessionEvent('artifact', {\n artifactId: ContractIdentifierSchema,\n name: z.string().trim().min(1),\n kind: z.enum(['file', 'image', 'video', 'audio', 'web', 'other']),\n status: z.enum(['pending', 'ready', 'failed']),\n mimeType: z.string().optional(),\n url: z.string().url().optional(),\n size: z.number().int().nonnegative().optional(),\n sourceEventId: ContractIdentifierSchema.optional(),\n }),\n sessionEvent('usage', {\n inputTokens: z.number().int().nonnegative().optional(),\n outputTokens: z.number().int().nonnegative().optional(),\n totalTokens: z.number().int().nonnegative().optional(),\n contextTokens: z.number().int().nonnegative().optional(),\n contextWindow: z.number().int().positive().optional(),\n }),\n sessionEvent('resume', {\n resumable: z.boolean(),\n state: JsonObjectSchema.optional(),\n reason: z.string().optional(),\n }),\n sessionEvent('error', {\n code: z.string().trim().min(1),\n message: z.string(),\n retryable: z.boolean(),\n sourceEventId: ContractIdentifierSchema.optional(),\n details: JsonObjectSchema.optional(),\n }),\n sessionEvent('diff', {\n path: z.string().trim().min(1),\n status: z.enum(['added', 'modified', 'deleted', 'renamed']),\n patch: z.string().optional(),\n }),\n sessionEvent('workspace-file', {\n path: z.string().trim().min(1),\n operation: z.enum(['upsert', 'delete']),\n mimeType: z.string().optional(),\n size: z.number().int().nonnegative().optional(),\n }),\n sessionEvent('terminal', {\n terminalId: ContractIdentifierSchema,\n stream: z.enum(['stdin', 'stdout', 'stderr', 'status']),\n chunk: z.string(),\n exitCode: z.number().int().optional(),\n }),\n sessionEvent('test-result', {\n testId: ContractIdentifierSchema,\n name: z.string(),\n status: z.enum(['running', 'passed', 'failed', 'skipped']),\n durationMs: z.number().nonnegative().optional(),\n output: z.string().optional(),\n }),\n sessionEvent('steer', {\n commandId: ContractIdentifierSchema,\n targetRunId: ContractIdentifierSchema,\n text: z.string().trim().min(1),\n status: z.enum(['accepted', 'applied', 'failed']),\n error: z\n .object({\n code: AgentSessionCommandErrorCodeSchema,\n message: z.string(),\n retryable: z.boolean(),\n })\n .strict()\n .optional(),\n }),\n sessionEvent('summary', {\n summaryId: ContractIdentifierSchema,\n runId: ContractIdentifierSchema,\n text: z.string(),\n highlights: z.array(z.string()),\n pendingItems: z.array(z.string()),\n status: z.enum(['generating', 'completed', 'failed']),\n }),\n]).superRefine((value, context) => {\n if (value.eventType === 'steer') {\n if (value.runId !== value.payload.targetRunId) {\n context.addIssue({\n code: 'custom',\n path: ['payload', 'targetRunId'],\n message: 'Steering payload targetRunId must match the event runId.',\n });\n }\n const requiresError = value.payload.status === 'failed';\n if (requiresError !== Boolean(value.payload.error)) {\n context.addIssue({\n code: 'custom',\n path: ['payload', 'error'],\n message: requiresError\n ? 'Failed steering events require an error.'\n : 'Accepted and applied steering events must not contain an error.',\n });\n }\n }\n if (value.eventType === 'summary' && value.runId !== value.payload.runId) {\n context.addIssue({\n code: 'custom',\n path: ['payload', 'runId'],\n message: 'Summary payload runId must match the event runId.',\n });\n }\n});\n\nexport const AgentSessionRunEventSchema = AgentSessionEventSchema.superRefine((value, context) => {\n if (!value.runId) {\n context.addIssue({ code: 'custom', path: ['runId'], message: 'Run events require runId.' });\n }\n if (!value.sourceMessageId) {\n context.addIssue({\n code: 'custom',\n path: ['sourceMessageId'],\n message: 'Run events require sourceMessageId.',\n });\n }\n if (value.eventType !== 'status') return;\n const requiredTimeField =\n value.payload.status === 'running'\n ? 'startedAt'\n : value.payload.status === 'stopping'\n ? 'stoppingRequestedAt'\n : value.payload.status === 'stopped'\n ? 'stoppedAt'\n : value.payload.status === 'completed'\n ? 'completedAt'\n : value.payload.status === 'failed'\n ? 'failedAt'\n : undefined;\n if (requiredTimeField && !value.payload[requiredTimeField]) {\n context.addIssue({\n code: 'custom',\n path: ['payload', requiredTimeField],\n message: `Run status ${value.payload.status} requires ${requiredTimeField}.`,\n });\n }\n if (isAgentSessionTerminalStatus(value.payload.status) && value.payload.durationMs === undefined) {\n context.addIssue({\n code: 'custom',\n path: ['payload', 'durationMs'],\n message: `Terminal run status ${value.payload.status} requires durationMs.`,\n });\n }\n});\n\nexport const AgentSessionViewModelSchema = z\n .object({\n contract: z.literal('AgentSessionViewModel'),\n sessionId: ContractIdentifierSchema,\n snapshot: AgentSessionSnapshotSchema,\n status: AgentSessionStatusSchema,\n events: z.array(AgentSessionEventSchema),\n lastSequence: z.number().int().min(-1),\n resumable: z.boolean().default(false),\n lineage: AgentSessionLineageSchema.optional(),\n activeBranch: AgentSessionActiveBranchSchema.optional(),\n })\n .strict()\n .superRefine((value, context) => {\n const eventIds = new Set<string>();\n const idempotencyKeys = new Set<string>();\n let previousSequence = -1;\n\n value.events.forEach((event, index) => {\n if (event.sessionId !== value.sessionId) {\n context.addIssue({\n code: 'custom',\n path: ['events', index, 'sessionId'],\n message: 'Event sessionId must match the view model sessionId.',\n });\n }\n if (event.sequence <= previousSequence) {\n context.addIssue({\n code: 'custom',\n path: ['events', index, 'sequence'],\n message: 'Events must be ordered by a strictly increasing sequence.',\n });\n }\n if (eventIds.has(event.eventId)) {\n context.addIssue({\n code: 'custom',\n path: ['events', index, 'eventId'],\n message: 'Event IDs must be unique within a session view model.',\n });\n }\n if (idempotencyKeys.has(event.idempotencyKey)) {\n context.addIssue({\n code: 'custom',\n path: ['events', index, 'idempotencyKey'],\n message: 'Idempotency keys must be unique within a session view model.',\n });\n }\n previousSequence = event.sequence;\n eventIds.add(event.eventId);\n idempotencyKeys.add(event.idempotencyKey);\n });\n\n const expectedLastSequence = value.events.length > 0 ? value.events[value.events.length - 1].sequence : -1;\n if (value.lastSequence !== expectedLastSequence) {\n context.addIssue({\n code: 'custom',\n path: ['lastSequence'],\n message: 'lastSequence must match the final event sequence, or -1 when there are no events.',\n });\n }\n });\n\nexport const AgentWorkbenchNavigationItemStatusSchema = z.enum(['idle', 'running', 'completed', 'error']);\n\nexport const AgentWorkbenchCollectionStatusSchema = z.enum(['loading', 'ready', 'error']);\n\nexport const AgentWorkbenchAgentItemSchema = z\n .object({\n id: ContractIdentifierSchema,\n name: z.string().min(1),\n description: z.string().optional(),\n iconUrl: z.string().url().optional(),\n builtIn: z.boolean().default(false),\n pinned: z.boolean().default(false),\n pinPending: z.boolean().default(false),\n })\n .strict();\n\nexport const AgentWorkbenchSessionItemSchema = z\n .object({\n id: ContractIdentifierSchema,\n title: z.string().min(1),\n updatedAt: IsoDateTimeSchema,\n thumbnailUrl: z.string().url().optional(),\n mode: AgentModeSchema.optional(),\n status: AgentWorkbenchNavigationItemStatusSchema.default('idle'),\n pinned: z.boolean().default(false),\n contextUsage: z\n .object({\n usedTokens: z.number().int().nonnegative(),\n maxTokens: z.number().int().positive(),\n })\n .strict()\n .optional(),\n })\n .strict();\n\nexport const AgentWorkbenchNavigationCapabilitiesSchema = z\n .object({\n createAgent: z.boolean().default(false),\n createSession: z.boolean().default(true),\n manageCapabilities: z.boolean().default(false),\n manageAgentSettings: z.boolean().default(false),\n pinAgents: z.boolean().default(false),\n pinSessions: z.boolean().default(false),\n renameSessions: z.boolean().default(false),\n deleteSessions: z.boolean().default(false),\n })\n .strict();\n\nexport const AgentWorkbenchNavigationViewModelSchema = z\n .object({\n contract: z.literal('AgentWorkbenchNavigationViewModel'),\n activeTab: z.enum(['agents', 'sessions']).default('sessions'),\n searchQuery: z.string().default(''),\n selectedAgentItem: ContractIdentifierSchema.optional(),\n selectedSessionItem: ContractIdentifierSchema.optional(),\n agents: z\n .object({\n status: AgentWorkbenchCollectionStatusSchema,\n items: z.array(AgentWorkbenchAgentItemSchema),\n error: z.string().optional(),\n })\n .strict(),\n sessions: z\n .object({\n status: AgentWorkbenchCollectionStatusSchema,\n items: z.array(AgentWorkbenchSessionItemSchema),\n error: z.string().optional(),\n })\n .strict(),\n capabilities: AgentWorkbenchNavigationCapabilitiesSchema,\n })\n .strict()\n .superRefine((value, context) => {\n const validateCollection = (\n collection: { status: 'loading' | 'ready' | 'error'; error?: string },\n path: 'agents' | 'sessions',\n ) => {\n if (collection.status === 'error' && !collection.error) {\n context.addIssue({\n code: 'custom',\n path: [path, 'error'],\n message: 'An error collection must include an error message.',\n });\n }\n };\n\n validateCollection(value.agents, 'agents');\n validateCollection(value.sessions, 'sessions');\n });\n\nexport const AgentWorkbenchComposerStatusSchema = z.enum([\n 'idle',\n 'loading',\n 'streaming',\n 'stopping',\n 'error',\n]);\n\nexport const AgentWorkbenchComposerAttachmentSchema = z\n .object({\n id: ContractIdentifierSchema,\n name: z.string().min(1),\n mediaType: z.string().min(1).optional(),\n previewUrl: z.string().min(1).optional(),\n status: z.enum(['uploading', 'ready', 'error']).default('ready'),\n })\n .strict();\n\nexport const AgentWorkbenchComposerQueueItemSchema = z\n .object({\n id: ContractIdentifierSchema,\n text: z.string(),\n attachmentCount: z.number().int().nonnegative().default(0),\n status: z.enum(['queued', 'sending', 'error']).default('queued'),\n })\n .strict();\n\nexport const AgentWorkbenchComposerInputActionIconSchema = z.enum([\n 'file-text',\n 'image',\n]);\n\nexport const AgentWorkbenchComposerInputActionSchema = z\n .object({\n id: ContractIdentifierSchema,\n label: z.string().min(1),\n icon: AgentWorkbenchComposerInputActionIconSchema.optional(),\n })\n .strict();\n\nexport const AgentWorkbenchComposerModelOptionSchema = z\n .object({\n id: ContractIdentifierSchema,\n label: z.string().min(1),\n provider: z.string().min(1).optional(),\n mode: AgentModeSchema,\n disabled: z.boolean().default(false),\n })\n .strict();\n\nexport const AgentWorkbenchComposerCapabilitiesSchema = z\n .object({\n attachments: z.boolean().default(false),\n voiceInput: z.boolean().default(false),\n webSearch: z.boolean().default(false),\n modelSelection: z.boolean().default(false),\n reasoning: z.boolean().default(false),\n permissions: z.boolean().default(false),\n queue: z.boolean().default(false),\n stop: z.boolean().default(false),\n })\n .strict();\n\nexport const AgentWorkbenchQuickStartIconSchema = z.enum([\n 'sparkles',\n 'palette',\n 'search',\n 'file-text',\n 'code',\n 'shopping-bag',\n]);\n\nexport const AgentWorkbenchQuickStartTemplateActionSchema = z.enum(['prompt', 'upload']);\n\nexport const AgentWorkbenchQuickStartTemplateSchema = z\n .object({\n id: ContractIdentifierSchema,\n title: z.string().min(1),\n description: z.string().min(1).optional(),\n prompt: z.string().min(1),\n action: AgentWorkbenchQuickStartTemplateActionSchema.default('prompt'),\n icon: AgentWorkbenchQuickStartIconSchema.optional(),\n coverImageUrl: z.string().min(1).optional(),\n accept: z.string().min(1).default('*/*'),\n multiple: z.boolean().default(false),\n modes: z.array(AgentModeSchema).min(1).optional(),\n })\n .strict();\n\nexport const AgentWorkbenchQuickStartSectionSchema = z\n .object({\n id: ContractIdentifierSchema,\n label: z.string().min(1),\n templates: z.array(AgentWorkbenchQuickStartTemplateSchema).min(1),\n })\n .strict();\n\nexport const AgentWorkbenchQuickStartCategorySchema = z\n .object({\n id: ContractIdentifierSchema,\n label: z.string().min(1),\n icon: AgentWorkbenchQuickStartIconSchema.optional(),\n sections: z.array(AgentWorkbenchQuickStartSectionSchema).min(1),\n })\n .strict();\n\nexport const AgentWorkbenchSidebarNavigationModeSchema = z.enum(['default', 'session', 'trend']);\n\nexport const AgentWorkbenchSidebarSectionSchema = z.enum([\n 'header',\n 'search',\n 'new-session',\n 'sessions',\n 'agents',\n 'groups',\n 'footer',\n]);\n\nexport const AgentWorkbenchSidebarGroupItemSchema = z\n .object({\n id: ContractIdentifierSchema,\n title: z.string().trim().min(1).max(120),\n subtitle: z.string().trim().min(1).max(240).optional(),\n imageUrl: z.string().trim().min(1).max(2048).optional(),\n /** Optional legacy prompt. Trend workbenches may use items as static report selectors. */\n prompt: z.string().trim().min(1).max(10_000).optional(),\n mediaVariant: z.enum(['cover', 'cover-with-label', 'logo']).optional(),\n mediaTreatment: z.enum(['preserve', 'monochrome-light', 'invert']).optional(),\n })\n .strict();\n\nexport const AgentWorkbenchSidebarGroupSchema = z\n .object({\n id: ContractIdentifierSchema,\n label: z.string().trim().min(1).max(120),\n items: z.array(AgentWorkbenchSidebarGroupItemSchema).min(1).max(50),\n itemAspectRatio: z.number().positive().max(10).optional(),\n })\n .strict();\n\nexport const AgentWorkbenchSidebarConfigSchema = z\n .object({\n navigationMode: AgentWorkbenchSidebarNavigationModeSchema.optional(),\n defaultOpen: z.boolean().optional(),\n /** Initial sidebar width as a percentage of the workbench split pane. */\n widthPercent: z.number().int().min(10).max(40).optional(),\n visibleSections: z.array(AgentWorkbenchSidebarSectionSchema).min(1).max(7).optional(),\n groups: z.array(AgentWorkbenchSidebarGroupSchema).max(20).optional(),\n defaultGroupId: ContractIdentifierSchema.optional(),\n quickStartEnabled: z.boolean().optional(),\n quickStartCategories: z.array(AgentWorkbenchQuickStartCategorySchema).max(20).optional(),\n trendEntryEnabled: z.boolean().optional(),\n })\n .strict()\n .superRefine((value, context) => {\n if (value.visibleSections && new Set(value.visibleSections).size !== value.visibleSections.length) {\n context.addIssue({\n code: 'custom',\n path: ['visibleSections'],\n message: 'Sidebar sections must be unique.',\n });\n }\n if (value.defaultGroupId && !value.groups?.some((group) => group.id === value.defaultGroupId)) {\n context.addIssue({\n code: 'custom',\n path: ['defaultGroupId'],\n message: 'The default sidebar group must exist in groups.',\n });\n }\n });\n\nexport const DEFAULT_AGENT_WORKBENCH_SIDEBAR_SECTIONS = Object.freeze([\n 'header',\n 'search',\n 'new-session',\n 'sessions',\n 'agents',\n 'groups',\n 'footer',\n] as const);\n\nexport interface AgentWorkbenchSidebarLegacyConfig {\n navigationMode?: AgentWorkbenchSidebarNavigationMode;\n quickStartEnabled?: boolean;\n}\n\nexport function resolveAgentWorkbenchSidebarConfig(\n config?: AgentWorkbenchSidebarConfig,\n legacy: AgentWorkbenchSidebarLegacyConfig = {},\n): ResolvedAgentWorkbenchSidebarConfig {\n const parsed = AgentWorkbenchSidebarConfigSchema.parse(config ?? {});\n const navigationMode = parsed.navigationMode ?? legacy.navigationMode ?? 'default';\n return {\n ...parsed,\n navigationMode,\n defaultOpen: parsed.defaultOpen ?? true,\n widthPercent: parsed.widthPercent ?? 18,\n visibleSections: parsed.visibleSections ?? [...DEFAULT_AGENT_WORKBENCH_SIDEBAR_SECTIONS],\n groups: parsed.groups ?? [],\n quickStartEnabled: parsed.quickStartEnabled ?? legacy.quickStartEnabled ?? false,\n trendEntryEnabled: parsed.trendEntryEnabled ?? navigationMode === 'trend',\n };\n}\n\nexport const AgentWorkbenchQuickStartViewModelSchema = z\n .object({\n contract: z.literal('AgentWorkbenchQuickStartViewModel'),\n mode: AgentModeSchema,\n categories: z.array(AgentWorkbenchQuickStartCategorySchema).min(1),\n disabled: z.boolean().default(false),\n })\n .strict();\n\nexport const AgentWorkbenchComposerViewModelSchema = z\n .object({\n contract: z.literal('AgentWorkbenchComposerViewModel'),\n value: z.string().default(''),\n status: AgentWorkbenchComposerStatusSchema.default('idle'),\n mode: AgentModeSchema,\n placeholder: z.string().optional(),\n attachments: z.array(AgentWorkbenchComposerAttachmentSchema).default([]),\n queuedDrafts: z.array(AgentWorkbenchComposerQueueItemSchema).default([]),\n inputActions: z.array(AgentWorkbenchComposerInputActionSchema).default([]),\n selectedInputActionId: ContractIdentifierSchema.optional(),\n model: z\n .object({\n selectedId: ContractIdentifierSchema.optional(),\n options: z.array(AgentWorkbenchComposerModelOptionSchema),\n })\n .strict(),\n reasoning: z\n .object({\n value: z.enum(['low', 'medium', 'high', 'xhigh']),\n options: z.array(z.enum(['low', 'medium', 'high', 'xhigh'])).min(1),\n })\n .strict()\n .optional(),\n permissionProfile: AgentSessionPermissionProfileSchema.optional(),\n webSearchEnabled: z.boolean().default(false),\n error: z.string().optional(),\n capabilities: AgentWorkbenchComposerCapabilitiesSchema,\n })\n .strict()\n .superRefine((value, context) => {\n if (value.status === 'error' && !value.error) {\n context.addIssue({\n code: 'custom',\n path: ['error'],\n message: 'An error composer must include an error message.',\n });\n }\n if (value.model.selectedId && !value.model.options.some((option) => option.id === value.model.selectedId)) {\n context.addIssue({\n code: 'custom',\n path: ['model', 'selectedId'],\n message: 'The selected model must exist in model options.',\n });\n }\n });\n\nexport type StudioAgentMode = z.infer<typeof StudioAgentModeSchema>;\n/** @deprecated Use StudioAgentMode. */\nexport type AgentMode = StudioAgentMode;\nexport type AgentConfigurationCapability = z.infer<typeof AgentConfigurationCapabilitySchema>;\nexport type AgentModeCapabilities = z.infer<typeof AgentModeCapabilitiesSchema>;\nexport type AgentResourceModeSupport = z.infer<typeof AgentResourceModeSupportSchema>;\nexport type AgentSessionCapability = z.infer<typeof AgentSessionCapabilitySchema>;\nexport type AgentSessionCapabilities = z.infer<typeof AgentSessionCapabilitiesSchema>;\nexport type AgentSessionPermissionProfile = z.infer<typeof AgentSessionPermissionProfileSchema>;\nexport type AgentSessionSnapshot = z.infer<typeof AgentSessionSnapshotSchema>;\nexport type AgentSessionStatus = z.infer<typeof AgentSessionStatusSchema>;\nexport type AgentSessionTerminalStatus = z.infer<typeof AgentSessionTerminalStatusSchema>;\nexport type AgentSessionLineage = z.infer<typeof AgentSessionLineageSchema>;\nexport type AgentSessionContextInheritance = z.infer<typeof AgentSessionContextInheritanceSchema>;\nexport type AgentSessionInheritedContextMessage = z.infer<typeof AgentSessionInheritedContextMessageSchema>;\nexport type AgentSessionUnavailableResource = z.infer<typeof AgentSessionUnavailableResourceSchema>;\nexport type AgentSessionInheritedContext = z.infer<typeof AgentSessionInheritedContextSchema>;\nexport type AgentSessionContinuationRequest = z.infer<typeof AgentSessionContinuationRequestSchema>;\nexport type AgentSessionContinuationResult = z.infer<typeof AgentSessionContinuationResultSchema>;\nexport type AgentSessionActiveBranch = z.infer<typeof AgentSessionActiveBranchSchema>;\nexport type AgentSessionRun = z.infer<typeof AgentSessionRunSchema>;\nexport type AgentSessionCommandType = z.infer<typeof AgentSessionCommandTypeSchema>;\nexport type AgentSessionCommand = z.infer<typeof AgentSessionCommandSchema>;\nexport type AgentSessionTargetedCommand = z.infer<typeof AgentSessionTargetedCommandSchema>;\nexport type AgentSessionCommandErrorCode = z.infer<typeof AgentSessionCommandErrorCodeSchema>;\nexport type AgentSessionCommandResult = z.infer<typeof AgentSessionCommandResultSchema>;\nexport type AgentSessionCommandPolicy = z.infer<typeof AgentSessionCommandPolicySchema>;\nexport type AgentSessionEvent = z.infer<typeof AgentSessionEventSchema>;\nexport type AgentSessionRunEvent = z.infer<typeof AgentSessionRunEventSchema>;\nexport type AgentSessionViewModel = z.infer<typeof AgentSessionViewModelSchema>;\nexport type AgentWorkbenchNavigationItemStatus = z.infer<typeof AgentWorkbenchNavigationItemStatusSchema>;\nexport type AgentWorkbenchCollectionStatus = z.infer<typeof AgentWorkbenchCollectionStatusSchema>;\nexport type AgentWorkbenchAgentItem = z.infer<typeof AgentWorkbenchAgentItemSchema>;\nexport type AgentWorkbenchSessionItem = z.infer<typeof AgentWorkbenchSessionItemSchema>;\nexport type AgentWorkbenchNavigationCapabilities = z.infer<typeof AgentWorkbenchNavigationCapabilitiesSchema>;\nexport type AgentWorkbenchNavigationViewModel = z.infer<typeof AgentWorkbenchNavigationViewModelSchema>;\nexport type AgentWorkbenchComposerStatus = z.infer<typeof AgentWorkbenchComposerStatusSchema>;\nexport type AgentWorkbenchComposerAttachment = z.infer<typeof AgentWorkbenchComposerAttachmentSchema>;\nexport type AgentWorkbenchComposerQueueItem = z.infer<typeof AgentWorkbenchComposerQueueItemSchema>;\nexport type AgentWorkbenchComposerModelOption = z.infer<typeof AgentWorkbenchComposerModelOptionSchema>;\nexport type AgentWorkbenchComposerCapabilities = z.infer<typeof AgentWorkbenchComposerCapabilitiesSchema>;\nexport type AgentWorkbenchComposerInputAction = z.infer<typeof AgentWorkbenchComposerInputActionSchema>;\nexport type AgentWorkbenchComposerViewModel = z.infer<typeof AgentWorkbenchComposerViewModelSchema>;\nexport type AgentWorkbenchQuickStartIcon = z.infer<typeof AgentWorkbenchQuickStartIconSchema>;\nexport type AgentWorkbenchQuickStartTemplateAction = z.infer<typeof AgentWorkbenchQuickStartTemplateActionSchema>;\nexport type AgentWorkbenchQuickStartTemplate = z.infer<typeof AgentWorkbenchQuickStartTemplateSchema>;\nexport type AgentWorkbenchQuickStartSection = z.infer<typeof AgentWorkbenchQuickStartSectionSchema>;\nexport type AgentWorkbenchQuickStartCategory = z.infer<typeof AgentWorkbenchQuickStartCategorySchema>;\nexport type AgentWorkbenchQuickStartViewModel = z.infer<typeof AgentWorkbenchQuickStartViewModelSchema>;\nexport type AgentWorkbenchSidebarNavigationMode = z.infer<typeof AgentWorkbenchSidebarNavigationModeSchema>;\nexport type AgentWorkbenchSidebarSection = z.infer<typeof AgentWorkbenchSidebarSectionSchema>;\nexport type AgentWorkbenchSidebarGroupItem = z.infer<typeof AgentWorkbenchSidebarGroupItemSchema>;\nexport type AgentWorkbenchSidebarGroup = z.infer<typeof AgentWorkbenchSidebarGroupSchema>;\nexport type AgentWorkbenchSidebarConfig = z.infer<typeof AgentWorkbenchSidebarConfigSchema>;\nexport type ResolvedAgentWorkbenchSidebarConfig = AgentWorkbenchSidebarConfig & {\n navigationMode: AgentWorkbenchSidebarNavigationMode;\n defaultOpen: boolean;\n widthPercent: number;\n visibleSections: AgentWorkbenchSidebarSection[];\n groups: AgentWorkbenchSidebarGroup[];\n quickStartEnabled: boolean;\n trendEntryEnabled: boolean;\n};\n\n// Kept as a source-compatible type alias while consumers move to the product-level name.\nexport const AgentExecutionModeSchema = AgentModeSchema;\nexport type AgentExecutionMode = AgentMode;\n\nexport function normalizeStudioAgentMode(value: unknown): StudioAgentMode | undefined {\n const normalized = String(value ?? '')\n .trim()\n .toLowerCase();\n if (normalized === 'work' || normalized === 'agent' || normalized === 'codex') return 'work';\n if (normalized === 'chat' || normalized === 'chatbot' || normalized === 'vercel-ai' || normalized === 'vercel' || normalized === 'ai-sdk') {\n return 'chat';\n }\n return undefined;\n}\n\n/** @deprecated Use normalizeStudioAgentMode. */\nexport const normalizeAgentMode = normalizeStudioAgentMode;\nexport const normalizeAgentExecutionMode = normalizeStudioAgentMode;\n","import {\n AgentSessionEventSchema,\n AgentSessionViewModelSchema,\n type AgentSessionEvent,\n type AgentSessionSnapshot,\n type AgentSessionStatus,\n type AgentSessionViewModel,\n} from \"../contracts/agent\";\n\nexport interface AgentSessionEventGap {\n expectedSequence: number;\n receivedSequence: number;\n}\n\nexport interface AgentSessionEventProjection {\n sessionId: string;\n events: AgentSessionEvent[];\n lastSequence: number;\n status: AgentSessionStatus;\n resumable: boolean;\n gap?: AgentSessionEventGap;\n}\n\nexport function createAgentSessionEventProjection(\n sessionId: string,\n): AgentSessionEventProjection {\n return {\n sessionId,\n events: [],\n lastSequence: -1,\n status: \"queued\",\n resumable: false,\n };\n}\n\nexport function projectAgentSessionEvents(\n current: AgentSessionEventProjection,\n candidates: readonly unknown[],\n): AgentSessionEventProjection {\n const parsed = candidates.map((candidate) =>\n AgentSessionEventSchema.parse(candidate),\n );\n if (parsed.some((event) => event.sessionId !== current.sessionId)) {\n throw new TypeError(\n \"Agent session event sessionId does not match the projection sessionId.\",\n );\n }\n\n const eventIds = new Set(current.events.map((event) => event.eventId));\n const idempotencyKeys = new Set(\n current.events.map((event) => event.idempotencyKey),\n );\n const eventsBySequence = new Map(\n current.events.map((event) => [event.sequence, event] as const),\n );\n const acceptedCandidates: AgentSessionEvent[] = [];\n for (const event of parsed.sort(\n (left, right) => left.sequence - right.sequence,\n )) {\n if (\n eventIds.has(event.eventId) ||\n idempotencyKeys.has(event.idempotencyKey)\n )\n continue;\n const existing = eventsBySequence.get(event.sequence);\n if (existing) {\n throw new TypeError(\n `Conflicting Agent session events share sequence ${event.sequence}.`,\n );\n }\n eventsBySequence.set(event.sequence, event);\n eventIds.add(event.eventId);\n idempotencyKeys.add(event.idempotencyKey);\n acceptedCandidates.push(event);\n }\n\n for (const event of acceptedCandidates)\n eventsBySequence.delete(event.sequence);\n\n let expectedSequence = current.lastSequence + 1;\n let gap: AgentSessionEventGap | undefined;\n for (const event of acceptedCandidates) {\n if (event.sequence < expectedSequence) {\n throw new TypeError(\n `Agent session event sequence ${event.sequence} is behind the recovery cursor.`,\n );\n }\n if (event.sequence > expectedSequence) {\n gap = { expectedSequence, receivedSequence: event.sequence };\n break;\n }\n eventsBySequence.set(event.sequence, event);\n eventIds.add(event.eventId);\n idempotencyKeys.add(event.idempotencyKey);\n expectedSequence += 1;\n }\n\n const events = [...eventsBySequence.values()].sort(\n (left, right) => left.sequence - right.sequence,\n );\n let status: AgentSessionStatus = \"queued\";\n let resumable = false;\n for (const event of events) {\n if (event.eventType === \"status\") status = event.payload.status;\n if (event.eventType === \"resume\") resumable = event.payload.resumable;\n }\n return {\n sessionId: current.sessionId,\n events,\n lastSequence: events.length > 0 ? events[events.length - 1].sequence : -1,\n status,\n resumable,\n ...(gap ? { gap } : {}),\n };\n}\n\nexport function toAgentSessionViewModel(\n projection: AgentSessionEventProjection,\n snapshot: AgentSessionSnapshot,\n): AgentSessionViewModel {\n return AgentSessionViewModelSchema.parse({\n contract: \"AgentSessionViewModel\",\n sessionId: projection.sessionId,\n snapshot,\n status: projection.status,\n events: projection.events,\n lastSequence: projection.lastSequence,\n resumable: projection.resumable,\n });\n}\n","import { z } from \"zod\";\nimport { CapabilityManifestSchema } from \"./capability\";\nimport { ContractIdentifierSchema, EntityRefSchema, IsoDateTimeSchema, JsonObjectSchema, SensitiveResultPathsSchema, } from \"./common\";\nimport { OntologyDefinitionSchema, ProjectionSpecSchema } from \"./data\";\nimport { MenuDefinitionSchema } from \"./menu\";\nimport { PageDefinitionSchema } from \"./page\";\nimport { RevisionRefSchema } from \"./declarative-control\";\nconst ExactRefKindSchema = (kind: string) => RevisionRefSchema.superRefine((value, context) => {\n if (value.kind !== kind)\n context.addIssue({ code: \"custom\", path: [\"kind\"], message: `Reference must use kind ${kind}.` });\n});\nexport const SchemaDefinitionSchema = z\n .object({\n contract: z.literal(\"Schema\"),\n schemaVersion: z.literal(1),\n schemaId: ContractIdentifierSchema,\n ownerRepo: ContractIdentifierSchema,\n dialect: z.literal(\"https://json-schema.org/draft/2020-12/schema\"),\n document: JsonObjectSchema,\n})\n .strict();\nexport const OntologyViewDefinitionSchema = z\n .object({\n contract: z.literal(\"View\"),\n schemaVersion: z.literal(1),\n viewId: ContractIdentifierSchema,\n ownerRepo: ContractIdentifierSchema,\n ontologyDefinitionRevisionRef: ExactRefKindSchema(\"ontology-definition\"),\n canonicalDataViewRevisionRef: ExactRefKindSchema(\"view\"),\n renderModelSchemaRevisionRef: ExactRefKindSchema(\"schema\"),\n requiredPermissionCodes: z.array(ContractIdentifierSchema).default([]),\n})\n .strict();\n/** Exact pre-canonical View records remain readable without synthesizing a new revision. */\nexport const LegacyOntologyViewDefinitionSchema = OntologyViewDefinitionSchema.omit({ canonicalDataViewRevisionRef: true });\n\nexport const ConceptRelationshipSchema = z\n .object({\n kind: ContractIdentifierSchema,\n targetConceptId: ContractIdentifierSchema,\n cardinality: z.enum([\"one\", \"optional\", \"many\"]),\n})\n .strict();\nexport const ConceptDefinitionSchema = z\n .object({\n contract: z.literal(\"ConceptDefinition\"),\n conceptId: ContractIdentifierSchema,\n ownerRepo: ContractIdentifierSchema,\n displayName: z.string().trim().min(1),\n description: z.string().optional(),\n schemaRef: ContractIdentifierSchema,\n ontologyId: ContractIdentifierSchema.optional(),\n capabilityIds: z.array(ContractIdentifierSchema).default([]),\n commandNames: z.array(ContractIdentifierSchema).default([]),\n relationships: z.array(ConceptRelationshipSchema).default([]),\n})\n .strict();\nexport const DomainCommandDefinitionSchema = z\n .object({\n contract: z.literal(\"DomainCommandDefinition\"),\n commandName: ContractIdentifierSchema,\n ownerRepo: ContractIdentifierSchema,\n displayName: z.string().trim().min(1),\n description: z.string().optional(),\n targetKinds: z.array(ContractIdentifierSchema).min(1),\n inputSchemaRef: ContractIdentifierSchema,\n outputSchemaRef: ContractIdentifierSchema.optional(),\n sensitiveInputPaths: SensitiveResultPathsSchema.optional(),\n sensitiveResultPaths: SensitiveResultPathsSchema.optional(),\n requiredPermissionCodes: z.array(ContractIdentifierSchema).default([]),\n handlerRef: EntityRefSchema,\n sideEffects: z\n .array(z.enum([\"data-write\", \"execution\", \"navigation\", \"notification\", \"external-call\"]))\n .default([]),\n})\n .strict();\nexport const DomainCommandSchema = z\n .object({\n contract: z.literal(\"DomainCommand\"),\n commandId: ContractIdentifierSchema,\n commandName: ContractIdentifierSchema,\n requestId: ContractIdentifierSchema,\n traceId: ContractIdentifierSchema,\n idempotencyKey: ContractIdentifierSchema,\n targetRef: EntityRefSchema,\n actorRef: EntityRefSchema,\n source: z\n .object({\n product: z.enum([\"studio\", \"kernel\", \"agent\", \"mcp\", \"service\"]),\n pageId: ContractIdentifierSchema.optional(),\n capabilityId: ContractIdentifierSchema.optional(),\n })\n .strict(),\n payload: JsonObjectSchema,\n issuedAt: IsoDateTimeSchema,\n})\n .strict();\nexport const ProductDeclarationSchema = z\n .object({\n contract: z.literal(\"ProductDeclaration\"),\n declarationId: ContractIdentifierSchema,\n ownerRepo: ContractIdentifierSchema,\n concepts: z.array(ConceptDefinitionSchema).default([]),\n ontologies: z.array(OntologyDefinitionSchema).default([]),\n projections: z.array(ProjectionSpecSchema).default([]),\n commands: z.array(DomainCommandDefinitionSchema).default([]),\n capabilities: z.array(CapabilityManifestSchema).default([]),\n pages: z.array(PageDefinitionSchema).default([]),\n menus: z.array(MenuDefinitionSchema).default([]),\n})\n .strict();\nexport const DeclarationGraphEdgeSchema = z\n .object({\n from: EntityRefSchema,\n to: EntityRefSchema,\n relation: z.enum([\n \"uses-ontology\",\n \"uses-projection\",\n \"uses-capability\",\n \"uses-command\",\n \"relates-to-concept\",\n ]),\n})\n .strict();\nexport const ChangeImpactSchema = z\n .object({\n changedRef: EntityRefSchema,\n affectedRefs: z.array(EntityRefSchema),\n reasons: z.array(ContractIdentifierSchema).min(1),\n})\n .strict();\nexport const ChangeImpactGraphSchema = z\n .object({\n contract: z.literal(\"ChangeImpactGraph\"),\n declarationId: ContractIdentifierSchema,\n nodes: z.array(EntityRefSchema),\n edges: z.array(DeclarationGraphEdgeSchema),\n impacts: z.array(ChangeImpactSchema),\n generatedAt: IsoDateTimeSchema,\n})\n .strict();\nexport type ConceptRelationship = z.infer<typeof ConceptRelationshipSchema>;\nexport type ConceptDefinition = z.infer<typeof ConceptDefinitionSchema>;\nexport type SchemaDefinition = z.infer<typeof SchemaDefinitionSchema>;\nexport type OntologyViewDefinition = z.infer<typeof OntologyViewDefinitionSchema>;\nexport type DomainCommandDefinition = z.infer<typeof DomainCommandDefinitionSchema>;\nexport type DomainCommand = z.infer<typeof DomainCommandSchema>;\nexport type ProductDeclaration = z.infer<typeof ProductDeclarationSchema>;\nexport type DeclarationGraphEdge = z.infer<typeof DeclarationGraphEdgeSchema>;\nexport type ChangeImpact = z.infer<typeof ChangeImpactSchema>;\nexport type ChangeImpactGraph = z.infer<typeof ChangeImpactGraphSchema>;\n","import { z } from 'zod';\nimport {\n ContractIdentifierSchema,\n EntityRefSchema,\n IsoDateTimeSchema,\n JsonValueSchema,\n Sha256Schema,\n} from './common';\n\nexport const SourceRecordRefSchema = z\n .object({\n sourceId: ContractIdentifierSchema,\n recordId: ContractIdentifierSchema,\n recordVersion: z.union([z.number().int().nonnegative(), ContractIdentifierSchema]),\n hash: Sha256Schema,\n })\n .strict();\n\nexport const OntologyDefinitionSchema = z\n .object({\n contract: z.literal('OntologyDefinition'),\n ontologyId: ContractIdentifierSchema,\n dataSpaceId: ContractIdentifierSchema,\n ownerRepo: ContractIdentifierSchema,\n bodySchemaRef: ContractIdentifierSchema,\n authority: z\n .object({\n service: ContractIdentifierSchema,\n storage: ContractIdentifierSchema,\n scope: z.enum(['tenant', 'team', 'user', 'global']),\n })\n .strict(),\n relationKinds: z.array(ContractIdentifierSchema).default([]),\n metricKinds: z.array(ContractIdentifierSchema).default([]),\n })\n .strict();\n\nexport const ProjectionSpecSchema = z\n .object({\n contract: z.literal('ProjectionSpec'),\n projectionId: ContractIdentifierSchema,\n ontologyIds: z.array(ContractIdentifierSchema).min(1),\n outputSchemaRef: ContractIdentifierSchema,\n operator: z\n .object({\n kind: z.enum(['query', 'aggregate', 'relationship', 'search', 'custom']),\n configuration: z.record(z.string(), JsonValueSchema).default({}),\n })\n .strict(),\n materialization: z.enum(['on-demand', 'event-driven', 'scheduled']),\n invalidationEvents: z.array(ContractIdentifierSchema).default([]),\n rebuildable: z.literal(true),\n lineagePolicy: z\n .object({\n sourceRecords: z.boolean(),\n bodyVersions: z.boolean(),\n runRefs: z.boolean(),\n actorRefs: z.boolean(),\n })\n .strict(),\n })\n .strict();\n\nexport const LineageRecordSchema = z\n .object({\n contract: z.literal('LineageRecord'),\n lineageId: ContractIdentifierSchema,\n subjectRef: EntityRefSchema,\n sourceRecords: z.array(SourceRecordRefSchema).default([]),\n bodyRefs: z.array(EntityRefSchema).default([]),\n runRefs: z.array(EntityRefSchema).default([]),\n outputRefs: z.array(EntityRefSchema).default([]),\n artifactRefs: z.array(EntityRefSchema).default([]),\n actorRefs: z.array(EntityRefSchema).default([]),\n evidenceRefs: z.array(EntityRefSchema).default([]),\n recordedAt: IsoDateTimeSchema,\n })\n .strict();\n\nexport const DomainEventSchema = z\n .object({\n contract: z.literal('DomainEvent'),\n eventId: ContractIdentifierSchema,\n eventType: ContractIdentifierSchema,\n aggregateRef: EntityRefSchema,\n aggregateVersion: z.number().int().nonnegative(),\n requestId: ContractIdentifierSchema,\n actorRef: EntityRefSchema,\n payload: JsonValueSchema,\n occurredAt: IsoDateTimeSchema,\n })\n .strict();\n\nexport type SourceRecordRef = z.infer<typeof SourceRecordRefSchema>;\nexport type OntologyDefinition = z.infer<typeof OntologyDefinitionSchema>;\nexport type ProjectionSpec = z.infer<typeof ProjectionSpecSchema>;\nexport type LineageRecord = z.infer<typeof LineageRecordSchema>;\nexport type DomainEvent = z.infer<typeof DomainEventSchema>;\n","import { z } from 'zod';\nimport {\n ContractIdentifierSchema,\n JsonObjectSchema,\n LocalizedTextSchema,\n Sha256Schema,\n} from './common';\nimport { PageDefinitionSchema } from './page';\n\nexport const MENU_ACTIVATION_QUERY_PARAMETER = '__menuActivation';\nexport const MENU_CONTRACT_VERSION = 1;\nexport const MENU_MAX_DEFINITIONS = 128;\nexport const MENU_MAX_NODES = 1_024;\nexport const MENU_MAX_TREE_DEPTH = 16;\nexport const MENU_MAX_INPUT_BYTES = 64 * 1_024;\nexport const MENU_MAX_INPUT_VALUES = 2_048;\n\nconst MenuOrderSchema = z.number().int().min(-1_000_000).max(1_000_000);\n\nconst inspectJsonValue = (value: unknown): { bytes: number; depth: number; values: number } => {\n let maxDepth = 0;\n let values = 0;\n const visit = (candidate: unknown, depth: number) => {\n values += 1;\n maxDepth = Math.max(maxDepth, depth);\n if (Array.isArray(candidate)) {\n candidate.forEach((item) => visit(item, depth + 1));\n return;\n }\n if (candidate && typeof candidate === 'object') {\n Object.values(candidate as Record<string, unknown>).forEach((item) => visit(item, depth + 1));\n }\n };\n visit(value, 1);\n return {\n bytes: new TextEncoder().encode(JSON.stringify(value)).byteLength,\n depth: maxDepth,\n values,\n };\n};\n\nexport const MenuBoundedInputSchema = JsonObjectSchema.superRefine((value, context) => {\n const bounds = inspectJsonValue(value);\n if (bounds.bytes > MENU_MAX_INPUT_BYTES) {\n context.addIssue({\n code: 'custom',\n message: `Menu input exceeds ${MENU_MAX_INPUT_BYTES} UTF-8 bytes.`,\n });\n }\n if (bounds.depth > MENU_MAX_TREE_DEPTH) {\n context.addIssue({\n code: 'custom',\n message: `Menu input exceeds maximum depth ${MENU_MAX_TREE_DEPTH}.`,\n });\n }\n if (bounds.values > MENU_MAX_INPUT_VALUES) {\n context.addIssue({\n code: 'custom',\n message: `Menu input exceeds ${MENU_MAX_INPUT_VALUES} values.`,\n });\n }\n});\n\nexport const MenuPageRefSchema = z\n .object({\n applicationId: ContractIdentifierSchema,\n pageId: ContractIdentifierSchema,\n })\n .strict();\n\nexport const MenuSourceInputBindingSchema = z.discriminatedUnion('exposure', [\n z.object({ exposure: z.literal('client'), value: MenuBoundedInputSchema }).strict(),\n z.object({ exposure: z.literal('server'), value: MenuBoundedInputSchema }).strict(),\n]);\n\nexport const MenuRuntimeInputBindingSchema = z.discriminatedUnion('exposure', [\n z.object({ exposure: z.literal('client'), value: MenuBoundedInputSchema }).strict(),\n z.object({ exposure: z.literal('server') }).strict(),\n]);\n\nexport const MenuNavigateBehaviorSchema = z\n .object({\n kind: z.literal('navigate'),\n page: MenuPageRefSchema,\n activationId: ContractIdentifierSchema.optional(),\n input: MenuSourceInputBindingSchema.optional(),\n })\n .strict();\n\nexport const MenuActionBehaviorSchema = z\n .object({\n kind: z.literal('action'),\n actionRef: ContractIdentifierSchema,\n input: MenuBoundedInputSchema.optional(),\n })\n .strict();\n\nexport const MenuBehaviorSchema = z.discriminatedUnion('kind', [\n MenuNavigateBehaviorSchema,\n MenuActionBehaviorSchema,\n]);\n\nconst MenuNodeBaseShape = {\n nodeId: ContractIdentifierSchema,\n parentNodeId: ContractIdentifierSchema.optional(),\n order: MenuOrderSchema,\n};\n\nexport const MenuGroupNodeSchema = z\n .object({\n ...MenuNodeBaseShape,\n kind: z.literal('group'),\n label: LocalizedTextSchema.optional(),\n iconRef: ContractIdentifierSchema.optional(),\n disabled: z.boolean().optional(),\n })\n .strict();\n\nexport const MenuDividerNodeSchema = z\n .object({\n ...MenuNodeBaseShape,\n kind: z.literal('divider'),\n })\n .strict();\n\nexport const MenuItemNodeSchema = z\n .object({\n ...MenuNodeBaseShape,\n kind: z.literal('item'),\n label: LocalizedTextSchema,\n iconRef: ContractIdentifierSchema.optional(),\n tone: z.enum(['default', 'danger']).optional(),\n disabled: z.boolean().optional(),\n requiredPermission: ContractIdentifierSchema.optional(),\n behavior: MenuBehaviorSchema,\n })\n .strict();\n\nexport const MenuNodeSchema = z.discriminatedUnion('kind', [\n MenuGroupNodeSchema,\n MenuDividerNodeSchema,\n MenuItemNodeSchema,\n]);\n\nexport const MenuContributionSchema = z\n .object({\n providerId: ContractIdentifierSchema,\n parentNodeId: ContractIdentifierSchema.optional(),\n order: MenuOrderSchema,\n })\n .strict();\n\nconst validateMenuStructure = (\n menu: {\n nodes: z.infer<typeof MenuNodeSchema>[];\n contributions: z.infer<typeof MenuContributionSchema>[];\n },\n context: z.RefinementCtx,\n) => {\n const nodesById = new Map<string, { node: z.infer<typeof MenuNodeSchema>; index: number }>();\n menu.nodes.forEach((node, index) => {\n if (nodesById.has(node.nodeId)) {\n context.addIssue({\n code: 'custom',\n path: ['nodes', index, 'nodeId'],\n message: `Duplicate menu nodeId: ${node.nodeId}`,\n });\n return;\n }\n nodesById.set(node.nodeId, { node, index });\n });\n\n const validateParent = (parentNodeId: string | undefined, path: (string | number)[]) => {\n if (!parentNodeId) return;\n const parent = nodesById.get(parentNodeId);\n if (!parent) {\n context.addIssue({ code: 'custom', path, message: `Unknown menu parentNodeId: ${parentNodeId}` });\n return;\n }\n if (parent.node.kind !== 'group') {\n context.addIssue({ code: 'custom', path, message: `Menu parent ${parentNodeId} must be a group.` });\n }\n };\n\n menu.nodes.forEach((node, index) => validateParent(node.parentNodeId, ['nodes', index, 'parentNodeId']));\n menu.contributions.forEach((contribution, index) =>\n validateParent(contribution.parentNodeId, ['contributions', index, 'parentNodeId']));\n\n menu.nodes.forEach((node, index) => {\n const ancestors = new Set([node.nodeId]);\n let parentNodeId = node.parentNodeId;\n let depth = 1;\n while (parentNodeId) {\n if (ancestors.has(parentNodeId)) {\n context.addIssue({\n code: 'custom',\n path: ['nodes', index, 'parentNodeId'],\n message: `Menu node cycle contains ${node.nodeId}.`,\n });\n break;\n }\n ancestors.add(parentNodeId);\n depth += 1;\n if (depth > MENU_MAX_TREE_DEPTH) {\n context.addIssue({\n code: 'custom',\n path: ['nodes', index, 'parentNodeId'],\n message: `Menu tree exceeds maximum depth ${MENU_MAX_TREE_DEPTH}.`,\n });\n break;\n }\n parentNodeId = nodesById.get(parentNodeId)?.node.parentNodeId;\n }\n });\n\n const contributionKeys = new Set<string>();\n menu.contributions.forEach((contribution, index) => {\n const key = `${contribution.parentNodeId ?? ''}\\u0000${contribution.providerId}`;\n if (contributionKeys.has(key)) {\n context.addIssue({\n code: 'custom',\n path: ['contributions', index, 'providerId'],\n message: `Duplicate menu contribution provider at parent: ${contribution.providerId}`,\n });\n }\n contributionKeys.add(key);\n });\n};\n\nexport const MenuDefinitionSchema = z\n .object({\n contract: z.literal('MenuDefinition'),\n version: z.literal(MENU_CONTRACT_VERSION),\n applicationId: ContractIdentifierSchema,\n surface: ContractIdentifierSchema,\n menuId: ContractIdentifierSchema,\n nodes: z.array(MenuNodeSchema).max(MENU_MAX_NODES),\n contributions: z.array(MenuContributionSchema).max(MENU_MAX_NODES).default([]),\n })\n .strict()\n .superRefine(validateMenuStructure);\n\nexport const MenuDefinitionSetSchema = z.union([\n z.literal('*'),\n z\n .object({\n version: z.literal(MENU_CONTRACT_VERSION),\n definitions: z.array(MenuDefinitionSchema).max(MENU_MAX_DEFINITIONS),\n })\n .strict(),\n]);\n\nexport const MenuAccessRequirementSchema = z\n .object({\n authenticated: z.boolean().default(true),\n permissionAllOf: z.array(ContractIdentifierSchema).default([]),\n permissionAnyOf: z.array(ContractIdentifierSchema).default([]),\n featureFlags: z.array(ContractIdentifierSchema).default([]),\n })\n .strict();\n\nexport const MenuPageRegistrationSchema = z\n .object({\n applicationId: ContractIdentifierSchema,\n page: PageDefinitionSchema,\n })\n .strict();\n\nexport const MenuActionRegistrationSchema = z\n .object({\n applicationId: ContractIdentifierSchema,\n actionRef: ContractIdentifierSchema,\n inputSchemaRef: ContractIdentifierSchema.optional(),\n access: MenuAccessRequirementSchema,\n })\n .strict();\n\nexport const MenuContributionProviderRegistrationSchema = z\n .object({\n applicationId: ContractIdentifierSchema,\n providerId: ContractIdentifierSchema,\n surfaces: z.array(ContractIdentifierSchema).min(1).optional(),\n })\n .strict();\n\nexport const CompiledMenuNavigateBehaviorSchema = z\n .object({\n kind: z.literal('navigate'),\n page: MenuPageRefSchema,\n activationId: ContractIdentifierSchema,\n input: MenuRuntimeInputBindingSchema.optional(),\n })\n .strict();\n\nexport const CompiledMenuActionBehaviorSchema = z\n .object({\n kind: z.literal('action'),\n actionRef: ContractIdentifierSchema,\n input: MenuBoundedInputSchema.optional(),\n })\n .strict();\n\nexport const CompiledMenuBehaviorSchema = z.discriminatedUnion('kind', [\n CompiledMenuNavigateBehaviorSchema,\n CompiledMenuActionBehaviorSchema,\n]);\n\nexport const CompiledMenuItemAccessSchema = MenuAccessRequirementSchema.extend({\n requiredPermission: ContractIdentifierSchema.optional(),\n}).strict();\n\nexport const CompiledMenuGroupNodeSchema = MenuGroupNodeSchema;\nexport const CompiledMenuDividerNodeSchema = MenuDividerNodeSchema;\nexport const CompiledMenuItemNodeSchema = MenuItemNodeSchema.omit({ behavior: true, requiredPermission: true }).extend({\n behavior: CompiledMenuBehaviorSchema,\n access: CompiledMenuItemAccessSchema,\n}).strict();\n\nexport const CompiledMenuNodeSchema = z.discriminatedUnion('kind', [\n CompiledMenuGroupNodeSchema,\n CompiledMenuDividerNodeSchema,\n CompiledMenuItemNodeSchema,\n]);\n\nexport const CompiledMenuProjectionSchema = z\n .object({\n applicationId: ContractIdentifierSchema,\n surface: ContractIdentifierSchema,\n menuId: ContractIdentifierSchema,\n nodes: z.array(CompiledMenuNodeSchema).max(MENU_MAX_NODES),\n contributions: z.array(MenuContributionSchema).max(MENU_MAX_NODES),\n })\n .strict();\n\nexport const MenuNavigationTargetSchema = z\n .object({\n page: MenuPageRefSchema,\n activationId: ContractIdentifierSchema,\n input: MenuRuntimeInputBindingSchema.optional(),\n })\n .strict();\n\nexport const MenuRuntimeBundleSchema = z\n .object({\n contract: z.literal('MenuRuntimeBundle'),\n version: z.literal(MENU_CONTRACT_VERSION),\n applicationId: ContractIdentifierSchema,\n sourceVersion: ContractIdentifierSchema,\n contentHash: Sha256Schema,\n menus: z.array(CompiledMenuProjectionSchema).max(MENU_MAX_DEFINITIONS),\n navigationTargets: z.array(MenuNavigationTargetSchema),\n sourceMap: z.record(z.string(), ContractIdentifierSchema).default({}),\n })\n .strict();\n\nexport const MenuContributionResultSchema = z\n .object({\n contract: z.literal('MenuContributionResult'),\n applicationId: ContractIdentifierSchema,\n surface: ContractIdentifierSchema,\n menuId: ContractIdentifierSchema,\n providerId: ContractIdentifierSchema,\n nodes: z.array(CompiledMenuNodeSchema).max(MENU_MAX_NODES),\n })\n .strict();\n\nexport type MenuPageRef = z.infer<typeof MenuPageRefSchema>;\nexport type MenuSourceInputBinding = z.infer<typeof MenuSourceInputBindingSchema>;\nexport type MenuRuntimeInputBinding = z.infer<typeof MenuRuntimeInputBindingSchema>;\nexport type MenuNavigateBehavior = z.infer<typeof MenuNavigateBehaviorSchema>;\nexport type MenuActionBehavior = z.infer<typeof MenuActionBehaviorSchema>;\nexport type MenuBehavior = z.infer<typeof MenuBehaviorSchema>;\nexport type MenuGroupNode = z.infer<typeof MenuGroupNodeSchema>;\nexport type MenuDividerNode = z.infer<typeof MenuDividerNodeSchema>;\nexport type MenuItemNode = z.infer<typeof MenuItemNodeSchema>;\nexport type MenuNode = z.infer<typeof MenuNodeSchema>;\nexport type MenuContribution = z.infer<typeof MenuContributionSchema>;\nexport type MenuDefinition = z.infer<typeof MenuDefinitionSchema>;\nexport type MenuDefinitionSet = z.infer<typeof MenuDefinitionSetSchema>;\nexport type MenuAccessRequirement = z.infer<typeof MenuAccessRequirementSchema>;\nexport type MenuPageRegistration = z.infer<typeof MenuPageRegistrationSchema>;\nexport type MenuActionRegistration = z.infer<typeof MenuActionRegistrationSchema>;\nexport type MenuContributionProviderRegistration = z.infer<typeof MenuContributionProviderRegistrationSchema>;\nexport type CompiledMenuBehavior = z.infer<typeof CompiledMenuBehaviorSchema>;\nexport type CompiledMenuItemNode = z.infer<typeof CompiledMenuItemNodeSchema>;\nexport type CompiledMenuNode = z.infer<typeof CompiledMenuNodeSchema>;\nexport type CompiledMenuProjection = z.infer<typeof CompiledMenuProjectionSchema>;\nexport type MenuNavigationTarget = z.infer<typeof MenuNavigationTargetSchema>;\nexport type MenuRuntimeBundle = z.infer<typeof MenuRuntimeBundleSchema>;\nexport type MenuContributionResult = z.infer<typeof MenuContributionResultSchema>;\n","import { z } from 'zod';\nimport {\n ContractIdentifierSchema,\n EntityRefSchema,\n JsonObjectSchema,\n LocalizedTextSchema,\n} from './common';\nimport { LegacyRoutePolicySchema } from './legacy-route';\n\nexport const PageTypeSchema = z.enum([\n 'page',\n 'workspace',\n 'view',\n 'record',\n 'action',\n 'overlay',\n 'agent',\n 'process',\n 'log',\n 'chat',\n 'preview',\n 'api',\n 'enhanced',\n 'agent-chat',\n 'agent-config',\n 'agent-log',\n 'design-board',\n 'global-design-board',\n 'iframe',\n]);\n\nexport const PageVisibilitySchema = z\n .object({\n authenticated: z.boolean().default(true),\n permissionAllOf: z.array(ContractIdentifierSchema).default([]),\n permissionAnyOf: z.array(ContractIdentifierSchema).default([]),\n featureFlags: z.array(ContractIdentifierSchema).default([]),\n productContexts: z.array(z.enum(['studio', 'kernel'])).min(1),\n })\n .strict();\n\nexport const PageRoutePathSchema = z\n .string()\n .trim()\n .regex(/^\\/(?!\\/)/, 'Expected an application-relative route path.');\n\nconst requireCapabilityReference = (\n reference: z.infer<typeof EntityRefSchema>,\n path: (string | number)[],\n context: z.RefinementCtx,\n) => {\n if (reference.kind !== 'capability') {\n context.addIssue({\n code: 'custom',\n path: [...path, 'kind'],\n message: 'Page capability references must use kind capability.',\n });\n }\n if (reference.version === undefined) {\n context.addIssue({\n code: 'custom',\n path: [...path, 'version'],\n message: 'Page capability references must pin an active capability version.',\n });\n }\n if (reference.ownerRepo === undefined) {\n context.addIssue({\n code: 'custom',\n path: [...path, 'ownerRepo'],\n message: 'Page capability references must declare their owner repository.',\n });\n }\n};\n\nexport const PageDefinitionSchema = z\n .object({\n contract: z.literal('PageDefinition'),\n pageId: ContractIdentifierSchema,\n ownerRepo: ContractIdentifierSchema,\n title: LocalizedTextSchema,\n pageType: PageTypeSchema,\n ownership: z.object({\n teamId: ContractIdentifierSchema.optional(),\n creatorRef: EntityRefSchema.optional(),\n studioId: ContractIdentifierSchema.optional(),\n builtIn: z.boolean(),\n }).strict(),\n record: z.object({\n createdTimestamp: z.number().int().nonnegative().optional(),\n updatedTimestamp: z.number().int().nonnegative().optional(),\n deleted: z.boolean().default(false),\n }).strict(),\n surface: z.enum(['page', 'workspace', 'view', 'record', 'action', 'overlay', 'agent']),\n routeId: ContractIdentifierSchema,\n routePath: PageRoutePathSchema,\n legacyRoutePolicy: LegacyRoutePolicySchema.optional(),\n rendererKey: ContractIdentifierSchema,\n capabilityRef: EntityRefSchema,\n capabilityRefs: z.array(EntityRefSchema).default([]),\n workflowRef: EntityRefSchema.optional(),\n binding: z\n .object({\n sourceRef: ContractIdentifierSchema.optional(),\n ontologyId: ContractIdentifierSchema.optional(),\n projectionRef: ContractIdentifierSchema.optional(),\n stateRef: ContractIdentifierSchema.optional(),\n })\n .strict(),\n access: z.object({\n actions: z.array(z.enum(['read', 'write', 'execute', 'manage-permissions'])).default([]),\n }).strict(),\n input: z\n .object({\n schemaRef: ContractIdentifierSchema,\n })\n .strict()\n .optional(),\n rendererConfig: z.object({\n schemaRef: ContractIdentifierSchema,\n value: JsonObjectSchema,\n }).strict(),\n navigation: z\n .object({\n label: LocalizedTextSchema,\n iconRef: ContractIdentifierSchema.optional(),\n parentPageId: ContractIdentifierSchema.optional(),\n order: z.number().int().optional(),\n hidden: z.boolean().default(false),\n pinned: z.boolean().default(false),\n })\n .strict(),\n visibility: PageVisibilitySchema,\n })\n .strict()\n .superRefine((page, context) => {\n const capabilities = [page.capabilityRef, ...page.capabilityRefs];\n const capabilityIdentities = new Set<string>();\n capabilities.forEach((reference, index) => {\n const path = index === 0 ? ['capabilityRef'] : ['capabilityRefs', index - 1];\n requireCapabilityReference(reference, path, context);\n const identity = `${reference.id}@${String(reference.version)}:${reference.ownerRepo ?? ''}`;\n if (capabilityIdentities.has(identity)) {\n context.addIssue({\n code: 'custom',\n path,\n message: `Duplicate page capability reference: ${identity}`,\n });\n }\n capabilityIdentities.add(identity);\n });\n if (page.workflowRef && page.workflowRef.kind !== 'workflow') context.addIssue({ code: 'custom', path: ['workflowRef', 'kind'], message: 'workflowRef must reference a workflow.' });\n });\n\nexport const PageRuntimeDescriptorSchema = z\n .object({\n contract: z.literal('PageRuntimeDescriptor'),\n page: PageDefinitionSchema,\n nodeId: ContractIdentifierSchema,\n parentNodeId: ContractIdentifierSchema.optional(),\n slot: ContractIdentifierSchema.optional(),\n semanticRef: ContractIdentifierSchema.optional(),\n dataContextRef: ContractIdentifierSchema.optional(),\n providerRef: EntityRefSchema.optional(),\n surface: z\n .object({\n frameOwner: ContractIdentifierSchema,\n tone: ContractIdentifierSchema.optional(),\n density: z.enum(['compact', 'default', 'comfortable']).default('default'),\n })\n .strict(),\n scroll: z\n .object({\n owner: z.enum(['page', 'surface', 'provider']),\n axis: z.enum(['x', 'y', 'both', 'none']),\n restoreKey: ContractIdentifierSchema.optional(),\n virtualized: z.boolean().default(false),\n })\n .strict(),\n activation: z.enum(['navigate', 'select', 'drawer', 'modal', 'fullscreen']),\n lifecycle: z\n .object({\n mountPolicy: z.enum(['always', 'when-visible', 'when-active']),\n queryPolicy: z.enum(['always', 'when-visible', 'when-active', 'manual']),\n deepLink: z.boolean(),\n focusReturn: z.boolean(),\n })\n .strict(),\n })\n .strict();\n\nexport const PageRouteProjectionSchema = z.object({\n pageId: ContractIdentifierSchema,\n routeId: ContractIdentifierSchema,\n path: PageRoutePathSchema,\n}).strict();\n\nexport const PageNavigationProjectionSchema = z.object({\n pageId: ContractIdentifierSchema,\n routeId: ContractIdentifierSchema,\n path: PageRoutePathSchema,\n label: LocalizedTextSchema,\n iconRef: ContractIdentifierSchema.optional(),\n parentPageId: ContractIdentifierSchema.optional(),\n order: z.number().int().optional(),\n pinned: z.boolean(),\n}).strict();\n\nexport const PageGuardProjectionSchema = z.object({\n pageId: ContractIdentifierSchema,\n authenticated: z.boolean(),\n permissionAllOf: z.array(ContractIdentifierSchema),\n permissionAnyOf: z.array(ContractIdentifierSchema),\n featureFlags: z.array(ContractIdentifierSchema),\n actions: z.array(z.enum(['read', 'write', 'execute', 'manage-permissions'])),\n}).strict();\n\nexport const PageRendererProjectionSchema = z\n .object({\n pageId: ContractIdentifierSchema,\n surface: z.enum(['page', 'workspace', 'view', 'record', 'action', 'overlay', 'agent']),\n rendererKey: ContractIdentifierSchema,\n capabilityRef: EntityRefSchema,\n capabilityRefs: z.array(EntityRefSchema),\n providerRef: EntityRefSchema,\n binding: PageDefinitionSchema.shape.binding,\n rendererConfig: PageDefinitionSchema.shape.rendererConfig,\n workflowRef: EntityRefSchema.optional(),\n })\n .strict()\n .superRefine((renderer, context) => {\n requireCapabilityReference(renderer.capabilityRef, ['capabilityRef'], context);\n renderer.capabilityRefs.forEach((reference, index) => {\n requireCapabilityReference(reference, ['capabilityRefs', index], context);\n });\n if (renderer.providerRef.kind !== 'view-provider') {\n context.addIssue({\n code: 'custom',\n path: ['providerRef', 'kind'],\n message: 'Renderer providerRef must use kind view-provider.',\n });\n }\n if (renderer.providerRef.version === undefined) {\n context.addIssue({\n code: 'custom',\n path: ['providerRef', 'version'],\n message: 'Renderer providerRef must pin a provider version.',\n });\n }\n if (renderer.providerRef.ownerRepo === undefined) {\n context.addIssue({\n code: 'custom',\n path: ['providerRef', 'ownerRepo'],\n message: 'Renderer providerRef must declare its owner repository.',\n });\n }\n });\n\nconst duplicateProjectionIdentity = <T>(\n values: readonly T[],\n identity: (value: T) => string,\n): string | undefined => {\n const seen = new Set<string>();\n for (const value of values) {\n const key = identity(value);\n if (seen.has(key)) return key;\n seen.add(key);\n }\n return undefined;\n};\n\nexport const PageRuntimeProjectionSchema = z\n .object({\n contract: z.literal('PageRuntimeProjection'),\n product: z.enum(['studio', 'kernel']),\n routes: z.array(PageRouteProjectionSchema),\n navigation: z.array(PageNavigationProjectionSchema),\n guards: z.array(PageGuardProjectionSchema),\n renderers: z.array(PageRendererProjectionSchema),\n })\n .strict()\n .superRefine((projection, context) => {\n const tables = [\n ['routes', projection.routes.map((value) => value.pageId)],\n ['navigation', projection.navigation.map((value) => value.pageId)],\n ['guards', projection.guards.map((value) => value.pageId)],\n ['renderers', projection.renderers.map((value) => value.pageId)],\n ] as const;\n for (const [table, values] of tables) {\n const duplicate = duplicateProjectionIdentity(values, (value) => value);\n if (duplicate) {\n context.addIssue({ code: 'custom', path: [table], message: `Duplicate ${table} pageId: ${duplicate}` });\n }\n }\n\n for (const identity of [\n ['routeId', duplicateProjectionIdentity(projection.routes, (route) => route.routeId)],\n ['path', duplicateProjectionIdentity(projection.routes, (route) => route.path)],\n ] as const) {\n if (identity[1]) {\n context.addIssue({ code: 'custom', path: ['routes'], message: `Duplicate route ${identity[0]}: ${identity[1]}` });\n }\n }\n\n const routesByPageId = new Map(projection.routes.map((route) => [route.pageId, route]));\n const guardPageIds = new Set(projection.guards.map((guard) => guard.pageId));\n const rendererPageIds = new Set(projection.renderers.map((renderer) => renderer.pageId));\n for (const route of projection.routes) {\n if (!guardPageIds.has(route.pageId)) {\n context.addIssue({ code: 'custom', path: ['guards'], message: `Missing guard projection for ${route.pageId}.` });\n }\n if (!rendererPageIds.has(route.pageId)) {\n context.addIssue({ code: 'custom', path: ['renderers'], message: `Missing renderer projection for ${route.pageId}.` });\n }\n }\n for (const guard of projection.guards) {\n if (!routesByPageId.has(guard.pageId)) {\n context.addIssue({ code: 'custom', path: ['guards'], message: `Guard references unknown page ${guard.pageId}.` });\n }\n }\n for (const renderer of projection.renderers) {\n if (!routesByPageId.has(renderer.pageId)) {\n context.addIssue({ code: 'custom', path: ['renderers'], message: `Renderer references unknown page ${renderer.pageId}.` });\n }\n }\n for (const navigation of projection.navigation) {\n const route = routesByPageId.get(navigation.pageId);\n if (!route || route.routeId !== navigation.routeId || route.path !== navigation.path) {\n context.addIssue({\n code: 'custom',\n path: ['navigation'],\n message: `Navigation route projection for ${navigation.pageId} does not match its route table entry.`,\n });\n }\n }\n });\n\nexport type PageVisibility = z.infer<typeof PageVisibilitySchema>;\nexport type PageType = z.infer<typeof PageTypeSchema>;\nexport type PageDefinition = z.infer<typeof PageDefinitionSchema>;\nexport type PageRuntimeDescriptor = z.infer<typeof PageRuntimeDescriptorSchema>;\nexport type PageRouteProjection = z.infer<typeof PageRouteProjectionSchema>;\nexport type PageNavigationProjection = z.infer<typeof PageNavigationProjectionSchema>;\nexport type PageGuardProjection = z.infer<typeof PageGuardProjectionSchema>;\nexport type PageRendererProjection = z.infer<typeof PageRendererProjectionSchema>;\nexport type PageRuntimeProjection = z.infer<typeof PageRuntimeProjectionSchema>;\n","import { z } from 'zod';\n\nexport const LegacyRoutePolicySchema = z\n .object({\n contract: z.literal('LegacyRoutePolicy'),\n schemaVersion: z.literal(1),\n fallback: z.enum(['allowed', 'forbidden']),\n restoration: z.enum(['allowed', 'forbidden']),\n })\n .strict();\n\nexport type LegacyRoutePolicy = z.infer<typeof LegacyRoutePolicySchema>;\n","import { z } from \"zod\";\nimport {\n ContractIdentifierSchema,\n ContractVersionSchema,\n EntityRefSchema,\n IsoDateTimeSchema,\n JsonObjectSchema,\n JsonValueSchema,\n LocaleIdentifierSchema,\n SensitiveResultPathSchema,\n SensitiveResultPathsSchema,\n Sha256Schema,\n} from \"./common\";\nimport { OntologyDefinitionSchema } from \"./data\";\nimport { LegacyRoutePolicySchema } from \"./legacy-route\";\nimport { FilePurposeSchema } from \"./file\";\nimport {\n RenderActivationSchema,\n RenderLayoutSchema,\n RenderLifecycleSchema,\n RenderNodeKindSchema,\n RenderNodeStateSchema,\n RenderResponsiveRuleSchema,\n RenderScrollSchema,\n RenderStyleSchema,\n RenderSurfaceSchema,\n RenderTreeSchema,\n} from \"./render\";\nimport {\n PageExpressionSchema,\n PageValuePathSchema,\n PagePropertyBindingSchema,\n visitPageExpression,\n collectPageExpressionReads,\n collectExternalPageExpressionReads,\n} from \"./page-expression\";\nimport { analyzePageBindingDependencies } from \"./page-binding-dependencies\";\nimport { DeclarativeDiagnosticSchema } from \"./declarative-diagnostic\";\nexport { analyzePageBindingDependencies } from \"./page-binding-dependencies\";\nexport const DECLARATIVE_CONTROL_SCHEMA_VERSION = 1;\nconst uniqueArray = <T>(\n values: readonly T[],\n identity: (value: T) => string,\n): string | undefined => {\n const seen = new Set<string>();\n for (const value of values) {\n const key = identity(value);\n if (seen.has(key)) return key;\n seen.add(key);\n }\n return undefined;\n};\nconst exactRevisionRef = (\n left: z.infer<typeof RevisionRefSchema>,\n right: z.infer<typeof RevisionRefSchema>,\n): boolean =>\n stableRefIdentity(left) === stableRefIdentity(right) &&\n left.revision === right.revision &&\n left.schemaVersion === right.schemaVersion &&\n left.contentHash === right.contentHash;\nexport const I18nTextSchema = z\n .object({\n defaultLocale: LocaleIdentifierSchema,\n values: z.record(LocaleIdentifierSchema, z.string().trim().min(1)),\n })\n .strict()\n .superRefine((value, context) => {\n if (\n !Object.prototype.hasOwnProperty.call(value.values, value.defaultLocale)\n ) {\n context.addIssue({\n code: \"custom\",\n path: [\"values\", value.defaultLocale],\n message: \"I18nText values must contain the default locale.\",\n });\n }\n });\nexport const ScopedIdentityRefSchema = z\n .object({\n kind: ContractIdentifierSchema,\n id: ContractIdentifierSchema,\n ownerRepo: ContractIdentifierSchema,\n })\n .strict();\nexport const TenantScopeSchema = z\n .object({\n tenantRef: ScopedIdentityRefSchema,\n dataSpaceRef: ScopedIdentityRefSchema,\n teamRef: ScopedIdentityRefSchema.optional(),\n })\n .strict()\n .superRefine((value, context) => {\n const expectedKinds = [\n [\"tenantRef\", value.tenantRef, \"tenant\"],\n [\"dataSpaceRef\", value.dataSpaceRef, \"data-space\"],\n [\"teamRef\", value.teamRef, \"team\"],\n ] as const;\n expectedKinds.forEach(([field, reference, expectedKind]) => {\n if (reference && reference.kind !== expectedKind) {\n context.addIssue({\n code: \"custom\",\n path: [field, \"kind\"],\n message: `${field} must reference ${expectedKind}.`,\n });\n }\n });\n });\nexport const ReferenceVisibilitySchema = z.enum([\"tenant\", \"global\", \"public\"]);\nconst StableRefShape = {\n kind: ContractIdentifierSchema,\n id: ContractIdentifierSchema,\n ownerRepo: ContractIdentifierSchema,\n visibility: ReferenceVisibilitySchema,\n tenantScope: TenantScopeSchema.optional(),\n};\nconst validateReferenceScope = (\n value: {\n visibility: z.infer<typeof ReferenceVisibilitySchema>;\n tenantScope?: z.infer<typeof TenantScopeSchema>;\n },\n context: z.RefinementCtx,\n) => {\n if (value.visibility === \"tenant\" && !value.tenantScope) {\n context.addIssue({\n code: \"custom\",\n path: [\"tenantScope\"],\n message: \"Tenant references require an explicit tenant scope.\",\n });\n }\n if (value.visibility !== \"tenant\" && value.tenantScope) {\n context.addIssue({\n code: \"custom\",\n path: [\"tenantScope\"],\n message: \"Global and public references cannot carry a tenant scope.\",\n });\n }\n};\nexport const StableRefSchema = z\n .object(StableRefShape)\n .strict()\n .superRefine(validateReferenceScope);\nexport const RevisionRefSchema = z\n .object({\n ...StableRefShape,\n revision: z.number().int().positive(),\n schemaVersion: ContractVersionSchema,\n contentHash: Sha256Schema,\n })\n .strict()\n .superRefine(validateReferenceScope);\nconst scopedIdentityKey = (\n reference: z.infer<typeof ScopedIdentityRefSchema>,\n): string => `${reference.kind}:${reference.id}:${reference.ownerRepo}`;\nconst tenantScopeKey = (scope: z.infer<typeof TenantScopeSchema>): string =>\n `${scopedIdentityKey(scope.tenantRef)}:${scopedIdentityKey(scope.dataSpaceRef)}:${scope.teamRef ? scopedIdentityKey(scope.teamRef) : \"\"}`;\nconst stableRefIdentity = (\n reference: z.infer<typeof StableRefSchema>,\n): string =>\n `${reference.visibility}:${reference.tenantScope ? tenantScopeKey(reference.tenantScope) : \"\"}:${reference.kind}:${reference.id}:${reference.ownerRepo}`;\nconst validateTenantCompatibleReference = (\n reference: z.infer<typeof StableRefSchema>,\n tenantScope: z.infer<typeof TenantScopeSchema>,\n path: (string | number)[],\n context: z.RefinementCtx,\n) => {\n if (\n reference.visibility === \"tenant\" &&\n reference.tenantScope &&\n tenantScopeKey(reference.tenantScope) !== tenantScopeKey(tenantScope)\n ) {\n context.addIssue({\n code: \"custom\",\n path: [...path, \"tenantScope\"],\n message: \"Reference belongs to another tenant scope.\",\n });\n }\n};\nexport const StableRefAliasSchema = z\n .object({\n aliasRef: StableRefSchema,\n canonicalRef: StableRefSchema,\n validFrom: IsoDateTimeSchema,\n validUntil: IsoDateTimeSchema.nullable(),\n evidenceRef: RevisionRefSchema,\n })\n .strict()\n .superRefine((value, context) => {\n if (value.aliasRef.kind !== value.canonicalRef.kind) {\n context.addIssue({\n code: \"custom\",\n path: [\"canonicalRef\", \"kind\"],\n message: \"Alias and canonical references must have the same kind.\",\n });\n }\n if (value.validUntil && value.validUntil <= value.validFrom) {\n context.addIssue({\n code: \"custom\",\n path: [\"validUntil\"],\n message: \"Alias validUntil must be later than validFrom.\",\n });\n }\n });\nexport const StableRefAliasMapSchema = z\n .object({\n contract: z.literal(\"StableRefAliasMap\"),\n schemaVersion: z.literal(DECLARATIVE_CONTROL_SCHEMA_VERSION),\n tenantScope: TenantScopeSchema,\n aliases: z.array(StableRefAliasSchema),\n contentHash: Sha256Schema,\n })\n .strict()\n .superRefine((value, context) => {\n const duplicate = uniqueArray(value.aliases, (entry) =>\n stableRefIdentity(entry.aliasRef),\n );\n if (duplicate)\n context.addIssue({\n code: \"custom\",\n path: [\"aliases\"],\n message: `Duplicate alias reference: ${duplicate}`,\n });\n });\nexport const DeclarativeLifecycleSchema = z.enum([\n \"active\",\n \"deprecated\",\n \"retired\",\n]);\nexport const ProductSurfaceSchema = z.enum([\"studio\", \"kernel\"]);\nexport const DeclarativeShellHeaderChromeSchema = z.discriminatedUnion(\n \"enabled\",\n [\n z.object({ enabled: z.literal(false) }).strict(),\n z\n .object({\n enabled: z.literal(true),\n navigationPlacement: z.enum([\n \"studio.headbar.primary\",\n \"kernel.primary\",\n ]),\n })\n .strict(),\n ],\n);\nexport const DeclarativeShellSurfaceChromeSchema = z\n .object({\n surface: ProductSurfaceSchema,\n header: DeclarativeShellHeaderChromeSchema,\n })\n .strict()\n .superRefine((value, context) => {\n if (!value.header.enabled) return;\n const expectedPlacement =\n value.surface === \"studio\" ? \"studio.headbar.primary\" : \"kernel.primary\";\n if (value.header.navigationPlacement !== expectedPlacement) {\n context.addIssue({\n code: \"custom\",\n path: [\"header\", \"navigationPlacement\"],\n message: `The ${value.surface} shell header must use its governed primary Navigation placement.`,\n });\n }\n });\nexport const DeclarativeRuntimeShellDescriptorSchema = z\n .object({\n shellRevisionRef: RevisionRefSchema,\n header: DeclarativeShellHeaderChromeSchema,\n })\n .strict()\n .superRefine((value, context) => {\n if (value.shellRevisionRef.kind !== \"shell\") {\n context.addIssue({\n code: \"custom\",\n path: [\"shellRevisionRef\", \"kind\"],\n message: \"Runtime shell descriptors require an exact Shell revision.\",\n });\n }\n });\nconst GroupRefSchema = StableRefSchema.superRefine((value, context) => {\n if (value.kind !== \"group\")\n context.addIssue({\n code: \"custom\",\n path: [\"kind\"],\n message: \"Access group references must use kind group.\",\n });\n});\nconst AccessConditionRefSchema = RevisionRefSchema.superRefine(\n (value, context) => {\n if (value.kind !== \"access-condition\") {\n context.addIssue({\n code: \"custom\",\n path: [\"kind\"],\n message: \"Access condition references must use kind access-condition.\",\n });\n }\n },\n);\nexport const AccessPolicySchema = z\n .object({\n authenticated: z.boolean(),\n groupAllOf: z.array(GroupRefSchema),\n groupAnyOf: z.array(GroupRefSchema),\n permissionAllOf: z.array(ContractIdentifierSchema),\n permissionAnyOf: z.array(ContractIdentifierSchema),\n conditionAllOf: z.array(AccessConditionRefSchema),\n })\n .strict()\n .superRefine((value, context) => {\n const checks: Array<\n [string, readonly unknown[], (candidate: unknown) => string]\n > = [\n [\n \"groupAllOf\",\n value.groupAllOf,\n (candidate) =>\n stableRefIdentity(candidate as z.infer<typeof StableRefSchema>),\n ],\n [\n \"groupAnyOf\",\n value.groupAnyOf,\n (candidate) =>\n stableRefIdentity(candidate as z.infer<typeof StableRefSchema>),\n ],\n [\"permissionAllOf\", value.permissionAllOf, String],\n [\"permissionAnyOf\", value.permissionAnyOf, String],\n [\n \"conditionAllOf\",\n value.conditionAllOf,\n (candidate) =>\n `${stableRefIdentity(candidate as z.infer<typeof StableRefSchema>)}@${(candidate as z.infer<typeof RevisionRefSchema>).revision}`,\n ],\n ];\n checks.forEach(([field, values, identity]) => {\n if (uniqueArray(values, identity))\n context.addIssue({\n code: \"custom\",\n path: [field],\n message: `${field} entries must be unique.`,\n });\n });\n });\n/**\n * A finite set of permission conjunctions. An identity is authorized when it\n * satisfies every permission in at least one alternative. This is deliberately\n * separate from AccessPolicy: it models a versioned rollout compatibility\n * bridge such as `new-permission OR (legacy-a AND legacy-b)` without turning\n * individual legacy permissions into broad aliases.\n */\nexport const PermissionAlternativePolicySchema = z\n .object({\n contract: z.literal(\"PermissionAlternativePolicy\"),\n schemaVersion: z.literal(DECLARATIVE_CONTROL_SCHEMA_VERSION),\n policyId: ContractIdentifierSchema,\n alternatives: z.array(z.array(ContractIdentifierSchema).min(1)).min(1),\n retirementGate: z\n .object({\n capability: ContractIdentifierSchema,\n notBefore: IsoDateTimeSchema.optional(),\n })\n .strict()\n .optional(),\n })\n .strict()\n .superRefine((value, context) => {\n const canonical = value.alternatives.map((set) => [...new Set(set)].sort());\n canonical.forEach((set, index) => {\n if (set.length !== value.alternatives[index].length) {\n context.addIssue({\n code: \"custom\",\n path: [\"alternatives\", index],\n message:\n \"A permission alternative cannot contain duplicate permissions.\",\n });\n }\n });\n const identities = canonical.map((set) => set.join(\"\\0\"));\n if (new Set(identities).size !== identities.length) {\n context.addIssue({\n code: \"custom\",\n path: [\"alternatives\"],\n message: \"Permission alternatives must be unique.\",\n });\n }\n });\nexport const ManagementAccessSchema = z\n .object({\n edit: AccessPolicySchema,\n preview: AccessPolicySchema,\n publish: AccessPolicySchema,\n deactivate: AccessPolicySchema,\n rollback: AccessPolicySchema,\n retire: AccessPolicySchema,\n })\n .strict();\nexport const RoutePathTemplateSchema = z\n .string()\n .trim()\n .regex(/^\\/(?!\\/)/, \"Expected an application-relative path.\")\n .superRefine((value, context) => {\n if (value.includes(\"?\") || value.includes(\"#\") || value.includes(\"\\\\\")) {\n context.addIssue({\n code: \"custom\",\n message:\n \"Route paths cannot contain query strings, fragments, or backslashes.\",\n });\n }\n if (\n value.split(\"/\").some((segment) => segment === \".\" || segment === \"..\")\n ) {\n context.addIssue({\n code: \"custom\",\n message: \"Route paths cannot contain traversal segments.\",\n });\n }\n if (/^[a-z][a-z0-9+.-]*:/i.test(value) || value.includes(\"://\")) {\n context.addIssue({\n code: \"custom\",\n message: \"Route paths cannot contain a scheme or host.\",\n });\n }\n });\nexport const RouteSpaceParameterSchema = z\n .object({\n name: ContractIdentifierSchema,\n type: z.enum([\"identifier\", \"integer\", \"slug\", \"uuid\"]),\n required: z.boolean(),\n })\n .strict();\nexport const RouteSpaceSchema = z\n .object({\n contract: z.literal(\"RouteSpace\"),\n schemaVersion: z.literal(DECLARATIVE_CONTROL_SCHEMA_VERSION),\n routeSpaceId: ContractIdentifierSchema,\n supportedSurface: ProductSurfaceSchema,\n basePath: RoutePathTemplateSchema,\n caseSensitive: z.boolean(),\n trailingSlash: z.enum([\"preserve\", \"remove\", \"require\"]),\n reservedPaths: z.array(RoutePathTemplateSchema),\n parameters: z.array(RouteSpaceParameterSchema),\n })\n .strict()\n .superRefine((value, context) => {\n if (uniqueArray(value.parameters, (parameter) => parameter.name)) {\n context.addIssue({\n code: \"custom\",\n path: [\"parameters\"],\n message: \"RouteSpace parameter names must be unique.\",\n });\n }\n if (uniqueArray(value.reservedPaths, (path) => path)) {\n context.addIssue({\n code: \"custom\",\n path: [\"reservedPaths\"],\n message: \"RouteSpace reserved paths must be unique.\",\n });\n }\n });\nconst RouteClaimBaseSchema = z\n .object({\n kind: z.enum([\"canonical\", \"alias\", \"redirect\"]),\n routeSpaceRevisionRef: RevisionRefSchema,\n pathTemplate: RoutePathTemplateSchema,\n redirectTargetRef: StableRefSchema.optional(),\n })\n .strict()\n .superRefine((value, context) => {\n if (value.routeSpaceRevisionRef.kind !== \"route-space\") {\n context.addIssue({\n code: \"custom\",\n path: [\"routeSpaceRevisionRef\", \"kind\"],\n message: \"Route claims must reference a route-space revision.\",\n });\n }\n if (value.kind === \"redirect\" && !value.redirectTargetRef) {\n context.addIssue({\n code: \"custom\",\n path: [\"redirectTargetRef\"],\n message: \"Redirect claims require a governed target reference.\",\n });\n }\n if (value.kind !== \"redirect\" && value.redirectTargetRef) {\n context.addIssue({\n code: \"custom\",\n path: [\"redirectTargetRef\"],\n message: \"Only redirect claims may declare redirectTargetRef.\",\n });\n }\n });\n/**\n * Read compatibility for schemaVersion 1 Page and Workbench records written\n * before route claims carried their owning product surface. New declarations\n * must use RouteClaimSchema; compilers materialize this legacy form only from\n * the exact pinned RouteSpace surface.\n */\nexport const LegacyRouteClaimSchema = RouteClaimBaseSchema;\nexport const RouteClaimSchema = RouteClaimBaseSchema.safeExtend({\n surface: ProductSurfaceSchema,\n}).strict();\nconst LegacyCompiledRouteMatcherSchema = z\n .object({\n caseSensitive: z.boolean(),\n trailingSlash: z.enum([\"preserve\", \"remove\", \"require\"]),\n parameters: z.array(RouteSpaceParameterSchema),\n })\n .strict();\nexport const CompiledRouteMatcherSchema =\n LegacyCompiledRouteMatcherSchema.safeExtend({\n surface: ProductSurfaceSchema,\n }).strict();\nexport const CompiledRouteClaimSchema = RouteClaimSchema.safeExtend({\n normalizedPath: RoutePathTemplateSchema,\n matcher: CompiledRouteMatcherSchema,\n})\n .strict()\n .superRefine((value, context) => {\n if (value.matcher.surface !== value.surface) {\n context.addIssue({\n code: \"custom\",\n path: [\"matcher\", \"surface\"],\n message: \"A compiled route matcher must match its claim surface.\",\n });\n }\n });\nconst LegacyCompiledRouteClaimSchema = LegacyRouteClaimSchema.safeExtend({\n normalizedPath: RoutePathTemplateSchema,\n matcher: LegacyCompiledRouteMatcherSchema,\n}).strict();\nconst validateReleaseRouteSurface = (\n target: {\n surface: z.infer<typeof ProductSurfaceSchema>;\n routeClaim:\n | z.infer<typeof CompiledRouteClaimSchema>\n | z.infer<typeof LegacyCompiledRouteClaimSchema>;\n },\n context: z.RefinementCtx,\n) => {\n const claimSurface =\n \"surface\" in target.routeClaim ? target.routeClaim.surface : undefined;\n const matcherSurface =\n \"surface\" in target.routeClaim.matcher\n ? target.routeClaim.matcher.surface\n : undefined;\n if (claimSurface === undefined && matcherSurface === undefined) return;\n if (claimSurface === target.surface && matcherSurface === target.surface)\n return;\n context.addIssue({\n code: \"custom\",\n path: [\"target\", \"routeClaim\"],\n message:\n \"A compiled Release route claim must either be fully legacy or bind both claim and matcher to the target surface.\",\n });\n};\nexport const ReleaseOperationSchema = z.enum([\n \"activate\",\n \"deactivate\",\n \"rollback\",\n]);\nexport const ReleaseDependencyRoleSchema = z.enum([\n \"route-space\",\n \"shell\",\n \"page\",\n \"page-release\",\n \"workbench\",\n \"workbench-release\",\n \"navigation\",\n \"navigation-release\",\n \"menu-action\",\n \"application-menu-catalog\",\n \"capability\",\n \"provider\",\n \"ontology-definition\",\n \"projection-spec\",\n \"query-definition\",\n \"view\",\n \"projection\",\n \"action\",\n \"action-program\",\n \"token\",\n \"schema\",\n \"compiler\",\n \"workflow\",\n \"agent\",\n \"built-in-application\",\n \"design\",\n \"layout-policy\",\n \"performance-budget\",\n \"observation-policy\",\n]);\nconst DependencyKindByRole: Readonly<\n Record<z.infer<typeof ReleaseDependencyRoleSchema>, string>\n> = {\n \"route-space\": \"route-space\",\n shell: \"shell\",\n page: \"page\",\n \"page-release\": \"page-release\",\n workbench: \"workbench\",\n \"workbench-release\": \"workbench-release\",\n navigation: \"navigation\",\n \"navigation-release\": \"navigation-release\",\n \"menu-action\": \"menu-action\",\n \"application-menu-catalog\": \"application-menu-catalog\",\n capability: \"capability\",\n provider: \"view-provider\",\n \"ontology-definition\": \"ontology-definition\",\n \"projection-spec\": \"projection-spec\",\n \"query-definition\": \"domain-query-definition\",\n view: \"view\",\n projection: \"projection\",\n action: \"domain-command\",\n \"action-program\": \"action-program\",\n token: \"design-token\",\n schema: \"schema\",\n compiler: \"compiler\",\n workflow: \"workflow\",\n agent: \"agent\",\n \"built-in-application\": \"built-in-application\",\n design: \"design\",\n \"layout-policy\": \"layout-policy\",\n \"performance-budget\": \"performance-budget\",\n \"observation-policy\": \"observation-policy\",\n};\nexport const ReleaseDependencySchema = z\n .object({\n role: ReleaseDependencyRoleSchema,\n revisionRef: RevisionRefSchema,\n })\n .strict()\n .superRefine((value, context) => {\n const expectedKind = DependencyKindByRole[value.role];\n if (value.revisionRef.kind !== expectedKind) {\n context.addIssue({\n code: \"custom\",\n path: [\"revisionRef\", \"kind\"],\n message: `Dependency role ${value.role} requires reference kind ${expectedKind}.`,\n });\n }\n });\nexport const ReleaseValidationSchema = z\n .object({\n result: z.enum([\"pass\", \"fail\"]),\n inputHash: Sha256Schema,\n diagnosticRefs: z.array(RevisionRefSchema),\n })\n .strict();\nexport const ReleaseEvidenceSchema = z\n .object({\n publicationPlanRef: StableRefSchema,\n expectedHeadRevisionRef: RevisionRefSchema.nullable(),\n validation: ReleaseValidationSchema,\n approvalPolicyRevisionRef: RevisionRefSchema,\n approvalDecisionRevisionRef: RevisionRefSchema,\n actorRef: StableRefSchema,\n reason: z.string().trim().min(1).max(4096),\n idempotencyKey: ContractIdentifierSchema,\n occurredAt: IsoDateTimeSchema,\n evidenceRefs: z.array(RevisionRefSchema).min(1),\n })\n .strict()\n .superRefine((value, context) => {\n const expectedKinds: Array<\n [string, z.infer<typeof StableRefSchema>, string]\n > = [\n [\"publicationPlanRef\", value.publicationPlanRef, \"publication-plan\"],\n [\n \"approvalPolicyRevisionRef\",\n value.approvalPolicyRevisionRef,\n \"approval-policy\",\n ],\n [\n \"approvalDecisionRevisionRef\",\n value.approvalDecisionRevisionRef,\n \"approval-decision\",\n ],\n [\"actorRef\", value.actorRef, \"actor\"],\n ];\n expectedKinds.forEach(([field, reference, expectedKind]) => {\n if (reference.kind !== expectedKind) {\n context.addIssue({\n code: \"custom\",\n path: [field, \"kind\"],\n message: `${field} must reference ${expectedKind}.`,\n });\n }\n });\n value.evidenceRefs.forEach((reference, index) => {\n if (reference.kind !== \"evidence\")\n context.addIssue({\n code: \"custom\",\n path: [\"evidenceRefs\", index, \"kind\"],\n message: \"Release evidenceRefs must reference evidence revisions.\",\n });\n });\n });\nexport const PublicationPlanOperationSchema = z\n .object({\n releaseKind: z.enum([\n \"page-release\",\n \"workbench-release\",\n \"navigation-release\",\n ]),\n releaseSlotId: ContractIdentifierSchema,\n releaseRevisionRef: RevisionRefSchema,\n expectedHeadRevisionRef: RevisionRefSchema.nullable(),\n })\n .strict()\n .superRefine((value, context) => {\n if (\n value.releaseRevisionRef.kind !== value.releaseKind ||\n value.releaseRevisionRef.id !== value.releaseSlotId\n ) {\n context.addIssue({\n code: \"custom\",\n path: [\"releaseRevisionRef\"],\n message:\n \"Publication Plan operation must pin the exact release slot revision.\",\n });\n }\n if (\n value.expectedHeadRevisionRef &&\n (value.expectedHeadRevisionRef.kind !== value.releaseKind ||\n value.expectedHeadRevisionRef.id !== value.releaseSlotId)\n ) {\n context.addIssue({\n code: \"custom\",\n path: [\"expectedHeadRevisionRef\"],\n message: \"Expected head must identify the same release slot.\",\n });\n }\n });\nexport const PublicationPlanSchema = z\n .object({\n contract: z.literal(\"PublicationPlan\"),\n schemaVersion: z.literal(DECLARATIVE_CONTROL_SCHEMA_VERSION),\n planId: ContractIdentifierSchema,\n tenantScope: TenantScopeSchema,\n environmentRef: StableRefSchema,\n operations: z.array(PublicationPlanOperationSchema).min(1),\n validation: ReleaseValidationSchema,\n approvalPolicyRevisionRef: RevisionRefSchema,\n approvalDecisionRevisionRef: RevisionRefSchema,\n actorRef: StableRefSchema,\n idempotencyKey: ContractIdentifierSchema,\n evidenceRefs: z.array(RevisionRefSchema).min(1),\n createdAt: IsoDateTimeSchema,\n })\n .strict()\n .superRefine((value, context) => {\n if (value.environmentRef.kind !== \"environment\")\n context.addIssue({\n code: \"custom\",\n path: [\"environmentRef\", \"kind\"],\n message: \"Publication Plan requires an environment reference.\",\n });\n validateTenantCompatibleReference(\n value.environmentRef,\n value.tenantScope,\n [\"environmentRef\"],\n context,\n );\n const governedRefs: Array<\n [string, z.infer<typeof StableRefSchema>, string]\n > = [\n [\n \"approvalPolicyRevisionRef\",\n value.approvalPolicyRevisionRef,\n \"approval-policy\",\n ],\n [\n \"approvalDecisionRevisionRef\",\n value.approvalDecisionRevisionRef,\n \"approval-decision\",\n ],\n [\"actorRef\", value.actorRef, \"actor\"],\n ];\n governedRefs.forEach(([field, reference, expectedKind]) => {\n if (reference.kind !== expectedKind)\n context.addIssue({\n code: \"custom\",\n path: [field, \"kind\"],\n message: `${field} must reference ${expectedKind}.`,\n });\n validateTenantCompatibleReference(\n reference,\n value.tenantScope,\n [field],\n context,\n );\n });\n value.operations.forEach((operation, index) => {\n [operation.releaseRevisionRef, operation.expectedHeadRevisionRef].forEach(\n (reference, referenceIndex) => {\n if (\n reference?.tenantScope &&\n tenantScopeKey(reference.tenantScope) !==\n tenantScopeKey(value.tenantScope)\n ) {\n const field =\n referenceIndex === 0\n ? \"releaseRevisionRef\"\n : \"expectedHeadRevisionRef\";\n context.addIssue({\n code: \"custom\",\n path: [\"operations\", index, field, \"tenantScope\"],\n message:\n \"Publication Plan operation belongs to another tenant scope.\",\n });\n }\n },\n );\n });\n value.evidenceRefs.forEach((reference, index) => {\n if (reference.kind !== \"evidence\")\n context.addIssue({\n code: \"custom\",\n path: [\"evidenceRefs\", index, \"kind\"],\n message:\n \"Publication Plan evidenceRefs must reference evidence revisions.\",\n });\n validateTenantCompatibleReference(\n reference,\n value.tenantScope,\n [\"evidenceRefs\", index],\n context,\n );\n });\n if (\n uniqueArray(\n value.operations,\n (operation) => `${operation.releaseKind}:${operation.releaseSlotId}`,\n )\n ) {\n context.addIssue({\n code: \"custom\",\n path: [\"operations\"],\n message: \"Publication Plan release slots must be unique.\",\n });\n }\n });\nconst IdentitySchema = z\n .object({\n name: I18nTextSchema,\n description: I18nTextSchema.optional(),\n tags: z.array(ContractIdentifierSchema).default([]),\n })\n .strict();\nexport const WorkbenchIdentitySchema = IdentitySchema.extend({\n iconRef: StableRefSchema.optional(),\n}).strict();\nexport const LegacySlotRestorationSchema = z\n .object({\n legacyAdapterRevisionRef: RevisionRefSchema,\n sourceRevisionRef: RevisionRefSchema,\n inspectedSourceContentHash: Sha256Schema,\n })\n .strict()\n .superRefine((value, context) => {\n if (\n value.sourceRevisionRef.contentHash !== value.inspectedSourceContentHash\n ) {\n context.addIssue({\n code: \"custom\",\n path: [\"inspectedSourceContentHash\"],\n message:\n \"Legacy restoration must pin the exact inspected source revision hash.\",\n });\n }\n });\n/**\n * Exact, inspect-produced authority for taking over one predeclared legacy\n * route. It is not a general reserved-route bypass: compiler validation binds\n * it to one canonical claim, one target resource and the exact inspected\n * source/adaptor revisions.\n */\nexport const LegacyRouteTakeoverAuthorizationSchema = z\n .object({\n contract: z.literal(\"LegacyRouteTakeoverAuthorization\"),\n schemaVersion: z.literal(DECLARATIVE_CONTROL_SCHEMA_VERSION),\n routeSpaceRevisionRef: RevisionRefSchema,\n normalizedPath: RoutePathTemplateSchema,\n legacyAdapterRevisionRef: RevisionRefSchema,\n sourceRevisionRef: RevisionRefSchema,\n inspectedSourceContentHash: Sha256Schema,\n targetResourceRef: StableRefSchema,\n workbenchCatalogDefaults: z\n .object({ order: z.number().int(), isDefaultCandidate: z.boolean() })\n .strict()\n .optional(),\n contentHash: Sha256Schema,\n })\n .strict()\n .superRefine((value, context) => {\n if (value.routeSpaceRevisionRef.kind !== \"route-space\") {\n context.addIssue({\n code: \"custom\",\n path: [\"routeSpaceRevisionRef\", \"kind\"],\n message: \"A route takeover must pin a RouteSpace revision.\",\n });\n }\n if (value.legacyAdapterRevisionRef.kind !== \"legacy-route-adapter\") {\n context.addIssue({\n code: \"custom\",\n path: [\"legacyAdapterRevisionRef\", \"kind\"],\n message: \"A route takeover must pin a legacy-route-adapter revision.\",\n });\n }\n if (![\"page\", \"workbench\"].includes(value.targetResourceRef.kind)) {\n context.addIssue({\n code: \"custom\",\n path: [\"targetResourceRef\", \"kind\"],\n message: \"A route takeover target must be a Page or Workbench.\",\n });\n }\n if (\n value.sourceRevisionRef.contentHash !== value.inspectedSourceContentHash\n ) {\n context.addIssue({\n code: \"custom\",\n path: [\"inspectedSourceContentHash\"],\n message:\n \"A route takeover must pin the exact inspected legacy source hash.\",\n });\n }\n if (\n value.targetResourceRef.kind === \"workbench\" &&\n !value.workbenchCatalogDefaults\n ) {\n context.addIssue({\n code: \"custom\",\n path: [\"workbenchCatalogDefaults\"],\n message:\n \"A Workbench takeover must preserve exact legacy catalog order and default semantics.\",\n });\n }\n if (\n value.targetResourceRef.kind === \"page\" &&\n value.workbenchCatalogDefaults\n ) {\n context.addIssue({\n code: \"custom\",\n path: [\"workbenchCatalogDefaults\"],\n message:\n \"Page takeover provenance cannot carry Workbench catalog defaults.\",\n });\n }\n });\n/** Authoring-only route evidence. Runtime compilation deliberately strips the takeover proof. */\nexport const DeclarativeRouteClaimSchema = RouteClaimSchema.safeExtend({\n legacyRouteTakeoverAuthorization:\n LegacyRouteTakeoverAuthorizationSchema.optional(),\n}).strict();\nconst LegacyDeclarativeRouteClaimSchema = LegacyRouteClaimSchema.safeExtend({\n legacyRouteTakeoverAuthorization:\n LegacyRouteTakeoverAuthorizationSchema.optional(),\n}).strict();\nconst validateDeclaredRouteSurfaces = (\n supportedSurfaces: readonly z.infer<typeof ProductSurfaceSchema>[],\n routeClaims: readonly z.infer<\n | typeof LegacyDeclarativeRouteClaimSchema\n | typeof DeclarativeRouteClaimSchema\n >[],\n context: z.RefinementCtx,\n) => {\n if (uniqueArray(supportedSurfaces, (surface) => surface)) {\n context.addIssue({\n code: \"custom\",\n path: [\"supportedSurfaces\"],\n message: \"Supported surfaces must be unique.\",\n });\n }\n const explicitClaims = routeClaims.filter(\n (claim): claim is z.infer<typeof DeclarativeRouteClaimSchema> =>\n \"surface\" in claim,\n );\n if (explicitClaims.length > 0 && explicitClaims.length < routeClaims.length) {\n context.addIssue({\n code: \"custom\",\n path: [\"routeClaims\"],\n message:\n \"Route claims must either all declare surface or all omit it for legacy compatibility.\",\n });\n return;\n }\n routeClaims.forEach((claim, index) => {\n if (\"surface\" in claim && !supportedSurfaces.includes(claim.surface)) {\n context.addIssue({\n code: \"custom\",\n path: [\"routeClaims\", index, \"surface\"],\n message: \"Route claim surface must be declared by supportedSurfaces.\",\n });\n }\n });\n if (explicitClaims.length !== routeClaims.length) return;\n supportedSurfaces.forEach((surface) => {\n const canonicalCount = explicitClaims.filter(\n (claim) => claim.surface === surface && claim.kind === \"canonical\",\n ).length;\n if (canonicalCount !== 1) {\n context.addIssue({\n code: \"custom\",\n path: [\"routeClaims\"],\n message: `Surface ${surface} requires exactly one canonical route claim.`,\n });\n }\n });\n};\nconst ReleaseBaseShape = {\n schemaVersion: z.literal(DECLARATIVE_CONTROL_SCHEMA_VERSION),\n releaseSlotId: ContractIdentifierSchema,\n tenantScope: TenantScopeSchema,\n operation: ReleaseOperationSchema,\n legacyRestoration: LegacySlotRestorationSchema.optional(),\n dependencySnapshot: z.array(ReleaseDependencySchema),\n evidence: ReleaseEvidenceSchema,\n};\nconst validateLegacyRestoration = (\n value: {\n operation: z.infer<typeof ReleaseOperationSchema>;\n legacyRestoration?: z.infer<typeof LegacySlotRestorationSchema>;\n },\n expectedAdapterKind: string,\n context: z.RefinementCtx,\n) => {\n if (value.operation === \"activate\" && value.legacyRestoration) {\n context.addIssue({\n code: \"custom\",\n path: [\"legacyRestoration\"],\n message:\n \"An active declarative Release cannot also restore a legacy adapter.\",\n });\n }\n if (\n value.legacyRestoration?.legacyAdapterRevisionRef.kind !== undefined &&\n value.legacyRestoration.legacyAdapterRevisionRef.kind !==\n expectedAdapterKind\n ) {\n context.addIssue({\n code: \"custom\",\n path: [\"legacyRestoration\", \"legacyAdapterRevisionRef\", \"kind\"],\n message: `Legacy restoration requires adapter kind ${expectedAdapterKind}.`,\n });\n }\n};\nconst validateDependencySnapshot = (\n snapshot: readonly z.infer<typeof ReleaseDependencySchema>[],\n context: z.RefinementCtx,\n) => {\n const duplicate = uniqueArray(\n snapshot,\n (dependency) =>\n `${dependency.role}:${stableRefIdentity(dependency.revisionRef)}@${dependency.revisionRef.revision}`,\n );\n if (duplicate)\n context.addIssue({\n code: \"custom\",\n path: [\"dependencySnapshot\"],\n message: `Duplicate dependency: ${duplicate}`,\n });\n};\nconst validateReleaseGovernanceScope = (\n value: {\n releaseSlotId: string;\n tenantScope: z.infer<typeof TenantScopeSchema>;\n evidence: z.infer<typeof ReleaseEvidenceSchema>;\n legacyRestoration?: z.infer<typeof LegacySlotRestorationSchema>;\n },\n expectedKind: \"page-release\" | \"workbench-release\" | \"navigation-release\",\n context: z.RefinementCtx,\n) => {\n const expectedHead = value.evidence.expectedHeadRevisionRef;\n if (\n expectedHead &&\n (expectedHead.kind !== expectedKind ||\n expectedHead.id !== value.releaseSlotId)\n ) {\n context.addIssue({\n code: \"custom\",\n path: [\"evidence\", \"expectedHeadRevisionRef\"],\n message: \"Expected head must identify the same release slot.\",\n });\n }\n if (\n expectedHead?.tenantScope &&\n tenantScopeKey(expectedHead.tenantScope) !==\n tenantScopeKey(value.tenantScope)\n ) {\n context.addIssue({\n code: \"custom\",\n path: [\"evidence\", \"expectedHeadRevisionRef\", \"tenantScope\"],\n message: \"Expected head belongs to another tenant scope.\",\n });\n }\n const governedEvidenceRefs: ReadonlyArray<\n readonly [readonly (string | number)[], z.infer<typeof StableRefSchema>]\n > = [\n [[\"evidence\", \"publicationPlanRef\"], value.evidence.publicationPlanRef],\n [\n [\"evidence\", \"approvalPolicyRevisionRef\"],\n value.evidence.approvalPolicyRevisionRef,\n ],\n [\n [\"evidence\", \"approvalDecisionRevisionRef\"],\n value.evidence.approvalDecisionRevisionRef,\n ],\n [[\"evidence\", \"actorRef\"], value.evidence.actorRef],\n ...value.evidence.validation.diagnosticRefs.map(\n (reference, index) =>\n [\n [\"evidence\", \"validation\", \"diagnosticRefs\", index],\n reference,\n ] as const,\n ),\n ...value.evidence.evidenceRefs.map(\n (reference, index) =>\n [[\"evidence\", \"evidenceRefs\", index], reference] as const,\n ),\n ...(expectedHead\n ? [[[\"evidence\", \"expectedHeadRevisionRef\"], expectedHead] as const]\n : []),\n ...(value.legacyRestoration\n ? [\n [\n [\"legacyRestoration\", \"legacyAdapterRevisionRef\"],\n value.legacyRestoration.legacyAdapterRevisionRef,\n ] as const,\n [\n [\"legacyRestoration\", \"sourceRevisionRef\"],\n value.legacyRestoration.sourceRevisionRef,\n ] as const,\n ]\n : []),\n ];\n governedEvidenceRefs.forEach(([path, reference]) =>\n validateTenantCompatibleReference(\n reference,\n value.tenantScope,\n [...path],\n context,\n ),\n );\n};\nexport const BindingSourceSchema = z.discriminatedUnion(\"kind\", [\n z\n .object({\n kind: z.literal(\"scope-field\"),\n path: z\n .string()\n .trim()\n .min(1)\n .max(4096)\n .regex(/^[A-Za-z0-9_.-]+$/)\n .refine(\n (path) =>\n path.split(\".\").length <= 16 &&\n path\n .split(\".\")\n .every(\n (part) =>\n part.length > 0 &&\n ![\"__proto__\", \"prototype\", \"constructor\"].includes(part),\n ),\n \"Scope paths require safe own members.\",\n ),\n })\n .strict(),\n z\n .object({\n kind: z.literal(\"binding-field\"),\n bindingId: ContractIdentifierSchema,\n path: z\n .string()\n .trim()\n .regex(/^[A-Za-z0-9_.-]+$/),\n })\n .strict(),\n z\n .object({\n kind: z.literal(\"constant\"),\n value: z.union([z.string(), z.number().finite(), z.boolean(), z.null()]),\n })\n .strict(),\n z\n .object({\n kind: z.literal(\"route-parameter\"),\n name: ContractIdentifierSchema,\n })\n .strict(),\n z\n .object({\n kind: z.literal(\"query-parameter\"),\n name: ContractIdentifierSchema,\n })\n .strict(),\n z\n .object({\n kind: z.literal(\"identity\"),\n name: z.enum([\"tenantId\", \"teamId\", \"userId\"]),\n })\n\n .strict(),\n z\n .object({\n kind: z.literal(\"intent-field\"),\n path: z\n .string()\n .trim()\n .regex(/^[A-Za-z0-9_.-]+$/),\n })\n .strict(),\n z\n .object({\n kind: z.literal(\"page-state\"),\n stateId: ContractIdentifierSchema,\n })\n .strict(),\n]);\nconst ExpressionBindingSourceSchema = z\n .object({ kind: z.literal(\"expression\"), expression: PageExpressionSchema })\n .strict()\n .superRefine((value, context) => {\n if (\n collectPageExpressionReads(value.expression).some(\n (read) => read.root === \"actions\",\n )\n )\n context.addIssue({\n code: \"custom\",\n path: [\"expression\"],\n message:\n \"Action runtime state is presentation-only and cannot influence an input or state transition.\",\n });\n });\nconst FileFieldBindingSourceSchema = z\n .object({\n kind: z.literal(\"file-field\"),\n fileInputId: ContractIdentifierSchema,\n path: z.enum([\"fileName\", \"content\", \"canonicalUri\"]),\n })\n .strict();\nconst ActionFileInputSchema = z\n .object({\n inputId: ContractIdentifierSchema,\n source: z.discriminatedUnion(\"kind\", [\n z\n .object({\n kind: z.literal(\"page-state\"),\n stateId: ContractIdentifierSchema,\n })\n .strict(),\n z\n .object({\n kind: z.literal(\"intent-field\"),\n path: z\n .string()\n .trim()\n .regex(/^[A-Za-z0-9_.-]+$/),\n })\n .strict(),\n ]),\n maxBytes: z.number().int().min(1).max(5368709120),\n upload: z.object({ purpose: FilePurposeSchema }).strict().optional(),\n accept: z.string().min(1).max(256).optional(),\n })\n .strict()\n .superRefine((value, context) => {\n if (!value.upload && value.maxBytes > 1048576)\n context.addIssue({\n code: \"custom\",\n path: [\"maxBytes\"],\n message: \"Inline text files are limited to one MiB.\",\n });\n });\nconst ActionInputBindingSourceSchema = z.discriminatedUnion(\"kind\", [\n ...BindingSourceSchema.options,\n ExpressionBindingSourceSchema,\n FileFieldBindingSourceSchema,\n]);\nconst InteractionBindingSourceSchema = z.discriminatedUnion(\"kind\", [\n ExpressionBindingSourceSchema,\n z\n .object({\n kind: z.literal(\"constant\"),\n value: z.union([z.string(), z.number().finite(), z.boolean(), z.null()]),\n })\n .strict(),\n z\n .object({\n kind: z.literal(\"intent-field\"),\n path: z\n .string()\n .trim()\n .regex(/^[A-Za-z0-9_.-]+$/),\n })\n .strict(),\n z\n .object({\n kind: z.literal(\"result-field\"),\n path: z\n .string()\n .trim()\n .regex(/^[A-Za-z0-9_.-]+$/),\n })\n .strict(),\n z\n .object({\n kind: z.literal(\"page-state\"),\n stateId: ContractIdentifierSchema,\n })\n .strict(),\n]);\nconst PageStateComparableLiteralSchema = z.union([\n z.string(),\n z.number().finite(),\n z.boolean(),\n z.null(),\n]);\nexport const PageStateConditionSchema = z.discriminatedUnion(\"predicate\", [\n z\n .object({\n stateId: ContractIdentifierSchema,\n predicate: z.literal(\"equals\"),\n value: PageStateComparableLiteralSchema,\n })\n .strict(),\n z\n .object({\n stateId: ContractIdentifierSchema,\n predicate: z.literal(\"not-equals\"),\n value: PageStateComparableLiteralSchema,\n })\n .strict(),\n z\n .object({\n stateId: ContractIdentifierSchema,\n predicate: z.literal(\"truthy\"),\n })\n .strict(),\n]);\nexport type PageStateCondition = z.infer<typeof PageStateConditionSchema>;\nexport type PageStateActivation = {\n operator: \"all\" | \"any\";\n conditions: Array<PageStateCondition | PageStateActivation>;\n};\n/**\n * A recursive boolean expression over governed Page state. Keeping leaf\n * conditions inside the original `conditions` array preserves the v1 flat\n * declaration while allowing groups to be nested without a parallel DSL.\n */\nexport const PageStateActivationSchema: z.ZodType<PageStateActivation> = z.lazy(\n () =>\n z\n .object({\n operator: z.enum([\"all\", \"any\"]),\n conditions: z\n .array(z.union([PageStateConditionSchema, PageStateActivationSchema]))\n .min(1),\n })\n .strict(),\n);\nconst forEachPageStateCondition = (\n activation: PageStateActivation,\n visit: (condition: PageStateCondition, path: Array<string | number>) => void,\n path: Array<string | number> = [],\n): void => {\n activation.conditions.forEach((candidate, index) => {\n const candidatePath = [...path, \"conditions\", index];\n if (\"operator\" in candidate) {\n forEachPageStateCondition(candidate, visit, candidatePath);\n return;\n }\n visit(candidate, candidatePath);\n });\n};\nconst PageRouteValueSourceSchema = z.discriminatedUnion(\"kind\", [\n z\n .object({\n kind: z.literal(\"route-parameter\"),\n name: ContractIdentifierSchema,\n })\n .strict(),\n z\n .object({\n kind: z.literal(\"constant\"),\n value: z.union([z.string(), z.number().finite(), z.boolean()]),\n })\n .strict(),\n z\n .object({\n kind: z.literal(\"page-state\"),\n stateId: ContractIdentifierSchema,\n })\n .strict(),\n]);\n/**\n * Declares an ordered, state-driven route transition owned by one exact Page\n * revision. The compiler resolves targetRef to one active governed Release;\n * raw URLs and application-specific route switches are deliberately excluded.\n */\nexport const PageEntryTransitionSchema = z\n .object({\n browsingContext: z.enum([\"same\", \"new\"]).optional(),\n gestureSource: z\n .object({\n capabilityInstanceId: ContractIdentifierSchema,\n port: ContractIdentifierSchema,\n })\n .strict()\n .optional(),\n transitionId: ContractIdentifierSchema,\n activation: PageStateActivationSchema,\n targetRef: StableRefSchema,\n pathParameters: z.record(\n ContractIdentifierSchema,\n PageRouteValueSourceSchema,\n ),\n query: z\n .object({\n preserve: z.boolean(),\n remove: z.array(ContractIdentifierSchema),\n set: z.record(ContractIdentifierSchema, PageRouteValueSourceSchema),\n })\n .strict(),\n })\n .strict()\n .superRefine((value, context) => {\n if ((value.browsingContext === \"new\") !== Boolean(value.gestureSource)) {\n context.addIssue({\n code: \"custom\",\n path: [\"gestureSource\"],\n message:\n \"New-context entry transitions require an exact gesture source; same-context transitions must omit it.\",\n });\n }\n if (![\"page\", \"workbench\"].includes(value.targetRef.kind)) {\n context.addIssue({\n code: \"custom\",\n path: [\"targetRef\", \"kind\"],\n message:\n \"Page entry transitions must reference a governed Page or Workbench.\",\n });\n }\n if (new Set(value.query.remove).size !== value.query.remove.length) {\n context.addIssue({\n code: \"custom\",\n path: [\"query\", \"remove\"],\n message: \"Removed query parameter names must be unique.\",\n });\n }\n });\nexport const ResolvedPageEntryTransitionSchema =\n PageEntryTransitionSchema.safeExtend({\n targetRevisionRef: RevisionRefSchema,\n targetReleaseRevisionRef: RevisionRefSchema.optional(),\n targetAccessPolicy: AccessPolicySchema,\n targetRouteClaim: CompiledRouteClaimSchema,\n }).strict();\nexport const LegacyBrowserPreferenceImportSchema = z\n .object({\n storageKey: z.string().trim().min(1).max(256),\n jsonPath: z\n .array(\n z.union([\n z.string().trim().min(1).max(128),\n z.object({ stateId: ContractIdentifierSchema }).strict(),\n ]),\n )\n .min(1)\n .max(16)\n .optional(),\n valueType: z.enum([\"string\", \"number\", \"boolean-01\", \"json\"]),\n })\n .strict();\nexport const PageStateDefinitionSchema = z\n .object({\n stateId: ContractIdentifierSchema,\n scopeNodeId: ContractIdentifierSchema.optional(),\n initialValue: PageExpressionSchema.optional(),\n schemaRevisionRef: RevisionRefSchema,\n defaultValue: JsonValueSchema.optional(),\n persistence: z.enum([\n \"none\",\n \"session\",\n \"url\",\n \"tenant-preference\",\n \"url-with-tenant-preference\",\n ]),\n urlWriteback: z.enum([\"synchronize\", \"never\"]).optional(),\n preferencePartitionStateId: ContractIdentifierSchema.optional(),\n legacyBrowserPreferenceImport:\n LegacyBrowserPreferenceImportSchema.optional(),\n })\n .strict()\n .superRefine((value, context) => {\n if (value.scopeNodeId && value.persistence !== \"none\")\n context.addIssue({\n code: \"custom\",\n path: [\"persistence\"],\n message:\n \"Repeated instance state must not persist outside its instance.\",\n });\n if (\n value.initialValue &&\n !value.scopeNodeId &&\n (value.persistence !== \"none\" ||\n value.initialValue.kind !== \"read\" ||\n value.initialValue.root !== \"state\" ||\n value.initialValue.path.length !== 1)\n )\n context.addIssue({\n code: \"custom\",\n path: [\"initialValue\"],\n message:\n \"Root initialization must directly read one persisted Page state into non-persistent state.\",\n });\n if (value.schemaRevisionRef.kind !== \"schema\") {\n context.addIssue({\n code: \"custom\",\n path: [\"schemaRevisionRef\", \"kind\"],\n message: \"Page state must pin an exact schema revision.\",\n });\n }\n if (\n value.preferencePartitionStateId !== undefined &&\n value.persistence !== \"tenant-preference\" &&\n value.persistence !== \"url-with-tenant-preference\"\n ) {\n context.addIssue({\n code: \"custom\",\n path: [\"preferencePartitionStateId\"],\n message: \"Preference partitioning requires tenant preference state.\",\n });\n }\n if (\n value.urlWriteback !== undefined &&\n value.persistence !== \"url\" &&\n value.persistence !== \"url-with-tenant-preference\"\n ) {\n context.addIssue({\n code: \"custom\",\n path: [\"urlWriteback\"],\n message: \"URL writeback is only valid for URL-backed Page state.\",\n });\n }\n });\nexport const InteractionBindingSchema = z\n .object({\n bindingId: ContractIdentifierSchema,\n source: z\n .object({\n capabilityInstanceId: ContractIdentifierSchema,\n port: ContractIdentifierSchema,\n })\n .strict(),\n sourceIntentSchemaRevisionRef: RevisionRefSchema,\n sourceResultSchemaRevisionRef: RevisionRefSchema.optional(),\n targetStateId: ContractIdentifierSchema,\n transition: z.enum([\"set\", \"merge\", \"toggle\", \"append\", \"remove\", \"reset\"]),\n inputMapping: z.record(\n ContractIdentifierSchema,\n InteractionBindingSourceSchema,\n ),\n })\n .strict()\n .superRefine((value, context) => {\n if (value.sourceIntentSchemaRevisionRef.kind !== \"schema\") {\n context.addIssue({\n code: \"custom\",\n path: [\"sourceIntentSchemaRevisionRef\", \"kind\"],\n message: \"Interaction source intents must pin a schema revision.\",\n });\n }\n const mapsResult = Object.values(value.inputMapping).some(\n (source) =>\n source.kind === \"result-field\" ||\n (source.kind === \"expression\" &&\n collectPageExpressionReads(source.expression).some(\n (read) => read.root === \"result\",\n )),\n );\n if (mapsResult && !value.sourceResultSchemaRevisionRef) {\n context.addIssue({\n code: \"custom\",\n path: [\"sourceResultSchemaRevisionRef\"],\n message:\n \"Result-field interactions must pin the exact Action result schema revision.\",\n });\n }\n if (\n value.sourceResultSchemaRevisionRef?.kind !== undefined &&\n value.sourceResultSchemaRevisionRef.kind !== \"schema\"\n ) {\n context.addIssue({\n code: \"custom\",\n path: [\"sourceResultSchemaRevisionRef\", \"kind\"],\n message: \"Interaction source results must pin a schema revision.\",\n });\n }\n if (!mapsResult && value.sourceResultSchemaRevisionRef) {\n context.addIssue({\n code: \"custom\",\n path: [\"sourceResultSchemaRevisionRef\"],\n message:\n \"Interaction result schemas are only valid when inputMapping declares a result-field source.\",\n });\n }\n const mappedInputs = Object.keys(value.inputMapping);\n if (\n (value.transition === \"toggle\" || value.transition === \"reset\") &&\n mappedInputs.length > 0\n ) {\n context.addIssue({\n code: \"custom\",\n path: [\"inputMapping\"],\n message: `${value.transition} transitions cannot declare mapped inputs.`,\n });\n }\n if (\n value.transition !== \"toggle\" &&\n value.transition !== \"reset\" &&\n mappedInputs.length === 0\n ) {\n context.addIssue({\n code: \"custom\",\n path: [\"inputMapping\"],\n message: `${value.transition} transitions require at least one mapped input.`,\n });\n }\n });\nexport const GovernedCatalogResourceKindSchema = z.enum([\n \"tag\",\n \"tag-group\",\n \"feature-column\",\n]);\nexport const GovernedCatalogDomainQueryDataSourceSchema = z\n .object({\n kind: z.literal(\"governed-catalog\"),\n resourceKind: GovernedCatalogResourceKindSchema,\n })\n .strict();\nexport const RegisteredServiceDomainQueryDataSourceSchema = z\n .object({\n kind: z.literal(\"registered-service\"),\n })\n .strict();\nexport const DomainQueryDataSourceSchema = z.discriminatedUnion(\"kind\", [\n z.object({ kind: z.literal(\"exact-view\") }).strict(),\n z\n .object({\n kind: z.literal(\"tenant-catalog\"),\n resource: z.enum([\"ontology\", \"view\"]),\n ontologyIdParameter: ContractIdentifierSchema.optional(),\n })\n .strict()\n .superRefine((source, context) => {\n if (source.resource === \"view\" && !source.ontologyIdParameter) {\n context.addIssue({\n code: \"custom\",\n path: [\"ontologyIdParameter\"],\n message:\n \"A tenant View catalog must declare the input parameter that scopes it to one Ontology.\",\n });\n }\n if (source.resource === \"ontology\" && source.ontologyIdParameter) {\n context.addIssue({\n code: \"custom\",\n path: [\"ontologyIdParameter\"],\n message:\n \"An Ontology catalog cannot be pre-scoped by an Ontology input.\",\n });\n }\n }),\n z\n .object({\n kind: z.literal(\"tenant-current-view\"),\n ontologyIdParameter: ContractIdentifierSchema,\n viewIdParameter: ContractIdentifierSchema,\n })\n .strict(),\n z.object({ kind: z.literal(\"page-state\") }).strict(),\n GovernedCatalogDomainQueryDataSourceSchema,\n RegisteredServiceDomainQueryDataSourceSchema,\n]);\nexport const DomainQueryDefinitionSchema = z\n .object({\n contract: z.literal(\"DomainQueryDefinition\"),\n schemaVersion: z.literal(DECLARATIVE_CONTROL_SCHEMA_VERSION),\n queryId: ContractIdentifierSchema,\n tenantScope: TenantScopeSchema,\n dataSource: DomainQueryDataSourceSchema.optional(),\n handlerRef: EntityRefSchema.optional(),\n ontologyDefinitionRevisionRef: RevisionRefSchema.optional(),\n viewRevisionRef: RevisionRefSchema.optional(),\n canonicalDataViewRevisionRef: RevisionRefSchema.optional(),\n inputSchemaRevisionRef: RevisionRefSchema,\n resultSchemaRevisionRef: RevisionRefSchema,\n accessPolicy: AccessPolicySchema,\n lineageRequired: z.literal(true),\n })\n .strict()\n .superRefine((value, context) => {\n const sourceKind = value.dataSource?.kind ?? \"exact-view\";\n const exactDataRefs = [\n value.ontologyDefinitionRevisionRef,\n value.viewRevisionRef,\n value.canonicalDataViewRevisionRef,\n ];\n if (\n sourceKind === \"exact-view\" &&\n exactDataRefs.some((reference) => !reference)\n ) {\n context.addIssue({\n code: \"custom\",\n path: [\"dataSource\"],\n message:\n \"An exact-view Domain Query must pin Ontology, governed View, and canonical Data View revisions.\",\n });\n }\n if (sourceKind !== \"exact-view\" && exactDataRefs.some(Boolean)) {\n context.addIssue({\n code: \"custom\",\n path: [\"dataSource\"],\n message: \"A non-View Domain Query cannot also pin one fixed View.\",\n });\n }\n if (\n value.dataSource &&\n (!value.handlerRef || value.handlerRef.version === undefined)\n ) {\n context.addIssue({\n code: \"custom\",\n path: [\"handlerRef\"],\n message:\n \"A source-aware Domain Query must pin its release-owned handler version.\",\n });\n }\n const refs: Array<\n readonly [string, z.infer<typeof RevisionRefSchema>, string]\n > = [\n ...(sourceKind === \"exact-view\" && value.ontologyDefinitionRevisionRef\n ? [\n [\n \"ontologyDefinitionRevisionRef\",\n value.ontologyDefinitionRevisionRef,\n \"ontology-definition\",\n ] as const,\n ]\n : []),\n ...(sourceKind === \"exact-view\" && value.viewRevisionRef\n ? [[\"viewRevisionRef\", value.viewRevisionRef, \"view\"] as const]\n : []),\n ...(sourceKind === \"exact-view\" && value.canonicalDataViewRevisionRef\n ? [\n [\n \"canonicalDataViewRevisionRef\",\n value.canonicalDataViewRevisionRef,\n \"view\",\n ] as const,\n ]\n : []),\n [\"inputSchemaRevisionRef\", value.inputSchemaRevisionRef, \"schema\"],\n [\"resultSchemaRevisionRef\", value.resultSchemaRevisionRef, \"schema\"],\n ];\n refs.forEach(([field, reference, expectedKind]) => {\n if (reference.kind !== expectedKind) {\n context.addIssue({\n code: \"custom\",\n path: [field, \"kind\"],\n message: `${field} must reference ${expectedKind}.`,\n });\n }\n validateTenantCompatibleReference(\n reference,\n value.tenantScope,\n [field],\n context,\n );\n });\n [\n ...value.accessPolicy.groupAllOf,\n ...value.accessPolicy.groupAnyOf,\n ].forEach((reference, index) =>\n validateTenantCompatibleReference(\n reference,\n value.tenantScope,\n [\"accessPolicy\", \"groups\", index],\n context,\n ),\n );\n value.accessPolicy.conditionAllOf.forEach((reference, index) =>\n validateTenantCompatibleReference(\n reference,\n value.tenantScope,\n [\"accessPolicy\", \"conditionAllOf\", index],\n context,\n ),\n );\n if (\n value.viewRevisionRef &&\n value.canonicalDataViewRevisionRef &&\n exactRevisionRef(\n value.viewRevisionRef,\n value.canonicalDataViewRevisionRef,\n )\n ) {\n context.addIssue({\n code: \"custom\",\n path: [\"canonicalDataViewRevisionRef\"],\n message:\n \"Governed View adapter and canonical data.view revisions must be distinct.\",\n });\n }\n });\nexport const CursorWindowBindingSchema = z\n .object({\n sourceCapabilityInstanceId: ContractIdentifierSchema.optional(),\n pageChangePort: ContractIdentifierSchema,\n pageChangeIntentSchemaRevisionRef: RevisionRefSchema,\n })\n .strict()\n .superRefine((value, context) => {\n if (value.pageChangeIntentSchemaRevisionRef.kind !== \"schema\") {\n context.addIssue({\n code: \"custom\",\n path: [\"pageChangeIntentSchemaRevisionRef\", \"kind\"],\n message:\n \"Cursor-window page-change intents must pin a schema revision.\",\n });\n }\n });\nexport const QueryResultStateBindingSchema = z\n .object({\n targetStateId: ContractIdentifierSchema,\n targetStateSchemaRevisionRef: RevisionRefSchema,\n source: z\n .object({ kind: z.enum([\"page-info-total\", \"model-total\"]) })\n .strict(),\n })\n .strict()\n .superRefine((value, context) => {\n if (value.targetStateSchemaRevisionRef.kind !== \"schema\") {\n context.addIssue({\n code: \"custom\",\n path: [\"targetStateSchemaRevisionRef\", \"kind\"],\n message:\n \"Query result state bindings must pin a Page-state schema revision.\",\n });\n }\n });\nexport const QueryBindingSchema = z\n .object({\n bindingId: ContractIdentifierSchema,\n queryDefinitionRevisionRef: RevisionRefSchema,\n parameters: z.record(ContractIdentifierSchema, BindingSourceSchema),\n target: z\n .object({\n capabilityInstanceId: ContractIdentifierSchema,\n port: ContractIdentifierSchema,\n })\n .strict(),\n renderModelSchemaRevisionRef: RevisionRefSchema,\n targetProjection: z\n .object({\n expression: PageExpressionSchema,\n schemaRevisionRef: RevisionRefSchema,\n })\n .strict()\n .optional(),\n streamTargetProjection: z\n .object({\n expression: PageExpressionSchema,\n schemaRevisionRef: RevisionRefSchema,\n })\n .strict()\n .optional(),\n stateEffects: z\n .array(\n z\n .object({\n targetStateId: ContractIdentifierSchema,\n value: PageExpressionSchema,\n when: PageExpressionSchema.optional(),\n })\n .strict(),\n )\n .max(32)\n .optional(),\n queryWhen: PageStateActivationSchema.optional(),\n accessFailure: z.literal(\"render-forbidden\").optional(),\n draftRetention: z\n .object({\n identityParameters: z\n .array(ContractIdentifierSchema)\n .min(1)\n .max(32),\n })\n .strict()\n .optional(),\n queryRetention: z.object({\n identityParameters: z.array(ContractIdentifierSchema).max(32),\n }).strict().optional(),\n resultStateBindings: z\n .array(QueryResultStateBindingSchema)\n .max(32)\n .optional(),\n execution: z.enum([\"server\", \"local-state\"]).default(\"server\"),\n pagination: z.enum([\"none\", \"cursor\", \"offset\"]),\n cursorWindow: CursorWindowBindingSchema.optional(),\n cache: z.enum([\"none\", \"identity-scoped\", \"tenant-scoped\"]),\n cancelOnChange: z.boolean(),\n refreshPolicy: z\n .object({\n intervalMs: z.number().int().min(1000).max(300000),\n when: PageExpressionSchema.optional(),\n })\n .strict()\n .optional(),\n })\n .strict()\n .superRefine((value, context) => {\n if (value.draftRetention) {\n const names = value.draftRetention.identityParameters;\n if (\n value.execution !== \"server\" ||\n new Set(names).size !== names.length ||\n names.some(\n (name) =>\n !Object.prototype.hasOwnProperty.call(value.parameters, name),\n )\n ) {\n context.addIssue({\n code: \"custom\",\n path: [\"draftRetention\"],\n message:\n \"Draft retention requires distinct declared Server query identity parameters.\",\n });\n }\n }\n if (value.queryRetention) {\n const names = value.queryRetention.identityParameters;\n if (\n value.execution !== \"server\" ||\n new Set(names).size !== names.length ||\n names.some(\n (name) =>\n !Object.prototype.hasOwnProperty.call(value.parameters, name),\n )\n ) {\n context.addIssue({\n code: \"custom\",\n path: [\"queryRetention\"],\n message:\n \"Query retention requires distinct declared Server query identity parameters.\",\n });\n }\n }\n if (value.targetProjection) {\n if (value.targetProjection.schemaRevisionRef.kind !== \"schema\")\n context.addIssue({\n code: \"custom\",\n path: [\"targetProjection\", \"schemaRevisionRef\"],\n message:\n \"Query target projections require an exact target schema revision.\",\n });\n for (const read of collectExternalPageExpressionReads(\n value.targetProjection.expression,\n ))\n if (read.root !== \"model\")\n context.addIssue({\n code: \"custom\",\n path: [\"targetProjection\", \"expression\"],\n message:\n \"Query target projections may read only the validated raw model.\",\n });\n }\n if (value.streamTargetProjection) {\n const projection = value.streamTargetProjection;\n if (projection.schemaRevisionRef.kind !== \"schema\")\n context.addIssue({\n code: \"custom\",\n path: [\"streamTargetProjection\", \"schemaRevisionRef\"],\n message:\n \"Stream target projections require an exact target schema revision.\",\n });\n for (const read of collectExternalPageExpressionReads(\n projection.expression,\n ))\n if (read.root !== \"model\")\n context.addIssue({\n code: \"custom\",\n path: [\"streamTargetProjection\", \"expression\"],\n message:\n \"Stream target projections may read only the verified query and stream envelope.\",\n });\n if (value.execution !== \"server\" || value.pagination !== \"none\")\n context.addIssue({\n code: \"custom\",\n path: [\"streamTargetProjection\"],\n message:\n \"Stream target projections require a non-paginated Server query.\",\n });\n }\n const effects = value.stateEffects ?? [];\n if (\n new Set(effects.map((effect) => effect.targetStateId)).size !==\n effects.length\n )\n context.addIssue({\n code: \"custom\",\n path: [\"stateEffects\"],\n message: \"A query completion may update each state only once.\",\n });\n for (const [index, effect] of effects.entries())\n for (const expression of [\n effect.value,\n ...(effect.when ? [effect.when] : []),\n ]) {\n for (const read of collectPageExpressionReads(expression))\n if (![\"model\", \"state\", \"scope\"].includes(read.root))\n context.addIssue({\n code: \"custom\",\n path: [\"stateEffects\", index],\n message:\n \"Query state effects may read only model, state, and scope.\",\n });\n }\n if (\n effects.length &&\n (value.execution !== \"server\" || value.pagination !== \"none\")\n )\n context.addIssue({\n code: \"custom\",\n path: [\"stateEffects\"],\n message: \"Query state effects require a non-paginated Server query.\",\n });\n if (value.refreshPolicy?.when) {\n for (const read of collectExternalPageExpressionReads(\n value.refreshPolicy.when,\n )) {\n if (\n read.root !== \"model\" &&\n !(\n read.root === \"actions\" &&\n read.path.length === 2 &&\n read.path[1] === \"pending\"\n )\n )\n context.addIssue({\n code: \"custom\",\n path: [\"refreshPolicy\", \"when\"],\n message:\n \"Automatic refresh conditions may read only the verified raw model and declared action pending state.\",\n });\n }\n }\n if (\n value.refreshPolicy &&\n (value.execution !== \"server\" || value.pagination !== \"none\")\n ) {\n context.addIssue({\n code: \"custom\",\n path: [\"refreshPolicy\"],\n message: \"Automatic refresh requires a non-paginated Server query.\",\n });\n }\n if (value.queryDefinitionRevisionRef.kind !== \"domain-query-definition\") {\n context.addIssue({\n code: \"custom\",\n path: [\"queryDefinitionRevisionRef\", \"kind\"],\n message:\n \"Query bindings must pin a governed domain-query-definition revision.\",\n });\n }\n if (value.renderModelSchemaRevisionRef.kind !== \"schema\") {\n context.addIssue({\n code: \"custom\",\n path: [\"renderModelSchemaRevisionRef\", \"kind\"],\n message: \"Query bindings must pin a render-model schema revision.\",\n });\n }\n if (value.execution === \"local-state\" && value.pagination !== \"none\") {\n context.addIssue({\n code: \"custom\",\n path: [\"pagination\"],\n message: \"Local Page-state queries cannot paginate.\",\n });\n }\n if (value.execution === \"local-state\" && value.accessFailure) {\n context.addIssue({\n code: \"custom\",\n path: [\"accessFailure\"],\n message:\n \"Only a Server query can render an independently governed access failure.\",\n });\n }\n if (\n value.execution === \"local-state\" &&\n (value.resultStateBindings?.length ?? 0) > 0\n ) {\n context.addIssue({\n code: \"custom\",\n path: [\"resultStateBindings\"],\n message:\n \"Only Server queries can project governed result totals into Page state.\",\n });\n }\n const targetStateIds =\n value.resultStateBindings?.map((binding) => binding.targetStateId) ?? [];\n if (new Set(targetStateIds).size !== targetStateIds.length) {\n context.addIssue({\n code: \"custom\",\n path: [\"resultStateBindings\"],\n message:\n \"A Query binding can project a governed result total to each Page state at most once.\",\n });\n }\n if (value.cursorWindow && value.pagination !== \"cursor\") {\n context.addIssue({\n code: \"custom\",\n path: [\"cursorWindow\"],\n message: \"Cursor-window navigation requires cursor pagination.\",\n });\n }\n if (value.cursorWindow && value.execution !== \"server\") {\n context.addIssue({\n code: \"custom\",\n path: [\"cursorWindow\"],\n message: \"Cursor-window navigation requires Server query execution.\",\n });\n }\n });\nexport const CapabilityInstanceSchema = z\n .object({\n runtimeContractVersion: ContractIdentifierSchema.optional(),\n instanceId: ContractIdentifierSchema,\n nodeId: ContractIdentifierSchema,\n capabilityRevisionRef: RevisionRefSchema,\n providerRevisionRef: RevisionRefSchema,\n propertySchemaRevisionRef: RevisionRefSchema,\n properties: JsonObjectSchema,\n propertyBindings: z.array(PagePropertyBindingSchema).max(128).optional(),\n eventPayloadBindings: z\n .array(\n z\n .object({\n port: ContractIdentifierSchema,\n expression: PageExpressionSchema,\n })\n .strict(),\n )\n .max(32)\n .optional(),\n eventEffects: z\n .array(\n z\n .object({\n sourcePort: ContractIdentifierSchema,\n sourceIntentSchemaRevisionRef: RevisionRefSchema,\n refreshBindingIds: z\n .array(ContractIdentifierSchema)\n .min(1)\n .max(128),\n })\n .strict(),\n )\n .max(32)\n .optional(),\n accessPolicy: AccessPolicySchema.optional(),\n activationWhen: PageStateActivationSchema.optional(),\n allowedSideEffects: z.array(\n z.enum([\n \"network\",\n \"storage\",\n \"navigation\",\n \"clipboard\",\n \"worker\",\n \"websocket\",\n ]),\n ),\n })\n .strict();\nexport const OntologyBindingSchema = z\n .object({\n bindingId: ContractIdentifierSchema,\n ontologyDefinitionRevisionRef: RevisionRefSchema,\n viewRevisionRef: RevisionRefSchema,\n canonicalDataViewRevisionRef: RevisionRefSchema,\n parameters: z.record(ContractIdentifierSchema, BindingSourceSchema),\n target: z\n .object({\n capabilityInstanceId: ContractIdentifierSchema,\n port: ContractIdentifierSchema,\n })\n .strict(),\n renderModelSchemaRevisionRef: RevisionRefSchema,\n pagination: z.enum([\"none\", \"cursor\", \"offset\"]),\n cursorWindow: CursorWindowBindingSchema.optional(),\n cache: z.enum([\"none\", \"identity-scoped\", \"tenant-scoped\"]),\n cancelOnChange: z.boolean(),\n })\n .strict()\n .superRefine((value, context) => {\n if (value.viewRevisionRef.kind !== \"view\") {\n context.addIssue({\n code: \"custom\",\n path: [\"viewRevisionRef\", \"kind\"],\n message: \"Ontology bindings require an exact governed View revision.\",\n });\n }\n if (value.canonicalDataViewRevisionRef.kind !== \"view\") {\n context.addIssue({\n code: \"custom\",\n path: [\"canonicalDataViewRevisionRef\", \"kind\"],\n message:\n \"Ontology bindings require an exact canonical data.view revision.\",\n });\n }\n if (\n exactRevisionRef(\n value.viewRevisionRef,\n value.canonicalDataViewRevisionRef,\n )\n ) {\n context.addIssue({\n code: \"custom\",\n path: [\"canonicalDataViewRevisionRef\"],\n message:\n \"Governed View adapter and canonical data.view revisions must be distinct.\",\n });\n }\n if (value.ontologyDefinitionRevisionRef.kind !== \"ontology-definition\") {\n context.addIssue({\n code: \"custom\",\n path: [\"ontologyDefinitionRevisionRef\", \"kind\"],\n message: \"Expected an ontology-definition revision.\",\n });\n }\n if (value.cursorWindow && value.pagination !== \"cursor\") {\n context.addIssue({\n code: \"custom\",\n path: [\"cursorWindow\"],\n message: \"Cursor-window navigation requires cursor pagination.\",\n });\n }\n });\n/** Persisted pre-canonical bindings retain their exact references and content hashes. */\nexport const LegacyOntologyBindingSchema = z\n .object({\n ...OntologyBindingSchema.shape,\n viewRevisionRef: RevisionRefSchema.optional(),\n canonicalDataViewRevisionRef: z.never().optional(),\n projectionRevisionRef: RevisionRefSchema.optional(),\n })\n .strict()\n .superRefine((value, context) => {\n if (\n Boolean(value.viewRevisionRef) === Boolean(value.projectionRevisionRef)\n ) {\n context.addIssue({\n code: \"custom\",\n path: [\"viewRevisionRef\"],\n message:\n \"Legacy bindings require exactly one View or projection revision.\",\n });\n }\n for (const [key, reference, kind] of [\n [\n \"ontologyDefinitionRevisionRef\",\n value.ontologyDefinitionRevisionRef,\n \"ontology-definition\",\n ],\n [\"viewRevisionRef\", value.viewRevisionRef, \"view\"],\n [\"projectionRevisionRef\", value.projectionRevisionRef, \"projection-spec\"],\n ] as const) {\n if (reference && reference.kind !== kind)\n context.addIssue({\n code: \"custom\",\n path: [key, \"kind\"],\n message: `Expected a ${kind} revision.`,\n });\n }\n if (value.cursorWindow && value.pagination !== \"cursor\")\n context.addIssue({\n code: \"custom\",\n path: [\"cursorWindow\"],\n message: \"Cursor-window navigation requires cursor pagination.\",\n });\n });\n\nexport const PersistedOntologyBindingSchema = z\n .object({\n ...OntologyBindingSchema.shape,\n viewRevisionRef: RevisionRefSchema.optional(),\n canonicalDataViewRevisionRef: RevisionRefSchema.optional(),\n projectionRevisionRef: RevisionRefSchema.optional(),\n })\n .strict()\n .superRefine((value, context) => {\n const schema = value.canonicalDataViewRevisionRef\n ? OntologyBindingSchema\n : LegacyOntologyBindingSchema;\n const parsed = schema.safeParse(value);\n if (!parsed.success)\n for (const issue of parsed.error.issues)\n context.addIssue({\n code: \"custom\",\n path: issue.path,\n message: issue.message,\n });\n });\n\nexport const ActionResultBindingEffectSourceSchema = z.discriminatedUnion(\n \"kind\",\n [\n z\n .object({\n kind: z.literal(\"result-field\"),\n path: z\n .string()\n .trim()\n .regex(/^[A-Za-z0-9_.-]+$/),\n })\n .strict(),\n z.object({ kind: z.literal(\"constant\"), value: JsonValueSchema }).strict(),\n z\n .object({\n kind: z.literal(\"collection-length\"),\n offset: z.number().int().min(-1000).max(1000),\n })\n .strict(),\n ],\n);\nexport const ActionResultBindingEffectSchema = z\n .object({\n bindingId: ContractIdentifierSchema,\n operation: z.enum([\"upsert-append\", \"remove-exact\"]),\n collectionPath: z.array(ContractIdentifierSchema).min(1).max(8),\n identityPath: z.array(ContractIdentifierSchema).min(1).max(8),\n mappings: z\n .array(\n z\n .object({\n targetPath: z.array(ContractIdentifierSchema).min(1).max(8),\n source: ActionResultBindingEffectSourceSchema,\n })\n .strict(),\n )\n .min(1)\n .max(64),\n })\n .strict()\n .superRefine((value, context) => {\n const targetPaths = value.mappings.map(({ targetPath }) =>\n targetPath.join(\".\"),\n );\n if (new Set(targetPaths).size !== targetPaths.length) {\n context.addIssue({\n code: \"custom\",\n path: [\"mappings\"],\n message: \"Result binding effect target paths must be unique.\",\n });\n }\n if (!targetPaths.includes(value.identityPath.join(\".\"))) {\n context.addIssue({\n code: \"custom\",\n path: [\"identityPath\"],\n message:\n \"A result binding effect must map the exact identity path of the projected item.\",\n });\n }\n const identityMapping = value.mappings.find(\n ({ targetPath }) => targetPath.join(\".\") === value.identityPath.join(\".\"),\n );\n if (identityMapping?.source.kind === \"collection-length\") {\n context.addIssue({\n code: \"custom\",\n path: [\"identityPath\"],\n message:\n \"A projected item identity must come from the verified result or a declared constant.\",\n });\n }\n if (value.operation === \"remove-exact\" && value.mappings.length !== 1) {\n context.addIssue({\n code: \"custom\",\n path: [\"mappings\"],\n message:\n \"An exact removal declares only the verified identity mapping used to remove one item.\",\n });\n }\n });\n\nexport const ActionResultClipboardEffectSchema = z\n .object({\n source: z\n .object({\n kind: z.literal(\"result-field\"),\n path: z\n .string()\n .trim()\n .regex(/^[A-Za-z0-9_.-]+$/),\n })\n .strict(),\n copiedToast: I18nTextSchema.optional(),\n fallbackToast: I18nTextSchema.superRefine((value, context) => {\n for (const [locale, message] of Object.entries(value.values)) {\n if (!message.includes(\"{value}\")) {\n context.addIssue({\n code: \"custom\",\n path: [\"values\", locale],\n message:\n \"Clipboard fallback feedback must visibly include the exact verified value placeholder.\",\n });\n }\n }\n }),\n })\n .strict();\n\nexport const ActionBindingSchema = z\n .object({\n bindingId: ContractIdentifierSchema,\n commandRevisionRef: RevisionRefSchema,\n source: z\n .object({\n capabilityInstanceId: ContractIdentifierSchema,\n port: ContractIdentifierSchema,\n })\n .strict(),\n sourceIntentSchemaRevisionRef: RevisionRefSchema,\n inputSchemaRevisionRef: RevisionRefSchema,\n when: PageExpressionSchema.optional(),\n fileInputs: z.array(ActionFileInputSchema).min(1).max(4).optional(),\n inputMapping: z.record(\n ContractIdentifierSchema,\n ActionInputBindingSourceSchema,\n ),\n sensitiveInputPaths: SensitiveResultPathsSchema.optional(),\n accessPolicy: AccessPolicySchema,\n confirmation: I18nTextSchema.optional(),\n idempotencyKeySource: z.enum([\n \"interaction\",\n \"record-and-interaction\",\n \"caller-provided\",\n ]),\n compensationCommandRevisionRef: RevisionRefSchema.optional(),\n resultSchemaRevisionRef: RevisionRefSchema,\n success: z\n .object({\n download: z\n .discriminatedUnion(\"kind\", [\n z.object({ kind: z.literal(\"native\") }).strict(),\n z\n .object({\n kind: z.literal(\"text-artifact\"),\n fileNamePath: PageValuePathSchema.min(1),\n mimeTypePath: PageValuePathSchema.min(1),\n contentPath: PageValuePathSchema.min(1),\n maxBytes: z.number().int().min(1).max(1048576),\n })\n .strict(),\n ])\n .optional(),\n refreshBindingIds: z.array(ContractIdentifierSchema),\n ephemeralResult: z\n .object({\n kind: z.literal(\"one-time-value\"),\n valuePath: SensitiveResultPathSchema,\n labelPath: SensitiveResultPathSchema,\n title: I18nTextSchema,\n description: I18nTextSchema,\n copySuccessToast: I18nTextSchema,\n copyFailureToast: I18nTextSchema,\n })\n .strict()\n .optional(),\n resultBindingEffects: z\n .array(ActionResultBindingEffectSchema)\n .max(64)\n .optional(),\n clipboard: ActionResultClipboardEffectSchema.optional(),\n navigationTargetRef: StableRefSchema.optional(),\n toast: I18nTextSchema.optional(),\n })\n .strict(),\n recovery: z.enum([\"retry-safe\", \"compensating-command\", \"manual-review\"]),\n lineageRequired: z.literal(true),\n })\n .strict()\n .superRefine((value, context) => {\n const fileIds = new Set<string>();\n for (const file of value.fileInputs ?? []) {\n if (fileIds.has(file.inputId))\n context.addIssue({\n code: \"custom\",\n path: [\"fileInputs\"],\n message: \"File input ids must be unique.\",\n });\n fileIds.add(file.inputId);\n if (\n !Object.values(value.inputMapping).some(\n (source) =>\n source.kind === \"file-field\" && source.fileInputId === file.inputId,\n )\n )\n context.addIssue({\n code: \"custom\",\n path: [\"fileInputs\"],\n message: \"File inputs require an explicit governed input mapping.\",\n });\n }\n for (const [name, source] of Object.entries(value.inputMapping))\n if (source.kind === \"file-field\") {\n const file = value.fileInputs?.find(\n (file) => file.inputId === source.fileInputId,\n );\n if (\n (source.path === \"canonicalUri\" && !file?.upload) ||\n (source.path === \"content\" && file?.upload)\n )\n context.addIssue({\n code: \"custom\",\n path: [\"inputMapping\", name],\n message: \"File field must match its declared transport mode.\",\n });\n if (!fileIds.has(source.fileInputId))\n context.addIssue({\n code: \"custom\",\n path: [\"inputMapping\", name],\n message: \"File fields must reference a declared file input.\",\n });\n if (\n source.path === \"content\" &&\n !value.sensitiveInputPaths?.includes(`/${name}`)\n )\n context.addIssue({\n code: \"custom\",\n path: [\"sensitiveInputPaths\"],\n message:\n \"File content must be declared as a sensitive command input.\",\n });\n }\n if (value.when)\n for (const read of collectPageExpressionReads(value.when)) {\n if (![\"intent\", \"state\", \"scope\"].includes(read.root))\n context.addIssue({\n code: \"custom\",\n path: [\"when\"],\n message:\n \"Action conditions may read only intent, declared Page state, and instance scope.\",\n });\n }\n if (value.success.ephemeralResult) {\n const { valuePath, labelPath } = value.success.ephemeralResult;\n const segments = (path: string) => path.split(\"/\").slice(1);\n const valueSegments = segments(valuePath);\n const labelSegments = segments(labelPath);\n const sharedLength = Math.min(valueSegments.length, labelSegments.length);\n if (\n valueSegments\n .slice(0, sharedLength)\n .every((segment, index) => segment === labelSegments[index])\n ) {\n context.addIssue({\n code: \"custom\",\n path: [\"success\", \"ephemeralResult\", \"labelPath\"],\n message:\n \"One-time result labels cannot overlap the sensitive value path.\",\n });\n }\n }\n if (\n value.success.ephemeralResult &&\n (value.success.resultBindingEffects?.length || 0) > 0\n ) {\n context.addIssue({\n code: \"custom\",\n path: [\"success\", \"resultBindingEffects\"],\n message:\n \"One-time result presentation cannot share a result with durable binding effects.\",\n });\n }\n if (value.commandRevisionRef.kind !== \"domain-command\") {\n context.addIssue({\n code: \"custom\",\n path: [\"commandRevisionRef\", \"kind\"],\n message: \"Action bindings must reference a domain-command revision.\",\n });\n }\n if (value.sourceIntentSchemaRevisionRef.kind !== \"schema\") {\n context.addIssue({\n code: \"custom\",\n path: [\"sourceIntentSchemaRevisionRef\", \"kind\"],\n message: \"Action source intents must pin a schema revision.\",\n });\n }\n if (value.inputSchemaRevisionRef.kind !== \"schema\") {\n context.addIssue({\n code: \"custom\",\n path: [\"inputSchemaRevisionRef\", \"kind\"],\n message: \"Action command inputs must pin a schema revision.\",\n });\n }\n if (\n value.recovery === \"compensating-command\" &&\n !value.compensationCommandRevisionRef\n ) {\n context.addIssue({\n code: \"custom\",\n path: [\"compensationCommandRevisionRef\"],\n message: \"Compensating recovery requires a compensation command.\",\n });\n }\n });\nexport const PageMigrationEquivalenceDimensionSchema = z.enum([\n \"url\",\n \"navigation\",\n \"access\",\n \"deep-link\",\n \"layout\",\n \"size\",\n \"spacing\",\n \"design-tokens\",\n \"responsive\",\n \"view-modes\",\n \"search-filter\",\n \"editing\",\n \"detail\",\n \"history\",\n \"dialogs\",\n \"keyboard\",\n \"loading\",\n \"empty\",\n \"error\",\n \"forbidden\",\n]);\nexport const PageMigrationEquivalenceSchema = z\n .object({\n contract: z.literal(\"PageMigrationEquivalence\"),\n schemaVersion: z.literal(1),\n policy: z.literal(\"preserve-ui-ux\"),\n baseline: z\n .object({\n repository: ContractIdentifierSchema,\n revision: z.string().regex(/^[0-9a-f]{40}$/),\n pageId: ContractIdentifierSchema,\n routePath: RoutePathTemplateSchema,\n })\n .strict(),\n protectedDimensions: z\n .array(PageMigrationEquivalenceDimensionSchema)\n .min(1),\n viewports: z\n .array(\n z\n .object({\n viewportId: ContractIdentifierSchema,\n width: z.number().int().min(320).max(7680),\n height: z.number().int().min(480).max(4320),\n })\n .strict(),\n )\n .min(2),\n scenarios: z\n .array(\n z\n .object({\n scenarioId: ContractIdentifierSchema,\n viewportIds: z.array(ContractIdentifierSchema).min(1),\n })\n .strict(),\n )\n .min(1),\n evidence: z\n .object({\n sideBySideVisual: z.literal(true),\n domSnapshot: z.literal(true),\n consoleErrors: z.literal(\"none\"),\n })\n .strict(),\n allowedDifferences: z.array(\n z\n .object({\n differenceId: ContractIdentifierSchema,\n requirementRevisionRef: RevisionRefSchema,\n })\n .strict(),\n ),\n })\n .strict()\n .superRefine((value, context) => {\n if (uniqueArray(value.protectedDimensions, (candidate) => candidate)) {\n context.addIssue({\n code: \"custom\",\n path: [\"protectedDimensions\"],\n message: \"Protected UI/UX dimensions must be unique.\",\n });\n }\n if (uniqueArray(value.viewports, (candidate) => candidate.viewportId)) {\n context.addIssue({\n code: \"custom\",\n path: [\"viewports\"],\n message: \"Migration equivalence viewport identities must be unique.\",\n });\n }\n if (uniqueArray(value.scenarios, (candidate) => candidate.scenarioId)) {\n context.addIssue({\n code: \"custom\",\n path: [\"scenarios\"],\n message: \"Migration equivalence scenario identities must be unique.\",\n });\n }\n const viewportIds = new Set(\n value.viewports.map((viewport) => viewport.viewportId),\n );\n value.scenarios.forEach((scenario, index) => {\n scenario.viewportIds.forEach((viewportId, viewportIndex) => {\n if (!viewportIds.has(viewportId)) {\n context.addIssue({\n code: \"custom\",\n path: [\"scenarios\", index, \"viewportIds\", viewportIndex],\n message: `Migration equivalence scenario references unknown viewport ${viewportId}.`,\n });\n }\n });\n });\n });\n\nexport const PageRouteStatePresentationSchema = z\n .object({\n surface: ProductSurfaceSchema,\n state: z.literal(\"forbidden\"),\n kind: z.literal(\"status\"),\n presentation: z.enum([\"panel\", \"page\"]),\n title: I18nTextSchema,\n description: I18nTextSchema.optional(),\n })\n .strict()\n .superRefine((value, context) => {\n const localizedFields = [\n [\"title\", value.title, 160],\n [\"description\", value.description, 1000],\n ] as const;\n localizedFields.forEach(([field, copy, maxLength]) => {\n if (!copy) return;\n const entries = Object.entries(copy.values);\n if (entries.length > 16) {\n context.addIssue({\n code: \"custom\",\n path: [field, \"values\"],\n message: \"Route-state presentation copy supports at most 16 locales.\",\n });\n }\n entries.forEach(([locale, text]) => {\n if (text.length > maxLength) {\n context.addIssue({\n code: \"custom\",\n path: [field, \"values\", locale],\n message: `Route-state ${field} copy must contain at most ${maxLength} characters.`,\n });\n }\n });\n });\n });\n\nexport const PageStateSchema = PageStateDefinitionSchema.omit({\n schemaRevisionRef: true,\n})\n .extend({\n stateId: ContractIdentifierSchema,\n schema: ContractIdentifierSchema,\n })\n .strict();\n\nexport const PageEntryTargetSchema = z\n .object({\n kind: z.enum([\"page\", \"workbench\"]),\n id: ContractIdentifierSchema,\n })\n .strict();\n\nexport const PageEntrySchema = PageEntryTransitionSchema.omit({\n targetRef: true,\n})\n .extend({\n target: PageEntryTargetSchema,\n })\n .strict();\n\nexport const PageInteractionSchema = InteractionBindingSchema.omit({\n source: true,\n sourceIntentSchemaRevisionRef: true,\n sourceResultSchemaRevisionRef: true,\n})\n .extend({\n port: ContractIdentifierSchema,\n })\n .strict();\n\nconst PageCursorWindowSchema = CursorWindowBindingSchema.omit({\n pageChangeIntentSchemaRevisionRef: true,\n}).strict();\nconst PageResultStateBindingSchema = QueryResultStateBindingSchema.omit({\n targetStateSchemaRevisionRef: true,\n}).strict();\n\nexport const PageDataSchema = QueryBindingSchema.omit({\n queryDefinitionRevisionRef: true,\n target: true,\n renderModelSchemaRevisionRef: true,\n targetProjection: true,\n streamTargetProjection: true,\n cursorWindow: true,\n resultStateBindings: true,\n})\n .extend({\n query: ContractIdentifierSchema,\n port: ContractIdentifierSchema,\n targetProjection: z\n .object({ expression: PageExpressionSchema })\n .strict()\n .optional(),\n streamTargetProjection: z\n .object({ expression: PageExpressionSchema })\n .strict()\n .optional(),\n cursorWindow: PageCursorWindowSchema.optional(),\n resultStateBindings: z\n .array(PageResultStateBindingSchema)\n .max(32)\n .optional(),\n })\n .strict();\n\n/** Host ABI is explicit: the trusted browser Worker executor does not accept sandbox artifacts. */\nexport const ACTION_PROGRAM_ABI = \"monkeys.action-program/2\" as const;\nexport const ActionProgramBudgetsSchema = z\n .object({\n rpcMs: z.number().int().positive().max(30000),\n concurrentCalls: z.number().int().positive().max(4),\n calls: z.number().int().positive().max(128),\n messageBytes: z.number().int().positive().max(1048576),\n activeMs: z.number().int().positive().max(120000),\n formMs: z.number().int().positive().max(300000),\n wallMs: z.number().int().positive().max(600000),\n })\n .strict();\nexport const DEFAULT_ACTION_PROGRAM_BUDGETS = Object.freeze({\n rpcMs: 30000,\n concurrentCalls: 4,\n calls: 128,\n messageBytes: 1048576,\n activeMs: 120000,\n formMs: 300000,\n wallMs: 600000,\n});\nconst ProgramSchemaRefSchema = RevisionRefSchema.refine(\n (ref) => ref.kind === \"schema\",\n \"Expected an exact Schema reference.\",\n);\nexport const ActionProgramDependencySchema = z\n .object({\n kind: z.enum([\"query\", \"command\"]),\n revisionRef: RevisionRefSchema,\n inputSchemaRevisionRef: ProgramSchemaRefSchema,\n resultSchemaRevisionRef: ProgramSchemaRefSchema,\n download: ActionBindingSchema.shape.success.shape.download,\n // Fixed/identity arguments are injected by the trusted caller, never by guest code.\n dynamicInputKeys: z.array(ContractIdentifierSchema).max(128),\n })\n .strict()\n .superRefine((value, context) => {\n const expected =\n value.kind === \"query\" ? \"domain-query-definition\" : \"domain-command\";\n if (value.revisionRef.kind !== expected)\n context.addIssue({\n code: \"custom\",\n path: [\"revisionRef\", \"kind\"],\n message: `Expected ${expected}.`,\n });\n if (new Set(value.dynamicInputKeys).size !== value.dynamicInputKeys.length)\n context.addIssue({\n code: \"custom\",\n path: [\"dynamicInputKeys\"],\n message: \"Dynamic input keys must be unique.\",\n });\n });\nexport const ActionProgramDefinitionSchema = z\n .object({\n contract: z.literal(\"ActionProgramDefinition\"),\n schemaVersion: z.literal(1),\n programId: ContractIdentifierSchema,\n ownerRepo: ContractIdentifierSchema,\n tenantScope: TenantScopeSchema,\n supportedSurface: z.literal(\"studio\"),\n inputSchemaRevisionRef: ProgramSchemaRefSchema,\n resultSchemaRevisionRef: ProgramSchemaRefSchema,\n entry: z.literal(\"main\"),\n abi: z.literal(ACTION_PROGRAM_ABI),\n compiler: z.string().trim().min(1).max(128),\n target: z.literal(\"browser-worker-es2020\"),\n sourceHash: Sha256Schema,\n compiledHash: Sha256Schema,\n sourceMapHash: Sha256Schema,\n dependencies: z.array(ActionProgramDependencySchema).max(128),\n effects: z\n .array(\n z.enum([\n \"form\",\n \"toast\",\n \"refresh\",\n \"download\",\n \"state.get\",\n \"state.set\",\n ]),\n )\n .max(6),\n refreshAliases: z.array(ContractIdentifierSchema).max(128),\n stateAliases: z\n .array(\n z\n .object({\n alias: ContractIdentifierSchema,\n schemaRevisionRef: ProgramSchemaRefSchema,\n })\n .strict(),\n )\n .max(128),\n budgets: ActionProgramBudgetsSchema,\n })\n .strict()\n .superRefine((value, context) => {\n for (const [name, keys] of [\n [\n \"dependencies\",\n value.dependencies.map((dep) => `${dep.kind}:${dep.revisionRef.id}`),\n ],\n [\"effects\", value.effects],\n [\"refreshAliases\", value.refreshAliases],\n [\"stateAliases\", value.stateAliases.map((entry) => entry.alias)],\n ] as const)\n if (new Set(keys).size !== keys.length)\n context.addIssue({\n code: \"custom\",\n path: [name],\n message: \"Program declarations must be unique.\",\n });\n const refs = [\n value.inputSchemaRevisionRef,\n value.resultSchemaRevisionRef,\n ...value.dependencies.flatMap((dep) => [\n dep.revisionRef,\n dep.inputSchemaRevisionRef,\n dep.resultSchemaRevisionRef,\n ]),\n ...value.stateAliases.map((entry) => entry.schemaRevisionRef),\n ];\n refs.forEach((ref, index) => {\n if (\n ref.visibility === \"tenant\" &&\n ref.tenantScope &&\n tenantScopeKey(ref.tenantScope) !== tenantScopeKey(value.tenantScope)\n )\n context.addIssue({\n code: \"custom\",\n path: [\"dependencies\"],\n message: `Cross-tenant program reference ${index}.`,\n });\n });\n });\nexport type ActionProgramDefinition = z.infer<\n typeof ActionProgramDefinitionSchema\n>;\nexport type ActionProgramDependency = z.infer<\n typeof ActionProgramDependencySchema\n>;\nexport const ActionProgramArtifactSchema = z\n .object({\n definition: ActionProgramDefinitionSchema,\n // Hashes use canonicalContentHash of the exact UTF-8 string, not engine bytecode.\n javascript: z\n .string()\n .min(1)\n .max(262144)\n .refine(\n (value) => new TextEncoder().encode(value).length <= 262144,\n \"Program exceeds 256 KiB.\",\n ),\n sourceMap: z\n .string()\n .min(1)\n .max(524288)\n .refine(\n (value) => new TextEncoder().encode(value).length <= 524288,\n \"Source map exceeds 512 KiB.\",\n ),\n })\n .strict();\nexport type ActionProgramArtifact = z.infer<typeof ActionProgramArtifactSchema>;\nconst ProgramInputSourceSchema = z.discriminatedUnion(\"kind\", [\n ...BindingSourceSchema.options,\n ExpressionBindingSourceSchema,\n]);\nconst ProgramBindingShape = {\n bindingId: ContractIdentifierSchema,\n inputMapping: z.record(ContractIdentifierSchema, ProgramInputSourceSchema),\n dependencyInputs: z.record(\n ContractIdentifierSchema,\n z.record(ContractIdentifierSchema, ProgramInputSourceSchema),\n ),\n accessPolicy: AccessPolicySchema,\n confirmation: I18nTextSchema.optional(),\n when: PageExpressionSchema.optional(),\n concurrencyKeyPath: PageValuePathSchema.min(1),\n refreshAliases: z.record(\n ContractIdentifierSchema,\n z.array(ContractIdentifierSchema).min(1).max(128),\n ),\n stateAliases: z.record(ContractIdentifierSchema, ContractIdentifierSchema),\n};\nexport const PageProgramActionSchema = z\n .object({\n ...ProgramBindingShape,\n program: ContractIdentifierSchema,\n port: ContractIdentifierSchema,\n })\n .strict();\nexport const ProgramBindingSchema = z\n .object({\n ...ProgramBindingShape,\n source: z\n .object({\n capabilityInstanceId: ContractIdentifierSchema,\n port: ContractIdentifierSchema,\n })\n .strict(),\n sourceIntentSchemaRevisionRef: ProgramSchemaRefSchema,\n programRevisionRef: RevisionRefSchema.refine(\n (ref) => ref.kind === \"action-program\",\n \"Expected action-program reference.\",\n ),\n definition: ActionProgramDefinitionSchema,\n })\n .strict();\nexport type ProgramBinding = z.infer<typeof ProgramBindingSchema>;\n\nfunction validateProgramBindingTargets(\n page: {\n programBindings?: ProgramBinding[];\n actionBindings: z.infer<typeof ActionBindingSchema>[];\n queryBindings?: { bindingId: string }[];\n ontologyBindings: { bindingId: string }[];\n capabilityInstances: { instanceId: string }[];\n stateDefinitions?: {\n stateId: string;\n schemaRevisionRef: z.infer<typeof RevisionRefSchema>;\n }[];\n },\n context: z.RefinementCtx,\n) {\n const ids = new Set(page.actionBindings.map((binding) => binding.bindingId));\n const ports = new Set(\n page.actionBindings.map(\n (binding) =>\n `${binding.source.capabilityInstanceId}:${binding.source.port}`,\n ),\n );\n const dataIds = new Set(\n [...page.ontologyBindings, ...(page.queryBindings ?? [])].map(\n (binding) => binding.bindingId,\n ),\n );\n for (const [index, binding] of (page.programBindings ?? []).entries()) {\n const issue = (message: string) =>\n context.addIssue({\n code: \"custom\",\n path: [\"programBindings\", index],\n message,\n });\n const port = `${binding.source.capabilityInstanceId}:${binding.source.port}`;\n if (ids.has(binding.bindingId) || ports.has(port))\n issue(\"Program binding id and event must be exclusive.\");\n ids.add(binding.bindingId);\n ports.add(port);\n if (\n !page.capabilityInstances.some(\n (instance) =>\n instance.instanceId === binding.source.capabilityInstanceId,\n )\n )\n issue(\"Program source instance is missing.\");\n const exactKeys = (keys: string[], expected: string[]) =>\n keys.length === expected.length &&\n keys.every((key) => expected.includes(key));\n if (\n !exactKeys(\n Object.keys(binding.refreshAliases),\n binding.definition.refreshAliases,\n ) ||\n Object.values(binding.refreshAliases).some((targets) =>\n targets.some((target) => !dataIds.has(target)),\n )\n )\n issue(\n \"Program refresh aliases must resolve exactly to declared data bindings.\",\n );\n if (\n !exactKeys(\n Object.keys(binding.stateAliases),\n binding.definition.stateAliases.map((entry) => entry.alias),\n )\n )\n issue(\"Program state aliases must match its manifest.\");\n for (const entry of binding.definition.stateAliases) {\n const state = page.stateDefinitions?.find(\n (state) => state.stateId === binding.stateAliases[entry.alias],\n );\n if (\n !state ||\n !exactRevisionRef(state.schemaRevisionRef, entry.schemaRevisionRef)\n )\n issue(\"Program state alias has an incompatible Schema.\");\n }\n const dependencyIds = binding.definition.dependencies.map(\n (dep) => dep.revisionRef.id,\n );\n if (\n !Object.keys(binding.dependencyInputs).every((key) =>\n dependencyIds.includes(key),\n )\n )\n issue(\"Unknown program dependency input mapping.\");\n for (const dep of binding.definition.dependencies) {\n if (\n Object.keys(binding.dependencyInputs[dep.revisionRef.id] ?? {}).some(\n (key) => dep.dynamicInputKeys.includes(key),\n )\n )\n issue(\"Fixed dependency arguments cannot also be guest-writable.\");\n }\n }\n}\n\nexport const PageActionSchema = ActionBindingSchema.omit({\n commandRevisionRef: true,\n source: true,\n sourceIntentSchemaRevisionRef: true,\n inputSchemaRevisionRef: true,\n compensationCommandRevisionRef: true,\n resultSchemaRevisionRef: true,\n})\n .extend({\n command: ContractIdentifierSchema,\n port: ContractIdentifierSchema,\n compensationCommand: ContractIdentifierSchema.optional(),\n })\n .strict();\n\nconst PageEventEffectSchema = z\n .object({\n port: ContractIdentifierSchema,\n refresh: z.array(ContractIdentifierSchema).min(1).max(128),\n })\n .strict();\n\nexport interface PageNode {\n id: string;\n component: string;\n kind?: z.infer<typeof RenderNodeKindSchema>;\n slot?: string;\n props?: z.infer<typeof JsonObjectSchema>;\n bindings?: z.infer<typeof PagePropertyBindingSchema>[];\n model?: z.infer<typeof JsonObjectSchema>;\n style?: z.infer<typeof RenderStyleSchema>;\n layout?: z.infer<typeof RenderLayoutSchema>;\n responsive?: z.infer<typeof RenderResponsiveRuleSchema>[];\n surface?: z.infer<typeof RenderSurfaceSchema>;\n scroll?: z.infer<typeof RenderScrollSchema>;\n activation?: z.infer<typeof RenderActivationSchema>;\n lifecycle?: z.infer<typeof RenderLifecycleSchema>;\n state?: z.infer<typeof RenderNodeStateSchema>;\n access?: z.infer<typeof AccessPolicySchema>;\n activeWhen?: PageStateActivation;\n repeat?: {\n source: z.infer<typeof PageExpressionSchema>;\n keyPath: string[];\n limit?: number;\n };\n data?: z.infer<typeof PageDataSchema>[];\n actions?: z.infer<typeof PageActionSchema>[];\n programActions?: z.infer<typeof PageProgramActionSchema>[];\n on?: z.infer<typeof PageInteractionSchema>[];\n effects?: z.infer<typeof PageEventEffectSchema>[];\n eventPayloads?: Array<{\n port: string;\n expression: z.infer<typeof PageExpressionSchema>;\n }>;\n children?: PageNode[];\n}\n\nexport const PageNodeSchema: z.ZodType<PageNode> = z.lazy(() =>\n z\n .object({\n id: ContractIdentifierSchema,\n component: ContractIdentifierSchema,\n kind: RenderNodeKindSchema.optional(),\n slot: ContractIdentifierSchema.optional(),\n props: JsonObjectSchema.optional(),\n bindings: z.array(PagePropertyBindingSchema).max(128).optional(),\n model: JsonObjectSchema.optional(),\n style: RenderStyleSchema.optional(),\n layout: RenderLayoutSchema.optional(),\n responsive: z.array(RenderResponsiveRuleSchema).optional(),\n surface: RenderSurfaceSchema.optional(),\n scroll: RenderScrollSchema.optional(),\n activation: RenderActivationSchema.optional(),\n lifecycle: RenderLifecycleSchema.optional(),\n state: RenderNodeStateSchema.optional(),\n access: AccessPolicySchema.optional(),\n activeWhen: PageStateActivationSchema.optional(),\n repeat: z\n .object({\n source: PageExpressionSchema,\n keyPath: PageValuePathSchema.min(1),\n limit: z.number().int().min(1).max(1000).optional(),\n })\n .strict()\n .optional(),\n data: z.array(PageDataSchema).optional(),\n actions: z.array(PageActionSchema).optional(),\n programActions: z.array(PageProgramActionSchema).max(128).optional(),\n on: z.array(PageInteractionSchema).optional(),\n effects: z.array(PageEventEffectSchema).optional(),\n eventPayloads: z\n .array(\n z\n .object({\n port: ContractIdentifierSchema,\n expression: PageExpressionSchema,\n })\n .strict(),\n )\n .optional(),\n children: z.array(PageNodeSchema).optional(),\n })\n .strict(),\n);\n\n/** Host-registered, versioned shared state; no executable code or storage keys in Page. */\nexport const PageSharedStateBindingSchema = z.object({\n bindingId: ContractIdentifierSchema,\n provider: z.object({ id: ContractIdentifierSchema, version: z.number().int().positive() }).strict(),\n states: z.record(ContractIdentifierSchema, ContractIdentifierSchema).refine(value => Object.keys(value).length > 0 && Object.keys(value).length <= 32, \"Map 1–32 state slots.\"),\n queries: z.record(ContractIdentifierSchema, ContractIdentifierSchema).refine(value => Object.keys(value).length <= 16, \"Map at most 16 query slots.\"),\n writeInteractions: z.array(ContractIdentifierSchema).max(32),\n}).strict();\nexport type PageSharedStateBinding = z.infer<typeof PageSharedStateBindingSchema>;\n\nconst validateSharedStateBindings = (\n bindings: PageSharedStateBinding[] | undefined,\n states: readonly { stateId: string; scopeNodeId?: string }[],\n queryIds: ReadonlySet<string>,\n interactions: readonly { bindingId: string; targetStateId: string }[],\n context: z.RefinementCtx,\n) => {\n const ids = new Set<string>();\n const owned = new Set<string>();\n for (const [index, binding] of (bindings ?? []).entries()) {\n const issue = (message: string) => context.addIssue({ code: \"custom\", path: [\"sharedStateBindings\", index], message });\n if (ids.has(binding.bindingId)) issue(\"Shared state binding ids must be unique.\");\n ids.add(binding.bindingId);\n const mapped = Object.values(binding.states);\n for (const id of mapped) {\n if (owned.has(id)) issue(\"Shared state mappings must have one owner and distinct slots.\");\n owned.add(id);\n if (!states.some(state => state.stateId === id && !state.scopeNodeId)) issue(`Shared state ${id} must reference a declared root state.`);\n }\n for (const id of Object.values(binding.queries)) if (!queryIds.has(id)) issue(`Unknown shared state query ${id}.`);\n if (new Set(binding.writeInteractions).size !== binding.writeInteractions.length) issue(\"Shared state write interactions must be unique.\");\n for (const id of binding.writeInteractions) {\n const interaction = interactions.find(entry => entry.bindingId === id);\n if (!interaction || !mapped.includes(interaction.targetStateId)) issue(`Shared state write ${id} must target a mapped state.`);\n }\n }\n};\n\nexport const PageSchema = z\n .object({\n contract: z.literal(\"Page\"),\n schemaVersion: z.literal(DECLARATIVE_CONTROL_SCHEMA_VERSION),\n pageId: ContractIdentifierSchema,\n tenantScope: TenantScopeSchema,\n identity: IdentitySchema,\n surface: ProductSurfaceSchema,\n route: RoutePathTemplateSchema,\n routeSpace: ContractIdentifierSchema.optional(),\n lifecycle: DeclarativeLifecycleSchema.default(\"active\"),\n routeStatePresentations: z\n .array(PageRouteStatePresentationSchema)\n .max(8)\n .optional(),\n shell: ContractIdentifierSchema.optional(),\n body: PageNodeSchema,\n state: z.array(PageStateSchema).optional(),\n sharedStateBindings: z.array(PageSharedStateBindingSchema).max(16).optional(),\n entryTransitions: z.array(PageEntrySchema).optional(),\n access: AccessPolicySchema,\n managementAccess: ManagementAccessSchema,\n tokens: z.array(ContractIdentifierSchema).optional(),\n performanceBudget: ContractIdentifierSchema.optional(),\n observationPolicy: ContractIdentifierSchema.optional(),\n privacyClassification: z\n .enum([\"public\", \"internal\", \"confidential\", \"restricted\"])\n .default(\"internal\"),\n })\n .strict()\n .superRefine((page, context) => {\n const ids = new Set<string>();\n const dataIds = new Set<string>();\n const actionIds = new Set<string>();\n const interactionIds = new Set<string>();\n const sharedInteractions: { bindingId: string; targetStateId: string }[] = [];\n const visit = (node: PageNode, path: Array<string | number>) => {\n if (ids.has(node.id))\n context.addIssue({\n code: \"custom\",\n path: [...path, \"id\"],\n message: `Duplicate Page node id ${node.id}.`,\n });\n ids.add(node.id);\n for (const [field, values, target] of [\n [\"data\", node.data ?? [], dataIds],\n [\"actions\", node.actions ?? [], actionIds],\n [\"programActions\", node.programActions ?? [], actionIds],\n [\"on\", node.on ?? [], interactionIds],\n ] as const)\n for (const [index, value] of values.entries()) {\n if (target.has(value.bindingId))\n context.addIssue({\n code: \"custom\",\n path: [...path, field, index, \"bindingId\"],\n message: `Duplicate Page binding id ${value.bindingId}.`,\n });\n target.add(value.bindingId);\n }\n sharedInteractions.push(...(node.on ?? []));\n (node.children ?? []).forEach((child, index) =>\n visit(child, [...path, \"children\", index]),\n );\n };\n visit(page.body, [\"body\"]);\n validateSharedStateBindings(page.sharedStateBindings, page.state ?? [], dataIds, sharedInteractions, context);\n const stateIds = (page.state ?? []).map((entry) => entry.stateId);\n if (new Set(stateIds).size !== stateIds.length)\n context.addIssue({\n code: \"custom\",\n path: [\"state\"],\n message: \"Page state ids must be unique.\",\n });\n });\n\nexport const ResolvedPageSchema = z\n .object({\n contract: z.literal(\"Page\"),\n schemaVersion: z.literal(DECLARATIVE_CONTROL_SCHEMA_VERSION),\n pageId: ContractIdentifierSchema,\n tenantScope: TenantScopeSchema,\n identity: IdentitySchema,\n supportedSurfaces: z.array(ProductSurfaceSchema).min(1),\n lifecycle: DeclarativeLifecycleSchema,\n legacyRoutePolicy: LegacyRoutePolicySchema.optional(),\n migrationEquivalence: PageMigrationEquivalenceSchema.optional(),\n routeStatePresentations: z\n .array(PageRouteStatePresentationSchema)\n .max(8)\n .optional(),\n routeClaims: z\n .array(\n z.union([\n DeclarativeRouteClaimSchema,\n LegacyDeclarativeRouteClaimSchema,\n ]),\n )\n .min(1),\n shellRevisionRef: RevisionRefSchema,\n renderTree: RenderTreeSchema,\n capabilityInstances: z.array(CapabilityInstanceSchema).min(1),\n stateDefinitions: z.array(PageStateDefinitionSchema).optional(),\n sharedStateBindings: z.array(PageSharedStateBindingSchema).max(16).optional(),\n entryTransitions: z.array(PageEntryTransitionSchema).optional(),\n interactionBindings: z.array(InteractionBindingSchema).optional(),\n ontologyBindings: z.array(PersistedOntologyBindingSchema),\n queryBindings: z.array(QueryBindingSchema).optional(),\n actionBindings: z.array(ActionBindingSchema),\n programBindings: z.array(ProgramBindingSchema).max(128).optional(),\n pageAccessPolicy: AccessPolicySchema,\n managementAccess: ManagementAccessSchema,\n tokenRevisionRefs: z.array(RevisionRefSchema).min(1),\n performanceBudgetRef: RevisionRefSchema,\n observationPolicyRevisionRef: RevisionRefSchema,\n privacyClassification: z.enum([\n \"public\",\n \"internal\",\n \"confidential\",\n \"restricted\",\n ]),\n })\n .strict()\n .superRefine((value, context) => {\n validateProgramBindingTargets(value, context);\n validateDeclaredRouteSurfaces(\n value.supportedSurfaces,\n value.routeClaims,\n context,\n );\n const routeStatePresentations = value.routeStatePresentations ?? [];\n if (\n uniqueArray(\n routeStatePresentations,\n (candidate) => `${candidate.surface}:${candidate.state}`,\n )\n ) {\n context.addIssue({\n code: \"custom\",\n path: [\"routeStatePresentations\"],\n message:\n \"Page route-state presentations must be unique per surface and state.\",\n });\n }\n routeStatePresentations.forEach((presentation, index) => {\n if (!value.supportedSurfaces.includes(presentation.surface)) {\n context.addIssue({\n code: \"custom\",\n path: [\"routeStatePresentations\", index, \"surface\"],\n message:\n \"Page route-state presentation surface must be declared by supportedSurfaces.\",\n });\n }\n });\n validateSharedStateBindings(value.sharedStateBindings, value.stateDefinitions ?? [], new Set([...(value.queryBindings ?? []), ...value.ontologyBindings].map(binding => binding.bindingId)), value.interactionBindings ?? [], context);\n const stateDefinitions = value.stateDefinitions ?? [];\n const entryTransitions = value.entryTransitions ?? [];\n const interactionBindings = value.interactionBindings ?? [];\n const queryBindings = value.queryBindings ?? [];\n stateDefinitions.forEach((definition, index) => {\n const partitionStateId = definition.preferencePartitionStateId;\n const dynamicLegacySegments =\n definition.legacyBrowserPreferenceImport?.jsonPath?.filter(\n (segment) => typeof segment !== \"string\",\n ) ?? [];\n if (!partitionStateId) {\n if (dynamicLegacySegments.length > 0) {\n context.addIssue({\n code: \"custom\",\n path: [\n \"stateDefinitions\",\n index,\n \"legacyBrowserPreferenceImport\",\n \"jsonPath\",\n ],\n message:\n \"A dynamic legacy preference path requires a declared preference partition state.\",\n });\n }\n return;\n }\n const partitionDefinition = stateDefinitions.find(\n (candidate) => candidate.stateId === partitionStateId,\n );\n if (\n partitionStateId === definition.stateId ||\n !partitionDefinition ||\n partitionDefinition.preferencePartitionStateId\n ) {\n context.addIssue({\n code: \"custom\",\n path: [\"stateDefinitions\", index, \"preferencePartitionStateId\"],\n message:\n \"Preference partitioning must reference a distinct, non-partitioned Page state.\",\n });\n }\n definition.legacyBrowserPreferenceImport?.jsonPath?.forEach(\n (segment, segmentIndex) => {\n if (\n typeof segment !== \"string\" &&\n segment.stateId !== partitionStateId\n ) {\n context.addIssue({\n code: \"custom\",\n path: [\n \"stateDefinitions\",\n index,\n \"legacyBrowserPreferenceImport\",\n \"jsonPath\",\n segmentIndex,\n ],\n message:\n \"A dynamic legacy preference path must use the declared preference partition state.\",\n });\n }\n },\n );\n });\n const uniqueness: Array<\n [\n string,\n readonly {\n [key: string]: unknown;\n }[],\n (candidate: { [key: string]: unknown }) => string,\n ]\n > = [\n [\n \"capabilityInstances\",\n value.capabilityInstances,\n (candidate) => String(candidate.instanceId),\n ],\n [\n \"stateDefinitions\",\n stateDefinitions,\n (candidate) => String(candidate.stateId),\n ],\n [\n \"entryTransitions\",\n entryTransitions,\n (candidate) => String(candidate.transitionId),\n ],\n [\n \"interactionBindings\",\n interactionBindings,\n (candidate) => String(candidate.bindingId),\n ],\n [\n \"ontologyBindings\",\n value.ontologyBindings,\n (candidate) => String(candidate.bindingId),\n ],\n [\n \"queryBindings\",\n queryBindings,\n (candidate) => String(candidate.bindingId),\n ],\n [\n \"actionBindings\",\n value.actionBindings,\n (candidate) => String(candidate.bindingId),\n ],\n ];\n uniqueness.forEach(([field, values, identity]) => {\n if (uniqueArray(values, identity))\n context.addIssue({\n code: \"custom\",\n path: [field],\n message: `${field} identities must be unique.`,\n });\n });\n const instanceIds = new Set(\n value.capabilityInstances.map((instance) => instance.instanceId),\n );\n const stateIds = new Set(stateDefinitions.map((state) => state.stateId));\n value.capabilityInstances.forEach((instance, index) => {\n const ports = new Set<string>();\n const payloadPorts = new Set<string>();\n instance.eventPayloadBindings?.forEach((binding, bindingIndex) => {\n const path = [\n \"capabilityInstances\",\n index,\n \"eventPayloadBindings\",\n bindingIndex,\n ];\n if (payloadPorts.has(binding.port))\n context.addIssue({\n code: \"custom\",\n path,\n message:\n \"An event payload can have only one declarative projection.\",\n });\n payloadPorts.add(binding.port);\n for (const read of collectPageExpressionReads(binding.expression)) {\n if (\n read.root === \"actions\" ||\n read.root === \"result\" ||\n (read.root === \"state\" && !stateIds.has(read.path[0] ?? \"\")) ||\n ((read.root === \"bindings\" || read.root === \"queries\") &&\n ![...value.ontologyBindings, ...queryBindings].some(\n (candidate) => candidate.bindingId === read.path[0],\n ))\n )\n context.addIssue({\n code: \"custom\",\n path,\n message:\n \"Event payload projections require local event, model, scope, declared query results, or declared state.\",\n });\n }\n });\n\n instance.eventEffects?.forEach((effect, effectIndex) => {\n const path = [\n \"capabilityInstances\",\n index,\n \"eventEffects\",\n effectIndex,\n ];\n if (\n effect.sourceIntentSchemaRevisionRef.kind !== \"schema\" ||\n ports.has(effect.sourcePort)\n )\n context.addIssue({\n code: \"custom\",\n path,\n message:\n \"Event effects require one exact source schema per output port.\",\n });\n ports.add(effect.sourcePort);\n if (\n value.actionBindings.some(\n (binding) =>\n binding.source.capabilityInstanceId === instance.instanceId &&\n binding.source.port === effect.sourcePort,\n )\n )\n context.addIssue({\n code: \"custom\",\n path,\n message:\n \"An Action output port must declare refresh effects through Action.success.\",\n });\n for (const id of effect.refreshBindingIds)\n if (\n ![...value.ontologyBindings, ...queryBindings].some(\n (binding) => binding.bindingId === id,\n )\n )\n context.addIssue({\n code: \"custom\",\n path,\n message: \"Event effect references an unknown query binding.\",\n });\n });\n });\n\n const repeatNodes = new Set(\n value.renderTree.nodes\n .filter((node) => node.repeat)\n .map((node) => node.nodeId),\n );\n stateDefinitions.forEach((definition, index) => {\n if (definition.scopeNodeId && !repeatNodes.has(definition.scopeNodeId))\n context.addIssue({\n code: \"custom\",\n path: [\"stateDefinitions\", index, \"scopeNodeId\"],\n message:\n \"Instance state must reference an existing repeated RenderNode.\",\n });\n if (definition.initialValue && !definition.scopeNodeId) {\n const expression = definition.initialValue;\n const source =\n expression.kind === \"read\"\n ? stateDefinitions.find(\n (state) =>\n state.stateId === expression.path[0] && !state.scopeNodeId,\n )\n : undefined;\n if (\n !source ||\n source.initialValue ||\n ![\"tenant-preference\", \"url-with-tenant-preference\"].includes(\n source.persistence,\n )\n )\n context.addIssue({\n code: \"custom\",\n path: [\"stateDefinitions\", index, \"initialValue\"],\n message:\n \"Root initialization requires an independently hydrated tenant preference; initialization chains are forbidden.\",\n });\n }\n if (definition.initialValue) {\n for (const read of collectPageExpressionReads(\n definition.initialValue,\n )) {\n if (\n ![\"scope\", \"state\"].includes(read.root) ||\n (read.root === \"state\" &&\n !stateDefinitions.some(\n (state) => state.stateId === read.path[0] && !state.scopeNodeId,\n ))\n )\n context.addIssue({\n code: \"custom\",\n path: [\"stateDefinitions\", index, \"initialValue\"],\n message:\n \"Instance initial values can read only their item scope and declared Page state.\",\n });\n }\n }\n });\n value.renderTree.nodes.forEach((node, index) => {\n if (!node.repeat) return;\n for (const read of collectPageExpressionReads(node.repeat.source)) {\n if (\n read.root === \"actions\" ||\n read.root === \"intent\" ||\n read.root === \"result\" ||\n read.root === \"model\" ||\n (read.root === \"state\" && !stateIds.has(read.path[0] ?? \"\")) ||\n ((read.root === \"bindings\" || read.root === \"queries\") &&\n ![...value.ontologyBindings, ...queryBindings].some(\n (binding) => binding.bindingId === read.path[0],\n ))\n )\n context.addIssue({\n code: \"custom\",\n path: [\"renderTree\", \"nodes\", index, \"repeat\", \"source\"],\n message:\n \"Repeated nodes require declared Page state, query results, or parent item scope.\",\n });\n }\n });\n\n // A declaration can consume its own instance or ancestors, never an arbitrary sibling row.\n const renderNodesById = new Map(\n value.renderTree.nodes.map((node) => [node.nodeId, node]),\n );\n const instanceNodes = new Map(\n value.capabilityInstances.map((instance) => [\n instance.instanceId,\n instance.nodeId,\n ]),\n );\n const scopesForNode = (nodeId: string | undefined): Set<string> => {\n const scopes = new Set<string>();\n const visited = new Set<string>();\n let node = nodeId ? renderNodesById.get(nodeId) : undefined;\n while (node && !visited.has(node.nodeId)) {\n visited.add(node.nodeId);\n if (node.repeat) scopes.add(node.nodeId);\n node = node.parentNodeId\n ? renderNodesById.get(node.parentNodeId)\n : undefined;\n }\n return scopes;\n };\n const queryOwners = new Map(\n [...value.ontologyBindings, ...queryBindings].map((binding) => [\n binding.bindingId,\n [\n ...scopesForNode(\n instanceNodes.get(binding.target.capabilityInstanceId),\n ),\n ][0],\n ]),\n );\n const actionScopes = new Map(\n value.actionBindings.map((binding) => [\n binding.bindingId,\n scopesForNode(instanceNodes.get(binding.source.capabilityInstanceId)),\n ]),\n );\n const actionOwners = new Map(\n [...actionScopes].map(([id, scopes]) => [id, [...scopes][0]]),\n );\n if (actionOwners.size !== value.actionBindings.length)\n context.addIssue({\n code: \"custom\",\n path: [\"actionBindings\"],\n message: \"Action binding identifiers must be unique.\",\n });\n const checkScopedReads = (\n reads: ReturnType<typeof collectPageExpressionReads>,\n scopes: Set<string>,\n path: (string | number)[],\n ) => {\n for (const read of reads) {\n if (\n read.root === \"queries\" &&\n (!read.path[0] ||\n ![...value.ontologyBindings, ...queryBindings].some(\n (binding) => binding.bindingId === read.path[0],\n ) ||\n read.path.length !== 2 ||\n ![\"status\", \"hasData\", \"errorCode\"].includes(read.path[1] ?? \"\"))\n )\n context.addIssue({\n code: \"custom\",\n path,\n message:\n \"Query lifecycle expressions require a declared binding and may read only status, hasData, or errorCode.\",\n });\n const owner =\n read.root === \"state\"\n ? stateDefinitions.find((state) => state.stateId === read.path[0])\n ?.scopeNodeId\n : read.root === \"bindings\"\n ? queryOwners.get(read.path[0])\n : read.root === \"queries\"\n ? queryOwners.get(read.path[0])\n : read.root === \"actions\"\n ? actionOwners.get(read.path[0])\n : undefined;\n // A parent may observe only aggregate pending for its descendant action scopes.\n // Error codes and individual row state remain scoped; unrelated repeat branches cannot aggregate.\n const pendingAggregate =\n read.root === \"actions\" &&\n read.path.length === 2 &&\n read.path[1] === \"pending\" &&\n actionScopes.has(read.path[0]) &&\n [...scopes].every((scope) =>\n actionScopes.get(read.path[0])!.has(scope),\n );\n if (owner && !scopes.has(owner) && !pendingAggregate)\n context.addIssue({\n code: \"custom\",\n path,\n message:\n \"A binding cannot read state, query results, or individual action status from a sibling or descendant instance.\",\n });\n }\n };\n const checkScopedSources = (\n sources: Record<\n string,\n | z.infer<typeof BindingSourceSchema>\n | z.infer<typeof InteractionBindingSourceSchema>\n | z.infer<typeof FileFieldBindingSourceSchema>\n >,\n scopes: Set<string>,\n path: (string | number)[],\n ) => {\n Object.entries(sources).forEach(([name, source]) => {\n if (source.kind === \"expression\")\n checkScopedReads(\n collectPageExpressionReads(source.expression),\n scopes,\n [...path, name],\n );\n if (source.kind === \"page-state\")\n checkScopedReads(\n [{ kind: \"read\", root: \"state\", path: [source.stateId] }],\n scopes,\n [...path, name],\n );\n if (source.kind === \"binding-field\")\n checkScopedReads(\n [{ kind: \"read\", root: \"bindings\", path: [source.bindingId] }],\n scopes,\n [...path, name],\n );\n if (source.kind === \"scope-field\" && scopes.size === 0)\n context.addIssue({\n code: \"custom\",\n path: [...path, name],\n message: \"A scope field requires a repeated instance.\",\n });\n });\n };\n value.capabilityInstances.forEach((instance, index) =>\n instance.eventPayloadBindings?.forEach((binding, bindingIndex) =>\n checkScopedReads(\n collectPageExpressionReads(binding.expression),\n scopesForNode(instance.nodeId),\n [\"capabilityInstances\", index, \"eventPayloadBindings\", bindingIndex],\n ),\n ),\n );\n value.capabilityInstances.forEach((instance, index) =>\n instance.propertyBindings?.forEach((binding, bindingIndex) => {\n checkScopedReads(\n collectPageExpressionReads(binding.expression),\n scopesForNode(instance.nodeId),\n [\"capabilityInstances\", index, \"propertyBindings\", bindingIndex],\n );\n }),\n );\n for (const [collection, bindings] of [\n [\"ontologyBindings\", value.ontologyBindings],\n [\"queryBindings\", queryBindings],\n ] as const) {\n bindings.forEach((binding, index) =>\n checkScopedSources(\n binding.parameters,\n scopesForNode(instanceNodes.get(binding.target.capabilityInstanceId)),\n [collection, index, \"parameters\"],\n ),\n );\n }\n (value.programBindings ?? []).forEach((binding, index) => {\n const scopes = scopesForNode(\n instanceNodes.get(binding.source.capabilityInstanceId),\n );\n checkScopedSources(binding.inputMapping, scopes, [\n \"programBindings\",\n index,\n \"inputMapping\",\n ]);\n for (const [id, mapping] of Object.entries(binding.dependencyInputs))\n checkScopedSources(mapping, scopes, [\n \"programBindings\",\n index,\n \"dependencyInputs\",\n id,\n ]);\n if (binding.when) {\n const reads = collectPageExpressionReads(binding.when);\n checkScopedReads(reads, scopes, [\"programBindings\", index, \"when\"]);\n if (\n reads.some(\n (read) => read.root === \"state\" && !stateIds.has(read.path[0]!),\n )\n )\n context.addIssue({\n code: \"custom\",\n path: [\"programBindings\", index, \"when\"],\n message: \"Program condition references an unknown Page state.\",\n });\n }\n });\n value.actionBindings.forEach((binding, index) => {\n const scopes = scopesForNode(\n instanceNodes.get(binding.source.capabilityInstanceId),\n );\n checkScopedSources(binding.inputMapping, scopes, [\n \"actionBindings\",\n index,\n \"inputMapping\",\n ]);\n for (const [fileIndex, file] of (binding.fileInputs ?? []).entries()) {\n if (file.source.kind === \"page-state\") {\n const stateId = file.source.stateId;\n const state = stateDefinitions.find(\n (candidate) => candidate.stateId === stateId,\n );\n if (!state || state.persistence !== \"none\")\n context.addIssue({\n code: \"custom\",\n path: [\"actionBindings\", index, \"fileInputs\", fileIndex],\n message:\n \"File handles require declared nonpersistent Page state.\",\n });\n checkScopedSources({ file: file.source }, scopes, [\n \"actionBindings\",\n index,\n \"fileInputs\",\n fileIndex,\n ]);\n }\n }\n\n if (binding.when) {\n const reads = collectPageExpressionReads(binding.when);\n checkScopedReads(reads, scopes, [\"actionBindings\", index, \"when\"]);\n for (const read of reads)\n if (read.root === \"state\" && !stateIds.has(read.path[0]!))\n context.addIssue({\n code: \"custom\",\n path: [\"actionBindings\", index, \"when\"],\n message: \"Action condition references an unknown Page state.\",\n });\n }\n });\n interactionBindings.forEach((binding, index) => {\n const sourceScopes = scopesForNode(\n instanceNodes.get(binding.source.capabilityInstanceId),\n );\n const targetScope = stateDefinitions.find(\n (state) => state.stateId === binding.targetStateId,\n )?.scopeNodeId;\n if (targetScope && !sourceScopes.has(targetScope))\n context.addIssue({\n code: \"custom\",\n path: [\"interactionBindings\", index, \"targetStateId\"],\n message:\n \"An interaction must target its own instance or an ancestor.\",\n });\n checkScopedSources(\n binding.inputMapping,\n targetScope ? scopesForNode(targetScope) : new Set(),\n [\"interactionBindings\", index, \"inputMapping\"],\n );\n });\n value.renderTree.nodes.forEach((node, index) => {\n if (node.repeat)\n checkScopedReads(\n collectPageExpressionReads(node.repeat.source),\n scopesForNode(node.parentNodeId),\n [\"renderTree\", \"nodes\", index, \"repeat\", \"source\"],\n );\n });\n\n entryTransitions.forEach((transition, transitionIndex) => {\n if (\n transition.gestureSource &&\n (!instanceIds.has(transition.gestureSource.capabilityInstanceId) ||\n !interactionBindings.some(\n (binding) =>\n binding.source.capabilityInstanceId ===\n transition.gestureSource!.capabilityInstanceId &&\n binding.source.port === transition.gestureSource!.port,\n ))\n ) {\n context.addIssue({\n code: \"custom\",\n path: [\"entryTransitions\", transitionIndex, \"gestureSource\"],\n message:\n \"Entry gesture source must match an existing capability interaction source.\",\n });\n }\n if (\n transition.targetRef.kind === \"page\" &&\n transition.targetRef.id === value.pageId\n ) {\n context.addIssue({\n code: \"custom\",\n path: [\"entryTransitions\", transitionIndex, \"targetRef\"],\n message: \"A Page cannot route into itself on entry.\",\n });\n }\n forEachPageStateCondition(\n transition.activation,\n (condition, conditionPath) => {\n if (!stateIds.has(condition.stateId)) {\n context.addIssue({\n code: \"custom\",\n path: [\n \"entryTransitions\",\n transitionIndex,\n \"activation\",\n ...conditionPath,\n \"stateId\",\n ],\n message: `Entry transition references unknown Page state ${condition.stateId}.`,\n });\n }\n },\n );\n const declaredRouteParameters = new Set(\n value.routeClaims.flatMap((claim) =>\n [...claim.pathTemplate.matchAll(/:([A-Za-z][A-Za-z0-9_-]*)/g)].map(\n (match) => match[1],\n ),\n ),\n );\n for (const source of [\n ...Object.values(transition.pathParameters),\n ...Object.values(transition.query.set),\n ]) {\n if (\n source.kind === \"route-parameter\" &&\n !declaredRouteParameters.has(source.name)\n ) {\n context.addIssue({\n code: \"custom\",\n path: [\"entryTransitions\", transitionIndex],\n message: `Entry transition references unknown source route parameter ${source.name}.`,\n });\n }\n }\n const stateSources = [\n ...Object.values(transition.pathParameters).flatMap((source) =>\n source.kind === \"page-state\" ? [source.stateId] : [],\n ),\n ...Object.values(transition.query.set).flatMap((source) =>\n source.kind === \"page-state\" ? [source.stateId] : [],\n ),\n ];\n stateSources.forEach((stateId) => {\n if (!stateIds.has(stateId)) {\n context.addIssue({\n code: \"custom\",\n path: [\"entryTransitions\", transitionIndex],\n message: `Entry transition references unknown Page state ${stateId}.`,\n });\n }\n });\n });\n const validatePageStateSources = (\n sources: Record<\n string,\n | z.infer<typeof BindingSourceSchema>\n | z.infer<typeof InteractionBindingSourceSchema>\n | z.infer<typeof FileFieldBindingSourceSchema>\n >,\n path: (string | number)[],\n ) => {\n Object.entries(sources).forEach(([name, source]) => {\n if (source.kind === \"expression\") {\n for (const read of collectPageExpressionReads(source.expression)) {\n if (\n (read.root === \"state\" &&\n (!read.path[0] || !stateIds.has(read.path[0]))) ||\n read.root === \"model\" ||\n read.root === \"bindings\" ||\n (read.root === \"result\" && path[0] !== \"interactionBindings\")\n ) {\n context.addIssue({\n code: \"custom\",\n path: [...path, name, \"expression\"],\n message:\n \"Expression references unavailable context or an undeclared Page state.\",\n });\n }\n }\n }\n if (source.kind === \"page-state\" && !stateIds.has(source.stateId)) {\n context.addIssue({\n code: \"custom\",\n path: [...path, name, \"stateId\"],\n message: `Unknown Page state: ${source.stateId}`,\n });\n }\n });\n };\n interactionBindings.forEach((binding, index) => {\n if (!instanceIds.has(binding.source.capabilityInstanceId)) {\n context.addIssue({\n code: \"custom\",\n path: [\n \"interactionBindings\",\n index,\n \"source\",\n \"capabilityInstanceId\",\n ],\n message:\n \"Interaction binding sources an unknown capability instance.\",\n });\n }\n if (!stateIds.has(binding.targetStateId)) {\n context.addIssue({\n code: \"custom\",\n path: [\"interactionBindings\", index, \"targetStateId\"],\n message: \"Interaction binding targets an unknown Page state.\",\n });\n }\n validatePageStateSources(binding.inputMapping, [\n \"interactionBindings\",\n index,\n \"inputMapping\",\n ]);\n if (\n Object.values(binding.inputMapping).some(\n (source) =>\n source.kind === \"result-field\" ||\n (source.kind === \"expression\" &&\n collectPageExpressionReads(source.expression).some(\n (read) => read.root === \"result\",\n )),\n )\n ) {\n const action = value.actionBindings.find(\n (candidate) =>\n candidate.source.capabilityInstanceId ===\n binding.source.capabilityInstanceId &&\n candidate.source.port === binding.source.port,\n );\n if (!action) {\n context.addIssue({\n code: \"custom\",\n path: [\"interactionBindings\", index, \"source\"],\n message:\n \"Result-field interactions must source one declared Action binding.\",\n });\n } else if (\n !binding.sourceResultSchemaRevisionRef ||\n !exactRevisionRef(\n binding.sourceResultSchemaRevisionRef,\n action.resultSchemaRevisionRef,\n )\n ) {\n context.addIssue({\n code: \"custom\",\n path: [\n \"interactionBindings\",\n index,\n \"sourceResultSchemaRevisionRef\",\n ],\n message:\n \"Interaction result schema must exactly match the sourced Action result schema.\",\n });\n }\n }\n });\n value.capabilityInstances.forEach((instance, index) => {\n const paths: string[][] = [];\n instance.propertyBindings?.forEach((binding, bindingIndex) => {\n const path = [\n \"capabilityInstances\",\n index,\n \"propertyBindings\",\n bindingIndex,\n ];\n if (\n instance.capabilityRevisionRef.id.startsWith(\n \"monkeys.design.component.\",\n )\n ) {\n const [group, member, field] = binding.targetPath;\n const messages = instance.properties.messages;\n const message =\n messages && typeof messages === \"object\" && !Array.isArray(messages)\n ? messages[member]\n : undefined;\n const declaredMessage =\n message && typeof message === \"object\" && !Array.isArray(message);\n const allowed =\n (group === \"props\" && binding.targetPath.length >= 2) ||\n (group === \"messages\" &&\n declaredMessage &&\n ((field === \"values\" && binding.targetPath.length >= 3) ||\n (binding.targetPath.length === 3 &&\n (field === \"key\" || field === \"textI18n\") &&\n Object.prototype.hasOwnProperty.call(message, field))));\n if (!allowed)\n context.addIssue({\n code: \"custom\",\n path: [...path, \"targetPath\"],\n message:\n \"Component expressions can update property values or declared message fields, never executable wiring.\",\n });\n }\n\n if (\n paths.some((previous) =>\n previous\n .slice(0, Math.min(previous.length, binding.targetPath.length))\n .every((key, i) => key === binding.targetPath[i]),\n )\n ) {\n context.addIssue({\n code: \"custom\",\n path: [...path, \"targetPath\"],\n message: \"Dynamic property targets must not overlap.\",\n });\n }\n paths.push(binding.targetPath);\n visitPageExpression(binding.expression, (expression) => {\n if (expression.kind !== \"read\") return;\n if (\n expression.root === \"state\" &&\n (!expression.path[0] || !stateIds.has(expression.path[0]))\n ) {\n context.addIssue({\n code: \"custom\",\n path: [...path, \"expression\"],\n message:\n \"Property expressions must reference a declared Page state.\",\n });\n }\n if (\n (expression.root === \"bindings\" || expression.root === \"queries\") &&\n ![...value.ontologyBindings, ...queryBindings].some(\n (candidate) => candidate.bindingId === expression.path[0],\n )\n ) {\n context.addIssue({\n code: \"custom\",\n path: [...path, \"expression\"],\n message:\n \"Property expressions must reference a declared Page query binding.\",\n });\n }\n if (\n expression.root === \"actions\" &&\n (expression.path.length !== 2 ||\n !actionOwners.has(expression.path[0]) ||\n ![\"pending\", \"errorCode\"].includes(expression.path[1]))\n ) {\n context.addIssue({\n code: \"custom\",\n path: [...path, \"expression\"],\n message:\n \"Property expressions may read only pending or errorCode from a declared Action binding.\",\n });\n }\n if (expression.root === \"intent\" || expression.root === \"result\") {\n context.addIssue({\n code: \"custom\",\n path: [...path, \"expression\"],\n message:\n \"Property expressions cannot read transient event or Action results.\",\n });\n }\n });\n });\n if (!instance.activationWhen) return;\n forEachPageStateCondition(\n instance.activationWhen,\n (condition, conditionPath) => {\n if (!stateIds.has(condition.stateId)) {\n context.addIssue({\n code: \"custom\",\n path: [\n \"capabilityInstances\",\n index,\n \"activationWhen\",\n ...conditionPath,\n \"stateId\",\n ],\n message:\n \"Capability activation condition references an unknown Page state.\",\n });\n }\n },\n );\n });\n value.ontologyBindings.forEach((binding, index) => {\n if (!instanceIds.has(binding.target.capabilityInstanceId)) {\n context.addIssue({\n code: \"custom\",\n path: [\"ontologyBindings\", index, \"target\", \"capabilityInstanceId\"],\n message: \"Ontology binding targets an unknown capability instance.\",\n });\n }\n validatePageStateSources(binding.parameters, [\n \"ontologyBindings\",\n index,\n \"parameters\",\n ]);\n });\n queryBindings.forEach((binding, index) => {\n if (!instanceIds.has(binding.target.capabilityInstanceId)) {\n context.addIssue({\n code: \"custom\",\n path: [\"queryBindings\", index, \"target\", \"capabilityInstanceId\"],\n message: \"Query binding targets an unknown capability instance.\",\n });\n }\n validatePageStateSources(binding.parameters, [\n \"queryBindings\",\n index,\n \"parameters\",\n ]);\n if (binding.queryWhen) {\n forEachPageStateCondition(\n binding.queryWhen,\n (condition, conditionPath) => {\n if (!stateIds.has(condition.stateId)) {\n context.addIssue({\n code: \"custom\",\n path: [\n \"queryBindings\",\n index,\n \"queryWhen\",\n ...conditionPath,\n \"stateId\",\n ],\n message:\n \"Query activation condition references an unknown Page state.\",\n });\n }\n },\n );\n }\n if (binding.refreshPolicy?.when) {\n const path = [\"queryBindings\", index, \"refreshPolicy\", \"when\"];\n const reads = collectExternalPageExpressionReads(\n binding.refreshPolicy.when,\n );\n checkScopedReads(\n reads,\n scopesForNode(instanceNodes.get(binding.target.capabilityInstanceId)),\n path,\n );\n for (const read of reads)\n if (read.root === \"actions\" && !actionScopes.has(read.path[0]))\n context.addIssue({\n code: \"custom\",\n path,\n message:\n \"Automatic refresh condition references an unknown action binding.\",\n });\n }\n const effectOwners = new Set(\n binding.stateEffects?.map(\n (effect) =>\n stateDefinitions.find(\n (definition) => definition.stateId === effect.targetStateId,\n )?.scopeNodeId ?? \"\",\n ) ?? [],\n );\n if (effectOwners.size > 1)\n context.addIssue({\n code: \"custom\",\n path: [\"queryBindings\", index, \"stateEffects\"],\n message:\n \"A query completion must update a single state owner atomically.\",\n });\n binding.stateEffects?.forEach((effect, effectIndex) => {\n const path = [\"queryBindings\", index, \"stateEffects\", effectIndex];\n const state = stateDefinitions.find(\n (definition) => definition.stateId === effect.targetStateId,\n );\n const scopes = scopesForNode(\n instanceNodes.get(binding.target.capabilityInstanceId),\n );\n if (!state || (state.scopeNodeId && !scopes.has(state.scopeNodeId)))\n context.addIssue({\n code: \"custom\",\n path: [...path, \"targetStateId\"],\n message:\n \"A query effect must target declared state in its own scope or an ancestor.\",\n });\n for (const expression of [\n effect.value,\n ...(effect.when ? [effect.when] : []),\n ]) {\n const reads = collectPageExpressionReads(expression);\n checkScopedReads(\n reads,\n state?.scopeNodeId ? scopesForNode(state.scopeNodeId) : new Set(),\n path,\n );\n for (const read of reads)\n if (read.root === \"state\" && !stateIds.has(read.path[0]!))\n context.addIssue({\n code: \"custom\",\n path,\n message: \"Query effect references an unknown Page state.\",\n });\n }\n });\n binding.resultStateBindings?.forEach((resultBinding, resultIndex) => {\n const stateDefinition = stateDefinitions.find(\n (definition) => definition.stateId === resultBinding.targetStateId,\n );\n if (!stateDefinition) {\n context.addIssue({\n code: \"custom\",\n path: [\n \"queryBindings\",\n index,\n \"resultStateBindings\",\n resultIndex,\n \"targetStateId\",\n ],\n message: \"Query result binding targets an unknown Page state.\",\n });\n return;\n }\n if (\n !exactRevisionRef(\n resultBinding.targetStateSchemaRevisionRef,\n stateDefinition.schemaRevisionRef,\n )\n ) {\n context.addIssue({\n code: \"custom\",\n path: [\n \"queryBindings\",\n index,\n \"resultStateBindings\",\n resultIndex,\n \"targetStateSchemaRevisionRef\",\n ],\n message:\n \"Query result binding must pin the exact target Page-state schema revision.\",\n });\n }\n if (stateDefinition.persistence !== \"none\") {\n context.addIssue({\n code: \"custom\",\n path: [\n \"queryBindings\",\n index,\n \"resultStateBindings\",\n resultIndex,\n \"targetStateId\",\n ],\n message:\n \"Query result state projections must target non-persistent Page state.\",\n });\n }\n });\n });\n const dependencyBindings = [...value.ontologyBindings, ...queryBindings];\n analyzePageBindingDependencies(dependencyBindings).errors.forEach(\n (error) => {\n const ontologyIndex = value.ontologyBindings.findIndex(\n (binding) => binding.bindingId === error.bindingId,\n );\n const collection =\n ontologyIndex >= 0 ? \"ontologyBindings\" : \"queryBindings\";\n const index =\n ontologyIndex >= 0\n ? ontologyIndex\n : queryBindings.findIndex(\n (binding) => binding.bindingId === error.bindingId,\n );\n context.addIssue({\n code: \"custom\",\n path: [collection, index, \"parameters\"],\n message: `Page binding dependency ${error.code}: ${error.dependencyId ?? error.bindingId}`,\n });\n },\n );\n const projectedQueryStateIds = new Set<string>();\n queryBindings.forEach((binding, index) => {\n binding.resultStateBindings?.forEach((resultBinding, resultIndex) => {\n if (projectedQueryStateIds.has(resultBinding.targetStateId)) {\n context.addIssue({\n code: \"custom\",\n path: [\n \"queryBindings\",\n index,\n \"resultStateBindings\",\n resultIndex,\n \"targetStateId\",\n ],\n message:\n \"One Page state can have only one Server Query result owner.\",\n });\n }\n projectedQueryStateIds.add(resultBinding.targetStateId);\n });\n });\n queryBindings.forEach((binding, index) => {\n if (binding.execution !== \"server\") return;\n const readStateIds = new Set(\n Object.values(binding.parameters).flatMap((source) =>\n source.kind === \"page-state\" ? [source.stateId] : [],\n ),\n );\n if (binding.queryWhen) {\n forEachPageStateCondition(binding.queryWhen, (condition) =>\n readStateIds.add(condition.stateId),\n );\n }\n const feedbackStateId = [...readStateIds].find((stateId) =>\n projectedQueryStateIds.has(stateId),\n );\n if (feedbackStateId) {\n context.addIssue({\n code: \"custom\",\n path: [\"queryBindings\", index],\n message: `Server Query bindings cannot read projected Query result state: ${feedbackStateId}`,\n });\n }\n });\n const cursorWindowBindings = [\n ...value.ontologyBindings.map((binding, index) => ({\n binding,\n index,\n collection: \"ontologyBindings\" as const,\n })),\n ...queryBindings.map((binding, index) => ({\n binding,\n index,\n collection: \"queryBindings\" as const,\n })),\n ].filter((candidate) => candidate.binding.cursorWindow !== undefined);\n const cursorWindowSources = new Set<string>();\n cursorWindowBindings.forEach(({ binding, index, collection }) => {\n const sourceId =\n binding.cursorWindow!.sourceCapabilityInstanceId ??\n binding.target.capabilityInstanceId;\n if (!instanceIds.has(sourceId))\n context.addIssue({\n code: \"custom\",\n path: [\n collection,\n index,\n \"cursorWindow\",\n \"sourceCapabilityInstanceId\",\n ],\n message:\n \"Cursor-window source must reference a declared capability instance.\",\n });\n const sourceScopes = [...scopesForNode(instanceNodes.get(sourceId))];\n const targetScopes = [\n ...scopesForNode(\n instanceNodes.get(binding.target.capabilityInstanceId),\n ),\n ];\n if (\n sourceScopes.length !== targetScopes.length ||\n sourceScopes.some((id, index) => id !== targetScopes[index])\n )\n context.addIssue({\n code: \"custom\",\n path: [\n collection,\n index,\n \"cursorWindow\",\n \"sourceCapabilityInstanceId\",\n ],\n message:\n \"Cursor-window source and query target must share the same repeated scope.\",\n });\n const sourceKey = `${sourceId}:${binding.cursorWindow!.pageChangePort}`;\n if (cursorWindowSources.has(sourceKey)) {\n context.addIssue({\n code: \"custom\",\n path: [collection, index, \"cursorWindow\", \"pageChangePort\"],\n message:\n \"A capability output port can govern at most one cursor-window binding.\",\n });\n }\n cursorWindowSources.add(sourceKey);\n const conflictingInteraction = interactionBindings.some(\n (candidate) =>\n candidate.source.capabilityInstanceId === sourceId &&\n candidate.source.port === binding.cursorWindow!.pageChangePort,\n );\n const conflictingAction = [\n ...value.actionBindings,\n ...(value.programBindings ?? []),\n ].some(\n (candidate) =>\n candidate.source.capabilityInstanceId === sourceId &&\n candidate.source.port === binding.cursorWindow!.pageChangePort,\n );\n if (conflictingInteraction || conflictingAction) {\n context.addIssue({\n code: \"custom\",\n path: [collection, index, \"cursorWindow\", \"pageChangePort\"],\n message:\n \"Cursor-window page-change ports cannot also drive Page state or Domain Actions.\",\n });\n }\n });\n (value.programBindings ?? []).forEach((binding, index) => {\n validatePageStateSources(binding.inputMapping, [\n \"programBindings\",\n index,\n \"inputMapping\",\n ]);\n for (const [id, mapping] of Object.entries(binding.dependencyInputs))\n validatePageStateSources(mapping, [\n \"programBindings\",\n index,\n \"dependencyInputs\",\n id,\n ]);\n });\n value.actionBindings.forEach((binding, index) => {\n if (!instanceIds.has(binding.source.capabilityInstanceId)) {\n context.addIssue({\n code: \"custom\",\n path: [\"actionBindings\", index, \"source\", \"capabilityInstanceId\"],\n message: \"Action binding sources an unknown capability instance.\",\n });\n }\n validatePageStateSources(binding.inputMapping, [\n \"actionBindings\",\n index,\n \"inputMapping\",\n ]);\n binding.success.refreshBindingIds.forEach((bindingId) => {\n if (\n !value.ontologyBindings.some(\n (candidate) => candidate.bindingId === bindingId,\n ) &&\n !queryBindings.some((candidate) => candidate.bindingId === bindingId)\n ) {\n context.addIssue({\n code: \"custom\",\n path: [\"actionBindings\", index, \"success\", \"refreshBindingIds\"],\n message: `Unknown refresh binding: ${bindingId}`,\n });\n }\n });\n const effectBindingIds =\n binding.success.resultBindingEffects?.map(\n (effect) => effect.bindingId,\n ) ?? [];\n if (new Set(effectBindingIds).size !== effectBindingIds.length) {\n context.addIssue({\n code: \"custom\",\n path: [\"actionBindings\", index, \"success\", \"resultBindingEffects\"],\n message:\n \"An Action can declare at most one result effect for each target binding.\",\n });\n }\n binding.success.resultBindingEffects?.forEach((effect, effectIndex) => {\n if (\n !value.ontologyBindings.some(\n (candidate) => candidate.bindingId === effect.bindingId,\n ) &&\n !queryBindings.some(\n (candidate) => candidate.bindingId === effect.bindingId,\n )\n ) {\n context.addIssue({\n code: \"custom\",\n path: [\n \"actionBindings\",\n index,\n \"success\",\n \"resultBindingEffects\",\n effectIndex,\n \"bindingId\",\n ],\n message: `Unknown result effect binding: ${effect.bindingId}`,\n });\n }\n if (binding.success.refreshBindingIds.includes(effect.bindingId)) {\n context.addIssue({\n code: \"custom\",\n path: [\n \"actionBindings\",\n index,\n \"success\",\n \"resultBindingEffects\",\n effectIndex,\n \"bindingId\",\n ],\n message:\n \"A result-projected binding cannot also be refreshed by the same Action.\",\n });\n }\n });\n if (binding.success.clipboard) {\n const sourceInstance = value.capabilityInstances.find(\n (instance) =>\n instance.instanceId === binding.source.capabilityInstanceId,\n );\n if (!sourceInstance?.allowedSideEffects.includes(\"clipboard\"))\n context.addIssue({\n code: \"custom\",\n path: [\"actionBindings\", index, \"success\", \"clipboard\"],\n message:\n \"An Action result clipboard effect requires clipboard permission on its source capability instance.\",\n });\n }\n });\n if (value.shellRevisionRef.kind !== \"shell\")\n context.addIssue({\n code: \"custom\",\n path: [\"shellRevisionRef\", \"kind\"],\n message: \"Page shellRevisionRef must reference a shell.\",\n });\n value.capabilityInstances.forEach((instance, index) => {\n if (instance.accessPolicy) {\n [\n ...instance.accessPolicy.groupAllOf,\n ...instance.accessPolicy.groupAnyOf,\n ...instance.accessPolicy.conditionAllOf,\n ].forEach((reference, refIndex) =>\n validateTenantCompatibleReference(\n reference,\n value.tenantScope,\n [\"capabilityInstances\", index, \"accessPolicy\", refIndex],\n context,\n ),\n );\n }\n const refs: Array<[string, z.infer<typeof RevisionRefSchema>, string]> = [\n [\"capabilityRevisionRef\", instance.capabilityRevisionRef, \"capability\"],\n [\"providerRevisionRef\", instance.providerRevisionRef, \"view-provider\"],\n [\n \"propertySchemaRevisionRef\",\n instance.propertySchemaRevisionRef,\n \"schema\",\n ],\n ];\n refs.forEach(([field, reference, expectedKind]) => {\n if (reference.kind !== expectedKind)\n context.addIssue({\n code: \"custom\",\n path: [\"capabilityInstances\", index, field, \"kind\"],\n message: `${field} must reference ${expectedKind}.`,\n });\n });\n });\n value.tokenRevisionRefs.forEach((reference, index) => {\n if (reference.kind !== \"design-token\")\n context.addIssue({\n code: \"custom\",\n path: [\"tokenRevisionRefs\", index, \"kind\"],\n message: \"Page token references must use kind design-token.\",\n });\n });\n if (value.performanceBudgetRef.kind !== \"performance-budget\")\n context.addIssue({\n code: \"custom\",\n path: [\"performanceBudgetRef\", \"kind\"],\n message: \"Page requires a performance-budget revision.\",\n });\n if (value.observationPolicyRevisionRef.kind !== \"observation-policy\")\n context.addIssue({\n code: \"custom\",\n path: [\"observationPolicyRevisionRef\", \"kind\"],\n message: \"Page requires an observation-policy revision.\",\n });\n });\nexport const PageReleaseSchema = z\n .object({\n contract: z.literal(\"PageRelease\"),\n ...ReleaseBaseShape,\n pageRevisionRef: RevisionRefSchema,\n target: z\n .object({\n environmentRef: StableRefSchema,\n surface: ProductSurfaceSchema,\n routeSpaceRevisionRef: RevisionRefSchema,\n normalizedPath: RoutePathTemplateSchema,\n routeClaim: z.union([\n CompiledRouteClaimSchema,\n LegacyCompiledRouteClaimSchema,\n ]),\n legacyRouteTakeoverAuthorization:\n LegacyRouteTakeoverAuthorizationSchema.optional(),\n })\n .strict(),\n })\n .strict()\n .superRefine((value, context) => {\n validateLegacyRestoration(value, \"legacy-route-adapter\", context);\n validateDependencySnapshot(value.dependencySnapshot, context);\n validateReleaseGovernanceScope(value, \"page-release\", context);\n if (value.pageRevisionRef.kind !== \"page\")\n context.addIssue({\n code: \"custom\",\n path: [\"pageRevisionRef\", \"kind\"],\n message: \"Expected a page revision.\",\n });\n if (value.target.environmentRef.kind !== \"environment\")\n context.addIssue({\n code: \"custom\",\n path: [\"target\", \"environmentRef\", \"kind\"],\n message: \"Page release target requires an environment reference.\",\n });\n if (value.target.routeSpaceRevisionRef.kind !== \"route-space\")\n context.addIssue({\n code: \"custom\",\n path: [\"target\", \"routeSpaceRevisionRef\", \"kind\"],\n message: \"Page release target requires a route-space revision.\",\n });\n validateReleaseRouteSurface(value.target, context);\n if (\n value.target.normalizedPath !== value.target.routeClaim.normalizedPath ||\n !exactRevisionRef(\n value.target.routeSpaceRevisionRef,\n value.target.routeClaim.routeSpaceRevisionRef,\n )\n ) {\n context.addIssue({\n code: \"custom\",\n path: [\"target\", \"routeClaim\"],\n message:\n \"Page Release route authority must pin the exact compiled claim and normalized path.\",\n });\n }\n const takeover = value.target.legacyRouteTakeoverAuthorization;\n if (\n takeover &&\n (value.target.routeClaim.kind !== \"canonical\" ||\n takeover.normalizedPath !== value.target.normalizedPath ||\n !exactRevisionRef(\n takeover.routeSpaceRevisionRef,\n value.target.routeSpaceRevisionRef,\n ) ||\n takeover.targetResourceRef.kind !== \"page\" ||\n takeover.targetResourceRef.id !== value.pageRevisionRef.id ||\n takeover.targetResourceRef.ownerRepo !==\n value.pageRevisionRef.ownerRepo)\n ) {\n context.addIssue({\n code: \"custom\",\n path: [\"target\", \"legacyRouteTakeoverAuthorization\"],\n message:\n \"A Page route takeover must bind the exact canonical claim, RouteSpace and target Page.\",\n });\n }\n });\nexport const WorkbenchGroupSchema = z\n .object({\n groupId: ContractIdentifierSchema,\n label: I18nTextSchema,\n iconRef: StableRefSchema.optional(),\n order: z.number().int(),\n collapsedByDefault: z.boolean(),\n accessPolicy: AccessPolicySchema.optional(),\n })\n .strict();\nexport const WorkbenchAppInstanceSchema = z\n .object({\n runtimeContractVersion: ContractIdentifierSchema.optional(),\n instanceId: ContractIdentifierSchema,\n kind: z.enum([\n \"built-in-application\",\n \"workflow-form\",\n \"workflow\",\n \"agent\",\n \"design\",\n \"capability\",\n ]),\n targetRevisionRef: RevisionRefSchema,\n providerRevisionRef: RevisionRefSchema,\n inputSchemaRevisionRef: RevisionRefSchema,\n input: JsonObjectSchema,\n groupId: ContractIdentifierSchema,\n order: z.number().int(),\n display: z\n .object({\n name: I18nTextSchema.optional(),\n iconRef: StableRefSchema.optional(),\n })\n .strict(),\n accessPolicy: AccessPolicySchema,\n })\n .strict();\nexport const WorkbenchSchema = z\n .object({\n contract: z.literal(\"Workbench\"),\n schemaVersion: z.literal(DECLARATIVE_CONTROL_SCHEMA_VERSION),\n workbenchId: ContractIdentifierSchema,\n tenantScope: TenantScopeSchema,\n purpose: z.enum([\"instance\", \"template\"]),\n sourceTemplateRevisionRef: RevisionRefSchema.optional(),\n identity: WorkbenchIdentitySchema,\n supportedSurfaces: z.array(ProductSurfaceSchema).min(1),\n lifecycle: DeclarativeLifecycleSchema,\n routeClaims: z\n .array(\n z.union([\n DeclarativeRouteClaimSchema,\n LegacyDeclarativeRouteClaimSchema,\n ]),\n )\n .min(1),\n groups: z.array(WorkbenchGroupSchema).min(1),\n appInstances: z.array(WorkbenchAppInstanceSchema).min(1),\n defaultEntry: z\n .object({\n groupId: ContractIdentifierSchema,\n instanceId: ContractIdentifierSchema,\n showDefaultGroup: z.boolean(),\n })\n .strict(),\n layout: z\n .object({\n runtimeContractVersion: ContractIdentifierSchema.optional(),\n hostCapabilityRevisionRef: RevisionRefSchema,\n hostProviderRevisionRef: RevisionRefSchema,\n layoutPolicyRevisionRef: RevisionRefSchema,\n tokenRevisionRefs: z.array(RevisionRefSchema).min(1),\n })\n .strict(),\n workbenchAccessPolicy: AccessPolicySchema,\n managementAccess: ManagementAccessSchema,\n personalPreferencesPolicy: z\n .object({\n allowed: z.array(\n z.enum([\"collapsed-groups\", \"recent-entry\", \"layout-density\"]),\n ),\n authority: z.literal(\"identity-overlay\"),\n })\n .strict(),\n performanceBudgetRef: RevisionRefSchema,\n observationPolicyRevisionRef: RevisionRefSchema,\n privacyClassification: z.enum([\n \"public\",\n \"internal\",\n \"confidential\",\n \"restricted\",\n ]),\n })\n .strict()\n .superRefine((value, context) => {\n validateDeclaredRouteSurfaces(\n value.supportedSurfaces,\n value.routeClaims,\n context,\n );\n if (value.purpose === \"template\" && value.sourceTemplateRevisionRef) {\n context.addIssue({\n code: \"custom\",\n path: [\"sourceTemplateRevisionRef\"],\n message: \"Templates cannot derive from another template at runtime.\",\n });\n }\n const duplicateGroup = uniqueArray(value.groups, (group) => group.groupId);\n if (duplicateGroup)\n context.addIssue({\n code: \"custom\",\n path: [\"groups\"],\n message: `Duplicate Workbench group: ${duplicateGroup}`,\n });\n const duplicateInstance = uniqueArray(\n value.appInstances,\n (instance) => instance.instanceId,\n );\n if (duplicateInstance)\n context.addIssue({\n code: \"custom\",\n path: [\"appInstances\"],\n message: `Duplicate Workbench instance: ${duplicateInstance}`,\n });\n const groupIds = new Set(value.groups.map((group) => group.groupId));\n value.appInstances.forEach((instance, index) => {\n if (!groupIds.has(instance.groupId))\n context.addIssue({\n code: \"custom\",\n path: [\"appInstances\", index, \"groupId\"],\n message: \"Workbench app references an unknown group.\",\n });\n });\n const defaultInstance = value.appInstances.find(\n (instance) => instance.instanceId === value.defaultEntry.instanceId,\n );\n if (\n !defaultInstance ||\n defaultInstance.groupId !== value.defaultEntry.groupId\n ) {\n context.addIssue({\n code: \"custom\",\n path: [\"defaultEntry\"],\n message:\n \"Workbench default entry must reference an app in the declared group.\",\n });\n }\n const targetKindByInstanceKind: Readonly<\n Record<z.infer<typeof WorkbenchAppInstanceSchema>[\"kind\"], string>\n > = {\n \"built-in-application\": \"built-in-application\",\n \"workflow-form\": \"workflow\",\n workflow: \"workflow\",\n agent: \"agent\",\n design: \"design\",\n capability: \"capability\",\n };\n value.appInstances.forEach((instance, index) => {\n if (\n instance.targetRevisionRef.kind !==\n targetKindByInstanceKind[instance.kind]\n )\n context.addIssue({\n code: \"custom\",\n path: [\"appInstances\", index, \"targetRevisionRef\", \"kind\"],\n message: `Workbench ${instance.kind} target has an incompatible reference kind.`,\n });\n if (instance.providerRevisionRef.kind !== \"view-provider\")\n context.addIssue({\n code: \"custom\",\n path: [\"appInstances\", index, \"providerRevisionRef\", \"kind\"],\n message: \"Workbench app provider must use kind view-provider.\",\n });\n if (instance.inputSchemaRevisionRef.kind !== \"schema\")\n context.addIssue({\n code: \"custom\",\n path: [\"appInstances\", index, \"inputSchemaRevisionRef\", \"kind\"],\n message: \"Workbench app input must pin a schema revision.\",\n });\n });\n const layoutRefs: Array<\n [string, z.infer<typeof RevisionRefSchema>, string]\n > = [\n [\n \"hostCapabilityRevisionRef\",\n value.layout.hostCapabilityRevisionRef,\n \"capability\",\n ],\n [\n \"hostProviderRevisionRef\",\n value.layout.hostProviderRevisionRef,\n \"view-provider\",\n ],\n [\n \"layoutPolicyRevisionRef\",\n value.layout.layoutPolicyRevisionRef,\n \"layout-policy\",\n ],\n ];\n layoutRefs.forEach(([field, reference, expectedKind]) => {\n if (reference.kind !== expectedKind)\n context.addIssue({\n code: \"custom\",\n path: [\"layout\", field, \"kind\"],\n message: `${field} must reference ${expectedKind}.`,\n });\n });\n value.layout.tokenRevisionRefs.forEach((reference, index) => {\n if (reference.kind !== \"design-token\")\n context.addIssue({\n code: \"custom\",\n path: [\"layout\", \"tokenRevisionRefs\", index, \"kind\"],\n message: \"Workbench token references must use kind design-token.\",\n });\n });\n });\nexport const WorkbenchReleaseSchema = z\n .object({\n contract: z.literal(\"WorkbenchRelease\"),\n ...ReleaseBaseShape,\n workbenchRevisionRef: RevisionRefSchema,\n target: z\n .object({\n environmentRef: StableRefSchema,\n surface: ProductSurfaceSchema,\n workbenchId: ContractIdentifierSchema,\n routeSpaceRevisionRef: RevisionRefSchema,\n normalizedPath: RoutePathTemplateSchema,\n routeClaim: z.union([\n CompiledRouteClaimSchema,\n LegacyCompiledRouteClaimSchema,\n ]),\n legacyRouteTakeoverAuthorization:\n LegacyRouteTakeoverAuthorizationSchema.optional(),\n order: z.number().int(),\n isDefaultCandidate: z.boolean(),\n })\n .strict(),\n })\n .strict()\n .superRefine((value, context) => {\n validateLegacyRestoration(value, \"legacy-workbench-adapter\", context);\n validateDependencySnapshot(value.dependencySnapshot, context);\n validateReleaseGovernanceScope(value, \"workbench-release\", context);\n if (value.workbenchRevisionRef.kind !== \"workbench\")\n context.addIssue({\n code: \"custom\",\n path: [\"workbenchRevisionRef\", \"kind\"],\n message: \"Expected a workbench revision.\",\n });\n if (value.target.environmentRef.kind !== \"environment\")\n context.addIssue({\n code: \"custom\",\n path: [\"target\", \"environmentRef\", \"kind\"],\n message: \"Workbench release target requires an environment reference.\",\n });\n if (value.target.routeSpaceRevisionRef.kind !== \"route-space\")\n context.addIssue({\n code: \"custom\",\n path: [\"target\", \"routeSpaceRevisionRef\", \"kind\"],\n message: \"Workbench release target requires a route-space revision.\",\n });\n validateReleaseRouteSurface(value.target, context);\n if (\n value.target.normalizedPath !== value.target.routeClaim.normalizedPath ||\n !exactRevisionRef(\n value.target.routeSpaceRevisionRef,\n value.target.routeClaim.routeSpaceRevisionRef,\n )\n ) {\n context.addIssue({\n code: \"custom\",\n path: [\"target\", \"routeClaim\"],\n message:\n \"Workbench Release route authority must pin the exact compiled claim and normalized path.\",\n });\n }\n const takeover = value.target.legacyRouteTakeoverAuthorization;\n if (\n takeover &&\n (value.target.routeClaim.kind !== \"canonical\" ||\n takeover.normalizedPath !== value.target.normalizedPath ||\n !exactRevisionRef(\n takeover.routeSpaceRevisionRef,\n value.target.routeSpaceRevisionRef,\n ) ||\n takeover.targetResourceRef.kind !== \"workbench\" ||\n takeover.targetResourceRef.id !== value.workbenchRevisionRef.id ||\n takeover.targetResourceRef.ownerRepo !==\n value.workbenchRevisionRef.ownerRepo)\n ) {\n context.addIssue({\n code: \"custom\",\n path: [\"target\", \"legacyRouteTakeoverAuthorization\"],\n message:\n \"A Workbench route takeover must bind the exact canonical claim, RouteSpace and target Workbench.\",\n });\n }\n });\nconst NavigationNodeBaseShape = {\n nodeId: ContractIdentifierSchema,\n parentNodeId: ContractIdentifierSchema.nullable(),\n order: z.number().int(),\n disabled: z.boolean().optional(),\n};\nexport const NavigationGroupNodeSchema = z\n .object({\n ...NavigationNodeBaseShape,\n kind: z.literal(\"group\"),\n label: I18nTextSchema,\n iconRef: StableRefSchema.optional(),\n collapsedByDefault: z.boolean(),\n audience: AccessPolicySchema,\n })\n .strict();\nexport const NavigationTargetNodeSchema = z\n .object({\n ...NavigationNodeBaseShape,\n kind: z.literal(\"target\"),\n label: I18nTextSchema,\n iconRef: StableRefSchema.optional(),\n tone: z.enum([\"default\", \"danger\"]).optional(),\n targetRef: StableRefSchema,\n parameterMapping: z.record(ContractIdentifierSchema, BindingSourceSchema),\n audience: AccessPolicySchema,\n })\n .strict();\nexport const NavigationSeparatorNodeSchema = z\n .object({\n ...NavigationNodeBaseShape,\n kind: z.literal(\"separator\"),\n })\n .strict();\nexport const NavigationNodeSchema = z.discriminatedUnion(\"kind\", [\n NavigationGroupNodeSchema,\n NavigationTargetNodeSchema,\n NavigationSeparatorNodeSchema,\n]);\nconst validateNavigationTree = (\n nodes: readonly z.infer<typeof NavigationNodeSchema>[],\n context: z.RefinementCtx,\n) => {\n const byId = new Map<\n string,\n {\n node: z.infer<typeof NavigationNodeSchema>;\n index: number;\n }\n >();\n nodes.forEach((node, index) => {\n if (byId.has(node.nodeId))\n context.addIssue({\n code: \"custom\",\n path: [\"nodes\", index, \"nodeId\"],\n message: `Duplicate Navigation node: ${node.nodeId}`,\n });\n else byId.set(node.nodeId, { node, index });\n });\n const siblingOrders = new Set<string>();\n nodes.forEach((node, index) => {\n const orderKey = `${node.parentNodeId ?? \"\"}:${node.order}`;\n if (siblingOrders.has(orderKey))\n context.addIssue({\n code: \"custom\",\n path: [\"nodes\", index, \"order\"],\n message: \"Sibling Navigation order values must be unique.\",\n });\n siblingOrders.add(orderKey);\n if (node.parentNodeId) {\n const parent = byId.get(node.parentNodeId)?.node;\n if (!parent)\n context.addIssue({\n code: \"custom\",\n path: [\"nodes\", index, \"parentNodeId\"],\n message: \"Navigation node has an unknown parent.\",\n });\n else if (parent.kind !== \"group\")\n context.addIssue({\n code: \"custom\",\n path: [\"nodes\", index, \"parentNodeId\"],\n message: \"Navigation parents must be groups.\",\n });\n }\n const ancestors = new Set([node.nodeId]);\n let parentId = node.parentNodeId;\n while (parentId) {\n if (ancestors.has(parentId)) {\n context.addIssue({\n code: \"custom\",\n path: [\"nodes\", index, \"parentNodeId\"],\n message: `Navigation cycle contains ${node.nodeId}.`,\n });\n break;\n }\n ancestors.add(parentId);\n parentId = byId.get(parentId)?.node.parentNodeId ?? null;\n }\n });\n};\nexport const NavigationSchema = z\n .object({\n contract: z.literal(\"Navigation\"),\n schemaVersion: z.literal(DECLARATIVE_CONTROL_SCHEMA_VERSION),\n navigationId: ContractIdentifierSchema,\n tenantScope: TenantScopeSchema,\n identity: IdentitySchema,\n supportedSurfaces: z.array(ProductSurfaceSchema).min(1),\n placements: z.array(ContractIdentifierSchema).min(1),\n lifecycle: DeclarativeLifecycleSchema,\n nodes: z.array(NavigationNodeSchema),\n managementAccess: ManagementAccessSchema,\n performanceBudgetRef: RevisionRefSchema,\n observationPolicyRevisionRef: RevisionRefSchema,\n })\n .strict()\n .superRefine((value, context) => {\n validateNavigationTree(value.nodes, context);\n value.nodes.forEach((node, index) => {\n if (\n node.kind === \"target\" &&\n ![\"page\", \"workbench\", \"menu-action\", \"domain-command\"].includes(\n node.targetRef.kind,\n )\n ) {\n context.addIssue({\n code: \"custom\",\n path: [\"nodes\", index, \"targetRef\", \"kind\"],\n message:\n \"Navigation targets must reference Page, Workbench, registered Menu Action, or DomainCommand identities.\",\n });\n }\n });\n });\nexport const ResolvedNavigationTargetSchema = z\n .object({\n nodeId: ContractIdentifierSchema,\n stableTargetRef: StableRefSchema,\n targetRevisionRef: RevisionRefSchema,\n releaseRevisionRef: RevisionRefSchema.optional(),\n })\n .strict();\n\n/** A reviewed missing Page reference is retained without inventing an executable revision. */\nexport const UnavailableNavigationTargetSchema = z\n .object({\n nodeId: ContractIdentifierSchema,\n stableTargetRef: StableRefSchema.refine(\n (reference) => reference.kind === \"page\",\n \"Only missing Pages can be isolated.\",\n ),\n reason: z.literal(\"page-missing\"),\n accessPolicy: AccessPolicySchema.nullable(),\n })\n .strict();\n\nexport const NavigationReleaseSchema = z\n .object({\n contract: z.literal(\"NavigationRelease\"),\n ...ReleaseBaseShape,\n navigationRevisionRef: RevisionRefSchema,\n target: z\n .object({\n environmentRef: StableRefSchema,\n surface: ProductSurfaceSchema,\n placement: ContractIdentifierSchema,\n })\n .strict(),\n resolvedTargets: z.array(ResolvedNavigationTargetSchema),\n unavailableTargets: z.array(UnavailableNavigationTargetSchema).optional(),\n })\n .strict()\n .superRefine((value, context) => {\n validateLegacyRestoration(value, \"legacy-navigation-adapter\", context);\n validateDependencySnapshot(value.dependencySnapshot, context);\n validateReleaseGovernanceScope(value, \"navigation-release\", context);\n if (value.navigationRevisionRef.kind !== \"navigation\")\n context.addIssue({\n code: \"custom\",\n path: [\"navigationRevisionRef\", \"kind\"],\n message: \"Expected a navigation revision.\",\n });\n if (value.target.environmentRef.kind !== \"environment\")\n context.addIssue({\n code: \"custom\",\n path: [\"target\", \"environmentRef\", \"kind\"],\n message: \"Navigation release target requires an environment reference.\",\n });\n if (uniqueArray(value.resolvedTargets, (target) => target.nodeId))\n context.addIssue({\n code: \"custom\",\n path: [\"resolvedTargets\"],\n message: \"Resolved Navigation node IDs must be unique.\",\n });\n if (\n uniqueArray(\n [...value.resolvedTargets, ...(value.unavailableTargets ?? [])],\n (target) => target.nodeId,\n )\n ) {\n context.addIssue({\n code: \"custom\",\n path: [\"unavailableTargets\"],\n message: \"Navigation target resolutions must have unique node IDs.\",\n });\n }\n });\nconst RuntimeDiagnosticSchema = DeclarativeDiagnosticSchema;\nconst RuntimeBundleBaseShape = {\n schemaVersion: z.literal(DECLARATIVE_CONTROL_SCHEMA_VERSION),\n tenantScope: TenantScopeSchema,\n releaseRevisionRef: RevisionRefSchema,\n compilerRevisionRef: RevisionRefSchema,\n generation: z.number().int().nonnegative(),\n dependencySnapshot: z.array(ReleaseDependencySchema),\n contentHash: Sha256Schema,\n rebuildable: z.literal(true),\n diagnostics: z.array(RuntimeDiagnosticSchema),\n};\nconst validateRuntimeBundleReference = (\n reference: z.infer<typeof RevisionRefSchema>,\n tenantScope: z.infer<typeof TenantScopeSchema>,\n path: string,\n expectedKind: string,\n expectedId: string | undefined,\n context: z.RefinementCtx,\n) => {\n if (reference.kind !== expectedKind) {\n context.addIssue({\n code: \"custom\",\n path: [path, \"kind\"],\n message: `${path} must reference ${expectedKind}.`,\n });\n }\n if (expectedId !== undefined && reference.id !== expectedId) {\n context.addIssue({\n code: \"custom\",\n path: [path, \"id\"],\n message: `${path} must identify ${expectedId}.`,\n });\n }\n validateTenantCompatibleReference(reference, tenantScope, [path], context);\n};\nconst validateRuntimeBundleBase = (\n value: {\n tenantScope: z.infer<typeof TenantScopeSchema>;\n releaseRevisionRef: z.infer<typeof RevisionRefSchema>;\n compilerRevisionRef: z.infer<typeof RevisionRefSchema>;\n },\n expectedReleaseKind: string,\n context: z.RefinementCtx,\n) => {\n validateRuntimeBundleReference(\n value.releaseRevisionRef,\n value.tenantScope,\n \"releaseRevisionRef\",\n expectedReleaseKind,\n undefined,\n context,\n );\n validateRuntimeBundleReference(\n value.compilerRevisionRef,\n value.tenantScope,\n \"compilerRevisionRef\",\n \"compiler\",\n undefined,\n context,\n );\n};\nexport const DeclarativeRouteOwnerIndexEntrySchema = z\n .object({\n resourceKind: z.enum([\"page\", \"workbench\"]),\n releaseSlotId: ContractIdentifierSchema,\n activeReleaseRevisionRef: RevisionRefSchema,\n routeClaim: CompiledRouteClaimSchema,\n authority: z.enum([\"declarative\", \"legacy\", \"unavailable\"]),\n legacyRestoration: LegacySlotRestorationSchema.optional(),\n })\n .strict()\n .superRefine((value, context) => {\n if (value.authority === \"legacy\" && !value.legacyRestoration) {\n context.addIssue({\n code: \"custom\",\n path: [\"legacyRestoration\"],\n message:\n \"A restored legacy route must pin its exact inspected source and adapter revisions.\",\n });\n }\n if (value.authority !== \"legacy\" && value.legacyRestoration) {\n context.addIssue({\n code: \"custom\",\n path: [\"legacyRestoration\"],\n message:\n \"Only a restored legacy route can carry legacy restoration provenance.\",\n });\n }\n });\nexport const DeclarativeRouteOwnerIndexSchema = z\n .object({\n contract: z.literal(\"DeclarativeRouteOwnerIndex\"),\n schemaVersion: z.literal(DECLARATIVE_CONTROL_SCHEMA_VERSION),\n tenantScope: TenantScopeSchema,\n environmentRef: StableRefSchema,\n surface: ProductSurfaceSchema,\n generation: z.number().int().positive(),\n entries: z.array(DeclarativeRouteOwnerIndexEntrySchema).max(4096),\n contentHash: Sha256Schema,\n rebuildable: z.literal(true),\n })\n .strict()\n .superRefine((value, context) => {\n const identities = value.entries.map(\n (entry) => `${entry.resourceKind}:${entry.releaseSlotId}`,\n );\n if (new Set(identities).size !== identities.length) {\n context.addIssue({\n code: \"custom\",\n path: [\"entries\"],\n message: \"Route owner index entries must be unique by Release slot.\",\n });\n }\n if (\n identities.some(\n (identity, index) =>\n index > 0 && identities[index - 1].localeCompare(identity) > 0,\n )\n ) {\n context.addIssue({\n code: \"custom\",\n path: [\"entries\"],\n message:\n \"Route owner index entries must use deterministic Release-slot order.\",\n });\n }\n });\nexport const DeclarativeWorkbenchCatalogEntrySchema = z\n .object({\n workbenchId: ContractIdentifierSchema,\n authority: z.enum([\"declarative\", \"legacy\", \"unavailable\"]),\n identity: WorkbenchIdentitySchema,\n order: z.number().int(),\n isDefaultCandidate: z.boolean(),\n activeReleaseRevisionRef: RevisionRefSchema.optional(),\n legacyAdapterRevisionRef: RevisionRefSchema.optional(),\n })\n .strict()\n .superRefine((value, context) => {\n if (value.authority === \"declarative\") {\n if (value.activeReleaseRevisionRef?.kind !== \"workbench-release\") {\n context.addIssue({\n code: \"custom\",\n path: [\"activeReleaseRevisionRef\"],\n message:\n \"A declarative Workbench catalog entry requires an exact Workbench Release.\",\n });\n }\n if (value.legacyAdapterRevisionRef) {\n context.addIssue({\n code: \"custom\",\n path: [\"legacyAdapterRevisionRef\"],\n message:\n \"A declarative Workbench catalog entry cannot carry a legacy adapter.\",\n });\n }\n return;\n }\n if (value.activeReleaseRevisionRef) {\n context.addIssue({\n code: \"custom\",\n path: [\"activeReleaseRevisionRef\"],\n message:\n \"A non-declarative Workbench entry cannot expose a Workbench Release.\",\n });\n }\n if (\n value.authority === \"legacy\" &&\n value.legacyAdapterRevisionRef?.kind !== \"legacy-workbench-adapter\"\n ) {\n context.addIssue({\n code: \"custom\",\n path: [\"legacyAdapterRevisionRef\"],\n message:\n \"A legacy Workbench entry requires an exact legacy-workbench-adapter revision.\",\n });\n }\n if (value.authority === \"unavailable\" && value.legacyAdapterRevisionRef) {\n context.addIssue({\n code: \"custom\",\n path: [\"legacyAdapterRevisionRef\"],\n message:\n \"An unavailable Workbench entry cannot carry a legacy adapter.\",\n });\n }\n });\nexport const DeclarativeWorkbenchCatalogSchema = z\n .object({\n contract: z.literal(\"DeclarativeWorkbenchCatalog\"),\n schemaVersion: z.literal(DECLARATIVE_CONTROL_SCHEMA_VERSION),\n tenantScope: TenantScopeSchema,\n environmentRef: StableRefSchema,\n surface: ProductSurfaceSchema,\n generation: z.number().int().positive(),\n entries: z.array(DeclarativeWorkbenchCatalogEntrySchema).max(4096),\n contentHash: Sha256Schema,\n rebuildable: z.literal(true),\n })\n .strict()\n .superRefine((value, context) => {\n if (value.environmentRef.kind !== \"environment\") {\n context.addIssue({\n code: \"custom\",\n path: [\"environmentRef\", \"kind\"],\n message: \"A Workbench catalog requires an Environment reference.\",\n });\n }\n const ids = value.entries.map((entry) => entry.workbenchId);\n if (new Set(ids).size !== ids.length) {\n context.addIssue({\n code: \"custom\",\n path: [\"entries\"],\n message: \"Workbench catalog identities must be unique.\",\n });\n }\n if (\n value.entries.filter(\n (entry) =>\n entry.authority !== \"unavailable\" && entry.isDefaultCandidate,\n ).length > 1\n ) {\n context.addIssue({\n code: \"custom\",\n path: [\"entries\"],\n message:\n \"The effective Workbench catalog may have at most one default.\",\n });\n }\n const sorted = [...value.entries].sort(\n (left, right) =>\n left.order - right.order ||\n left.workbenchId.localeCompare(right.workbenchId),\n );\n if (\n sorted.some(\n (entry, index) =>\n entry.workbenchId !== value.entries[index]?.workbenchId,\n )\n ) {\n context.addIssue({\n code: \"custom\",\n path: [\"entries\"],\n message:\n \"Workbench catalog entries must use deterministic order plus Workbench identity.\",\n });\n }\n });\nconst CompatiblePageRuntimeBundleSchema = z\n .object({\n contract: z.literal(\"PageRuntimeBundle\"),\n ...RuntimeBundleBaseShape,\n pageId: ContractIdentifierSchema,\n pageRevisionRef: RevisionRefSchema,\n surface: ProductSurfaceSchema,\n routeClaims: z.array(CompiledRouteClaimSchema),\n routeStatePresentations: z\n .array(PageRouteStatePresentationSchema)\n .default([]),\n shellRevisionRef: RevisionRefSchema,\n shellDescriptor: DeclarativeRuntimeShellDescriptorSchema.optional(),\n renderTree: RenderTreeSchema,\n capabilityInstances: z.array(CapabilityInstanceSchema),\n deniedCapabilityInstanceIds: z.array(ContractIdentifierSchema).default([]),\n capabilityAccessEvaluated: z.literal(true).optional(),\n stateDefinitions: z.array(PageStateDefinitionSchema).default([]),\n sharedStateBindings: z.array(PageSharedStateBindingSchema).max(16).optional(),\n entryTransitions: z.array(ResolvedPageEntryTransitionSchema).default([]),\n interactionBindings: z.array(InteractionBindingSchema).default([]),\n ontologyBindings: z.array(PersistedOntologyBindingSchema),\n queryBindings: z.array(QueryBindingSchema).default([]),\n actionBindings: z.array(ActionBindingSchema),\n programBindings: z.array(ProgramBindingSchema).max(128).optional(),\n pageAccessPolicy: AccessPolicySchema,\n tokenRevisionRefs: z.array(RevisionRefSchema),\n performanceBudgetRef: RevisionRefSchema,\n observationPolicyRevisionRef: RevisionRefSchema,\n privacyClassification: z.enum([\n \"public\",\n \"internal\",\n \"confidential\",\n \"restricted\",\n ]),\n })\n .strict()\n .superRefine((value, context) => {\n validateSharedStateBindings(value.sharedStateBindings, value.stateDefinitions, new Set([...value.queryBindings, ...value.ontologyBindings].map(binding => binding.bindingId)), value.interactionBindings, context);\n const instanceIds = new Set(\n value.capabilityInstances.map((instance) => instance.instanceId),\n );\n if (\n new Set(value.deniedCapabilityInstanceIds).size !==\n value.deniedCapabilityInstanceIds.length ||\n value.deniedCapabilityInstanceIds.some((id) => !instanceIds.has(id))\n ) {\n context.addIssue({\n code: \"custom\",\n path: [\"deniedCapabilityInstanceIds\"],\n message:\n \"Denied capability identities must be unique declared instances.\",\n });\n }\n validateProgramBindingTargets(value, context);\n validateRuntimeBundleBase(value, \"page-release\", context);\n value.routeClaims.forEach((claim, index) => {\n if (claim.surface !== value.surface) {\n context.addIssue({\n code: \"custom\",\n path: [\"routeClaims\", index, \"surface\"],\n message: \"Runtime route claims must match the bundle surface.\",\n });\n }\n });\n validateRuntimeBundleReference(\n value.pageRevisionRef,\n value.tenantScope,\n \"pageRevisionRef\",\n \"page\",\n value.pageId,\n context,\n );\n value.routeStatePresentations.forEach((presentation, index) => {\n if (presentation.surface !== value.surface) {\n context.addIssue({\n code: \"custom\",\n path: [\"routeStatePresentations\", index, \"surface\"],\n message:\n \"Runtime route-state presentations must match the compiled Page surface.\",\n });\n }\n });\n });\nexport const ResolvedWorkbenchAppInstanceSchema =\n WorkbenchAppInstanceSchema.extend({\n targetAccessPolicy: AccessPolicySchema,\n }).strict();\nexport const PageRuntimeBundleSchema =\n CompatiblePageRuntimeBundleSchema.safeExtend({\n shellDescriptor: DeclarativeRuntimeShellDescriptorSchema,\n ontologyBindings: z.array(OntologyBindingSchema),\n });\n\n/** Pre-canonical releases have no Shell descriptor and retain their legacy bindings. */\nexport const LegacyPageRuntimeBundleSchema: z.ZodType<LegacyPageRuntimeBundle> =\n CompatiblePageRuntimeBundleSchema.safeExtend({\n shellDescriptor: z.never().optional(),\n ontologyBindings: z.array(LegacyOntologyBindingSchema),\n });\n\n/** Transport readers accept either complete contract, never a mixed partial document. */\nexport const ReadablePageRuntimeBundleSchema: z.ZodType<PageRuntimeBundle | LegacyPageRuntimeBundle> = z.union([PageRuntimeBundleSchema, LegacyPageRuntimeBundleSchema]);\n\nexport const WorkbenchRuntimeIdentitySchema = z\n .object({\n name: I18nTextSchema,\n description: I18nTextSchema.optional(),\n })\n .strict();\nconst WorkbenchRuntimeTargetSchema = WorkbenchReleaseSchema.shape.target\n .safeExtend({\n routeClaim: CompiledRouteClaimSchema,\n })\n .strict();\nexport const WorkbenchRuntimeBundleSchema = z\n .object({\n contract: z.literal(\"WorkbenchRuntimeBundle\"),\n ...RuntimeBundleBaseShape,\n workbenchId: ContractIdentifierSchema,\n workbenchRevisionRef: RevisionRefSchema,\n identity: WorkbenchRuntimeIdentitySchema,\n surface: ProductSurfaceSchema,\n routeClaims: z.array(CompiledRouteClaimSchema),\n groups: z.array(WorkbenchGroupSchema),\n appInstances: z.array(ResolvedWorkbenchAppInstanceSchema),\n defaultEntry: WorkbenchSchema.shape.defaultEntry.nullable(),\n layout: WorkbenchSchema.shape.layout,\n workbenchAccessPolicy: AccessPolicySchema,\n personalPreferencesPolicy: WorkbenchSchema.shape.personalPreferencesPolicy,\n target: WorkbenchRuntimeTargetSchema,\n performanceBudgetRef: RevisionRefSchema,\n observationPolicyRevisionRef: RevisionRefSchema,\n privacyClassification: z.enum([\n \"public\",\n \"internal\",\n \"confidential\",\n \"restricted\",\n ]),\n })\n .strict()\n .superRefine((value, context) => {\n validateRuntimeBundleBase(value, \"workbench-release\", context);\n value.routeClaims.forEach((claim, index) => {\n if (claim.surface !== value.surface) {\n context.addIssue({\n code: \"custom\",\n path: [\"routeClaims\", index, \"surface\"],\n message: \"Runtime route claims must match the bundle surface.\",\n });\n }\n });\n validateRuntimeBundleReference(\n value.workbenchRevisionRef,\n value.tenantScope,\n \"workbenchRevisionRef\",\n \"workbench\",\n value.workbenchId,\n context,\n );\n if (value.appInstances.length === 0) {\n if (value.defaultEntry !== null) {\n context.addIssue({\n code: \"custom\",\n path: [\"defaultEntry\"],\n message:\n \"An empty Workbench runtime bundle must use a null default entry.\",\n });\n }\n return;\n }\n if (value.defaultEntry === null) {\n context.addIssue({\n code: \"custom\",\n path: [\"defaultEntry\"],\n message:\n \"A non-empty Workbench runtime bundle requires a default entry.\",\n });\n return;\n }\n const defaultInstance = value.appInstances.find(\n (instance) => instance.instanceId === value.defaultEntry?.instanceId,\n );\n if (\n !defaultInstance ||\n defaultInstance.groupId !== value.defaultEntry.groupId\n ) {\n context.addIssue({\n code: \"custom\",\n path: [\"defaultEntry\"],\n message:\n \"Workbench runtime default entry must reference a visible app in the declared group.\",\n });\n }\n if (\n !value.groups.some(\n (group) => group.groupId === value.defaultEntry?.groupId,\n )\n ) {\n context.addIssue({\n code: \"custom\",\n path: [\"defaultEntry\", \"groupId\"],\n message:\n \"Workbench runtime default entry must reference a visible group.\",\n });\n }\n });\nconst CompiledNavigationTargetSchema = ResolvedNavigationTargetSchema.extend({\n kind: z.literal(\"route\"),\n accessPolicy: AccessPolicySchema,\n routeClaim: CompiledRouteClaimSchema,\n}).strict();\nexport const CompiledNavigationRegisteredMenuActionTargetSchema =\n ResolvedNavigationTargetSchema.extend({\n kind: z.literal(\"registered-menu-action\"),\n accessPolicy: AccessPolicySchema,\n execution: z.literal(\"client\"),\n applicationId: ContractIdentifierSchema,\n actionRef: ContractIdentifierSchema,\n inputSchemaRef: ContractIdentifierSchema.optional(),\n input: JsonObjectSchema,\n sourceCatalogRevisionRef: RevisionRefSchema,\n }).strict();\nexport const CompiledNavigationDomainCommandTargetSchema =\n ResolvedNavigationTargetSchema.extend({\n kind: z.literal(\"governed-domain-command\"),\n accessPolicy: AccessPolicySchema,\n execution: z.literal(\"server\"),\n commandRevisionRef: RevisionRefSchema,\n inputSchemaRevisionRef: RevisionRefSchema,\n resultSchemaRevisionRef: RevisionRefSchema.optional(),\n input: JsonObjectSchema,\n }).strict();\nexport const CompiledNavigationResolvedTargetSchema = z.discriminatedUnion(\n \"kind\",\n [\n CompiledNavigationTargetSchema,\n CompiledNavigationRegisteredMenuActionTargetSchema,\n CompiledNavigationDomainCommandTargetSchema,\n UnavailableNavigationTargetSchema.omit({ reason: true })\n .extend({ kind: z.literal(\"unavailable\") })\n .strict(),\n ],\n);\nexport const CompiledNavigationGroupNodeSchema =\n NavigationGroupNodeSchema.extend({\n ancestorAccessPolicies: z.array(AccessPolicySchema),\n }).strict();\nexport const CompiledNavigationTargetNodeSchema =\n NavigationTargetNodeSchema.extend({\n ancestorAccessPolicies: z.array(AccessPolicySchema),\n resolvedTarget: CompiledNavigationResolvedTargetSchema,\n })\n .strict()\n .superRefine((node, context) => {\n if (\n node.resolvedTarget.nodeId !== node.nodeId ||\n stableRefIdentity(node.resolvedTarget.stableTargetRef) !==\n stableRefIdentity(node.targetRef)\n ) {\n context.addIssue({\n code: \"custom\",\n path: [\"resolvedTarget\"],\n message: \"Resolved target identity must match the source node.\",\n });\n }\n if (\n node.resolvedTarget.kind === \"unavailable\" &&\n (node.disabled !== true ||\n Object.keys(node.parameterMapping).length > 0)\n ) {\n context.addIssue({\n code: \"custom\",\n path: [\"resolvedTarget\"],\n message:\n \"Unavailable targets must be disabled and contain no executable input.\",\n });\n }\n });\n\nexport const CompiledNavigationSeparatorNodeSchema =\n NavigationSeparatorNodeSchema.extend({\n ancestorAccessPolicies: z.array(AccessPolicySchema),\n }).strict();\nexport const CompiledNavigationNodeSchema = z.discriminatedUnion(\"kind\", [\n CompiledNavigationGroupNodeSchema,\n CompiledNavigationTargetNodeSchema,\n CompiledNavigationSeparatorNodeSchema,\n]);\nexport const NavigationRuntimeBundleSchema = z\n .object({\n contract: z.literal(\"NavigationRuntimeBundle\"),\n ...RuntimeBundleBaseShape,\n navigationId: ContractIdentifierSchema,\n navigationRevisionRef: RevisionRefSchema,\n surface: ProductSurfaceSchema,\n placement: ContractIdentifierSchema,\n nodes: z.array(CompiledNavigationNodeSchema),\n performanceBudgetRef: RevisionRefSchema,\n observationPolicyRevisionRef: RevisionRefSchema,\n })\n .strict()\n .superRefine((value, context) => {\n validateRuntimeBundleBase(value, \"navigation-release\", context);\n validateRuntimeBundleReference(\n value.navigationRevisionRef,\n value.tenantScope,\n \"navigationRevisionRef\",\n \"navigation\",\n value.navigationId,\n context,\n );\n });\nexport const DeclarativeControlOntologyDefinitionSchema =\n OntologyDefinitionSchema.extend({\n classification: z.literal(\"control\"),\n discovery: z\n .object({\n ordinaryDataBrowser: z.literal(false),\n businessSearch: z.literal(false),\n businessStatistics: z.literal(false),\n ordinaryExport: z.literal(false),\n genericWrite: z.literal(false),\n })\n .strict(),\n }).strict();\nconst controlDefinition = (ontologyId: string, bodySchemaRef: string) =>\n DeclarativeControlOntologyDefinitionSchema.parse({\n contract: \"OntologyDefinition\",\n ontologyId,\n dataSpaceId: \"monkeys.control\",\n ownerRepo: \"monkeys-js-sdk\",\n bodySchemaRef,\n authority: {\n service: \"monkeys-data-server\",\n storage: \"domain-record\",\n scope: \"tenant\",\n },\n relationKinds: [],\n metricKinds: [],\n classification: \"control\",\n discovery: {\n ordinaryDataBrowser: false,\n businessSearch: false,\n businessStatistics: false,\n ordinaryExport: false,\n genericWrite: false,\n },\n });\nexport const DECLARATIVE_CONTROL_ONTOLOGY_DEFINITIONS = Object.freeze([\n controlDefinition(\"monkeys.system.page\", \"monkeys.system.page/v1\"),\n controlDefinition(\n \"monkeys.system.page-release\",\n \"monkeys.system.page-release/v1\",\n ),\n controlDefinition(\"monkeys.system.workbench\", \"monkeys.system.workbench/v1\"),\n controlDefinition(\n \"monkeys.system.workbench-release\",\n \"monkeys.system.workbench-release/v1\",\n ),\n controlDefinition(\n \"monkeys.system.navigation\",\n \"monkeys.system.navigation/v1\",\n ),\n controlDefinition(\n \"monkeys.system.navigation-release\",\n \"monkeys.system.navigation-release/v1\",\n ),\n]);\nexport type I18nText = z.infer<typeof I18nTextSchema>;\nexport type ProductSurface = z.infer<typeof ProductSurfaceSchema>;\nexport type ScopedIdentityRef = z.infer<typeof ScopedIdentityRefSchema>;\nexport type TenantScope = z.infer<typeof TenantScopeSchema>;\nexport type StableRef = z.infer<typeof StableRefSchema>;\nexport type RevisionRef = z.infer<typeof RevisionRefSchema>;\nexport type StableRefAliasMap = z.infer<typeof StableRefAliasMapSchema>;\nexport type AccessPolicy = z.infer<typeof AccessPolicySchema>;\nexport type PermissionAlternativePolicy = z.infer<\n typeof PermissionAlternativePolicySchema\n>;\nexport type ManagementAccess = z.infer<typeof ManagementAccessSchema>;\nexport type RouteSpace = z.infer<typeof RouteSpaceSchema>;\nexport type RouteClaim = z.infer<typeof RouteClaimSchema>;\nexport type LegacyRouteClaim = z.infer<typeof LegacyRouteClaimSchema>;\nexport type DeclarativeRouteClaim =\n | z.infer<typeof DeclarativeRouteClaimSchema>\n | z.infer<typeof LegacyDeclarativeRouteClaimSchema>;\nexport type CompiledRouteClaim = z.infer<typeof CompiledRouteClaimSchema>;\nexport type CompiledRouteMatcher = z.infer<typeof CompiledRouteMatcherSchema>;\nexport type ReleaseDependency = z.infer<typeof ReleaseDependencySchema>;\nexport type ReleaseEvidence = z.infer<typeof ReleaseEvidenceSchema>;\nexport type PublicationPlanOperation = z.infer<\n typeof PublicationPlanOperationSchema\n>;\nexport type PublicationPlan = z.infer<typeof PublicationPlanSchema>;\nexport type CapabilityInstance = z.infer<typeof CapabilityInstanceSchema>;\nexport type PageStateDefinition = z.infer<typeof PageStateDefinitionSchema>;\nexport type LegacyBrowserPreferenceImport = z.infer<\n typeof LegacyBrowserPreferenceImportSchema\n>;\nexport type PageEntryTransition = z.infer<typeof PageEntryTransitionSchema>;\nexport type ResolvedPageEntryTransition = z.infer<\n typeof ResolvedPageEntryTransitionSchema\n>;\nexport type InteractionBinding = z.infer<typeof InteractionBindingSchema>;\nexport type CursorWindowBinding = z.infer<typeof CursorWindowBindingSchema>;\nexport type OntologyBinding = z.infer<typeof OntologyBindingSchema>;\nexport type GovernedCatalogResourceKind = z.infer<\n typeof GovernedCatalogResourceKindSchema\n>;\nexport type GovernedCatalogDomainQueryDataSource = z.infer<\n typeof GovernedCatalogDomainQueryDataSourceSchema\n>;\nexport type RegisteredServiceDomainQueryDataSource = z.infer<\n typeof RegisteredServiceDomainQueryDataSourceSchema\n>;\nexport type DomainQueryDataSource = z.infer<typeof DomainQueryDataSourceSchema>;\nexport type DomainQueryDefinition = z.infer<typeof DomainQueryDefinitionSchema>;\nexport type QueryBinding = z.infer<typeof QueryBindingSchema>;\nexport type QueryResultStateBinding = z.infer<\n typeof QueryResultStateBindingSchema\n>;\nexport type ActionBinding = z.infer<typeof ActionBindingSchema>;\nexport type ActionResultBindingEffect = z.infer<\n typeof ActionResultBindingEffectSchema\n>;\nexport type Page = z.infer<typeof PageSchema>;\nexport type ResolvedPage = z.infer<typeof ResolvedPageSchema>;\nexport type PageMigrationEquivalence = z.infer<\n typeof PageMigrationEquivalenceSchema\n>;\nexport type PageRouteStatePresentation = z.infer<\n typeof PageRouteStatePresentationSchema\n>;\nexport type PageRelease = z.infer<typeof PageReleaseSchema>;\nexport type Workbench = z.infer<typeof WorkbenchSchema>;\nexport type WorkbenchRelease = z.infer<typeof WorkbenchReleaseSchema>;\nexport type NavigationNode = z.infer<typeof NavigationNodeSchema>;\nexport type Navigation = z.infer<typeof NavigationSchema>;\nexport type ResolvedNavigationTarget = z.infer<\n typeof ResolvedNavigationTargetSchema\n>;\nexport type CompiledNavigationResolvedTarget = z.infer<\n typeof CompiledNavigationResolvedTargetSchema\n>;\nexport type NavigationRelease = z.infer<typeof NavigationReleaseSchema>;\nexport type DeclarativeShellHeaderChrome = z.infer<\n typeof DeclarativeShellHeaderChromeSchema\n>;\nexport type DeclarativeShellSurfaceChrome = z.infer<\n typeof DeclarativeShellSurfaceChromeSchema\n>;\nexport type DeclarativeRuntimeShellDescriptor = z.infer<\n typeof DeclarativeRuntimeShellDescriptorSchema\n>;\nexport type LegacyPageRuntimeBundle = Omit<\n PageRuntimeBundle,\n \"shellDescriptor\" | \"ontologyBindings\"\n> & {\n shellDescriptor?: never;\n ontologyBindings: z.infer<typeof LegacyOntologyBindingSchema>[];\n};\nexport type PageRuntimeBundle = z.infer<typeof PageRuntimeBundleSchema>;\nexport type WorkbenchRuntimeBundle = z.infer<\n typeof WorkbenchRuntimeBundleSchema\n>;\nexport type WorkbenchRuntimeIdentity = z.infer<\n typeof WorkbenchRuntimeIdentitySchema\n>;\nexport type NavigationRuntimeBundle = z.infer<\n typeof NavigationRuntimeBundleSchema\n>;\nexport type LegacyRouteTakeoverAuthorization = z.infer<\n typeof LegacyRouteTakeoverAuthorizationSchema\n>;\nexport type DeclarativeRouteOwnerIndexEntry = z.infer<\n typeof DeclarativeRouteOwnerIndexEntrySchema\n>;\nexport type DeclarativeRouteOwnerIndex = z.infer<\n typeof DeclarativeRouteOwnerIndexSchema\n>;\nexport type DeclarativeWorkbenchCatalogEntry = z.infer<\n typeof DeclarativeWorkbenchCatalogEntrySchema\n>;\nexport type DeclarativeWorkbenchCatalog = z.infer<\n typeof DeclarativeWorkbenchCatalogSchema\n>;\nexport type DeclarativeControlOntologyDefinition = z.infer<\n typeof DeclarativeControlOntologyDefinitionSchema\n>;\n\nexport type ActionResultClipboardEffect = z.infer<\n typeof ActionResultClipboardEffectSchema\n>;\n","import { z } from 'zod';\nimport { ContractIdentifierSchema, IsoDateTimeSchema, JsonObjectSchema, Sha256Schema } from './common';\n\nexport const FILE_PURPOSES = [\n 'uploads',\n 'agent-attachments',\n 'agent-artifacts',\n 'agent-edited-images',\n 'agent-workbench',\n 'asset-screenshots',\n 'data-exports',\n 'data-feature-media',\n 'design-assets',\n 'design-board-thumbnails',\n 'design-images',\n 'dev-agent-reference-images',\n 'dev-agent-review-artifacts',\n 'external-delivery-techpacks',\n 'llm-generated-images',\n 'media-generated',\n 'media-uploads',\n 'model-training-files',\n 'models',\n 'models-checkpoints',\n 'models-clip',\n 'models-controlnet',\n 'models-diffusion-models',\n 'models-loras-test',\n 'models-vae',\n 'output-images',\n 'plugin-data-imports',\n 'plugin-runtime',\n 'plugin-runtime-outputs',\n 'step-thumbnails',\n 'techpack-design-intent',\n 'user-files-base',\n 'user-files-design-board-background',\n 'user-files-design-project-cover',\n 'user-files-designs',\n 'user-files-icons',\n 'user-files-import-comfyui-image',\n 'user-files-import-comfyui-json',\n 'user-files-import-comfyui-json-url',\n 'user-files-instruction-input',\n 'user-files-linesheet',\n 'user-files-media',\n 'user-files-other',\n 'user-files-prompt-assistant',\n 'user-files-table-data',\n 'user-files-techpack-attachments',\n 'user-files-text-data-file',\n 'user-files-workflow-input',\n 'workflow-image-mask',\n 'workflow-image-overlay',\n 'workflow-import',\n] as const;\n\nexport const FilePurposeSchema = z.enum(FILE_PURPOSES);\n\nexport const FileStatusSchema = z.enum(['pending', 'ready', 'failed', 'deleted']);\nexport const FileVariantStatusSchema = z.enum(['queued', 'processing', 'ready', 'failed']);\n\nexport const FILE_USAGE_OWNER_TYPES = [\n 'data-asset',\n 'data-export',\n 'design-board',\n 'external-delivery',\n 'kernel-runtime',\n 'llm-generated-media',\n 'model-training-media',\n 'plugin-run',\n] as const;\n\nexport const FileUsageOwnerTypeSchema = z.enum(FILE_USAGE_OWNER_TYPES);\n\nexport const FileUsageSchema = z\n .object({\n ownerType: FileUsageOwnerTypeSchema,\n ownerId: ContractIdentifierSchema,\n field: ContractIdentifierSchema.optional(),\n })\n .strict();\n\nexport const FileReferenceSchema = z\n .object({\n id: ContractIdentifierSchema.optional(),\n uri: z.string().trim().min(1).optional(),\n thumbnailUri: z.string().trim().min(1).optional(),\n mimeType: z.string().trim().min(1).max(128).optional(),\n byteSize: z.number().int().nonnegative().optional(),\n sha256: Sha256Schema.optional(),\n })\n .strict()\n .refine((value) => Boolean(value.id || value.uri), {\n message: 'File reference requires id or uri',\n });\n\nexport const FileVariantSchema = z\n .object({\n variantId: ContractIdentifierSchema,\n kind: z.literal('thumbnail-512'),\n status: FileVariantStatusSchema,\n mimeType: z.literal('image/webp'),\n byteSize: z.number().int().nonnegative().optional(),\n width: z.number().int().positive().optional(),\n height: z.number().int().positive().optional(),\n uri: z.string().trim().min(1).optional(),\n errorCode: ContractIdentifierSchema.optional(),\n })\n .strict();\n\nexport const FileRecordSchema = z\n .object({\n contract: z.literal('FileRecord'),\n contractVersion: z.literal(1),\n version: z.number().int().positive(),\n fileId: ContractIdentifierSchema,\n teamId: ContractIdentifierSchema,\n purpose: FilePurposeSchema,\n originalName: z.string().trim().min(1).max(255),\n mimeType: z.string().trim().min(1).max(128),\n byteSize: z.number().int().nonnegative().optional(),\n sha256: Sha256Schema.optional(),\n status: FileStatusSchema,\n storage: z\n .object({\n bucketId: ContractIdentifierSchema,\n objectKey: z.string().trim().min(1).max(1024),\n canonicalUri: z.string().trim().min(1),\n etag: z.string().trim().min(1).optional(),\n })\n .strict(),\n variants: z.array(FileVariantSchema).default([]),\n createdAt: IsoDateTimeSchema,\n updatedAt: IsoDateTimeSchema,\n })\n .strict()\n .superRefine((value, context) => {\n if (value.storage.canonicalUri !== `file://${value.fileId}`) {\n context.addIssue({\n code: 'custom',\n path: ['storage', 'canonicalUri'],\n message: 'Canonical file URI must match fileId',\n });\n }\n });\n\nexport const FileUploadCreateRequestSchema = z\n .object({\n purpose: FilePurposeSchema,\n filename: z.string().trim().min(1).max(255),\n mimeType: z.string().trim().min(1).max(128),\n byteSize: z.number().int().nonnegative().optional(),\n sha256: Sha256Schema.optional(),\n usage: FileUsageSchema.optional(),\n })\n .strict();\n\nexport const FileUploadInstructionSchema = z\n .object({\n url: z.union([\n z.string().url(),\n z.string().trim().regex(/^\\/(?!\\/)/, 'Expected an absolute same-origin path'),\n ]),\n method: z.string().trim().min(1),\n headers: z.record(z.string(), z.string()),\n expiresAt: IsoDateTimeSchema,\n })\n .strict();\n\nexport const FileUploadCreateResponseSchema = z\n .object({\n file: FileRecordSchema,\n upload: FileUploadInstructionSchema,\n })\n .strict();\n\nexport const FileUploadCompleteRequestSchema = z\n .object({\n byteSize: z.number().int().nonnegative().optional(),\n sha256: Sha256Schema.optional(),\n etag: z.string().trim().min(1).max(512).optional(),\n })\n .strict();\n\nexport const ResolvedFileSchema = z\n .object({\n fileId: ContractIdentifierSchema.optional(),\n status: FileStatusSchema.optional(),\n originalUri: z.string().trim().min(1).optional(),\n thumbnailUri: z.string().trim().min(1).optional(),\n mimeType: z.string().trim().min(1).max(128).optional(),\n byteSize: z.number().int().nonnegative().optional(),\n sha256: Sha256Schema.optional(),\n unresolved: z.boolean().optional(),\n })\n .strict();\n\nexport const FileResolveBatchRequestSchema = z\n .object({\n references: z.array(FileReferenceSchema).min(1).max(1000),\n includeOriginal: z.boolean().default(false),\n includeThumbnail: z.boolean().default(true),\n })\n .strict();\n\nexport const FileResolveBatchResponseSchema = z\n .object({\n items: z.array(ResolvedFileSchema),\n })\n .strict();\n\nexport const ManagedFileCommandTypeSchema = z.enum([\n 'create-file',\n 'attach-usage',\n 'detach-usage',\n 'record-upload',\n 'verify-upload',\n 'delete-file',\n]);\n\nexport const ManagedFileCommandSchema = z\n .object({\n contract: z.literal('ManagedFileCommand'),\n contractVersion: z.literal(1),\n commandId: ContractIdentifierSchema,\n commandType: ManagedFileCommandTypeSchema,\n fileId: ContractIdentifierSchema,\n teamId: ContractIdentifierSchema,\n expectedVersion: z.number().int().nonnegative().optional(),\n actorId: ContractIdentifierSchema.optional(),\n payload: JsonObjectSchema.default({}),\n issuedAt: IsoDateTimeSchema,\n })\n .strict();\n\nexport const ManagedFileEventTypeSchema = z.enum([\n 'file-created',\n 'file-usage-attached',\n 'file-usage-detached',\n 'storage-operation-queued',\n 'storage-operation-completed',\n 'storage-operation-failed',\n 'file-ready',\n 'file-deleted',\n]);\n\nexport const ManagedFileEventSchema = z\n .object({\n contract: z.literal('ManagedFileEvent'),\n contractVersion: z.literal(1),\n eventId: ContractIdentifierSchema,\n eventType: ManagedFileEventTypeSchema,\n fileId: ContractIdentifierSchema,\n teamId: ContractIdentifierSchema,\n aggregateVersion: z.number().int().positive(),\n commandId: ContractIdentifierSchema,\n actorId: ContractIdentifierSchema.optional(),\n payload: JsonObjectSchema.default({}),\n occurredAt: IsoDateTimeSchema,\n })\n .strict();\n\nexport type FilePurpose = z.infer<typeof FilePurposeSchema>;\nexport type FileUsageOwnerType = z.infer<typeof FileUsageOwnerTypeSchema>;\nexport type FileStatus = z.infer<typeof FileStatusSchema>;\nexport type FileVariantStatus = z.infer<typeof FileVariantStatusSchema>;\nexport type FileUsage = z.infer<typeof FileUsageSchema>;\nexport type FileReference = z.infer<typeof FileReferenceSchema>;\nexport type FileVariant = z.infer<typeof FileVariantSchema>;\nexport type FileRecord = z.infer<typeof FileRecordSchema>;\nexport type FileUploadCreateRequest = z.infer<typeof FileUploadCreateRequestSchema>;\nexport type FileUploadInstruction = z.infer<typeof FileUploadInstructionSchema>;\nexport type FileUploadCreateResponse = z.infer<typeof FileUploadCreateResponseSchema>;\nexport type FileUploadCompleteRequest = z.infer<typeof FileUploadCompleteRequestSchema>;\nexport type ResolvedFile = z.infer<typeof ResolvedFileSchema>;\nexport type FileResolveBatchRequest = z.infer<typeof FileResolveBatchRequestSchema>;\nexport type FileResolveBatchResponse = z.infer<typeof FileResolveBatchResponseSchema>;\nexport type ManagedFileCommandType = z.infer<typeof ManagedFileCommandTypeSchema>;\nexport type ManagedFileCommand = z.infer<typeof ManagedFileCommandSchema>;\nexport type ManagedFileEventType = z.infer<typeof ManagedFileEventTypeSchema>;\nexport type ManagedFileEvent = z.infer<typeof ManagedFileEventSchema>;\n","/** Dependency analysis is shared by Page validation and the query runtime. */\nexport interface PageDependencyBinding {\n bindingId: string;\n parameters: Readonly<Record<string, { kind: string; bindingId?: string; stateId?: string }>>;\n stateEffects?: readonly { targetStateId: string }[];\n resultStateBindings?: readonly { targetStateId: string }[];\n}\nexport const analyzePageBindingDependencies = (bindings: readonly PageDependencyBinding[]): {\n order: string[];\n dependencies: Record<string, string[]>;\n errors: { bindingId: string; code: 'DUPLICATE' | 'MISSING' | 'CYCLE' | 'STATE_OWNER'; dependencyId?: string }[];\n} => {\n const errors: { bindingId: string; code: 'DUPLICATE' | 'MISSING' | 'CYCLE' | 'STATE_OWNER'; dependencyId?: string }[] = [];\n const ids = new Set<string>();\n const stateOwners = new Map<string, string>();\n for (const binding of bindings) {\n if (ids.has(binding.bindingId)) errors.push({ bindingId: binding.bindingId, code: 'DUPLICATE' });\n ids.add(binding.bindingId);\n for (const result of [...(binding.resultStateBindings ?? []), ...(binding.stateEffects ?? [])]) {\n if (stateOwners.has(result.targetStateId)) errors.push({ bindingId: binding.bindingId, code: 'STATE_OWNER', dependencyId: result.targetStateId });\n stateOwners.set(result.targetStateId, binding.bindingId);\n }\n }\n const dependencies: Record<string, string[]> = Object.create(null);\n const dependents = new Map<string, string[]>();\n const remaining = new Map<string, number>();\n for (const binding of bindings) {\n const sources = [...new Set(Object.values(binding.parameters).flatMap((source) => {\n const id = source.kind === 'binding-field' ? source.bindingId : source.kind === 'page-state' && source.stateId ? stateOwners.get(source.stateId) : undefined;\n return id ? [id] : [];\n }))];\n dependencies[binding.bindingId] = sources;\n remaining.set(binding.bindingId, sources.length);\n for (const dependencyId of sources) {\n if (!ids.has(dependencyId)) errors.push({ bindingId: binding.bindingId, code: 'MISSING', dependencyId });\n dependents.set(dependencyId, [...(dependents.get(dependencyId) ?? []), binding.bindingId]);\n }\n }\n const queue = [...ids].filter((id) => remaining.get(id) === 0);\n const order: string[] = [];\n for (let i = 0; i < queue.length; i++) {\n const id = queue[i]!;\n order.push(id);\n for (const dependent of dependents.get(id) ?? []) {\n const count = remaining.get(dependent)! - 1;\n remaining.set(dependent, count);\n if (count === 0) queue.push(dependent);\n }\n }\n if (order.length !== ids.size && !errors.some((error) => error.code === 'MISSING')) {\n for (const id of ids) if ((remaining.get(id) ?? 0) > 0) errors.push({ bindingId: id, code: 'CYCLE' });\n }\n return { order, dependencies, errors };\n};\n","import { z } from \"zod\";\nimport { ContractIdentifierSchema } from \"./common\";\n\n/**\n * A diagnostic is deliberately shared by document preflight, publication\n * preparation, and runtime verification. The optional fields keep the\n * contract wire-compatible while older producers migrate to the complete\n * shape.\n */\nexport const DeclarativeDiagnosticStageSchema = z.enum([\n \"document\",\n \"reference\",\n \"contract\",\n \"policy\",\n \"runtime\",\n]);\n\nexport const DeclarativeDiagnosticSchema = z\n .object({\n code: ContractIdentifierSchema,\n stage: DeclarativeDiagnosticStageSchema.optional(),\n severity: z.enum([\"info\", \"warning\", \"error\"]).optional(),\n blocking: z.boolean().optional(),\n path: z.string().trim().min(1),\n message: z.string().trim().min(1),\n recovery: z.array(z.string().trim().min(1)).max(8).optional(),\n })\n .strict();\n\nexport type DeclarativeDiagnostic = z.infer<typeof DeclarativeDiagnosticSchema>;\n","import type { CapabilityManifest } from '../contracts/capability';\nimport { CapabilityManifestSchema } from '../contracts/capability';\nimport type { EntityRef } from '../contracts/common';\nimport type { MenuDefinition } from '../contracts/menu';\nimport type { PageDefinition } from '../contracts/page';\nimport {\n ChangeImpactGraphSchema,\n DomainCommandDefinitionSchema,\n DomainCommandSchema,\n ProductDeclarationSchema,\n type ChangeImpactGraph,\n type DomainCommand,\n type DomainCommandDefinition,\n type ProductDeclaration,\n} from '../contracts/semantic';\n\nconst uniqueIndex = <T>(values: readonly T[], key: (value: T) => string, label: string): ReadonlyMap<string, T> => {\n const result = new Map<string, T>();\n for (const value of values) {\n const id = key(value);\n if (result.has(id)) throw new Error(`Duplicate ${label}: ${id}`);\n result.set(id, value);\n }\n return result;\n};\n\nconst ref = (kind: string, id: string): EntityRef => ({ kind, id });\nconst refKey = (value: EntityRef) => `${value.kind}:${value.id}`;\n\nexport interface CompiledProductDeclaration {\n declaration: ProductDeclaration;\n conceptsById: ReadonlyMap<string, ProductDeclaration['concepts'][number]>;\n ontologiesById: ReadonlyMap<string, ProductDeclaration['ontologies'][number]>;\n projectionsById: ReadonlyMap<string, ProductDeclaration['projections'][number]>;\n commandsByName: ReadonlyMap<string, DomainCommandDefinition>;\n capabilitiesById: ReadonlyMap<string, CapabilityManifest>;\n pagesById: ReadonlyMap<string, PageDefinition>;\n menusByKey: ReadonlyMap<string, MenuDefinition>;\n nodes: readonly EntityRef[];\n edges: readonly ChangeImpactGraph['edges'][number][];\n}\n\nexport interface ToolCapabilityPortSource {\n name: string;\n required?: boolean;\n type?: string;\n description?: string;\n}\n\nexport interface ToolCapabilitySource {\n id: string;\n capabilityVersion: string;\n ownerRepo: string;\n displayName: string;\n description?: string;\n inputs?: readonly ToolCapabilityPortSource[];\n outputs?: readonly ToolCapabilityPortSource[];\n sideEffects?: CapabilityManifest['runtime']['sideEffects'];\n}\n\nexport interface OpenApiToolCapabilityPublisherOptions {\n namespace: string;\n ownerRepo: string;\n capabilityVersion: string;\n}\n\nexport const compileToolCapabilityManifest = (input: unknown): CapabilityManifest => {\n const manifest = CapabilityManifestSchema.parse(input);\n if (manifest.kind !== 'tool') throw new Error(`Capability ${manifest.id} must use kind tool.`);\n if (manifest.runtime.providerBindings.length !== 1 || manifest.runtime.providerBindings[0].providerRef.kind !== 'tool') {\n throw new Error(`Tool capability ${manifest.id} must reference a tool provider.`);\n }\n return Object.freeze(manifest);\n};\n\nexport const createToolCapabilityManifest = (input: ToolCapabilitySource): CapabilityManifest => {\n const ports = (direction: 'input' | 'output', values: readonly ToolCapabilityPortSource[] = []) =>\n values.map((value) => ({\n name: String(value.name),\n schemaRef: `schema://tool/${input.id}/${direction}/${String(value.name)}`,\n required: value.required === true,\n multiple: value.type === 'array',\n description: value.description,\n }));\n return compileToolCapabilityManifest({\n contract: 'CapabilityManifest',\n id: input.id,\n capabilityVersion: input.capabilityVersion,\n ownerRepo: input.ownerRepo,\n kind: 'tool',\n displayName: input.displayName,\n description: input.description,\n ports: { inputs: ports('input', input.inputs), outputs: ports('output', input.outputs) },\n runtime: {\n providerBindings: [{ providerRef: { kind: 'tool', id: input.id }, productContexts: [], priority: 0 }],\n loading: 'on-activation',\n stateOwner: 'provider',\n sideEffects: input.sideEffects ?? ['network'],\n },\n placement: { surfaces: ['agent', 'workflow'], slots: [], variants: [], tokenRefs: [] },\n accessibility: { keyboardModel: 'tool-form', focusModel: 'host-managed', labelContract: 'tool-display-name' },\n observability: { eventNamespace: `tool.${input.id}`, metrics: ['calls', 'duration', 'errors'], evidenceRefs: [] },\n });\n};\n\nconst TOOL_HTTP_METHODS = new Set(['get', 'post', 'put', 'patch', 'delete']);\nconst normalizeToolIdentifier = (value: string) => value.replace(/[^a-zA-Z0-9_.-]/g, '_');\nconst localizedText = (value: unknown, fallback: string): string => {\n if (typeof value === 'string' && value.trim()) return value;\n if (value && typeof value === 'object') {\n const record = value as Record<string, unknown>;\n for (const locale of ['en-US', 'zh-CN']) {\n if (typeof record[locale] === 'string' && String(record[locale]).trim()) return String(record[locale]);\n }\n }\n return fallback;\n};\n\nconst normalizeToolCapabilityPorts = (\n value: unknown,\n direction: 'input' | 'output',\n): ToolCapabilityPortSource[] => {\n if (value === undefined) return [];\n if (!Array.isArray(value)) throw new Error(`Tool ${direction} declaration must be an array.`);\n\n const normalized = value.map((item, index) => {\n if (!item || typeof item !== 'object' || Array.isArray(item)) {\n throw new Error(`Tool ${direction} declaration at index ${index} must be an object.`);\n }\n\n const record = item as Record<string, unknown>;\n if (typeof record.name !== 'string' || !record.name.trim()) {\n throw new Error(`Tool ${direction} declaration at index ${index} must have a non-empty name.`);\n }\n if (record.required !== undefined && typeof record.required !== 'boolean') {\n throw new Error(`Tool ${direction} ${record.name} required must be a boolean.`);\n }\n if (record.type !== undefined && (typeof record.type !== 'string' || !record.type.trim())) {\n throw new Error(`Tool ${direction} ${record.name} type must be a non-empty string.`);\n }\n\n const name = record.name.trim();\n const descriptionSource = record.description ?? record.displayName;\n return {\n name,\n required: record.required === true,\n type: typeof record.type === 'string' ? record.type.trim() : undefined,\n description: descriptionSource === undefined\n ? undefined\n : localizedText(descriptionSource, name),\n };\n });\n\n const portsByName = new Map<string, ToolCapabilityPortSource>();\n for (const port of normalized) {\n const existing = portsByName.get(port.name);\n if (!existing) {\n portsByName.set(port.name, port);\n continue;\n }\n\n // OpenAPI tool forms may declare the same logical field more than once\n // to provide conditional presentation/defaults (for example one code\n // editor per selected language). A capability port is an identity and\n // must remain unique, so collapse presentation-only duplicates while\n // failing closed when their executable contract disagrees.\n if (existing.required !== port.required || existing.type !== port.type) {\n throw new Error(\n `Tool ${direction} ${port.name} has conflicting duplicate declarations.`,\n );\n }\n }\n\n return [...portsByName.values()];\n};\n\n/** Publishes canonical CapabilityManifest values on every tool operation in an OpenAPI document. */\nexport const publishOpenApiToolCapabilityManifests = <T extends Record<string, unknown>>(\n document: T,\n options: OpenApiToolCapabilityPublisherOptions,\n): T => {\n const paths = document.paths;\n if (!paths || typeof paths !== 'object') throw new Error('OpenAPI document paths are required.');\n for (const pathItem of Object.values(paths as Record<string, unknown>)) {\n if (!pathItem || typeof pathItem !== 'object') continue;\n for (const [method, operationValue] of Object.entries(pathItem as Record<string, unknown>)) {\n if (!TOOL_HTTP_METHODS.has(method.toLowerCase()) || !operationValue || typeof operationValue !== 'object') continue;\n const operation = operationValue as Record<string, unknown>;\n const declaredName = operation['x-monkey-tool-name'];\n if (typeof declaredName !== 'string' || !declaredName.trim()) continue;\n const toolName = normalizeToolIdentifier(declaredName);\n const id = `${normalizeToolIdentifier(options.namespace)}_${toolName}`;\n const displayName = localizedText(operation['x-monkey-tool-display-name'] ?? operation.summary, toolName);\n const description = localizedText(operation['x-monkey-tool-description'] ?? operation.description, displayName);\n const inputs = normalizeToolCapabilityPorts(operation['x-monkey-tool-input'], 'input');\n const outputs = normalizeToolCapabilityPorts(operation['x-monkey-tool-output'], 'output');\n operation['x-monkeys-capability-manifest'] = createToolCapabilityManifest({\n id,\n capabilityVersion: typeof operation['x-monkey-tool-version'] === 'string'\n ? operation['x-monkey-tool-version']\n : options.capabilityVersion,\n ownerRepo: options.ownerRepo,\n displayName,\n description,\n inputs,\n outputs,\n sideEffects: Array.isArray(operation['x-monkey-tool-side-effects'])\n ? operation['x-monkey-tool-side-effects'] as CapabilityManifest['runtime']['sideEffects']\n : undefined,\n });\n }\n }\n return document;\n};\n\nexport const compileProductDeclaration = (input: ProductDeclaration): CompiledProductDeclaration => {\n const declaration = ProductDeclarationSchema.parse(input);\n const conceptsById = uniqueIndex(declaration.concepts, (value) => value.conceptId, 'concept id');\n const ontologiesById = uniqueIndex(declaration.ontologies, (value) => value.ontologyId, 'ontology id');\n const projectionsById = uniqueIndex(declaration.projections, (value) => value.projectionId, 'projection id');\n const commandsByName = uniqueIndex(declaration.commands, (value) => value.commandName, 'command name');\n const capabilitiesById = uniqueIndex(declaration.capabilities, (value) => value.id, 'capability id');\n const pagesById = uniqueIndex(declaration.pages, (value) => value.pageId, 'page id');\n const menusByKey = uniqueIndex(\n declaration.menus,\n (value) => `${value.applicationId}/${value.surface}/${value.menuId}`,\n 'menu definition',\n );\n const nodes: EntityRef[] = [];\n const edges: ChangeImpactGraph['edges'] = [];\n\n const addNode = (kind: string, id: string) => nodes.push(ref(kind, id));\n const addEdge = (from: EntityRef, to: EntityRef, relation: ChangeImpactGraph['edges'][number]['relation']) =>\n edges.push({ from, to, relation });\n\n for (const ontology of declaration.ontologies) addNode('ontology', ontology.ontologyId);\n for (const projection of declaration.projections) {\n addNode('projection', projection.projectionId);\n for (const ontologyId of projection.ontologyIds) {\n if (!ontologiesById.has(ontologyId)) throw new Error(`Projection ${projection.projectionId} references unknown ontology ${ontologyId}.`);\n addEdge(ref('projection', projection.projectionId), ref('ontology', ontologyId), 'uses-ontology');\n }\n }\n for (const command of declaration.commands) addNode('command', command.commandName);\n for (const capability of declaration.capabilities) addNode('capability', capability.id);\n for (const menu of declaration.menus) addNode('menu', `${menu.applicationId}/${menu.surface}/${menu.menuId}`);\n for (const concept of declaration.concepts) {\n addNode('concept', concept.conceptId);\n if (concept.ontologyId) {\n if (!ontologiesById.has(concept.ontologyId)) throw new Error(`Concept ${concept.conceptId} references unknown ontology ${concept.ontologyId}.`);\n addEdge(ref('concept', concept.conceptId), ref('ontology', concept.ontologyId), 'uses-ontology');\n }\n for (const capabilityId of concept.capabilityIds) {\n if (!capabilitiesById.has(capabilityId)) throw new Error(`Concept ${concept.conceptId} references unknown capability ${capabilityId}.`);\n addEdge(ref('concept', concept.conceptId), ref('capability', capabilityId), 'uses-capability');\n }\n for (const commandName of concept.commandNames) {\n if (!commandsByName.has(commandName)) throw new Error(`Concept ${concept.conceptId} references unknown command ${commandName}.`);\n addEdge(ref('concept', concept.conceptId), ref('command', commandName), 'uses-command');\n }\n for (const relationship of concept.relationships) {\n if (!conceptsById.has(relationship.targetConceptId)) {\n throw new Error(`Concept ${concept.conceptId} references unknown concept ${relationship.targetConceptId}.`);\n }\n addEdge(ref('concept', concept.conceptId), ref('concept', relationship.targetConceptId), 'relates-to-concept');\n }\n }\n for (const page of declaration.pages) {\n addNode('page', page.pageId);\n if (page.binding.ontologyId) {\n if (!ontologiesById.has(page.binding.ontologyId)) throw new Error(`Page ${page.pageId} references unknown ontology ${page.binding.ontologyId}.`);\n addEdge(ref('page', page.pageId), ref('ontology', page.binding.ontologyId), 'uses-ontology');\n }\n if (page.binding.projectionRef) {\n if (!projectionsById.has(page.binding.projectionRef)) throw new Error(`Page ${page.pageId} references unknown projection ${page.binding.projectionRef}.`);\n addEdge(ref('page', page.pageId), ref('projection', page.binding.projectionRef), 'uses-projection');\n }\n for (const capabilityRef of [page.capabilityRef, ...page.capabilityRefs].filter(Boolean) as EntityRef[]) {\n if (!capabilitiesById.has(capabilityRef.id)) throw new Error(`Page ${page.pageId} references unknown capability ${capabilityRef.id}.`);\n addEdge(ref('page', page.pageId), ref('capability', capabilityRef.id), 'uses-capability');\n }\n }\n\n uniqueIndex(nodes, refKey, 'declaration node');\n return Object.freeze({\n declaration: Object.freeze(declaration),\n conceptsById,\n ontologiesById,\n projectionsById,\n commandsByName,\n capabilitiesById,\n pagesById,\n menusByKey,\n nodes: Object.freeze(nodes),\n edges: Object.freeze(edges),\n });\n};\n\nexport const validateDomainCommand = (\n input: DomainCommand,\n definitions: readonly DomainCommandDefinition[],\n permissionCodes: readonly string[],\n): DomainCommand => {\n const command = DomainCommandSchema.parse(input);\n const commandsByName = uniqueIndex(\n definitions.map((definition) => DomainCommandDefinitionSchema.parse(definition)),\n (definition) => definition.commandName,\n 'command name',\n );\n const definition = commandsByName.get(command.commandName);\n if (!definition) throw new Error(`Unknown domain command: ${command.commandName}`);\n if (!definition.targetKinds.includes(command.targetRef.kind)) {\n throw new Error(`Command ${command.commandName} does not accept target kind ${command.targetRef.kind}.`);\n }\n const granted = new Set(permissionCodes);\n const missing = definition.requiredPermissionCodes.filter((permission) => !granted.has(permission));\n if (missing.length) throw new Error(`Command ${command.commandName} requires permissions: ${missing.join(', ')}`);\n return Object.freeze(command);\n};\n\nconst declarationValuesByRef = (compiled: CompiledProductDeclaration): Map<string, unknown> => {\n const values = new Map<string, unknown>();\n for (const value of compiled.declaration.ontologies) values.set(refKey(ref('ontology', value.ontologyId)), value);\n for (const value of compiled.declaration.projections) values.set(refKey(ref('projection', value.projectionId)), value);\n for (const value of compiled.declaration.commands) values.set(refKey(ref('command', value.commandName)), value);\n for (const value of compiled.declaration.capabilities) values.set(refKey(ref('capability', value.id)), value);\n for (const value of compiled.declaration.concepts) values.set(refKey(ref('concept', value.conceptId)), value);\n for (const value of compiled.declaration.pages) values.set(refKey(ref('page', value.pageId)), value);\n return values;\n};\n\nexport const buildChangeImpactGraph = (\n previousInput: ProductDeclaration,\n nextInput: ProductDeclaration,\n generatedAt = new Date().toISOString(),\n): ChangeImpactGraph => {\n const previous = compileProductDeclaration(previousInput);\n const next = compileProductDeclaration(nextInput);\n const previousValues = declarationValuesByRef(previous);\n const nextValues = declarationValuesByRef(next);\n const changedKeys = new Set<string>();\n for (const key of new Set([...previousValues.keys(), ...nextValues.keys()])) {\n if (JSON.stringify(previousValues.get(key)) !== JSON.stringify(nextValues.get(key))) changedKeys.add(key);\n }\n\n const reverse = new Map<string, Set<string>>();\n for (const edge of [...previous.edges, ...next.edges]) {\n const dependency = refKey(edge.to);\n const dependent = refKey(edge.from);\n const values = reverse.get(dependency) ?? new Set<string>();\n values.add(dependent);\n reverse.set(dependency, values);\n }\n const refs = new Map<string, EntityRef>();\n for (const node of [...previous.nodes, ...next.nodes]) refs.set(refKey(node), node);\n const impacts = Array.from(changedKeys).sort().map((changedKey) => {\n const affected = new Set<string>();\n const queue = [...(reverse.get(changedKey) ?? [])];\n while (queue.length) {\n const current = queue.shift()!;\n if (affected.has(current)) continue;\n affected.add(current);\n queue.push(...(reverse.get(current) ?? []));\n }\n return {\n changedRef: refs.get(changedKey) ?? (() => {\n const separator = changedKey.indexOf(':');\n return ref(changedKey.slice(0, separator), changedKey.slice(separator + 1));\n })(),\n affectedRefs: Array.from(affected).sort().map((key) => refs.get(key)!),\n reasons: affected.size ? ['dependency'] : ['direct-change'],\n };\n });\n\n return ChangeImpactGraphSchema.parse({\n contract: 'ChangeImpactGraph',\n declarationId: next.declaration.declarationId,\n nodes: Array.from(refs.values()).sort((left, right) => refKey(left).localeCompare(refKey(right))),\n edges: next.edges,\n impacts,\n generatedAt,\n });\n};\n","import { z } from \"zod\";\nimport { assertPageValueBudget } from \"./page-expression\";\nimport {\n AccessPolicySchema,\n CompiledRouteClaimSchema,\n DeclarativeShellSurfaceChromeSchema,\n I18nTextSchema,\n PageRuntimeBundleSchema,\n ReadablePageRuntimeBundleSchema,\n PageRouteStatePresentationSchema,\n ProductSurfaceSchema,\n RevisionRefSchema,\n RouteClaimSchema,\n RouteSpaceSchema,\n StableRefSchema,\n TenantScopeSchema,\n WorkbenchRuntimeBundleSchema,\n WorkbenchIdentitySchema,\n NavigationRuntimeBundleSchema,\n NavigationSchema,\n NavigationReleaseSchema,\n ManagementAccessSchema,\n PageSchema,\n ResolvedPageSchema,\n PageReleaseSchema,\n WorkbenchSchema,\n WorkbenchReleaseSchema,\n LegacyRouteTakeoverAuthorizationSchema,\n DomainQueryDefinitionSchema,\n} from \"./declarative-control\";\nimport { DeclarativeDiagnosticSchema } from \"./declarative-diagnostic\";\nimport {\n ContractIdentifierSchema,\n JsonObjectSchema,\n Sha256Schema,\n} from \"./common\";\nimport { CapabilityManifestSchema } from \"./capability\";\nimport { ViewProviderDescriptorSchema } from \"./render\";\nimport {\n DomainCommandDefinitionSchema,\n SchemaDefinitionSchema,\n} from \"./semantic\";\n\nexport const DECLARATIVE_CONTROL_API_PREFIX =\n \"/api/declarative-control\" as const;\nexport const DECLARATIVE_CONTROL_CONTROLLER_PATH =\n \"/declarative-control\" as const;\n\nexport const DeclarativeResourceKindSchema = z.enum([\n \"page\",\n \"navigation\",\n \"workbench\",\n]);\nexport type DeclarativeResourceKind = z.infer<\n typeof DeclarativeResourceKindSchema\n>;\n\nexport const DeclarativeAuthoringActionSchema = z.enum([\n \"validate\",\n \"preview\",\n \"publish\",\n \"rollback\",\n]);\nexport type DeclarativeAuthoringAction = z.infer<\n typeof DeclarativeAuthoringActionSchema\n>;\n\nconst encodePath = (value: string): string => encodeURIComponent(value);\n\nexport const declarativeControlRoutes = {\n prepareDocumentImport: (kind: \"page\" | \"navigation\"): string =>\n `${DECLARATIVE_CONTROL_API_PREFIX}/authoring/documents/${kind}/prepare`,\n importDocument: (kind: \"page\" | \"navigation\"): string =>\n `${DECLARATIVE_CONTROL_API_PREFIX}/authoring/documents/${kind}/import`,\n validate: (kind: DeclarativeResourceKind, resourceId: string): string =>\n `${DECLARATIVE_CONTROL_API_PREFIX}/resources/${kind}/${encodePath(resourceId)}/validate`,\n preview: (kind: DeclarativeResourceKind, resourceId: string): string =>\n `${DECLARATIVE_CONTROL_API_PREFIX}/resources/${kind}/${encodePath(resourceId)}/preview`,\n publish: (kind: DeclarativeResourceKind, resourceId: string): string =>\n `${DECLARATIVE_CONTROL_API_PREFIX}/resources/${kind}/${encodePath(resourceId)}/publish`,\n rollback: (\n kind: DeclarativeResourceKind,\n resourceId: string,\n releaseSlotId: string,\n ): string =>\n `${DECLARATIVE_CONTROL_API_PREFIX}/resources/${kind}/${encodePath(resourceId)}/releases/${encodePath(releaseSlotId)}/rollback`,\n slotAuthority: (kind: DeclarativeResourceKind, slotId: string): string =>\n `${DECLARATIVE_CONTROL_API_PREFIX}/slot-authorities/${kind}/${encodePath(slotId)}`,\n resources: (kind: DeclarativeResourceKind): string =>\n `${DECLARATIVE_CONTROL_API_PREFIX}/resources/${kind}`,\n authoringCreate: (kind: DeclarativeResourceKind): string =>\n `${DECLARATIVE_CONTROL_API_PREFIX}/authoring/resources/${kind}`,\n draft: (kind: DeclarativeResourceKind, resourceId: string): string =>\n `${DECLARATIVE_CONTROL_API_PREFIX}/resources/${kind}/${encodePath(resourceId)}/draft`,\n revisions: (kind: DeclarativeResourceKind, resourceId: string): string =>\n `${DECLARATIVE_CONTROL_API_PREFIX}/resources/${kind}/${encodePath(resourceId)}/revisions`,\n authoringHistory: (\n kind: DeclarativeResourceKind,\n resourceId: string,\n ): string =>\n `${DECLARATIVE_CONTROL_API_PREFIX}/authoring/resources/${kind}/${encodePath(resourceId)}/history`,\n releaseRevisions: (\n kind: DeclarativeResourceKind,\n resourceId: string,\n releaseSlotId: string,\n ): string =>\n `${DECLARATIVE_CONTROL_API_PREFIX}/resources/${kind}/${encodePath(resourceId)}/releases/${encodePath(releaseSlotId)}/revisions`,\n references: (kind: DeclarativeResourceKind, resourceId: string): string =>\n `${DECLARATIVE_CONTROL_API_PREFIX}/resources/${kind}/${encodePath(resourceId)}/references`,\n retire: (kind: DeclarativeResourceKind, resourceId: string): string =>\n `${DECLARATIVE_CONTROL_API_PREFIX}/resources/${kind}/${encodePath(resourceId)}/retire`,\n authoringBootstrap: (): string =>\n `${DECLARATIVE_CONTROL_API_PREFIX}/authoring/bootstrap`,\n authoringPrepare: (\n kind: DeclarativeResourceKind,\n resourceId: string,\n action: DeclarativeAuthoringAction,\n ): string =>\n `${DECLARATIVE_CONTROL_API_PREFIX}/authoring/resources/${kind}/${encodePath(resourceId)}/${action}`,\n navigationPlacements: (): string =>\n `${DECLARATIVE_CONTROL_API_PREFIX}/authoring/navigation/placements`,\n navigationImport: (placement: string): string =>\n `${DECLARATIVE_CONTROL_API_PREFIX}/authoring/navigation/placements/${encodePath(placement)}/import`,\n navigationSeedMigration: (placement: string): string =>\n `${DECLARATIVE_CONTROL_API_PREFIX}/authoring/navigation/placements/${encodePath(placement)}/seed-migration`,\n publicationPlan: (): string =>\n `${DECLARATIVE_CONTROL_API_PREFIX}/authoring/publication-plans`,\n publicationJobs: (): string =>\n `${DECLARATIVE_CONTROL_API_PREFIX}/authoring/publication-jobs`,\n publicationJob: (jobId: string): string =>\n `${DECLARATIVE_CONTROL_API_PREFIX}/authoring/publication-jobs/${encodePath(jobId)}`,\n publicationJobResume: (jobId: string): string =>\n `${DECLARATIVE_CONTROL_API_PREFIX}/authoring/publication-jobs/${encodePath(jobId)}/resume`,\n publicationJobCancel: (jobId: string): string =>\n `${DECLARATIVE_CONTROL_API_PREFIX}/authoring/publication-jobs/${encodePath(jobId)}/cancel`,\n runtimeResolve: (): string =>\n `${DECLARATIVE_CONTROL_API_PREFIX}/runtime/resolve`,\n runtimeNavigationBootstrap: (): string =>\n `${DECLARATIVE_CONTROL_API_PREFIX}/runtime/navigations/bootstrap`,\n runtimeWorkbenchBootstrap: (): string =>\n `${DECLARATIVE_CONTROL_API_PREFIX}/runtime/workbenches/bootstrap`,\n runtimePage: (releaseSlotId: string): string =>\n `${DECLARATIVE_CONTROL_API_PREFIX}/runtime/pages/${encodePath(releaseSlotId)}`,\n runtimeNavigation: (releaseSlotId: string): string =>\n `${DECLARATIVE_CONTROL_API_PREFIX}/runtime/navigations/${encodePath(releaseSlotId)}`,\n runtimeWorkbench: (releaseSlotId: string): string =>\n `${DECLARATIVE_CONTROL_API_PREFIX}/runtime/workbenches/${encodePath(releaseSlotId)}`,\n runtimePreview: (): string =>\n `${DECLARATIVE_CONTROL_API_PREFIX}/runtime/previews`,\n runtimePreviewBindingQuery: (bindingId: string): string =>\n `${DECLARATIVE_CONTROL_API_PREFIX}/runtime/previews/bindings/${encodePath(bindingId)}/query`,\n runtimeBindingQuery: (releaseSlotId: string, bindingId: string): string =>\n `${DECLARATIVE_CONTROL_API_PREFIX}/runtime/pages/${encodePath(releaseSlotId)}/bindings/${encodePath(bindingId)}/query`,\n runtimeActionExecute: (\n releaseSlotId: string,\n actionBindingId: string,\n ): string =>\n `${DECLARATIVE_CONTROL_API_PREFIX}/runtime/pages/${encodePath(releaseSlotId)}/actions/${encodePath(actionBindingId)}/execute`,\n runtimeNavigationActionExecute: (\n releaseSlotId: string,\n nodeId: string,\n ): string =>\n `${DECLARATIVE_CONTROL_API_PREFIX}/runtime/navigations/${encodePath(releaseSlotId)}/actions/${encodePath(nodeId)}/execute`,\n} as const;\n\nexport const DeclarativeSuccessEnvelopeSchema = <T extends z.ZodType>(\n data: T,\n) =>\n z.object({ code: z.number().int(), message: z.string(), data }).passthrough();\n\nexport const DeclarativeErrorEnvelopeSchema = z\n .object({\n code: z.string().trim().min(1),\n message: z.string().trim().min(1),\n requestId: z.string().trim().min(1).optional(),\n details: z.unknown().optional(),\n diagnostics: z.array(z.unknown()).optional(),\n })\n .passthrough();\n\nconst DeclarativeRuntimePageTargetSchema = z\n .object({\n activeReleaseRevisionRef: RevisionRefSchema,\n pageRevisionRef: RevisionRefSchema,\n })\n .strict()\n .superRefine((value, context) => {\n if (value.activeReleaseRevisionRef.kind !== \"page-release\") {\n context.addIssue({\n code: \"custom\",\n path: [\"activeReleaseRevisionRef\", \"kind\"],\n message: \"Runtime requests require an exact page-release revision.\",\n });\n }\n if (value.pageRevisionRef.kind !== \"page\") {\n context.addIssue({\n code: \"custom\",\n path: [\"pageRevisionRef\", \"kind\"],\n message: \"Runtime requests require an exact page revision.\",\n });\n }\n });\n\nconst forbiddenRuntimeParameterKeys = new Set([\n \"__proto__\",\n \"prototype\",\n \"constructor\",\n]);\nconst rejectRuntimePrototypeKeys = (\n value: unknown,\n context: z.RefinementCtx,\n path: PropertyKey[] = [],\n): void => {\n if (Array.isArray(value)) {\n value.forEach((child, index) =>\n rejectRuntimePrototypeKeys(child, context, [...path, index]),\n );\n return;\n }\n if (!value || typeof value !== \"object\") return;\n for (const key of Object.keys(value)) {\n if (forbiddenRuntimeParameterKeys.has(key)) {\n context.addIssue({\n code: \"custom\",\n path: [...path, key],\n message: \"Prototype-mutating runtime parameter keys are forbidden.\",\n });\n }\n rejectRuntimePrototypeKeys(\n (value as Record<string, unknown>)[key],\n context,\n [...path, key],\n );\n }\n};\nconst runtimeParameterDepth = (value: unknown, depth = 0): number => {\n if (value === null || typeof value !== \"object\") return depth;\n const values = Array.isArray(value)\n ? value\n : Object.values(value as Record<string, unknown>);\n return values.reduce(\n (maximum, child) =>\n Math.max(maximum, runtimeParameterDepth(child, depth + 1)),\n depth,\n );\n};\n\nconst DeclarativeRuntimeParametersSchema = z\n .any()\n .superRefine(rejectRuntimePrototypeKeys)\n .pipe(\n JsonObjectSchema.superRefine((value, context) => {\n const keys = Object.keys(value);\n if (keys.length > 32)\n context.addIssue({\n code: \"custom\",\n path: [],\n message:\n \"Runtime binding parameters cannot contain more than 32 keys.\",\n });\n keys.forEach((key) => {\n if (!ContractIdentifierSchema.safeParse(key).success)\n context.addIssue({\n code: \"custom\",\n path: [key],\n message: \"Runtime parameter keys must be contract identifiers.\",\n });\n });\n if (runtimeParameterDepth(value) > 8)\n context.addIssue({\n code: \"custom\",\n path: [],\n message: \"Runtime binding parameters cannot exceed 8 nested levels.\",\n });\n const serialized = JSON.stringify(value);\n if (new TextEncoder().encode(serialized).length > 16 * 1024)\n context.addIssue({\n code: \"custom\",\n path: [],\n message: \"Runtime binding parameters cannot exceed 16 KiB.\",\n });\n const visit = (entry: unknown, path: PropertyKey[]) => {\n if (typeof entry === \"string\" && entry.length > 2048)\n context.addIssue({\n code: \"custom\",\n path,\n message:\n \"Runtime parameter string values cannot exceed 2048 characters.\",\n });\n else if (Array.isArray(entry))\n entry.forEach((child, index) => visit(child, [...path, index]));\n else if (entry && typeof entry === \"object\")\n Object.entries(entry).forEach(([key, child]) =>\n visit(child, [...path, key]),\n );\n };\n visit(value, []);\n }),\n );\n\nexport const DeclarativeRuntimeBindingQueryIntentSchema =\n DeclarativeRuntimePageTargetSchema.safeExtend({\n parameters: DeclarativeRuntimeParametersSchema.default({}),\n pageSize: z.number().int().min(1).max(200).default(60),\n cursor: z.string().trim().min(1).max(8192).optional(),\n }).strict();\nexport type DeclarativeRuntimeBindingQueryIntent = z.infer<\n typeof DeclarativeRuntimeBindingQueryIntentSchema\n>;\n\nexport const DeclarativeRuntimeBindingQueryResultSchema = z\n .object({\n bindingId: ContractIdentifierSchema,\n activeReleaseRevisionRef: RevisionRefSchema,\n pageRevisionRef: RevisionRefSchema,\n renderModelSchemaRevisionRef: RevisionRefSchema,\n model: JsonObjectSchema,\n refresh: z.object({ continue: z.boolean() }).strict().optional(),\n pageInfo: z\n .object({\n pageSize: z.number().int().positive(),\n returned: z.number().int().nonnegative(),\n hasMore: z.boolean(),\n nextCursor: z.string().trim().min(1).optional(),\n total: z.number().int().nonnegative().optional(),\n })\n .strict()\n .optional(),\n sourceRevisionRefs: z.array(RevisionRefSchema),\n contentHash: Sha256Schema,\n })\n .strict();\nexport type DeclarativeRuntimeBindingQueryResult = z.infer<\n typeof DeclarativeRuntimeBindingQueryResultSchema\n>;\n\nexport const DeclarativeRuntimeActionRoutePathSchema = z\n .string()\n .min(1)\n .max(8192)\n .refine(\n (value) =>\n value.startsWith(\"/\") &&\n !value.startsWith(\"//\") &&\n value === value.trim() &&\n !/[?#\\\\\\u0000-\\u0020\\u007f]/.test(value) &&\n !value.includes(\"://\"),\n \"An Action route requires an application-relative pathname without query or fragment.\",\n );\n\nexport const DeclarativeRuntimeActionExecuteIntentSchema =\n DeclarativeRuntimePageTargetSchema.safeExtend({\n intent: JsonObjectSchema,\n recoveryOnly: z.literal(true).optional(),\n pageState: DeclarativeRuntimeParametersSchema,\n files: z\n .record(\n z.string().min(1).max(256),\n z.union([\n z\n .object({\n fileName: z.string().min(1).max(255),\n content: z.string().max(1048576),\n })\n .strict(),\n z\n .object({\n fileName: z.string().min(1).max(255),\n canonicalUri: z\n .string()\n .regex(/^file:\\/\\/[^\\s/?#]+$/)\n .max(1024),\n })\n .strict(),\n ]),\n )\n .superRefine((files, context) => {\n if (\n Object.keys(files).length > 4 ||\n Object.values(files).reduce(\n (bytes, file) =>\n bytes +\n (\"content\" in file\n ? new TextEncoder().encode(file.content).byteLength\n : 0),\n 0,\n ) > 1048576\n )\n context.addIssue({\n code: \"custom\",\n message: \"Action files exceed the transient input budget.\",\n });\n })\n .optional(),\n scope: z\n .unknown()\n .superRefine((value, context) => {\n try {\n assertPageValueBudget(value);\n } catch {\n context.addIssue({\n code: \"custom\",\n message: \"Action instance scope exceeds the safe JSON budget.\",\n });\n }\n })\n .pipe(JsonObjectSchema)\n .optional(),\n routePath: DeclarativeRuntimeActionRoutePathSchema.optional(),\n idempotencyKey: z.string().trim().min(1).max(256),\n }).strict();\n/** Old actions have no page-state payload; current action requests retain their strict requirement. */\nexport const LegacyDeclarativeRuntimeActionExecuteIntentSchema = DeclarativeRuntimeActionExecuteIntentSchema.safeExtend({ pageState: DeclarativeRuntimeParametersSchema.default({}) });\nexport type LegacyDeclarativeRuntimeActionExecuteIntent = z.infer<typeof LegacyDeclarativeRuntimeActionExecuteIntentSchema>;\n\nexport type DeclarativeRuntimeActionExecuteIntent = z.infer<\n typeof DeclarativeRuntimeActionExecuteIntentSchema\n>;\n\nexport const DeclarativeNativeDownloadSchema = z\n .object({\n url: z\n .string()\n .min(1)\n .max(32768)\n .refine((value) => {\n try {\n const url = new URL(value);\n return (\n [\"http:\", \"https:\"].includes(url.protocol) &&\n !url.username &&\n !url.password\n );\n } catch {\n return false;\n }\n }, \"A native download requires an HTTP URL without credentials.\"),\n fileName: z\n .string()\n .min(1)\n .max(2048)\n .regex(/^[^\\u0000-\\u001f\\u007f/\\\\]+$/),\n })\n .strict();\n\nexport const DeclarativeRuntimeActionExecuteResultSchema = z\n .object({\n actionBindingId: ContractIdentifierSchema,\n activeReleaseRevisionRef: RevisionRefSchema,\n pageRevisionRef: RevisionRefSchema,\n commandRevisionRef: RevisionRefSchema,\n resultSchemaRevisionRef: RevisionRefSchema,\n result: JsonObjectSchema,\n download: DeclarativeNativeDownloadSchema.optional(),\n downloadError: z\n .object({\n code: z.enum([\n \"DECLARATIVE_DOWNLOAD_FORBIDDEN\",\n \"DECLARATIVE_DOWNLOAD_UNAVAILABLE\",\n ]),\n })\n .strict()\n .optional(),\n idempotentReplay: z.boolean(),\n lineageRef: StableRefSchema,\n refreshBindingIds: z.array(ContractIdentifierSchema),\n navigationTargetRef: StableRefSchema.optional(),\n contentHash: Sha256Schema,\n })\n .strict()\n .superRefine((value, context) => {\n if (value.download && value.downloadError)\n context.addIssue({\n code: \"custom\",\n path: [\"downloadError\"],\n message:\n \"A download response cannot contain both a target and an error.\",\n });\n });\nexport type DeclarativeRuntimeActionExecuteResult = z.infer<\n typeof DeclarativeRuntimeActionExecuteResultSchema\n>;\n\nconst DeclarativeRuntimeNavigationTargetSchema = z\n .object({\n activeReleaseRevisionRef: RevisionRefSchema,\n navigationRevisionRef: RevisionRefSchema,\n })\n .strict()\n .superRefine((value, context) => {\n if (value.activeReleaseRevisionRef.kind !== \"navigation-release\") {\n context.addIssue({\n code: \"custom\",\n path: [\"activeReleaseRevisionRef\", \"kind\"],\n message:\n \"Navigation Action requests require an exact navigation-release revision.\",\n });\n }\n if (value.navigationRevisionRef.kind !== \"navigation\") {\n context.addIssue({\n code: \"custom\",\n path: [\"navigationRevisionRef\", \"kind\"],\n message:\n \"Navigation Action requests require an exact navigation revision.\",\n });\n }\n });\n\nexport const DeclarativeRuntimeNavigationActionExecuteIntentSchema =\n DeclarativeRuntimeNavigationTargetSchema.safeExtend({\n intent: JsonObjectSchema.default({}),\n idempotencyKey: z.string().trim().min(1).max(256),\n }).strict();\nexport type DeclarativeRuntimeNavigationActionExecuteIntent = z.infer<\n typeof DeclarativeRuntimeNavigationActionExecuteIntentSchema\n>;\n\nexport const DeclarativeRuntimeNavigationActionExecuteResultSchema = z\n .object({\n nodeId: ContractIdentifierSchema,\n activeReleaseRevisionRef: RevisionRefSchema,\n navigationRevisionRef: RevisionRefSchema,\n commandRevisionRef: RevisionRefSchema,\n resultSchemaRevisionRef: RevisionRefSchema.optional(),\n result: JsonObjectSchema,\n idempotentReplay: z.boolean(),\n lineageRef: StableRefSchema,\n navigationTargetRef: StableRefSchema.optional(),\n contentHash: Sha256Schema,\n })\n .strict();\nexport type DeclarativeRuntimeNavigationActionExecuteResult = z.infer<\n typeof DeclarativeRuntimeNavigationActionExecuteResultSchema\n>;\n\nexport const DeclarativeAudienceSimulationSchema = z\n .object({\n groupRefs: z\n .array(StableRefSchema)\n .max(128)\n .default([])\n .superRefine((references, context) => {\n references.forEach((reference, index) => {\n if (reference.kind !== \"group\")\n context.addIssue({\n code: \"custom\",\n path: [index, \"kind\"],\n message: \"Audience simulation only accepts stable Group refs.\",\n });\n });\n }),\n permissions: z.array(ContractIdentifierSchema).max(512).default([]),\n })\n .strict();\nexport type DeclarativeAudienceSimulation = z.infer<\n typeof DeclarativeAudienceSimulationSchema\n>;\n\nexport const DeclarativeReleaseTargetIntentSchema = z\n .object({\n environmentRef: StableRefSchema,\n environmentRevisionRef: RevisionRefSchema,\n surface: ProductSurfaceSchema,\n routeClaimIndex: z.number().int().nonnegative().optional(),\n legacyRouteTakeoverAuthorization:\n LegacyRouteTakeoverAuthorizationSchema.optional(),\n placement: ContractIdentifierSchema.optional(),\n order: z.number().int().optional(),\n isDefaultCandidate: z.boolean().optional(),\n })\n .strict()\n .superRefine((value, context) => {\n if (\n value.environmentRef.kind !== \"environment\" ||\n value.environmentRevisionRef.kind !== \"environment\"\n ) {\n context.addIssue({\n code: \"custom\",\n path: [\"environmentRevisionRef\", \"kind\"],\n message: \"Release targets require an exact environment registration.\",\n });\n }\n if (\n value.environmentRef.id !== value.environmentRevisionRef.id ||\n value.environmentRef.ownerRepo !== value.environmentRevisionRef.ownerRepo\n ) {\n context.addIssue({\n code: \"custom\",\n path: [\"environmentRevisionRef\"],\n message:\n \"The exact environment revision must identify the selected environment.\",\n });\n }\n });\n\nexport const DeclarativeCommandIntentSchema = z\n .object({\n idempotencyKey: z.string().trim().min(1).max(256),\n definitionVersion: z.number().int().positive(),\n releaseSlotId: ContractIdentifierSchema.optional(),\n releaseExpectedVersion: z.number().int().nonnegative(),\n publicationExpectedGeneration: z.number().int().nonnegative().default(0),\n target: DeclarativeReleaseTargetIntentSchema,\n targetReleaseVersion: z.number().int().positive().optional(),\n ttlSeconds: z.number().int().min(30).max(600).optional(),\n audienceSimulation: DeclarativeAudienceSimulationSchema.optional(),\n reason: z.string().trim().min(1).max(4096).optional(),\n })\n .strict();\nexport type DeclarativeCommandIntent = z.infer<\n typeof DeclarativeCommandIntentSchema\n>;\n\nexport const DeclarativeBatchOperationIntentSchema = z\n .object({\n action: z.enum([\"publish\", \"rollback\", \"deactivate\"]).default(\"publish\"),\n resourceKind: DeclarativeResourceKindSchema,\n resourceId: ContractIdentifierSchema,\n intent: DeclarativeCommandIntentSchema,\n })\n .strict()\n .superRefine((value, context) => {\n if (value.action !== \"publish\" && !value.intent.releaseSlotId) {\n context.addIssue({\n code: \"custom\",\n path: [\"intent\", \"releaseSlotId\"],\n message: `${value.action} requires an exact active Release slot.`,\n });\n }\n if (value.action === \"rollback\" && !value.intent.targetReleaseVersion) {\n context.addIssue({\n code: \"custom\",\n path: [\"intent\", \"targetReleaseVersion\"],\n message: \"rollback requires an exact historical Release version.\",\n });\n }\n if (value.action !== \"rollback\" && value.intent.targetReleaseVersion) {\n context.addIssue({\n code: \"custom\",\n path: [\"intent\", \"targetReleaseVersion\"],\n message: \"Only rollback may select a historical Release version.\",\n });\n }\n });\n\nexport const DeclarativePublicationPlanIntentSchema = z\n .object({\n idempotencyKey: z.string().trim().min(1).max(256),\n expectedGeneration: z.number().int().nonnegative(),\n operations: z.array(DeclarativeBatchOperationIntentSchema).min(1).max(128),\n })\n .strict();\nexport type DeclarativePublicationPlanIntent = z.infer<\n typeof DeclarativePublicationPlanIntentSchema\n>;\n\nexport const DeclarativeAuthoringChoiceSchema = z\n .object({\n stableRef: StableRefSchema,\n revisionRef: RevisionRefSchema.optional(),\n label: I18nTextSchema,\n accessPolicy: AccessPolicySchema.optional(),\n surface: ProductSurfaceSchema.optional(),\n status: z.enum([\"active\", \"deprecated\", \"retired\", \"unavailable\"]),\n metadata: z.record(z.string(), z.unknown()).default({}),\n })\n .strict();\n\nconst DeclarativeCapabilityPortSchema = z\n .object({\n name: ContractIdentifierSchema,\n schemaRevisionRef: RevisionRefSchema,\n required: z.boolean(),\n multiple: z.boolean(),\n })\n .strict();\n\nexport const DeclarativeCapabilitySchemaDocumentSchema = z\n .object({\n schemaRevisionRef: RevisionRefSchema,\n document: JsonObjectSchema,\n })\n .strict()\n .superRefine((value, context) => {\n if (value.schemaRevisionRef.kind !== \"schema\") {\n context.addIssue({\n code: \"custom\",\n path: [\"schemaRevisionRef\", \"kind\"],\n message: \"Capability schema documents must use schema RevisionRefs.\",\n });\n }\n });\nexport type DeclarativeCapabilitySchemaDocument = z.infer<\n typeof DeclarativeCapabilitySchemaDocumentSchema\n>;\n\nexport const DeclarativeCapabilityAuthoringRegistrationSchema = z\n .object({\n runtimeContractVersion: ContractIdentifierSchema.optional(),\n registrationRevisionRef: RevisionRefSchema,\n capabilityRevisionRef: RevisionRefSchema,\n providerRevisionRef: RevisionRefSchema,\n propertySchemaRevisionRef: RevisionRefSchema,\n uiSchemaRevisionRef: RevisionRefSchema.optional(),\n editorEligible: z.boolean(),\n category: ContractIdentifierSchema,\n label: I18nTextSchema,\n description: I18nTextSchema,\n supportedSurfaces: z.array(ProductSurfaceSchema).min(1),\n allowedSlots: z.array(ContractIdentifierSchema),\n allowedParentCapabilityRefs: z.array(StableRefSchema),\n allowedChildCapabilityRefs: z.array(StableRefSchema),\n inputPorts: z.array(DeclarativeCapabilityPortSchema),\n outputPorts: z.array(DeclarativeCapabilityPortSchema),\n allowedSideEffects: z.array(\n z.enum([\n \"network\",\n \"storage\",\n \"navigation\",\n \"clipboard\",\n \"worker\",\n \"websocket\",\n ]),\n ),\n ontologyRequirements: z.array(\n z\n .object({\n inputPort: ContractIdentifierSchema,\n renderModelSchemaRevisionRef: RevisionRefSchema,\n modes: z.array(z.enum([\"view\", \"filter\"])).min(1),\n requiredPermissionCodes: z.array(ContractIdentifierSchema),\n })\n .strict(),\n ),\n actionRequirements: z.array(\n z\n .object({\n outputPort: ContractIdentifierSchema,\n allowedCommandKinds: z.array(ContractIdentifierSchema),\n requiredPermissionCodes: z.array(ContractIdentifierSchema),\n })\n .strict(),\n ),\n propertyFields: z.array(\n z\n .object({\n path: z.string().trim().min(1),\n label: I18nTextSchema,\n control: ContractIdentifierSchema,\n required: z.boolean(),\n advanced: z.boolean(),\n })\n .strict(),\n ),\n schemaDocuments: z.array(DeclarativeCapabilitySchemaDocumentSchema).min(1),\n sourceContentHash: Sha256Schema,\n })\n .strict()\n .superRefine((value, context) => {\n const documents = new Map<string, number>();\n value.schemaDocuments.forEach((entry, index) => {\n const key = `${entry.schemaRevisionRef.ownerRepo}:${entry.schemaRevisionRef.id}@${entry.schemaRevisionRef.revision}:${entry.schemaRevisionRef.contentHash}`;\n if (documents.has(key)) {\n context.addIssue({\n code: \"custom\",\n path: [\"schemaDocuments\", index],\n message:\n \"Capability schema documents must be unique by exact RevisionRef.\",\n });\n }\n documents.set(key, index);\n });\n const required = [\n value.propertySchemaRevisionRef,\n ...(value.uiSchemaRevisionRef ? [value.uiSchemaRevisionRef] : []),\n ...value.inputPorts.map((port) => port.schemaRevisionRef),\n ...value.outputPorts.map((port) => port.schemaRevisionRef),\n ...value.ontologyRequirements.map(\n (requirement) => requirement.renderModelSchemaRevisionRef,\n ),\n ];\n required.forEach((reference) => {\n const key = `${reference.ownerRepo}:${reference.id}@${reference.revision}:${reference.contentHash}`;\n if (!documents.has(key)) {\n context.addIssue({\n code: \"custom\",\n path: [\"schemaDocuments\"],\n message: `Missing exact schema document for ${reference.id}.`,\n });\n }\n });\n });\nexport type DeclarativeCapabilityAuthoringRegistration = z.infer<\n typeof DeclarativeCapabilityAuthoringRegistrationSchema\n>;\n\nexport const DesignCapabilityCatalogEntrySchema = z\n .object({\n manifest: CapabilityManifestSchema,\n provider: ViewProviderDescriptorSchema,\n declarativeRegistration: DeclarativeCapabilityAuthoringRegistrationSchema,\n })\n .strict();\n\nexport const DesignCapabilityCatalogArtifactSchema = z\n .object({\n contract: z.literal(\"DesignCapabilityCatalogArtifact\"),\n schemaVersion: z.literal(1),\n sourceRef: ContractIdentifierSchema,\n sourceRevisionRef: RevisionRefSchema,\n entries: z.array(DesignCapabilityCatalogEntrySchema).min(1).max(512),\n sourceContentHash: Sha256Schema,\n })\n .strict()\n .superRefine((value, context) => {\n if (\n value.sourceRevisionRef.kind !== \"design-capability-catalog\" ||\n value.sourceRevisionRef.id !== value.sourceRef ||\n value.sourceRevisionRef.ownerRepo !== \"monkeys-design\" ||\n value.sourceRevisionRef.visibility !== \"global\"\n ) {\n context.addIssue({\n code: \"custom\",\n path: [\"sourceRevisionRef\"],\n message:\n \"A Design catalog artifact must be a global monkeys-design release revision.\",\n });\n }\n const ids = value.entries.map((entry) => entry.manifest.id);\n if (new Set(ids).size !== ids.length) {\n context.addIssue({\n code: \"custom\",\n path: [\"entries\"],\n message: \"Design catalog capability identities must be unique.\",\n });\n }\n if (\n ids.some((id, index) => index > 0 && ids[index - 1].localeCompare(id) > 0)\n ) {\n context.addIssue({\n code: \"custom\",\n path: [\"entries\"],\n message:\n \"Design catalog entries must use deterministic capability identity order.\",\n });\n }\n });\nexport type DesignCapabilityCatalogEntry = z.infer<\n typeof DesignCapabilityCatalogEntrySchema\n>;\nexport type DesignCapabilityCatalogArtifact = z.infer<\n typeof DesignCapabilityCatalogArtifactSchema\n>;\n\n/**\n * A product release may contribute a product-owned visual capability without\n * pretending to be the global Monkeys Design catalog. The application catalog\n * is the release authority; runtime code remains outside this data contract.\n */\nexport const ProductDeclarativeCapabilityRegistrationSchema = z\n .object({\n manifest: CapabilityManifestSchema,\n provider: ViewProviderDescriptorSchema,\n declarativeRegistration: DeclarativeCapabilityAuthoringRegistrationSchema,\n requiredPermissionCodes: z.array(ContractIdentifierSchema).default([]),\n })\n .strict()\n .superRefine((value, context) => {\n if (value.provider.runtimeContractVersion !== value.declarativeRegistration.runtimeContractVersion) {\n context.addIssue({ code: 'custom', path: ['declarativeRegistration', 'runtimeContractVersion'], message: 'The authoring contract must match its runtime provider.' });\n }\n const ownerRepo = value.manifest.ownerRepo;\n const registration = value.declarativeRegistration;\n\n if (ownerRepo === \"monkeys-design\") {\n context.addIssue({\n code: \"custom\",\n path: [\"manifest\", \"ownerRepo\"],\n message:\n \"Monkeys Design capabilities must come from the Design capability catalog.\",\n });\n }\n if (\n registration.capabilityRevisionRef.kind !== \"capability\" ||\n registration.capabilityRevisionRef.id !== value.manifest.id ||\n registration.capabilityRevisionRef.ownerRepo !== ownerRepo ||\n String(registration.capabilityRevisionRef.revision) !==\n String(value.manifest.capabilityVersion) ||\n registration.capabilityRevisionRef.visibility !== \"global\"\n ) {\n context.addIssue({\n code: \"custom\",\n path: [\"declarativeRegistration\", \"capabilityRevisionRef\"],\n message:\n \"A product capability must pin its exact global product-owned manifest revision.\",\n });\n }\n if (\n registration.providerRevisionRef.kind !== \"view-provider\" ||\n registration.providerRevisionRef.id !== value.provider.providerId ||\n registration.providerRevisionRef.ownerRepo !== ownerRepo ||\n value.provider.ownerRepo !== ownerRepo ||\n String(registration.providerRevisionRef.revision) !==\n String(value.provider.providerVersion) ||\n registration.providerRevisionRef.visibility !== \"global\"\n ) {\n context.addIssue({\n code: \"custom\",\n path: [\"declarativeRegistration\", \"providerRevisionRef\"],\n message:\n \"A product capability must pin its exact global product-owned provider revision.\",\n });\n }\n if (\n value.provider.capabilityRef.kind !== \"capability\" ||\n value.provider.capabilityRef.id !== value.manifest.id ||\n value.provider.capabilityRef.ownerRepo !== ownerRepo ||\n String(value.provider.capabilityRef.version) !==\n String(value.manifest.capabilityVersion)\n ) {\n context.addIssue({\n code: \"custom\",\n path: [\"provider\", \"capabilityRef\"],\n message: \"A product provider must declare its exact capability owner.\",\n });\n }\n const providerBoundByManifest =\n value.manifest.runtime.providerBindings.some(\n (binding) =>\n binding.providerRef.kind === \"view-provider\" &&\n binding.providerRef.id === value.provider.providerId &&\n binding.providerRef.ownerRepo === ownerRepo &&\n String(binding.providerRef.version) ===\n String(value.provider.providerVersion),\n );\n if (!providerBoundByManifest) {\n context.addIssue({\n code: \"custom\",\n path: [\"manifest\", \"runtime\", \"providerBindings\"],\n message:\n \"The product capability manifest must bind the declared product provider.\",\n });\n }\n if (\n registration.registrationRevisionRef.kind !==\n \"product-capability-registration\" ||\n registration.registrationRevisionRef.ownerRepo !== ownerRepo ||\n registration.registrationRevisionRef.visibility !== \"global\" ||\n registration.registrationRevisionRef.contentHash !==\n registration.sourceContentHash\n ) {\n context.addIssue({\n code: \"custom\",\n path: [\"declarativeRegistration\", \"registrationRevisionRef\"],\n message:\n \"A product capability registration must have exact product-owned release provenance.\",\n });\n }\n registration.schemaDocuments.forEach((schema, index) => {\n if (\n schema.schemaRevisionRef.ownerRepo !== ownerRepo ||\n schema.schemaRevisionRef.visibility !== \"global\"\n ) {\n context.addIssue({\n code: \"custom\",\n path: [\"declarativeRegistration\", \"schemaDocuments\", index],\n message:\n \"Embedded product capability Schemas require exact global product authority.\",\n });\n }\n });\n const permissions = value.requiredPermissionCodes;\n if (\n new Set(permissions).size !== permissions.length ||\n permissions.some(\n (permission, index) =>\n index > 0 && permissions[index - 1]!.localeCompare(permission) > 0,\n )\n ) {\n context.addIssue({\n code: \"custom\",\n path: [\"requiredPermissionCodes\"],\n message:\n \"Product capability permission codes must be unique and deterministically sorted.\",\n });\n }\n });\nexport type ProductDeclarativeCapabilityRegistration = z.infer<\n typeof ProductDeclarativeCapabilityRegistrationSchema\n>;\n\nexport const DeclarativeCapabilityAuthoringChoiceSchema =\n DeclarativeAuthoringChoiceSchema.extend({\n registration: DeclarativeCapabilityAuthoringRegistrationSchema,\n }).strict();\n\nexport const DeclarativeCreateTemplateRegistrationSchema = z\n .object({\n templateRevisionRef: RevisionRefSchema,\n resourceKind: DeclarativeResourceKindSchema,\n label: I18nTextSchema,\n description: I18nTextSchema,\n supportedSurfaces: z.array(ProductSurfaceSchema).min(1),\n legacyMigrationSourcePageIds: z\n .array(ContractIdentifierSchema)\n .min(1)\n .max(256)\n .optional(),\n document: z.union([\n PageSchema,\n ResolvedPageSchema,\n NavigationSchema,\n WorkbenchSchema,\n ]),\n sourceContentHash: Sha256Schema,\n })\n .strict()\n .superRefine((value, context) => {\n const expected =\n value.document.contract === \"Page\"\n ? \"page\"\n : value.document.contract === \"Navigation\"\n ? \"navigation\"\n : \"workbench\";\n if (value.resourceKind !== expected)\n context.addIssue({\n code: \"custom\",\n path: [\"resourceKind\"],\n message: \"Create template kind must match its document contract.\",\n });\n if (value.templateRevisionRef.kind !== \"declarative-create-template\")\n context.addIssue({\n code: \"custom\",\n path: [\"templateRevisionRef\", \"kind\"],\n message:\n \"Create templates require declarative-create-template RevisionRefs.\",\n });\n if (value.legacyMigrationSourcePageIds && value.resourceKind !== \"page\") {\n context.addIssue({\n code: \"custom\",\n path: [\"legacyMigrationSourcePageIds\"],\n message:\n \"Only Page templates can declare legacy Page migration sources.\",\n });\n }\n if (\n value.legacyMigrationSourcePageIds &&\n new Set(value.legacyMigrationSourcePageIds).size !==\n value.legacyMigrationSourcePageIds.length\n ) {\n context.addIssue({\n code: \"custom\",\n path: [\"legacyMigrationSourcePageIds\"],\n message: \"Legacy Page migration source identities must be unique.\",\n });\n }\n });\nexport type DeclarativeCreateTemplateRegistration = z.infer<\n typeof DeclarativeCreateTemplateRegistrationSchema\n>;\n\nexport const DeclarativeRouteSpaceRegistrationSchema = z\n .object({\n routeSpaceRevisionRef: RevisionRefSchema,\n routeSpace: RouteSpaceSchema,\n sourceContentHash: Sha256Schema,\n })\n .strict()\n .superRefine((value, context) => {\n if (value.routeSpaceRevisionRef.kind !== \"route-space\") {\n context.addIssue({\n code: \"custom\",\n path: [\"routeSpaceRevisionRef\", \"kind\"],\n message: \"Route-space registrations require route-space RevisionRefs.\",\n });\n }\n if (value.routeSpaceRevisionRef.id !== value.routeSpace.routeSpaceId) {\n context.addIssue({\n code: \"custom\",\n path: [\"routeSpaceRevisionRef\", \"id\"],\n message: \"Route-space registration identity must match its document.\",\n });\n }\n });\nexport type DeclarativeRouteSpaceRegistration = z.infer<\n typeof DeclarativeRouteSpaceRegistrationSchema\n>;\n\nexport const DeclarativeShellResourceDocumentSchema = z\n .object({\n contract: z.literal(\"DeclarativeShell\"),\n schemaVersion: z.literal(1),\n hostCapabilityRevisionRef: RevisionRefSchema,\n hostProviderRevisionRef: RevisionRefSchema,\n allowedSlots: z.array(ContractIdentifierSchema).min(1),\n tokenRevisionRefs: z.array(RevisionRefSchema).min(1),\n surfaceChrome: z.array(DeclarativeShellSurfaceChromeSchema).min(1),\n })\n .strict()\n .superRefine((value, context) => {\n if (value.hostCapabilityRevisionRef.kind !== \"capability\")\n context.addIssue({\n code: \"custom\",\n path: [\"hostCapabilityRevisionRef\", \"kind\"],\n message: \"Shell host capability must reference a capability.\",\n });\n if (value.hostProviderRevisionRef.kind !== \"view-provider\")\n context.addIssue({\n code: \"custom\",\n path: [\"hostProviderRevisionRef\", \"kind\"],\n message: \"Shell host provider must reference a view-provider.\",\n });\n value.tokenRevisionRefs.forEach((reference, index) => {\n if (reference.kind !== \"design-token\")\n context.addIssue({\n code: \"custom\",\n path: [\"tokenRevisionRefs\", index, \"kind\"],\n message: \"Shell tokens must use design-token RevisionRefs.\",\n });\n });\n const seenSurfaces = new Set<string>();\n value.surfaceChrome.forEach((entry, index) => {\n if (seenSurfaces.has(entry.surface))\n context.addIssue({\n code: \"custom\",\n path: [\"surfaceChrome\", index],\n message: `Duplicate shell chrome declaration for ${entry.surface}.`,\n });\n seenSurfaces.add(entry.surface);\n });\n });\n\nexport const DeclarativeLayoutPolicyResourceDocumentSchema = z\n .object({\n contract: z.literal(\"DeclarativeLayoutPolicy\"),\n schemaVersion: z.literal(1),\n allowedModes: z\n .array(z.enum([\"single\", \"tabs\", \"columns\", \"grid\", \"sidebar\"]))\n .min(1),\n propertySchemaRevisionRef: RevisionRefSchema,\n })\n .strict()\n .superRefine((value, context) => {\n if (value.propertySchemaRevisionRef.kind !== \"schema\")\n context.addIssue({\n code: \"custom\",\n path: [\"propertySchemaRevisionRef\", \"kind\"],\n message: \"Layout policy properties must reference a schema.\",\n });\n });\n\nexport const DeclarativeEnvironmentResourceDocumentSchema = z\n .object({\n contract: z.literal(\"DeclarativeEnvironment\"),\n schemaVersion: z.literal(1),\n environmentId: ContractIdentifierSchema,\n label: I18nTextSchema,\n active: z.boolean(),\n })\n .strict();\n\nexport const DeclarativeProductResourceRegistrationSchema = z\n .object({\n resourceRevisionRef: RevisionRefSchema,\n resourceKind: z.enum([\n \"shell\",\n \"layout-policy\",\n \"performance-budget\",\n \"observation-policy\",\n \"design-token\",\n \"access-policy\",\n \"environment\",\n ]),\n supportedSurfaces: z.array(ProductSurfaceSchema).min(1),\n accessPolicy: AccessPolicySchema.optional(),\n schemaRevisionRef: RevisionRefSchema.optional(),\n document: JsonObjectSchema,\n sourceContentHash: Sha256Schema,\n })\n .strict()\n .superRefine((value, context) => {\n if (value.resourceRevisionRef.kind !== value.resourceKind) {\n context.addIssue({\n code: \"custom\",\n path: [\"resourceRevisionRef\", \"kind\"],\n message: \"Product resource kind must match its RevisionRef.\",\n });\n }\n if (value.resourceKind === \"shell\") {\n const parsed = DeclarativeShellResourceDocumentSchema.safeParse(\n value.document,\n );\n if (!parsed.success)\n context.addIssue({\n code: \"custom\",\n path: [\"document\"],\n message: `Invalid shell declaration: ${parsed.error.message}`,\n });\n if (parsed.success) {\n const declaredSurfaces = new Set(\n parsed.data.surfaceChrome.map((entry) => entry.surface),\n );\n const supportedSurfaces = new Set(value.supportedSurfaces);\n value.supportedSurfaces.forEach((surface) => {\n if (!declaredSurfaces.has(surface))\n context.addIssue({\n code: \"custom\",\n path: [\"document\", \"surfaceChrome\"],\n message: `Shell chrome is missing for supported surface ${surface}.`,\n });\n });\n parsed.data.surfaceChrome.forEach((entry) => {\n if (!supportedSurfaces.has(entry.surface))\n context.addIssue({\n code: \"custom\",\n path: [\"document\", \"surfaceChrome\"],\n message: `Shell chrome declares unsupported surface ${entry.surface}.`,\n });\n });\n }\n }\n if (value.resourceKind === \"layout-policy\") {\n const parsed = DeclarativeLayoutPolicyResourceDocumentSchema.safeParse(\n value.document,\n );\n if (!parsed.success)\n context.addIssue({\n code: \"custom\",\n path: [\"document\"],\n message: `Invalid layout-policy declaration: ${parsed.error.message}`,\n });\n }\n if (value.resourceKind === \"environment\") {\n const parsed = DeclarativeEnvironmentResourceDocumentSchema.safeParse(\n value.document,\n );\n if (!parsed.success)\n context.addIssue({\n code: \"custom\",\n path: [\"document\"],\n message: `Invalid environment declaration: ${parsed.error.message}`,\n });\n if (\n parsed.success &&\n parsed.data.environmentId !== value.resourceRevisionRef.id\n ) {\n context.addIssue({\n code: \"custom\",\n path: [\"document\", \"environmentId\"],\n message: \"Environment registration identity must match its document.\",\n });\n }\n }\n });\nexport type DeclarativeProductResourceRegistration = z.infer<\n typeof DeclarativeProductResourceRegistrationSchema\n>;\n\nexport const DeclarativeDefaultPolicyRegistrationSchema = z\n .object({\n role: z.enum([\n \"management\",\n \"access\",\n \"layout\",\n \"performance\",\n \"observability\",\n \"tokens\",\n \"environment\",\n ]),\n resourceRevisionRef: RevisionRefSchema,\n supportedSurfaces: z.array(ProductSurfaceSchema).min(1),\n })\n .strict();\n\nexport const DeclarativeDomainQueryDefinitionRegistrationSchema = z\n .object({\n definitionRevisionRef: RevisionRefSchema,\n definition: DomainQueryDefinitionSchema,\n })\n .strict()\n .superRefine((value, context) => {\n if (value.definitionRevisionRef.kind !== \"domain-query-definition\") {\n context.addIssue({\n code: \"custom\",\n path: [\"definitionRevisionRef\", \"kind\"],\n message:\n \"A Domain Query registration must pin a domain-query-definition revision.\",\n });\n }\n if (value.definitionRevisionRef.id !== value.definition.queryId) {\n context.addIssue({\n code: \"custom\",\n path: [\"definitionRevisionRef\", \"id\"],\n message:\n \"A Domain Query registration identity must match its definition.\",\n });\n }\n });\n\nexport const DeclarativeDomainCommandDefinitionRegistrationSchema = z\n .object({\n definitionRevisionRef: RevisionRefSchema,\n definition: DomainCommandDefinitionSchema,\n })\n .strict()\n .superRefine((value, context) => {\n if (value.definitionRevisionRef.kind !== \"domain-command\") {\n context.addIssue({\n code: \"custom\",\n path: [\"definitionRevisionRef\", \"kind\"],\n message:\n \"A Domain Command registration must pin a domain-command revision.\",\n });\n }\n if (value.definitionRevisionRef.id !== value.definition.commandName) {\n context.addIssue({\n code: \"custom\",\n path: [\"definitionRevisionRef\", \"id\"],\n message:\n \"A Domain Command registration identity must match its definition.\",\n });\n }\n });\n\nexport const DeclarativeSchemaDefinitionRegistrationSchema = z\n .object({\n definitionRevisionRef: RevisionRefSchema,\n definition: SchemaDefinitionSchema,\n })\n .strict()\n .superRefine((value, context) => {\n if (value.definitionRevisionRef.kind !== \"schema\") {\n context.addIssue({\n code: \"custom\",\n path: [\"definitionRevisionRef\", \"kind\"],\n message: \"A Schema registration must pin a schema revision.\",\n });\n }\n if (value.definitionRevisionRef.id !== value.definition.schemaId) {\n context.addIssue({\n code: \"custom\",\n path: [\"definitionRevisionRef\", \"id\"],\n message: \"A Schema registration identity must match its definition.\",\n });\n }\n if (value.definitionRevisionRef.ownerRepo !== value.definition.ownerRepo) {\n context.addIssue({\n code: \"custom\",\n path: [\"definitionRevisionRef\", \"ownerRepo\"],\n message: \"A Schema registration authority must match its definition.\",\n });\n }\n });\n\n/** Release-owned product authoring inputs. Instances and releases remain Ontology records. */\nexport const ProductDeclarativeAuthoringCatalogSchema = z\n .object({\n contract: z.literal(\"ProductDeclarativeAuthoringCatalog\"),\n schemaVersion: z.literal(1),\n applicationId: ContractIdentifierSchema,\n createTemplates: z.array(DeclarativeCreateTemplateRegistrationSchema),\n routeSpaces: z.array(DeclarativeRouteSpaceRegistrationSchema),\n resourceRegistrations: z.array(\n DeclarativeProductResourceRegistrationSchema,\n ),\n defaultPolicies: z.array(DeclarativeDefaultPolicyRegistrationSchema),\n domainQueryDefinitions: z\n .array(DeclarativeDomainQueryDefinitionRegistrationSchema)\n .default([]),\n domainCommandDefinitions: z\n .array(DeclarativeDomainCommandDefinitionRegistrationSchema)\n .default([]),\n schemaDefinitions: z\n .array(DeclarativeSchemaDefinitionRegistrationSchema)\n .default([]),\n capabilityRegistrations: z\n .array(ProductDeclarativeCapabilityRegistrationSchema)\n .default([]),\n })\n .strict()\n .superRefine((value, context) => {\n const duplicates = (items: readonly string[]) =>\n items.find((item, index) => items.indexOf(item) !== index);\n const duplicateTemplate = duplicates(\n value.createTemplates.map(\n (item) =>\n `${item.templateRevisionRef.id}@${item.templateRevisionRef.revision}`,\n ),\n );\n if (duplicateTemplate)\n context.addIssue({\n code: \"custom\",\n path: [\"createTemplates\"],\n message: `Duplicate create template ${duplicateTemplate}.`,\n });\n const duplicateMigrationSource = duplicates(\n value.createTemplates.flatMap((item) =>\n (item.legacyMigrationSourcePageIds ?? []).flatMap((pageId) =>\n item.supportedSurfaces.map((surface) => `${surface}:${pageId}`),\n ),\n ),\n );\n if (duplicateMigrationSource)\n context.addIssue({\n code: \"custom\",\n path: [\"createTemplates\"],\n message: `Duplicate legacy Page migration source ${duplicateMigrationSource}.`,\n });\n const duplicateRouteSpace = duplicates(\n value.routeSpaces.map(\n (item) =>\n `${item.routeSpaceRevisionRef.id}@${item.routeSpaceRevisionRef.revision}`,\n ),\n );\n if (duplicateRouteSpace)\n context.addIssue({\n code: \"custom\",\n path: [\"routeSpaces\"],\n message: `Duplicate route space ${duplicateRouteSpace}.`,\n });\n const duplicateResource = duplicates(\n value.resourceRegistrations.map(\n (item) =>\n `${item.resourceRevisionRef.kind}:${item.resourceRevisionRef.id}@${item.resourceRevisionRef.revision}`,\n ),\n );\n if (duplicateResource)\n context.addIssue({\n code: \"custom\",\n path: [\"resourceRegistrations\"],\n message: `Duplicate product resource ${duplicateResource}.`,\n });\n const duplicateQueryDefinition = duplicates(\n value.domainQueryDefinitions.map(\n (item) =>\n `${item.definitionRevisionRef.id}@${item.definitionRevisionRef.revision}`,\n ),\n );\n if (duplicateQueryDefinition)\n context.addIssue({\n code: \"custom\",\n path: [\"domainQueryDefinitions\"],\n message: `Duplicate Domain Query definition ${duplicateQueryDefinition}.`,\n });\n const duplicateCommandDefinition = duplicates(\n value.domainCommandDefinitions.map(\n (item) =>\n `${item.definitionRevisionRef.id}@${item.definitionRevisionRef.revision}`,\n ),\n );\n if (duplicateCommandDefinition)\n context.addIssue({\n code: \"custom\",\n path: [\"domainCommandDefinitions\"],\n message: `Duplicate Domain Command definition ${duplicateCommandDefinition}.`,\n });\n const duplicateSchemaDefinition = duplicates(\n value.schemaDefinitions.map(\n (item) =>\n `${item.definitionRevisionRef.id}@${item.definitionRevisionRef.revision}`,\n ),\n );\n if (duplicateSchemaDefinition)\n context.addIssue({\n code: \"custom\",\n path: [\"schemaDefinitions\"],\n message: `Duplicate Schema definition ${duplicateSchemaDefinition}.`,\n });\n const duplicateCapabilityRegistration = duplicates(\n value.capabilityRegistrations.map(\n (item) =>\n `${item.declarativeRegistration.capabilityRevisionRef.id}@${item.declarativeRegistration.capabilityRevisionRef.revision}`,\n ),\n );\n if (duplicateCapabilityRegistration)\n context.addIssue({\n code: \"custom\",\n path: [\"capabilityRegistrations\"],\n message: `Duplicate product capability registration ${duplicateCapabilityRegistration}.`,\n });\n value.defaultPolicies.forEach((selection, index) => {\n const expectedKind = {\n management: \"access-policy\",\n access: \"access-policy\",\n layout: \"layout-policy\",\n performance: \"performance-budget\",\n observability: \"observation-policy\",\n tokens: \"design-token\",\n environment: \"environment\",\n }[selection.role];\n if (selection.resourceRevisionRef.kind !== expectedKind) {\n context.addIssue({\n code: \"custom\",\n path: [\"defaultPolicies\", index, \"resourceRevisionRef\", \"kind\"],\n message: `Default ${selection.role} selection must reference ${expectedKind}.`,\n });\n }\n if (\n !value.resourceRegistrations.some(\n (registration) =>\n registration.resourceRevisionRef.kind ===\n selection.resourceRevisionRef.kind &&\n registration.resourceRevisionRef.id ===\n selection.resourceRevisionRef.id &&\n registration.resourceRevisionRef.revision ===\n selection.resourceRevisionRef.revision &&\n registration.resourceRevisionRef.contentHash ===\n selection.resourceRevisionRef.contentHash,\n )\n ) {\n context.addIssue({\n code: \"custom\",\n path: [\"defaultPolicies\", index, \"resourceRevisionRef\"],\n message:\n \"Default policy must select an exact registered product resource.\",\n });\n }\n });\n });\nexport type ProductDeclarativeAuthoringCatalog = z.infer<\n typeof ProductDeclarativeAuthoringCatalogSchema\n>;\nexport type DeclarativeDomainQueryDefinitionRegistration = z.infer<\n typeof DeclarativeDomainQueryDefinitionRegistrationSchema\n>;\nexport type DeclarativeDomainCommandDefinitionRegistration = z.infer<\n typeof DeclarativeDomainCommandDefinitionRegistrationSchema\n>;\nexport type DeclarativeSchemaDefinitionRegistration = z.infer<\n typeof DeclarativeSchemaDefinitionRegistrationSchema\n>;\n\nexport const DeclarativeCreateTemplateChoiceSchema =\n DeclarativeAuthoringChoiceSchema.extend({\n template: DeclarativeCreateTemplateRegistrationSchema,\n }).strict();\n\nexport const DeclarativeRouteSpaceChoiceSchema =\n DeclarativeAuthoringChoiceSchema.extend({\n registration: DeclarativeRouteSpaceRegistrationSchema,\n }).strict();\n\nexport const DeclarativeProductResourceChoiceSchema =\n DeclarativeAuthoringChoiceSchema.extend({\n registration: DeclarativeProductResourceRegistrationSchema,\n }).strict();\n\nexport const DeclarativeBindingAuthoringChoiceSchema =\n DeclarativeAuthoringChoiceSchema.extend({\n bindingTemplate: z\n .object({\n kind: z.enum([\"ontology\", \"view\", \"query\", \"action\"]),\n requiredRevisionRefs: z.array(RevisionRefSchema),\n requiredPermissionCodes: z.array(ContractIdentifierSchema),\n inputTemplate: z.record(z.string(), z.unknown()),\n })\n .strict(),\n accessDiagnostics: z\n .object({\n allowed: z.boolean(),\n missingPermissionCodes: z.array(ContractIdentifierSchema),\n issueCodes: z.array(ContractIdentifierSchema),\n })\n .strict(),\n }).strict();\n\nexport const DeclarativeWorkbenchTargetChoiceSchema = z\n .object({\n runtimeContractVersion: ContractIdentifierSchema.optional(),\n stableTargetRef: StableRefSchema,\n targetRevisionRef: RevisionRefSchema,\n providerRevisionRef: RevisionRefSchema,\n inputSchemaRevisionRef: RevisionRefSchema,\n kind: z.enum([\n \"built-in-application\",\n \"workflow-form\",\n \"workflow\",\n \"agent\",\n \"design\",\n \"capability\",\n ]),\n name: I18nTextSchema,\n targetAccessPolicy: AccessPolicySchema,\n supportedSurfaces: z.array(ProductSurfaceSchema).min(1),\n status: z.enum([\"active\", \"deprecated\", \"retired\", \"unavailable\"]),\n provenanceContentHash: Sha256Schema,\n })\n .strict()\n .superRefine((value, context) => {\n if (\n value.targetRevisionRef.id !== value.stableTargetRef.id ||\n value.targetRevisionRef.kind !== value.stableTargetRef.kind\n ) {\n context.addIssue({\n code: \"custom\",\n path: [\"targetRevisionRef\"],\n message: \"Workbench target identity and exact revision must match.\",\n });\n }\n if (value.providerRevisionRef.kind !== \"view-provider\") {\n context.addIssue({\n code: \"custom\",\n path: [\"providerRevisionRef\", \"kind\"],\n message: \"Workbench targets require an exact view-provider revision.\",\n });\n }\n if (value.inputSchemaRevisionRef.kind !== \"schema\") {\n context.addIssue({\n code: \"custom\",\n path: [\"inputSchemaRevisionRef\", \"kind\"],\n message: \"Workbench targets require an exact input schema revision.\",\n });\n }\n });\nexport type DeclarativeWorkbenchTargetChoice = z.infer<\n typeof DeclarativeWorkbenchTargetChoiceSchema\n>;\n\nexport const DeclarativeCreateIntentSchema = z\n .object({\n resourceId: ContractIdentifierSchema,\n templateRevisionRef: RevisionRefSchema.optional(),\n sourceRevisionRef: RevisionRefSchema.optional(),\n identity: z\n .object({\n name: I18nTextSchema,\n description: I18nTextSchema.optional(),\n tags: z.array(ContractIdentifierSchema).default([]),\n })\n .strict(),\n surface: ProductSurfaceSchema,\n pathTemplate: z.string().trim().min(1).optional(),\n placement: ContractIdentifierSchema.optional(),\n idempotencyKey: z.string().trim().min(1).max(256),\n })\n .strict()\n .superRefine((value, context) => {\n if (\n Number(Boolean(value.templateRevisionRef)) +\n Number(Boolean(value.sourceRevisionRef)) !==\n 1\n ) {\n context.addIssue({\n code: \"custom\",\n path: [\"templateRevisionRef\"],\n message:\n \"Create intent requires exactly one governed template or source revision.\",\n });\n }\n });\nexport type DeclarativeCreateIntent = z.infer<\n typeof DeclarativeCreateIntentSchema\n>;\n\nexport const DeclarativeDocumentSchema = z.union([\n PageSchema,\n ResolvedPageSchema,\n NavigationSchema,\n WorkbenchSchema,\n]);\n\nexport const DeclarativeSaveDraftIntentSchema = z\n .object({\n document: DeclarativeDocumentSchema,\n expectedVersion: z.number().int().nonnegative(),\n idempotencyKey: z.string().trim().min(1).max(256),\n })\n .strict();\nexport type DeclarativeSaveDraftIntent = z.infer<\n typeof DeclarativeSaveDraftIntentSchema\n>;\n\nexport const DeclarativeRetireIntentSchema = z\n .object({\n expectedVersion: z.number().int().positive(),\n idempotencyKey: z.string().trim().min(1).max(256),\n reason: z.string().trim().min(1).max(4096),\n })\n .strict();\nexport type DeclarativeRetireIntent = z.infer<\n typeof DeclarativeRetireIntentSchema\n>;\n\nexport const DeclarativePreparedReleaseTargetSchema = z\n .object({\n environmentRef: StableRefSchema,\n environmentRevisionRef: RevisionRefSchema,\n surface: ProductSurfaceSchema,\n routeClaimIndex: z.number().int().nonnegative().optional(),\n legacyRouteTakeoverAuthorization:\n LegacyRouteTakeoverAuthorizationSchema.optional(),\n placement: ContractIdentifierSchema.optional(),\n order: z.number().int().optional(),\n isDefaultCandidate: z.boolean().optional(),\n releaseSlotId: ContractIdentifierSchema.optional(),\n releaseExpectedVersion: z.number().int().nonnegative(),\n })\n .strict();\n\nexport const DeclarativeEnvironmentChoiceSchema =\n DeclarativeAuthoringChoiceSchema.extend({\n revisionRef: RevisionRefSchema,\n registration: DeclarativeProductResourceRegistrationSchema,\n }).strict();\n\nexport const DeclarativeAuthoringPageInfoSchema = z\n .object({\n hasMore: z.boolean(),\n nextPageToken: z.string().trim().min(1).max(2_048).optional(),\n pageSize: z.number().int().min(1).max(200),\n returned: z.number().int().nonnegative(),\n total: z.number().int().nonnegative().optional(),\n })\n .strict()\n .superRefine((value, context) => {\n if (value.returned > value.pageSize)\n context.addIssue({\n code: \"custom\",\n path: [\"returned\"],\n message: \"Returned items cannot exceed pageSize.\",\n });\n if (value.hasMore !== Boolean(value.nextPageToken))\n context.addIssue({\n code: \"custom\",\n path: [\"nextPageToken\"],\n message: \"hasMore and nextPageToken must agree.\",\n });\n });\n\nexport const DeclarativeAuthoringChoiceKindSchema = z.enum([\n \"capability\",\n \"ontology\",\n \"view\",\n \"query\",\n \"action\",\n \"access\",\n \"published-target\",\n \"workbench-target\",\n]);\n\nconst authoringChoicePage = <T extends z.ZodType>(\n choiceKind: z.infer<typeof DeclarativeAuthoringChoiceKindSchema>,\n itemSchema: T,\n) =>\n z\n .object({\n choiceKind: z.literal(choiceKind),\n items: z.array(itemSchema),\n pageInfo: DeclarativeAuthoringPageInfoSchema,\n })\n .strict()\n .superRefine((value, context) => {\n if (value.pageInfo.returned !== value.items.length)\n context.addIssue({\n code: \"custom\",\n path: [\"pageInfo\", \"returned\"],\n message: \"PageInfo returned must match choice item count.\",\n });\n });\n\nexport const DeclarativeAuthoringChoicePageSchema = z.discriminatedUnion(\n \"choiceKind\",\n [\n authoringChoicePage(\n \"capability\",\n DeclarativeCapabilityAuthoringChoiceSchema,\n ),\n authoringChoicePage(\"ontology\", DeclarativeBindingAuthoringChoiceSchema),\n authoringChoicePage(\"view\", DeclarativeBindingAuthoringChoiceSchema),\n authoringChoicePage(\"action\", DeclarativeBindingAuthoringChoiceSchema),\n authoringChoicePage(\"access\", DeclarativeAuthoringChoiceSchema),\n authoringChoicePage(\"published-target\", DeclarativeAuthoringChoiceSchema),\n authoringChoicePage(\n \"workbench-target\",\n DeclarativeWorkbenchTargetChoiceSchema,\n ),\n ],\n);\n\nexport const DeclarativeAuthoringResourcePageQuerySchema = z\n .object({\n resourceKind: DeclarativeResourceKindSchema.optional(),\n resourceId: ContractIdentifierSchema.optional(),\n surface: ProductSurfaceSchema.optional(),\n placement: ContractIdentifierSchema.optional(),\n search: z.string().trim().min(1).max(256).optional(),\n pageSize: z.number().int().min(1).max(200).default(60),\n pageToken: z.string().trim().min(1).max(2_048).optional(),\n })\n .strict();\n\nexport const DeclarativeAuthoringChoicePageQuerySchema = z\n .object({\n choiceKind: DeclarativeAuthoringChoiceKindSchema,\n surface: ProductSurfaceSchema.optional(),\n search: z.string().trim().min(1).max(256).optional(),\n pageSize: z.number().int().min(1).max(200).default(60),\n pageToken: z.string().trim().min(1).max(2_048).optional(),\n })\n .strict();\n\nexport type DeclarativeAuthoringPageInfo = z.infer<\n typeof DeclarativeAuthoringPageInfoSchema\n>;\nexport type DeclarativeAuthoringChoiceKind = z.infer<\n typeof DeclarativeAuthoringChoiceKindSchema\n>;\nexport type DeclarativeAuthoringChoicePage = z.infer<\n typeof DeclarativeAuthoringChoicePageSchema\n>;\nexport type DeclarativeAuthoringResourcePageQuery = z.infer<\n typeof DeclarativeAuthoringResourcePageQuerySchema\n>;\nexport type DeclarativeAuthoringChoicePageQuery = z.infer<\n typeof DeclarativeAuthoringChoicePageQuerySchema\n>;\n\nconst DeclarativePageDocumentSummarySchema = z\n .object({\n resourceKind: z.literal(\"page\"),\n title: I18nTextSchema,\n supportedSurfaces: z.array(ProductSurfaceSchema).min(1),\n routeClaims: z.array(RouteClaimSchema).min(1),\n lifecycle: z.enum([\"active\", \"deprecated\", \"retired\"]),\n accessPolicy: AccessPolicySchema,\n managementAccess: ManagementAccessSchema,\n })\n .strict();\n\nconst DeclarativeNavigationDocumentSummarySchema = z\n .object({\n resourceKind: z.literal(\"navigation\"),\n title: I18nTextSchema,\n supportedSurfaces: z.array(ProductSurfaceSchema).min(1),\n placements: z.array(ContractIdentifierSchema).min(1),\n nodeCount: z.number().int().nonnegative(),\n lifecycle: z.enum([\"active\", \"deprecated\", \"retired\"]),\n managementAccess: ManagementAccessSchema,\n })\n .strict();\n\nconst DeclarativeWorkbenchDocumentSummarySchema = z\n .object({\n resourceKind: z.literal(\"workbench\"),\n title: I18nTextSchema,\n purpose: z.enum([\"instance\", \"template\"]),\n supportedSurfaces: z.array(ProductSurfaceSchema).min(1),\n routeClaims: z.array(RouteClaimSchema).min(1),\n layout: z\n .object({\n hostCapabilityRevisionRef: RevisionRefSchema,\n hostProviderRevisionRef: RevisionRefSchema,\n layoutPolicyRevisionRef: RevisionRefSchema,\n })\n .strict(),\n instanceCount: z.number().int().nonnegative(),\n lifecycle: z.enum([\"active\", \"deprecated\", \"retired\"]),\n accessPolicy: AccessPolicySchema,\n managementAccess: ManagementAccessSchema,\n })\n .strict();\n\nexport const DeclarativeDocumentSummarySchema = z.discriminatedUnion(\n \"resourceKind\",\n [\n DeclarativePageDocumentSummarySchema,\n DeclarativeNavigationDocumentSummarySchema,\n DeclarativeWorkbenchDocumentSummarySchema,\n ],\n);\n\nconst declarativeReferenceTenantScopeKey = (\n scope: z.infer<typeof TenantScopeSchema>,\n): string => JSON.stringify(scope);\n\nconst DeclarativeDefinitionKindByResourceKind = {\n page: \"page\",\n navigation: \"navigation\",\n workbench: \"workbench\",\n} as const;\n\nconst DeclarativeReleaseKindByResourceKind = {\n page: \"page-release\",\n navigation: \"navigation-release\",\n workbench: \"workbench-release\",\n} as const;\n\nexport const DeclarativeAuthoringResourceSummarySchema = z\n .object({\n resourceKind: DeclarativeResourceKindSchema,\n resourceId: ContractIdentifierSchema,\n tenantScope: TenantScopeSchema,\n documentSummary: DeclarativeDocumentSummarySchema,\n lifecycle: z.enum([\"active\", \"deprecated\", \"retired\"]),\n draftRevisionRef: RevisionRefSchema,\n activeReleaseRevisionRefs: z.array(RevisionRefSchema),\n placements: z.array(ContractIdentifierSchema),\n updatedAt: z.string().datetime(),\n actorRef: StableRefSchema,\n preparedTargets: z.array(DeclarativePreparedReleaseTargetSchema),\n releasePlacements: z.array(\n z\n .object({\n releaseRevisionRef: RevisionRefSchema,\n definitionRevisionRef: RevisionRefSchema,\n environmentRef: StableRefSchema,\n surface: ProductSurfaceSchema,\n routePath: z.string().optional(),\n placement: ContractIdentifierSchema.optional(),\n order: z.number().int().optional(),\n isDefaultCandidate: z.boolean().optional(),\n })\n .strict(),\n ),\n })\n .strict()\n .superRefine((value, context) => {\n const expectedDefinitionKind =\n DeclarativeDefinitionKindByResourceKind[value.resourceKind];\n const expectedReleaseKind =\n DeclarativeReleaseKindByResourceKind[value.resourceKind];\n const expectedTenantScope = declarativeReferenceTenantScopeKey(\n value.tenantScope,\n );\n const seenReleaseRefs = new Set<string>();\n\n value.releasePlacements.forEach((placement, index) => {\n const releasePath = [\n \"releasePlacements\",\n index,\n \"releaseRevisionRef\",\n ] as const;\n const definitionPath = [\n \"releasePlacements\",\n index,\n \"definitionRevisionRef\",\n ] as const;\n if (placement.releaseRevisionRef.kind !== expectedReleaseKind) {\n context.addIssue({\n code: \"custom\",\n path: [...releasePath, \"kind\"],\n message: `Release placement must reference ${expectedReleaseKind}.`,\n });\n }\n if (\n placement.releaseRevisionRef.visibility !== \"tenant\" ||\n declarativeReferenceTenantScopeKey(\n placement.releaseRevisionRef.tenantScope!,\n ) !== expectedTenantScope\n ) {\n context.addIssue({\n code: \"custom\",\n path: [...releasePath, \"tenantScope\"],\n message: \"Release placement must use the resource tenant scope.\",\n });\n }\n const releaseIdentity = `${placement.releaseRevisionRef.kind}:${placement.releaseRevisionRef.id}:${placement.releaseRevisionRef.revision}`;\n if (seenReleaseRefs.has(releaseIdentity)) {\n context.addIssue({\n code: \"custom\",\n path: [...releasePath],\n message:\n \"Release placements must not repeat an exact release revision.\",\n });\n }\n seenReleaseRefs.add(releaseIdentity);\n\n if (placement.definitionRevisionRef.kind !== expectedDefinitionKind) {\n context.addIssue({\n code: \"custom\",\n path: [...definitionPath, \"kind\"],\n message: `Release placement definition must reference ${expectedDefinitionKind}.`,\n });\n }\n if (placement.definitionRevisionRef.id !== value.resourceId) {\n context.addIssue({\n code: \"custom\",\n path: [...definitionPath, \"id\"],\n message:\n \"Release placement definition must reference the summary resource.\",\n });\n }\n if (\n placement.definitionRevisionRef.visibility !== \"tenant\" ||\n declarativeReferenceTenantScopeKey(\n placement.definitionRevisionRef.tenantScope!,\n ) !== expectedTenantScope\n ) {\n context.addIssue({\n code: \"custom\",\n path: [...definitionPath, \"tenantScope\"],\n message:\n \"Release placement definition must use the resource tenant scope.\",\n });\n }\n });\n });\n\nexport const DeclarativeAuthoringResourcePageSchema = z\n .object({\n items: z.array(DeclarativeAuthoringResourceSummarySchema),\n pageInfo: DeclarativeAuthoringPageInfoSchema,\n })\n .strict()\n .superRefine((value, context) => {\n if (value.pageInfo.returned !== value.items.length)\n context.addIssue({\n code: \"custom\",\n path: [\"pageInfo\", \"returned\"],\n message: \"PageInfo returned must match resource item count.\",\n });\n });\nexport type DeclarativeAuthoringResourcePage = z.infer<\n typeof DeclarativeAuthoringResourcePageSchema\n>;\n\nexport const DeclarativeAuthoringHistoryEntrySchema = z\n .object({\n revisionRef: RevisionRefSchema,\n version: z.number().int().positive(),\n lifecycle: z.enum([\"active\", \"deprecated\", \"retired\"]),\n name: I18nTextSchema,\n actorRef: StableRefSchema,\n source: z.enum([\"user\", \"migration\", \"rollback\"]),\n reason: z.string().trim().min(1).optional(),\n occurredAt: z.string().datetime(),\n activeRelease: z.boolean(),\n })\n .strict();\nexport const DeclarativeAuthoringHistorySchema = z\n .object({\n items: z.array(DeclarativeAuthoringHistoryEntrySchema),\n nextBeforeVersion: z.number().int().positive().optional(),\n })\n .strict();\nexport type DeclarativeAuthoringHistory = z.infer<\n typeof DeclarativeAuthoringHistorySchema\n>;\n\nconst DeclarativeRuntimeDiagnosticSchema = DeclarativeDiagnosticSchema;\n\nexport const DeclarativeDraftResultSchema = z\n .object({\n action: z.enum([\"create\", \"save\"]),\n resourceKind: DeclarativeResourceKindSchema,\n resourceId: ContractIdentifierSchema,\n document: DeclarativeDocumentSchema,\n revisionRef: RevisionRefSchema,\n actorRef: StableRefSchema,\n occurredAt: z.string().datetime(),\n provenance: z\n .object({ sourceRevisionRef: RevisionRefSchema })\n .strict()\n .optional(),\n })\n .strict();\nexport type DeclarativeDraftResult = z.infer<\n typeof DeclarativeDraftResultSchema\n>;\n\nexport const DeclarativeValidationResultSchema = z\n .object({\n action: z.literal(\"validate\"),\n valid: z.literal(true),\n releaseRevisionRef: RevisionRefSchema,\n bundleContentHash: Sha256Schema,\n diagnostics: z.array(DeclarativeRuntimeDiagnosticSchema),\n })\n .strict();\nexport type DeclarativeValidationResult = z.infer<\n typeof DeclarativeValidationResultSchema\n>;\n\nexport const DeclarativePreviewResultSchema = z\n .object({\n action: z.literal(\"preview\"),\n token: z.string().trim().min(1),\n expiresAt: z.string().datetime(),\n revision: z.number().int().positive(),\n contentHash: Sha256Schema,\n bundle: z.union([\n ReadablePageRuntimeBundleSchema,\n NavigationRuntimeBundleSchema,\n WorkbenchRuntimeBundleSchema,\n ]),\n etag: z.string().trim().min(1),\n sourceContentHash: Sha256Schema,\n })\n .strict();\nexport type DeclarativePreviewResult = z.infer<\n typeof DeclarativePreviewResultSchema\n>;\n\nexport const DeclarativePublicationItemResultSchema = z\n .object({\n resourceKind: DeclarativeResourceKindSchema,\n resourceId: ContractIdentifierSchema,\n releaseRevisionRef: RevisionRefSchema,\n release: z.union([\n PageReleaseSchema,\n NavigationReleaseSchema,\n WorkbenchReleaseSchema,\n ]),\n bundle: z\n .union([\n ReadablePageRuntimeBundleSchema,\n NavigationRuntimeBundleSchema,\n WorkbenchRuntimeBundleSchema,\n ])\n .optional(),\n })\n .strict()\n .superRefine((value, context) => {\n const expectedReleaseKind = {\n page: \"page-release\",\n navigation: \"navigation-release\",\n workbench: \"workbench-release\",\n }[value.resourceKind];\n const expectedReleaseContract = {\n page: \"PageRelease\",\n navigation: \"NavigationRelease\",\n workbench: \"WorkbenchRelease\",\n }[value.resourceKind];\n const expectedBundleContract = {\n page: \"PageRuntimeBundle\",\n navigation: \"NavigationRuntimeBundle\",\n workbench: \"WorkbenchRuntimeBundle\",\n }[value.resourceKind];\n if (\n value.releaseRevisionRef.kind !== expectedReleaseKind ||\n value.releaseRevisionRef.id !== value.release.releaseSlotId ||\n value.release.contract !== expectedReleaseContract\n ) {\n context.addIssue({\n code: \"custom\",\n path: [\"releaseRevisionRef\"],\n message:\n \"A publication item must return the exact release identity for its resource kind.\",\n });\n }\n const definitionRef =\n value.release.contract === \"PageRelease\"\n ? value.release.pageRevisionRef\n : value.release.contract === \"NavigationRelease\"\n ? value.release.navigationRevisionRef\n : value.release.workbenchRevisionRef;\n if (definitionRef.id !== value.resourceId) {\n context.addIssue({\n code: \"custom\",\n path: [\"resourceId\"],\n message:\n \"A publication item release must identify the requested resource.\",\n });\n }\n const unavailable =\n value.release.operation === \"deactivate\" ||\n Boolean(value.release.legacyRestoration);\n if (unavailable === Boolean(value.bundle)) {\n context.addIssue({\n code: \"custom\",\n path: [\"bundle\"],\n message: unavailable\n ? \"A deactivated or legacy-restored Release cannot publish an active Runtime Bundle.\"\n : \"An active declarative Release must publish its Runtime Bundle.\",\n });\n }\n if (value.bundle) {\n const bundleDefinitionRef =\n value.bundle.contract === \"PageRuntimeBundle\"\n ? value.bundle.pageRevisionRef\n : value.bundle.contract === \"NavigationRuntimeBundle\"\n ? value.bundle.navigationRevisionRef\n : value.bundle.workbenchRevisionRef;\n const sameRevision = (\n left: z.infer<typeof RevisionRefSchema>,\n right: z.infer<typeof RevisionRefSchema>,\n ) =>\n left.kind === right.kind &&\n left.id === right.id &&\n left.ownerRepo === right.ownerRepo &&\n left.revision === right.revision &&\n left.schemaVersion === right.schemaVersion &&\n left.contentHash === right.contentHash;\n if (\n value.bundle.contract !== expectedBundleContract ||\n !sameRevision(\n value.bundle.releaseRevisionRef,\n value.releaseRevisionRef,\n ) ||\n !sameRevision(bundleDefinitionRef, definitionRef)\n ) {\n context.addIssue({\n code: \"custom\",\n path: [\"bundle\"],\n message:\n \"A publication item Runtime Bundle must pin the exact returned Release and definition revisions.\",\n });\n }\n }\n });\n\nconst DeclarativeDirectPublicationResultSchema = z\n .object({\n action: z.enum([\"publish\", \"rollback\"]),\n generation: z.number().int().nonnegative(),\n items: z.array(DeclarativePublicationItemResultSchema).min(1),\n etag: z.string().trim().min(1),\n })\n .strict()\n .superRefine((value, context) => {\n const expectedOperation =\n value.action === \"publish\" ? \"activate\" : \"rollback\";\n value.items.forEach((item, index) => {\n if (item.release.operation !== expectedOperation) {\n context.addIssue({\n code: \"custom\",\n path: [\"items\", index, \"release\", \"operation\"],\n message:\n \"A direct publication result must match its requested action.\",\n });\n }\n });\n });\n\nconst DeclarativeAtomicPublicationPlanResultSchema = z\n .object({\n action: z.literal(\"publication-plan\"),\n generation: z.number().int().nonnegative(),\n publicationPlanRevisionRef: RevisionRefSchema,\n items: z.array(DeclarativePublicationItemResultSchema).min(1),\n etag: z.string().trim().min(1),\n })\n .strict()\n .superRefine((value, context) => {\n if (value.publicationPlanRevisionRef.kind !== \"publication-plan\") {\n context.addIssue({\n code: \"custom\",\n path: [\"publicationPlanRevisionRef\", \"kind\"],\n message:\n \"An atomic publication result must pin its Publication Plan revision.\",\n });\n }\n });\n\nexport const DeclarativePublicationResultSchema = z.union([\n DeclarativeDirectPublicationResultSchema,\n DeclarativeAtomicPublicationPlanResultSchema,\n]);\nexport type DeclarativePublicationResult = z.infer<\n typeof DeclarativePublicationResultSchema\n>;\n\nexport const DECLARATIVE_MIGRATION_ERROR_CODES = {\n sourceChanged: \"DECLARATIVE_LEGACY_SOURCE_CHANGED\",\n reservedTakeoverForbidden: \"DECLARATIVE_RESERVED_ROUTE_TAKEOVER_FORBIDDEN\",\n takeoverScopeInvalid: \"DECLARATIVE_ROUTE_TAKEOVER_SCOPE_INVALID\",\n workbenchDefaultConflict: \"DECLARATIVE_WORKBENCH_DEFAULT_CONFLICT\",\n legacyWriteBlocked: \"DECLARATIVE_LEGACY_WRITE_BLOCKED\",\n} as const;\n\nexport const DeclarativeRetireResultSchema = z\n .object({\n action: z.literal(\"retire\"),\n resourceKind: DeclarativeResourceKindSchema,\n resourceId: ContractIdentifierSchema,\n revisionRef: RevisionRefSchema,\n lifecycle: z.literal(\"retired\"),\n actorRef: StableRefSchema,\n occurredAt: z.string().datetime(),\n reason: z.string().trim().min(1).max(4096),\n })\n .strict();\nexport type DeclarativeRetireResult = z.infer<\n typeof DeclarativeRetireResultSchema\n>;\n\nexport const DeclarativeAuthoringCommandResultSchema = z.union([\n DeclarativeDraftResultSchema,\n DeclarativeValidationResultSchema,\n DeclarativePreviewResultSchema,\n DeclarativePublicationResultSchema,\n DeclarativeRetireResultSchema,\n]);\nexport type DeclarativeAuthoringCommandResult = z.infer<\n typeof DeclarativeAuthoringCommandResultSchema\n>;\n\nexport const DeclarativeNavigationSeedMigrationIntentSchema = z\n .object({\n idempotencyKey: z.string().trim().min(1).max(256),\n })\n .strict();\nexport type DeclarativeNavigationSeedMigrationIntent = z.infer<\n typeof DeclarativeNavigationSeedMigrationIntentSchema\n>;\n\nconst DeclarativeNavigationSeedMigrationDiffSchema = z\n .object({\n path: z.string().trim().min(1),\n legacyContentHash: Sha256Schema,\n declarativeContentHash: Sha256Schema,\n })\n .strict();\n\nexport const DeclarativeNavigationSeedMigrationResultSchema = z\n .object({\n outcome: z.enum([\"already-active\", \"review-required\", \"published\"]),\n placement: ContractIdentifierSchema,\n legacyContentHash: Sha256Schema,\n templateRevisionRef: RevisionRefSchema,\n draftRevisionRef: RevisionRefSchema.optional(),\n activeReleaseRevisionRef: RevisionRefSchema.optional(),\n requiresReview: z.boolean(),\n diff: z.array(DeclarativeNavigationSeedMigrationDiffSchema),\n })\n .strict()\n .superRefine((value, context) => {\n if (\n value.outcome === \"review-required\" &&\n (!value.requiresReview || !value.draftRevisionRef)\n ) {\n context.addIssue({\n code: \"custom\",\n path: [\"outcome\"],\n message: \"Review-required migrations must expose their draft.\",\n });\n }\n if (\n (value.outcome === \"already-active\" || value.outcome === \"published\") &&\n !value.activeReleaseRevisionRef\n ) {\n context.addIssue({\n code: \"custom\",\n path: [\"activeReleaseRevisionRef\"],\n message: \"Active migrations require an exact release revision.\",\n });\n }\n });\nexport type DeclarativeNavigationSeedMigrationResult = z.infer<\n typeof DeclarativeNavigationSeedMigrationResultSchema\n>;\n\nexport const DeclarativeNavigationPlacementSchema = z\n .object({\n placement: ContractIdentifierSchema,\n surface: ProductSurfaceSchema,\n authority: z.enum([\"legacy\", \"declarative\"]),\n authorityRevisionRef: RevisionRefSchema.optional(),\n navigationRef: StableRefSchema.optional(),\n draftRevisionRef: RevisionRefSchema.optional(),\n activeReleaseRevisionRef: RevisionRefSchema.optional(),\n legacySourceRevisionRef: RevisionRefSchema.optional(),\n legacyContentHash: Sha256Schema.optional(),\n legacyReadOnly: z.boolean(),\n declarativeEditorReadOnly: z.boolean(),\n })\n .strict();\n\nexport const DeclarativeAuthoringBootstrapSchema = z\n .object({\n resources: z.array(DeclarativeAuthoringResourceSummarySchema),\n createTemplates: z.array(DeclarativeCreateTemplateChoiceSchema),\n routeSpaces: z.array(DeclarativeRouteSpaceChoiceSchema),\n productResources: z.array(DeclarativeProductResourceChoiceSchema),\n environmentChoices: z.array(DeclarativeEnvironmentChoiceSchema),\n defaultEnvironmentRevisionRef: RevisionRefSchema.optional(),\n navigationPlacements: z.array(DeclarativeNavigationPlacementSchema),\n capabilityCatalog: z.array(DeclarativeCapabilityAuthoringChoiceSchema),\n ontologyChoices: z.array(DeclarativeBindingAuthoringChoiceSchema),\n viewChoices: z.array(DeclarativeBindingAuthoringChoiceSchema),\n actionChoices: z.array(DeclarativeBindingAuthoringChoiceSchema),\n accessChoices: z.array(DeclarativeAuthoringChoiceSchema),\n publishedTargets: z.array(DeclarativeAuthoringChoiceSchema),\n workbenchTargets: z.array(DeclarativeWorkbenchTargetChoiceSchema),\n resourcesPageInfo: DeclarativeAuthoringPageInfoSchema.optional(),\n deferredChoiceKinds: z\n .array(DeclarativeAuthoringChoiceKindSchema)\n .optional(),\n compilerRevisionRef: RevisionRefSchema,\n generation: z.number().int().nonnegative(),\n contentHash: Sha256Schema,\n })\n .strict();\nexport type DeclarativeAuthoringBootstrap = z.infer<\n typeof DeclarativeAuthoringBootstrapSchema\n>;\nexport type DeclarativeAuthoringChoice = z.infer<\n typeof DeclarativeAuthoringChoiceSchema\n>;\n\nexport const DeclarativeRuntimeRedirectSchema = z\n .object({\n statusCode: z.literal(302),\n source: z\n .object({\n resourceKind: z.enum([\"page\", \"workbench\"]),\n releaseSlotId: ContractIdentifierSchema,\n activeReleaseRevisionRef: RevisionRefSchema,\n routeClaim: CompiledRouteClaimSchema,\n })\n .strict(),\n target: z\n .object({\n resourceKind: z.enum([\"page\", \"workbench\"]),\n stableTargetRef: StableRefSchema,\n releaseSlotId: ContractIdentifierSchema,\n activeReleaseRevisionRef: RevisionRefSchema,\n normalizedPath: z.string().trim().startsWith(\"/\"),\n })\n .strict(),\n })\n .strict();\n\nexport const DeclarativeRuntimeResolvedSchema = z\n .object({\n surface: ProductSurfaceSchema,\n normalizedPath: z.string().trim().min(1),\n routeParameters: z.record(ContractIdentifierSchema, z.string()),\n page: ReadablePageRuntimeBundleSchema.optional(),\n workbench: WorkbenchRuntimeBundleSchema.optional(),\n redirect: DeclarativeRuntimeRedirectSchema.optional(),\n navigation: NavigationRuntimeBundleSchema.optional(),\n releaseSlotRefs: z.array(\n z\n .object({\n resourceKind: DeclarativeResourceKindSchema,\n releaseSlotId: ContractIdentifierSchema,\n })\n .strict(),\n ),\n generation: z.number().int().nonnegative(),\n contentHash: Sha256Schema,\n })\n .strict()\n .superRefine((value, context) => {\n const outcomes = [value.page, value.workbench, value.redirect].filter(\n Boolean,\n ).length;\n if (outcomes !== 1)\n context.addIssue({\n code: \"custom\",\n path: [\"page\"],\n message:\n \"A resolved runtime must contain exactly one Page, Workbench, or governed redirect outcome.\",\n });\n });\n\nconst DeclarativeRuntimeSafeBaseShape = {\n surface: ProductSurfaceSchema,\n normalizedPath: z.string().trim().startsWith(\"/\").max(2048),\n routeParameters: z\n .any()\n .superRefine(rejectRuntimePrototypeKeys)\n .pipe(z.record(ContractIdentifierSchema, z.string().max(2048)))\n .superRefine((parameters, context) => {\n if (Object.keys(parameters).length > 32) {\n context.addIssue({\n code: \"custom\",\n path: [],\n message: \"A resolved route cannot expose more than 32 parameters.\",\n });\n }\n }),\n generation: z.number().int().nonnegative(),\n etag: z.string().trim().min(1),\n contentHash: Sha256Schema,\n};\n\nconst DeclarativeRuntimeLegacyOutcomeSchema = z\n .object({\n outcome: z.literal(\"legacy\"),\n ...DeclarativeRuntimeSafeBaseShape,\n legacyAdapterRevisionRef: RevisionRefSchema,\n })\n .strict()\n .superRefine((value, context) => {\n if (value.legacyAdapterRevisionRef.kind !== \"legacy-route-adapter\") {\n context.addIssue({\n code: \"custom\",\n path: [\"legacyAdapterRevisionRef\", \"kind\"],\n message:\n \"A legacy runtime outcome must pin a legacy-route-adapter revision.\",\n });\n }\n });\n\nconst DeclarativeRuntimeAuthorizedOutcomeSchema = z\n .object({\n outcome: z.literal(\"declarative\"),\n ...DeclarativeRuntimeSafeBaseShape,\n resolved: DeclarativeRuntimeResolvedSchema,\n })\n .strict()\n .superRefine((value, context) => {\n if (\n value.resolved.surface !== value.surface ||\n value.resolved.normalizedPath !== value.normalizedPath\n ) {\n context.addIssue({\n code: \"custom\",\n path: [\"resolved\"],\n message:\n \"An authorized declarative outcome must match its safe route envelope.\",\n });\n }\n });\n\nconst DeclarativeRuntimeDeniedOutcomeSchema = (\n outcome: \"forbidden\" | \"unavailable\" | \"not-found\",\n code: string,\n) =>\n z\n .object({\n outcome: z.literal(outcome),\n ...DeclarativeRuntimeSafeBaseShape,\n code: z.literal(code),\n })\n .strict();\n\nconst DeclarativeRuntimeForbiddenOutcomeSchema = z.discriminatedUnion(\n \"resourceKind\",\n [\n z\n .object({\n outcome: z.literal(\"forbidden\"),\n ...DeclarativeRuntimeSafeBaseShape,\n resourceKind: z.literal(\"page\"),\n code: z.literal(\"DECLARATIVE_PAGE_FORBIDDEN\"),\n presentation: PageRouteStatePresentationSchema.optional(),\n })\n .strict()\n .superRefine((value, context) => {\n if (\n value.presentation &&\n value.presentation.surface !== value.surface\n ) {\n context.addIssue({\n code: \"custom\",\n path: [\"presentation\", \"surface\"],\n message:\n \"A forbidden Page presentation must match the resolved route surface.\",\n });\n }\n }),\n z\n .object({\n outcome: z.literal(\"forbidden\"),\n ...DeclarativeRuntimeSafeBaseShape,\n resourceKind: z.literal(\"workbench\"),\n code: z.literal(\"DECLARATIVE_WORKBENCH_FORBIDDEN\"),\n })\n .strict(),\n ],\n);\n\n/**\n * Browser-facing route resolution. Denied/unavailable/not-found branches are\n * structurally unable to expose resource, Release-slot or revision metadata.\n */\nexport const DeclarativeRuntimeResolveResultSchema = z.union([\n DeclarativeRuntimeLegacyOutcomeSchema,\n DeclarativeRuntimeAuthorizedOutcomeSchema,\n DeclarativeRuntimeForbiddenOutcomeSchema,\n DeclarativeRuntimeDeniedOutcomeSchema(\n \"unavailable\",\n \"DECLARATIVE_ROUTE_UNAVAILABLE\",\n ),\n DeclarativeRuntimeDeniedOutcomeSchema(\n \"not-found\",\n \"DECLARATIVE_ROUTE_NOT_FOUND\",\n ),\n]);\nexport type DeclarativeRuntimeResolveResult = z.infer<\n typeof DeclarativeRuntimeResolveResultSchema\n>;\n\nexport const DeclarativeNavigationRuntimeBootstrapSchema = z\n .object({\n placements: z.array(\n z\n .object({\n placement: ContractIdentifierSchema,\n surface: ProductSurfaceSchema,\n authority: z.enum([\"legacy\", \"declarative\"]),\n state: z.enum([\"active\", \"deactivated\"]),\n releaseSlotId: ContractIdentifierSchema.optional(),\n activeReleaseRevisionRef: RevisionRefSchema.optional(),\n bundle: NavigationRuntimeBundleSchema.optional(),\n })\n .strict()\n .superRefine((value, context) => {\n if (value.authority === \"legacy\") {\n if (\n value.releaseSlotId ||\n value.activeReleaseRevisionRef ||\n value.bundle\n ) {\n context.addIssue({\n code: \"custom\",\n path: [\"authority\"],\n message:\n \"Legacy navigation placements cannot expose declarative Release or Bundle state.\",\n });\n }\n if (value.state !== \"active\")\n context.addIssue({\n code: \"custom\",\n path: [\"state\"],\n message:\n \"Legacy navigation placements are active until an explicit declarative cutover.\",\n });\n return;\n }\n if (!value.releaseSlotId || !value.activeReleaseRevisionRef) {\n context.addIssue({\n code: \"custom\",\n path: [\"releaseSlotId\"],\n message:\n \"Declarative navigation placements require an exact active Release reference.\",\n });\n }\n if (value.state === \"active\" && !value.bundle) {\n context.addIssue({\n code: \"custom\",\n path: [\"bundle\"],\n message:\n \"An active declarative navigation placement requires its identity-filtered Runtime Bundle.\",\n });\n }\n if (value.state === \"deactivated\" && value.bundle) {\n context.addIssue({\n code: \"custom\",\n path: [\"bundle\"],\n message:\n \"A deactivated declarative navigation placement cannot expose a Runtime Bundle.\",\n });\n }\n if (\n value.bundle &&\n (value.bundle.placement !== value.placement ||\n value.bundle.surface !== value.surface)\n ) {\n context.addIssue({\n code: \"custom\",\n path: [\"bundle\"],\n message:\n \"The Navigation Runtime Bundle must match its placement and surface.\",\n });\n }\n }),\n ),\n bundles: z.array(NavigationRuntimeBundleSchema),\n releaseSlotIds: z.array(ContractIdentifierSchema),\n generation: z.number().int().nonnegative(),\n contentHash: Sha256Schema,\n authDigest: Sha256Schema,\n etag: z.string().trim().min(1),\n })\n .strict()\n .superRefine((value, context) => {\n const active = value.placements.filter(\n (entry) => entry.authority === \"declarative\" && entry.state === \"active\",\n );\n if (\n active.length !== value.bundles.length ||\n active.length !== value.releaseSlotIds.length\n ) {\n context.addIssue({\n code: \"custom\",\n path: [\"placements\"],\n message:\n \"Compatibility bundle arrays must exactly project active declarative placements.\",\n });\n return;\n }\n active.forEach((entry, index) => {\n if (\n entry.bundle?.contentHash !== value.bundles[index]?.contentHash ||\n entry.releaseSlotId !== value.releaseSlotIds[index]\n ) {\n context.addIssue({\n code: \"custom\",\n path: [\"placements\", index],\n message:\n \"Navigation placement and compatibility bundle order must match.\",\n });\n }\n });\n });\n\nexport const DeclarativeWorkbenchSummarySchema = z\n .object({\n workbenchId: ContractIdentifierSchema,\n releaseSlotId: ContractIdentifierSchema,\n activeReleaseRevisionRef: RevisionRefSchema,\n identity: WorkbenchIdentitySchema,\n routeClaims: z.array(CompiledRouteClaimSchema),\n order: z.number().int(),\n isDefaultCandidate: z.boolean(),\n generation: z.number().int().nonnegative(),\n contentHash: Sha256Schema,\n })\n .strict();\n\nexport const DeclarativeLegacyWorkbenchSummarySchema = z\n .object({\n workbenchId: ContractIdentifierSchema,\n authority: z.literal(\"legacy\"),\n identity: WorkbenchIdentitySchema,\n order: z.number().int(),\n isDefaultCandidate: z.boolean(),\n })\n .strict();\n\nexport const DeclarativeWorkbenchRuntimeBootstrapSchema = z\n .object({\n defaultAuthority: z.literal(\"legacy\"),\n authorities: z.array(\n z\n .object({\n workbenchId: ContractIdentifierSchema,\n releaseSlotId: ContractIdentifierSchema,\n authority: z.enum([\"legacy\", \"declarative\"]),\n state: z.enum([\"active\", \"deactivated\"]),\n activeReleaseRevisionRef: RevisionRefSchema,\n visible: z.boolean(),\n })\n .strict()\n .superRefine((value, context) => {\n if (value.authority === \"legacy\" && value.visible)\n context.addIssue({\n code: \"custom\",\n path: [\"visible\"],\n message:\n \"Legacy workbenches are delivered by the compatibility API, not by declarative summaries.\",\n });\n if (value.state === \"deactivated\" && value.visible)\n context.addIssue({\n code: \"custom\",\n path: [\"visible\"],\n message: \"Deactivated workbenches cannot be visible.\",\n });\n }),\n ),\n legacySummaries: z.array(DeclarativeLegacyWorkbenchSummarySchema),\n summaries: z.array(DeclarativeWorkbenchSummarySchema),\n selected: z\n .object({\n workbenchId: ContractIdentifierSchema,\n authority: z.enum([\"legacy\", \"declarative\"]),\n releaseSlotId: ContractIdentifierSchema.optional(),\n activeReleaseRevisionRef: RevisionRefSchema.optional(),\n source: z.enum([\"explicit\", \"default\", \"first-accessible\"]),\n })\n .strict()\n .superRefine((value, context) => {\n if (\n value.authority === \"declarative\" &&\n (!value.releaseSlotId || !value.activeReleaseRevisionRef)\n ) {\n context.addIssue({\n code: \"custom\",\n path: [\"releaseSlotId\"],\n message:\n \"Declarative Workbench selection requires its exact Release slot and revision.\",\n });\n }\n if (\n value.authority === \"legacy\" &&\n (value.releaseSlotId || value.activeReleaseRevisionRef)\n ) {\n context.addIssue({\n code: \"custom\",\n path: [\"releaseSlotId\"],\n message:\n \"Legacy Workbench selection cannot expose declarative Release state.\",\n });\n }\n })\n .nullable(),\n authDigest: Sha256Schema,\n etag: z.string().trim().min(1),\n })\n .strict();\n\nexport const DeclarativeNavigationImportIntentSchema = z\n .object({\n environmentRef: StableRefSchema,\n surface: ProductSurfaceSchema,\n expectedLegacyContentHash: Sha256Schema,\n expectedDraftVersion: z.number().int().nonnegative(),\n idempotencyKey: z.string().trim().min(1).max(256),\n })\n .strict();\n\nexport const DeclarativeNavigationImportResultSchema = z\n .object({\n document: z.unknown(),\n revisionRef: RevisionRefSchema,\n provenance: z\n .object({\n sourceKey: z.literal(\"server.ui.menus\"),\n sourceRevisionRef: RevisionRefSchema,\n sourceContentHash: Sha256Schema,\n })\n .strict(),\n diff: z\n .object({\n added: z.array(ContractIdentifierSchema),\n removed: z.array(ContractIdentifierSchema),\n changed: z.array(ContractIdentifierSchema),\n })\n .strict(),\n })\n .strict();\n\nexport const DeclarativeRuntimeResolveQuerySchema = z\n .object({\n // Runtime callers may select an exact active environment. When omitted,\n // Server resolves the single release-owned default for this surface.\n environmentId: ContractIdentifierSchema.optional(),\n surface: ProductSurfaceSchema,\n path: z.string().trim().min(1).max(2048),\n navigationPlacement: ContractIdentifierSchema.optional(),\n })\n .strict();\n\nexport const DeclarativeRuntimeRouteOwnerQuerySchema = z\n .object({\n // This tenant-scoped lookup is only called after authentication and team\n // selection. Login, setup and other public boot routes stay owned by the\n // predeclared legacy router and must not call this API.\n environmentId: ContractIdentifierSchema.optional(),\n surface: ProductSurfaceSchema,\n path: z.string().trim().min(1).max(2048),\n })\n .strict();\n\nconst DeclarativeRuntimeRouteParametersSchema = z\n .any()\n .superRefine(rejectRuntimePrototypeKeys)\n .pipe(z.record(ContractIdentifierSchema, z.string().max(2048)))\n .superRefine((parameters, context) => {\n const keys = Object.keys(parameters);\n if (keys.length > 32)\n context.addIssue({\n code: \"custom\",\n path: [],\n message: \"A resolved route cannot expose more than 32 parameters.\",\n });\n });\n\nconst DeclarativeLegacyRouteOwnerSchema = z\n .object({\n authority: z.literal(\"legacy\"),\n legacyAdapterRevisionRef: RevisionRefSchema,\n generation: z.number().int().positive(),\n etag: z.string().trim().min(1),\n })\n .strict();\n\nconst DeclarativeReleaseRouteOwnerSchema = z\n .object({\n authority: z.literal(\"declarative\"),\n resourceKind: z.enum([\"page\", \"workbench\"]),\n releaseSlotId: ContractIdentifierSchema,\n activeReleaseRevisionRef: RevisionRefSchema,\n generation: z.number().int().positive(),\n etag: z.string().trim().min(1),\n })\n .strict();\n\nexport const DeclarativeRuntimeRouteOwnerSchema = z\n .object({\n surface: ProductSurfaceSchema,\n normalizedPath: z.string().trim().startsWith(\"/\").max(2048),\n routeParameters: DeclarativeRuntimeRouteParametersSchema,\n owner: z.discriminatedUnion(\"authority\", [\n DeclarativeLegacyRouteOwnerSchema,\n DeclarativeReleaseRouteOwnerSchema,\n ]),\n contentHash: Sha256Schema,\n })\n .strict();\nexport type DeclarativeRuntimeRouteOwner = z.infer<\n typeof DeclarativeRuntimeRouteOwnerSchema\n>;\n\nexport type DeclarativeRuntimeResolved = z.infer<\n typeof DeclarativeRuntimeResolvedSchema\n>;\nexport type DeclarativeRuntimeRedirect = z.infer<\n typeof DeclarativeRuntimeRedirectSchema\n>;\nexport type DeclarativeNavigationRuntimeBootstrap = z.infer<\n typeof DeclarativeNavigationRuntimeBootstrapSchema\n>;\nexport type DeclarativeWorkbenchRuntimeBootstrap = z.infer<\n typeof DeclarativeWorkbenchRuntimeBootstrapSchema\n>;\nexport type DeclarativeNavigationPlacement = z.infer<\n typeof DeclarativeNavigationPlacementSchema\n>;\nexport type DeclarativeNavigationImportIntent = z.infer<\n typeof DeclarativeNavigationImportIntentSchema\n>;\n\n// Route claims are re-exported here because authoring clients select an existing\n// declaration claim; they never submit a URL or mutable endpoint as authority.\nexport const DeclarativeRouteClaimIntentSchema = RouteClaimSchema;\n","import type { RenderNode, RenderTree } from '../contracts/render';\nimport { RenderTreeSchema } from '../contracts/render';\n\nexport interface CompiledRenderTree {\n tree: RenderTree;\n root: RenderNode;\n nodesById: ReadonlyMap<string, RenderNode>;\n traversal: readonly RenderNode[];\n childrenOf(nodeId: string): readonly RenderNode[];\n ancestorsOf(nodeId: string): readonly RenderNode[];\n}\n\nexport const compileRenderTree = (input: RenderTree): CompiledRenderTree => {\n const tree = RenderTreeSchema.parse(input);\n const nodesById = new Map<string, RenderNode>();\n for (const node of tree.nodes) {\n if (nodesById.has(node.nodeId)) throw new Error(`Duplicate render node id: ${node.nodeId}`);\n nodesById.set(node.nodeId, node);\n }\n const root = nodesById.get(tree.rootNodeId);\n if (!root) throw new Error(`Render tree ${tree.treeId} has no root node ${tree.rootNodeId}.`);\n if (root.parentNodeId !== undefined) throw new Error(`Render tree root ${root.nodeId} cannot declare a parent.`);\n\n for (const node of tree.nodes) {\n if (node.nodeId !== root.nodeId && node.parentNodeId === undefined) {\n throw new Error(`Render node ${node.nodeId} is disconnected from root ${root.nodeId}.`);\n }\n if (node.parentNodeId !== undefined) {\n const parent = nodesById.get(node.parentNodeId);\n if (!parent) throw new Error(`Render node ${node.nodeId} references missing parent ${node.parentNodeId}.`);\n if (!parent.children.includes(node.nodeId)) {\n throw new Error(`Render node ${node.nodeId} is not declared by parent ${parent.nodeId}.`);\n }\n }\n for (const childId of node.children) {\n const child = nodesById.get(childId);\n if (!child) throw new Error(`Render node ${node.nodeId} references missing child ${childId}.`);\n if (child.parentNodeId !== node.nodeId) {\n throw new Error(`Render child ${childId} does not point back to parent ${node.nodeId}.`);\n }\n }\n }\n\n const visiting = new Set<string>();\n const visited = new Set<string>();\n const traversal: RenderNode[] = [];\n const visit = (node: RenderNode) => {\n if (visiting.has(node.nodeId)) throw new Error(`Render tree ${tree.treeId} contains a cycle at ${node.nodeId}.`);\n if (visited.has(node.nodeId)) return;\n visiting.add(node.nodeId);\n traversal.push(node);\n node.children.forEach((childId) => visit(nodesById.get(childId)!));\n visiting.delete(node.nodeId);\n visited.add(node.nodeId);\n };\n visit(root);\n if (visited.size !== nodesById.size) {\n const disconnected = tree.nodes.find((node) => !visited.has(node.nodeId))!;\n throw new Error(`Render node ${disconnected.nodeId} is not reachable from root ${root.nodeId}.`);\n }\n\n const childrenOf = (nodeId: string): readonly RenderNode[] => {\n const node = nodesById.get(nodeId);\n if (!node) throw new Error(`Unknown render node: ${nodeId}`);\n return Object.freeze(node.children.map((childId) => nodesById.get(childId)!));\n };\n const ancestorsOf = (nodeId: string): readonly RenderNode[] => {\n let node = nodesById.get(nodeId);\n if (!node) throw new Error(`Unknown render node: ${nodeId}`);\n const ancestors: RenderNode[] = [];\n while (node.parentNodeId !== undefined) {\n node = nodesById.get(node.parentNodeId)!;\n ancestors.push(node);\n }\n return Object.freeze(ancestors);\n };\n\n return Object.freeze({\n tree,\n root,\n nodesById,\n traversal: Object.freeze(traversal),\n childrenOf,\n ancestorsOf,\n });\n};\n","import type { RenderNode, RenderTree } from \"../contracts/render\";\nimport { JsonObjectSchema } from \"../contracts/common\";\nimport {\n DeclarativeProductResourceRegistrationSchema,\n DeclarativeShellResourceDocumentSchema,\n DesignCapabilityCatalogArtifactSchema,\n ProductDeclarativeCapabilityRegistrationSchema,\n type DeclarativeCreateTemplateRegistration,\n type DeclarativeProductResourceRegistration,\n type DeclarativeRouteSpaceRegistration,\n type DeclarativeSchemaDefinitionRegistration,\n type DesignCapabilityCatalogArtifact,\n type DesignCapabilityCatalogEntry,\n type ProductDeclarativeCapabilityRegistration,\n} from \"../contracts/declarative-control-http\";\nimport { compileRenderTree } from \"./render-tree-compiler\";\nimport { collectPageExpressionReads } from \"../contracts/page-expression\";\nimport {\n ActionProgramDefinitionSchema,\n type ActionProgramDefinition,\n AccessPolicySchema,\n CompiledRouteClaimSchema,\n DeclarativeRouteOwnerIndexSchema,\n DomainQueryDefinitionSchema,\n PageSchema,\n DeclarativeWorkbenchCatalogSchema,\n LegacyRouteTakeoverAuthorizationSchema,\n LegacyRouteClaimSchema,\n PermissionAlternativePolicySchema,\n NavigationReleaseSchema,\n NavigationRuntimeBundleSchema,\n NavigationSchema,\n PageReleaseSchema,\n PageRuntimeBundleSchema,\n LegacyPageRuntimeBundleSchema,\n ResolvedPageSchema,\n OntologyBindingSchema,\n LegacyOntologyBindingSchema,\n ProductSurfaceSchema,\n RevisionRefSchema,\n RouteClaimSchema,\n RoutePathTemplateSchema,\n RouteSpaceSchema,\n StableRefSchema,\n TenantScopeSchema,\n WorkbenchReleaseSchema,\n WorkbenchRuntimeBundleSchema,\n WorkbenchSchema,\n type AccessPolicy,\n type CompiledRouteClaim,\n type DeclarativeRouteOwnerIndex,\n type DeclarativeRouteOwnerIndexEntry,\n type DeclarativeRouteClaim,\n type DeclarativeWorkbenchCatalog,\n type DeclarativeWorkbenchCatalogEntry,\n type DomainQueryDefinition,\n type LegacyRouteTakeoverAuthorization,\n type PermissionAlternativePolicy,\n type Navigation,\n type NavigationRelease,\n type NavigationRuntimeBundle,\n type Page,\n type ResolvedPage,\n type PageRelease,\n type PageRuntimeBundle,\n type LegacyPageRuntimeBundle,\n type ReleaseDependency,\n type RevisionRef,\n type RouteClaim,\n type RouteSpace,\n type StableRef,\n type TenantScope,\n type Workbench,\n type WorkbenchRelease,\n type WorkbenchRuntimeBundle,\n} from \"../contracts/declarative-control\";\nimport type { DomainCommandDefinition } from \"../contracts/semantic\";\nexport type DeclarativeControlCompilationErrorCode =\n | \"AUDIENCE_WIDER_THAN_TARGET\"\n | \"CAPABILITY_BINDING_MISMATCH\"\n | \"CAPABILITY_NOT_EDITOR_ELIGIBLE\"\n | \"COMMAND_DEFINITION_MISMATCH\"\n | \"CROSS_TENANT_REFERENCE\"\n | \"DEPENDENCY_MISSING\"\n | \"DESIGN_CATALOG_INVALID\"\n | \"HEAD_CONFLICT\"\n | \"NAV_DEPTH_EXCEEDED\"\n | \"NAV_ACTION_INPUT_INVALID\"\n | \"NAV_NODE_LIMIT_EXCEEDED\"\n | \"NAV_TARGET_UNRELEASED\"\n | \"PAGE_ENTRY_TARGET_UNRELEASED\"\n | \"PORT_TYPE_MISMATCH\"\n | \"PRODUCT_CAPABILITY_CATALOG_INVALID\"\n | \"QUERY_DEFINITION_MISMATCH\"\n | \"RENDER_DEPTH_EXCEEDED\"\n | \"RENDER_TREE_INVALID\"\n | \"RENDER_NODE_LIMIT_EXCEEDED\"\n | \"RELEASE_OPERATION_INVALID\"\n | \"RELEASE_VALIDATION_FAILED\"\n | \"REGISTRY_CONFLICT\"\n | \"REVISION_MISMATCH\"\n | \"ROUTE_CONFLICT\"\n | \"ROUTE_RESERVED\"\n | \"ROUTE_TAKEOVER_INVALID\"\n | \"SCHEMA_DEFINITION_MISMATCH\"\n | \"ROUTE_SPACE_MISSING\"\n | \"ROUTE_SPACE_MISMATCH\"\n | \"SHELL_CHROME_UNAVAILABLE\"\n | \"SHELL_REVISION_MISMATCH\"\n | \"SHELL_SURFACE_MISMATCH\"\n | \"WORKBENCH_INSTANCE_LIMIT_EXCEEDED\"\n | \"WORKBENCH_RELEASE_SET_INVALID\"\n | \"WORKBENCH_TEMPLATE_UNRELEASABLE\";\nexport class DeclarativeControlCompilationError extends Error {\n constructor(\n public readonly code: DeclarativeControlCompilationErrorCode,\n public readonly path: string,\n message: string,\n ) {\n super(`${code} at ${path}: ${message}`);\n this.name = \"DeclarativeControlCompilationError\";\n }\n}\nexport interface DeclarativeControlCompileLimits {\n maxNavigationNodes: number;\n maxNavigationDepth: number;\n maxRenderNodes: number;\n maxRenderDepth: number;\n maxWorkbenchGroups: number;\n maxWorkbenchInstances: number;\n}\nexport interface RouteSpaceRegistration {\n revisionRef: RevisionRef;\n routeSpace: RouteSpace;\n}\nexport interface CapabilityPortRegistration {\n name: string;\n schemaRevisionRef: RevisionRef;\n}\nexport interface DeclarativeCapabilityRegistration {\n runtimeContractVersion?: string;\n capabilityRevisionRef: RevisionRef;\n providerRevisionRef: RevisionRef;\n propertySchemaRevisionRef: RevisionRef;\n accessPolicy: AccessPolicy;\n editorEligible: boolean;\n inputPorts: readonly CapabilityPortRegistration[];\n outputPorts: readonly CapabilityPortRegistration[];\n allowedSideEffects: readonly (\n | \"network\"\n | \"storage\"\n | \"navigation\"\n | \"clipboard\"\n | \"worker\"\n | \"websocket\"\n )[];\n}\nexport interface ActionProgramRegistration {\n definitionRevisionRef: RevisionRef;\n definition: ActionProgramDefinition;\n}\nexport interface DomainQueryRegistration {\n definitionRevisionRef: RevisionRef;\n definition: DomainQueryDefinition;\n}\nexport interface DomainCommandRegistration {\n definitionRevisionRef: RevisionRef;\n definition: DomainCommandDefinition;\n}\nexport interface ResolvePageDefaults {\n routeSpace: RevisionRef;\n shell: RevisionRef;\n tokens: readonly RevisionRef[];\n performanceBudget: RevisionRef;\n observationPolicy: RevisionRef;\n}\nexport interface ResolvePageInput {\n page: Page;\n pageOwnerRepo: string;\n defaults: ResolvePageDefaults;\n routeSpaces?: readonly RouteSpaceRegistration[];\n productResources?: readonly DeclarativeProductResourceRegistration[];\n capabilityRegistry: readonly DeclarativeCapabilityRegistration[];\n domainQueryRegistry?: readonly DomainQueryRegistration[];\n programRegistry?: readonly ActionProgramRegistration[];\n domainCommandRegistry?: readonly DomainCommandRegistration[];\n schemaRegistry?: readonly DeclarativeSchemaDefinitionRegistration[];\n targetRegistry?: readonly NavigationRouteTargetRegistration[];\n}\nexport interface WorkbenchTargetRegistration {\n stableTargetRef: StableRef;\n targetRevisionRef: RevisionRef;\n accessPolicy: AccessPolicy;\n}\nexport interface NavigationRouteTargetRegistration extends WorkbenchTargetRegistration {\n kind: \"route\";\n releaseRevisionRef?: RevisionRef;\n surface: \"studio\" | \"kernel\";\n routeClaim: CompiledRouteClaim;\n}\nexport interface NavigationRegisteredMenuActionRegistration extends WorkbenchTargetRegistration {\n kind: \"registered-menu-action\";\n surface: \"studio\" | \"kernel\";\n applicationId: string;\n actionRef: string;\n inputSchemaRef?: string;\n validateInput?: (input: Record<string, unknown>) => Record<string, unknown>;\n sourceCatalogRevisionRef: RevisionRef;\n}\nexport interface NavigationDomainCommandRegistration extends WorkbenchTargetRegistration {\n kind: \"governed-domain-command\";\n surface: \"studio\" | \"kernel\";\n inputSchemaRevisionRef: RevisionRef;\n resultSchemaRevisionRef?: RevisionRef;\n}\nexport type NavigationTargetRegistration =\n | NavigationRouteTargetRegistration\n | NavigationRegisteredMenuActionRegistration\n | NavigationDomainCommandRegistration;\nexport interface CompileRouteClaimsInput {\n claims: readonly (\n | RouteClaim\n | DeclarativeRouteClaim\n | ResolvedPage[\"routeClaims\"][number]\n | Workbench[\"routeClaims\"][number]\n )[];\n routeSpaces: readonly RouteSpaceRegistration[];\n surface: \"studio\" | \"kernel\";\n legacyRouteTakeoverAuthorizations?: readonly LegacyRouteTakeoverAuthorization[];\n}\nexport interface MaterializeRouteSpacePathInput {\n routeSpace: RouteSpace;\n applicationPath: string;\n parameters?: Readonly<Record<string, string | number>>;\n}\nexport interface CompilePageRuntimeBundleInput {\n page: ResolvedPage;\n pageRevisionRef: RevisionRef;\n release: PageRelease;\n releaseRevisionRef: RevisionRef;\n routeSpaces: readonly RouteSpaceRegistration[];\n compilerRevisionRef: RevisionRef;\n generation: number;\n limits: DeclarativeControlCompileLimits;\n capabilityRegistry: readonly DeclarativeCapabilityRegistration[];\n domainQueryRegistry?: readonly DomainQueryRegistration[];\n programRegistry?: readonly ActionProgramRegistration[];\n targetRegistry?: readonly NavigationRouteTargetRegistration[];\n shellRegistration: DeclarativeProductResourceRegistration;\n /** Exact shared Studio Page references independently verified by the authenticated catalog. */\n verifiedSharedPageReferences?: readonly RevisionRef[];\n}\nexport interface CompileWorkbenchRuntimeBundleInput {\n capabilityRegistry?: readonly DeclarativeCapabilityRegistration[];\n workbench: Workbench;\n workbenchRevisionRef: RevisionRef;\n release: WorkbenchRelease;\n releaseRevisionRef: RevisionRef;\n routeSpaces: readonly RouteSpaceRegistration[];\n targetRegistry: readonly WorkbenchTargetRegistration[];\n compilerRevisionRef: RevisionRef;\n generation: number;\n limits: DeclarativeControlCompileLimits;\n}\nexport interface CompileNavigationRuntimeBundleInput {\n navigation: Navigation;\n navigationRevisionRef: RevisionRef;\n release: NavigationRelease;\n releaseRevisionRef: RevisionRef;\n targetRegistry: readonly NavigationTargetRegistration[];\n /**\n * Exact Page and PageRelease references independently verified by the\n * authenticated Kernel catalog. These are the only cross-tenant references\n * a Kernel Navigation may retain in its immutable runtime bundle.\n */\n verifiedKernelPageReferences?: readonly RevisionRef[];\n compilerRevisionRef: RevisionRef;\n generation: number;\n limits: DeclarativeControlCompileLimits;\n}\nconst scopedIdentityKey = (reference: TenantScope[\"tenantRef\"]): string =>\n `${reference.kind}:${reference.id}:${reference.ownerRepo}`;\nconst scopeKey = (scope: TenantScope): string =>\n `${scopedIdentityKey(scope.tenantRef)}:${scopedIdentityKey(scope.dataSpaceRef)}:${scope.teamRef ? scopedIdentityKey(scope.teamRef) : \"\"}`;\nexport const stableRefKey = (reference: StableRef): string =>\n `${reference.visibility}:${reference.tenantScope ? scopeKey(reference.tenantScope) : \"\"}:${reference.kind}:${reference.id}:${reference.ownerRepo}`;\nexport const revisionRefKey = (reference: RevisionRef): string =>\n `${stableRefKey(reference)}@${reference.revision}:v${reference.schemaVersion}:${reference.contentHash.toLowerCase()}`;\nexport const sameStableRef = (left: StableRef, right: StableRef): boolean =>\n stableRefKey(left) === stableRefKey(right);\nexport const sameRevisionRef = (\n left: RevisionRef,\n right: RevisionRef,\n): boolean => revisionRefKey(left) === revisionRefKey(right);\n\n/** Schema content and authority remain stable across catalog renumbering. */\nexport const sameSchemaContract = (left: RevisionRef, right: RevisionRef): boolean =>\n left.kind === 'schema' && right.kind === 'schema' && sameStableRef(left, right) &&\n left.schemaVersion === right.schemaVersion && left.contentHash === right.contentHash;\n\nconst assertUniqueRegistryKeys = (keys: readonly string[], path: string) => {\n const seen = new Set<string>();\n keys.forEach((key, index) => {\n if (seen.has(key)) {\n throw new DeclarativeControlCompilationError(\n \"REGISTRY_CONFLICT\",\n `${path}[${index}]`,\n `Duplicate registry identity: ${key}`,\n );\n }\n seen.add(key);\n });\n};\nconst stableSerialize = (value: unknown): string => {\n if (value === undefined) return \"null\";\n if (value === null || typeof value !== \"object\")\n return JSON.stringify(value) ?? \"null\";\n if (Array.isArray(value))\n return `[${value.map((item) => stableSerialize(item)).join(\",\")}]`;\n const record = value as Record<string, unknown>;\n return `{${Object.keys(record)\n .filter((key) => record[key] !== undefined)\n .sort()\n .map((key) => `${JSON.stringify(key)}:${stableSerialize(record[key])}`)\n .join(\",\")}}`;\n};\nconst SHA256_INITIAL = [\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, 0x510e527f, 0x9b05688c,\n 0x1f83d9ab, 0x5be0cd19,\n];\nconst SHA256_ROUND = [\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1,\n 0x923f82a4, 0xab1c5ed5, 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,\n 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, 0xe49b69c1, 0xefbe4786,\n 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147,\n 0x06ca6351, 0x14292967, 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,\n 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, 0xa2bfe8a1, 0xa81a664b,\n 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a,\n 0x5b9cca4f, 0x682e6ff3, 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\n 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2,\n];\nconst rotateRight = (value: number, amount: number) =>\n (value >>> amount) | (value << (32 - amount));\nconst sha256Hex = (value: string): string => {\n const source = [...new TextEncoder().encode(value)];\n const bitLength = source.length * 8;\n source.push(0x80);\n while (source.length % 64 !== 56) source.push(0);\n const high = Math.floor(bitLength / 4294967296);\n const low = bitLength >>> 0;\n for (let shift = 24; shift >= 0; shift -= 8)\n source.push((high >>> shift) & 0xff);\n for (let shift = 24; shift >= 0; shift -= 8)\n source.push((low >>> shift) & 0xff);\n const hash = [...SHA256_INITIAL];\n const words = new Array<number>(64).fill(0);\n for (let offset = 0; offset < source.length; offset += 64) {\n for (let index = 0; index < 16; index += 1) {\n const start = offset + index * 4;\n words[index] =\n ((source[start] << 24) |\n (source[start + 1] << 16) |\n (source[start + 2] << 8) |\n source[start + 3]) >>>\n 0;\n }\n for (let index = 16; index < 64; index += 1) {\n const previous = words[index - 15];\n const recent = words[index - 2];\n const small0 =\n rotateRight(previous, 7) ^ rotateRight(previous, 18) ^ (previous >>> 3);\n const small1 =\n rotateRight(recent, 17) ^ rotateRight(recent, 19) ^ (recent >>> 10);\n words[index] =\n (words[index - 16] + small0 + words[index - 7] + small1) >>> 0;\n }\n let [a, b, c, d, e, f, g, h] = hash;\n for (let index = 0; index < 64; index += 1) {\n const big1 = rotateRight(e, 6) ^ rotateRight(e, 11) ^ rotateRight(e, 25);\n const choice = (e & f) ^ (~e & g);\n const temp1 =\n (h + big1 + choice + SHA256_ROUND[index] + words[index]) >>> 0;\n const big0 = rotateRight(a, 2) ^ rotateRight(a, 13) ^ rotateRight(a, 22);\n const majority = (a & b) ^ (a & c) ^ (b & c);\n const temp2 = (big0 + majority) >>> 0;\n h = g;\n g = f;\n f = e;\n e = (d + temp1) >>> 0;\n d = c;\n c = b;\n b = a;\n a = (temp1 + temp2) >>> 0;\n }\n hash[0] = (hash[0] + a) >>> 0;\n hash[1] = (hash[1] + b) >>> 0;\n hash[2] = (hash[2] + c) >>> 0;\n hash[3] = (hash[3] + d) >>> 0;\n hash[4] = (hash[4] + e) >>> 0;\n hash[5] = (hash[5] + f) >>> 0;\n hash[6] = (hash[6] + g) >>> 0;\n hash[7] = (hash[7] + h) >>> 0;\n }\n return hash.map((part) => part.toString(16).padStart(8, \"0\")).join(\"\");\n};\nexport const canonicalContentHash = (value: unknown): string =>\n sha256Hex(stableSerialize(value));\n/**\n * Names one immutable Runtime Bundle projection by its exact Release evidence.\n * The fixed-size digest stays below Data Server's 256-byte projection id limit\n * even when a governed release slot uses the maximum contract identifier size.\n */\nexport const declarativeRuntimeProjectionId = (\n resourceKind: \"page\" | \"navigation\" | \"workbench\",\n releaseSlotId: string,\n releaseRevisionRef: Pick<\n RevisionRef,\n \"kind\" | \"id\" | \"ownerRepo\" | \"revision\" | \"schemaVersion\" | \"contentHash\"\n >,\n): string =>\n `drb:${canonicalContentHash({ resourceKind, releaseSlotId, releaseRevisionRef })}`;\n/** Names the rebuildable route-owner index for one tenant environment surface. */\nexport const declarativeRouteOwnerIndexProjectionId = (\n tenantScope: TenantScope,\n environmentRef: StableRef,\n surface: \"studio\" | \"kernel\",\n): string =>\n `dri:${canonicalContentHash({\n tenantScope: {\n teamRef: tenantScope.teamRef\n ? { kind: tenantScope.teamRef.kind, id: tenantScope.teamRef.id }\n : null,\n },\n environmentRef,\n surface,\n })}`;\nexport const declarativeWorkbenchCatalogProjectionId = (\n tenantScope: TenantScope,\n environmentRef: StableRef,\n surface: \"studio\" | \"kernel\",\n): string =>\n `dwc:${canonicalContentHash({\n tenantScope: {\n teamRef: tenantScope.teamRef\n ? { kind: tenantScope.teamRef.kind, id: tenantScope.teamRef.id }\n : null,\n },\n environmentRef,\n surface,\n })}`;\nconst takeoverHashSource = (\n authorization: Omit<LegacyRouteTakeoverAuthorization, \"contentHash\">,\n) => authorization;\nexport const compileLegacyRouteTakeoverAuthorization = (\n input: Omit<LegacyRouteTakeoverAuthorization, \"contentHash\">,\n): LegacyRouteTakeoverAuthorization => {\n const unsigned = {\n ...input,\n contract: \"LegacyRouteTakeoverAuthorization\" as const,\n schemaVersion: 1 as const,\n };\n return deepFreeze(\n LegacyRouteTakeoverAuthorizationSchema.parse({\n ...unsigned,\n contentHash: canonicalContentHash(takeoverHashSource(unsigned)),\n }),\n );\n};\nexport const legacyRouteTakeoverAuthorizationHash = (\n input: Omit<LegacyRouteTakeoverAuthorization, \"contentHash\">,\n): string => canonicalContentHash(takeoverHashSource(input));\nexport const parseExactLegacyRouteTakeoverAuthorization = (\n input: unknown,\n): LegacyRouteTakeoverAuthorization => {\n const parsed = LegacyRouteTakeoverAuthorizationSchema.parse(input);\n const { contentHash, ...unsigned } = parsed;\n if (contentHash !== legacyRouteTakeoverAuthorizationHash(unsigned)) {\n throw new DeclarativeControlCompilationError(\n \"ROUTE_TAKEOVER_INVALID\",\n \"contentHash\",\n \"Legacy route takeover authorization content hash is not exact.\",\n );\n }\n return deepFreeze(parsed);\n};\nexport const permissionAlternativePolicyAllows = (\n policyInput: PermissionAlternativePolicy,\n permissionCodes: ReadonlySet<string> | readonly string[],\n): boolean => {\n const parsed = PermissionAlternativePolicySchema.parse(policyInput);\n const available =\n permissionCodes instanceof Set ? permissionCodes : new Set(permissionCodes);\n return parsed.alternatives.some((alternative) =>\n alternative.every((permission) => available.has(permission)),\n );\n};\nexport const compileDeclarativeRouteOwnerIndex = (input: {\n tenantScope: TenantScope;\n environmentRef: StableRef;\n surface: \"studio\" | \"kernel\";\n generation: number;\n entries: readonly DeclarativeRouteOwnerIndexEntry[];\n}): DeclarativeRouteOwnerIndex => {\n const entries = input.entries\n .map((entry) => ({ ...entry }))\n .sort((left, right) => {\n const leftKey = `${left.resourceKind}:${left.releaseSlotId}`;\n const rightKey = `${right.resourceKind}:${right.releaseSlotId}`;\n return leftKey.localeCompare(rightKey);\n });\n const unsigned = {\n contract: \"DeclarativeRouteOwnerIndex\" as const,\n schemaVersion: 1 as const,\n tenantScope: TenantScopeSchema.parse(input.tenantScope),\n environmentRef: StableRefSchema.parse(input.environmentRef),\n surface: input.surface,\n generation: input.generation,\n entries,\n rebuildable: true as const,\n };\n return deepFreeze(\n DeclarativeRouteOwnerIndexSchema.parse({\n ...unsigned,\n contentHash: canonicalContentHash(unsigned),\n }),\n );\n};\nexport const compileDeclarativeWorkbenchCatalog = (input: {\n tenantScope: TenantScope;\n environmentRef: StableRef;\n surface: \"studio\" | \"kernel\";\n generation: number;\n entries: readonly DeclarativeWorkbenchCatalogEntry[];\n}): DeclarativeWorkbenchCatalog => {\n const entries = input.entries\n .map((entry) => ({ ...entry }))\n .sort(\n (left, right) =>\n left.order - right.order ||\n left.workbenchId.localeCompare(right.workbenchId),\n );\n const unsigned = {\n contract: \"DeclarativeWorkbenchCatalog\" as const,\n schemaVersion: 1 as const,\n tenantScope: TenantScopeSchema.parse(input.tenantScope),\n environmentRef: StableRefSchema.parse(input.environmentRef),\n surface: input.surface,\n generation: input.generation,\n entries,\n rebuildable: true as const,\n };\n return deepFreeze(\n DeclarativeWorkbenchCatalogSchema.parse({\n ...unsigned,\n contentHash: canonicalContentHash(unsigned),\n }),\n );\n};\nexport const declarativeCreateTemplateSourceHash = (\n document: DeclarativeCreateTemplateRegistration[\"document\"],\n): string => canonicalContentHash(document);\nexport const declarativeCreateTemplateRevisionHash = (\n registration: DeclarativeCreateTemplateRegistration,\n): string => canonicalContentHash(registration.document);\nexport const declarativeRouteSpaceSourceHash = (\n routeSpace: DeclarativeRouteSpaceRegistration[\"routeSpace\"],\n): string => canonicalContentHash(routeSpace);\nexport const declarativeRouteSpaceRevisionHash = (\n registration: DeclarativeRouteSpaceRegistration,\n): string => canonicalContentHash(registration.routeSpace);\nexport const declarativeProductResourceSourceHash = (\n document: DeclarativeProductResourceRegistration[\"document\"],\n): string => canonicalContentHash(document);\nexport const declarativeProductResourceRevisionHash = (\n registration: DeclarativeProductResourceRegistration,\n): string => canonicalContentHash(registration.document);\nconst designCapabilityCatalogHashSource = (input: {\n sourceRef: string;\n entries: readonly DesignCapabilityCatalogEntry[];\n}) => ({\n contract: \"DesignCapabilityCatalogArtifact\" as const,\n schemaVersion: 1 as const,\n sourceRef: input.sourceRef,\n entries: input.entries,\n});\nexport const designCapabilityCatalogArtifactHash = (input: {\n sourceRef: string;\n entries: readonly DesignCapabilityCatalogEntry[];\n}): string => canonicalContentHash(designCapabilityCatalogHashSource(input));\nexport const compileDesignCapabilityCatalogArtifact = (input: {\n sourceRef: string;\n revision: number;\n entries: readonly DesignCapabilityCatalogEntry[];\n}): DesignCapabilityCatalogArtifact => {\n const entries = input.entries\n .map((entry) => ({ ...entry }))\n .sort((left, right) => left.manifest.id.localeCompare(right.manifest.id));\n entries.forEach((entry, index) => {\n const registration = entry.declarativeRegistration;\n const {\n registrationRevisionRef: _registrationRevisionRef,\n sourceContentHash: _sourceContentHash,\n ...unsignedRegistration\n } = registration;\n const registrationHash = canonicalContentHash(unsignedRegistration);\n if (\n registration.runtimeContractVersion !== entry.provider.runtimeContractVersion ||\n registration.capabilityRevisionRef.id !== entry.manifest.id ||\n registration.capabilityRevisionRef.ownerRepo !==\n entry.manifest.ownerRepo ||\n String(registration.capabilityRevisionRef.revision) !==\n String(entry.manifest.capabilityVersion) ||\n registration.capabilityRevisionRef.contentHash !==\n canonicalContentHash(entry.manifest) ||\n registration.providerRevisionRef.id !== entry.provider.providerId ||\n registration.providerRevisionRef.ownerRepo !== entry.provider.ownerRepo ||\n String(registration.providerRevisionRef.revision) !==\n String(entry.provider.providerVersion) ||\n registration.providerRevisionRef.contentHash !==\n canonicalContentHash(entry.provider) ||\n registration.sourceContentHash !== registrationHash ||\n registration.registrationRevisionRef.contentHash !== registrationHash\n ) {\n throw new DeclarativeControlCompilationError(\n \"DESIGN_CATALOG_INVALID\",\n `entries[${index}]`,\n \"Design capability manifest, provider and authoring registration are not exact.\",\n );\n }\n registration.schemaDocuments.forEach((schema, schemaIndex) => {\n if (\n schema.schemaRevisionRef.ownerRepo !== \"monkeys-design\" ||\n schema.schemaRevisionRef.visibility !== \"global\" ||\n schema.schemaRevisionRef.contentHash !==\n canonicalContentHash(schema.document)\n ) {\n throw new DeclarativeControlCompilationError(\n \"DESIGN_CATALOG_INVALID\",\n `entries[${index}].declarativeRegistration.schemaDocuments[${schemaIndex}]`,\n \"Design Schema documents require exact global monkeys-design authority.\",\n );\n }\n });\n });\n const sourceContentHash = designCapabilityCatalogArtifactHash({\n sourceRef: input.sourceRef,\n entries,\n });\n const sourceRevisionRef = RevisionRefSchema.parse({\n kind: \"design-capability-catalog\",\n id: input.sourceRef,\n ownerRepo: \"monkeys-design\",\n visibility: \"global\",\n revision: input.revision,\n schemaVersion: 1,\n contentHash: sourceContentHash,\n });\n return deepFreeze(\n DesignCapabilityCatalogArtifactSchema.parse({\n contract: \"DesignCapabilityCatalogArtifact\",\n schemaVersion: 1,\n sourceRef: input.sourceRef,\n sourceRevisionRef,\n entries,\n sourceContentHash,\n }),\n );\n};\n/** Validate immutable product-owned capability provenance from an application release. */\nexport const parseExactProductDeclarativeCapabilityRegistration = (\n input: unknown,\n): ProductDeclarativeCapabilityRegistration => {\n const entry = ProductDeclarativeCapabilityRegistrationSchema.parse(input);\n const registration = entry.declarativeRegistration;\n const {\n registrationRevisionRef: _registrationRevisionRef,\n sourceContentHash: _sourceContentHash,\n ...unsignedRegistration\n } = registration;\n if (\n registration.capabilityRevisionRef.contentHash !==\n canonicalContentHash(entry.manifest) ||\n registration.providerRevisionRef.contentHash !==\n canonicalContentHash(entry.provider) ||\n registration.sourceContentHash !==\n canonicalContentHash(unsignedRegistration) ||\n registration.registrationRevisionRef.contentHash !==\n registration.sourceContentHash\n ) {\n throw new DeclarativeControlCompilationError(\n \"PRODUCT_CAPABILITY_CATALOG_INVALID\",\n \"declarativeRegistration\",\n \"Product capability manifest, provider and authoring registration are not exact.\",\n );\n }\n registration.schemaDocuments.forEach((schema, schemaIndex) => {\n if (\n schema.schemaRevisionRef.contentHash !==\n canonicalContentHash(schema.document)\n ) {\n throw new DeclarativeControlCompilationError(\n \"PRODUCT_CAPABILITY_CATALOG_INVALID\",\n `declarativeRegistration.schemaDocuments[${schemaIndex}]`,\n \"Product capability Schema document does not match its exact RevisionRef.\",\n );\n }\n });\n return deepFreeze(entry);\n};\nexport const parseExactDesignCapabilityCatalogArtifact = (\n input: unknown,\n): DesignCapabilityCatalogArtifact => {\n const parsed = DesignCapabilityCatalogArtifactSchema.parse(input);\n const expected = compileDesignCapabilityCatalogArtifact({\n sourceRef: parsed.sourceRef,\n revision: parsed.sourceRevisionRef.revision,\n entries: parsed.entries,\n });\n if (\n parsed.sourceContentHash !== expected.sourceContentHash ||\n !sameRevisionRef(parsed.sourceRevisionRef, expected.sourceRevisionRef)\n ) {\n throw new DeclarativeControlCompilationError(\n \"DESIGN_CATALOG_INVALID\",\n \"sourceRevisionRef\",\n \"Design capability catalog artifact provenance or content hash is not exact.\",\n );\n }\n return deepFreeze(parsed);\n};\nconst deepFreeze = <T>(value: T): T => {\n if (value === null || typeof value !== \"object\" || Object.isFrozen(value))\n return value;\n Object.values(value as Record<string, unknown>).forEach((child) =>\n deepFreeze(child),\n );\n return Object.freeze(value);\n};\nconst assertTenantCompatible = (\n reference: StableRef,\n scope: TenantScope,\n path: string,\n) => {\n if (\n reference.visibility === \"tenant\" &&\n scopeKey(reference.tenantScope as TenantScope) !== scopeKey(scope)\n ) {\n throw new DeclarativeControlCompilationError(\n \"CROSS_TENANT_REFERENCE\",\n path,\n `Reference ${reference.kind}/${reference.id} belongs to another tenant scope.`,\n );\n }\n};\nconst assertSameTenantScope = (\n candidate: TenantScope,\n expected: TenantScope,\n path: string,\n) => {\n if (scopeKey(candidate) !== scopeKey(expected)) {\n throw new DeclarativeControlCompilationError(\n \"CROSS_TENANT_REFERENCE\",\n path,\n \"Record and release tenant scopes do not match.\",\n );\n }\n};\nconst stableFromRevision = (reference: RevisionRef): StableRef =>\n StableRefSchema.parse({\n kind: reference.kind,\n id: reference.id,\n ownerRepo: reference.ownerRepo,\n visibility: reference.visibility,\n ...(reference.tenantScope ? { tenantScope: reference.tenantScope } : {}),\n });\nconst assertRevisionIdentity = (\n reference: RevisionRef,\n expectedKind: string,\n expectedId: string,\n scope: TenantScope,\n path: string,\n) => {\n if (reference.kind !== expectedKind || reference.id !== expectedId) {\n throw new DeclarativeControlCompilationError(\n \"REVISION_MISMATCH\",\n path,\n `Expected ${expectedKind}/${expectedId}, received ${reference.kind}/${reference.id}.`,\n );\n }\n assertTenantCompatible(reference, scope, path);\n};\nconst dependencyKey = (\n role: ReleaseDependency[\"role\"],\n reference: RevisionRef,\n) => `${role}:${revisionRefKey(reference)}`;\nconst requireDependencies = (\n snapshot: readonly ReleaseDependency[],\n required: readonly ReleaseDependency[],\n) => {\n const available = new Set(\n snapshot.map((dependency) =>\n dependencyKey(dependency.role, dependency.revisionRef),\n ),\n );\n for (const dependency of required) {\n const key = dependencyKey(dependency.role, dependency.revisionRef);\n if (!available.has(key)) {\n throw new DeclarativeControlCompilationError(\n \"DEPENDENCY_MISSING\",\n \"dependencySnapshot\",\n `Missing exact ${dependency.role} dependency ${revisionRefKey(dependency.revisionRef)}.`,\n );\n }\n }\n};\nconst assertDependencyScopes = (\n snapshot: readonly ReleaseDependency[],\n scope: TenantScope,\n allowedForeignReferences: ReadonlySet<string> = new Set(),\n) =>\n snapshot.forEach((dependency, index) => {\n const reference = dependency.revisionRef;\n const foreign =\n reference.visibility === \"tenant\" &&\n scopeKey(reference.tenantScope as TenantScope) !== scopeKey(scope);\n if (foreign && allowedForeignReferences.has(revisionRefKey(reference)))\n return;\n assertTenantCompatible(\n reference,\n scope,\n `dependencySnapshot[${index}].revisionRef`,\n );\n });\nconst requireReleaseReady = (\n release: PageRelease | WorkbenchRelease | NavigationRelease,\n) => {\n if (release.operation === \"deactivate\") {\n throw new DeclarativeControlCompilationError(\n \"RELEASE_OPERATION_INVALID\",\n \"operation\",\n \"A deactivation Release cannot produce an active runtime bundle.\",\n );\n }\n if (release.evidence.validation.result !== \"pass\") {\n throw new DeclarativeControlCompilationError(\n \"RELEASE_VALIDATION_FAILED\",\n \"evidence.validation.result\",\n \"Runtime bundles require a passing release validation result.\",\n );\n }\n};\nconst refSet = (values: readonly StableRef[]) =>\n new Set(values.map(stableRefKey));\nconst chainRequiresAll = (\n policies: readonly AccessPolicy[],\n field: \"permissionAllOf\" | \"groupAllOf\" | \"conditionAllOf\",\n): ReadonlySet<string> => {\n if (field === \"permissionAllOf\") {\n return new Set(\n policies.flatMap((policy) => [\n ...policy.permissionAllOf,\n ...(policy.permissionAnyOf.length === 1 ? policy.permissionAnyOf : []),\n ]),\n );\n }\n if (field === \"groupAllOf\") {\n return refSet(\n policies.flatMap((policy) => [\n ...policy.groupAllOf,\n ...(policy.groupAnyOf.length === 1 ? policy.groupAnyOf : []),\n ]),\n );\n }\n return new Set(\n policies.flatMap((policy) => policy.conditionAllOf.map(revisionRefKey)),\n );\n};\nconst chainImpliesAny = (\n policies: readonly AccessPolicy[],\n targetAny: ReadonlySet<string>,\n allValues: ReadonlySet<string>,\n anyValues: (policy: AccessPolicy) => readonly string[],\n): boolean => {\n if (targetAny.size === 0) return true;\n if ([...allValues].some((value) => targetAny.has(value))) return true;\n return policies.some((policy) => {\n const values = anyValues(policy);\n return values.length > 0 && values.every((value) => targetAny.has(value));\n });\n};\nexport const accessPolicyChainImplies = (\n policyInputs: readonly AccessPolicy[],\n targetInput: AccessPolicy,\n): boolean => {\n const policies = policyInputs.map((policy) =>\n AccessPolicySchema.parse(policy),\n );\n const target = AccessPolicySchema.parse(targetInput);\n if (target.authenticated && !policies.some((policy) => policy.authenticated))\n return false;\n const permissionAll = chainRequiresAll(policies, \"permissionAllOf\");\n if (\n target.permissionAllOf.some((permission) => !permissionAll.has(permission))\n )\n return false;\n if (\n !chainImpliesAny(\n policies,\n new Set(target.permissionAnyOf),\n permissionAll,\n (policy) => policy.permissionAnyOf,\n )\n )\n return false;\n const groupAll = chainRequiresAll(policies, \"groupAllOf\");\n if (target.groupAllOf.some((group) => !groupAll.has(stableRefKey(group))))\n return false;\n if (\n !chainImpliesAny(policies, refSet(target.groupAnyOf), groupAll, (policy) =>\n policy.groupAnyOf.map(stableRefKey),\n )\n )\n return false;\n const conditionAll = chainRequiresAll(policies, \"conditionAllOf\");\n if (\n target.conditionAllOf.some(\n (condition) => !conditionAll.has(revisionRefKey(condition)),\n )\n )\n return false;\n return true;\n};\nconst normalizePath = (path: string, routeSpace: RouteSpace): string => {\n let normalized = path;\n if (!routeSpace.caseSensitive) {\n normalized = normalized\n .split(\"/\")\n .map((segment) =>\n segment.startsWith(\":\") ? segment : segment.toLowerCase(),\n )\n .join(\"/\");\n }\n if (routeSpace.trailingSlash === \"remove\" && normalized.length > 1)\n normalized = normalized.replace(/\\/+$/, \"\");\n if (\n routeSpace.trailingSlash === \"require\" &&\n normalized.length > 1 &&\n !normalized.endsWith(\"/\")\n )\n normalized += \"/\";\n return normalized;\n};\nconst acceptedTrailingSlashStates = (\n claim: Pick<CompiledRouteClaim, \"normalizedPath\" | \"matcher\">,\n): ReadonlySet<boolean> => {\n if (claim.matcher.trailingSlash === \"remove\") return new Set([false, true]);\n if (claim.matcher.trailingSlash === \"require\") return new Set([true]);\n return new Set([\n claim.normalizedPath.length > 1 && claim.normalizedPath.endsWith(\"/\"),\n ]);\n};\nconst routeSegmentParameter = (segment: string) =>\n segment.match(/^[:$]([A-Za-z][A-Za-z0-9_-]*)$/)?.[1];\nconst parameterTypeFor = (\n claim: Pick<CompiledRouteClaim, \"matcher\">,\n name: string,\n) =>\n claim.matcher.parameters.find((parameter) => parameter.name === name)?.type;\nexport const compiledRouteClaimsOverlap = (\n leftInput: CompiledRouteClaim,\n rightInput: CompiledRouteClaim,\n): boolean => {\n const left = CompiledRouteClaimSchema.parse(leftInput);\n const right = CompiledRouteClaimSchema.parse(rightInput);\n if (\n ![...acceptedTrailingSlashStates(left)].some((state) =>\n acceptedTrailingSlashStates(right).has(state),\n )\n )\n return false;\n const leftSegments = left.normalizedPath.split(\"/\").filter(Boolean);\n const rightSegments = right.normalizedPath.split(\"/\").filter(Boolean);\n if (leftSegments.length !== rightSegments.length) return false;\n return leftSegments.every((leftSegment, index) => {\n const rightSegment = rightSegments[index];\n const leftParameter = routeSegmentParameter(leftSegment);\n const rightParameter = routeSegmentParameter(rightSegment);\n if (!leftParameter && !rightParameter) {\n if (left.matcher.caseSensitive && right.matcher.caseSensitive)\n return leftSegment === rightSegment;\n return leftSegment.toLowerCase() === rightSegment.toLowerCase();\n }\n if (leftParameter && !rightParameter) {\n const type = parameterTypeFor(left, leftParameter);\n return !!type && routeParameterPattern(type).test(rightSegment);\n }\n if (!leftParameter && rightParameter) {\n const type = parameterTypeFor(right, rightParameter);\n return !!type && routeParameterPattern(type).test(leftSegment);\n }\n const leftType = parameterTypeFor(left, leftParameter!);\n const rightType = parameterTypeFor(right, rightParameter!);\n if (!leftType || !rightType) return false;\n return (\n !(leftType === \"integer\" && rightType === \"uuid\") &&\n !(leftType === \"uuid\" && rightType === \"integer\")\n );\n });\n};\nexport const compileRouteClaims = (\n input: CompileRouteClaimsInput,\n): readonly CompiledRouteClaim[] => {\n const embeddedTakeovers = input.claims.flatMap((claim) => {\n const authorization =\n \"legacyRouteTakeoverAuthorization\" in claim\n ? claim.legacyRouteTakeoverAuthorization\n : undefined;\n return authorization ? [authorization] : [];\n });\n const takeoverAuthorizations = [\n ...(input.legacyRouteTakeoverAuthorizations ?? []),\n ...embeddedTakeovers,\n ].map((authorization, index) => {\n try {\n return parseExactLegacyRouteTakeoverAuthorization(authorization);\n } catch (error) {\n if (error instanceof DeclarativeControlCompilationError) {\n throw new DeclarativeControlCompilationError(\n error.code,\n `legacyRouteTakeoverAuthorizations[${index}].${error.path}`,\n error.message,\n );\n }\n throw error;\n }\n });\n const registrations = input.routeSpaces.map((entry, index) => {\n const revisionRef = RevisionRefSchema.parse(entry.revisionRef);\n const routeSpace = RouteSpaceSchema.parse(entry.routeSpace);\n if (\n revisionRef.kind !== \"route-space\" ||\n revisionRef.id !== routeSpace.routeSpaceId\n ) {\n throw new DeclarativeControlCompilationError(\n \"ROUTE_SPACE_MISMATCH\",\n `routeSpaces[${index}]`,\n \"RouteSpace registration identity does not match its pinned revision.\",\n );\n }\n return { revisionRef, routeSpace };\n });\n assertUniqueRegistryKeys(\n registrations.map((entry) => revisionRefKey(entry.revisionRef)),\n \"routeSpaces\",\n );\n const routeSpacesByRevision = new Map(\n registrations.map((entry) => [\n revisionRefKey(entry.revisionRef),\n entry.routeSpace,\n ]),\n );\n const compiled: CompiledRouteClaim[] = [];\n input.claims.forEach((inputClaim, index) => {\n const {\n legacyRouteTakeoverAuthorization: _authorization,\n ...runtimeClaim\n } = inputClaim as DeclarativeRouteClaim;\n const legacyClaim =\n \"surface\" in runtimeClaim\n ? RouteClaimSchema.parse(runtimeClaim)\n : LegacyRouteClaimSchema.parse(runtimeClaim);\n const routeSpace = routeSpacesByRevision.get(\n revisionRefKey(legacyClaim.routeSpaceRevisionRef),\n );\n if (!routeSpace)\n throw new DeclarativeControlCompilationError(\n \"ROUTE_SPACE_MISSING\",\n `routeClaims[${index}].routeSpaceRevisionRef`,\n \"No exact RouteSpace registration exists.\",\n );\n const claim = RouteClaimSchema.parse({\n ...legacyClaim,\n surface:\n \"surface\" in legacyClaim\n ? legacyClaim.surface\n : routeSpace.supportedSurface,\n });\n if (routeSpace.supportedSurface !== claim.surface) {\n throw new DeclarativeControlCompilationError(\n \"ROUTE_SPACE_MISMATCH\",\n `routeClaims[${index}].surface`,\n `Route claim surface ${claim.surface} does not match RouteSpace ${routeSpace.routeSpaceId}.`,\n );\n }\n if (claim.surface !== input.surface) return;\n const normalizedPath = normalizePath(claim.pathTemplate, routeSpace);\n const knownParameters = new Set(\n routeSpace.parameters.map((parameter) => parameter.name),\n );\n const pathParameters = [\n ...normalizedPath.matchAll(/:([A-Za-z][A-Za-z0-9_-]*)/g),\n ].map((match) => match[1]);\n if (new Set(pathParameters).size !== pathParameters.length) {\n throw new DeclarativeControlCompilationError(\n \"ROUTE_SPACE_MISMATCH\",\n `routeClaims[${index}].pathTemplate`,\n \"Route parameters must be unique within a path.\",\n );\n }\n const unknownParameter = pathParameters.find(\n (parameter) => !knownParameters.has(parameter),\n );\n if (unknownParameter) {\n throw new DeclarativeControlCompilationError(\n \"ROUTE_SPACE_MISMATCH\",\n `routeClaims[${index}].pathTemplate`,\n `Route parameter ${unknownParameter} is not declared by ${routeSpace.routeSpaceId}.`,\n );\n }\n const matcher = {\n surface: claim.surface,\n caseSensitive: routeSpace.caseSensitive,\n trailingSlash: routeSpace.trailingSlash,\n parameters: routeSpace.parameters,\n };\n const compiledClaim = CompiledRouteClaimSchema.parse({\n ...claim,\n normalizedPath,\n matcher,\n });\n const reserved = routeSpace.reservedPaths.some((candidate) => {\n const normalizedReserved = normalizePath(candidate, routeSpace);\n const reservedClaim = CompiledRouteClaimSchema.parse({\n kind: \"canonical\",\n routeSpaceRevisionRef: claim.routeSpaceRevisionRef,\n pathTemplate: candidate,\n surface: claim.surface,\n normalizedPath: normalizedReserved,\n matcher,\n });\n return (\n compiledRouteClaimsOverlap(compiledClaim, reservedClaim) ||\n normalizedPath.startsWith(`${normalizedReserved.replace(/\\/+$/, \"\")}/`)\n );\n });\n if (reserved) {\n const takeover = takeoverAuthorizations.find(\n (authorization) =>\n compiledClaim.kind === \"canonical\" &&\n authorization.normalizedPath === compiledClaim.normalizedPath &&\n sameRevisionRef(\n authorization.routeSpaceRevisionRef,\n compiledClaim.routeSpaceRevisionRef,\n ),\n );\n if (!takeover) {\n throw new DeclarativeControlCompilationError(\n \"ROUTE_RESERVED\",\n `routeClaims[${index}].pathTemplate`,\n `Route ${normalizedPath} is reserved by ${routeSpace.routeSpaceId}.`,\n );\n }\n }\n const conflict = compiled.find(\n (candidate) =>\n sameRevisionRef(\n candidate.routeSpaceRevisionRef,\n claim.routeSpaceRevisionRef,\n ) && compiledRouteClaimsOverlap(candidate, compiledClaim),\n );\n if (conflict)\n throw new DeclarativeControlCompilationError(\n \"ROUTE_CONFLICT\",\n `routeClaims[${index}].pathTemplate`,\n `Route ${normalizedPath} overlaps another active claim pattern.`,\n );\n compiled.push(compiledClaim);\n });\n if (!compiled.some((claim) => claim.kind === \"canonical\")) {\n throw new DeclarativeControlCompilationError(\n \"ROUTE_CONFLICT\",\n \"routeClaims\",\n \"At least one canonical route claim is required.\",\n );\n }\n return Object.freeze(compiled);\n};\nexport type CompiledRouteMatch = {\n matched: boolean;\n normalizedPath?: string;\n parameters: Readonly<Record<string, string>>;\n};\n/**\n * Matches an application-relative request path using only the policy frozen into\n * a CompiledRouteClaim. Runtime consumers must not reconstruct RouteSpace policy\n * from product ids or deployment configuration.\n */\nexport const matchCompiledRouteClaim = (\n claimInput: CompiledRouteClaim,\n pathInput: string,\n): CompiledRouteMatch => {\n const claim = CompiledRouteClaimSchema.parse(claimInput);\n const rawPath = String(pathInput || \"\").trim();\n if (\n !rawPath.startsWith(\"/\") ||\n rawPath.includes(\"?\") ||\n rawPath.includes(\"#\") ||\n rawPath.includes(\"\\\\\") ||\n rawPath.includes(\"://\")\n ) {\n return { matched: false, parameters: {} };\n }\n const rawSegments = rawPath.split(\"/\");\n if (rawSegments.some((segment) => segment === \".\" || segment === \"..\"))\n return { matched: false, parameters: {} };\n const requestHasTrailingSlash = rawPath.length > 1 && rawPath.endsWith(\"/\");\n if (claim.matcher.trailingSlash === \"require\" && !requestHasTrailingSlash)\n return { matched: false, parameters: {} };\n if (\n claim.matcher.trailingSlash === \"preserve\" &&\n requestHasTrailingSlash !==\n (claim.normalizedPath.length > 1 && claim.normalizedPath.endsWith(\"/\"))\n ) {\n return { matched: false, parameters: {} };\n }\n const normalizeTrailing = (value: string) => {\n if (claim.matcher.trailingSlash === \"remove\" && value.length > 1)\n return value.replace(/\\/+$/, \"\");\n if (\n claim.matcher.trailingSlash === \"require\" &&\n value.length > 1 &&\n !value.endsWith(\"/\")\n )\n return `${value}/`;\n return value;\n };\n const requestPath = normalizeTrailing(rawPath);\n const templatePath = normalizeTrailing(claim.normalizedPath);\n const requestSegments = requestPath.split(\"/\").filter(Boolean);\n const templateSegments = templatePath.split(\"/\").filter(Boolean);\n if (requestSegments.length !== templateSegments.length)\n return { matched: false, parameters: {} };\n const parameterDefinitions = new Map(\n claim.matcher.parameters.map((parameter) => [parameter.name, parameter]),\n );\n const parameters: Record<string, string> = {};\n const normalizedSegments: string[] = [];\n for (let index = 0; index < templateSegments.length; index += 1) {\n const template = templateSegments[index];\n const rawValue = requestSegments[index];\n const match = template.match(/^[:$]([A-Za-z][A-Za-z0-9_-]*)$/);\n if (!match) {\n if (\n (claim.matcher.caseSensitive ? template : template.toLowerCase()) !==\n (claim.matcher.caseSensitive ? rawValue : rawValue.toLowerCase())\n ) {\n return { matched: false, parameters: {} };\n }\n normalizedSegments.push(template);\n continue;\n }\n const definition = parameterDefinitions.get(match[1]);\n let value: string;\n try {\n value = decodeURIComponent(rawValue);\n } catch {\n return { matched: false, parameters: {} };\n }\n if (!definition || !routeParameterPattern(definition.type).test(value))\n return { matched: false, parameters: {} };\n parameters[definition.name] = value;\n normalizedSegments.push(rawValue);\n }\n const canonicalPath = normalizeTrailing(\n `/${normalizedSegments.join(\"/\")}` || \"/\",\n );\n return {\n matched: true,\n normalizedPath: canonicalPath,\n parameters: Object.freeze(parameters),\n };\n};\nfunction routeParameterPattern(\n type: RouteSpace[\"parameters\"][number][\"type\"],\n): RegExp {\n if (type === \"integer\") return /^-?\\d+$/;\n if (type === \"uuid\")\n return /^[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;\n if (type === \"slug\") return /^[A-Za-z0-9]+(?:[._-][A-Za-z0-9]+)*$/;\n return /^[A-Za-z0-9][A-Za-z0-9._-]*$/;\n}\n/**\n * Materializes the browser URL owned by a RouteSpace from an application-relative\n * compiled route. Declarations and runtime resolution remain application-relative;\n * only this boundary applies product bases such as /:teamId or /kernel.\n */\nexport const materializeRouteSpacePath = (\n input: MaterializeRouteSpacePathInput,\n): string => {\n const routeSpace = RouteSpaceSchema.parse(input.routeSpace);\n const applicationPath = RoutePathTemplateSchema.parse(input.applicationPath);\n const basePath =\n routeSpace.basePath === \"/\" ? \"\" : routeSpace.basePath.replace(/\\/+$/, \"\");\n let browserTemplate = normalizePath(\n `${basePath}${applicationPath === \"/\" ? \"/\" : applicationPath}` || \"/\",\n routeSpace,\n );\n const parameters = input.parameters || {};\n const declared = new Map(\n routeSpace.parameters.map((parameter) => [parameter.name, parameter]),\n );\n const referenced = [\n ...browserTemplate.matchAll(/:([A-Za-z][A-Za-z0-9_-]*)/g),\n ].map((match) => match[1]);\n for (const name of referenced) {\n const definition = declared.get(name);\n const raw = parameters[name];\n if (\n !definition ||\n raw === undefined ||\n raw === null ||\n String(raw).trim() === \"\"\n ) {\n throw new DeclarativeControlCompilationError(\n \"ROUTE_SPACE_MISMATCH\",\n \"parameters\",\n `Route parameter ${name} is not resolved by ${routeSpace.routeSpaceId}.`,\n );\n }\n const value = String(raw);\n if (!routeParameterPattern(definition.type).test(value)) {\n throw new DeclarativeControlCompilationError(\n \"ROUTE_SPACE_MISMATCH\",\n `parameters.${name}`,\n `Route parameter ${name} does not satisfy ${definition.type}.`,\n );\n }\n browserTemplate = browserTemplate.replace(\n `:${name}`,\n encodeURIComponent(value),\n );\n }\n const unknown = Object.keys(parameters).find((name) => !declared.has(name));\n if (unknown)\n throw new DeclarativeControlCompilationError(\n \"ROUTE_SPACE_MISMATCH\",\n `parameters.${unknown}`,\n `RouteSpace ${routeSpace.routeSpaceId} does not declare ${unknown}.`,\n );\n return browserTemplate;\n};\nconst renderTreeDepth = (tree: RenderTree): number => {\n const byId = new Map(tree.nodes.map((node) => [node.nodeId, node]));\n let maximum = 0;\n tree.nodes.forEach((node) => {\n let depth = 1;\n let parentId = node.parentNodeId;\n const ancestors = new Set([node.nodeId]);\n while (parentId) {\n if (ancestors.has(parentId)) {\n throw new DeclarativeControlCompilationError(\n \"RENDER_TREE_INVALID\",\n \"page.renderTree.nodes\",\n `RenderTree contains a parent cycle at ${parentId}.`,\n );\n }\n ancestors.add(parentId);\n depth += 1;\n parentId = byId.get(parentId)?.parentNodeId;\n }\n maximum = Math.max(maximum, depth);\n });\n return maximum;\n};\nconst compareLegacyEntityRef = (\n reference: {\n kind: string;\n id: string;\n version?: number | string;\n ownerRepo?: string;\n },\n revision: RevisionRef,\n) =>\n reference.kind === revision.kind &&\n reference.id === revision.id &&\n String(reference.version) === String(revision.revision) &&\n reference.ownerRepo === revision.ownerRepo;\nconst pageDependencies = (\n page: ResolvedPage,\n compilerRevisionRef: RevisionRef,\n): ReleaseDependency[] => [\n ...page.routeClaims.map((claim) => ({\n role: \"route-space\" as const,\n revisionRef: claim.routeSpaceRevisionRef,\n })),\n { role: \"shell\", revisionRef: page.shellRevisionRef },\n ...page.capabilityInstances.flatMap((instance) => [\n {\n role: \"capability\" as const,\n revisionRef: instance.capabilityRevisionRef,\n },\n { role: \"provider\" as const, revisionRef: instance.providerRevisionRef },\n ...(instance.eventEffects ?? []).map((effect) => ({\n role: \"schema\" as const,\n revisionRef: effect.sourceIntentSchemaRevisionRef,\n })),\n {\n role: \"schema\" as const,\n revisionRef: instance.propertySchemaRevisionRef,\n },\n ]),\n ...(page.stateDefinitions ?? []).map((state) => ({\n role: \"schema\" as const,\n revisionRef: state.schemaRevisionRef,\n })),\n ...(page.interactionBindings ?? []).map((binding) => ({\n role: \"schema\" as const,\n revisionRef: binding.sourceIntentSchemaRevisionRef,\n })),\n ...page.ontologyBindings.flatMap((binding) => [\n {\n role: \"ontology-definition\" as const,\n revisionRef: binding.ontologyDefinitionRevisionRef,\n },\n ...(binding.viewRevisionRef\n ? [{ role: \"view\" as const, revisionRef: binding.viewRevisionRef }]\n : []),\n ...(\"projectionRevisionRef\" in binding && binding.projectionRevisionRef\n ? [\n {\n role: \"projection-spec\" as const,\n revisionRef: binding.projectionRevisionRef,\n },\n ]\n : []),\n ...(binding.canonicalDataViewRevisionRef\n ? [\n {\n role: \"view\" as const,\n revisionRef: binding.canonicalDataViewRevisionRef,\n },\n ]\n : []),\n {\n role: \"schema\" as const,\n revisionRef: binding.renderModelSchemaRevisionRef,\n },\n ...(binding.cursorWindow\n ? [\n {\n role: \"schema\" as const,\n revisionRef: binding.cursorWindow.pageChangeIntentSchemaRevisionRef,\n },\n ]\n : []),\n ]),\n ...(page.queryBindings ?? []).flatMap((binding) => [\n {\n role: \"query-definition\" as const,\n revisionRef: binding.queryDefinitionRevisionRef,\n },\n {\n role: \"schema\" as const,\n revisionRef: binding.renderModelSchemaRevisionRef,\n },\n ...(binding.targetProjection\n ? [\n {\n role: \"schema\" as const,\n revisionRef: binding.targetProjection.schemaRevisionRef,\n },\n ]\n : []),\n ...(binding.streamTargetProjection\n ? [\n {\n role: \"schema\" as const,\n revisionRef: binding.streamTargetProjection.schemaRevisionRef,\n },\n ]\n : []),\n ...(binding.cursorWindow\n ? [\n {\n role: \"schema\" as const,\n revisionRef: binding.cursorWindow.pageChangeIntentSchemaRevisionRef,\n },\n ]\n : []),\n ]),\n ...(page.programBindings ?? []).flatMap((binding) => [\n {\n role: \"action-program\" as const,\n revisionRef: binding.programRevisionRef,\n },\n {\n role: \"schema\" as const,\n revisionRef: binding.sourceIntentSchemaRevisionRef,\n },\n ...programDependencies(binding.definition),\n ]),\n ...page.actionBindings.flatMap((binding) => [\n { role: \"action\" as const, revisionRef: binding.commandRevisionRef },\n {\n role: \"schema\" as const,\n revisionRef: binding.sourceIntentSchemaRevisionRef,\n },\n { role: \"schema\" as const, revisionRef: binding.inputSchemaRevisionRef },\n { role: \"schema\" as const, revisionRef: binding.resultSchemaRevisionRef },\n ...(binding.compensationCommandRevisionRef\n ? [\n {\n role: \"action\" as const,\n revisionRef: binding.compensationCommandRevisionRef,\n },\n ]\n : []),\n ]),\n ...page.tokenRevisionRefs.map((revisionRef) => ({\n role: \"token\" as const,\n revisionRef,\n })),\n { role: \"performance-budget\", revisionRef: page.performanceBudgetRef },\n {\n role: \"observation-policy\",\n revisionRef: page.observationPolicyRevisionRef,\n },\n { role: \"compiler\", revisionRef: compilerRevisionRef },\n];\nconst domainQueryDependencies = (\n definition: DomainQueryDefinition,\n): ReleaseDependency[] => [\n ...(definition.ontologyDefinitionRevisionRef\n ? [\n {\n role: \"ontology-definition\" as const,\n revisionRef: definition.ontologyDefinitionRevisionRef,\n },\n ]\n : []),\n ...(definition.viewRevisionRef\n ? [{ role: \"view\" as const, revisionRef: definition.viewRevisionRef }]\n : []),\n ...(definition.canonicalDataViewRevisionRef\n ? [\n {\n role: \"view\" as const,\n revisionRef: definition.canonicalDataViewRevisionRef,\n },\n ]\n : []),\n { role: \"schema\", revisionRef: definition.inputSchemaRevisionRef },\n { role: \"schema\", revisionRef: definition.resultSchemaRevisionRef },\n];\nconst singleByStableIdentity = <T extends { revisionRef: RevisionRef }>(\n registrations: readonly T[],\n kind: string,\n id: string,\n path: string,\n): T => {\n const matches = registrations.filter(\n ({ revisionRef }) => revisionRef.kind === kind && revisionRef.id === id,\n );\n if (matches.length !== 1) {\n throw new DeclarativeControlCompilationError(\n \"DEPENDENCY_MISSING\",\n path,\n `Expected exactly one active ${kind} registration for ${id}; found ${matches.length}.`,\n );\n }\n return matches[0]!;\n};\nconst usesResultValue = (\n mapping: Readonly<Record<string, { kind: string; expression?: unknown }>>,\n): boolean =>\n Object.values(mapping).some(\n (source) =>\n source.kind === \"result-field\" ||\n (source.kind === \"expression\" &&\n source.expression !== undefined &&\n collectPageExpressionReads(\n source.expression as Parameters<typeof collectPageExpressionReads>[0],\n ).some((read) => read.root === \"result\")),\n );\nconst simpleEntityRef = (revisionRef: RevisionRef) => ({\n kind: revisionRef.kind,\n id: revisionRef.id,\n version: revisionRef.revision,\n ownerRepo: revisionRef.ownerRepo,\n});\nconst defaultRenderSurface = {\n frameOwner: \"host\" as const,\n density: \"default\" as const,\n};\nconst defaultRenderScroll = {\n owner: \"surface\" as const,\n axis: \"none\" as const,\n virtualizationBoundary: false,\n};\nconst defaultRenderLifecycle = {\n mountPolicy: \"always\" as const,\n queryPolicy: \"always\" as const,\n retainOnDeactivate: false,\n deepLink: false,\n focusReturn: false,\n};\n\nexport const resolvePage = (input: ResolvePageInput): ResolvedPage => {\n const page = PageSchema.parse(input.page);\n const defaults = {\n routeSpace: RevisionRefSchema.parse(input.defaults.routeSpace),\n shell: RevisionRefSchema.parse(input.defaults.shell),\n tokens: input.defaults.tokens.map((reference) =>\n RevisionRefSchema.parse(reference),\n ),\n performanceBudget: RevisionRefSchema.parse(\n input.defaults.performanceBudget,\n ),\n observationPolicy: RevisionRefSchema.parse(\n input.defaults.observationPolicy,\n ),\n };\n const resourceRegistrations = (input.productResources ?? []).map(\n (registration) => ({\n revisionRef: RevisionRefSchema.parse(registration.resourceRevisionRef),\n registration:\n DeclarativeProductResourceRegistrationSchema.parse(registration),\n }),\n );\n const resolveResource = (\n kind: DeclarativeProductResourceRegistration[\"resourceKind\"],\n id: string | undefined,\n fallback: RevisionRef,\n path: string,\n ): RevisionRef => {\n const targetId = id ?? fallback.id;\n if (resourceRegistrations.length === 0) {\n if (targetId !== fallback.id || fallback.kind !== kind) {\n throw new DeclarativeControlCompilationError(\n \"DEPENDENCY_MISSING\",\n path,\n `No ${kind} registry was supplied for ${targetId}.`,\n );\n }\n return fallback;\n }\n return singleByStableIdentity(resourceRegistrations, kind, targetId, path)\n .revisionRef;\n };\n const routeSpaceId = page.routeSpace ?? defaults.routeSpace.id;\n const routeRegistrations = (input.routeSpaces ?? []).map((registration) => ({\n revisionRef: RevisionRefSchema.parse(registration.revisionRef),\n routeSpace: registration.routeSpace,\n }));\n const routeSpaceRevisionRef =\n routeRegistrations.length === 0\n ? (() => {\n if (routeSpaceId !== defaults.routeSpace.id) {\n throw new DeclarativeControlCompilationError(\n \"ROUTE_SPACE_MISSING\",\n \"page.routeSpace\",\n `No RouteSpace registry was supplied for ${routeSpaceId}.`,\n );\n }\n return defaults.routeSpace;\n })()\n : singleByStableIdentity(\n routeRegistrations,\n \"route-space\",\n routeSpaceId,\n \"page.routeSpace\",\n ).revisionRef;\n const shellRevisionRef = resolveResource(\n \"shell\",\n page.shell,\n defaults.shell,\n \"page.shell\",\n );\n const tokenRevisionRefs = page.tokens?.map((id, index) =>\n resolveResource(\n \"design-token\",\n id,\n defaults.tokens[0]!,\n `page.tokens[${index}]`,\n ),\n ) ?? [...defaults.tokens];\n const performanceBudgetRef = resolveResource(\n \"performance-budget\",\n page.performanceBudget,\n defaults.performanceBudget,\n \"page.performanceBudget\",\n );\n const observationPolicyRevisionRef = resolveResource(\n \"observation-policy\",\n page.observationPolicy,\n defaults.observationPolicy,\n \"page.observationPolicy\",\n );\n const capabilityRegistrations = input.capabilityRegistry.map(\n (registration) => ({\n ...registration,\n revisionRef: RevisionRefSchema.parse(registration.capabilityRevisionRef),\n providerRevisionRef: RevisionRefSchema.parse(\n registration.providerRevisionRef,\n ),\n propertySchemaRevisionRef: RevisionRefSchema.parse(\n registration.propertySchemaRevisionRef,\n ),\n inputPorts: registration.inputPorts.map((port) => ({\n ...port,\n schemaRevisionRef: RevisionRefSchema.parse(port.schemaRevisionRef),\n })),\n outputPorts: registration.outputPorts.map((port) => ({\n ...port,\n schemaRevisionRef: RevisionRefSchema.parse(port.schemaRevisionRef),\n })),\n }),\n );\n const queryRegistrations = (input.domainQueryRegistry ?? []).map(\n (registration) => ({\n revisionRef: RevisionRefSchema.parse(registration.definitionRevisionRef),\n definition: DomainQueryDefinitionSchema.parse(registration.definition),\n }),\n );\n const commandRegistrations = (input.domainCommandRegistry ?? []).map(\n (registration) => ({\n revisionRef: RevisionRefSchema.parse(registration.definitionRevisionRef),\n definition: registration.definition,\n }),\n );\n const schemaRegistrations = (input.schemaRegistry ?? []).map(\n (registration) => ({\n revisionRef: RevisionRefSchema.parse(registration.definitionRevisionRef),\n definition: registration.definition,\n }),\n );\n const stateSchemaById = new Map(\n schemaRegistrations.map((registration) => [\n registration.definition.schemaId,\n registration.revisionRef,\n ]),\n );\n const stateDefinitions = (page.state ?? []).map(\n ({ schema, ...state }, index) => {\n const schemaRevisionRef = stateSchemaById.get(schema);\n if (!schemaRevisionRef) {\n throw new DeclarativeControlCompilationError(\n \"SCHEMA_DEFINITION_MISMATCH\",\n `page.state[${index}].schema`,\n `No active Schema registration exists for ${schema}.`,\n );\n }\n return { ...state, schemaRevisionRef };\n },\n );\n const stateSchemasByStateId = new Map(\n stateDefinitions.map((definition) => [\n definition.stateId,\n definition.schemaRevisionRef,\n ]),\n );\n const renderNodes: RenderNode[] = [];\n const capabilityInstances: ResolvedPage[\"capabilityInstances\"] = [];\n const queryBindings: NonNullable<ResolvedPage[\"queryBindings\"]> = [];\n const actionBindings: ResolvedPage[\"actionBindings\"] = [];\n const programBindings: NonNullable<ResolvedPage[\"programBindings\"]> = [];\n const interactionBindings: NonNullable<ResolvedPage[\"interactionBindings\"]> =\n [];\n const nodesById = new Map<string, Page[\"body\"]>();\n const indexNode = (node: Page[\"body\"]): void => {\n nodesById.set(node.id, node);\n node.children?.forEach(indexNode);\n };\n indexNode(page.body);\n const visitNode = (node: Page[\"body\"], parentNodeId?: string): void => {\n const registration = singleByStableIdentity(\n capabilityRegistrations,\n \"capability\",\n node.component,\n `page.body.${node.id}.component`,\n );\n const children = node.children ?? [];\n const defaultActivation = {\n activationId: node.id,\n mode: \"inline\" as const,\n };\n renderNodes.push({\n contract: \"RenderNode\",\n nodeId: node.id,\n kind: node.kind ?? \"view\",\n version: 1,\n ownerRepo: registration.providerRevisionRef.ownerRepo,\n ...(parentNodeId ? { parentNodeId } : {}),\n children: children.map((child) => child.id),\n ...(node.slot ? { slot: node.slot } : {}),\n pageRef: {\n kind: \"page\",\n id: page.pageId,\n version: 1,\n ownerRepo: input.pageOwnerRepo,\n },\n ...(registration.runtimeContractVersion ? { runtimeContractVersion: registration.runtimeContractVersion } : {}),\n capabilityRef: simpleEntityRef(registration.revisionRef),\n providerRef: simpleEntityRef(registration.providerRevisionRef),\n surface: node.surface ?? defaultRenderSurface,\n scroll: node.scroll ?? defaultRenderScroll,\n activation: node.activation ?? defaultActivation,\n lifecycle: node.lifecycle ?? defaultRenderLifecycle,\n layout: node.layout ?? { mode: \"contents\" },\n ...(node.style ? { style: node.style } : {}),\n responsive: node.responsive ?? [],\n state: node.state ?? \"idle\",\n renderModel: node.model ?? {},\n ...(node.repeat\n ? { repeat: { ...node.repeat, limit: node.repeat.limit ?? 200 } }\n : {}),\n });\n capabilityInstances.push({\n ...(registration.runtimeContractVersion ? { runtimeContractVersion: registration.runtimeContractVersion } : {}),\n instanceId: node.id,\n nodeId: node.id,\n capabilityRevisionRef: registration.revisionRef,\n providerRevisionRef: registration.providerRevisionRef,\n propertySchemaRevisionRef: registration.propertySchemaRevisionRef,\n properties: node.props ?? {},\n ...(node.bindings ? { propertyBindings: node.bindings } : {}),\n ...(node.eventPayloads\n ? { eventPayloadBindings: node.eventPayloads }\n : {}),\n ...(node.effects\n ? {\n eventEffects: node.effects.map((effect, index) => {\n const port = registration.outputPorts.find(\n (candidate) => candidate.name === effect.port,\n );\n if (!port) {\n throw new DeclarativeControlCompilationError(\n \"PORT_TYPE_MISMATCH\",\n `page.body.${node.id}.effects[${index}].port`,\n `No output port ${effect.port} exists on ${node.component}.`,\n );\n }\n return {\n sourcePort: effect.port,\n sourceIntentSchemaRevisionRef: port.schemaRevisionRef,\n refreshBindingIds: effect.refresh,\n };\n }),\n }\n : {}),\n ...(node.access ? { accessPolicy: node.access } : {}),\n ...(node.activeWhen ? { activationWhen: node.activeWhen } : {}),\n allowedSideEffects: [...registration.allowedSideEffects],\n });\n for (const [index, binding] of (node.data ?? []).entries()) {\n const queryRegistration = singleByStableIdentity(\n queryRegistrations,\n \"domain-query-definition\",\n binding.query,\n `page.body.${node.id}.data[${index}].query`,\n );\n const port = registration.inputPorts.find(\n (candidate) => candidate.name === binding.port,\n );\n if (!port) {\n throw new DeclarativeControlCompilationError(\n \"PORT_TYPE_MISMATCH\",\n `page.body.${node.id}.data[${index}].port`,\n `No input port ${binding.port} exists on ${node.component}.`,\n );\n }\n const {\n query,\n port: _port,\n targetProjection,\n streamTargetProjection,\n cursorWindow,\n resultStateBindings,\n ...rest\n } = binding;\n queryBindings.push({\n ...rest,\n queryDefinitionRevisionRef: queryRegistration.revisionRef,\n target: { capabilityInstanceId: node.id, port: binding.port },\n renderModelSchemaRevisionRef:\n queryRegistration.definition.resultSchemaRevisionRef,\n ...(targetProjection\n ? {\n targetProjection: {\n ...targetProjection,\n schemaRevisionRef: port.schemaRevisionRef,\n },\n }\n : {}),\n ...(streamTargetProjection\n ? {\n streamTargetProjection: {\n ...streamTargetProjection,\n schemaRevisionRef: port.schemaRevisionRef,\n },\n }\n : {}),\n ...(cursorWindow\n ? {\n cursorWindow: {\n ...cursorWindow,\n pageChangeIntentSchemaRevisionRef: (() => {\n const sourceInstanceId =\n cursorWindow.sourceCapabilityInstanceId ?? node.id;\n const sourceNode = nodesById.get(sourceInstanceId);\n const sourceCapability = sourceNode\n ? singleByStableIdentity(\n capabilityRegistrations,\n \"capability\",\n sourceNode.component,\n `page.body.${sourceNode.id}.component`,\n )\n : undefined;\n const sourcePort = sourceCapability?.outputPorts.find(\n (candidate) =>\n candidate.name === cursorWindow.pageChangePort,\n );\n if (!sourcePort) {\n throw new DeclarativeControlCompilationError(\n \"PORT_TYPE_MISMATCH\",\n `page.body.${node.id}.data[${index}].cursorWindow.pageChangePort`,\n `No output port ${cursorWindow.pageChangePort} exists on the cursor source component.`,\n );\n }\n return sourcePort.schemaRevisionRef;\n })(),\n },\n }\n : {}),\n ...(resultStateBindings\n ? {\n resultStateBindings: resultStateBindings.map(\n (stateBinding, stateIndex) => {\n const targetStateSchemaRevisionRef =\n stateSchemasByStateId.get(stateBinding.targetStateId);\n if (!targetStateSchemaRevisionRef) {\n throw new DeclarativeControlCompilationError(\n \"SCHEMA_DEFINITION_MISMATCH\",\n `page.body.${node.id}.data[${index}].resultStateBindings[${stateIndex}].targetStateId`,\n `Unknown Page state ${stateBinding.targetStateId}.`,\n );\n }\n return { ...stateBinding, targetStateSchemaRevisionRef };\n },\n ),\n }\n : {}),\n });\n }\n for (const [index, binding] of (node.actions ?? []).entries()) {\n const commandRegistration = singleByStableIdentity(\n commandRegistrations,\n \"domain-command\",\n binding.command,\n `page.body.${node.id}.actions[${index}].command`,\n );\n const port = registration.outputPorts.find(\n (candidate) => candidate.name === binding.port,\n );\n if (!port) {\n throw new DeclarativeControlCompilationError(\n \"PORT_TYPE_MISMATCH\",\n `page.body.${node.id}.actions[${index}].port`,\n `No output port ${binding.port} exists on ${node.component}.`,\n );\n }\n const inputSchemaRevisionRef = stateSchemaById.get(\n commandRegistration.definition.inputSchemaRef,\n );\n const resultSchemaRevisionRef = commandRegistration.definition\n .outputSchemaRef\n ? stateSchemaById.get(commandRegistration.definition.outputSchemaRef)\n : undefined;\n if (!inputSchemaRevisionRef || !resultSchemaRevisionRef) {\n throw new DeclarativeControlCompilationError(\n \"COMMAND_DEFINITION_MISMATCH\",\n `page.body.${node.id}.actions[${index}].command`,\n `Command ${binding.command} must resolve active input and output Schemas.`,\n );\n }\n const compensationCommandRevisionRef = binding.compensationCommand\n ? singleByStableIdentity(\n commandRegistrations,\n \"domain-command\",\n binding.compensationCommand,\n `page.body.${node.id}.actions[${index}].compensationCommand`,\n ).revisionRef\n : undefined;\n const { command, port: _port, compensationCommand, ...rest } = binding;\n actionBindings.push({\n ...rest,\n commandRevisionRef: commandRegistration.revisionRef,\n source: { capabilityInstanceId: node.id, port: binding.port },\n sourceIntentSchemaRevisionRef: port.schemaRevisionRef,\n inputSchemaRevisionRef,\n ...(compensationCommandRevisionRef\n ? { compensationCommandRevisionRef }\n : {}),\n resultSchemaRevisionRef,\n });\n }\n for (const [index, binding] of (node.programActions ?? []).entries()) {\n const path = `page.body.${node.id}.programActions[${index}]`;\n const matches = (input.programRegistry ?? []).filter(\n (entry) => entry.definition.programId === binding.program,\n );\n if (matches.length !== 1)\n throw new DeclarativeControlCompilationError(\n \"DEPENDENCY_MISSING\",\n path,\n \"Expected one exact program registration.\",\n );\n const program = matches[0]!;\n const definition = ActionProgramDefinitionSchema.parse(\n program.definition,\n );\n assertProgramRegistration(program, page.tenantScope, page.surface, path);\n const port = registration.outputPorts.find(\n (candidate) => candidate.name === binding.port,\n );\n if (!port)\n throw new DeclarativeControlCompilationError(\n \"PORT_TYPE_MISMATCH\",\n path,\n \"Program source port is not registered.\",\n );\n if (\n (node.actions ?? []).some((action) => action.port === binding.port) ||\n programBindings.some(\n (action) =>\n action.source.capabilityInstanceId === node.id &&\n action.source.port === binding.port,\n )\n )\n throw new DeclarativeControlCompilationError(\n \"CAPABILITY_BINDING_MISMATCH\",\n path,\n \"A program output port must have one exclusive action binding.\",\n );\n for (const dep of definition.dependencies) {\n const registrations =\n dep.kind === \"query\" ? queryRegistrations : commandRegistrations;\n const actual = registrations.find((entry) =>\n sameRevisionRef(entry.revisionRef, dep.revisionRef),\n );\n if (\n !actual ||\n canonicalContentHash(actual.definition) !==\n dep.revisionRef.contentHash ||\n (\"sensitiveInputPaths\" in actual.definition &&\n !!actual.definition.sensitiveInputPaths?.length) ||\n (\"sensitiveResultPaths\" in actual.definition &&\n !!actual.definition.sensitiveResultPaths?.length) ||\n (\"queryId\" in actual.definition\n ? !sameRevisionRef(\n actual.definition.inputSchemaRevisionRef,\n dep.inputSchemaRevisionRef,\n ) ||\n !sameRevisionRef(\n actual.definition.resultSchemaRevisionRef,\n dep.resultSchemaRevisionRef,\n )\n : actual.definition.inputSchemaRef !==\n dep.inputSchemaRevisionRef.id ||\n actual.definition.outputSchemaRef !==\n dep.resultSchemaRevisionRef.id)\n )\n throw new DeclarativeControlCompilationError(\n \"DEPENDENCY_MISSING\",\n path,\n \"Program capability/schema revision is not registered.\",\n );\n }\n for (const ref of programDependencies(definition)\n .filter((dep) => dep.role === \"schema\")\n .map((dep) => dep.revisionRef)) {\n if (\n !schemaRegistrations.some((entry) =>\n sameRevisionRef(entry.revisionRef, ref),\n )\n )\n throw new DeclarativeControlCompilationError(\n \"SCHEMA_DEFINITION_MISMATCH\",\n path,\n \"Program requires an exact registered Schema.\",\n );\n }\n const { program: _program, port: _port, ...rest } = binding;\n programBindings.push({\n ...rest,\n source: { capabilityInstanceId: node.id, port: binding.port },\n sourceIntentSchemaRevisionRef: port.schemaRevisionRef,\n programRevisionRef: program.definitionRevisionRef,\n definition,\n });\n }\n for (const [index, binding] of (node.on ?? []).entries()) {\n const port = registration.outputPorts.find(\n (candidate) => candidate.name === binding.port,\n );\n if (!port) {\n throw new DeclarativeControlCompilationError(\n \"PORT_TYPE_MISMATCH\",\n `page.body.${node.id}.on[${index}].port`,\n `No output port ${binding.port} exists on ${node.component}.`,\n );\n }\n const matchingAction = actionBindings.find(\n (action) =>\n action.source.capabilityInstanceId === node.id &&\n action.source.port === binding.port,\n );\n const { port: _port, ...rest } = binding;\n interactionBindings.push({\n ...rest,\n source: { capabilityInstanceId: node.id, port: binding.port },\n sourceIntentSchemaRevisionRef: port.schemaRevisionRef,\n ...(usesResultValue(binding.inputMapping)\n ? (() => {\n if (!matchingAction) {\n throw new DeclarativeControlCompilationError(\n \"COMMAND_DEFINITION_MISMATCH\",\n `page.body.${node.id}.on[${index}].inputMapping`,\n \"A result-driven interaction requires an Action on the same output port.\",\n );\n }\n return {\n sourceResultSchemaRevisionRef:\n matchingAction.resultSchemaRevisionRef,\n };\n })()\n : {}),\n });\n }\n children.forEach((child) => visitNode(child, node.id));\n };\n visitNode(page.body);\n const resolved = {\n contract: \"Page\" as const,\n schemaVersion: 1 as const,\n pageId: page.pageId,\n tenantScope: page.tenantScope,\n identity: page.identity,\n supportedSurfaces: [page.surface],\n lifecycle: page.lifecycle,\n ...(page.routeStatePresentations\n ? { routeStatePresentations: page.routeStatePresentations }\n : {}),\n routeClaims: [\n {\n kind: \"canonical\" as const,\n surface: page.surface,\n routeSpaceRevisionRef,\n pathTemplate: page.route,\n },\n ],\n shellRevisionRef,\n renderTree: {\n contract: \"RenderTree\" as const,\n treeId: page.pageId,\n product: page.surface,\n rootNodeId: page.body.id,\n nodes: renderNodes,\n },\n capabilityInstances,\n ...(stateDefinitions.length ? { stateDefinitions } : {}),\n ...(page.sharedStateBindings ? { sharedStateBindings: page.sharedStateBindings } : {}),\n ...(page.entryTransitions\n ? {\n entryTransitions: page.entryTransitions.map(\n ({ target, ...transition }, index) => {\n const matches = (input.targetRegistry ?? []).filter(\n (registration) =>\n registration.stableTargetRef.kind === target.kind &&\n registration.stableTargetRef.id === target.id,\n );\n if (matches.length !== 1) {\n throw new DeclarativeControlCompilationError(\n \"PAGE_ENTRY_TARGET_UNRELEASED\",\n `page.entryTransitions[${index}].target`,\n `Expected one active ${target.kind} target for ${target.id}; found ${matches.length}.`,\n );\n }\n return { ...transition, targetRef: matches[0]!.stableTargetRef };\n },\n ),\n }\n : {}),\n ...(interactionBindings.length ? { interactionBindings } : {}),\n ontologyBindings: [],\n ...(queryBindings.length ? { queryBindings } : {}),\n actionBindings,\n ...(programBindings.length ? { programBindings } : {}),\n pageAccessPolicy: page.access,\n managementAccess: page.managementAccess,\n tokenRevisionRefs,\n performanceBudgetRef,\n observationPolicyRevisionRef,\n privacyClassification: page.privacyClassification,\n };\n return ResolvedPageSchema.parse(resolved);\n};\nexport type LegacyCompilePageRuntimeBundleInput = Omit<\n CompilePageRuntimeBundleInput,\n \"capabilityRegistry\" | \"shellRegistration\"\n> & {\n capabilityRegistry: readonly (Omit<\n DeclarativeCapabilityRegistration,\n \"propertySchemaRevisionRef\" | \"accessPolicy\"\n > &\n Partial<\n Pick<\n DeclarativeCapabilityRegistration,\n \"propertySchemaRevisionRef\" | \"accessPolicy\"\n >\n >)[];\n};\n\n/** Explicit compatibility boundary for previously persisted resolved Page documents. */\nexport const compileLegacyPageRuntimeBundle = (\n input: LegacyCompilePageRuntimeBundleInput,\n): LegacyPageRuntimeBundle =>\n deepFreeze(\n LegacyPageRuntimeBundleSchema.parse(\n compilePageRuntimeBundleInternal(input, true),\n ),\n );\n\nexport const compilePageRuntimeBundle = (\n input: CompilePageRuntimeBundleInput,\n): PageRuntimeBundle =>\n deepFreeze(\n PageRuntimeBundleSchema.parse(\n compilePageRuntimeBundleInternal(input, false),\n ),\n );\n\nconst compilePageRuntimeBundleInternal = (\n input: LegacyCompilePageRuntimeBundleInput & {\n shellRegistration?: DeclarativeProductResourceRegistration;\n },\n legacy: boolean,\n): unknown => {\n const parsedPage = ResolvedPageSchema.parse(input.page);\n parsedPage.ontologyBindings.forEach((binding) =>\n (legacy ? LegacyOntologyBindingSchema : OntologyBindingSchema).parse(\n binding,\n ),\n );\n if (\n legacy &&\n (parsedPage.queryBindings?.length || input.domainQueryRegistry?.length)\n ) {\n throw new DeclarativeControlCompilationError(\n \"QUERY_DEFINITION_MISMATCH\",\n \"queryBindings\",\n \"Domain queries require the current compiler and its governed registries.\",\n );\n }\n const page = {\n ...parsedPage,\n routeStatePresentations: parsedPage.routeStatePresentations ?? [],\n stateDefinitions: parsedPage.stateDefinitions ?? [],\n entryTransitions: parsedPage.entryTransitions ?? [],\n interactionBindings: parsedPage.interactionBindings ?? [],\n queryBindings: parsedPage.queryBindings ?? [],\n };\n const pageRevisionRef = RevisionRefSchema.parse(input.pageRevisionRef);\n const release = PageReleaseSchema.parse(input.release);\n const releaseRevisionRef = RevisionRefSchema.parse(input.releaseRevisionRef);\n const compilerRevisionRef = RevisionRefSchema.parse(\n input.compilerRevisionRef,\n );\n const scope = TenantScopeSchema.parse(page.tenantScope);\n assertSameTenantScope(release.tenantScope, scope, \"release.tenantScope\");\n assertRevisionIdentity(\n pageRevisionRef,\n \"page\",\n page.pageId,\n scope,\n \"pageRevisionRef\",\n );\n assertRevisionIdentity(\n release.pageRevisionRef,\n \"page\",\n page.pageId,\n scope,\n \"release.pageRevisionRef\",\n );\n if (!sameRevisionRef(pageRevisionRef, release.pageRevisionRef))\n throw new DeclarativeControlCompilationError(\n \"REVISION_MISMATCH\",\n \"release.pageRevisionRef\",\n \"Release does not pin the supplied Page revision.\",\n );\n assertRevisionIdentity(\n releaseRevisionRef,\n \"page-release\",\n release.releaseSlotId,\n scope,\n \"releaseRevisionRef\",\n );\n requireReleaseReady(release);\n requireDependencies(\n release.dependencySnapshot,\n pageDependencies(page, compilerRevisionRef),\n );\n const verifiedSharedPageReferences = (input.verifiedSharedPageReferences ?? []).map((value, index) => {\n const reference = RevisionRefSchema.parse(value);\n const target = (input.targetRegistry ?? []).find((candidate) =>\n page.entryTransitions.some((entry) => sameStableRef(entry.targetRef, candidate.stableTargetRef)) &&\n [candidate.targetRevisionRef, candidate.releaseRevisionRef].some((ref) => ref && sameRevisionRef(ref, reference)),\n );\n if (\n release.target.surface !== \"studio\" || reference.visibility !== \"tenant\" ||\n reference.ownerRepo !== \"monkeys-server\" || ![\"page\", \"page-release\"].includes(reference.kind) ||\n reference.tenantScope?.tenantRef.id !== \"0\" || reference.tenantScope?.teamRef?.id !== \"0\" ||\n !target || target.surface !== \"studio\" || target.targetRevisionRef.kind !== \"page\" ||\n scopeKey(target.targetRevisionRef.tenantScope as TenantScope) !== scopeKey(reference.tenantScope) ||\n (target.releaseRevisionRef && (target.releaseRevisionRef.kind !== \"page-release\" ||\n !target.releaseRevisionRef.tenantScope ||\n scopeKey(target.releaseRevisionRef.tenantScope) !== scopeKey(reference.tenantScope)))\n ) throw new DeclarativeControlCompilationError(\n \"CROSS_TENANT_REFERENCE\", `verifiedSharedPageReferences[${index}]`,\n \"Shared Studio Page references must pin an authenticated catalog route target in the shared scope.\",\n );\n return revisionRefKey(reference);\n });\n assertDependencyScopes(release.dependencySnapshot, scope, new Set(verifiedSharedPageReferences));\n const queryRegistrations = (input.domainQueryRegistry ?? []).map(\n (registration, index) => {\n const definitionRevisionRef = RevisionRefSchema.parse(\n registration.definitionRevisionRef,\n );\n const definition = DomainQueryDefinitionSchema.parse(\n registration.definition,\n );\n assertSameTenantScope(\n definition.tenantScope,\n scope,\n `domainQueryRegistry[${index}].definition.tenantScope`,\n );\n assertRevisionIdentity(\n definitionRevisionRef,\n \"domain-query-definition\",\n definition.queryId,\n scope,\n `domainQueryRegistry[${index}].definitionRevisionRef`,\n );\n if (\n definitionRevisionRef.contentHash !== canonicalContentHash(definition)\n ) {\n throw new DeclarativeControlCompilationError(\n \"QUERY_DEFINITION_MISMATCH\",\n `domainQueryRegistry[${index}].definitionRevisionRef.contentHash`,\n \"Domain Query registry entry does not match its exact definition content hash.\",\n );\n }\n return { definitionRevisionRef, definition };\n },\n );\n assertUniqueRegistryKeys(\n queryRegistrations.map((registration) =>\n revisionRefKey(registration.definitionRevisionRef),\n ),\n \"domainQueryRegistry\",\n );\n const queryDefinitionsByRevision = new Map(\n queryRegistrations.map((registration) => [\n revisionRefKey(registration.definitionRevisionRef),\n registration.definition,\n ]),\n );\n page.queryBindings.forEach((binding, index) => {\n const definition = queryDefinitionsByRevision.get(\n revisionRefKey(binding.queryDefinitionRevisionRef),\n );\n if (!definition) {\n throw new DeclarativeControlCompilationError(\n \"QUERY_DEFINITION_MISMATCH\",\n `queryBindings[${index}].queryDefinitionRevisionRef`,\n \"Query binding does not resolve to one exact governed Domain Query definition.\",\n );\n }\n if (\n !sameRevisionRef(\n definition.resultSchemaRevisionRef,\n binding.renderModelSchemaRevisionRef,\n )\n ) {\n throw new DeclarativeControlCompilationError(\n \"QUERY_DEFINITION_MISMATCH\",\n `queryBindings[${index}].renderModelSchemaRevisionRef`,\n \"Query binding render model does not match the exact Domain Query result schema.\",\n );\n }\n if (\n !accessPolicyChainImplies(\n [page.pageAccessPolicy],\n definition.accessPolicy,\n ) &&\n binding.accessFailure !== \"render-forbidden\"\n ) {\n throw new DeclarativeControlCompilationError(\n \"AUDIENCE_WIDER_THAN_TARGET\",\n `queryBindings[${index}]`,\n \"Page access is wider than the governed Domain Query audience.\",\n );\n }\n const sourceKind = definition.dataSource?.kind ?? \"exact-view\";\n if (binding.execution === \"local-state\" && sourceKind !== \"page-state\") {\n throw new DeclarativeControlCompilationError(\n \"QUERY_DEFINITION_MISMATCH\",\n `queryBindings[${index}].execution`,\n \"A local-state binding must resolve to one page-state Domain Query definition.\",\n );\n }\n if (binding.execution === \"server\" && sourceKind === \"page-state\") {\n throw new DeclarativeControlCompilationError(\n \"QUERY_DEFINITION_MISMATCH\",\n `queryBindings[${index}].execution`,\n \"A page-state Domain Query cannot execute on the Server.\",\n );\n }\n requireDependencies(\n release.dependencySnapshot,\n domainQueryDependencies(definition),\n );\n });\n const shellDescriptor = legacy\n ? undefined\n : (() => {\n const shellRegistration =\n DeclarativeProductResourceRegistrationSchema.parse(\n input.shellRegistration,\n );\n if (\n shellRegistration.resourceKind !== \"shell\" ||\n !sameRevisionRef(\n shellRegistration.resourceRevisionRef,\n page.shellRevisionRef,\n ) ||\n declarativeProductResourceRevisionHash(shellRegistration) !==\n shellRegistration.resourceRevisionRef.contentHash ||\n declarativeProductResourceSourceHash(shellRegistration.document) !==\n shellRegistration.sourceContentHash\n ) {\n throw new DeclarativeControlCompilationError(\n \"SHELL_REVISION_MISMATCH\",\n \"shellRegistration\",\n \"The active Shell registration does not match the Page exact Shell revision.\",\n );\n }\n if (\n !shellRegistration.supportedSurfaces.includes(release.target.surface)\n ) {\n throw new DeclarativeControlCompilationError(\n \"SHELL_SURFACE_MISMATCH\",\n \"shellRegistration.supportedSurfaces\",\n \"The active Shell registration does not support the release surface.\",\n );\n }\n const shellDocument = DeclarativeShellResourceDocumentSchema.parse(\n shellRegistration.document,\n );\n const shellChrome = shellDocument.surfaceChrome.find(\n (entry) => entry.surface === release.target.surface,\n );\n if (!shellChrome) {\n throw new DeclarativeControlCompilationError(\n \"SHELL_CHROME_UNAVAILABLE\",\n \"shellRegistration.document.surfaceChrome\",\n \"The active Shell does not declare chrome for the release surface.\",\n );\n }\n return {\n shellRevisionRef: page.shellRevisionRef,\n header: shellChrome.header,\n };\n })();\n if (page.renderTree.nodes.length > input.limits.maxRenderNodes)\n throw new DeclarativeControlCompilationError(\n \"RENDER_NODE_LIMIT_EXCEEDED\",\n \"page.renderTree.nodes\",\n \"RenderTree exceeds the caller-approved node limit.\",\n );\n if (renderTreeDepth(page.renderTree) > input.limits.maxRenderDepth)\n throw new DeclarativeControlCompilationError(\n \"RENDER_DEPTH_EXCEEDED\",\n \"page.renderTree.nodes\",\n \"RenderTree exceeds the caller-approved depth limit.\",\n );\n const renderTree = compileRenderTree(page.renderTree).tree;\n const instancesByNode = new Map(\n page.capabilityInstances.map((instance) => [instance.nodeId, instance]),\n );\n const registrations = input.capabilityRegistry.map(\n (registration, registrationIndex) => ({\n ...registration,\n capabilityRevisionRef: RevisionRefSchema.parse(\n registration.capabilityRevisionRef,\n ),\n providerRevisionRef: RevisionRefSchema.parse(\n registration.providerRevisionRef,\n ),\n inputPorts: registration.inputPorts.map((port, portIndex) => {\n const schemaRevisionRef = RevisionRefSchema.parse(\n port.schemaRevisionRef,\n );\n if (schemaRevisionRef.kind !== \"schema\") {\n throw new DeclarativeControlCompilationError(\n \"PORT_TYPE_MISMATCH\",\n `capabilityRegistry[${registrationIndex}].inputPorts[${portIndex}].schemaRevisionRef`,\n \"Capability ports must pin schema revisions.\",\n );\n }\n return { ...port, schemaRevisionRef };\n }),\n outputPorts: registration.outputPorts.map((port, portIndex) => {\n const schemaRevisionRef = RevisionRefSchema.parse(\n port.schemaRevisionRef,\n );\n if (schemaRevisionRef.kind !== \"schema\") {\n throw new DeclarativeControlCompilationError(\n \"PORT_TYPE_MISMATCH\",\n `capabilityRegistry[${registrationIndex}].outputPorts[${portIndex}].schemaRevisionRef`,\n \"Capability ports must pin schema revisions.\",\n );\n }\n return { ...port, schemaRevisionRef };\n }),\n }),\n );\n assertUniqueRegistryKeys(\n registrations.map(\n (registration) =>\n `${revisionRefKey(registration.capabilityRevisionRef)}:${revisionRefKey(registration.providerRevisionRef)}`,\n ),\n \"capabilityRegistry\",\n );\n const registrationsByPair = new Map(\n registrations.map((registration) => [\n `${revisionRefKey(registration.capabilityRevisionRef)}:${revisionRefKey(registration.providerRevisionRef)}`,\n registration,\n ]),\n );\n page.capabilityInstances.forEach((instance, index) => {\n const node = renderTree.nodes.find(\n (candidate) => candidate.nodeId === instance.nodeId,\n );\n if (\n !node ||\n !compareLegacyEntityRef(\n node.capabilityRef,\n instance.capabilityRevisionRef,\n ) ||\n !node.providerRef ||\n !compareLegacyEntityRef(node.providerRef, instance.providerRevisionRef) ||\n node.pageRef.id !== page.pageId\n ) {\n throw new DeclarativeControlCompilationError(\n \"CAPABILITY_BINDING_MISMATCH\",\n `capabilityInstances[${index}]`,\n \"RenderTree node identity does not match the declared capability/provider instance.\",\n );\n }\n const registration = registrationsByPair.get(\n `${revisionRefKey(instance.capabilityRevisionRef)}:${revisionRefKey(instance.providerRevisionRef)}`,\n );\n if (!registration) {\n throw new DeclarativeControlCompilationError(\n \"CAPABILITY_BINDING_MISMATCH\",\n `capabilityInstances[${index}]`,\n \"Capability/provider pair has no exact governed Design registration.\",\n );\n }\n if (instance.runtimeContractVersion !== registration.runtimeContractVersion || node.runtimeContractVersion !== instance.runtimeContractVersion) {\n throw new DeclarativeControlCompilationError(\"CAPABILITY_BINDING_MISMATCH\", `capabilityInstances[${index}].runtimeContractVersion`, \"Runtime contract must be issued by the exact governed registration.\");\n }\n if (\n instance.allowedSideEffects.some(\n (sideEffect) => !registration.allowedSideEffects.includes(sideEffect),\n )\n ) {\n throw new DeclarativeControlCompilationError(\n \"CAPABILITY_BINDING_MISMATCH\",\n `capabilityInstances[${index}].allowedSideEffects`,\n \"Page requests undeclared provider side effects.\",\n );\n }\n if (\n !legacy &&\n (!registration.propertySchemaRevisionRef ||\n !sameRevisionRef(\n instance.propertySchemaRevisionRef,\n registration.propertySchemaRevisionRef,\n ))\n ) {\n throw new DeclarativeControlCompilationError(\n \"CAPABILITY_BINDING_MISMATCH\",\n `capabilityInstances[${index}].propertySchemaRevisionRef`,\n \"Capability properties do not pin the exact schema registered by the active Design catalog.\",\n );\n }\n if (\n !legacy &&\n (!registration.accessPolicy ||\n !accessPolicyChainImplies(\n [\n page.pageAccessPolicy,\n ...(instance.accessPolicy ? [instance.accessPolicy] : []),\n ],\n registration.accessPolicy,\n ))\n ) {\n throw new DeclarativeControlCompilationError(\n \"AUDIENCE_WIDER_THAN_TARGET\",\n `capabilityInstances[${index}]`,\n \"Page access is wider than the governed capability audience.\",\n );\n }\n });\n if (instancesByNode.size !== page.capabilityInstances.length) {\n throw new DeclarativeControlCompilationError(\n \"CAPABILITY_BINDING_MISMATCH\",\n \"capabilityInstances\",\n \"Each executable RenderTree node must be governed by at most one capability instance.\",\n );\n }\n renderTree.nodes.forEach((node, index) => {\n if (!node.providerRef) return;\n if (!instancesByNode.has(node.nodeId)) {\n throw new DeclarativeControlCompilationError(\n \"CAPABILITY_BINDING_MISMATCH\",\n `renderTree.nodes[${index}]`,\n \"Every provider-backed RenderTree node must be governed by one capability instance.\",\n );\n }\n });\n page.ontologyBindings.forEach((binding, index) => {\n const instance = page.capabilityInstances.find(\n (candidate) =>\n candidate.instanceId === binding.target.capabilityInstanceId,\n );\n const registration =\n instance &&\n registrationsByPair.get(\n `${revisionRefKey(instance.capabilityRevisionRef)}:${revisionRefKey(instance.providerRevisionRef)}`,\n );\n const port = registration?.inputPorts.find(\n (candidate) => candidate.name === binding.target.port,\n );\n if (\n !port ||\n !sameSchemaContract(\n port.schemaRevisionRef,\n binding.renderModelSchemaRevisionRef,\n )\n ) {\n throw new DeclarativeControlCompilationError(\n \"PORT_TYPE_MISMATCH\",\n `ontologyBindings[${index}].target.port`,\n \"Ontology render model does not match the registered capability input port.\",\n );\n }\n if (binding.cursorWindow) {\n const sourceInstance = page.capabilityInstances.find(\n (candidate) =>\n candidate.instanceId ===\n (binding.cursorWindow!.sourceCapabilityInstanceId ??\n binding.target.capabilityInstanceId),\n );\n const sourceRegistration =\n sourceInstance &&\n registrationsByPair.get(\n `${revisionRefKey(sourceInstance.capabilityRevisionRef)}:${revisionRefKey(sourceInstance.providerRevisionRef)}`,\n );\n const pageChangePort = sourceRegistration?.outputPorts.find(\n (candidate) => candidate.name === binding.cursorWindow!.pageChangePort,\n );\n if (\n !pageChangePort ||\n !sameSchemaContract(\n pageChangePort.schemaRevisionRef,\n binding.cursorWindow.pageChangeIntentSchemaRevisionRef,\n )\n ) {\n throw new DeclarativeControlCompilationError(\n \"PORT_TYPE_MISMATCH\",\n `ontologyBindings[${index}].cursorWindow.pageChangePort`,\n \"Cursor-window page-change intent does not match the registered capability output port.\",\n );\n }\n }\n });\n page.queryBindings.forEach((binding, index) => {\n const instance = page.capabilityInstances.find(\n (candidate) =>\n candidate.instanceId === binding.target.capabilityInstanceId,\n );\n const registration =\n instance &&\n registrationsByPair.get(\n `${revisionRefKey(instance.capabilityRevisionRef)}:${revisionRefKey(instance.providerRevisionRef)}`,\n );\n const port = registration?.inputPorts.find(\n (candidate) => candidate.name === binding.target.port,\n );\n if (\n !port ||\n !sameSchemaContract(\n port.schemaRevisionRef,\n binding.targetProjection?.schemaRevisionRef ??\n binding.renderModelSchemaRevisionRef,\n )\n ) {\n throw new DeclarativeControlCompilationError(\n \"PORT_TYPE_MISMATCH\",\n `queryBindings[${index}].target.port`,\n \"Domain Query render model does not match the registered capability input port.\",\n );\n }\n if (\n binding.streamTargetProjection &&\n (!port ||\n !sameRevisionRef(\n port.schemaRevisionRef,\n binding.streamTargetProjection.schemaRevisionRef,\n ))\n ) {\n throw new DeclarativeControlCompilationError(\n \"PORT_TYPE_MISMATCH\",\n `queryBindings[${index}].streamTargetProjection`,\n \"Stream render model does not match the registered capability input port.\",\n );\n }\n if (binding.cursorWindow) {\n const sourceInstance = page.capabilityInstances.find(\n (candidate) =>\n candidate.instanceId ===\n (binding.cursorWindow!.sourceCapabilityInstanceId ??\n binding.target.capabilityInstanceId),\n );\n const sourceRegistration =\n sourceInstance &&\n registrationsByPair.get(\n `${revisionRefKey(sourceInstance.capabilityRevisionRef)}:${revisionRefKey(sourceInstance.providerRevisionRef)}`,\n );\n const pageChangePort = sourceRegistration?.outputPorts.find(\n (candidate) => candidate.name === binding.cursorWindow!.pageChangePort,\n );\n if (\n !pageChangePort ||\n !sameSchemaContract(\n pageChangePort.schemaRevisionRef,\n binding.cursorWindow.pageChangeIntentSchemaRevisionRef,\n )\n ) {\n throw new DeclarativeControlCompilationError(\n \"PORT_TYPE_MISMATCH\",\n `queryBindings[${index}].cursorWindow.pageChangePort`,\n \"Cursor-window page-change intent does not match the registered capability output port.\",\n );\n }\n }\n });\n page.capabilityInstances.forEach((instance, index) => {\n const registration = registrationsByPair.get(\n `${revisionRefKey(instance.capabilityRevisionRef)}:${revisionRefKey(instance.providerRevisionRef)}`,\n );\n instance.eventPayloadBindings?.forEach((binding, bindingIndex) => {\n if (!registration?.outputPorts.some((port) => port.name === binding.port))\n throw new DeclarativeControlCompilationError(\n \"PORT_TYPE_MISMATCH\",\n `capabilityInstances[${index}].eventPayloadBindings[${bindingIndex}]`,\n \"Event payload projection must reference a registered output port.\",\n );\n });\n instance.eventEffects?.forEach((effect, effectIndex) => {\n const port = registration?.outputPorts.find(\n (candidate) => candidate.name === effect.sourcePort,\n );\n if (\n !port ||\n !sameRevisionRef(\n port.schemaRevisionRef,\n effect.sourceIntentSchemaRevisionRef,\n )\n )\n throw new DeclarativeControlCompilationError(\n \"PORT_TYPE_MISMATCH\",\n `capabilityInstances[${index}].eventEffects[${effectIndex}]`,\n \"Event effect source must match an exact registered output port schema.\",\n );\n });\n });\n page.interactionBindings.forEach((binding, index) => {\n const instance = page.capabilityInstances.find(\n (candidate) =>\n candidate.instanceId === binding.source.capabilityInstanceId,\n );\n const registration =\n instance &&\n registrationsByPair.get(\n `${revisionRefKey(instance.capabilityRevisionRef)}:${revisionRefKey(instance.providerRevisionRef)}`,\n );\n const port = registration?.outputPorts.find(\n (candidate) => candidate.name === binding.source.port,\n );\n if (\n !port ||\n !sameSchemaContract(\n port.schemaRevisionRef,\n binding.sourceIntentSchemaRevisionRef,\n )\n ) {\n throw new DeclarativeControlCompilationError(\n \"PORT_TYPE_MISMATCH\",\n `interactionBindings[${index}].sourceIntentSchemaRevisionRef`,\n \"Interaction source intent does not match the registered capability output port.\",\n );\n }\n });\n (page.programBindings ?? []).forEach((binding, index) => {\n const path = `programBindings[${index}]`;\n const registration = (input.programRegistry ?? []).find((entry) =>\n sameRevisionRef(entry.definitionRevisionRef, binding.programRevisionRef),\n );\n if (\n !registration ||\n canonicalContentHash(registration.definition) !==\n canonicalContentHash(binding.definition)\n )\n throw new DeclarativeControlCompilationError(\n \"DEPENDENCY_MISSING\",\n path,\n \"Exact program registration does not match binding.\",\n );\n assertProgramRegistration(\n registration,\n page.tenantScope,\n release.target.surface,\n path,\n );\n });\n [...page.actionBindings, ...(page.programBindings ?? [])].forEach(\n (binding, index) => {\n const instance = page.capabilityInstances.find(\n (candidate) =>\n candidate.instanceId === binding.source.capabilityInstanceId,\n );\n const registration =\n instance &&\n registrationsByPair.get(\n `${revisionRefKey(instance.capabilityRevisionRef)}:${revisionRefKey(instance.providerRevisionRef)}`,\n );\n const port = registration?.outputPorts.find(\n (candidate) => candidate.name === binding.source.port,\n );\n if (\n !port ||\n !sameSchemaContract(\n port.schemaRevisionRef,\n binding.sourceIntentSchemaRevisionRef,\n )\n ) {\n throw new DeclarativeControlCompilationError(\n \"PORT_TYPE_MISMATCH\",\n `actionBindings[${index}].sourceIntentSchemaRevisionRef`,\n \"Action source intent does not match the registered capability output port.\",\n );\n }\n },\n );\n const routeClaims = compileRouteClaims({\n claims: page.routeClaims,\n routeSpaces: input.routeSpaces,\n surface: release.target.surface,\n legacyRouteTakeoverAuthorizations: release.target\n .legacyRouteTakeoverAuthorization\n ? [release.target.legacyRouteTakeoverAuthorization]\n : [],\n });\n const releaseRoute = routeClaims.find(\n (claim) =>\n claim.kind === \"canonical\" &&\n claim.normalizedPath === release.target.normalizedPath,\n );\n if (\n !releaseRoute ||\n !sameRevisionRef(\n releaseRoute.routeSpaceRevisionRef,\n release.target.routeSpaceRevisionRef,\n )\n ) {\n throw new DeclarativeControlCompilationError(\n \"ROUTE_SPACE_MISMATCH\",\n \"release.target\",\n \"Release target does not match an exact Page route claim.\",\n );\n }\n if (!page.supportedSurfaces.includes(release.target.surface)) {\n throw new DeclarativeControlCompilationError(\n \"ROUTE_SPACE_MISMATCH\",\n \"release.target.surface\",\n \"Page does not support the release surface.\",\n );\n }\n const routeTargets = (input.targetRegistry ?? []).map(\n (registration, index) => ({\n ...registration,\n stableTargetRef: StableRefSchema.parse(registration.stableTargetRef),\n targetRevisionRef: RevisionRefSchema.parse(\n registration.targetRevisionRef,\n ),\n ...(registration.releaseRevisionRef\n ? {\n releaseRevisionRef: RevisionRefSchema.parse(\n registration.releaseRevisionRef,\n ),\n }\n : {}),\n accessPolicy: AccessPolicySchema.parse(registration.accessPolicy),\n routeClaim: CompiledRouteClaimSchema.parse(registration.routeClaim),\n sourceIndex: index,\n }),\n );\n assertUniqueRegistryKeys(\n routeTargets.map((registration) =>\n stableRefKey(registration.stableTargetRef),\n ),\n \"targetRegistry\",\n );\n const entryTransitions = page.entryTransitions.map((transition, index) => {\n const matches = routeTargets.filter(\n (registration) =>\n registration.kind === \"route\" &&\n sameStableRef(registration.stableTargetRef, transition.targetRef) &&\n registration.surface === release.target.surface,\n );\n if (matches.length !== 1) {\n throw new DeclarativeControlCompilationError(\n \"PAGE_ENTRY_TARGET_UNRELEASED\",\n `entryTransitions[${index}].targetRef`,\n \"Entry transition target must resolve to one exact active route registration on the same surface.\",\n );\n }\n const target = matches[0]!;\n if (\n target.releaseRevisionRef &&\n ![\"page-release\", \"workbench-release\"].includes(\n target.releaseRevisionRef.kind,\n )\n ) {\n throw new DeclarativeControlCompilationError(\n \"PAGE_ENTRY_TARGET_UNRELEASED\",\n `entryTransitions[${index}].targetRef`,\n \"Entry transition Release provenance must identify a Page or Workbench Release.\",\n );\n }\n if (target.routeClaim.kind !== \"canonical\") {\n throw new DeclarativeControlCompilationError(\n \"PAGE_ENTRY_TARGET_UNRELEASED\",\n `entryTransitions[${index}].targetRef`,\n \"Entry transition targets must expose one canonical route claim.\",\n );\n }\n if (!sameStableRef(target.stableTargetRef, target.targetRevisionRef)) {\n throw new DeclarativeControlCompilationError(\n \"PAGE_ENTRY_TARGET_UNRELEASED\",\n `targetRegistry[${target.sourceIndex}]`,\n \"Entry transition target registration identity is not exact.\",\n );\n }\n // Entry transitions may narrow into a separately protected route. The target\n // route remains authoritative and re-evaluates its own access policy after\n // navigation, so a source Page must not inherit the target's permissions.\n const requiredPathParameters = [\n ...target.routeClaim.normalizedPath.matchAll(\n /:([A-Za-z][A-Za-z0-9_-]*)/g,\n ),\n ].map((match) => match[1]!);\n const mappedPathParameters = Object.keys(transition.pathParameters);\n const missing = requiredPathParameters.find(\n (name) => !mappedPathParameters.includes(name),\n );\n const unknown = mappedPathParameters.find(\n (name) => !requiredPathParameters.includes(name),\n );\n if (missing || unknown) {\n throw new DeclarativeControlCompilationError(\n \"ROUTE_SPACE_MISMATCH\",\n `entryTransitions[${index}].pathParameters`,\n missing\n ? `Entry transition does not resolve target route parameter ${missing}.`\n : `Entry transition maps unknown target route parameter ${unknown}.`,\n );\n }\n requireDependencies(release.dependencySnapshot, [\n {\n role: target.targetRevisionRef.kind as \"page\" | \"workbench\",\n revisionRef: target.targetRevisionRef,\n },\n ...(target.releaseRevisionRef\n ? [\n {\n role: target.releaseRevisionRef.kind as\n | \"page-release\"\n | \"workbench-release\",\n revisionRef: target.releaseRevisionRef,\n },\n ]\n : []),\n ]);\n return {\n ...transition,\n browsingContext: transition.browsingContext ?? \"same\",\n targetRevisionRef: target.targetRevisionRef,\n ...(target.releaseRevisionRef\n ? { targetReleaseRevisionRef: target.releaseRevisionRef }\n : {}),\n targetAccessPolicy: target.accessPolicy,\n targetRouteClaim: target.routeClaim,\n };\n });\n const unsigned = {\n contract: \"PageRuntimeBundle\" as const,\n schemaVersion: 1 as const,\n tenantScope: scope,\n releaseRevisionRef,\n compilerRevisionRef,\n generation: input.generation,\n dependencySnapshot: release.dependencySnapshot,\n rebuildable: true as const,\n diagnostics: [],\n pageId: page.pageId,\n pageRevisionRef,\n surface: release.target.surface,\n routeClaims,\n routeStatePresentations: page.routeStatePresentations.filter(\n (presentation) => presentation.surface === release.target.surface,\n ),\n shellRevisionRef: page.shellRevisionRef,\n ...(shellDescriptor ? { shellDescriptor } : {}),\n renderTree,\n capabilityInstances: page.capabilityInstances,\n deniedCapabilityInstanceIds: [],\n stateDefinitions: page.stateDefinitions,\n ...(page.sharedStateBindings ? { sharedStateBindings: page.sharedStateBindings } : {}),\n entryTransitions,\n interactionBindings: page.interactionBindings,\n ontologyBindings: page.ontologyBindings,\n queryBindings: page.queryBindings,\n actionBindings: page.actionBindings,\n ...(page.programBindings?.length\n ? { programBindings: page.programBindings }\n : {}),\n pageAccessPolicy: page.pageAccessPolicy,\n tokenRevisionRefs: page.tokenRevisionRefs,\n performanceBudgetRef: page.performanceBudgetRef,\n observationPolicyRevisionRef: page.observationPolicyRevisionRef,\n privacyClassification: page.privacyClassification,\n };\n return { ...unsigned, contentHash: canonicalContentHash(unsigned) };\n};\nconst workbenchDependencyRole = (kind: string): ReleaseDependency[\"role\"] => {\n switch (kind) {\n case \"workflow\":\n return \"workflow\";\n case \"agent\":\n return \"agent\";\n case \"capability\":\n return \"capability\";\n case \"design\":\n return \"design\";\n case \"built-in-application\":\n return \"built-in-application\";\n default:\n return \"workflow\";\n }\n};\nconst workbenchDependencies = (\n workbench: Workbench,\n compilerRevisionRef: RevisionRef,\n): ReleaseDependency[] => [\n ...workbench.routeClaims.map((claim) => ({\n role: \"route-space\" as const,\n revisionRef: claim.routeSpaceRevisionRef,\n })),\n ...workbench.appInstances.flatMap((instance) => [\n {\n role: workbenchDependencyRole(instance.targetRevisionRef.kind),\n revisionRef: instance.targetRevisionRef,\n },\n { role: \"provider\" as const, revisionRef: instance.providerRevisionRef },\n { role: \"schema\" as const, revisionRef: instance.inputSchemaRevisionRef },\n ]),\n {\n role: \"capability\",\n revisionRef: workbench.layout.hostCapabilityRevisionRef,\n },\n { role: \"provider\", revisionRef: workbench.layout.hostProviderRevisionRef },\n {\n role: \"layout-policy\",\n revisionRef: workbench.layout.layoutPolicyRevisionRef,\n },\n ...workbench.layout.tokenRevisionRefs.map((revisionRef) => ({\n role: \"token\" as const,\n revisionRef,\n })),\n { role: \"performance-budget\", revisionRef: workbench.performanceBudgetRef },\n {\n role: \"observation-policy\",\n revisionRef: workbench.observationPolicyRevisionRef,\n },\n { role: \"compiler\", revisionRef: compilerRevisionRef },\n];\nexport const compileWorkbenchRuntimeBundle = (\n input: CompileWorkbenchRuntimeBundleInput,\n): WorkbenchRuntimeBundle => {\n const workbench = WorkbenchSchema.parse(input.workbench);\n const workbenchRevisionRef = RevisionRefSchema.parse(\n input.workbenchRevisionRef,\n );\n const release = WorkbenchReleaseSchema.parse(input.release);\n const releaseRevisionRef = RevisionRefSchema.parse(input.releaseRevisionRef);\n const compilerRevisionRef = RevisionRefSchema.parse(\n input.compilerRevisionRef,\n );\n const scope = TenantScopeSchema.parse(workbench.tenantScope);\n assertSameTenantScope(release.tenantScope, scope, \"release.tenantScope\");\n if (workbench.purpose === \"template\")\n throw new DeclarativeControlCompilationError(\n \"WORKBENCH_TEMPLATE_UNRELEASABLE\",\n \"workbench.purpose\",\n \"Workbench templates cannot be activated.\",\n );\n if (\n workbench.groups.length > input.limits.maxWorkbenchGroups ||\n workbench.appInstances.length > input.limits.maxWorkbenchInstances\n ) {\n throw new DeclarativeControlCompilationError(\n \"WORKBENCH_INSTANCE_LIMIT_EXCEEDED\",\n \"workbench\",\n \"Workbench exceeds caller-approved compilation limits.\",\n );\n }\n assertRevisionIdentity(\n workbenchRevisionRef,\n \"workbench\",\n workbench.workbenchId,\n scope,\n \"workbenchRevisionRef\",\n );\n assertRevisionIdentity(\n release.workbenchRevisionRef,\n \"workbench\",\n workbench.workbenchId,\n scope,\n \"release.workbenchRevisionRef\",\n );\n if (!sameRevisionRef(workbenchRevisionRef, release.workbenchRevisionRef))\n throw new DeclarativeControlCompilationError(\n \"REVISION_MISMATCH\",\n \"release.workbenchRevisionRef\",\n \"Release does not pin the supplied Workbench revision.\",\n );\n assertRevisionIdentity(\n releaseRevisionRef,\n \"workbench-release\",\n release.releaseSlotId,\n scope,\n \"releaseRevisionRef\",\n );\n if (release.target.workbenchId !== workbench.workbenchId)\n throw new DeclarativeControlCompilationError(\n \"REVISION_MISMATCH\",\n \"release.target.workbenchId\",\n \"Release target does not match Workbench identity.\",\n );\n requireReleaseReady(release);\n requireDependencies(\n release.dependencySnapshot,\n workbenchDependencies(workbench, compilerRevisionRef),\n );\n assertDependencyScopes(release.dependencySnapshot, scope);\n const routeClaims = compileRouteClaims({\n claims: workbench.routeClaims,\n routeSpaces: input.routeSpaces,\n surface: release.target.surface,\n legacyRouteTakeoverAuthorizations: release.target\n .legacyRouteTakeoverAuthorization\n ? [release.target.legacyRouteTakeoverAuthorization]\n : [],\n });\n const releaseRoute = routeClaims.find(\n (claim) =>\n claim.kind === \"canonical\" &&\n claim.normalizedPath === release.target.normalizedPath,\n );\n if (\n !releaseRoute ||\n !sameRevisionRef(\n releaseRoute.routeSpaceRevisionRef,\n release.target.routeSpaceRevisionRef,\n )\n ) {\n throw new DeclarativeControlCompilationError(\n \"ROUTE_SPACE_MISMATCH\",\n \"release.target\",\n \"Release target does not match an exact Workbench route claim.\",\n );\n }\n const targetRegistry = input.targetRegistry.map((registration) => ({\n stableTargetRef: StableRefSchema.parse(registration.stableTargetRef),\n targetRevisionRef: RevisionRefSchema.parse(registration.targetRevisionRef),\n accessPolicy: AccessPolicySchema.parse(registration.accessPolicy),\n }));\n assertUniqueRegistryKeys(\n targetRegistry.map((registration) =>\n stableRefKey(registration.stableTargetRef),\n ),\n \"targetRegistry\",\n );\n const targetsByStableRef = new Map(\n targetRegistry.map((registration) => [\n stableRefKey(registration.stableTargetRef),\n registration,\n ]),\n );\n const groupsById = new Map(\n workbench.groups.map((group) => [group.groupId, group]),\n );\n const contractFor = (capabilityRef: RevisionRef, providerRef: RevisionRef, declared?: string) => {\n const registration = input.capabilityRegistry?.find(candidate => sameRevisionRef(candidate.capabilityRevisionRef, capabilityRef) && sameRevisionRef(candidate.providerRevisionRef, providerRef));\n if (declared !== undefined && declared !== registration?.runtimeContractVersion) {\n throw new DeclarativeControlCompilationError(\"CAPABILITY_BINDING_MISMATCH\", \"workbench.runtimeContractVersion\", \"Runtime contract must be issued by the exact governed registration.\");\n }\n return registration?.runtimeContractVersion;\n };\n const layoutContract = contractFor(workbench.layout.hostCapabilityRevisionRef, workbench.layout.hostProviderRevisionRef, workbench.layout.runtimeContractVersion);\n const appInstances = workbench.appInstances.map((instance, index) => {\n const stableTarget = StableRefSchema.parse({\n kind: instance.targetRevisionRef.kind,\n id: instance.targetRevisionRef.id,\n ownerRepo: instance.targetRevisionRef.ownerRepo,\n visibility: instance.targetRevisionRef.visibility,\n ...(instance.targetRevisionRef.tenantScope\n ? { tenantScope: instance.targetRevisionRef.tenantScope }\n : {}),\n });\n const registration = targetsByStableRef.get(stableRefKey(stableTarget));\n if (\n !registration ||\n !sameStableRef(\n registration.stableTargetRef,\n stableFromRevision(registration.targetRevisionRef),\n ) ||\n !sameRevisionRef(\n registration.targetRevisionRef,\n instance.targetRevisionRef,\n )\n ) {\n throw new DeclarativeControlCompilationError(\n \"NAV_TARGET_UNRELEASED\",\n `appInstances[${index}].targetRevisionRef`,\n \"Workbench app target is not present at the exact registered revision.\",\n );\n }\n assertTenantCompatible(\n instance.targetRevisionRef,\n scope,\n `appInstances[${index}].targetRevisionRef`,\n );\n const group = groupsById.get(instance.groupId);\n const chain = [\n workbench.workbenchAccessPolicy,\n ...(group?.accessPolicy ? [group.accessPolicy] : []),\n instance.accessPolicy,\n ];\n if (!accessPolicyChainImplies(chain, registration.accessPolicy)) {\n throw new DeclarativeControlCompilationError(\n \"AUDIENCE_WIDER_THAN_TARGET\",\n `appInstances[${index}].accessPolicy`,\n \"Workbench and instance audience is wider than the target audience.\",\n );\n }\n const runtimeContractVersion = contractFor(instance.targetRevisionRef, instance.providerRevisionRef, instance.runtimeContractVersion);\n return { ...instance, ...(runtimeContractVersion ? { runtimeContractVersion } : {}), targetAccessPolicy: registration.accessPolicy };\n });\n const unsigned = {\n contract: \"WorkbenchRuntimeBundle\" as const,\n schemaVersion: 1 as const,\n tenantScope: scope,\n releaseRevisionRef,\n compilerRevisionRef,\n generation: input.generation,\n dependencySnapshot: release.dependencySnapshot,\n rebuildable: true as const,\n diagnostics: [],\n workbenchId: workbench.workbenchId,\n workbenchRevisionRef,\n identity: {\n name: workbench.identity.name,\n ...(workbench.identity.description\n ? { description: workbench.identity.description }\n : {}),\n },\n surface: release.target.surface,\n routeClaims,\n groups: workbench.groups,\n appInstances,\n defaultEntry: workbench.defaultEntry,\n layout: { ...workbench.layout, ...(layoutContract ? { runtimeContractVersion: layoutContract } : {}) },\n workbenchAccessPolicy: workbench.workbenchAccessPolicy,\n personalPreferencesPolicy: workbench.personalPreferencesPolicy,\n target: { ...release.target, routeClaim: releaseRoute },\n performanceBudgetRef: workbench.performanceBudgetRef,\n observationPolicyRevisionRef: workbench.observationPolicyRevisionRef,\n privacyClassification: workbench.privacyClassification,\n };\n return deepFreeze(\n WorkbenchRuntimeBundleSchema.parse({\n ...unsigned,\n contentHash: canonicalContentHash(unsigned),\n }),\n );\n};\nconst navigationDepth = (navigation: Navigation): number => {\n const byId = new Map(navigation.nodes.map((node) => [node.nodeId, node]));\n let maximum = 0;\n navigation.nodes.forEach((node) => {\n let depth = 1;\n let parentId = node.parentNodeId;\n while (parentId) {\n depth += 1;\n parentId = byId.get(parentId)?.parentNodeId ?? null;\n }\n maximum = Math.max(maximum, depth);\n });\n return maximum;\n};\nconst orderedNavigationNodes = (\n navigation: Navigation,\n): Navigation[\"nodes\"] => {\n const children = new Map<string, Navigation[\"nodes\"]>();\n navigation.nodes.forEach((node) => {\n const parent = node.parentNodeId ?? \"\";\n const siblings = children.get(parent) ?? [];\n children.set(parent, [...siblings, node]);\n });\n children.forEach((siblings) =>\n siblings.sort(\n (left, right) =>\n left.order - right.order || left.nodeId.localeCompare(right.nodeId),\n ),\n );\n const ordered: Navigation[\"nodes\"] = [];\n const append = (parentId: string) => {\n for (const node of children.get(parentId) ?? []) {\n ordered.push(node);\n append(node.nodeId);\n }\n };\n append(\"\");\n return ordered;\n};\nconst navigationDependencies = (\n navigation: Navigation,\n release: NavigationRelease,\n compilerRevisionRef: RevisionRef,\n): ReleaseDependency[] => [\n ...release.resolvedTargets.flatMap((target) => [\n {\n role:\n target.targetRevisionRef.kind === \"domain-command\"\n ? (\"action\" as const)\n : (target.targetRevisionRef.kind as ReleaseDependency[\"role\"]),\n revisionRef: target.targetRevisionRef,\n },\n ...(target.releaseRevisionRef\n ? [\n {\n role: target.releaseRevisionRef.kind as ReleaseDependency[\"role\"],\n revisionRef: target.releaseRevisionRef,\n },\n ]\n : []),\n ]),\n { role: \"performance-budget\", revisionRef: navigation.performanceBudgetRef },\n {\n role: \"observation-policy\",\n revisionRef: navigation.observationPolicyRevisionRef,\n },\n { role: \"compiler\", revisionRef: compilerRevisionRef },\n];\nexport const compileNavigationRuntimeBundle = (\n input: CompileNavigationRuntimeBundleInput,\n): NavigationRuntimeBundle => {\n const navigation = NavigationSchema.parse(input.navigation);\n const navigationRevisionRef = RevisionRefSchema.parse(\n input.navigationRevisionRef,\n );\n const release = NavigationReleaseSchema.parse(input.release);\n const releaseRevisionRef = RevisionRefSchema.parse(input.releaseRevisionRef);\n const compilerRevisionRef = RevisionRefSchema.parse(\n input.compilerRevisionRef,\n );\n const scope = TenantScopeSchema.parse(navigation.tenantScope);\n const verifiedKernelPageReferences = [\n ...(input.verifiedKernelPageReferences ?? []),\n ].map((reference, index) => {\n const parsed = RevisionRefSchema.parse(reference);\n if (\n release.target.surface !== \"kernel\" ||\n parsed.visibility !== \"tenant\" ||\n !parsed.tenantScope?.teamRef?.id.startsWith(\"kernel-page.\") ||\n parsed.ownerRepo !== \"monkeys-server\" ||\n ![\"page\", \"page-release\"].includes(parsed.kind)\n ) {\n throw new DeclarativeControlCompilationError(\n \"CROSS_TENANT_REFERENCE\",\n `verifiedKernelPageReferences[${index}]`,\n \"Verified Kernel Page references must be exact tenant-scoped Page and PageRelease revisions from the Kernel page catalog.\",\n );\n }\n if (scopeKey(parsed.tenantScope) === scopeKey(scope)) {\n throw new DeclarativeControlCompilationError(\n \"CROSS_TENANT_REFERENCE\",\n `verifiedKernelPageReferences[${index}]`,\n \"Verified Kernel Page references must belong to a different tenant scope.\",\n );\n }\n return parsed;\n });\n const verifiedKernelPageReferenceKeys = new Set(\n verifiedKernelPageReferences.map(revisionRefKey),\n );\n assertSameTenantScope(release.tenantScope, scope, \"release.tenantScope\");\n if (navigation.nodes.length > input.limits.maxNavigationNodes)\n throw new DeclarativeControlCompilationError(\n \"NAV_NODE_LIMIT_EXCEEDED\",\n \"navigation.nodes\",\n \"Navigation exceeds the caller-approved node limit.\",\n );\n if (navigationDepth(navigation) > input.limits.maxNavigationDepth)\n throw new DeclarativeControlCompilationError(\n \"NAV_DEPTH_EXCEEDED\",\n \"navigation.nodes\",\n \"Navigation exceeds the caller-approved depth limit.\",\n );\n assertRevisionIdentity(\n navigationRevisionRef,\n \"navigation\",\n navigation.navigationId,\n scope,\n \"navigationRevisionRef\",\n );\n assertRevisionIdentity(\n release.navigationRevisionRef,\n \"navigation\",\n navigation.navigationId,\n scope,\n \"release.navigationRevisionRef\",\n );\n if (!sameRevisionRef(navigationRevisionRef, release.navigationRevisionRef))\n throw new DeclarativeControlCompilationError(\n \"REVISION_MISMATCH\",\n \"release.navigationRevisionRef\",\n \"Release does not pin the supplied Navigation revision.\",\n );\n assertRevisionIdentity(\n releaseRevisionRef,\n \"navigation-release\",\n release.releaseSlotId,\n scope,\n \"releaseRevisionRef\",\n );\n if (\n release.target.surface !==\n navigation.supportedSurfaces.find(\n (surface) => surface === release.target.surface,\n ) ||\n !navigation.placements.includes(release.target.placement)\n ) {\n throw new DeclarativeControlCompilationError(\n \"REVISION_MISMATCH\",\n \"release.target\",\n \"Navigation release target is not declared by the Navigation record.\",\n );\n }\n requireReleaseReady(release);\n requireDependencies(\n release.dependencySnapshot,\n navigationDependencies(navigation, release, compilerRevisionRef),\n );\n assertDependencyScopes(\n release.dependencySnapshot,\n scope,\n verifiedKernelPageReferenceKeys,\n );\n const targetRegistry = input.targetRegistry.map((registration, index) => {\n const common = {\n stableTargetRef: StableRefSchema.parse(registration.stableTargetRef),\n targetRevisionRef: RevisionRefSchema.parse(\n registration.targetRevisionRef,\n ),\n surface: ProductSurfaceSchema.parse(registration.surface),\n accessPolicy: AccessPolicySchema.parse(registration.accessPolicy),\n };\n if (registration.kind === \"route\") {\n const routeClaim = CompiledRouteClaimSchema.parse(\n registration.routeClaim,\n );\n if (routeClaim.surface !== common.surface) {\n throw new DeclarativeControlCompilationError(\n \"ROUTE_SPACE_MISMATCH\",\n `targetRegistry[${index}].routeClaim.surface`,\n \"Navigation route claim must match its registered surface.\",\n );\n }\n return {\n ...common,\n kind: \"route\" as const,\n releaseRevisionRef: registration.releaseRevisionRef\n ? RevisionRefSchema.parse(registration.releaseRevisionRef)\n : undefined,\n routeClaim,\n };\n }\n if (registration.kind === \"registered-menu-action\") {\n const sourceCatalogRevisionRef = RevisionRefSchema.parse(\n registration.sourceCatalogRevisionRef,\n );\n if (\n sourceCatalogRevisionRef.kind !== \"application-menu-catalog\" ||\n registration.targetRevisionRef.kind !== \"menu-action\"\n ) {\n throw new DeclarativeControlCompilationError(\n \"NAV_TARGET_UNRELEASED\",\n \"targetRegistry\",\n \"Registered Menu Actions require exact menu-action and application-menu-catalog revisions.\",\n );\n }\n if (registration.inputSchemaRef && !registration.validateInput) {\n throw new DeclarativeControlCompilationError(\n \"NAV_TARGET_UNRELEASED\",\n \"targetRegistry\",\n \"Registered Menu Actions with input schemas require the active catalog validator.\",\n );\n }\n return {\n ...common,\n kind: \"registered-menu-action\" as const,\n applicationId: registration.applicationId,\n actionRef: registration.actionRef,\n inputSchemaRef: registration.inputSchemaRef,\n validateInput: registration.validateInput,\n sourceCatalogRevisionRef,\n };\n }\n if (registration.targetRevisionRef.kind !== \"domain-command\") {\n throw new DeclarativeControlCompilationError(\n \"NAV_TARGET_UNRELEASED\",\n \"targetRegistry\",\n \"Governed DomainCommand actions require an exact domain-command revision.\",\n );\n }\n const inputSchemaRevisionRef = RevisionRefSchema.parse(\n registration.inputSchemaRevisionRef,\n );\n const resultSchemaRevisionRef = registration.resultSchemaRevisionRef\n ? RevisionRefSchema.parse(registration.resultSchemaRevisionRef)\n : undefined;\n if (\n inputSchemaRevisionRef.kind !== \"schema\" ||\n (resultSchemaRevisionRef && resultSchemaRevisionRef.kind !== \"schema\")\n ) {\n throw new DeclarativeControlCompilationError(\n \"NAV_TARGET_UNRELEASED\",\n \"targetRegistry\",\n \"Governed DomainCommand actions require exact input and output Schema revisions.\",\n );\n }\n return {\n ...common,\n kind: \"governed-domain-command\" as const,\n inputSchemaRevisionRef,\n resultSchemaRevisionRef,\n };\n });\n assertUniqueRegistryKeys(\n targetRegistry.map((registration) =>\n stableRefKey(registration.stableTargetRef),\n ),\n \"targetRegistry\",\n );\n const targetsByStableRef = new Map(\n targetRegistry.map((registration) => [\n stableRefKey(registration.stableTargetRef),\n registration,\n ]),\n );\n const releasedByNodeId = new Map(\n release.resolvedTargets.map((target) => [target.nodeId, target]),\n );\n const unavailableByNodeId = new Map(\n (release.unavailableTargets ?? []).map((target) => [target.nodeId, target]),\n );\n const nodesById = new Map(\n navigation.nodes.map((node) => [node.nodeId, node]),\n );\n for (const target of release.unavailableTargets ?? []) {\n const node = nodesById.get(target.nodeId);\n if (\n node?.kind !== \"target\" ||\n !sameStableRef(node.targetRef, target.stableTargetRef)\n ) {\n throw new DeclarativeControlCompilationError(\n \"NAV_TARGET_UNRELEASED\",\n \"release.unavailableTargets\",\n \"An unavailable target must identify its source Page node exactly.\",\n );\n }\n }\n const nodes = orderedNavigationNodes(navigation).map((node, index) => {\n const ancestors: AccessPolicy[] = [];\n let parentId = node.parentNodeId;\n while (parentId) {\n const parent = nodesById.get(parentId);\n if (parent?.kind === \"group\") ancestors.unshift(parent.audience);\n parentId = parent?.parentNodeId ?? null;\n }\n if (node.kind !== \"target\")\n return { ...node, ancestorAccessPolicies: ancestors };\n if (\n ![\"page\", \"workbench\", \"menu-action\", \"domain-command\"].includes(\n node.targetRef.kind,\n )\n ) {\n throw new DeclarativeControlCompilationError(\n \"NAV_TARGET_UNRELEASED\",\n `nodes[${index}].targetRef.kind`,\n \"Navigation targets may reference only Page, Workbench, registered Menu Action, or DomainCommand identities.\",\n );\n }\n const registration = targetsByStableRef.get(stableRefKey(node.targetRef));\n const released = releasedByNodeId.get(node.nodeId);\n const unavailable = unavailableByNodeId.get(node.nodeId);\n if (\n !registration &&\n node.targetRef.kind === \"page\" &&\n ((unavailable && sameStableRef(unavailable.stableTargetRef, node.targetRef)) ||\n (released && sameStableRef(released.stableTargetRef, node.targetRef)))\n ) {\n if (\n !released ||\n !verifiedKernelPageReferenceKeys.has(\n revisionRefKey(released.targetRevisionRef),\n )\n ) {\n assertTenantCompatible(\n node.targetRef,\n scope,\n `nodes[${index}].targetRef`,\n );\n }\n if (\n unavailable?.accessPolicy &&\n !accessPolicyChainImplies(\n [...ancestors, node.audience],\n unavailable.accessPolicy,\n )\n ) {\n throw new DeclarativeControlCompilationError(\n \"AUDIENCE_WIDER_THAN_TARGET\",\n `nodes[${index}].audience`,\n \"Effective Navigation audience is wider than the last verified target audience.\",\n );\n }\n return {\n ...node,\n disabled: true,\n parameterMapping: {},\n ancestorAccessPolicies: ancestors,\n resolvedTarget: {\n kind: \"unavailable\" as const,\n nodeId: node.nodeId,\n stableTargetRef: node.targetRef,\n accessPolicy: unavailable?.accessPolicy ?? null,\n },\n };\n }\n const currentPage = node.targetRef.kind === \"page\" && registration?.kind === \"route\";\n if (\n !registration ||\n (!released && !(currentPage && unavailable && sameStableRef(unavailable.stableTargetRef, node.targetRef))) ||\n !sameStableRef(\n registration.stableTargetRef,\n stableFromRevision(registration.targetRevisionRef),\n ) ||\n (released &&\n !sameStableRef(\n registration.stableTargetRef,\n released.stableTargetRef,\n )) ||\n (!currentPage &&\n released &&\n !sameRevisionRef(\n registration.targetRevisionRef,\n released.targetRevisionRef,\n )) ||\n (!currentPage &&\n released &&\n registration.kind === \"route\" &&\n (Boolean(registration.releaseRevisionRef) !==\n Boolean(released.releaseRevisionRef) ||\n (registration.releaseRevisionRef &&\n released.releaseRevisionRef &&\n !sameRevisionRef(\n registration.releaseRevisionRef,\n released.releaseRevisionRef,\n ))))\n ) {\n throw new DeclarativeControlCompilationError(\n \"NAV_TARGET_UNRELEASED\",\n `nodes[${index}].targetRef`,\n \"Navigation target must resolve to the same Page identity or the exact non-Page binding recorded by NavigationRelease.\",\n );\n }\n if (registration.surface !== release.target.surface) {\n throw new DeclarativeControlCompilationError(\n \"NAV_TARGET_UNRELEASED\",\n `nodes[${index}].targetRef`,\n \"Navigation target is active on another surface.\",\n );\n }\n const targetIsForeignTenant =\n registration.targetRevisionRef.visibility === \"tenant\" &&\n scopeKey(registration.targetRevisionRef.tenantScope as TenantScope) !==\n scopeKey(scope);\n if (targetIsForeignTenant) {\n const releaseReference =\n registration.kind === \"route\"\n ? registration.releaseRevisionRef\n : undefined;\n if (\n release.target.surface !== \"kernel\" ||\n registration.kind !== \"route\" ||\n registration.targetRevisionRef.kind !== \"page\" ||\n !releaseReference ||\n !verifiedKernelPageReferenceKeys.has(\n revisionRefKey(registration.targetRevisionRef),\n ) ||\n !verifiedKernelPageReferenceKeys.has(revisionRefKey(releaseReference))\n ) {\n throw new DeclarativeControlCompilationError(\n \"CROSS_TENANT_REFERENCE\",\n `nodes[${index}].targetRef`,\n \"Kernel Navigation may retain only Page references independently verified by the authenticated Kernel page catalog.\",\n );\n }\n if (\n scopeKey(releaseReference.tenantScope as TenantScope) !==\n scopeKey(registration.targetRevisionRef.tenantScope as TenantScope)\n ) {\n throw new DeclarativeControlCompilationError(\n \"CROSS_TENANT_REFERENCE\",\n `nodes[${index}].targetRef`,\n \"Verified Kernel Page and PageRelease references must belong to the same tenant scope.\",\n );\n }\n } else {\n assertTenantCompatible(\n registration.targetRevisionRef,\n scope,\n `nodes[${index}].targetRef`,\n );\n }\n // Page visibility is the intersection of the Navigation and current Page policies.\n // A Page permission change must not require republishing its navigation.\n if (\n !currentPage && !accessPolicyChainImplies(\n [...ancestors, node.audience],\n registration.accessPolicy,\n )\n ) {\n throw new DeclarativeControlCompilationError(\n \"AUDIENCE_WIDER_THAN_TARGET\",\n `nodes[${index}].audience`,\n \"Effective Navigation audience is wider than the target audience.\",\n );\n }\n const mappedInput = Object.fromEntries(\n Object.entries(node.parameterMapping).map(([name, source]) => {\n if (source.kind !== \"constant\") {\n throw new DeclarativeControlCompilationError(\n \"NAV_TARGET_UNRELEASED\",\n `nodes[${index}].parameterMapping.${name}`,\n \"Navigation actions accept only publication-time constant input.\",\n );\n }\n return [name, source.value];\n }),\n );\n let resolvedTarget: Record<string, unknown>;\n if (registration.kind === \"route\") {\n resolvedTarget = {\n nodeId: node.nodeId,\n stableTargetRef: registration.stableTargetRef,\n targetRevisionRef: registration.targetRevisionRef,\n ...(registration.releaseRevisionRef ? { releaseRevisionRef: registration.releaseRevisionRef } : {}),\n kind: \"route\",\n accessPolicy: registration.accessPolicy,\n routeClaim: registration.routeClaim,\n };\n } else if (registration.kind === \"registered-menu-action\") {\n if (!registration.inputSchemaRef && Object.keys(mappedInput).length > 0) {\n throw new DeclarativeControlCompilationError(\n \"NAV_TARGET_UNRELEASED\",\n `nodes[${index}].parameterMapping`,\n \"The registered Menu Action does not accept input.\",\n );\n }\n let input: Record<string, unknown>;\n try {\n input = JsonObjectSchema.parse(\n registration.validateInput\n ? registration.validateInput(mappedInput)\n : mappedInput,\n );\n } catch (error) {\n throw new DeclarativeControlCompilationError(\n \"NAV_ACTION_INPUT_INVALID\",\n `nodes[${index}].parameterMapping`,\n `Registered Menu Action input failed its active catalog schema: ${error instanceof Error ? error.message : String(error)}`,\n );\n }\n const sourceDependency = release.dependencySnapshot.find(\n (dependency) =>\n dependency.role === \"application-menu-catalog\" &&\n sameRevisionRef(\n dependency.revisionRef,\n registration.sourceCatalogRevisionRef,\n ),\n );\n if (!sourceDependency)\n throw new DeclarativeControlCompilationError(\n \"DEPENDENCY_MISSING\",\n `nodes[${index}].targetRef`,\n \"Registered Menu Action source catalog is not pinned by NavigationRelease.\",\n );\n resolvedTarget = {\n ...released,\n kind: \"registered-menu-action\",\n accessPolicy: registration.accessPolicy,\n execution: \"client\",\n applicationId: registration.applicationId,\n actionRef: registration.actionRef,\n ...(registration.inputSchemaRef\n ? { inputSchemaRef: registration.inputSchemaRef }\n : {}),\n input,\n sourceCatalogRevisionRef: registration.sourceCatalogRevisionRef,\n };\n } else {\n const inputDependency = release.dependencySnapshot.find(\n (dependency) =>\n dependency.role === \"schema\" &&\n sameRevisionRef(\n dependency.revisionRef,\n registration.inputSchemaRevisionRef,\n ),\n );\n const resultDependency = registration.resultSchemaRevisionRef\n ? release.dependencySnapshot.find(\n (dependency) =>\n dependency.role === \"schema\" &&\n sameRevisionRef(\n dependency.revisionRef,\n registration.resultSchemaRevisionRef!,\n ),\n )\n : undefined;\n if (\n !inputDependency ||\n (registration.resultSchemaRevisionRef && !resultDependency)\n ) {\n throw new DeclarativeControlCompilationError(\n \"DEPENDENCY_MISSING\",\n `nodes[${index}].targetRef`,\n \"Governed DomainCommand schemas are not pinned by NavigationRelease.\",\n );\n }\n resolvedTarget = {\n ...released,\n kind: \"governed-domain-command\",\n accessPolicy: registration.accessPolicy,\n execution: \"server\",\n commandRevisionRef: registration.targetRevisionRef,\n inputSchemaRevisionRef: registration.inputSchemaRevisionRef,\n ...(registration.resultSchemaRevisionRef\n ? { resultSchemaRevisionRef: registration.resultSchemaRevisionRef }\n : {}),\n input: JsonObjectSchema.parse(mappedInput),\n };\n }\n return {\n ...node,\n ancestorAccessPolicies: ancestors,\n resolvedTarget,\n };\n });\n const unsigned = {\n contract: \"NavigationRuntimeBundle\" as const,\n schemaVersion: 1 as const,\n tenantScope: scope,\n releaseRevisionRef,\n compilerRevisionRef,\n generation: input.generation,\n dependencySnapshot: release.dependencySnapshot,\n rebuildable: true as const,\n diagnostics: [],\n navigationId: navigation.navigationId,\n navigationRevisionRef,\n surface: release.target.surface,\n placement: release.target.placement,\n nodes,\n performanceBudgetRef: navigation.performanceBudgetRef,\n observationPolicyRevisionRef: navigation.observationPolicyRevisionRef,\n };\n return deepFreeze(\n NavigationRuntimeBundleSchema.parse({\n ...unsigned,\n contentHash: canonicalContentHash(unsigned),\n }),\n );\n};\nexport const validateWorkbenchRuntimeSet = (\n bundleInputs: readonly WorkbenchRuntimeBundle[],\n): readonly WorkbenchRuntimeBundle[] => {\n const bundles = bundleInputs.map((bundle) =>\n WorkbenchRuntimeBundleSchema.parse(bundle),\n );\n if (bundles.length === 0) {\n throw new DeclarativeControlCompilationError(\n \"WORKBENCH_RELEASE_SET_INVALID\",\n \"bundles\",\n \"An active Workbench release set must retain at least one Workbench.\",\n );\n }\n const first = bundles[0];\n const seenIds = new Set<string>();\n const seenOrders = new Set<number>();\n let defaultCount = 0;\n bundles.forEach((bundle, index) => {\n if (\n scopeKey(bundle.tenantScope) !== scopeKey(first.tenantScope) ||\n bundle.surface !== first.surface ||\n !sameStableRef(bundle.target.environmentRef, first.target.environmentRef)\n ) {\n throw new DeclarativeControlCompilationError(\n \"WORKBENCH_RELEASE_SET_INVALID\",\n `bundles[${index}]`,\n \"Workbench release set entries must share tenant, environment, and surface.\",\n );\n }\n if (seenIds.has(bundle.workbenchId))\n throw new DeclarativeControlCompilationError(\n \"WORKBENCH_RELEASE_SET_INVALID\",\n `bundles[${index}].workbenchId`,\n \"Workbench identities must be unique in an active release set.\",\n );\n if (seenOrders.has(bundle.target.order))\n throw new DeclarativeControlCompilationError(\n \"WORKBENCH_RELEASE_SET_INVALID\",\n `bundles[${index}].target.order`,\n \"Workbench order values must be unique in an active release set.\",\n );\n seenIds.add(bundle.workbenchId);\n seenOrders.add(bundle.target.order);\n if (bundle.target.isDefaultCandidate) defaultCount += 1;\n });\n if (defaultCount > 1)\n throw new DeclarativeControlCompilationError(\n \"WORKBENCH_RELEASE_SET_INVALID\",\n \"bundles\",\n \"An active Workbench release set may have at most one default candidate.\",\n );\n return Object.freeze(\n [...bundles].sort(\n (left, right) =>\n left.target.order - right.target.order ||\n left.workbenchId.localeCompare(right.workbenchId),\n ),\n );\n};\nexport type WorkbenchEntryResolution =\n | {\n status: \"resolved\";\n bundle: WorkbenchRuntimeBundle;\n source: \"explicit\" | \"default\" | \"first-accessible\";\n }\n | {\n status: \"not-found\";\n workbenchId: string;\n }\n | {\n status: \"forbidden\";\n workbenchId: string;\n };\nexport const resolveWorkbenchEntry = (input: {\n bundles: readonly WorkbenchRuntimeBundle[];\n requestedWorkbenchId?: string;\n isAllowed: (bundle: WorkbenchRuntimeBundle) => boolean;\n}): WorkbenchEntryResolution => {\n if (input.requestedWorkbenchId) {\n const requested = input.bundles.find(\n (bundle) => bundle.workbenchId === input.requestedWorkbenchId,\n );\n if (!requested)\n return { status: \"not-found\", workbenchId: input.requestedWorkbenchId };\n if (!input.isAllowed(requested))\n return { status: \"forbidden\", workbenchId: input.requestedWorkbenchId };\n return { status: \"resolved\", bundle: requested, source: \"explicit\" };\n }\n const allowed = input.bundles\n .filter(input.isAllowed)\n .sort(\n (left, right) =>\n left.target.order - right.target.order ||\n left.workbenchId.localeCompare(right.workbenchId),\n );\n const defaultBundle = allowed.find(\n (bundle) => bundle.target.isDefaultCandidate,\n );\n if (defaultBundle)\n return { status: \"resolved\", bundle: defaultBundle, source: \"default\" };\n if (allowed[0])\n return {\n status: \"resolved\",\n bundle: allowed[0],\n source: \"first-accessible\",\n };\n return { status: \"forbidden\", workbenchId: \"\" };\n};\n\nexport const programDependencies = (\n definition: ActionProgramDefinition,\n): ReleaseDependency[] => [\n ...[\n definition.inputSchemaRevisionRef,\n definition.resultSchemaRevisionRef,\n ...definition.stateAliases.map((entry) => entry.schemaRevisionRef),\n ].map((revisionRef) => ({ role: \"schema\" as const, revisionRef })),\n ...definition.dependencies.flatMap((dep) => [\n {\n role:\n dep.kind === \"query\"\n ? (\"query-definition\" as const)\n : (\"action\" as const),\n revisionRef: dep.revisionRef,\n },\n { role: \"schema\" as const, revisionRef: dep.inputSchemaRevisionRef },\n { role: \"schema\" as const, revisionRef: dep.resultSchemaRevisionRef },\n ]),\n];\nexport function assertProgramRegistration(\n registration: ActionProgramRegistration,\n scope: TenantScope,\n surface: string,\n path = \"program\",\n) {\n const definition = ActionProgramDefinitionSchema.parse(\n registration.definition,\n );\n const ref = RevisionRefSchema.parse(registration.definitionRevisionRef);\n if (\n ref.kind !== \"action-program\" ||\n ref.id !== definition.programId ||\n ref.ownerRepo !== definition.ownerRepo ||\n ref.visibility !== \"tenant\" ||\n canonicalContentHash(ref.tenantScope) !== canonicalContentHash(scope) ||\n canonicalContentHash(definition.tenantScope) !==\n canonicalContentHash(scope) ||\n ref.schemaVersion !== definition.schemaVersion ||\n ref.contentHash !== canonicalContentHash(definition) ||\n definition.supportedSurface !== surface\n )\n throw new DeclarativeControlCompilationError(\n \"CROSS_TENANT_REFERENCE\",\n path,\n \"Program identity, scope, surface or content hash does not match its exact reference.\",\n );\n}\n","import { NavigationRuntimeBundleSchema, type NavigationRuntimeBundle } from '../contracts/declarative-control';\nimport { canonicalContentHash, sameStableRef } from './declarative-control-compiler';\n\nexport const NAVIGATION_UNAVAILABLE_CAPABILITY_HEADER = 'x-monkeys-navigation-capabilities';\nexport const NAVIGATION_UNAVAILABLE_CAPABILITY = 'unavailable-pages-v1';\n\n/** Old strict readers receive only representable nodes, never a fabricated route. */\nexport function projectNavigationCompatibility(bundle: NavigationRuntimeBundle, supportsUnavailable: boolean): NavigationRuntimeBundle {\n if (supportsUnavailable || !bundle.nodes.some((node) => node.kind === 'target' && node.resolvedTarget.kind === 'unavailable')) return bundle;\n const { contentHash: _hash, ...unsigned } = bundle;\n const nodes = bundle.nodes.filter((node) => node.kind !== 'target' || node.resolvedTarget.kind !== 'unavailable');\n return NavigationRuntimeBundleSchema.parse({ ...unsigned, nodes, contentHash: canonicalContentHash({ ...unsigned, nodes }) });\n}\n\n/** Project Page links against a complete, tenant-authorized current target catalog. */\nexport function projectCurrentNavigationPages(\n source: NavigationRuntimeBundle,\n navigation: import('../contracts/declarative-control').Navigation,\n targets: readonly import('./declarative-control-compiler').NavigationTargetRegistration[],\n): NavigationRuntimeBundle {\n const currentTargets = new Map(targets.map(target => [canonicalContentHash(target.stableTargetRef), target]));\n if (currentTargets.size !== targets.length) throw new TypeError('DECLARATIVE_TARGET_CATALOG_INVALID');\n const authored = new Map(navigation.nodes.map(node => [node.nodeId, node]));\n const nodes = source.nodes.map(node => {\n if (node.kind !== 'target' || node.targetRef.kind !== 'page') return node;\n const original = authored.get(node.nodeId);\n if (original?.kind !== 'target' || canonicalContentHash(original.targetRef) !== canonicalContentHash(node.targetRef)) {\n throw new TypeError('DECLARATIVE_TARGET_IDENTITY_MISMATCH');\n }\n const current = currentTargets.get(canonicalContentHash(node.targetRef));\n if (current && (!sameStableRef(current.stableTargetRef, current.targetRevisionRef) || current.kind !== 'route' || current.surface !== source.surface || current.routeClaim.surface !== source.surface)) {\n throw new TypeError('DECLARATIVE_TARGET_CATALOG_INVALID');\n }\n if (!current || current.kind !== 'route' || !current.routeClaim.matcher.parameters.filter(parameter => current.routeClaim.normalizedPath.split('/').includes(`:${parameter.name}`)).every(parameter => {\n if (!parameter.required) return true;\n const binding = original.parameterMapping[parameter.name];\n return binding?.kind === 'constant' && (typeof binding.value === 'string' || typeof binding.value === 'number') && String(binding.value).length > 0;\n })) {\n return { ...node, disabled: true, parameterMapping: {}, resolvedTarget: {\n kind: 'unavailable' as const, nodeId: node.nodeId, stableTargetRef: node.targetRef, accessPolicy: null,\n } };\n }\n return { ...node, disabled: original.disabled, parameterMapping: original.parameterMapping, resolvedTarget: {\n kind: 'route' as const, nodeId: node.nodeId, stableTargetRef: current.stableTargetRef,\n targetRevisionRef: current.targetRevisionRef,\n ...(current.releaseRevisionRef ? { releaseRevisionRef: current.releaseRevisionRef } : {}),\n accessPolicy: current.accessPolicy, routeClaim: current.routeClaim,\n } };\n });\n const { contentHash: _hash, ...unsigned } = source;\n return NavigationRuntimeBundleSchema.parse({ ...unsigned, nodes, contentHash: canonicalContentHash({ ...unsigned, nodes }) });\n}\n","import { ContractIdentifierSchema, type JsonObject } from '../contracts/common';\nimport {\n CompiledMenuItemNodeSchema,\n CompiledMenuProjectionSchema,\n MENU_ACTIVATION_QUERY_PARAMETER,\n MENU_CONTRACT_VERSION,\n MenuActionRegistrationSchema,\n MenuAccessRequirementSchema,\n MenuBoundedInputSchema,\n MenuContributionProviderRegistrationSchema,\n MenuDefinitionSchema,\n MenuPageRefSchema,\n MenuPageRegistrationSchema,\n MenuRuntimeBundleSchema,\n type CompiledMenuItemNode,\n type CompiledMenuNode,\n type CompiledMenuProjection,\n type MenuAccessRequirement,\n type MenuActionRegistration,\n type MenuContributionProviderRegistration,\n type MenuDefinition,\n type MenuItemNode,\n type MenuNavigationTarget,\n type MenuPageRef,\n type MenuPageRegistration,\n type MenuRuntimeBundle,\n type MenuRuntimeInputBinding,\n} from '../contracts/menu';\n\nexport type MenuCompilationErrorCode =\n | 'duplicate-definition'\n | 'duplicate-registration'\n | 'unsupported-surface'\n | 'invalid-page-application'\n | 'unknown-page'\n | 'unknown-action'\n | 'unknown-contribution-provider'\n | 'unsupported-contribution-surface'\n | 'unknown-permission'\n | 'missing-input-schema'\n | 'unknown-input-schema'\n | 'invalid-input'\n | 'conflicting-navigation-target';\n\nexport class MenuCompilationError extends Error {\n readonly code: MenuCompilationErrorCode;\n readonly path: string;\n\n constructor(code: MenuCompilationErrorCode, path: string, message: string) {\n super(`${path}: ${message}`);\n this.name = 'MenuCompilationError';\n this.code = code;\n this.path = path;\n }\n}\n\nexport type MenuInputValidator = (value: JsonObject) => unknown;\n\nexport interface CompileMenuRuntimeBundleInput {\n applicationId: string;\n supportedSurfaces: readonly string[];\n sourceVersion: string;\n definitions: readonly MenuDefinition[];\n pages: readonly MenuPageRegistration[];\n actions: readonly MenuActionRegistration[];\n contributionProviders: readonly MenuContributionProviderRegistration[];\n permissionCodes: readonly string[];\n inputValidators?: ReadonlyMap<string, MenuInputValidator>;\n sourceMap?: Readonly<Record<string, string>>;\n /** Enable isolation only after successfully loading complete catalogs for these applications. */\n missingPagePolicy?: {\n completeApplicationIds: readonly string[];\n /** Explicit restricted audience when the removed target's original policy is unavailable. */\n unavailableAccess: MenuAccessRequirement;\n };\n}\n\nexport interface MenuCompilationDiagnostic {\n code: 'missing-page';\n severity: 'warning';\n applicationId: string;\n surface: string;\n menuId: string;\n nodeId: string;\n page: MenuPageRef;\n path: string;\n}\n\nexport interface MenuAccessContext {\n sessionResolved: boolean;\n authenticated: boolean;\n permissionCodes: readonly string[];\n featureFlags: Readonly<Record<string, boolean>>;\n}\n\nexport type MenuAccessDenialReason =\n | 'session-unresolved'\n | 'authentication'\n | 'permission-all'\n | 'permission-any'\n | 'required-permission'\n | 'feature-flag';\n\nexport interface MenuAccessDecision {\n allowed: boolean;\n reasons: readonly MenuAccessDenialReason[];\n}\n\nexport type MenuNavigationResolution =\n | { status: 'resolved'; target: MenuNavigationTarget }\n | { status: 'unmatched' }\n | { status: 'invalid'; reason: 'invalid-activation' | 'unknown-activation' | 'page-mismatch' };\n\nexport interface CompiledMenuRuntimeBundle {\n document: MenuRuntimeBundle;\n /** Authoring diagnostics; never included in the ordinary menu document. */\n diagnostics: readonly MenuCompilationDiagnostic[];\n menusByKey: ReadonlyMap<string, CompiledMenuProjection>;\n navigationTargetsByKey: ReadonlyMap<string, MenuNavigationTarget>;\n serverInputByTargetKey: ReadonlyMap<string, JsonObject>;\n /** Evaluates visibility/access only. Callers must separately block dispatch when `item.disabled === true`. */\n evaluateItemAccess(item: CompiledMenuItemNode, context: MenuAccessContext): MenuAccessDecision;\n /** Resolves route identity and input; it does not authorize interaction with a disabled placement. */\n resolveNavigationTarget(page: MenuPageRef, explicitActivationId?: string): MenuNavigationResolution;\n selectedNodeIds(menu: CompiledMenuProjection, page: MenuPageRef, activationId?: string): ReadonlySet<string>;\n}\n\nconst menuKey = (applicationId: string, surface: string, menuId: string) =>\n `${applicationId}\\u0000${surface}\\u0000${menuId}`;\n\nconst pageKey = (page: MenuPageRef) => `${page.applicationId}\\u0000${page.pageId}`;\nconst targetKey = (page: MenuPageRef, activationId: string) =>\n `${page.applicationId}\\u0000${page.pageId}\\u0000${activationId}`;\nconst actionKey = (applicationId: string, actionRef: string) => `${applicationId}\\u0000${actionRef}`;\nconst providerKey = (applicationId: string, providerId: string) => `${applicationId}\\u0000${providerId}`;\n\nconst stableSerialize = (value: unknown): string => {\n if (value === undefined) return 'null';\n if (value === null || typeof value !== 'object') return JSON.stringify(value) ?? 'null';\n if (Array.isArray(value)) return `[${value.map((item) => stableSerialize(item)).join(',')}]`;\n const record = value as Record<string, unknown>;\n return `{${Object.keys(record)\n .filter((key) => record[key] !== undefined)\n .sort()\n .map((key) => `${JSON.stringify(key)}:${stableSerialize(record[key])}`)\n .join(',')}}`;\n};\n\nconst deepFreeze = <T>(value: T): T => {\n if (value === null || typeof value !== 'object' || Object.isFrozen(value)) return value;\n Object.values(value as Record<string, unknown>).forEach((child) => deepFreeze(child));\n return Object.freeze(value);\n};\n\nconst SHA256_INITIAL = [\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a,\n 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19,\n];\n\nconst SHA256_ROUND = [\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2,\n];\n\nconst rotateRight = (value: number, amount: number) => (value >>> amount) | (value << (32 - amount));\n\nconst sha256Hex = (value: string): string => {\n const source = [...new TextEncoder().encode(value)];\n const bitLength = source.length * 8;\n source.push(0x80);\n while (source.length % 64 !== 56) source.push(0);\n const high = Math.floor(bitLength / 0x1_0000_0000);\n const low = bitLength >>> 0;\n for (let shift = 24; shift >= 0; shift -= 8) source.push((high >>> shift) & 0xff);\n for (let shift = 24; shift >= 0; shift -= 8) source.push((low >>> shift) & 0xff);\n\n const hash = [...SHA256_INITIAL];\n const words = new Array<number>(64).fill(0);\n for (let offset = 0; offset < source.length; offset += 64) {\n for (let index = 0; index < 16; index += 1) {\n const start = offset + index * 4;\n words[index] = (\n (source[start] << 24)\n | (source[start + 1] << 16)\n | (source[start + 2] << 8)\n | source[start + 3]\n ) >>> 0;\n }\n for (let index = 16; index < 64; index += 1) {\n const previous = words[index - 15];\n const recent = words[index - 2];\n const small0 = rotateRight(previous, 7) ^ rotateRight(previous, 18) ^ (previous >>> 3);\n const small1 = rotateRight(recent, 17) ^ rotateRight(recent, 19) ^ (recent >>> 10);\n words[index] = (words[index - 16] + small0 + words[index - 7] + small1) >>> 0;\n }\n\n let [a, b, c, d, e, f, g, h] = hash;\n for (let index = 0; index < 64; index += 1) {\n const big1 = rotateRight(e, 6) ^ rotateRight(e, 11) ^ rotateRight(e, 25);\n const choice = (e & f) ^ (~e & g);\n const temp1 = (h + big1 + choice + SHA256_ROUND[index] + words[index]) >>> 0;\n const big0 = rotateRight(a, 2) ^ rotateRight(a, 13) ^ rotateRight(a, 22);\n const majority = (a & b) ^ (a & c) ^ (b & c);\n const temp2 = (big0 + majority) >>> 0;\n h = g;\n g = f;\n f = e;\n e = (d + temp1) >>> 0;\n d = c;\n c = b;\n b = a;\n a = (temp1 + temp2) >>> 0;\n }\n hash[0] = (hash[0] + a) >>> 0;\n hash[1] = (hash[1] + b) >>> 0;\n hash[2] = (hash[2] + c) >>> 0;\n hash[3] = (hash[3] + d) >>> 0;\n hash[4] = (hash[4] + e) >>> 0;\n hash[5] = (hash[5] + f) >>> 0;\n hash[6] = (hash[6] + g) >>> 0;\n hash[7] = (hash[7] + h) >>> 0;\n }\n return hash.map((part) => part.toString(16).padStart(8, '0')).join('');\n};\n\nconst uniqueIndex = <T>(\n values: readonly T[],\n key: (value: T) => string,\n path: string,\n): ReadonlyMap<string, T> => {\n const result = new Map<string, T>();\n values.forEach((value, index) => {\n const identity = key(value);\n if (result.has(identity)) {\n throw new MenuCompilationError(\n 'duplicate-registration',\n `${path}[${index}]`,\n `Duplicate registry identity: ${identity.split('\\u0000').join('/')}`,\n );\n }\n result.set(identity, value);\n });\n return result;\n};\n\nconst normalizedSiblingOrder = <T extends { order: number; nodeId: string }>(left: T, right: T) =>\n left.order - right.order || left.nodeId.localeCompare(right.nodeId);\n\nconst normalizeNodeOrder = (nodes: readonly CompiledMenuNode[]): CompiledMenuNode[] => {\n const childrenByParent = new Map<string, CompiledMenuNode[]>();\n nodes.forEach((node) => {\n const parent = node.parentNodeId ?? '';\n const children = childrenByParent.get(parent) ?? [];\n children.push(node);\n childrenByParent.set(parent, children);\n });\n childrenByParent.forEach((children) => children.sort(normalizedSiblingOrder));\n\n const ordered: CompiledMenuNode[] = [];\n const appendChildren = (parentNodeId: string) => {\n for (const node of childrenByParent.get(parentNodeId) ?? []) {\n ordered.push(node);\n appendChildren(node.nodeId);\n }\n };\n appendChildren('');\n return ordered;\n};\n\nconst requirementFromPage = (registration: MenuPageRegistration): MenuAccessRequirement => ({\n authenticated: registration.page.visibility.authenticated,\n permissionAllOf: registration.page.visibility.permissionAllOf,\n permissionAnyOf: registration.page.visibility.permissionAnyOf,\n featureFlags: registration.page.visibility.featureFlags,\n});\n\nconst validatePermissionCodes = (\n permissions: readonly string[],\n knownPermissions: ReadonlySet<string>,\n path: string,\n) => {\n permissions.forEach((permission, index) => {\n if (!knownPermissions.has(permission)) {\n throw new MenuCompilationError(\n 'unknown-permission',\n `${path}[${index}]`,\n `Unknown platform permission: ${permission}`,\n );\n }\n });\n};\n\nconst validateInput = (\n value: JsonObject,\n schemaRef: string | undefined,\n validators: ReadonlyMap<string, MenuInputValidator>,\n path: string,\n): JsonObject => {\n if (!schemaRef) {\n throw new MenuCompilationError(\n 'missing-input-schema',\n path,\n 'Input is configured but the target has no input schema reference.',\n );\n }\n const validator = validators.get(schemaRef);\n if (!validator) {\n throw new MenuCompilationError(\n 'unknown-input-schema',\n path,\n `No input validator is registered for ${schemaRef}.`,\n );\n }\n try {\n return MenuBoundedInputSchema.parse(validator(value));\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n throw new MenuCompilationError('invalid-input', path, `Input validation failed for ${schemaRef}: ${message}`);\n }\n};\n\nconst evaluateAccess = (item: CompiledMenuItemNode, context: MenuAccessContext): MenuAccessDecision => {\n const reasons: MenuAccessDenialReason[] = [];\n const protectedBySession = item.access.authenticated\n || item.access.permissionAllOf.length > 0\n || item.access.permissionAnyOf.length > 0\n || item.access.requiredPermission !== undefined;\n if (!context.sessionResolved && protectedBySession) reasons.push('session-unresolved');\n if (item.access.authenticated && !context.authenticated) reasons.push('authentication');\n\n const granted = new Set(context.permissionCodes);\n if (item.access.permissionAllOf.some((permission) => !granted.has(permission))) {\n reasons.push('permission-all');\n }\n if (\n item.access.permissionAnyOf.length > 0\n && !item.access.permissionAnyOf.some((permission) => granted.has(permission))\n ) {\n reasons.push('permission-any');\n }\n if (item.access.requiredPermission && !granted.has(item.access.requiredPermission)) {\n reasons.push('required-permission');\n }\n if (item.access.featureFlags.some((flag) => context.featureFlags[flag] !== true)) {\n reasons.push('feature-flag');\n }\n return Object.freeze({ allowed: reasons.length === 0, reasons: Object.freeze(reasons) });\n};\n\nexport const resolveMenuActivationId = (page: MenuPageRef, activationId?: string): string =>\n activationId ?? page.pageId;\n\nexport const readMenuActivationFromSearch = (search: string | URLSearchParams): string | undefined => {\n const params = typeof search === 'string' ? new URLSearchParams(search) : search;\n const value = params.get(MENU_ACTIVATION_QUERY_PARAMETER)?.trim();\n return value || undefined;\n};\n\nexport const serializeMenuActivationSearch = (\n search: string | URLSearchParams,\n page: MenuPageRef,\n activationId?: string,\n): string => {\n const params = new URLSearchParams(typeof search === 'string' ? search : search.toString());\n const effectiveActivationId = resolveMenuActivationId(page, activationId);\n if (effectiveActivationId === page.pageId) params.delete(MENU_ACTIVATION_QUERY_PARAMETER);\n else params.set(MENU_ACTIVATION_QUERY_PARAMETER, effectiveActivationId);\n return params.toString();\n};\n\nexport const isCompiledMenuItemSelected = (\n item: CompiledMenuItemNode,\n page: MenuPageRef,\n activationId?: string,\n): boolean => item.behavior.kind === 'navigate'\n && pageKey(item.behavior.page) === pageKey(page)\n && item.behavior.activationId === resolveMenuActivationId(page, activationId);\n\n/** Compiles source definitions into one browser-safe application bundle and a server-only input index. */\nexport const compileMenuRuntimeBundle = (\n input: CompileMenuRuntimeBundleInput,\n): CompiledMenuRuntimeBundle => {\n const applicationId = ContractIdentifierSchema.parse(input.applicationId);\n const supportedSurfaces = new Set(input.supportedSurfaces.map((surface) => ContractIdentifierSchema.parse(surface)));\n const definitions = input.definitions.map((definition) => MenuDefinitionSchema.parse(definition));\n const pages = input.pages.map((registration) => MenuPageRegistrationSchema.parse(registration));\n const actions = input.actions.map((registration) => MenuActionRegistrationSchema.parse(registration));\n const contributionProviders = input.contributionProviders.map((registration) =>\n MenuContributionProviderRegistrationSchema.parse(registration));\n const inputValidators = input.inputValidators ?? new Map<string, MenuInputValidator>();\n const knownPermissions = new Set(input.permissionCodes.map((permission) => ContractIdentifierSchema.parse(permission)));\n const completeApplications = new Set(input.missingPagePolicy?.completeApplicationIds.map((id) => ContractIdentifierSchema.parse(id)) ?? []);\n const unavailableAccess = input.missingPagePolicy\n ? MenuAccessRequirementSchema.parse(input.missingPagePolicy.unavailableAccess)\n : undefined;\n if (unavailableAccess) {\n validatePermissionCodes(unavailableAccess.permissionAllOf, knownPermissions, 'missingPagePolicy.unavailableAccess.permissionAllOf');\n validatePermissionCodes(unavailableAccess.permissionAnyOf, knownPermissions, 'missingPagePolicy.unavailableAccess.permissionAnyOf');\n }\n const diagnostics: MenuCompilationDiagnostic[] = [];\n pages.forEach((registration, index) => {\n if (!registration.page.visibility.productContexts.some((context) => context === registration.applicationId)) {\n throw new MenuCompilationError(\n 'invalid-page-application',\n `pages[${index}].applicationId`,\n `Page ${registration.page.pageId} is not visible in ${registration.applicationId}.`,\n );\n }\n });\n const pagesByKey = uniqueIndex(pages, (registration) => pageKey({\n applicationId: registration.applicationId,\n pageId: registration.page.pageId,\n }), 'pages');\n const actionsByKey = uniqueIndex(actions, (registration) => actionKey(\n registration.applicationId,\n registration.actionRef,\n ), 'actions');\n const providersByKey = uniqueIndex(contributionProviders, (registration) => providerKey(\n registration.applicationId,\n registration.providerId,\n ), 'contributionProviders');\n\n const definitionsByKey = new Map<string, MenuDefinition>();\n definitions.forEach((definition, index) => {\n const identity = menuKey(definition.applicationId, definition.surface, definition.menuId);\n if (definitionsByKey.has(identity)) {\n throw new MenuCompilationError(\n 'duplicate-definition',\n `definitions[${index}]`,\n `Duplicate menu definition: ${definition.applicationId}/${definition.surface}/${definition.menuId}`,\n );\n }\n definitionsByKey.set(identity, definition);\n });\n\n const targetSourceSignatures = new Map<string, string>();\n const navigationTargetsByKey = new Map<string, MenuNavigationTarget>();\n const serverInputByTargetKey = new Map<string, JsonObject>();\n const requestedTargetKeys = new Set<string>();\n const requestedMenus: CompiledMenuProjection[] = [];\n\n definitions.forEach((definition, definitionIndex) => {\n if (definition.applicationId === applicationId && !supportedSurfaces.has(definition.surface)) {\n throw new MenuCompilationError(\n 'unsupported-surface',\n `definitions[${definitionIndex}].surface`,\n `Application ${applicationId} does not support menu surface ${definition.surface}.`,\n );\n }\n const compiledNodes: CompiledMenuNode[] = definition.nodes.map((node, nodeIndex) => {\n if (node.kind === 'divider') return node;\n if (node.kind === 'group') {\n const { disabled, ...presentation } = node;\n return disabled === true ? { ...presentation, disabled } : presentation;\n }\n const nodePath = `definitions[${definitionIndex}].nodes[${nodeIndex}]`;\n if (node.requiredPermission && !knownPermissions.has(node.requiredPermission)) {\n throw new MenuCompilationError(\n 'unknown-permission',\n `${nodePath}.requiredPermission`,\n `Unknown platform permission: ${node.requiredPermission}`,\n );\n }\n\n let access: MenuAccessRequirement;\n if (node.behavior.kind === 'navigate') {\n const registration = pagesByKey.get(pageKey(node.behavior.page));\n if (!registration) {\n if (unavailableAccess && completeApplications.has(node.behavior.page.applicationId)) {\n const activationId = resolveMenuActivationId(node.behavior.page, node.behavior.activationId);\n const identity = targetKey(node.behavior.page, activationId);\n const signature = stableSerialize({ ...node.behavior, activationId });\n const previous = targetSourceSignatures.get(identity);\n if (previous !== undefined && previous !== signature) {\n throw new MenuCompilationError('conflicting-navigation-target', `${nodePath}.behavior`, 'Missing navigation target has conflicting behavior or input.');\n }\n targetSourceSignatures.set(identity, signature);\n if (definition.applicationId === applicationId) {\n diagnostics.push({\n code: 'missing-page', severity: 'warning', applicationId: definition.applicationId,\n surface: definition.surface, menuId: definition.menuId, nodeId: node.nodeId,\n page: node.behavior.page, path: `${nodePath}.behavior.page`,\n });\n }\n const { requiredPermission, behavior: _behavior, ...presentation } = node;\n return CompiledMenuItemNodeSchema.parse({\n ...presentation,\n disabled: true,\n behavior: { kind: 'navigate', page: node.behavior.page, activationId },\n access: { ...unavailableAccess, requiredPermission },\n });\n }\n throw new MenuCompilationError(\n 'unknown-page',\n `${nodePath}.behavior.page`,\n `Unknown page reference: ${node.behavior.page.applicationId}/${node.behavior.page.pageId}`,\n );\n }\n access = requirementFromPage(registration);\n validatePermissionCodes(access.permissionAllOf, knownPermissions, `${nodePath}.targetAccess.permissionAllOf`);\n validatePermissionCodes(access.permissionAnyOf, knownPermissions, `${nodePath}.targetAccess.permissionAnyOf`);\n\n const activationId = resolveMenuActivationId(node.behavior.page, node.behavior.activationId);\n const identity = targetKey(node.behavior.page, activationId);\n let runtimeInput: MenuRuntimeInputBinding | undefined;\n let normalizedSourceInput: unknown;\n if (node.behavior.input) {\n const normalized = validateInput(\n node.behavior.input.value,\n registration.page.input?.schemaRef,\n inputValidators,\n `${nodePath}.behavior.input.value`,\n );\n normalizedSourceInput = { exposure: node.behavior.input.exposure, value: normalized };\n runtimeInput = node.behavior.input.exposure === 'client'\n ? { exposure: 'client', value: normalized }\n : { exposure: 'server' };\n if (node.behavior.input.exposure === 'server' && definition.applicationId === applicationId) {\n serverInputByTargetKey.set(identity, deepFreeze(normalized));\n }\n }\n const signature = stableSerialize({\n kind: 'navigate',\n page: node.behavior.page,\n activationId,\n input: normalizedSourceInput,\n });\n const existingSignature = targetSourceSignatures.get(identity);\n if (existingSignature !== undefined && existingSignature !== signature) {\n throw new MenuCompilationError(\n 'conflicting-navigation-target',\n `${nodePath}.behavior`,\n `Navigation target ${node.behavior.page.applicationId}/${node.behavior.page.pageId}/${activationId} has conflicting behavior or input.`,\n );\n }\n targetSourceSignatures.set(identity, signature);\n if (!navigationTargetsByKey.has(identity)) {\n navigationTargetsByKey.set(identity, {\n page: node.behavior.page,\n activationId,\n input: runtimeInput,\n });\n }\n if (definition.applicationId === applicationId) requestedTargetKeys.add(identity);\n\n const {\n requiredPermission,\n behavior: _behavior,\n disabled,\n ...presentation\n } = node;\n return CompiledMenuItemNodeSchema.parse({\n ...presentation,\n ...(disabled === true ? { disabled } : {}),\n behavior: {\n kind: 'navigate',\n page: node.behavior.page,\n activationId,\n input: runtimeInput,\n },\n access: { ...access, requiredPermission },\n });\n }\n\n const action = actionsByKey.get(actionKey(definition.applicationId, node.behavior.actionRef));\n if (!action) {\n throw new MenuCompilationError(\n 'unknown-action',\n `${nodePath}.behavior.actionRef`,\n `Unknown action reference for ${definition.applicationId}: ${node.behavior.actionRef}`,\n );\n }\n access = action.access;\n validatePermissionCodes(access.permissionAllOf, knownPermissions, `${nodePath}.targetAccess.permissionAllOf`);\n validatePermissionCodes(access.permissionAnyOf, knownPermissions, `${nodePath}.targetAccess.permissionAnyOf`);\n const actionInput = node.behavior.input\n ? validateInput(node.behavior.input, action.inputSchemaRef, inputValidators, `${nodePath}.behavior.input`)\n : undefined;\n const {\n requiredPermission,\n behavior: _behavior,\n disabled,\n ...presentation\n } = node;\n return CompiledMenuItemNodeSchema.parse({\n ...presentation,\n ...(disabled === true ? { disabled } : {}),\n behavior: { kind: 'action', actionRef: node.behavior.actionRef, input: actionInput },\n access: { ...access, requiredPermission },\n });\n });\n\n definition.contributions.forEach((contribution, contributionIndex) => {\n const provider = providersByKey.get(providerKey(definition.applicationId, contribution.providerId));\n const path = `definitions[${definitionIndex}].contributions[${contributionIndex}].providerId`;\n if (!provider) {\n throw new MenuCompilationError(\n 'unknown-contribution-provider',\n path,\n `Unknown contribution provider for ${definition.applicationId}: ${contribution.providerId}`,\n );\n }\n if (provider.surfaces && !provider.surfaces.includes(definition.surface)) {\n throw new MenuCompilationError(\n 'unsupported-contribution-surface',\n path,\n `Provider ${contribution.providerId} does not support surface ${definition.surface}.`,\n );\n }\n });\n\n if (definition.applicationId !== applicationId) return;\n requestedMenus.push(CompiledMenuProjectionSchema.parse({\n applicationId: definition.applicationId,\n surface: definition.surface,\n menuId: definition.menuId,\n nodes: normalizeNodeOrder(compiledNodes),\n contributions: [...definition.contributions].sort((left, right) =>\n (left.parentNodeId ?? '').localeCompare(right.parentNodeId ?? '')\n || left.order - right.order\n || left.providerId.localeCompare(right.providerId)),\n }));\n });\n\n const menus = requestedMenus.sort((left, right) =>\n left.surface.localeCompare(right.surface) || left.menuId.localeCompare(right.menuId));\n const navigationTargets = [...requestedTargetKeys]\n .map((identity) => navigationTargetsByKey.get(identity))\n .filter((target): target is MenuNavigationTarget => target !== undefined)\n .sort((left, right) =>\n left.page.applicationId.localeCompare(right.page.applicationId)\n || left.page.pageId.localeCompare(right.page.pageId)\n || left.activationId.localeCompare(right.activationId));\n const unsignedDocument = {\n contract: 'MenuRuntimeBundle' as const,\n version: MENU_CONTRACT_VERSION,\n applicationId,\n sourceVersion: input.sourceVersion,\n menus,\n navigationTargets,\n sourceMap: Object.fromEntries(\n Object.entries(input.sourceMap ?? {}).sort(([left], [right]) => left.localeCompare(right)),\n ),\n };\n const document = MenuRuntimeBundleSchema.parse({\n ...unsignedDocument,\n contentHash: sha256Hex(stableSerialize(unsignedDocument)),\n });\n const menusByKey = new Map(document.menus.map((menu) => [\n menuKey(menu.applicationId, menu.surface, menu.menuId),\n menu,\n ]));\n const documentTargetsByKey = new Map(document.navigationTargets.map((target) => [\n targetKey(target.page, target.activationId),\n target,\n ]));\n\n const resolveNavigationTarget = (page: MenuPageRef, explicitActivationId?: string): MenuNavigationResolution => {\n const parsedPage = MenuPageRefSchema.parse(page);\n if (explicitActivationId !== undefined) {\n const parsedActivation = ContractIdentifierSchema.safeParse(explicitActivationId);\n if (!parsedActivation.success) return Object.freeze({ status: 'invalid', reason: 'invalid-activation' });\n const target = documentTargetsByKey.get(targetKey(parsedPage, parsedActivation.data));\n if (target) return Object.freeze({ status: 'resolved', target });\n const sameActivation = document.navigationTargets.find((candidate) =>\n candidate.page.applicationId === parsedPage.applicationId\n && candidate.activationId === parsedActivation.data);\n return Object.freeze({\n status: 'invalid',\n reason: sameActivation ? 'page-mismatch' : 'unknown-activation',\n });\n }\n const target = documentTargetsByKey.get(targetKey(parsedPage, parsedPage.pageId));\n return target\n ? Object.freeze({ status: 'resolved', target })\n : Object.freeze({ status: 'unmatched' });\n };\n\n return Object.freeze({\n document: deepFreeze(document),\n diagnostics: deepFreeze(diagnostics),\n menusByKey,\n navigationTargetsByKey: documentTargetsByKey,\n serverInputByTargetKey,\n evaluateItemAccess: evaluateAccess,\n resolveNavigationTarget,\n selectedNodeIds(menu: CompiledMenuProjection, page: MenuPageRef, activationId?: string) {\n if (menu.applicationId !== document.applicationId) return new Set<string>();\n const nodesById = new Map(menu.nodes.map((node) => [node.nodeId, node]));\n const selected = new Set<string>();\n for (const node of menu.nodes) {\n if (node.kind !== 'item' || !isCompiledMenuItemSelected(node, page, activationId)) continue;\n selected.add(node.nodeId);\n let parentNodeId = node.parentNodeId;\n while (parentNodeId) {\n selected.add(parentNodeId);\n parentNodeId = nodesById.get(parentNodeId)?.parentNodeId;\n }\n }\n return selected;\n },\n });\n};\n","import type { CapabilityManifest } from '../contracts/capability';\nimport { CapabilityManifestSchema } from '../contracts/capability';\nimport { PageTypeSchema } from '../contracts/page';\nimport type { ProductContext, ViewProviderDescriptor } from '../contracts/render';\nimport { ViewProviderDescriptorSchema } from '../contracts/render';\n\nconst referenceVersion = (version: string | number | undefined): string | undefined =>\n version === undefined ? undefined : String(version);\n\nconst sameStringSet = (left: readonly string[], right: readonly string[]): boolean => {\n if (left.length !== right.length) return false;\n const expected = new Set(left);\n return right.every((value) => expected.has(value));\n};\n\nconst unique = <T>(values: readonly T[], key: (value: T) => string, label: string): ReadonlyMap<string, T> => {\n const result = new Map<string, T>();\n for (const value of values) {\n const id = key(value);\n if (result.has(id)) throw new Error(`Duplicate ${label}: ${id}`);\n result.set(id, value);\n }\n return result;\n};\n\nexport interface CompileViewProviderRegistryInput {\n capabilities: readonly CapabilityManifest[];\n providers: readonly ViewProviderDescriptor[];\n}\n\nexport interface CompiledViewProviderRegistry {\n capabilities: readonly CapabilityManifest[];\n providers: readonly ViewProviderDescriptor[];\n capabilitiesById: ReadonlyMap<string, CapabilityManifest>;\n providersById: ReadonlyMap<string, ViewProviderDescriptor>;\n providersByRendererKey: ReadonlyMap<string, readonly ViewProviderDescriptor[]>;\n requireCapability(capabilityId: string): CapabilityManifest;\n requireProvider(providerId: string): ViewProviderDescriptor;\n resolveProvider(capabilityId: string, product: ProductContext, preferredProviderId?: string): ViewProviderDescriptor;\n}\n\n/**\n * Compiles the canonical capability-to-provider graph independently of pages.\n * Nested views and component catalogs use this boundary so descriptor metadata\n * cannot drift away from the implementation registry that renders it.\n */\nexport const compileViewProviderRegistry = (\n input: CompileViewProviderRegistryInput,\n): CompiledViewProviderRegistry => {\n const capabilities = input.capabilities.map((capability) => CapabilityManifestSchema.parse(capability));\n const providers = input.providers.map((provider) => ViewProviderDescriptorSchema.parse(provider));\n const capabilitiesById = unique(capabilities, (capability) => capability.id, 'capability id');\n const providersById = unique(providers, (provider) => provider.providerId, 'provider id');\n const providersByRendererKeyMutable = new Map<string, ViewProviderDescriptor[]>();\n for (const provider of providers) {\n const values = providersByRendererKeyMutable.get(provider.rendererKey) ?? [];\n values.push(provider);\n providersByRendererKeyMutable.set(provider.rendererKey, values);\n }\n const providersByRendererKey = new Map(\n Array.from(providersByRendererKeyMutable.entries()).map(([key, values]) => [key, Object.freeze(values)] as const),\n );\n\n unique(\n providers,\n (provider) => `${provider.rendererKey}:${provider.capabilityRef.id}`,\n 'renderer/capability provider binding',\n );\n\n for (const provider of providers) {\n const capability = capabilitiesById.get(provider.capabilityRef.id);\n if (!capability) {\n throw new Error(`Provider ${provider.providerId} references unknown capability ${provider.capabilityRef.id}.`);\n }\n if (!['view', 'professional-provider'].includes(capability.kind)) {\n throw new Error(`Provider ${provider.providerId} capability must be a view or professional-provider.`);\n }\n if (referenceVersion(provider.capabilityRef.version) !== capability.capabilityVersion) {\n throw new Error(`Provider ${provider.providerId} references inactive capability version ${String(provider.capabilityRef.version)}.`);\n }\n if (provider.capabilityRef.ownerRepo !== capability.ownerRepo) {\n throw new Error(`Provider ${provider.providerId} must reference capability owner ${capability.ownerRepo}.`);\n }\n const providerBindings = capability.runtime.providerBindings.filter((binding) => binding.providerRef.id === provider.providerId);\n if (providerBindings.length !== 1) {\n throw new Error(`Capability ${capability.id} must declare exactly one binding for provider ${provider.providerId}.`);\n }\n const providerRef = providerBindings[0].providerRef;\n if (providerRef.kind !== 'view-provider' || providerRef.ownerRepo !== provider.ownerRepo || referenceVersion(providerRef.version) !== provider.providerVersion) {\n throw new Error(`Capability ${capability.id} provider binding does not match ${provider.providerId}@${provider.providerVersion}.`);\n }\n if (provider.loading !== capability.runtime.loading || provider.stateOwner !== capability.runtime.stateOwner) {\n throw new Error(`Provider ${provider.providerId} loading and state ownership must match capability ${capability.id}.`);\n }\n if (!sameStringSet(provider.sideEffects, capability.runtime.sideEffects)) {\n throw new Error(`Provider ${provider.providerId} side effects must match capability ${capability.id}.`);\n }\n const renderModelPort = capability.ports.inputs.find((port) => port.schemaRef === provider.renderModelSchemaRef);\n if (!renderModelPort?.required) {\n throw new Error(`Provider ${provider.providerId} render model schema is not a required capability input.`);\n }\n if (provider.intentSchemaRef && !capability.ports.outputs.some((port) => port.schemaRef === provider.intentSchemaRef)) {\n throw new Error(`Provider ${provider.providerId} intent schema is not declared by capability ${capability.id}.`);\n }\n if (provider.lifecycle.focusModel !== capability.accessibility.focusModel) {\n throw new Error(`Provider ${provider.providerId} focus model must match capability ${capability.id}.`);\n }\n if (provider.supportedSurfaces.some((surface) => !capability.placement.surfaces.includes(surface))) {\n throw new Error(`Provider ${provider.providerId} surfaces must be declared by capability ${capability.id}.`);\n }\n for (const pageType of provider.supportedPageTypes) {\n if (!PageTypeSchema.safeParse(pageType).success) {\n throw new Error(`Provider ${provider.providerId} declares unsupported page type ${pageType}.`);\n }\n }\n }\n\n for (const capability of capabilities) {\n if (!['view', 'professional-provider'].includes(capability.kind)) continue;\n for (const binding of capability.runtime.providerBindings) {\n const providerRef = binding.providerRef;\n if (providerRef.kind !== 'view-provider') throw new Error(`View capability ${capability.id} must resolve to view providers.`);\n const provider = providersById.get(providerRef.id);\n if (!provider || provider.capabilityRef.id !== capability.id) {\n throw new Error(`View capability ${capability.id} references missing provider ${providerRef.id}.`);\n }\n }\n for (const product of ['studio', 'kernel'] as const) {\n const candidates = capability.runtime.providerBindings.filter((binding) => binding.productContexts.length === 0 || binding.productContexts.includes(product));\n const priorities = candidates.map((binding) => binding.priority).sort((left, right) => right - left);\n if (priorities.length > 1 && priorities[0] === priorities[1]) {\n throw new Error(`Capability ${capability.id} has ambiguous provider bindings for ${product}.`);\n }\n }\n }\n\n const requireCapability = (capabilityId: string): CapabilityManifest => {\n const capability = capabilitiesById.get(capabilityId);\n if (!capability) throw new Error(`Unknown capability: ${capabilityId}`);\n return capability;\n };\n const requireProvider = (providerId: string): ViewProviderDescriptor => {\n const provider = providersById.get(providerId);\n if (!provider) throw new Error(`Unknown view provider: ${providerId}`);\n return provider;\n };\n\n return Object.freeze({\n capabilities: Object.freeze(capabilities),\n providers: Object.freeze(providers),\n capabilitiesById,\n providersById,\n providersByRendererKey,\n requireCapability,\n requireProvider,\n resolveProvider: (capabilityId: string, product: ProductContext, preferredProviderId?: string) => {\n const capability = requireCapability(capabilityId);\n const candidates = capability.runtime.providerBindings\n .filter((binding) => binding.productContexts.length === 0 || binding.productContexts.includes(product))\n .sort((left, right) => right.priority - left.priority || left.providerRef.id.localeCompare(right.providerRef.id));\n if (preferredProviderId) {\n const preferred = candidates.find((binding) => binding.providerRef.id === preferredProviderId);\n if (!preferred) throw new Error(`Provider ${preferredProviderId} is not available for capability ${capabilityId} in ${product}.`);\n return requireProvider(preferred.providerRef.id);\n }\n if (candidates.length === 0) throw new Error(`Capability ${capabilityId} has no provider for ${product}.`);\n if (candidates.length > 1 && candidates[0].priority === candidates[1].priority) {\n throw new Error(`Capability ${capabilityId} has ambiguous providers for ${product}.`);\n }\n return requireProvider(candidates[0].providerRef.id);\n },\n });\n};\n","import type { CapabilityManifest } from '../contracts/capability';\nimport type {\n PageDefinition,\n PageGuardProjection,\n PageNavigationProjection,\n PageRendererProjection,\n PageRouteProjection,\n PageRuntimeProjection,\n} from '../contracts/page';\nimport {\n PageDefinitionSchema,\n PageRuntimeProjectionSchema,\n} from '../contracts/page';\nimport type { ProductContext, ViewProviderDescriptor } from '../contracts/render';\nimport { compileViewProviderRegistry } from './view-provider-registry';\n\nconst escapeRegExp = (value: string) => value.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n\nconst routePattern = (path: string): RegExp => {\n const parts = path.split('/').filter(Boolean);\n const expression = parts.map((part, index) => {\n if (part === '*') return index === parts.length - 1 ? '(?:/.*)?' : '/.*';\n if (part.startsWith(':') || part.startsWith('$')) return '/[^/]+';\n if (part.endsWith('*')) return `/${escapeRegExp(part.slice(0, -1))}.*`;\n return `/${escapeRegExp(part)}`;\n }).join('');\n return new RegExp(`^${expression || '/'}\\/?$`);\n};\n\nconst routeSignature = (path: string): string => path\n .split('/')\n .map((part) => {\n if (part === '*' || part.endsWith('*')) return '*';\n if (part.startsWith(':') || part.startsWith('$')) return ':';\n return part;\n })\n .join('/');\n\nconst routeSpecificity = (path: string): number => path.split('/').filter(Boolean).reduce((score, part) => {\n if (part === '*' || part.endsWith('*')) return score;\n if (part.startsWith(':') || part.startsWith('$')) return score + 1;\n return score + 10;\n}, 0);\n\nconst unique = <T>(values: readonly T[], key: (value: T) => string, label: string): Map<string, T> => {\n const result = new Map<string, T>();\n for (const value of values) {\n const id = key(value);\n if (result.has(id)) throw new Error(`Duplicate ${label}: ${id}`);\n result.set(id, value);\n }\n return result;\n};\n\nconst referenceVersion = (version: string | number | undefined): string | undefined =>\n version === undefined ? undefined : String(version);\n\nconst assertCapabilityReference = (\n owner: string,\n reference: PageDefinition['capabilityRef'],\n capability: CapabilityManifest | undefined,\n) => {\n if (!capability) throw new Error(`${owner} references unknown capability ${reference.id}.`);\n if (referenceVersion(reference.version) !== capability.capabilityVersion) {\n throw new Error(`${owner} references inactive capability version ${String(reference.version)} for ${reference.id}.`);\n }\n if (reference.ownerRepo !== capability.ownerRepo) {\n throw new Error(`${owner} capability ${reference.id} owner must be ${capability.ownerRepo}.`);\n }\n};\n\nexport interface PageAccessContext {\n authenticated: boolean;\n permissionCodes: readonly string[];\n featureFlags: Readonly<Record<string, boolean>>;\n}\n\nexport interface PageAccessDecision {\n allowed: boolean;\n reasons: readonly (\n | 'authentication'\n | 'permission-all'\n | 'permission-any'\n | 'feature-flag'\n )[];\n}\n\nexport interface CompilePageRuntimeProjectionInput {\n product: ProductContext;\n pages: readonly PageDefinition[];\n capabilities: readonly CapabilityManifest[];\n providers: readonly ViewProviderDescriptor[];\n}\n\nexport interface CompiledPageRuntimeProjection {\n document: PageRuntimeProjection;\n pagesById: ReadonlyMap<string, PageDefinition>;\n providersById: ReadonlyMap<string, ViewProviderDescriptor>;\n routesById: ReadonlyMap<string, PageRouteProjection>;\n navigationByPageId: ReadonlyMap<string, PageNavigationProjection>;\n guardsByPageId: ReadonlyMap<string, PageGuardProjection>;\n renderersByPageId: ReadonlyMap<string, PageRendererProjection>;\n evaluateAccess(pageId: string, context: PageAccessContext): PageAccessDecision;\n visibleNavigation(context: PageAccessContext): readonly PageNavigationProjection[];\n matchRoute(pathname: string): PageDefinition | undefined;\n requireRoute(routeId: string): PageRouteProjection;\n requireGuard(pageId: string): PageGuardProjection;\n requireRenderer(pageId: string): PageRendererProjection;\n}\n\n/** Compiles route, navigation, guard and renderer tables from one canonical PageDefinition set. */\nexport const compilePageRuntimeProjection = (\n input: CompilePageRuntimeProjectionInput,\n): CompiledPageRuntimeProjection => {\n const pages = input.pages.map((page) => PageDefinitionSchema.parse(page));\n const providerRegistry = compileViewProviderRegistry(input);\n const capabilities = providerRegistry.capabilities;\n const providers = providerRegistry.providers;\n const pagesById = unique(pages, (page) => page.pageId, 'pageId');\n unique(pages, (page) => page.routeId, 'routeId');\n unique(pages, (page) => page.routePath, 'route path');\n unique(pages, (page) => routeSignature(page.routePath), 'route pattern');\n const capabilitiesById = providerRegistry.capabilitiesById;\n const providersById = providerRegistry.providersById;\n\n for (const page of pages) {\n if (page.record.deleted) {\n throw new Error(`Deleted page ${page.pageId} cannot be compiled into a runtime projection.`);\n }\n if (!page.visibility.productContexts.includes(input.product)) {\n throw new Error(`Page ${page.pageId} is not visible in ${input.product}.`);\n }\n if (page.navigation.parentPageId && !pagesById.has(page.navigation.parentPageId)) {\n throw new Error(`Page ${page.pageId} references unknown parent ${page.navigation.parentPageId}.`);\n }\n for (const reference of [page.capabilityRef, ...page.capabilityRefs]) {\n assertCapabilityReference(`Page ${page.pageId}`, reference, capabilitiesById.get(reference.id));\n }\n\n const provider = providerRegistry.resolveProvider(page.capabilityRef.id, input.product);\n if (provider.rendererKey !== page.rendererKey || provider.capabilityRef.id !== page.capabilityRef.id) {\n throw new Error(`Page ${page.pageId} renderer ${page.rendererKey} does not match provider ${provider.providerId}.`);\n }\n if (!provider.supportedPageTypes.includes(page.pageType)) {\n throw new Error(`Provider ${provider.providerId} does not support page type ${page.pageType}.`);\n }\n if (!provider.supportedSurfaces.includes(page.surface)) {\n throw new Error(`Provider ${provider.providerId} does not support surface ${page.surface}.`);\n }\n }\n\n for (const page of pages) {\n const ancestors = new Set([page.pageId]);\n let parent = page.navigation.parentPageId;\n while (parent) {\n if (ancestors.has(parent)) throw new Error(`Navigation cycle contains page ${page.pageId}.`);\n ancestors.add(parent);\n parent = pagesById.get(parent)?.navigation.parentPageId;\n }\n }\n\n const routes = pages.map((page) => ({\n pageId: page.pageId,\n routeId: page.routeId,\n path: page.routePath,\n }));\n const navigation = pages\n .filter((page) => !page.navigation.hidden)\n .map((page) => ({\n pageId: page.pageId,\n routeId: page.routeId,\n path: page.routePath,\n label: page.navigation.label,\n iconRef: page.navigation.iconRef,\n parentPageId: page.navigation.parentPageId,\n order: page.navigation.order,\n pinned: page.navigation.pinned,\n }))\n .sort((left, right) =>\n (left.order ?? Number.MAX_SAFE_INTEGER) - (right.order ?? Number.MAX_SAFE_INTEGER)\n || left.pageId.localeCompare(right.pageId));\n const guards = pages.map((page) => ({\n pageId: page.pageId,\n authenticated: page.visibility.authenticated,\n permissionAllOf: page.visibility.permissionAllOf,\n permissionAnyOf: page.visibility.permissionAnyOf,\n featureFlags: page.visibility.featureFlags,\n actions: page.access.actions,\n }));\n const renderers = pages.map((page) => {\n const provider = providerRegistry.resolveProvider(page.capabilityRef.id, input.product);\n return {\n pageId: page.pageId,\n surface: page.surface,\n rendererKey: page.rendererKey,\n capabilityRef: page.capabilityRef,\n capabilityRefs: page.capabilityRefs,\n providerRef: {\n kind: 'view-provider' as const,\n id: provider.providerId,\n version: provider.providerVersion,\n ownerRepo: provider.ownerRepo,\n },\n binding: page.binding,\n rendererConfig: page.rendererConfig,\n workflowRef: page.workflowRef,\n };\n });\n const document = PageRuntimeProjectionSchema.parse({\n contract: 'PageRuntimeProjection',\n product: input.product,\n routes,\n navigation,\n guards,\n renderers,\n });\n const routesById = unique(document.routes, (route) => route.routeId, 'projected routeId');\n const navigationByPageId = unique(document.navigation, (item) => item.pageId, 'navigation pageId');\n const guardsByPageId = unique(document.guards, (guard) => guard.pageId, 'guard pageId');\n const renderersByPageId = unique(document.renderers, (renderer) => renderer.pageId, 'renderer pageId');\n const matchers = pages\n .map((page) => ({ page, pattern: routePattern(page.routePath), specificity: routeSpecificity(page.routePath) }))\n .sort((left, right) => right.specificity - left.specificity || left.page.pageId.localeCompare(right.page.pageId));\n\n const evaluateAccess = (pageId: string, context: PageAccessContext): PageAccessDecision => {\n const guard = guardsByPageId.get(pageId);\n if (!guard) throw new Error(`Unknown page guard: ${pageId}`);\n const reasons: PageAccessDecision['reasons'][number][] = [];\n if (guard.authenticated && !context.authenticated) reasons.push('authentication');\n const permissions = new Set(context.permissionCodes);\n if (guard.permissionAllOf.some((permission) => !permissions.has(permission))) {\n reasons.push('permission-all');\n }\n if (guard.permissionAnyOf.length > 0 && !guard.permissionAnyOf.some((permission) => permissions.has(permission))) {\n reasons.push('permission-any');\n }\n if (guard.featureFlags.some((flag) => context.featureFlags[flag] !== true)) reasons.push('feature-flag');\n return Object.freeze({ allowed: reasons.length === 0, reasons: Object.freeze(reasons) });\n };\n\n return Object.freeze({\n document: Object.freeze(document),\n pagesById,\n providersById,\n routesById,\n navigationByPageId,\n guardsByPageId,\n renderersByPageId,\n evaluateAccess,\n visibleNavigation(context: PageAccessContext) {\n return Object.freeze(document.navigation.filter((item) => evaluateAccess(item.pageId, context).allowed));\n },\n matchRoute(pathname: string) {\n const path = pathname.split('?')[0]?.split('#')[0] || '/';\n return matchers.find((matcher) => matcher.pattern.test(path))?.page;\n },\n requireRoute(routeId: string) {\n const route = routesById.get(routeId);\n if (!route) throw new Error(`Unknown route: ${routeId}`);\n return route;\n },\n requireGuard(pageId: string) {\n const guard = guardsByPageId.get(pageId);\n if (!guard) throw new Error(`Unknown page guard: ${pageId}`);\n return guard;\n },\n requireRenderer(pageId: string) {\n const renderer = renderersByPageId.get(pageId);\n if (!renderer) throw new Error(`Unknown page renderer: ${pageId}`);\n return renderer;\n },\n });\n};\n","import type { CapabilityManifest } from '../contracts/capability';\nimport type { PageRuntimeProjection } from '../contracts/page';\nimport type { PageDefinition } from '../contracts/page';\nimport type { ProductDeclaration } from '../contracts/semantic';\nimport type {\n ApplicationHandoff,\n ProductContext,\n ViewProviderDescriptor,\n} from '../contracts/render';\nimport { ApplicationHandoffSchema } from '../contracts/render';\nimport type { PageAccessContext, PageAccessDecision } from './page-compiler';\nimport { compilePageRuntimeProjection } from './page-compiler';\nimport { compileProductDeclaration, type CompiledProductDeclaration } from './declaration-compiler';\n\nexport const APPLICATION_HANDOFF_QUERY_PARAMETER = 'monkeys-handoff';\n\nexport interface ProductRuntimeCatalogInput {\n product: ProductContext;\n declaration: ProductDeclaration;\n providers: readonly ViewProviderDescriptor[];\n}\n\nexport interface ProductRuntimeCatalog {\n product: ProductContext;\n declaration: CompiledProductDeclaration;\n pages: readonly PageDefinition[];\n capabilities: readonly CapabilityManifest[];\n providers: readonly ViewProviderDescriptor[];\n pagesById: ReadonlyMap<string, PageDefinition>;\n pagesByRouteId: ReadonlyMap<string, PageDefinition>;\n capabilitiesById: ReadonlyMap<string, CapabilityManifest>;\n providersById: ReadonlyMap<string, ViewProviderDescriptor>;\n projection: PageRuntimeProjection;\n document: PageRuntimeProjection;\n navigation: readonly PageDefinition[];\n evaluateAccess(pageId: string, context: PageAccessContext): PageAccessDecision;\n matchPage(pathname: string): PageDefinition | undefined;\n matchRoute(pathname: string): PageDefinition | undefined;\n requireRenderer(pageId: string): PageRuntimeProjection['renderers'][number];\n}\n\nconst indexUnique = <T>(values: readonly T[], key: (value: T) => string, label: string): ReadonlyMap<string, T> => {\n const result = new Map<string, T>();\n for (const value of values) {\n const id = key(value);\n if (result.has(id)) throw new Error(`Duplicate ${label}: ${id}`);\n result.set(id, value);\n }\n return result;\n};\n\nexport const compileProductRuntimeCatalog = (input: ProductRuntimeCatalogInput): ProductRuntimeCatalog => {\n const declaration = compileProductDeclaration(input.declaration);\n const compiled = compilePageRuntimeProjection({\n product: input.product,\n pages: declaration.declaration.pages,\n capabilities: declaration.declaration.capabilities,\n providers: input.providers,\n });\n const pages = [...compiled.pagesById.values()];\n const capabilities = [...declaration.declaration.capabilities];\n const providers = [...compiled.providersById.values()];\n const pagesById = compiled.pagesById;\n const pagesByRouteId = indexUnique(pages, (page) => page.routeId, 'routeId');\n const capabilitiesById = indexUnique(capabilities, (capability) => capability.id, 'capability id');\n const providersById = compiled.providersById;\n const navigation = compiled.document.navigation.map((item) => pagesById.get(item.pageId)!);\n\n return Object.freeze({\n product: input.product,\n declaration,\n pages: Object.freeze(pages),\n capabilities: Object.freeze(capabilities),\n providers: Object.freeze(providers),\n pagesById,\n pagesByRouteId,\n capabilitiesById,\n providersById,\n projection: compiled.document,\n document: compiled.document,\n navigation: Object.freeze(navigation),\n evaluateAccess: compiled.evaluateAccess,\n matchPage: compiled.matchRoute,\n matchRoute: compiled.matchRoute,\n requireRenderer: compiled.requireRenderer,\n });\n};\n\nexport const serializeApplicationHandoff = (handoff: ApplicationHandoff): string =>\n JSON.stringify(ApplicationHandoffSchema.parse(handoff));\n\nexport const parseApplicationHandoff = (value: string | null | undefined): ApplicationHandoff | undefined => {\n if (!value) return undefined;\n try {\n return ApplicationHandoffSchema.parse(JSON.parse(value));\n } catch {\n return undefined;\n }\n};\n\nexport const readApplicationHandoffFromUrl = (input: string | URL): ApplicationHandoff | undefined => {\n const url = typeof input === 'string' ? new URL(input, 'https://monkeys.local') : input;\n return parseApplicationHandoff(url.searchParams.get(APPLICATION_HANDOFF_QUERY_PARAMETER));\n};\n\nexport const buildApplicationHandoffUrl = (targetPath: string, handoff: ApplicationHandoff): string => {\n const parsed = ApplicationHandoffSchema.parse(handoff);\n const isRelative = targetPath.startsWith('/') && !targetPath.startsWith('//');\n const url = new URL(targetPath, 'https://monkeys.local');\n url.searchParams.set(APPLICATION_HANDOFF_QUERY_PARAMETER, serializeApplicationHandoff(parsed));\n return isRelative ? `${url.pathname}${url.search}${url.hash}` : url.toString();\n};\n","import { z } from 'zod';\nimport { AgentWorkbenchSidebarConfigSchema } from './agent';\nimport { ContractIdentifierSchema, JsonObjectSchema, LocaleIdentifierSchema, LocalizedTextSchema } from './common';\nimport { MenuDefinitionSetSchema, MenuRuntimeBundleSchema } from './menu';\nimport { PageDefinitionSchema } from './page';\nimport { ResolvedThemeTokensSchema, ThemeTokensSchema } from './theme';\n\nconst DesignTokenFileSourceSchema = z\n .object({\n type: z.literal('file'),\n path: z\n .string()\n .trim()\n .min(1)\n .superRefine((source, context) => {\n const isWindowsDrivePath = /^[a-z]:[\\\\/]/i.test(source);\n if (!isWindowsDrivePath && /^[a-z][a-z\\d+.-]*:/i.test(source)) {\n context.addIssue({\n code: 'custom',\n message: 'Design token file sources must use local file paths.',\n });\n }\n }),\n })\n .strict();\n\nconst DesignTokenUrlSourceSchema = z\n .object({\n type: z.literal('url'),\n url: z\n .string()\n .trim()\n .min(1)\n .superRefine((source, context) => {\n if (!/^https?:\\/\\//i.test(source)) {\n context.addIssue({\n code: 'custom',\n message: 'Design token URL sources must use HTTP(S).',\n });\n }\n }),\n })\n .strict();\n\nconst DesignTokenInlineSourceSchema = z\n .object({\n type: z.literal('inline'),\n document: ThemeTokensSchema,\n })\n .strict();\n\n/** One explicitly ordered input to the tenant design-token release. */\nexport const DesignTokenSourceSchema = z.discriminatedUnion('type', [DesignTokenFileSourceSchema, DesignTokenUrlSourceSchema, DesignTokenInlineSourceSchema]);\n\nexport const TenantDesignTokensConfigSchema = z\n .object({\n /** Ordered tenant overrides. The backend always applies the product default first. */\n tokenSources: z.array(DesignTokenSourceSchema),\n })\n .strict();\n\n/** Browser-safe reference to an authentication provider and its public policy. */\nexport const TenantAuthBindingSchema = z\n .object({\n kind: z.literal('auth-provider'),\n providerId: ContractIdentifierSchema,\n policyRef: ContractIdentifierSchema.optional(),\n })\n .strict();\n\n/** Browser-safe reference to a data provider or an owned projection. */\nexport const TenantDataBindingSchema = z.discriminatedUnion('kind', [\n z\n .object({\n kind: z.literal('data-provider'),\n providerId: ContractIdentifierSchema,\n domainRef: ContractIdentifierSchema.optional(),\n })\n .strict(),\n z\n .object({\n kind: z.literal('projection'),\n projectionRef: ContractIdentifierSchema,\n domainRef: ContractIdentifierSchema.optional(),\n })\n .strict(),\n]);\n\nexport const TenantAuthBindingsSchema = z.record(ContractIdentifierSchema, TenantAuthBindingSchema);\n\nexport const TenantDataBindingsSchema = z.record(ContractIdentifierSchema, TenantDataBindingSchema);\n\n/** Browser-safe identity of one governed Ontology View used by Trend Radar. */\nexport const TenantTrendRadarSourceSchema = z\n .object({\n ontologyId: ContractIdentifierSchema,\n viewId: ContractIdentifierSchema,\n })\n .strict();\n\n/** Browser-safe identity of the Team-scoped flat collection used by Trend Radar. */\nexport const TenantTrendRadarCollectionTargetSchema = z\n .object({\n ontologyId: ContractIdentifierSchema,\n })\n .strict();\n\n/** Browser-safe binding to the Workflow used for governed Trend Radar evaluation. */\nexport const TenantTrendRadarEvaluationSchema = z\n .object({\n workflowId: ContractIdentifierSchema,\n })\n .strict();\n\n/** Browser-safe bindings from Trend Radar metric roles to existing derived Feature Columns. */\nexport const TenantTrendRadarDerivedMetricsSchema = z\n .object({\n productCountFieldKey: ContractIdentifierSchema,\n salesValueCountFieldKey: ContractIdentifierSchema,\n salesSumFieldKey: ContractIdentifierSchema,\n })\n .strict()\n .refine(\n ({ productCountFieldKey, salesValueCountFieldKey, salesSumFieldKey }) =>\n new Set([productCountFieldKey, salesValueCountFieldKey, salesSumFieldKey]).size === 3,\n { message: 'Trend Radar derived metric Field Keys must be distinct.' },\n );\n\n/** Page-group source, collection, derived metric and evaluation registry; roles are optional to support staged deployment. */\nexport const TenantTrendRadarSourcesSchema = z\n .object({\n products: TenantTrendRadarSourceSchema.optional(),\n hotwords: TenantTrendRadarSourceSchema.optional(),\n brands: TenantTrendRadarSourceSchema.optional(),\n collection: TenantTrendRadarCollectionTargetSchema.optional(),\n derivedMetrics: TenantTrendRadarDerivedMetricsSchema.optional(),\n evaluation: TenantTrendRadarEvaluationSchema.optional(),\n })\n .strict();\n\nconst AssetVariantsSchema = z\n .object({\n light: z.string().optional(),\n dark: z.string().optional(),\n })\n .strict();\n\nexport const TenantAgentThemeConfigSchema = z\n .object({\n logo: AssetVariantsSchema.optional(),\n brandDisplayMode: z.enum(['auto', 'logo-only', 'logo-name', 'name-only']).optional(),\n density: z.enum(['compact', 'default', 'comfortable']).optional(),\n sidebar: AgentWorkbenchSidebarConfigSchema.optional(),\n /** @deprecated Use sidebar.navigationMode. */\n navigationMode: z.enum(['default', 'session', 'trend']).optional(),\n /** @deprecated Use sidebar.quickStartEnabled. */\n quickStartEnabled: z.boolean().optional(),\n })\n .strict();\n\nexport const LEGACY_CURRENT_USER_MENU_ITEM_IDS = ['dark-mode', 'language', 'settings', 'logout'] as const;\nexport const CURRENT_USER_MENU_CONTROL_REFS = ['dark-mode', 'language'] as const;\nexport const CURRENT_USER_MENU_ACTION_REFS = ['logout'] as const;\n\nconst CurrentUserMenuIdentifierSchema = z\n .string()\n .trim()\n .regex(/^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$/, 'Expected a stable current-user menu identifier.');\n\nexport const CurrentUserMenuDisplayTextSchema = z.union([\n z.string().trim().min(1),\n z.record(z.string().trim().min(1), z.string().trim().min(1)).refine((value) => Object.keys(value).length > 0, 'Localized menu text must contain at least one locale.'),\n]);\n\nexport const CurrentUserMenuNavigationItemSchema = z\n .object({\n id: CurrentUserMenuIdentifierSchema,\n kind: z.literal('navigation'),\n ref: CurrentUserMenuIdentifierSchema,\n })\n .strict();\n\nexport const CurrentUserMenuControlItemSchema = z\n .object({\n id: CurrentUserMenuIdentifierSchema,\n kind: z.literal('control'),\n ref: z.enum(CURRENT_USER_MENU_CONTROL_REFS),\n })\n .strict();\n\nexport const CurrentUserMenuActionItemSchema = z\n .object({\n id: CurrentUserMenuIdentifierSchema,\n kind: z.literal('action'),\n ref: z.enum(CURRENT_USER_MENU_ACTION_REFS),\n tone: z.enum(['default', 'danger']).optional(),\n })\n .strict();\n\nexport const CurrentUserMenuItemSchema = z.discriminatedUnion('kind', [CurrentUserMenuNavigationItemSchema, CurrentUserMenuControlItemSchema, CurrentUserMenuActionItemSchema]);\n\nexport const CurrentUserMenuSectionSchema = z\n .object({\n id: CurrentUserMenuIdentifierSchema,\n label: CurrentUserMenuDisplayTextSchema.optional(),\n dividerBefore: z.boolean().optional(),\n items: z.array(CurrentUserMenuItemSchema),\n })\n .strict();\n\nexport const CurrentUserMenuConfigSchema = z\n .object({\n version: z.literal(1),\n sections: z.array(CurrentUserMenuSectionSchema).max(20),\n })\n .strict()\n .superRefine((value, context) => {\n const sectionIds = new Set<string>();\n const itemIds = new Set<string>();\n let itemCount = 0;\n\n value.sections.forEach((section, sectionIndex) => {\n if (sectionIds.has(section.id)) {\n context.addIssue({\n code: 'custom',\n message: `Duplicate current-user menu section id ${section.id}.`,\n path: ['sections', sectionIndex, 'id'],\n });\n }\n sectionIds.add(section.id);\n itemCount += section.items.length;\n\n section.items.forEach((item, itemIndex) => {\n if (itemIds.has(item.id)) {\n context.addIssue({\n code: 'custom',\n message: `Duplicate current-user menu item id ${item.id}.`,\n path: ['sections', sectionIndex, 'items', itemIndex, 'id'],\n });\n }\n itemIds.add(item.id);\n });\n });\n\n if (itemCount > 100) {\n context.addIssue({\n code: 'custom',\n message: 'Current-user menu supports at most 100 items.',\n path: ['sections'],\n });\n }\n });\n\nconst LegacyCurrentUserMenuProfileSchema = z.array(z.enum(LEGACY_CURRENT_USER_MENU_ITEM_IDS)).superRefine((value, context) => {\n const seen = new Set<string>();\n value.forEach((item, index) => {\n if (seen.has(item)) {\n context.addIssue({\n code: 'custom',\n message: `Duplicate legacy current-user menu item ${item}.`,\n path: [index],\n });\n }\n seen.add(item);\n });\n});\n\n/** Backward-compatible current-user menu composition stored under theme.headbar.profile. */\nexport const CurrentUserMenuProfileSchema = z.union([z.literal('*'), LegacyCurrentUserMenuProfileSchema, CurrentUserMenuConfigSchema]);\n\nexport const ThemeHeadbarSchema = z\n .object({\n theme: z.enum(['card', 'glassy', 'ghost']).optional(),\n navPosition: z.enum(['left', 'center', 'right']).optional(),\n actions: z.union([z.literal('*'), z.array(ContractIdentifierSchema)]).optional(),\n profile: CurrentUserMenuProfileSchema.optional(),\n showTeamQuota: z.boolean().optional(),\n })\n .strict();\n\nconst TenantHeadbarModuleLeafSchema = z\n .object({\n id: ContractIdentifierSchema,\n extraInfo: z.boolean().optional(),\n displayName: z.union([z.string(), z.record(LocaleIdentifierSchema, z.string())]).optional(),\n visible: z.boolean().optional(),\n disabled: z.boolean().optional(),\n icon: z.string().optional(),\n showQuickSwitcher: z.boolean().optional(),\n showSidebar: z.boolean().optional(),\n showContentFrame: z.boolean().optional(),\n })\n .strict();\n\n/**\n * One configurable HeadBar navigation entry.\n *\n * Children intentionally stop at one level: the shared HeadBar renders a menu,\n * not an arbitrary navigation tree. Studio maps the workbench list to these\n * children when the tenant selects dropdown mode, or flattens the same list in\n * tabs mode.\n */\nexport const TenantHeadbarModuleItemSchema = TenantHeadbarModuleLeafSchema.extend({\n children: z.array(TenantHeadbarModuleLeafSchema).optional(),\n}).strict();\n\nconst KernelHeadbarSchema = z\n .object({\n theme: z.literal('card').optional(),\n layoutMode: z.enum(['boxed', 'full-bleed']).optional(),\n heightPx: z.number().positive().optional(),\n navPosition: z.enum(['left', 'center', 'right']).optional(),\n brandTitle: z.string().optional(),\n menuRadius: z.enum(['default', 'none', 'sm', 'md', 'lg', 'xl', 'full']).optional(),\n })\n .strict();\n\nconst CustomIconSchema = z\n .object({\n color: z.string().optional(),\n url: z.string().optional(),\n type: z.enum(['svg', 'image']).optional(),\n hintTextColor: z.string().optional(),\n })\n .strict();\n\nconst WorkbenchCustomerToolSchema = z\n .object({\n id: ContractIdentifierSchema,\n label: z.union([z.string(), z.record(LocaleIdentifierSchema, z.string())]).optional(),\n fixed: z.boolean().optional(),\n })\n .strict();\n\nconst WorkbenchStudioOverrideSchema = z\n .object({\n studioName: z.string().trim().min(1),\n dropdownToolsDefault: z.array(ContractIdentifierSchema).optional(),\n existingToolsDefault: z.array(ContractIdentifierSchema).optional(),\n historyColumnsDefault: z.number().int().min(1).max(6).optional(),\n })\n .strict();\n\nexport const TenantWorkbenchPageContextSchema = z\n .object({\n workflow: JsonObjectSchema.optional(),\n agent: JsonObjectSchema.optional(),\n agentId: ContractIdentifierSchema.optional(),\n designProject: JsonObjectSchema.optional(),\n designMetadataId: ContractIdentifierSchema.optional(),\n iframeUrl: z.string().trim().min(1).optional(),\n info: z\n .object({\n displayName: LocalizedTextSchema.optional(),\n description: LocalizedTextSchema.optional(),\n iconUrl: z.string().trim().min(1).optional(),\n })\n .strict()\n .optional(),\n isBuiltinPinned: z.boolean().optional(),\n isBuiltinReadonly: z.boolean().optional(),\n })\n .strict();\n\n/**\n * Tenant-declared workbench pages use the same canonical declaration envelope\n * as server-owned pinned pages. Context is provider input only; renderer and\n * capability identity must live in the PageDefinition.\n */\nexport const TenantWorkbenchPageEnvelopeSchema = z\n .object({\n definition: PageDefinitionSchema,\n context: TenantWorkbenchPageContextSchema,\n })\n .strict()\n .superRefine(({ definition }, context) => {\n if (definition.surface !== 'view') {\n context.addIssue({\n code: 'custom',\n path: ['definition', 'surface'],\n message: 'Tenant workbench pages must render on the view surface.',\n });\n }\n if (!definition.ownership.builtIn) {\n context.addIssue({\n code: 'custom',\n path: ['definition', 'ownership', 'builtIn'],\n message: 'Tenant workbench pages must be declared as built-in pages.',\n });\n }\n if (!definition.navigation.pinned) {\n context.addIssue({\n code: 'custom',\n path: ['definition', 'navigation', 'pinned'],\n message: 'Tenant workbench pages must be pinned in workbench navigation.',\n });\n }\n if (!definition.visibility.productContexts.includes('studio')) {\n context.addIssue({\n code: 'custom',\n path: ['definition', 'visibility', 'productContexts'],\n message: 'Tenant workbench pages must include the studio product context.',\n });\n }\n });\n\nexport const TenantWorkbenchPageGroupSchema = z\n .object({\n id: ContractIdentifierSchema,\n pageIds: z.array(ContractIdentifierSchema),\n displayName: LocalizedTextSchema,\n isBuiltIn: z.boolean(),\n iconUrl: z.string().optional(),\n sortIndex: z.number().int().nullable().optional(),\n presetRelationId: ContractIdentifierSchema.optional(),\n relationKey: ContractIdentifierSchema.nullable().optional(),\n studioId: ContractIdentifierSchema.optional(),\n })\n .strict();\n\nexport const TenantWorkbenchConfigSchema = z\n .object({\n pages: z.array(TenantWorkbenchPageEnvelopeSchema),\n pageGroups: z.array(TenantWorkbenchPageGroupSchema),\n catalog: z\n .object({\n enabled: z.boolean().optional(),\n defaultEntry: z.boolean().optional(),\n })\n .strict()\n .optional(),\n quickSwitcherMaxItems: z.number().int().nonnegative().optional(),\n defaultOrder: z\n .object({\n groups: z.array(ContractIdentifierSchema),\n pages: z.record(ContractIdentifierSchema, z.array(ContractIdentifierSchema)),\n })\n .strict()\n .optional(),\n customers: z\n .object({\n dropdownToolsDefault: z.array(ContractIdentifierSchema).optional(),\n layoutManagerTools: z.array(WorkbenchCustomerToolSchema).optional(),\n studioTabsMode: z.enum(['dropdown', 'tabs']).optional(),\n historyWatermark: z\n .object({\n svgUrl: z.string().optional(),\n coverage: z.array(z.enum(['list', 'detail', 'download'])).optional(),\n maxLongEdgeRatio: z.number().positive().optional(),\n sizing: z\n .object({\n mode: ContractIdentifierSchema,\n heightRatio: z.number().positive().optional(),\n minHeightPx: z.number().nonnegative().optional(),\n maxHeightPx: z.number().nonnegative().optional(),\n })\n .strict()\n .optional(),\n enhance: z\n .object({\n enabled: z.boolean().optional(),\n backgroundLumaThreshold: z.number().min(0).max(1).optional(),\n stroke: z\n .object({\n color: z.string().optional(),\n opacity: z.number().min(0).max(1).optional(),\n widthRatio: z.number().nonnegative().optional(),\n blurRatio: z.number().nonnegative().optional(),\n steps: z.number().int().positive().optional(),\n })\n .strict()\n .optional(),\n })\n .strict()\n .optional(),\n })\n .strict()\n .optional(),\n layoutManagerEnabled: z.boolean().optional(),\n existingToolsDefault: z.array(ContractIdentifierSchema).optional(),\n historyColumnsDefault: z.number().int().min(1).max(6).optional(),\n studioOverrides: z.array(WorkbenchStudioOverrideSchema).optional(),\n })\n .strict()\n .optional(),\n })\n .strict()\n .superRefine(({ pages, pageGroups }, context) => {\n const pageIds = pages.map(({ definition }) => definition.pageId);\n const pageIdSet = new Set(pageIds);\n if (pageIdSet.size !== pageIds.length) {\n context.addIssue({\n code: 'custom',\n path: ['pages'],\n message: 'Tenant workbench page ids must be unique.',\n });\n }\n\n const groupIds = pageGroups.map(({ id }) => id);\n if (new Set(groupIds).size !== groupIds.length) {\n context.addIssue({\n code: 'custom',\n path: ['pageGroups'],\n message: 'Tenant workbench page group ids must be unique.',\n });\n }\n\n pageGroups.forEach((group, groupIndex) => {\n group.pageIds.forEach((pageId, pageIndex) => {\n if (!pageIdSet.has(pageId)) {\n context.addIssue({\n code: 'custom',\n path: ['pageGroups', groupIndex, 'pageIds', pageIndex],\n message: `Tenant workbench page group references undeclared page ${pageId}.`,\n });\n }\n });\n });\n });\n\nconst LoginPageSchema = z\n .object({\n background: z\n .object({\n imageUrl: z.string().optional(),\n gradient: z.string().optional(),\n })\n .strict()\n .optional(),\n logo: z\n .object({\n url: z.string().optional(),\n lightUrl: z.string().optional(),\n darkUrl: z.string().optional(),\n position: z.enum(['top', 'middle', 'bottom']).optional(),\n scale: z.number().positive().optional(),\n })\n .strict()\n .optional(),\n customCss: z.string().optional(),\n })\n .strict();\n\nconst LandingPageHeadbarConfigShape = {\n headbarMode: z.enum(['shared', 'hidden']).optional(),\n};\n\nconst LandingPageDefaultConfigSchema = z\n .object({\n mode: z.literal('default'),\n ...LandingPageHeadbarConfigShape,\n })\n .strict();\n\nconst LandingPageMarkdownConfigSchema = z\n .object({\n mode: z.literal('markdown'),\n content: z.string(),\n ...LandingPageHeadbarConfigShape,\n })\n .strict();\n\nconst LandingPageHtmlConfigSchema = z\n .object({\n mode: z.literal('html'),\n content: z.string(),\n ...LandingPageHeadbarConfigShape,\n })\n .strict();\n\nconst LandingPageIframeConfigSchema = z\n .object({\n mode: z.literal('iframe'),\n ...LandingPageHeadbarConfigShape,\n url: z.string().refine((value) => {\n if (/^\\/(?!\\/)/.test(value)) {\n return !value.includes('\\\\');\n }\n try {\n const url = new URL(value);\n return (url.protocol === 'http:' || url.protocol === 'https:') && !url.username && !url.password;\n } catch {\n return false;\n }\n }, 'Landing page iframe URL must use a root-relative path or HTTP(S) without embedded credentials.'),\n })\n .strict();\n\nexport const TenantLandingPageConfigSchema = z.discriminatedUnion('mode', [\n LandingPageDefaultConfigSchema,\n LandingPageMarkdownConfigSchema,\n LandingPageHtmlConfigSchema,\n LandingPageIframeConfigSchema,\n]);\n\nconst ListFooterPageSizeOptionsSchema = z\n .array(z.number().int().positive().max(1000))\n .min(1)\n .max(10)\n .superRefine((options, context) => {\n const seen = new Set<number>();\n options.forEach((option, index) => {\n if (seen.has(option)) {\n context.addIssue({\n code: 'custom',\n message: `Duplicate list footer page size option ${option}.`,\n path: [index],\n });\n }\n seen.add(option);\n });\n });\n\nexport const TenantListFooterConfigSchema = z\n .object({\n showTotal: z.boolean().optional(),\n showPageSize: z.boolean().optional(),\n pageSizeOptions: ListFooterPageSizeOptionsSchema.optional(),\n paginationMode: z.enum(['auto', 'pages', 'compact']).optional(),\n alignment: z.enum(['start', 'end', 'space-between']).optional(),\n density: z.enum(['compact', 'default', 'comfortable']).optional(),\n })\n .strict();\n\n/** Public, application-specific values that are intentionally safe for browser clients. */\nexport const TenantApplicationConfigSchema = z\n .object({\n theme: z\n .object({\n id: z.string().optional(),\n name: z.string().optional(),\n title: z.string().optional(),\n favicon: AssetVariantsSchema.optional(),\n logo: AssetVariantsSchema.optional(),\n pwaIcon: z.string().optional(),\n form: z\n .object({ variant: z.enum(['bento', 'ghost']) })\n .strict()\n .optional(),\n toast: z\n .object({\n position: z.enum(['top-right', 'top-left', 'bottom-right', 'bottom-left', 'top-center', 'bottom-center']),\n })\n .strict()\n .optional(),\n icons: z\n .object({\n error: CustomIconSchema.optional(),\n empty: CustomIconSchema.optional(),\n })\n .strict()\n .optional(),\n views: z\n .object({\n form: z\n .object({\n toast: z\n .object({\n afterCreate: z.boolean(),\n afterDelete: z.boolean(),\n })\n .strict(),\n progress: z.enum(['estimate', 'infinite']),\n onlyResult: z.boolean(),\n tabular: z.object({ theme: z.enum(['default', 'tentiary', 'primary']) }).strict(),\n })\n .strict(),\n })\n .strict()\n .optional(),\n loginPage: LoginPageSchema.optional(),\n extraLanguageURL: z.record(z.string(), z.string()).optional(),\n hideSpaceHeader: z.boolean().optional(),\n showSidebarTeamSelector: z.boolean().optional(),\n showWorkbenchSidebar: z.boolean().optional(),\n workbenchViewTheme: z.enum(['default', 'bsd-blue']).optional(),\n defaults: z\n .object({\n showFormInImageDetail: z.boolean().optional(),\n darkMode: z.enum(['light', 'dark', 'auto']).optional(),\n language: z.enum(['en-US', 'zh-CN', 'ja-JP']).optional(),\n showDarkModeToggle: z.boolean().optional(),\n showLanguageToggle: z.boolean().optional(),\n })\n .strict()\n .optional(),\n modules: z\n .object({\n monkeysSpaceSidebar: z.union([z.literal('*'), z.array(ContractIdentifierSchema)]).optional(),\n monkeysSpaceHeadbar: z.union([z.literal('*'), z.array(TenantHeadbarModuleItemSchema)]).optional(),\n settingsSidebar: z.union([z.literal('*'), z.array(ContractIdentifierSchema)]).optional(),\n })\n .strict()\n .optional(),\n headbar: ThemeHeadbarSchema.optional(),\n kernelLayout: z\n .object({\n navigationMode: z.enum(['sidebar', 'topbar']).optional(),\n allowNavigationModeSwitch: z.boolean().optional(),\n headbar: KernelHeadbarSchema.optional(),\n })\n .strict()\n .optional(),\n paginationPosition: z.enum(['left', 'right']).optional(),\n listFooter: TenantListFooterConfigSchema.optional(),\n ugcViewIconOnlyMode: z.boolean().optional(),\n workflowPreviewExecutionGrid: z\n .object({\n selectionModeDisplayType: z.enum(['operation-button', 'dropdown-menu']).optional(),\n clickBehavior: z.enum(['preview', 'select', 'fill-form', 'none']).optional(),\n showErrorFilter: z.boolean().optional(),\n displayType: z.enum(['grid', 'masonry']).optional(),\n showDetailButton: z.boolean().optional(),\n aspectRatio: z.enum(['1:1', '4:3', '3:4', '16:9', '9:16']).optional(),\n })\n .strict()\n .optional(),\n workbenchSidebarDefaultOpen: z.boolean().optional(),\n workbenchSidebarMoreAction: z.boolean().optional(),\n workbenchSidebarApart: z.boolean().optional(),\n workbenchSidebarToggleGroupDetail: z.boolean().optional(),\n workbenchSidebarViewType: z.boolean().optional(),\n workbenchSidebarFormViewEmbed: z.boolean().optional(),\n workbenchSidebarModernMode: z.boolean().optional(),\n ugc: z\n .object({\n onItemClick: z.boolean(),\n subtitle: z.boolean().optional(),\n })\n .strict()\n .optional(),\n uniImagePreview: z.boolean().optional(),\n imagePreviewStyle: z.union([z.literal(false), z.enum(['simple', 'normal', 'uni'])]).optional(),\n teamAsUser: z.boolean().optional(),\n themeMode: z.enum(['shadow', 'border']).optional(),\n density: z.enum(['compact', 'default', 'comfortable']).optional(),\n statusStates: z\n .object({\n loading: z\n .object({ variant: z.enum(['spinner', 'skeleton']).optional() })\n .strict()\n .optional(),\n empty: z\n .object({ variant: z.enum(['default', 'compact']).optional() })\n .strict()\n .optional(),\n error: z.object({ showRetry: z.boolean().optional() }).strict().optional(),\n permission: z.object({ showRequestAccess: z.boolean().optional() }).strict().optional(),\n density: z.enum(['compact', 'default', 'comfortable']).optional(),\n })\n .strict()\n .optional(),\n pageZoom: z.number().positive().optional(),\n miniMode: z.object({ showPreviewViewExecutionResultGrid: z.boolean() }).strict().optional(),\n workflow: z.object({ allowConcurrentRuns: z.boolean() }).strict().optional(),\n historyResult: z.object({ display: z.boolean() }).strict().optional(),\n uploader: z\n .object({\n orientation: z.enum(['vertical', 'horizontal']),\n pasteButton: z.boolean(),\n statusText: z.boolean(),\n })\n .strict()\n .optional(),\n designProjects: z\n .object({\n oneOnOne: z.boolean(),\n newTabOpenBoard: z.boolean(),\n defaultShowGrid: z.boolean().optional(),\n createDefaultFrame: z.boolean(),\n showPageMenu: z.boolean(),\n showMainMenu: z.boolean(),\n showStylePanel: z.boolean(),\n showToolbar: z.boolean(),\n toolbarPosition: z.enum(['bottom', 'left']).optional(),\n showContextMenu: z.boolean(),\n showActionsMenu: z.boolean(),\n showPageAndLayerSidebar: z.boolean().optional(),\n showBoardOperationSidebar: z.boolean().optional(),\n showMiniToolsToolbar: z.boolean().optional(),\n showRightSidebar: z.boolean().optional(),\n showRealtimeDrawing: z.boolean().optional(),\n showWorkflow: z.boolean().optional(),\n showVersionManager: z.boolean().optional(),\n showAgent: z.boolean().optional(),\n AgentTools: z.array(ContractIdentifierSchema).optional(),\n })\n .strict()\n .optional(),\n workbench: TenantWorkbenchConfigSchema.optional(),\n visionProWorkflows: z.array(ContractIdentifierSchema).optional(),\n initTeam: z.boolean().optional(),\n imageThumbnail: z.boolean().optional(),\n pages: z\n .object({\n allowPageKeys: z.union([z.literal('*'), z.array(ContractIdentifierSchema)]),\n defaultPageKey: ContractIdentifierSchema.optional(),\n homeEntryEnabled: z.boolean().optional(),\n })\n .strict()\n .optional(),\n agent: TenantAgentThemeConfigSchema.optional(),\n })\n .strict(),\n landingPage: TenantLandingPageConfigSchema.optional(),\n auth: z\n .object({\n enabled: z.array(ContractIdentifierSchema).default([]),\n oidc: z\n .object({\n buttonText: z.string().optional(),\n autoSignin: z.boolean().optional(),\n })\n .strict()\n .optional(),\n password: z\n .object({\n registrationEnabled: z.boolean().optional(),\n disableAutoRegister: z.boolean().optional(),\n })\n .strict()\n .optional(),\n registrationApproval: z\n .object({\n enabled: z.boolean().optional(),\n })\n .strict()\n .optional(),\n hideAuthToast: z.boolean().optional(),\n autoReload: z.boolean().optional(),\n defaultOtherTeam: z.boolean().optional(),\n })\n .strict(),\n endpoints: z.record(ContractIdentifierSchema, z.string()),\n module: z.union([z.literal('*'), z.array(ContractIdentifierSchema)]),\n behavior: z\n .object({\n clearWorkflowFormStorageAfterUpdate: z.boolean().optional(),\n autoApproveOAuth: z.boolean().optional(),\n rememberWorkflowModelSelection: z.boolean().optional(),\n })\n .strict(),\n dataManagement: z\n .object({\n favoriteOntologyId: z.string().optional(),\n pairedOntologyId: z.string().optional(),\n galleryOntologyIds: z.array(ContractIdentifierSchema).max(20).optional(),\n galleryOntologyId: z.string().optional(),\n dataBrowserDefaultOntologyId: z.string().optional(),\n workflowResultOntologyId: z.string().optional(),\n homeAdvertisement: z\n .object({\n ontologyId: ContractIdentifierSchema,\n viewId: ContractIdentifierSchema.optional(),\n viewType: z.enum(['filter', 'container', 'share_link']).optional(),\n teamId: ContractIdentifierSchema.optional(),\n teamOnly: z.boolean().optional(),\n pageSize: z.number().int().positive().optional(),\n sortBy: z.enum(['pin_order', 'asset_id', 'updated_timestamp', 'created_timestamp']).optional(),\n sortOrder: z.enum(['asc', 'desc']).optional(),\n fieldMap: z.record(z.string(), z.string()).optional(),\n columnIds: z.record(z.string(), z.string()).optional(),\n })\n .strict()\n .optional(),\n homeShortcutBackground: z\n .object({\n ontologyId: ContractIdentifierSchema,\n viewId: ContractIdentifierSchema.optional(),\n viewType: z.enum(['filter', 'container', 'share_link']).optional(),\n teamId: ContractIdentifierSchema.optional(),\n teamOnly: z.boolean().optional(),\n pageSize: z.number().int().positive().optional(),\n sortBy: z.enum(['pin_order', 'asset_id', 'updated_timestamp']).optional(),\n sortOrder: z.enum(['asc', 'desc']).optional(),\n fieldMap: z.record(z.string(), z.string()).optional(),\n columnIds: z.record(z.string(), z.string()).optional(),\n })\n .strict()\n .optional(),\n homeTrendAssistant: z\n .object({\n ontologyId: ContractIdentifierSchema.optional(),\n viewId: ContractIdentifierSchema.optional(),\n viewInstanceId: ContractIdentifierSchema.optional(),\n viewName: z.string().optional(),\n teamId: ContractIdentifierSchema.optional(),\n designOptionsWorkflowId: ContractIdentifierSchema.optional(),\n tep: z\n .object({\n baseUrl: z.string().optional(),\n timeoutMs: z.number().int().positive().optional(),\n })\n .strict()\n .optional(),\n runtime: z\n .object({\n appId: ContractIdentifierSchema,\n tepBaseUrlConfigured: z.boolean(),\n tepAuthorizationConfigured: z.boolean(),\n tepCookieConfigured: z.boolean(),\n })\n .strict()\n .optional(),\n })\n .strict()\n .optional(),\n staticTrendReport: z\n .object({\n ontologyId: ContractIdentifierSchema,\n viewId: ContractIdentifierSchema.optional(),\n teamId: ContractIdentifierSchema.optional(),\n })\n .strict()\n .optional(),\n trendRadar: TenantTrendRadarSourcesSchema.optional(),\n sharing: z\n .object({\n silentViewLinks: z\n .object({\n enabled: z.boolean().optional(),\n placement: z\n .object({\n mode: z.enum(['sourceOntology', 'ontology']).optional(),\n ontologyId: ContractIdentifierSchema.optional(),\n parentId: ContractIdentifierSchema.optional(),\n navId: ContractIdentifierSchema.optional(),\n })\n .strict()\n .optional(),\n })\n .strict()\n .optional(),\n shareAccess: z\n .object({\n publicLinksEnabled: z.boolean().optional(),\n passwordGateEnabled: z.boolean().optional(),\n passwordAccessTtlSeconds: z.number().int().positive().optional(),\n defaultViewTreeDelivery: z.enum(['manual', 'auto']).optional(),\n })\n .strict()\n .optional(),\n shareDialog: z\n .object({\n uiVersion: z.enum(['legacy', 'simplified']).optional(),\n audience: z\n .object({\n enabled: z.boolean().optional(),\n allowed: z.array(z.enum(['user', 'team', 'public'])).optional(),\n default: z.enum(['user', 'team', 'public']).optional(),\n })\n .strict()\n .optional(),\n accessLevel: z\n .object({\n enabled: z.boolean().optional(),\n allowed: z.array(z.enum(['read', 'write'])).optional(),\n default: z.enum(['read', 'write']).optional(),\n })\n .strict()\n .optional(),\n viewTreeDelivery: z\n .object({\n enabled: z.boolean().optional(),\n allowed: z.array(z.enum(['manual', 'auto'])).optional(),\n default: z.enum(['manual', 'auto']).optional(),\n })\n .strict()\n .optional(),\n })\n .strict()\n .optional(),\n personalNotifications: z.object({ supported: z.boolean() }).strict().optional(),\n })\n .strict()\n .optional(),\n })\n .strict()\n .optional(),\n kernelRuntime: z\n .object({\n integrations: z\n .object({\n harbor: z\n .object({\n endpoint: z.string().optional(),\n projectScopes: z.array(z.string()).optional(),\n authMode: z.string().optional(),\n principal: z.string().optional(),\n autoSync: z.boolean().optional(),\n proxyUrl: z.string().optional(),\n })\n .strict()\n .optional(),\n gitlab: z\n .object({\n baseUrl: z.string().optional(),\n groupScopes: z.array(z.string()).optional(),\n tokenMode: z.string().optional(),\n deployProjectPath: z.string().optional(),\n deploymentReportsEnabled: z.boolean().optional(),\n proxyUrl: z.string().optional(),\n })\n .strict()\n .optional(),\n kubernetes: z\n .object({\n accessMode: z.string().optional(),\n clusterAlias: z.string().optional(),\n agentProjectPath: z.string().optional(),\n agentName: z.string().optional(),\n namespaceScopes: z.array(z.string()).optional(),\n rolloutObserverEnabled: z.boolean().optional(),\n proxyUrl: z.string().optional(),\n })\n .strict()\n .optional(),\n })\n .strict()\n .optional(),\n })\n .strict()\n .optional(),\n data: z.object({}).strict().optional(),\n storage: z\n .object({\n presignMode: z.enum(['frontend', 'backend', 'both']).optional(),\n presign: z\n .object({\n expiresInSeconds: z.number().int().positive(),\n buckets: z.array(\n z\n .object({\n id: ContractIdentifierSchema,\n provider: ContractIdentifierSchema,\n preferredUrlPatternId: ContractIdentifierSchema,\n urlPatterns: z.array(\n z\n .object({\n id: ContractIdentifierSchema,\n type: z.enum(['bucket-hostname', 'provider-hostname']),\n hostname: z.string().trim().min(1),\n preferred: z.boolean().optional(),\n bucketSegment: z.string().optional(),\n })\n .strict(),\n ),\n })\n .strict(),\n ),\n })\n .strict()\n .optional(),\n })\n .strict()\n .optional(),\n monkeyData: z.object({ baseUrl: z.string().optional() }).strict().optional(),\n })\n .strict();\n\nexport const DeclarativeRuntimeRolloutCapabilitySchema = z\n .object({\n contract: z.literal('DeclarativeRuntimeRolloutCapability'),\n schemaVersion: z.literal(1),\n state: z.enum(['disabled', 'enabled']),\n apiVersion: ContractIdentifierSchema,\n enabledSurfaces: z.array(z.enum(['studio', 'kernel'])),\n generation: z.number().int().nonnegative(),\n etag: z.string().trim().min(1),\n })\n .strict();\n\nexport const TenantProductConfigSchema = z\n .object({\n contract: z.literal('TenantProductConfig'),\n tenantId: ContractIdentifierSchema,\n appId: ContractIdentifierSchema,\n environment: ContractIdentifierSchema,\n designTokens: TenantDesignTokensConfigSchema,\n moduleRefs: z.array(ContractIdentifierSchema).default([]),\n pageRefs: z.array(ContractIdentifierSchema).default([]),\n featureFlags: z.record(z.string(), z.boolean()).default({}),\n authBinding: TenantAuthBindingsSchema,\n dataBinding: TenantDataBindingsSchema,\n sourceMap: z.record(z.string(), ContractIdentifierSchema),\n warnings: z.array(z.string()).default([]),\n menus: MenuDefinitionSetSchema.optional(),\n applicationConfig: TenantApplicationConfigSchema,\n declarativeRuntime: DeclarativeRuntimeRolloutCapabilitySchema.optional(),\n })\n .strict();\n\n/** Browser-safe projection. tokenSources and all other server-only values are structurally impossible here. */\nexport const TenantRuntimeConfigSchema = z\n .object({\n contract: z.literal('TenantRuntimeConfig'),\n tenantId: ContractIdentifierSchema,\n appId: ContractIdentifierSchema,\n environment: ContractIdentifierSchema,\n designTokens: ResolvedThemeTokensSchema,\n moduleRefs: z.array(ContractIdentifierSchema).default([]),\n pageRefs: z.array(ContractIdentifierSchema).default([]),\n featureFlags: z.record(z.string(), z.boolean()).default({}),\n authBinding: TenantAuthBindingsSchema,\n dataBinding: TenantDataBindingsSchema,\n sourceMap: z.record(z.string(), ContractIdentifierSchema),\n warnings: z.array(z.string()).default([]),\n menuBundle: MenuRuntimeBundleSchema.optional(),\n applicationConfig: TenantApplicationConfigSchema,\n declarativeRuntime: DeclarativeRuntimeRolloutCapabilitySchema.optional(),\n })\n .strict();\n\nexport type TenantProductConfig = z.infer<typeof TenantProductConfigSchema>;\nexport type TenantRuntimeConfig = z.infer<typeof TenantRuntimeConfigSchema>;\nexport type DeclarativeRuntimeRolloutCapability = z.infer<typeof DeclarativeRuntimeRolloutCapabilitySchema>;\nexport type TenantApplicationConfig = z.infer<typeof TenantApplicationConfigSchema>;\nexport type TenantAgentThemeConfig = z.infer<typeof TenantAgentThemeConfigSchema>;\nexport type TenantListFooterConfig = z.infer<typeof TenantListFooterConfigSchema>;\nexport type CurrentUserMenuDisplayText = z.infer<typeof CurrentUserMenuDisplayTextSchema>;\nexport type CurrentUserMenuNavigationItem = z.infer<typeof CurrentUserMenuNavigationItemSchema>;\nexport type CurrentUserMenuControlItem = z.infer<typeof CurrentUserMenuControlItemSchema>;\nexport type CurrentUserMenuActionItem = z.infer<typeof CurrentUserMenuActionItemSchema>;\nexport type CurrentUserMenuItem = z.infer<typeof CurrentUserMenuItemSchema>;\nexport type CurrentUserMenuSection = z.infer<typeof CurrentUserMenuSectionSchema>;\nexport type CurrentUserMenuConfig = z.infer<typeof CurrentUserMenuConfigSchema>;\nexport type CurrentUserMenuProfile = z.infer<typeof CurrentUserMenuProfileSchema>;\nexport type TenantLandingPageConfig = z.infer<typeof TenantLandingPageConfigSchema>;\nexport type TenantWorkbenchConfig = z.infer<typeof TenantWorkbenchConfigSchema>;\nexport type TenantWorkbenchPageContext = z.infer<typeof TenantWorkbenchPageContextSchema>;\nexport type TenantWorkbenchPageEnvelope = z.infer<typeof TenantWorkbenchPageEnvelopeSchema>;\nexport type TenantWorkbenchPageGroup = z.infer<typeof TenantWorkbenchPageGroupSchema>;\nexport type DesignTokenSource = z.infer<typeof DesignTokenSourceSchema>;\nexport type TenantDesignTokensConfig = z.infer<typeof TenantDesignTokensConfigSchema>;\nexport type TenantAuthBinding = z.infer<typeof TenantAuthBindingSchema>;\nexport type TenantDataBinding = z.infer<typeof TenantDataBindingSchema>;\nexport type TenantTrendRadarSource = z.infer<typeof TenantTrendRadarSourceSchema>;\nexport type TenantTrendRadarCollectionTarget = z.infer<typeof TenantTrendRadarCollectionTargetSchema>;\nexport type TenantTrendRadarDerivedMetrics = z.infer<typeof TenantTrendRadarDerivedMetricsSchema>;\nexport type TenantTrendRadarEvaluation = z.infer<typeof TenantTrendRadarEvaluationSchema>;\nexport type TenantTrendRadarSources = z.infer<typeof TenantTrendRadarSourcesSchema>;\nexport type ThemeHeadbar = z.infer<typeof ThemeHeadbarSchema>;\nexport type TenantHeadbarModuleItem = z.infer<typeof TenantHeadbarModuleItemSchema>;\n","import { z } from 'zod';\nimport {\n THEME_TOKEN_TYPES,\n validateThemeTokensDocument,\n validateThemeTokensDocumentStructure,\n type ResolvedThemeToken,\n type ResolvedThemeTokens,\n type ThemeColorValue,\n type ThemeDimensionValue,\n type ThemeDurationValue,\n type ThemeToken,\n type ThemeTokenDeprecated,\n type ThemeTokenExtensions,\n type ThemeTokenGroup,\n type ThemeTokenReference,\n type ThemeTokens,\n type ThemeTokenType,\n type ThemeTokenValidationIssue,\n} from '../theme-tokens/core';\n\nexport const ThemeTokenTypeSchema = z.enum(THEME_TOKEN_TYPES);\n\nexport const ThemeTokenSchema = z.record(z.string(), z.unknown()).superRefine((input, context) => {\n const issues = validateThemeTokensDocumentStructure({ token: input });\n for (const issue of issues) {\n context.addIssue({ code: 'custom', message: `${issue.path} ${issue.message}` });\n }\n});\n\nexport const ThemeTokenGroupSchema = z.record(z.string(), z.unknown()).superRefine((input, context) => {\n const issues = validateThemeTokensDocumentStructure(input);\n for (const issue of issues) {\n context.addIssue({ code: 'custom', message: `${issue.path} ${issue.message}` });\n }\n});\n\n/**\n * A complete Design Tokens Community Group 2025.10 token document.\n *\n * The document root is the DTCG group/token tree itself. Tenant identity,\n * source paths, feature flags and runtime options deliberately live outside it.\n */\nexport const ThemeTokensSchema: z.ZodType<ThemeTokens> = z\n .record(z.string(), z.unknown())\n .superRefine((input, context) => {\n const issues = validateThemeTokensDocument(input);\n for (const issue of issues) {\n context.addIssue({ code: 'custom', message: `${issue.path} ${issue.message}` });\n }\n });\n\nconst unresolvedReference = /^\\{[^{}]+\\}$/;\n\n/** A browser-safe DTCG document whose aliases and JSON Pointer references have already been materialized. */\nexport const ResolvedThemeTokensSchema: z.ZodType<ThemeTokens> = ThemeTokensSchema.superRefine((input, context) => {\n const visit = (value: unknown, path: (string | number)[]): void => {\n if (typeof value === 'string' && unresolvedReference.test(value)) {\n context.addIssue({ code: 'custom', path, message: 'Resolved theme tokens cannot contain token aliases.' });\n return;\n }\n if (Array.isArray(value)) {\n value.forEach((item, index) => visit(item, [...path, index]));\n return;\n }\n if (!value || typeof value !== 'object') return;\n for (const [key, child] of Object.entries(value as Record<string, unknown>)) {\n if (key === '$ref') context.addIssue({ code: 'custom', path: [...path, key], message: 'Resolved theme tokens cannot contain $ref.' });\n visit(child, [...path, key]);\n }\n };\n visit(input, []);\n});\n\nexport type {\n ResolvedThemeToken,\n ResolvedThemeTokens,\n ThemeColorValue,\n ThemeDimensionValue,\n ThemeDurationValue,\n ThemeToken,\n ThemeTokenDeprecated,\n ThemeTokenExtensions,\n ThemeTokenGroup,\n ThemeTokenReference,\n ThemeTokens,\n ThemeTokenType,\n ThemeTokenValidationIssue,\n};\n","import Ajv, { type ErrorObject, type ValidateFunction } from 'ajv';\nimport dtcgFormatSchema from '../contracts/dtcg-format.schema.json';\n\nexport const THEME_TOKEN_TYPES = [\n 'color',\n 'dimension',\n 'fontFamily',\n 'fontWeight',\n 'duration',\n 'cubicBezier',\n 'number',\n 'strokeStyle',\n 'border',\n 'transition',\n 'shadow',\n 'gradient',\n 'typography',\n] as const;\n\nexport type ThemeTokenType = (typeof THEME_TOKEN_TYPES)[number];\nexport type ThemeTokenDeprecated = boolean | string;\nexport type ThemeTokenExtensions = Record<string, unknown>;\n\nexport interface ThemeTokenReference {\n $ref: string;\n}\n\nexport interface ThemeToken {\n $value?: unknown;\n $ref?: string;\n $type?: ThemeTokenType;\n $description?: string;\n $deprecated?: ThemeTokenDeprecated;\n $extensions?: ThemeTokenExtensions;\n}\n\nexport interface ThemeTokenGroup {\n [name: string]: unknown;\n}\n\nexport type ThemeTokens = Record<string, unknown>;\n\nexport interface ThemeColorValue {\n colorSpace:\n | 'srgb'\n | 'srgb-linear'\n | 'hsl'\n | 'hwb'\n | 'lab'\n | 'lch'\n | 'oklab'\n | 'oklch'\n | 'display-p3'\n | 'a98-rgb'\n | 'prophoto-rgb'\n | 'rec2020'\n | 'xyz-d65'\n | 'xyz-d50';\n components: [number | 'none', number | 'none', number | 'none'];\n alpha?: number;\n hex?: string;\n}\n\nexport interface ThemeDimensionValue {\n value: number;\n unit: 'px' | 'rem';\n}\n\nexport interface ThemeDurationValue {\n value: number;\n unit: 'ms' | 's';\n}\n\nexport interface ResolvedThemeToken {\n path: string;\n type: ThemeTokenType;\n value: unknown;\n description?: string;\n deprecated?: ThemeTokenDeprecated;\n extensions?: ThemeTokenExtensions;\n}\n\nexport interface ResolvedThemeTokens {\n document: ThemeTokens;\n materializedDocument: ThemeTokens;\n resolvedDocument: ThemeTokens;\n tokens: ReadonlyMap<string, ResolvedThemeToken>;\n}\n\nexport interface ThemeTokenValidationIssue {\n path: string;\n message: string;\n}\n\nexport class ThemeTokenValidationError extends TypeError {\n public readonly issues: readonly ThemeTokenValidationIssue[];\n\n constructor(message: string, issues: ThemeTokenValidationIssue[] = []) {\n super(message);\n this.name = 'ThemeTokenValidationError';\n this.issues = issues;\n }\n}\n\nconst schema = dtcgFormatSchema as Record<string, unknown>;\nconst ajv = new Ajv({\n allErrors: true,\n strict: false,\n strictNumbers: true,\n validateFormats: false,\n});\n\nconst validateDtcgDocument = ajv.compile(schema) as ValidateFunction;\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return value !== null && typeof value === 'object' && !Array.isArray(value);\n}\n\nfunction hasOwn(value: Record<string, unknown>, key: string): boolean {\n return Object.prototype.hasOwnProperty.call(value, key);\n}\n\nfunction isToken(value: unknown): value is ThemeToken & Record<string, unknown> {\n return isRecord(value) && (hasOwn(value, '$value') || hasOwn(value, '$ref'));\n}\n\nfunction isGroup(value: unknown): value is ThemeTokenGroup {\n return isRecord(value) && !isToken(value);\n}\n\nfunction cloneJson<T>(value: T): T {\n if (Array.isArray(value)) return value.map((item) => cloneJson(item)) as T;\n if (!isRecord(value)) return value;\n return Object.fromEntries(Object.entries(value).map(([key, item]) => [key, cloneJson(item)])) as T;\n}\n\nfunction formatAjvIssues(errors: ErrorObject[] | null | undefined): ThemeTokenValidationIssue[] {\n return (errors ?? []).map((error) => ({\n path: error.instancePath || '/',\n message: `${error.message ?? 'is invalid'}${\n error.params && Object.keys(error.params).length > 0 ? ` (${JSON.stringify(error.params)})` : ''\n }`,\n }));\n}\n\nexport function validateThemeTokensDocumentStructure(input: unknown): ThemeTokenValidationIssue[] {\n if (validateDtcgDocument(input)) return [];\n return formatAjvIssues(validateDtcgDocument.errors);\n}\n\nexport function assertThemeTokensDocumentStructure(input: unknown): asserts input is ThemeTokens {\n const issues = validateThemeTokensDocumentStructure(input);\n if (issues.length === 0) return;\n const summary = issues.slice(0, 5).map((issue) => `${issue.path} ${issue.message}`).join('; ');\n throw new ThemeTokenValidationError(`Invalid DTCG 2025.10 token document: ${summary}`, issues);\n}\n\nconst GROUP_META_KEYS = new Set(['$schema', '$type', '$description', '$deprecated', '$extensions']);\n\nfunction mergeGroups(\n base: ThemeTokenGroup,\n override: ThemeTokenGroup,\n path: string[],\n sourceMerge: boolean,\n): ThemeTokenGroup {\n const output = cloneJson(base);\n for (const [key, value] of Object.entries(override)) {\n if (key === '$extends') continue;\n if (key.startsWith('$') && key !== '$root') {\n output[key] = cloneJson(value);\n continue;\n }\n if (!hasOwn(output, key)) {\n output[key] = cloneJson(value);\n continue;\n }\n const existing = output[key];\n const existingKind = isToken(existing) ? 'token' : isGroup(existing) ? 'group' : 'metadata';\n const nextKind = isToken(value) ? 'token' : isGroup(value) ? 'group' : 'metadata';\n if (existingKind === 'group' && nextKind === 'group') {\n output[key] = mergeGroups(existing as ThemeTokenGroup, value as ThemeTokenGroup, [...path, key], sourceMerge);\n continue;\n }\n if (existingKind !== nextKind) {\n const reason = sourceMerge ? 'Token sources' : 'Extended groups';\n throw new ThemeTokenValidationError(\n `${reason} cannot change ${[...path, key].join('.')} from ${existingKind} to ${nextKind}.`,\n );\n }\n output[key] = cloneJson(value);\n }\n return output;\n}\n\nfunction decodeJsonPointer(reference: string): string[] {\n if (!reference.startsWith('#/')) {\n throw new ThemeTokenValidationError(`JSON Pointer reference must start with \"#/\": ${reference}`);\n }\n let decoded: string;\n try {\n decoded = decodeURIComponent(reference.slice(1));\n } catch {\n throw new ThemeTokenValidationError(`JSON Pointer contains invalid URI encoding: ${reference}`);\n }\n return decoded.slice(1).split('/').map((segment) => segment.replace(/~1/g, '/').replace(/~0/g, '~'));\n}\n\nfunction getAtSegments(document: unknown, segments: readonly string[], reference: string): unknown {\n let current = document;\n for (const segment of segments) {\n if (Array.isArray(current)) {\n if (!/^(0|[1-9]\\d*)$/.test(segment) || Number(segment) >= current.length) {\n throw new ThemeTokenValidationError(`Unresolved JSON Pointer reference: ${reference}`);\n }\n current = current[Number(segment)];\n continue;\n }\n if (!isRecord(current) || !hasOwn(current, segment)) {\n throw new ThemeTokenValidationError(`Unresolved JSON Pointer reference: ${reference}`);\n }\n current = current[segment];\n }\n return current;\n}\n\nfunction parseCurlyReference(reference: string): string[] | null {\n const match = reference.match(/^\\{([^{}]+)\\}$/);\n return match ? match[1].split('.') : null;\n}\n\nfunction getGroupReference(\n document: ThemeTokens,\n reference: string,\n): { group: ThemeTokenGroup; key: string; path: string[] } {\n const curlyPath = parseCurlyReference(reference);\n const path = curlyPath ?? decodeJsonPointer(reference);\n const target = getAtSegments(document, path, reference);\n if (!isGroup(target)) {\n throw new ThemeTokenValidationError(`Group $extends must reference a group: ${reference}`);\n }\n return { group: target, key: path.join('.'), path };\n}\n\nfunction materializeGroups(document: ThemeTokens): ThemeTokens {\n const resolveGroup = (\n group: ThemeTokenGroup,\n path: string[],\n extendsStack: readonly string[],\n ): ThemeTokenGroup => {\n let merged: ThemeTokenGroup = {};\n const extension = group.$extends;\n if (typeof extension === 'string') {\n const target = getGroupReference(document, extension);\n if (extendsStack.includes(target.key)) {\n throw new ThemeTokenValidationError(\n `Circular group $extends reference: ${[...extendsStack, target.key].join(' -> ')}`,\n );\n }\n const base = resolveGroup(target.group, target.path, [...extendsStack, target.key]);\n merged = mergeGroups(base, group, path, false);\n } else {\n merged = cloneJson(group);\n delete merged.$extends;\n }\n\n for (const [key, value] of Object.entries(merged)) {\n if (key.startsWith('$')) continue;\n if (isGroup(value)) {\n merged[key] = resolveGroup(value, [...path, key], extendsStack);\n }\n }\n return merged;\n };\n\n return resolveGroup(document, [], ['$root-document']) as ThemeTokens;\n}\n\ninterface CollectedToken {\n token: ThemeToken & Record<string, unknown>;\n inheritedType?: ThemeTokenType;\n inheritedDeprecated?: ThemeTokenDeprecated;\n}\n\nfunction collectTokens(document: ThemeTokens): Map<string, CollectedToken> {\n const tokens = new Map<string, CollectedToken>();\n const visitGroup = (\n group: ThemeTokenGroup,\n path: string[],\n inheritedType?: ThemeTokenType,\n inheritedDeprecated?: ThemeTokenDeprecated,\n ) => {\n const groupType = (group.$type as ThemeTokenType | undefined) ?? inheritedType;\n const groupDeprecated = (group.$deprecated as ThemeTokenDeprecated | undefined) ?? inheritedDeprecated;\n for (const [key, value] of Object.entries(group)) {\n if (GROUP_META_KEYS.has(key) || key === '$extends') continue;\n const tokenPath = [...path, key].join('.');\n if (isToken(value)) {\n tokens.set(tokenPath, {\n token: value,\n inheritedType: groupType,\n inheritedDeprecated: groupDeprecated,\n });\n } else if (isGroup(value)) {\n visitGroup(value, [...path, key], groupType, groupDeprecated);\n }\n }\n };\n visitGroup(document, []);\n return tokens;\n}\n\nfunction expectedChildType(parentType: ThemeTokenType | undefined, key: string): ThemeTokenType | undefined {\n switch (parentType) {\n case 'border':\n return ({ color: 'color', width: 'dimension', style: 'strokeStyle' } as const)[key];\n case 'transition':\n return ({ duration: 'duration', delay: 'duration', timingFunction: 'cubicBezier' } as const)[key];\n case 'shadow':\n return ({ color: 'color', offsetX: 'dimension', offsetY: 'dimension', blur: 'dimension', spread: 'dimension' } as const)[key];\n case 'gradient':\n return ({ color: 'color', position: 'number' } as const)[key];\n case 'typography':\n return ({\n fontFamily: 'fontFamily',\n fontSize: 'dimension',\n fontWeight: 'fontWeight',\n letterSpacing: 'dimension',\n lineHeight: 'number',\n } as const)[key];\n case 'strokeStyle':\n return key === 'dashArray' ? 'dimension' : undefined;\n case 'dimension':\n case 'duration':\n return key === 'value' ? 'number' : undefined;\n case 'color':\n return key === 'alpha' || key === 'components' ? 'number' : undefined;\n default:\n return undefined;\n }\n}\n\nfunction assertResolvedValueMatchesType(type: ThemeTokenType, value: unknown, path: string): void {\n const syntheticDocument = {\n token: {\n $type: type,\n $value: value,\n },\n };\n const issues = validateThemeTokensDocumentStructure(syntheticDocument);\n if (issues.length === 0) return;\n const mapped = issues.map((issue) => ({\n path: `${path}${issue.path.replace(/^\\/token(?:\\/\\$value)?/, '')}`,\n message: issue.message,\n }));\n const summary = mapped.slice(0, 5).map((issue) => `${issue.path} ${issue.message}`).join('; ');\n throw new ThemeTokenValidationError(`Token ${path} has an invalid ${type} value: ${summary}`, mapped);\n}\n\nexport function resolveThemeTokens(input: unknown): ResolvedThemeTokens {\n assertThemeTokensDocumentStructure(input);\n const document = cloneJson(input);\n const materializedDocument = materializeGroups(document);\n const collected = collectTokens(materializedDocument);\n const resolved = new Map<string, ResolvedThemeToken>();\n const resolvingTokens: string[] = [];\n\n const resolveToken = (path: string): ResolvedThemeToken => {\n const cached = resolved.get(path);\n if (cached) return cached;\n const entry = collected.get(path);\n if (!entry) throw new ThemeTokenValidationError(`Unknown token reference: ${path}`);\n if (resolvingTokens.includes(path)) {\n throw new ThemeTokenValidationError(`Circular token reference: ${[...resolvingTokens, path].join(' -> ')}`);\n }\n resolvingTokens.push(path);\n\n const token = entry.token;\n let tokenType = token.$type ?? entry.inheritedType;\n\n const inferReferenceType = (reference: string): ThemeTokenType | undefined => {\n const segments = decodeJsonPointer(reference);\n for (let length = segments.length; length > 0; length -= 1) {\n const candidate = segments.slice(0, length).join('.');\n if (!collected.has(candidate)) continue;\n const owner = resolveToken(candidate);\n if (length === segments.length || segments[length] === '$value') return owner.type;\n return undefined;\n }\n return undefined;\n };\n\n if (!tokenType && typeof token.$value === 'string') {\n const aliasPath = parseCurlyReference(token.$value)?.join('.');\n if (aliasPath) tokenType = resolveToken(aliasPath).type;\n }\n if (!tokenType && typeof token.$ref === 'string') tokenType = inferReferenceType(token.$ref);\n if (!tokenType) {\n resolvingTokens.pop();\n throw new ThemeTokenValidationError(\n `Token ${path} has no $type, does not inherit one, and cannot infer one from its reference.`,\n );\n }\n\n const resolvingPointers: string[] = [];\n const resolvePointer = (\n reference: string,\n expectedType: ThemeTokenType | undefined,\n location: string,\n ): unknown => {\n const marker = `${path}:${reference}`;\n if (resolvingPointers.includes(marker)) {\n throw new ThemeTokenValidationError(\n `Circular JSON Pointer reference at ${location}: ${[...resolvingPointers, marker].join(' -> ')}`,\n );\n }\n resolvingPointers.push(marker);\n const segments = decodeJsonPointer(reference);\n const target = getAtSegments(materializedDocument, segments, reference);\n let result: unknown;\n if (isToken(target)) {\n const targetPath = segments.join('.');\n const targetToken = resolveToken(targetPath);\n if (expectedType && targetToken.type !== expectedType) {\n throw new ThemeTokenValidationError(\n `Reference at ${location} expects ${expectedType} but ${targetPath} is ${targetToken.type}.`,\n );\n }\n result = targetToken.value;\n } else if (isGroup(target)) {\n throw new ThemeTokenValidationError(`JSON Pointer at ${location} references a group: ${reference}`);\n } else {\n result = resolveValue(target, expectedType, location);\n }\n resolvingPointers.pop();\n return result;\n };\n\n const resolveValue = (\n value: unknown,\n expectedType: ThemeTokenType | undefined,\n location: string,\n contextType: ThemeTokenType | undefined = expectedType,\n ): unknown => {\n if (typeof value === 'string') {\n const alias = parseCurlyReference(value);\n if (!alias) return value;\n const aliasPath = alias.join('.');\n const target = resolveToken(aliasPath);\n if (expectedType && target.type !== expectedType) {\n throw new ThemeTokenValidationError(\n `Reference at ${location} expects ${expectedType} but ${aliasPath} is ${target.type}.`,\n );\n }\n return cloneJson(target.value);\n }\n if (Array.isArray(value)) {\n return value.map((item, index) => {\n const childType = contextType === 'cubicBezier' ? 'number'\n : contextType === 'strokeStyle' ? 'dimension'\n : undefined;\n return resolveValue(item, childType, `${location}/${index}`, contextType);\n });\n }\n if (!isRecord(value)) return value;\n if (Object.keys(value).length === 1 && typeof value.$ref === 'string') {\n return resolvePointer(value.$ref, expectedType, location);\n }\n return Object.fromEntries(Object.entries(value).map(([key, child]) => {\n const childType = expectedChildType(contextType, key);\n return [key, resolveValue(child, childType, `${location}/${key}`, contextType)];\n }));\n };\n\n let value: unknown;\n if (typeof token.$ref === 'string') {\n value = resolvePointer(token.$ref, tokenType, path);\n } else {\n value = resolveValue(token.$value, tokenType, path);\n }\n assertResolvedValueMatchesType(tokenType, value, path);\n\n const result: ResolvedThemeToken = {\n path,\n type: tokenType,\n value,\n description: token.$description,\n deprecated: token.$deprecated ?? entry.inheritedDeprecated,\n extensions: token.$extensions,\n };\n resolvingTokens.pop();\n resolved.set(path, result);\n return result;\n };\n\n for (const path of collected.keys()) resolveToken(path);\n assertBentoTokens(resolved);\n const resolvedDocument: ThemeTokens = {};\n for (const token of resolved.values()) {\n const segments = token.path.split('.');\n let parent = resolvedDocument as Record<string, unknown>;\n segments.forEach((segment, index) => {\n if (index === segments.length - 1) {\n parent[segment] = {\n $type: token.type,\n $value: cloneJson(token.value),\n ...(token.description !== undefined ? { $description: token.description } : {}),\n ...(token.deprecated !== undefined ? { $deprecated: cloneJson(token.deprecated) } : {}),\n ...(token.extensions !== undefined ? { $extensions: cloneJson(token.extensions) } : {}),\n };\n return;\n }\n const existing = parent[segment];\n if (!isRecord(existing)) parent[segment] = {};\n parent = parent[segment] as Record<string, unknown>;\n });\n }\n return {\n document,\n materializedDocument,\n resolvedDocument,\n tokens: resolved,\n };\n}\n\nexport function validateThemeTokensDocument(input: unknown): ThemeTokenValidationIssue[] {\n const structuralIssues = validateThemeTokensDocumentStructure(input);\n if (structuralIssues.length > 0) return structuralIssues;\n try {\n resolveThemeTokens(input);\n return [];\n } catch (error) {\n if (error instanceof ThemeTokenValidationError) {\n return error.issues.length > 0 ? [...error.issues] : [{ path: '/', message: error.message }];\n }\n return [{ path: '/', message: error instanceof Error ? error.message : String(error) }];\n }\n}\n\nexport function mergeThemeTokenDocuments(inputs: readonly unknown[]): ThemeTokens {\n if (inputs.length === 0) {\n throw new ThemeTokenValidationError('At least one DTCG token source is required.');\n }\n let merged: ThemeTokenGroup = {};\n for (const input of inputs) {\n assertThemeTokensDocumentStructure(input);\n merged = mergeGroups(merged, input, [], true);\n }\n resolveThemeTokens(merged);\n return merged as ThemeTokens;\n}\n\nconst REQUIRED_SEMANTIC_COLOR_PATHS = [\n 'background',\n 'foreground',\n 'card',\n 'card-foreground',\n 'popover',\n 'popover-foreground',\n 'primary',\n 'primary-foreground',\n 'secondary',\n 'secondary-foreground',\n 'muted',\n 'muted-foreground',\n 'accent',\n 'accent-foreground',\n 'destructive',\n 'destructive-foreground',\n 'success',\n 'success-foreground',\n 'warning',\n 'warning-foreground',\n 'border',\n 'input',\n 'ring',\n 'neocard',\n] as const;\n\n/** The complete semantic surface consumed by Studio and its Kernel surfaces. */\nexport const MONKEYS_REQUIRED_THEME_TOKEN_PATHS: Readonly<Record<string, ThemeTokenType>> = Object.freeze({\n ...Object.fromEntries(\n REQUIRED_SEMANTIC_COLOR_PATHS.flatMap((name) => [\n [`semantic.color.${name}.light`, 'color'],\n [`semantic.color.${name}.dark`, 'color'],\n ]),\n ),\n 'semantic.radius.base': 'dimension',\n 'semantic.spacing.global.compact': 'dimension',\n 'semantic.spacing.global.default': 'dimension',\n 'semantic.spacing.global.comfortable': 'dimension',\n 'semantic.font.body': 'fontFamily',\n});\n\n/** Validate product completeness after all explicitly configured layers merge. */\nexport function assertMonkeysThemeTokensComplete(input: unknown): ThemeTokens {\n const resolved = resolveThemeTokens(input);\n const issues: ThemeTokenValidationIssue[] = [];\n for (const [path, expectedType] of Object.entries(MONKEYS_REQUIRED_THEME_TOKEN_PATHS)) {\n const token = resolved.tokens.get(path);\n if (!token) {\n issues.push({ path: `/${path.replace(/\\./g, '/')}`, message: 'Required Monkeys semantic token is missing.' });\n continue;\n }\n if (token.type !== expectedType) {\n issues.push({\n path: `/${path.replace(/\\./g, '/')}`,\n message: `Required Monkeys semantic token must use type ${expectedType}.`,\n });\n }\n }\n if (issues.length > 0) {\n throw new ThemeTokenValidationError('The merged design-token release is incomplete.', issues);\n }\n return resolved.document;\n}\n\n/** Optional component semantics; older token documents remain valid. */\nfunction assertBentoTokens(tokens: ReadonlyMap<string, ResolvedThemeToken>): void {\n const fields: Record<string, ThemeTokenType> = {\n background: 'color', borderColor: 'color', borderWidth: 'dimension',\n borderStyle: 'strokeStyle', radius: 'dimension', shadow: 'shadow',\n padding: 'dimension', gap: 'dimension',\n };\n for (const [path, token] of tokens) {\n if (!path.startsWith('semantic.bento.')) continue;\n const match = /^semantic\\.bento\\.(?:default|levels\\.level([1-9]\\d*))\\.([a-zA-Z]+)(?:\\.([a-z]+))?$/.exec(path);\n const field = match?.[2];\n const axis = match?.[3];\n const expected = field && fields[field];\n const modes = field === 'padding' || field === 'gap'\n ? ['compact', 'default', 'comfortable'] : ['light', 'dark'];\n if (!match || !expected || token.type !== expected || (axis && !modes.includes(axis))\n || (match[1] && !Number.isSafeInteger(Number(match[1])))) {\n throw new ThemeTokenValidationError('Invalid Bento semantic token.', [{ path, message: 'Expected a supported Bento field, type, level and mode.' }]);\n }\n if (field === 'borderStyle' && typeof token.value !== 'string') {\n throw new ThemeTokenValidationError('Invalid Bento border style.', [{ path, message: 'Bento borders require a CSS stroke keyword.' }]);\n }\n if (token.type === 'dimension' && (token.value as ThemeDimensionValue).value < 0) {\n throw new ThemeTokenValidationError('Invalid Bento dimension.', [{ path, message: 'Bento dimensions must be non-negative.' }]);\n }\n }\n}\n","{\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": \"https://www.designtokens.org/schemas/2025.10/format.json\",\n \"title\": \"DTCG Format Schema\",\n \"description\": \"JSON Schema for the Design Tokens Community Group (DTCG) Format specification.\",\n \"type\": \"object\",\n \"properties\": {\n \"$schema\": {\n \"type\": \"string\",\n \"format\": \"uri-reference\",\n \"description\": \"URI reference to this JSON schema.\",\n \"$comment\": \"$schema is not part of the official DTCG specification.\"\n },\n \"$type\": {\n \"$ref\": \"https://www.designtokens.org/schemas/2025.10/format/tokenType.json\"\n },\n \"$description\": {\n \"type\": \"string\",\n \"description\": \"A plain text description of the group\"\n },\n \"$extensions\": {\n \"type\": \"object\",\n \"description\": \"Vendor-specific extensions\"\n },\n \"$extends\": {\n \"oneOf\": [\n {\n \"$ref\": \"#/definitions/curlyBraceReference\"\n },\n {\n \"$ref\": \"#/definitions/jsonPointerReference\"\n }\n ],\n \"description\": \"Reference to another group to inherit tokens and properties from\"\n },\n \"$deprecated\": {\n \"oneOf\": [\n {\n \"type\": \"boolean\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Whether this group is deprecated\"\n },\n \"$root\": {\n \"$ref\": \"https://www.designtokens.org/schemas/2025.10/format/token.json\"\n }\n },\n \"patternProperties\": {\n \"^[^${}.][^{}.]*$\": {\n \"$ref\": \"https://www.designtokens.org/schemas/2025.10/format/groupOrToken.json\"\n }\n },\n \"additionalProperties\": false,\n \"definitions\": {\n \"tokenOrGroupName\": {\n \"title\": \"Token or Group Name\",\n \"type\": \"string\",\n \"pattern\": \"^[^${}.][^{}.]*$\",\n \"description\": \"Valid token/group names: must not start with $ and must not contain {, }, or .\"\n },\n \"curlyBraceReference\": {\n \"title\": \"Curly Brace Reference\",\n \"type\": \"string\",\n \"pattern\": \"^\\\\{[^${}.][^{}.]*(\\\\.[^${}.][^{}.]*)*\\\\}$\",\n \"description\": \"Curly brace reference (e.g., '{tokenName}' or '{group.nested.token}')\"\n },\n \"jsonPointerReference\": {\n \"title\": \"JSON Pointer Reference\",\n \"type\": \"string\",\n \"pattern\": \"^#/\",\n \"format\": \"json-pointer-uri-fragment\",\n \"description\": \"JSON Pointer reference (RFC 6901) to a location in the document (e.g., '#/path/to/target')\"\n },\n \"jsonPointerReferenceObject\": {\n \"title\": \"JSON Pointer Reference Object\",\n \"type\": \"object\",\n \"properties\": {\n \"$ref\": {\n \"$ref\": \"#/definitions/jsonPointerReference\"\n }\n },\n \"required\": [\"$ref\"],\n \"additionalProperties\": false,\n \"description\": \"Object containing a JSON Pointer reference for property-level references\"\n },\n \"tokenValueReference\": {\n \"title\": \"Token Value Reference\",\n \"oneOf\": [\n {\n \"$ref\": \"#/definitions/curlyBraceReference\"\n },\n {\n \"$ref\": \"#/definitions/jsonPointerReferenceObject\"\n }\n ],\n \"description\": \"A reference to a token value using either curly brace syntax or JSON Pointer syntax\"\n },\n \"https://www.designtokens.org/schemas/2025.10/format/tokenType.json\": {\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": \"https://www.designtokens.org/schemas/2025.10/format/tokenType.json\",\n \"title\": \"TokenType\",\n \"description\": \"A token type in the DTCG specification\",\n \"type\": \"string\",\n \"enum\": [\n \"color\",\n \"dimension\",\n \"fontFamily\",\n \"fontWeight\",\n \"duration\",\n \"cubicBezier\",\n \"number\",\n \"strokeStyle\",\n \"border\",\n \"transition\",\n \"shadow\",\n \"gradient\",\n \"typography\"\n ]\n },\n \"https://www.designtokens.org/schemas/2025.10/format/token.json\": {\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": \"https://www.designtokens.org/schemas/2025.10/format/token.json\",\n \"title\": \"Token\",\n \"description\": \"A token in the DTCG specification\",\n \"type\": \"object\",\n \"properties\": {\n \"$value\": {\n \"description\": \"The token's value - can be a direct value or a reference to another token using curly brace syntax (e.g., '{token.name}'). Mutually exclusive with $ref.\"\n },\n \"$type\": {\n \"$ref\": \"https://www.designtokens.org/schemas/2025.10/format/tokenType.json\"\n },\n \"$ref\": {\n \"$ref\": \"https://www.designtokens.org/schemas/2025.10/format.json#/definitions/jsonPointerReference\"\n },\n \"$description\": {\n \"type\": \"string\",\n \"description\": \"A plain text description of the token\"\n },\n \"$extensions\": {\n \"type\": \"object\",\n \"description\": \"Vendor-specific extensions\"\n },\n \"$deprecated\": {\n \"oneOf\": [\n {\n \"type\": \"boolean\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Whether this token is deprecated\"\n }\n },\n \"additionalProperties\": false,\n \"allOf\": [\n {\n \"description\": \"Tokens cannot define both $value and $ref; they must choose exactly one form of reference or direct value.\",\n \"if\": {\n \"required\": [\"$value\"],\n \"properties\": {\n \"$value\": true\n }\n },\n \"then\": {\n \"not\": {\n \"required\": [\"$ref\"],\n \"properties\": {\n \"$ref\": true\n }\n }\n },\n \"else\": {\n \"required\": [\"$ref\"],\n \"properties\": {\n \"$ref\": true\n }\n }\n },\n {\n \"if\": {\n \"required\": [\"$type\"],\n \"properties\": {\n \"$type\": {\n \"const\": \"color\"\n }\n }\n },\n \"then\": {\n \"properties\": {\n \"$value\": {\n \"oneOf\": [\n {\n \"$ref\": \"https://www.designtokens.org/schemas/2025.10/format/values/color.json\"\n },\n {\n \"$ref\": \"https://www.designtokens.org/schemas/2025.10/format.json#/definitions/tokenValueReference\"\n }\n ]\n }\n }\n }\n },\n {\n \"if\": {\n \"required\": [\"$type\"],\n \"properties\": {\n \"$type\": {\n \"const\": \"dimension\"\n }\n }\n },\n \"then\": {\n \"properties\": {\n \"$value\": {\n \"oneOf\": [\n {\n \"$ref\": \"https://www.designtokens.org/schemas/2025.10/format/values/dimension.json\"\n },\n {\n \"$ref\": \"https://www.designtokens.org/schemas/2025.10/format.json#/definitions/tokenValueReference\"\n }\n ]\n }\n }\n }\n },\n {\n \"if\": {\n \"required\": [\"$type\"],\n \"properties\": {\n \"$type\": {\n \"const\": \"fontFamily\"\n }\n }\n },\n \"then\": {\n \"properties\": {\n \"$value\": {\n \"oneOf\": [\n {\n \"$ref\": \"https://www.designtokens.org/schemas/2025.10/format/values/fontFamily.json\"\n },\n {\n \"$ref\": \"https://www.designtokens.org/schemas/2025.10/format.json#/definitions/tokenValueReference\"\n }\n ]\n }\n }\n }\n },\n {\n \"if\": {\n \"required\": [\"$type\"],\n \"properties\": {\n \"$type\": {\n \"const\": \"fontWeight\"\n }\n }\n },\n \"then\": {\n \"properties\": {\n \"$value\": {\n \"oneOf\": [\n {\n \"$ref\": \"https://www.designtokens.org/schemas/2025.10/format/values/fontWeight.json\"\n },\n {\n \"$ref\": \"https://www.designtokens.org/schemas/2025.10/format.json#/definitions/tokenValueReference\"\n }\n ]\n }\n }\n }\n },\n {\n \"if\": {\n \"required\": [\"$type\"],\n \"properties\": {\n \"$type\": {\n \"const\": \"duration\"\n }\n }\n },\n \"then\": {\n \"properties\": {\n \"$value\": {\n \"oneOf\": [\n {\n \"$ref\": \"https://www.designtokens.org/schemas/2025.10/format/values/duration.json\"\n },\n {\n \"$ref\": \"https://www.designtokens.org/schemas/2025.10/format.json#/definitions/tokenValueReference\"\n }\n ]\n }\n }\n }\n },\n {\n \"if\": {\n \"required\": [\"$type\"],\n \"properties\": {\n \"$type\": {\n \"const\": \"cubicBezier\"\n }\n }\n },\n \"then\": {\n \"properties\": {\n \"$value\": {\n \"oneOf\": [\n {\n \"$ref\": \"https://www.designtokens.org/schemas/2025.10/format/values/cubicBezier.json\"\n },\n {\n \"$ref\": \"https://www.designtokens.org/schemas/2025.10/format.json#/definitions/tokenValueReference\"\n }\n ]\n }\n }\n }\n },\n {\n \"if\": {\n \"required\": [\"$type\"],\n \"properties\": {\n \"$type\": {\n \"const\": \"number\"\n }\n }\n },\n \"then\": {\n \"properties\": {\n \"$value\": {\n \"oneOf\": [\n {\n \"$ref\": \"https://www.designtokens.org/schemas/2025.10/format/values/number.json\"\n },\n {\n \"$ref\": \"https://www.designtokens.org/schemas/2025.10/format.json#/definitions/tokenValueReference\"\n }\n ]\n }\n }\n }\n },\n {\n \"if\": {\n \"required\": [\"$type\"],\n \"properties\": {\n \"$type\": {\n \"const\": \"strokeStyle\"\n }\n }\n },\n \"then\": {\n \"properties\": {\n \"$value\": {\n \"oneOf\": [\n {\n \"$ref\": \"https://www.designtokens.org/schemas/2025.10/format/values/strokeStyle.json\"\n },\n {\n \"$ref\": \"https://www.designtokens.org/schemas/2025.10/format.json#/definitions/tokenValueReference\"\n }\n ]\n }\n }\n }\n },\n {\n \"if\": {\n \"required\": [\"$type\"],\n \"properties\": {\n \"$type\": {\n \"const\": \"border\"\n }\n }\n },\n \"then\": {\n \"properties\": {\n \"$value\": {\n \"oneOf\": [\n {\n \"$ref\": \"https://www.designtokens.org/schemas/2025.10/format/values/border.json\"\n },\n {\n \"$ref\": \"https://www.designtokens.org/schemas/2025.10/format.json#/definitions/tokenValueReference\"\n }\n ]\n }\n }\n }\n },\n {\n \"if\": {\n \"required\": [\"$type\"],\n \"properties\": {\n \"$type\": {\n \"const\": \"transition\"\n }\n }\n },\n \"then\": {\n \"properties\": {\n \"$value\": {\n \"oneOf\": [\n {\n \"$ref\": \"https://www.designtokens.org/schemas/2025.10/format/values/transition.json\"\n },\n {\n \"$ref\": \"https://www.designtokens.org/schemas/2025.10/format.json#/definitions/tokenValueReference\"\n }\n ]\n }\n }\n }\n },\n {\n \"if\": {\n \"required\": [\"$type\"],\n \"properties\": {\n \"$type\": {\n \"const\": \"shadow\"\n }\n }\n },\n \"then\": {\n \"properties\": {\n \"$value\": {\n \"oneOf\": [\n {\n \"$ref\": \"https://www.designtokens.org/schemas/2025.10/format/values/shadow.json\"\n },\n {\n \"$ref\": \"https://www.designtokens.org/schemas/2025.10/format.json#/definitions/tokenValueReference\"\n }\n ]\n }\n }\n }\n },\n {\n \"if\": {\n \"required\": [\"$type\"],\n \"properties\": {\n \"$type\": {\n \"const\": \"gradient\"\n }\n }\n },\n \"then\": {\n \"properties\": {\n \"$value\": {\n \"oneOf\": [\n {\n \"$ref\": \"https://www.designtokens.org/schemas/2025.10/format/values/gradient.json\"\n },\n {\n \"$ref\": \"https://www.designtokens.org/schemas/2025.10/format.json#/definitions/tokenValueReference\"\n }\n ]\n }\n }\n }\n },\n {\n \"if\": {\n \"required\": [\"$type\"],\n \"properties\": {\n \"$type\": {\n \"const\": \"typography\"\n }\n }\n },\n \"then\": {\n \"properties\": {\n \"$value\": {\n \"oneOf\": [\n {\n \"$ref\": \"https://www.designtokens.org/schemas/2025.10/format/values/typography.json\"\n },\n {\n \"$ref\": \"https://www.designtokens.org/schemas/2025.10/format.json#/definitions/tokenValueReference\"\n }\n ]\n }\n }\n }\n },\n {\n \"if\": {\n \"allOf\": [\n {\n \"not\": {\n \"required\": [\"$type\"]\n }\n },\n {\n \"required\": [\"$value\"]\n },\n {\n \"properties\": {\n \"$value\": {\n \"not\": {\n \"$ref\": \"https://www.designtokens.org/schemas/2025.10/format.json#/definitions/tokenValueReference\"\n }\n }\n }\n }\n ]\n },\n \"then\": {\n \"properties\": {\n \"$value\": {\n \"oneOf\": [\n {\n \"$ref\": \"https://www.designtokens.org/schemas/2025.10/format/values/color.json\"\n },\n {\n \"$ref\": \"https://www.designtokens.org/schemas/2025.10/format/values/dimension.json\"\n },\n {\n \"$ref\": \"https://www.designtokens.org/schemas/2025.10/format/values/fontFamily.json\"\n },\n {\n \"$ref\": \"https://www.designtokens.org/schemas/2025.10/format/values/duration.json\"\n },\n {\n \"$ref\": \"https://www.designtokens.org/schemas/2025.10/format/values/cubicBezier.json\"\n },\n {\n \"$ref\": \"https://www.designtokens.org/schemas/2025.10/format/values/strokeStyle.json\"\n },\n {\n \"$ref\": \"https://www.designtokens.org/schemas/2025.10/format/values/border.json\"\n },\n {\n \"$ref\": \"https://www.designtokens.org/schemas/2025.10/format/values/transition.json\"\n },\n {\n \"$ref\": \"https://www.designtokens.org/schemas/2025.10/format/values/shadow.json\"\n },\n {\n \"$ref\": \"https://www.designtokens.org/schemas/2025.10/format/values/gradient.json\"\n },\n {\n \"$ref\": \"https://www.designtokens.org/schemas/2025.10/format/values/typography.json\"\n },\n {\n \"anyOf\": [\n {\n \"$ref\": \"https://www.designtokens.org/schemas/2025.10/format/values/number.json\"\n },\n {\n \"$ref\": \"https://www.designtokens.org/schemas/2025.10/format/values/fontWeight.json\"\n }\n ]\n }\n ]\n }\n }\n }\n }\n ]\n },\n \"https://www.designtokens.org/schemas/2025.10/format/values/color.json\": {\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": \"https://www.designtokens.org/schemas/2025.10/format/values/color.json\",\n \"title\": \"Color Value\",\n \"description\": \"Value schema for color type tokens. Represents a color in a specific color space.\",\n \"type\": \"object\",\n \"properties\": {\n \"colorSpace\": {\n \"description\": \"The color space or color model used to represent the color\",\n \"oneOf\": [\n {\n \"type\": \"string\",\n \"enum\": [\n \"srgb\",\n \"srgb-linear\",\n \"hsl\",\n \"hwb\",\n \"lab\",\n \"lch\",\n \"oklab\",\n \"oklch\",\n \"display-p3\",\n \"a98-rgb\",\n \"prophoto-rgb\",\n \"rec2020\",\n \"xyz-d65\",\n \"xyz-d50\"\n ]\n },\n {\n \"$ref\": \"https://www.designtokens.org/schemas/2025.10/format.json#/definitions/jsonPointerReferenceObject\"\n }\n ]\n },\n \"components\": {\n \"description\": \"Array of color components. The number and meaning of components depend on the color space. Each component can be a number or the 'none' keyword.\",\n \"oneOf\": [\n {\n \"type\": \"array\"\n },\n {\n \"$ref\": \"https://www.designtokens.org/schemas/2025.10/format.json#/definitions/jsonPointerReferenceObject\"\n }\n ]\n },\n \"alpha\": {\n \"description\": \"The alpha (transparency) value of the color. 0 is fully transparent, 1 is fully opaque. If omitted, defaults to 1.\",\n \"oneOf\": [\n {\n \"type\": \"number\",\n \"minimum\": 0,\n \"maximum\": 1\n },\n {\n \"$ref\": \"https://www.designtokens.org/schemas/2025.10/format.json#/definitions/jsonPointerReferenceObject\"\n }\n ]\n },\n \"hex\": {\n \"description\": \"Optional fallback value in 6-digit CSS hex color notation (e.g., '#ff00ff'). Must be 6 digits to avoid conflicts with the alpha value.\",\n \"$comment\": \"Only JSON Pointer references (not curly brace references) are allowed for hex because no string token type exists in the specification that could be referenced with curly braces.\",\n \"oneOf\": [\n {\n \"type\": \"string\",\n \"pattern\": \"^#[0-9a-fA-F]{6}$\"\n },\n {\n \"$ref\": \"https://www.designtokens.org/schemas/2025.10/format.json#/definitions/jsonPointerReferenceObject\"\n }\n ]\n }\n },\n \"required\": [\"colorSpace\", \"components\"],\n \"additionalProperties\": false,\n \"definitions\": {\n \"zeroToOneComponent\": {\n \"title\": \"Zero to One Component\",\n \"description\": \"A color component normalized to the range [0-1] (e.g., RGB values, XYZ values)\",\n \"oneOf\": [\n {\n \"type\": \"number\",\n \"minimum\": 0,\n \"maximum\": 1\n },\n {\n \"type\": \"string\",\n \"const\": \"none\"\n },\n {\n \"$ref\": \"https://www.designtokens.org/schemas/2025.10/format.json#/definitions/jsonPointerReferenceObject\"\n }\n ]\n },\n \"hueComponent\": {\n \"title\": \"Hue Component\",\n \"description\": \"Hue angle from 0 up to (but not including) 360 degrees\",\n \"oneOf\": [\n {\n \"type\": \"number\",\n \"minimum\": 0,\n \"exclusiveMaximum\": 360\n },\n {\n \"type\": \"string\",\n \"const\": \"none\"\n },\n {\n \"$ref\": \"https://www.designtokens.org/schemas/2025.10/format.json#/definitions/jsonPointerReferenceObject\"\n }\n ]\n },\n \"percentageComponent\": {\n \"title\": \"Percentage Component\",\n \"description\": \"Percentage value from 0 to 100\",\n \"oneOf\": [\n {\n \"type\": \"number\",\n \"minimum\": 0,\n \"maximum\": 100\n },\n {\n \"type\": \"string\",\n \"const\": \"none\"\n },\n {\n \"$ref\": \"https://www.designtokens.org/schemas/2025.10/format.json#/definitions/jsonPointerReferenceObject\"\n }\n ]\n },\n \"chromaComponent\": {\n \"title\": \"Chroma Component\",\n \"description\": \"Chroma value from 0 to infinity\",\n \"oneOf\": [\n {\n \"type\": \"number\",\n \"minimum\": 0\n },\n {\n \"type\": \"string\",\n \"const\": \"none\"\n },\n {\n \"$ref\": \"https://www.designtokens.org/schemas/2025.10/format.json#/definitions/jsonPointerReferenceObject\"\n }\n ]\n },\n \"unboundedComponent\": {\n \"title\": \"Unbounded Component\",\n \"description\": \"A color component with no numeric bounds (e.g., A and B in LAB/OKLAB color spaces)\",\n \"oneOf\": [\n {\n \"type\": \"number\"\n },\n {\n \"type\": \"string\",\n \"const\": \"none\"\n },\n {\n \"$ref\": \"https://www.designtokens.org/schemas/2025.10/format.json#/definitions/jsonPointerReferenceObject\"\n }\n ]\n },\n \"rgbComponents\": {\n \"title\": \"RGB Components\",\n \"description\": \"Array of RGB color components [Red, Green, Blue], each normalized to the range [0-1]\",\n \"type\": \"array\",\n \"minItems\": 3,\n \"maxItems\": 3,\n \"items\": [\n {\n \"$ref\": \"#/definitions/zeroToOneComponent\"\n },\n {\n \"$ref\": \"#/definitions/zeroToOneComponent\"\n },\n {\n \"$ref\": \"#/definitions/zeroToOneComponent\"\n }\n ]\n },\n \"xyzComponents\": {\n \"title\": \"XYZ Components\",\n \"description\": \"Array of XYZ color components [X, Y, Z], each normalized to the range [0-1]\",\n \"type\": \"array\",\n \"minItems\": 3,\n \"maxItems\": 3,\n \"items\": [\n {\n \"$ref\": \"#/definitions/zeroToOneComponent\"\n },\n {\n \"$ref\": \"#/definitions/zeroToOneComponent\"\n },\n {\n \"$ref\": \"#/definitions/zeroToOneComponent\"\n }\n ]\n }\n },\n \"allOf\": [\n {\n \"if\": {\n \"properties\": {\n \"colorSpace\": {\n \"const\": \"srgb\"\n },\n \"components\": {\n \"type\": \"array\"\n }\n }\n },\n \"then\": {\n \"properties\": {\n \"components\": {\n \"$ref\": \"#/definitions/rgbComponents\"\n }\n }\n }\n },\n {\n \"if\": {\n \"properties\": {\n \"colorSpace\": {\n \"const\": \"srgb-linear\"\n },\n \"components\": {\n \"type\": \"array\"\n }\n }\n },\n \"then\": {\n \"properties\": {\n \"components\": {\n \"$ref\": \"#/definitions/rgbComponents\"\n }\n }\n }\n },\n {\n \"if\": {\n \"properties\": {\n \"colorSpace\": {\n \"const\": \"display-p3\"\n },\n \"components\": {\n \"type\": \"array\"\n }\n }\n },\n \"then\": {\n \"properties\": {\n \"components\": {\n \"$ref\": \"#/definitions/rgbComponents\"\n }\n }\n }\n },\n {\n \"if\": {\n \"properties\": {\n \"colorSpace\": {\n \"const\": \"a98-rgb\"\n },\n \"components\": {\n \"type\": \"array\"\n }\n }\n },\n \"then\": {\n \"properties\": {\n \"components\": {\n \"$ref\": \"#/definitions/rgbComponents\"\n }\n }\n }\n },\n {\n \"if\": {\n \"properties\": {\n \"colorSpace\": {\n \"const\": \"prophoto-rgb\"\n },\n \"components\": {\n \"type\": \"array\"\n }\n }\n },\n \"then\": {\n \"properties\": {\n \"components\": {\n \"$ref\": \"#/definitions/rgbComponents\"\n }\n }\n }\n },\n {\n \"if\": {\n \"properties\": {\n \"colorSpace\": {\n \"const\": \"rec2020\"\n },\n \"components\": {\n \"type\": \"array\"\n }\n }\n },\n \"then\": {\n \"properties\": {\n \"components\": {\n \"$ref\": \"#/definitions/rgbComponents\"\n }\n }\n }\n },\n {\n \"if\": {\n \"properties\": {\n \"colorSpace\": {\n \"const\": \"xyz-d65\"\n },\n \"components\": {\n \"type\": \"array\"\n }\n }\n },\n \"then\": {\n \"properties\": {\n \"components\": {\n \"$ref\": \"#/definitions/xyzComponents\"\n }\n }\n }\n },\n {\n \"if\": {\n \"properties\": {\n \"colorSpace\": {\n \"const\": \"xyz-d50\"\n },\n \"components\": {\n \"type\": \"array\"\n }\n }\n },\n \"then\": {\n \"properties\": {\n \"components\": {\n \"$ref\": \"#/definitions/xyzComponents\"\n }\n }\n }\n },\n {\n \"if\": {\n \"properties\": {\n \"colorSpace\": {\n \"const\": \"hsl\"\n },\n \"components\": {\n \"type\": \"array\"\n }\n }\n },\n \"then\": {\n \"properties\": {\n \"components\": {\n \"type\": \"array\",\n \"minItems\": 3,\n \"maxItems\": 3,\n \"items\": [\n {\n \"$ref\": \"#/definitions/hueComponent\"\n },\n {\n \"$ref\": \"#/definitions/percentageComponent\"\n },\n {\n \"$ref\": \"#/definitions/percentageComponent\"\n }\n ]\n }\n }\n }\n },\n {\n \"if\": {\n \"properties\": {\n \"colorSpace\": {\n \"const\": \"hwb\"\n },\n \"components\": {\n \"type\": \"array\"\n }\n }\n },\n \"then\": {\n \"properties\": {\n \"components\": {\n \"type\": \"array\",\n \"minItems\": 3,\n \"maxItems\": 3,\n \"items\": [\n {\n \"$ref\": \"#/definitions/hueComponent\"\n },\n {\n \"$ref\": \"#/definitions/percentageComponent\"\n },\n {\n \"$ref\": \"#/definitions/percentageComponent\"\n }\n ]\n }\n }\n }\n },\n {\n \"if\": {\n \"properties\": {\n \"colorSpace\": {\n \"const\": \"lab\"\n },\n \"components\": {\n \"type\": \"array\"\n }\n }\n },\n \"then\": {\n \"properties\": {\n \"components\": {\n \"type\": \"array\",\n \"minItems\": 3,\n \"maxItems\": 3,\n \"items\": [\n {\n \"$ref\": \"#/definitions/percentageComponent\"\n },\n {\n \"$ref\": \"#/definitions/unboundedComponent\"\n },\n {\n \"$ref\": \"#/definitions/unboundedComponent\"\n }\n ]\n }\n }\n }\n },\n {\n \"if\": {\n \"properties\": {\n \"colorSpace\": {\n \"const\": \"lch\"\n },\n \"components\": {\n \"type\": \"array\"\n }\n }\n },\n \"then\": {\n \"properties\": {\n \"components\": {\n \"type\": \"array\",\n \"minItems\": 3,\n \"maxItems\": 3,\n \"items\": [\n {\n \"$ref\": \"#/definitions/percentageComponent\"\n },\n {\n \"$ref\": \"#/definitions/chromaComponent\"\n },\n {\n \"$ref\": \"#/definitions/hueComponent\"\n }\n ]\n }\n }\n }\n },\n {\n \"if\": {\n \"properties\": {\n \"colorSpace\": {\n \"const\": \"oklab\"\n },\n \"components\": {\n \"type\": \"array\"\n }\n }\n },\n \"then\": {\n \"properties\": {\n \"components\": {\n \"type\": \"array\",\n \"minItems\": 3,\n \"maxItems\": 3,\n \"items\": [\n {\n \"$ref\": \"#/definitions/zeroToOneComponent\"\n },\n {\n \"$ref\": \"#/definitions/unboundedComponent\"\n },\n {\n \"$ref\": \"#/definitions/unboundedComponent\"\n }\n ]\n }\n }\n }\n },\n {\n \"if\": {\n \"properties\": {\n \"colorSpace\": {\n \"const\": \"oklch\"\n },\n \"components\": {\n \"type\": \"array\"\n }\n }\n },\n \"then\": {\n \"properties\": {\n \"components\": {\n \"type\": \"array\",\n \"minItems\": 3,\n \"maxItems\": 3,\n \"items\": [\n {\n \"$ref\": \"#/definitions/zeroToOneComponent\"\n },\n {\n \"$ref\": \"#/definitions/chromaComponent\"\n },\n {\n \"$ref\": \"#/definitions/hueComponent\"\n }\n ]\n }\n }\n }\n }\n ]\n },\n \"https://www.designtokens.org/schemas/2025.10/format/values/dimension.json\": {\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": \"https://www.designtokens.org/schemas/2025.10/format/values/dimension.json\",\n \"title\": \"Dimension Value\",\n \"description\": \"Value schema for dimension type tokens. Represents an amount of distance in a single dimension in the UI, such as a position, width, height, radius, or thickness.\",\n \"type\": \"object\",\n \"properties\": {\n \"value\": {\n \"description\": \"An integer or floating-point value representing the numeric value.\",\n \"oneOf\": [\n {\n \"type\": \"number\"\n },\n {\n \"$ref\": \"https://www.designtokens.org/schemas/2025.10/format.json#/definitions/jsonPointerReferenceObject\"\n }\n ]\n },\n \"unit\": {\n \"description\": \"Unit of distance. Supported values: 'px' (idealized pixel, equivalent to dp on Android and pt on iOS), 'rem' (multiple of system's default font size).\",\n \"oneOf\": [\n {\n \"type\": \"string\",\n \"enum\": [\"px\", \"rem\"]\n },\n {\n \"$ref\": \"https://www.designtokens.org/schemas/2025.10/format.json#/definitions/jsonPointerReferenceObject\"\n }\n ]\n }\n },\n \"required\": [\"value\", \"unit\"],\n \"additionalProperties\": false\n },\n \"https://www.designtokens.org/schemas/2025.10/format/values/fontFamily.json\": {\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": \"https://www.designtokens.org/schemas/2025.10/format/values/fontFamily.json\",\n \"title\": \"Font Family Value\",\n \"description\": \"Value schema for fontFamily type tokens. Represents a font name or an array of font names (ordered from most to least preferred).\",\n \"oneOf\": [\n {\n \"type\": \"string\",\n \"description\": \"A single font name\",\n \"not\": {\n \"$ref\": \"https://www.designtokens.org/schemas/2025.10/format.json#/definitions/curlyBraceReference\"\n }\n },\n {\n \"type\": \"array\",\n \"description\": \"An array of font names, ordered from most to least preferred\",\n \"items\": {\n \"oneOf\": [\n {\n \"type\": \"string\",\n \"not\": {\n \"$ref\": \"https://www.designtokens.org/schemas/2025.10/format.json#/definitions/curlyBraceReference\"\n }\n },\n {\n \"$ref\": \"https://www.designtokens.org/schemas/2025.10/format.json#/definitions/jsonPointerReferenceObject\"\n }\n ]\n },\n \"minItems\": 1\n }\n ]\n },\n \"https://www.designtokens.org/schemas/2025.10/format/values/fontWeight.json\": {\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": \"https://www.designtokens.org/schemas/2025.10/format/values/fontWeight.json\",\n \"title\": \"Font Weight Value\",\n \"description\": \"Value schema for fontWeight type tokens. Represents a font weight as per the OpenType wght tag specification. Lower numbers represent lighter weights, higher numbers represent thicker weights.\",\n \"oneOf\": [\n {\n \"type\": \"number\",\n \"description\": \"Numeric font weight value\",\n \"minimum\": 1,\n \"maximum\": 1000\n },\n {\n \"type\": \"string\",\n \"description\": \"Pre-defined font weight string value\",\n \"enum\": [\n \"thin\",\n \"hairline\",\n \"extra-light\",\n \"ultra-light\",\n \"light\",\n \"normal\",\n \"regular\",\n \"book\",\n \"medium\",\n \"semi-bold\",\n \"demi-bold\",\n \"bold\",\n \"extra-bold\",\n \"ultra-bold\",\n \"black\",\n \"heavy\",\n \"extra-black\",\n \"ultra-black\"\n ]\n }\n ]\n },\n \"https://www.designtokens.org/schemas/2025.10/format/values/duration.json\": {\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": \"https://www.designtokens.org/schemas/2025.10/format/values/duration.json\",\n \"title\": \"Duration Value\",\n \"description\": \"Value schema for duration type tokens. Represents the length of time in milliseconds an animation or animation cycle takes to complete.\",\n \"type\": \"object\",\n \"properties\": {\n \"value\": {\n \"description\": \"An integer or floating-point value representing the numeric value.\",\n \"oneOf\": [\n {\n \"type\": \"number\"\n },\n {\n \"$ref\": \"https://www.designtokens.org/schemas/2025.10/format.json#/definitions/jsonPointerReferenceObject\"\n }\n ]\n },\n \"unit\": {\n \"description\": \"Unit of time. Supported values: 'ms' (millisecond), 's' (second).\",\n \"oneOf\": [\n {\n \"type\": \"string\",\n \"enum\": [\"ms\", \"s\"]\n },\n {\n \"$ref\": \"https://www.designtokens.org/schemas/2025.10/format.json#/definitions/jsonPointerReferenceObject\"\n }\n ]\n }\n },\n \"required\": [\"value\", \"unit\"],\n \"additionalProperties\": false\n },\n \"https://www.designtokens.org/schemas/2025.10/format/values/cubicBezier.json\": {\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": \"https://www.designtokens.org/schemas/2025.10/format/values/cubicBezier.json\",\n \"title\": \"Cubic Bezier Value\",\n \"description\": \"Value schema for cubicBezier type tokens. Represents how the value of an animated property progresses towards completion over the duration of an animation, effectively creating visual effects such as acceleration, deceleration, and bounce.\",\n \"type\": \"array\",\n \"items\": [\n {\n \"$ref\": \"#/definitions/xCoordinate\"\n },\n {\n \"$ref\": \"#/definitions/yCoordinate\"\n },\n {\n \"$ref\": \"#/definitions/xCoordinate\"\n },\n {\n \"$ref\": \"#/definitions/yCoordinate\"\n }\n ],\n \"additionalItems\": false,\n \"minItems\": 4,\n \"maxItems\": 4,\n \"definitions\": {\n \"xCoordinate\": {\n \"title\": \"X Coordinate\",\n \"description\": \"X coordinate of control point (must be between 0 and 1)\",\n \"oneOf\": [\n {\n \"type\": \"number\",\n \"minimum\": 0,\n \"maximum\": 1\n },\n {\n \"$ref\": \"https://www.designtokens.org/schemas/2025.10/format.json#/definitions/jsonPointerReferenceObject\"\n }\n ]\n },\n \"yCoordinate\": {\n \"title\": \"Y Coordinate\",\n \"description\": \"Y coordinate of control point (can be any real number)\",\n \"oneOf\": [\n {\n \"type\": \"number\"\n },\n {\n \"$ref\": \"https://www.designtokens.org/schemas/2025.10/format.json#/definitions/jsonPointerReferenceObject\"\n }\n ]\n }\n }\n },\n \"https://www.designtokens.org/schemas/2025.10/format/values/number.json\": {\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": \"https://www.designtokens.org/schemas/2025.10/format/values/number.json\",\n \"title\": \"Number Value\",\n \"description\": \"Value schema for number type tokens. Numbers can be positive, negative and have fractions. Example uses are gradient stop positions or unitless line heights.\",\n \"type\": \"number\"\n },\n \"https://www.designtokens.org/schemas/2025.10/format/values/strokeStyle.json\": {\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": \"https://www.designtokens.org/schemas/2025.10/format/values/strokeStyle.json\",\n \"title\": \"Stroke Style Value\",\n \"description\": \"Value schema for strokeStyle type tokens. Represents the style applied to lines or borders.\",\n \"oneOf\": [\n {\n \"type\": \"string\",\n \"enum\": [\n \"solid\",\n \"dashed\",\n \"dotted\",\n \"double\",\n \"groove\",\n \"ridge\",\n \"outset\",\n \"inset\"\n ],\n \"description\": \"Pre-defined stroke style values with the same meaning as CSS line style values\"\n },\n {\n \"type\": \"object\",\n \"properties\": {\n \"dashArray\": {\n \"description\": \"Array of dimension values specifying lengths of alternating dashes and gaps\",\n \"oneOf\": [\n {\n \"type\": \"array\",\n \"items\": {\n \"oneOf\": [\n {\n \"$ref\": \"https://www.designtokens.org/schemas/2025.10/format/values/dimension.json\"\n },\n {\n \"$ref\": \"https://www.designtokens.org/schemas/2025.10/format.json#/definitions/tokenValueReference\"\n }\n ]\n },\n \"minItems\": 1\n },\n {\n \"$ref\": \"https://www.designtokens.org/schemas/2025.10/format.json#/definitions/jsonPointerReferenceObject\"\n }\n ]\n },\n \"lineCap\": {\n \"description\": \"Line cap style, same meaning as SVG stroke-linecap attribute\",\n \"oneOf\": [\n {\n \"type\": \"string\",\n \"enum\": [\"round\", \"butt\", \"square\"]\n },\n {\n \"$ref\": \"https://www.designtokens.org/schemas/2025.10/format.json#/definitions/jsonPointerReferenceObject\"\n }\n ]\n }\n },\n \"required\": [\"dashArray\", \"lineCap\"],\n \"additionalProperties\": false\n }\n ]\n },\n \"https://www.designtokens.org/schemas/2025.10/format/values/border.json\": {\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": \"https://www.designtokens.org/schemas/2025.10/format/values/border.json\",\n \"title\": \"Border Value\",\n \"description\": \"Value schema for border type tokens. Represents a border style.\",\n \"type\": \"object\",\n \"properties\": {\n \"color\": {\n \"description\": \"The color of the border\",\n \"oneOf\": [\n {\n \"$ref\": \"https://www.designtokens.org/schemas/2025.10/format/values/color.json\"\n },\n {\n \"$ref\": \"https://www.designtokens.org/schemas/2025.10/format.json#/definitions/tokenValueReference\"\n }\n ]\n },\n \"width\": {\n \"description\": \"The width or thickness of the border\",\n \"oneOf\": [\n {\n \"$ref\": \"https://www.designtokens.org/schemas/2025.10/format/values/dimension.json\"\n },\n {\n \"$ref\": \"https://www.designtokens.org/schemas/2025.10/format.json#/definitions/tokenValueReference\"\n }\n ]\n },\n \"style\": {\n \"description\": \"The border's style\",\n \"oneOf\": [\n {\n \"$ref\": \"https://www.designtokens.org/schemas/2025.10/format/values/strokeStyle.json\"\n },\n {\n \"$ref\": \"https://www.designtokens.org/schemas/2025.10/format.json#/definitions/tokenValueReference\"\n }\n ]\n }\n },\n \"required\": [\"color\", \"width\", \"style\"],\n \"additionalProperties\": false\n },\n \"https://www.designtokens.org/schemas/2025.10/format/values/transition.json\": {\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": \"https://www.designtokens.org/schemas/2025.10/format/values/transition.json\",\n \"title\": \"Transition Value\",\n \"description\": \"Value schema for transition type tokens. Represents an animated transition between two states.\",\n \"type\": \"object\",\n \"properties\": {\n \"duration\": {\n \"description\": \"The duration of the transition\",\n \"oneOf\": [\n {\n \"$ref\": \"https://www.designtokens.org/schemas/2025.10/format/values/duration.json\"\n },\n {\n \"$ref\": \"https://www.designtokens.org/schemas/2025.10/format.json#/definitions/tokenValueReference\"\n }\n ]\n },\n \"delay\": {\n \"description\": \"The time to wait before the transition begins\",\n \"oneOf\": [\n {\n \"$ref\": \"https://www.designtokens.org/schemas/2025.10/format/values/duration.json\"\n },\n {\n \"$ref\": \"https://www.designtokens.org/schemas/2025.10/format.json#/definitions/tokenValueReference\"\n }\n ]\n },\n \"timingFunction\": {\n \"description\": \"The timing function of the transition\",\n \"oneOf\": [\n {\n \"$ref\": \"https://www.designtokens.org/schemas/2025.10/format/values/cubicBezier.json\"\n },\n {\n \"$ref\": \"https://www.designtokens.org/schemas/2025.10/format.json#/definitions/tokenValueReference\"\n }\n ]\n }\n },\n \"required\": [\"duration\", \"delay\", \"timingFunction\"],\n \"additionalProperties\": false\n },\n \"https://www.designtokens.org/schemas/2025.10/format/values/shadow.json\": {\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": \"https://www.designtokens.org/schemas/2025.10/format/values/shadow.json\",\n \"title\": \"Shadow Value\",\n \"description\": \"Value schema for shadow type tokens. Represents a shadow style.\",\n \"oneOf\": [\n {\n \"$ref\": \"#/definitions/shadowObject\"\n },\n {\n \"type\": \"array\",\n \"description\": \"Array of shadow objects and/or references to shadow tokens\",\n \"items\": {\n \"oneOf\": [\n {\n \"$ref\": \"#/definitions/shadowObject\"\n },\n {\n \"$ref\": \"https://www.designtokens.org/schemas/2025.10/format.json#/definitions/tokenValueReference\"\n }\n ]\n },\n \"minItems\": 1\n }\n ],\n \"definitions\": {\n \"shadowObject\": {\n \"title\": \"Shadow Object\",\n \"type\": \"object\",\n \"properties\": {\n \"color\": {\n \"description\": \"The color of the shadow\",\n \"oneOf\": [\n {\n \"$ref\": \"https://www.designtokens.org/schemas/2025.10/format/values/color.json\"\n },\n {\n \"$ref\": \"https://www.designtokens.org/schemas/2025.10/format.json#/definitions/tokenValueReference\"\n }\n ]\n },\n \"offsetX\": {\n \"description\": \"The horizontal offset that shadow has from the element it is applied to\",\n \"oneOf\": [\n {\n \"$ref\": \"https://www.designtokens.org/schemas/2025.10/format/values/dimension.json\"\n },\n {\n \"$ref\": \"https://www.designtokens.org/schemas/2025.10/format.json#/definitions/tokenValueReference\"\n }\n ]\n },\n \"offsetY\": {\n \"description\": \"The vertical offset that shadow has from the element it is applied to\",\n \"oneOf\": [\n {\n \"$ref\": \"https://www.designtokens.org/schemas/2025.10/format/values/dimension.json\"\n },\n {\n \"$ref\": \"https://www.designtokens.org/schemas/2025.10/format.json#/definitions/tokenValueReference\"\n }\n ]\n },\n \"blur\": {\n \"description\": \"The blur radius that is applied to the shadow\",\n \"oneOf\": [\n {\n \"$ref\": \"https://www.designtokens.org/schemas/2025.10/format/values/dimension.json\"\n },\n {\n \"$ref\": \"https://www.designtokens.org/schemas/2025.10/format.json#/definitions/tokenValueReference\"\n }\n ]\n },\n \"spread\": {\n \"description\": \"The amount by which to expand or contract the shadow\",\n \"oneOf\": [\n {\n \"$ref\": \"https://www.designtokens.org/schemas/2025.10/format/values/dimension.json\"\n },\n {\n \"$ref\": \"https://www.designtokens.org/schemas/2025.10/format.json#/definitions/tokenValueReference\"\n }\n ]\n },\n \"inset\": {\n \"description\": \"Whether this shadow is inside the containing shape (inner shadow) rather than a drop shadow (default: false)\",\n \"oneOf\": [\n {\n \"type\": \"boolean\"\n },\n {\n \"$ref\": \"https://www.designtokens.org/schemas/2025.10/format.json#/definitions/jsonPointerReferenceObject\"\n }\n ]\n }\n },\n \"required\": [\"color\", \"offsetX\", \"offsetY\", \"blur\", \"spread\"],\n \"additionalProperties\": false\n }\n }\n },\n \"https://www.designtokens.org/schemas/2025.10/format/values/gradient.json\": {\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": \"https://www.designtokens.org/schemas/2025.10/format/values/gradient.json\",\n \"title\": \"Gradient Value\",\n \"description\": \"Value schema for gradient type tokens. Represents a color gradient.\",\n \"type\": \"array\",\n \"items\": {\n \"oneOf\": [\n {\n \"$ref\": \"#/definitions/gradientStop\"\n },\n {\n \"$ref\": \"https://www.designtokens.org/schemas/2025.10/format.json#/definitions/tokenValueReference\"\n }\n ]\n },\n \"minItems\": 1,\n \"definitions\": {\n \"gradientStop\": {\n \"title\": \"Gradient Stop\",\n \"type\": \"object\",\n \"properties\": {\n \"color\": {\n \"description\": \"The color value at the stop's position on the gradient\",\n \"oneOf\": [\n {\n \"$ref\": \"https://www.designtokens.org/schemas/2025.10/format/values/color.json\"\n },\n {\n \"$ref\": \"https://www.designtokens.org/schemas/2025.10/format.json#/definitions/tokenValueReference\"\n }\n ]\n },\n \"position\": {\n \"description\": \"The position of the stop along the gradient's axis (range [0, 1]). Values outside this range are clamped.\",\n \"oneOf\": [\n {\n \"type\": \"number\",\n \"minimum\": 0,\n \"maximum\": 1\n },\n {\n \"$ref\": \"https://www.designtokens.org/schemas/2025.10/format.json#/definitions/tokenValueReference\"\n }\n ]\n }\n },\n \"required\": [\"color\", \"position\"],\n \"additionalProperties\": false\n }\n }\n },\n \"https://www.designtokens.org/schemas/2025.10/format/values/typography.json\": {\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": \"https://www.designtokens.org/schemas/2025.10/format/values/typography.json\",\n \"title\": \"Typography Value\",\n \"description\": \"Value schema for typography type tokens. Represents a typographic style.\",\n \"type\": \"object\",\n \"properties\": {\n \"fontFamily\": {\n \"description\": \"The typography's font\",\n \"oneOf\": [\n {\n \"$ref\": \"https://www.designtokens.org/schemas/2025.10/format/values/fontFamily.json\"\n },\n {\n \"$ref\": \"https://www.designtokens.org/schemas/2025.10/format.json#/definitions/tokenValueReference\"\n }\n ]\n },\n \"fontSize\": {\n \"description\": \"The size of the typography\",\n \"oneOf\": [\n {\n \"$ref\": \"https://www.designtokens.org/schemas/2025.10/format/values/dimension.json\"\n },\n {\n \"$ref\": \"https://www.designtokens.org/schemas/2025.10/format.json#/definitions/tokenValueReference\"\n }\n ]\n },\n \"fontWeight\": {\n \"description\": \"The weight of the typography\",\n \"oneOf\": [\n {\n \"$ref\": \"https://www.designtokens.org/schemas/2025.10/format/values/fontWeight.json\"\n },\n {\n \"$ref\": \"https://www.designtokens.org/schemas/2025.10/format.json#/definitions/tokenValueReference\"\n }\n ]\n },\n \"letterSpacing\": {\n \"description\": \"The horizontal spacing between characters\",\n \"oneOf\": [\n {\n \"$ref\": \"https://www.designtokens.org/schemas/2025.10/format/values/dimension.json\"\n },\n {\n \"$ref\": \"https://www.designtokens.org/schemas/2025.10/format.json#/definitions/tokenValueReference\"\n }\n ]\n },\n \"lineHeight\": {\n \"description\": \"The vertical spacing between lines of typography (interpreted as a multiplier of fontSize)\",\n \"oneOf\": [\n {\n \"$ref\": \"https://www.designtokens.org/schemas/2025.10/format/values/number.json\"\n },\n {\n \"$ref\": \"https://www.designtokens.org/schemas/2025.10/format.json#/definitions/tokenValueReference\"\n }\n ]\n }\n },\n \"required\": [\n \"fontFamily\",\n \"fontSize\",\n \"fontWeight\",\n \"letterSpacing\",\n \"lineHeight\"\n ],\n \"additionalProperties\": false\n },\n \"https://www.designtokens.org/schemas/2025.10/format/groupOrToken.json\": {\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": \"https://www.designtokens.org/schemas/2025.10/format/groupOrToken.json\",\n \"title\": \"Group or Token\",\n \"description\": \"A group or a token in the DTCG specification. A token is identified by the presence of a $value property, while a group is any object without a $value property.\",\n \"oneOf\": [\n {\n \"$ref\": \"https://www.designtokens.org/schemas/2025.10/format/group.json\"\n },\n {\n \"$ref\": \"https://www.designtokens.org/schemas/2025.10/format/token.json\"\n }\n ]\n },\n \"https://www.designtokens.org/schemas/2025.10/format/group.json\": {\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"$id\": \"https://www.designtokens.org/schemas/2025.10/format/group.json\",\n \"title\": \"Group\",\n \"description\": \"A group in the DTCG specification\",\n \"type\": \"object\",\n \"properties\": {\n \"$type\": {\n \"$ref\": \"https://www.designtokens.org/schemas/2025.10/format/tokenType.json\"\n },\n \"$description\": {\n \"type\": \"string\",\n \"description\": \"A plain text description of the group\"\n },\n \"$extensions\": {\n \"type\": \"object\",\n \"description\": \"Vendor-specific extensions\"\n },\n \"$extends\": {\n \"oneOf\": [\n {\n \"$ref\": \"https://www.designtokens.org/schemas/2025.10/format.json#/definitions/curlyBraceReference\"\n },\n {\n \"$ref\": \"https://www.designtokens.org/schemas/2025.10/format.json#/definitions/jsonPointerReference\"\n }\n ],\n \"description\": \"Reference to another group to inherit tokens and properties from\"\n },\n \"$deprecated\": {\n \"oneOf\": [\n {\n \"type\": \"boolean\"\n },\n {\n \"type\": \"string\"\n }\n ],\n \"description\": \"Whether this group is deprecated\"\n },\n \"$root\": {\n \"$ref\": \"https://www.designtokens.org/schemas/2025.10/format/token.json\"\n }\n },\n \"patternProperties\": {\n \"^[^${}.][^{}.]*$\": {\n \"$ref\": \"https://www.designtokens.org/schemas/2025.10/format/groupOrToken.json\"\n }\n },\n \"additionalProperties\": false\n }\n }\n}\n","import type { ThemeTokens } from '../contracts/theme';\nimport type {\n TenantProductConfig,\n TenantRuntimeConfig,\n} from '../contracts/tenant';\nimport type { MenuRuntimeBundle } from '../contracts/menu';\nimport {\n TenantProductConfigSchema,\n TenantRuntimeConfigSchema,\n} from '../contracts/tenant';\nimport { resolveThemeTokens } from './theme-tokens';\n\nexport interface CompileTenantRuntimeConfigInput {\n productConfig: TenantProductConfig;\n resolvedDesignTokens: ThemeTokens;\n menuBundle?: MenuRuntimeBundle;\n}\n\n/** Missing rollout capability is intentionally legacy-only for old Servers. */\nexport const isDeclarativeRuntimeEnabled = (\n config: Pick<TenantRuntimeConfig, 'declarativeRuntime'>,\n surface: 'studio' | 'kernel',\n): boolean => config.declarativeRuntime?.state === 'enabled'\n && config.declarativeRuntime.enabledSurfaces.includes(surface);\n\n/**\n * Builds the only browser-facing tenant configuration projection.\n * The source list is deliberately not copied, and resolving again guarantees\n * that aliases cannot escape the server boundary.\n */\nexport const compileTenantRuntimeConfig = (\n input: CompileTenantRuntimeConfigInput,\n): TenantRuntimeConfig => {\n const productConfig = TenantProductConfigSchema.parse(input.productConfig);\n const designTokens = resolveThemeTokens(input.resolvedDesignTokens).resolvedDocument;\n\n return Object.freeze(TenantRuntimeConfigSchema.parse({\n contract: 'TenantRuntimeConfig',\n tenantId: productConfig.tenantId,\n appId: productConfig.appId,\n environment: productConfig.environment,\n designTokens,\n moduleRefs: productConfig.moduleRefs,\n pageRefs: productConfig.pageRefs,\n featureFlags: productConfig.featureFlags,\n authBinding: productConfig.authBinding,\n dataBinding: productConfig.dataBinding,\n sourceMap: productConfig.sourceMap,\n warnings: productConfig.warnings,\n menuBundle: input.menuBundle,\n applicationConfig: productConfig.applicationConfig,\n declarativeRuntime: productConfig.declarativeRuntime,\n }));\n};\n","import type {\n TenantAuthBinding,\n TenantDataBinding,\n TenantRuntimeConfig,\n} from '../contracts/tenant';\n\nexport interface TenantRuntimeBindingPolicy {\n authProviderIds: readonly string[];\n dataProviderIds: readonly string[];\n projectionRefs?: readonly string[];\n requiredAuthBindings?: readonly string[];\n requiredDataBindings?: readonly string[];\n}\n\nexport interface CompiledTenantRuntimeBindings {\n readonly auth: Readonly<Record<string, TenantAuthBinding>>;\n readonly data: Readonly<Record<string, TenantDataBinding>>;\n requireAuth(bindingId?: string): TenantAuthBinding;\n requireData(bindingId?: string): TenantDataBinding;\n}\n\nconst requireBinding = <T>(\n kind: 'auth' | 'data',\n bindings: Readonly<Record<string, T>>,\n bindingId: string,\n): T => {\n const binding = bindings[bindingId];\n if (!binding) {\n throw new TypeError(`Tenant runtime is missing required ${kind} binding \"${bindingId}\".`);\n }\n return binding;\n};\n\n/**\n * Compiles tenant provider references against the providers actually shipped by\n * a product. This is the browser-side fail-closed boundary: a typo or an\n * uninstalled provider cannot silently fall back to a legacy endpoint.\n */\nexport const compileTenantRuntimeBindings = (\n config: Pick<TenantRuntimeConfig, 'authBinding' | 'dataBinding'>,\n policy: TenantRuntimeBindingPolicy,\n): CompiledTenantRuntimeBindings => {\n const authProviderIds = new Set(policy.authProviderIds);\n const dataProviderIds = new Set(policy.dataProviderIds);\n const projectionRefs = new Set(policy.projectionRefs ?? []);\n\n const auth = Object.freeze({ ...config.authBinding });\n const data = Object.freeze({ ...config.dataBinding });\n\n for (const [bindingId, binding] of Object.entries(auth)) {\n if (!authProviderIds.has(binding.providerId)) {\n throw new TypeError(\n `Tenant auth binding \"${bindingId}\" references unavailable provider \"${binding.providerId}\".`,\n );\n }\n }\n for (const [bindingId, binding] of Object.entries(data)) {\n const supported =\n binding.kind === 'data-provider'\n ? dataProviderIds.has(binding.providerId)\n : projectionRefs.has(binding.projectionRef);\n if (!supported) {\n const target = binding.kind === 'data-provider' ? binding.providerId : binding.projectionRef;\n throw new TypeError(`Tenant data binding \"${bindingId}\" references unavailable provider or projection \"${target}\".`);\n }\n }\n\n for (const bindingId of policy.requiredAuthBindings ?? []) {\n requireBinding('auth', auth, bindingId);\n }\n for (const bindingId of policy.requiredDataBindings ?? []) {\n requireBinding('data', data, bindingId);\n }\n\n return Object.freeze({\n auth,\n data,\n requireAuth: (bindingId = 'primary') => requireBinding('auth', auth, bindingId),\n requireData: (bindingId = 'primary') => requireBinding('data', data, bindingId),\n });\n};\n","import type { CapabilityInstance, RevisionRef } from '../contracts/declarative-control';\nimport type { DesignCapabilityCatalogEntry } from '../contracts/declarative-control-http';\nimport type { RenderNode, ViewProviderDescriptor } from '../contracts/render';\nimport { canonicalContentHash, sameStableRef, sameSchemaContract, sameRevisionRef } from './declarative-control-compiler';\n\n/** The public contract is independent of the implementation snapshot revision. */\nexport const assertViewProviderContract = (\n node: Pick<RenderNode, 'capabilityRef' | 'providerRef' | 'runtimeContractVersion'>,\n provider: ViewProviderDescriptor,\n): void => {\n if (node.capabilityRef.kind !== 'capability' || node.providerRef?.kind !== 'view-provider' ||\n node.capabilityRef.id !== provider.capabilityRef.id || node.capabilityRef.ownerRepo !== provider.capabilityRef.ownerRepo ||\n node.providerRef.id !== provider.providerId || node.providerRef.ownerRepo !== provider.ownerRepo) {\n throw new TypeError('Runtime capability and provider identities do not match their registered owners.');\n }\n if (node.runtimeContractVersion !== undefined) {\n if (node.runtimeContractVersion !== provider.runtimeContractVersion) {\n throw new TypeError('The provider does not implement the declared runtime contract.');\n }\n } else if (String(node.capabilityRef.version) !== String(provider.capabilityRef.version) ||\n String(node.providerRef.version) !== provider.providerVersion) {\n throw new TypeError('An unversioned runtime contract requires an exact provider snapshot.');\n }\n};\n\nexport type DeclarativeCapabilityContractRequest = Pick<CapabilityInstance,\n 'capabilityRevisionRef' | 'providerRevisionRef' | 'runtimeContractVersion'> &\n Partial<Pick<CapabilityInstance, 'propertySchemaRevisionRef'>> & { inputSchemaRevisionRef?: RevisionRef };\n\nexport const supportsCapabilityInputSchema = (\n entry: DesignCapabilityCatalogEntry,\n reference: RevisionRef,\n runtimeContractVersion?: string,\n portName?: string,\n): boolean => entry.declarativeRegistration.inputPorts.some(port =>\n (portName === undefined || port.name === portName) &&\n (sameSchemaContract(port.schemaRevisionRef, reference) ||\n (runtimeContractVersion !== undefined && runtimeContractVersion === entry.provider.runtimeContractVersion &&\n reference.schemaVersion === port.schemaRevisionRef.schemaVersion && sameStableRef(port.schemaRevisionRef, reference))));\n\n/** Validate the saved contract without rewriting the declaration or its hashes. */\nexport const assertDeclarativeCapabilityContract = (\n entry: DesignCapabilityCatalogEntry,\n request: DeclarativeCapabilityContractRequest,\n): void => {\n const registration = entry.declarativeRegistration;\n if (request.inputSchemaRevisionRef && !supportsCapabilityInputSchema(entry, request.inputSchemaRevisionRef, request.runtimeContractVersion)) {\n throw new TypeError('The input schema is not owned by the runtime contract.');\n }\n if (!sameStableRef(request.capabilityRevisionRef, registration.capabilityRevisionRef) ||\n !sameStableRef(request.providerRevisionRef, registration.providerRevisionRef) ||\n request.capabilityRevisionRef.schemaVersion !== registration.capabilityRevisionRef.schemaVersion ||\n request.providerRevisionRef.schemaVersion !== registration.providerRevisionRef.schemaVersion) {\n throw new TypeError('Runtime contract snapshots must retain their registered identity, scope and schema version.');\n }\n if (request.runtimeContractVersion !== undefined) {\n if (request.runtimeContractVersion !== entry.provider.runtimeContractVersion ||\n (request.propertySchemaRevisionRef && (!sameStableRef(request.propertySchemaRevisionRef, registration.propertySchemaRevisionRef) || request.propertySchemaRevisionRef.schemaVersion !== registration.propertySchemaRevisionRef.schemaVersion))) {\n throw new TypeError('The capability does not implement the declared runtime contract.');\n }\n return;\n }\n // Older declarations contain only immutable snapshots. Reconstruct their\n // numbering and require both full hashes; matching IDs never proves support.\n const capabilityVersion = String(request.capabilityRevisionRef.revision);\n const providerVersion = String(request.providerRevisionRef.revision);\n const manifest = {\n ...entry.manifest, capabilityVersion,\n runtime: {\n ...entry.manifest.runtime,\n providerBindings: entry.manifest.runtime.providerBindings.map(binding => ({\n ...binding,\n providerRef: binding.providerRef.id === entry.provider.providerId\n ? { ...binding.providerRef, version: providerVersion } : binding.providerRef,\n })),\n },\n };\n const { runtimeContractVersion: _contract, ...descriptor } = entry.provider;\n const provider = {\n ...descriptor, providerVersion,\n capabilityRef: { ...descriptor.capabilityRef, version: capabilityVersion },\n ...(descriptor.sideEffectAdapterRef ? { sideEffectAdapterRef: { ...descriptor.sideEffectAdapterRef, version: capabilityVersion } } : {}),\n };\n const exact = sameRevisionRef(request.capabilityRevisionRef, registration.capabilityRevisionRef) &&\n sameRevisionRef(request.providerRevisionRef, registration.providerRevisionRef);\n const equivalent = request.capabilityRevisionRef.contentHash === canonicalContentHash(manifest) &&\n request.providerRevisionRef.contentHash === canonicalContentHash(provider);\n if ((!exact && !equivalent) || (request.propertySchemaRevisionRef &&\n !sameSchemaContract(request.propertySchemaRevisionRef, registration.propertySchemaRevisionRef))) {\n throw new TypeError('The historical capability snapshot is not supported by the current runtime contract.');\n }\n};\n\n/** Prove exclusion from explicit constraints; unknown relationships may overlap. */\nconst schemasCannotOverlap = (left: unknown, right: unknown): boolean => {\n if (left === false || right === false) return true;\n if (!left || !right || typeof left !== 'object' || typeof right !== 'object' ||\n Array.isArray(left) || Array.isArray(right)) return false;\n const a = left as Record<string, any>;\n const b = right as Record<string, any>;\n if (a.$ref || b.$ref) return false;\n const values = (schema: typeof a): unknown[] | undefined =>\n Object.prototype.hasOwnProperty.call(schema, 'const') ? [schema.const] : Array.isArray(schema.enum) ? schema.enum : undefined;\n const av = values(a), bv = values(b);\n if (av && bv && av.every(value => !bv.some(other => canonicalContentHash(value) === canonicalContentHash(other)))) return true;\n if (a.type !== 'object' || b.type !== 'object') return false;\n const property = (schema: typeof a, key: string): unknown => schema.properties?.[key] ??\n (schema.patternProperties ? true : schema.additionalProperties ?? true);\n return [...(a.required ?? []), ...(b.required ?? [])].some(key =>\n schemasCannotOverlap(property(a, key), property(b, key)));\n};\n\ntype NumericBound = { value: number; inclusive: boolean };\n\nconst numericBound = (schema: Record<string, unknown>, direction: 'lower' | 'upper'): NumericBound | undefined | null => {\n const inclusiveKey = direction === 'lower' ? 'minimum' : 'maximum';\n const exclusiveKey = direction === 'lower' ? 'exclusiveMinimum' : 'exclusiveMaximum';\n const inclusiveValue = schema[inclusiveKey];\n const exclusiveValue = schema[exclusiveKey];\n const candidates: NumericBound[] = [];\n if (inclusiveValue !== undefined) {\n if (typeof inclusiveValue !== 'number' || !Number.isFinite(inclusiveValue)) return null;\n candidates.push({ value: inclusiveValue, inclusive: true });\n }\n if (typeof exclusiveValue === 'number') {\n if (!Number.isFinite(exclusiveValue)) return null;\n candidates.push({ value: exclusiveValue, inclusive: false });\n } else if (exclusiveValue === true) {\n if (typeof inclusiveValue !== 'number' || !Number.isFinite(inclusiveValue)) return null;\n candidates.push({ value: inclusiveValue, inclusive: false });\n } else if (exclusiveValue !== undefined && exclusiveValue !== false) {\n return null;\n }\n if (!candidates.length) return undefined;\n const compare = direction === 'lower' ? Math.max : Math.min;\n const value = compare(...candidates.map(candidate => candidate.value));\n return { value, inclusive: candidates.filter(candidate => candidate.value === value).every(candidate => candidate.inclusive) };\n};\n\nconst boundAcceptsPrevious = (previous: NumericBound | undefined | null, next: NumericBound | undefined | null, direction: 'lower' | 'upper'): boolean => {\n if (previous === null || next === null) return false;\n if (!next) return true;\n if (!previous) return false;\n if (direction === 'lower' && previous.value < next.value) return false;\n if (direction === 'upper' && previous.value > next.value) return false;\n return previous.value !== next.value || !previous.inclusive || next.inclusive;\n};\n\nconst numericRangesAcceptPrevious = (previous: Record<string, unknown>, next: Record<string, unknown>): boolean =>\n boundAcceptsPrevious(numericBound(previous, 'lower'), numericBound(next, 'lower'), 'lower') &&\n boundAcceptsPrevious(numericBound(previous, 'upper'), numericBound(next, 'upper'), 'upper');\n\n/** Conservative schema inclusion; unknown relationships fail closed. */\nexport const acceptsPreviousSchema = (previous: unknown, next: unknown): boolean => {\n if (canonicalContentHash(previous) === canonicalContentHash(next) || next === true) return true;\n if (previous === false) return true;\n if (!previous || !next || typeof previous !== 'object' || typeof next !== 'object' ||\n Array.isArray(previous) || Array.isArray(next)) return false;\n const withoutAnnotations = (schema: object) => Object.fromEntries(Object.entries(schema).filter(([key]) => !['title', 'description', 'examples', '$comment'].includes(key)));\n const before = withoutAnnotations(previous) as Record<string, any>;\n const after = withoutAnnotations(next) as Record<string, any>;\n // A union without sibling constraints can be checked branch by branch. For\n // oneOf, inclusion also needs proof that no accepted old value matches a\n // second branch; a matching branch alone would silently narrow the input.\n const branches = (schema: typeof before): unknown[] | undefined => Object.keys(schema).length === 1\n ? Array.isArray(schema.anyOf) ? schema.anyOf : Array.isArray(schema.oneOf) ? schema.oneOf : undefined\n : undefined;\n const oldBranches = branches(before);\n if (oldBranches) return oldBranches.every(branch => acceptsPreviousSchema(branch, next));\n const newBranches = branches(after);\n if (newBranches) return newBranches.some((branch, index) => acceptsPreviousSchema(previous, branch) &&\n (!after.oneOf || newBranches.every((other, otherIndex) => index === otherIndex || schemasCannotOverlap(previous, other))));\n const { properties: oldProperties, required: oldRequired, additionalProperties: oldAdditional,\n enum: oldEnum, items: oldItems, minimum: _oldMinimum, maximum: _oldMaximum,\n exclusiveMinimum: _oldExclusiveMinimum, exclusiveMaximum: _oldExclusiveMaximum, ...oldFixed } = before;\n const { properties: newProperties, required: newRequired, additionalProperties: newAdditional,\n enum: newEnum, items: newItems, minimum: _newMinimum, maximum: _newMaximum,\n exclusiveMinimum: _newExclusiveMinimum, exclusiveMaximum: _newExclusiveMaximum, ...newFixed } = after;\n if (canonicalContentHash(oldFixed) !== canonicalContentHash(newFixed)) return false;\n if (!numericRangesAcceptPrevious(before, after)) return false;\n // Homogeneous arrays apply the same inclusion rule to every element. Tuple\n // schemas and other array constraints stay exact unless already identical.\n if (!acceptsPreviousSchema(oldItems ?? true, newItems ?? true)) return false;\n if (newEnum && (!oldEnum || oldEnum.some((value: unknown) => !newEnum.some((candidate: unknown) =>\n canonicalContentHash(candidate) === canonicalContentHash(value))))) return false;\n if ((newRequired ?? []).some((key: string) => !(oldRequired ?? []).includes(key))) return false;\n const oldExtra = oldAdditional ?? true;\n const newExtra = newAdditional ?? true;\n if (!acceptsPreviousSchema(oldExtra, newExtra)) return false;\n const keys = new Set([...Object.keys(oldProperties ?? {}), ...Object.keys(newProperties ?? {})]);\n for (const key of keys) {\n if (!acceptsPreviousSchema(oldProperties?.[key] ?? oldExtra, newProperties?.[key] ?? newExtra)) return false;\n }\n return true;\n};\n\n/** A provider identity continues to serve every declaration on its public contract. */\nexport const assertCompatibleCapabilityUpgrade = (\n previous: DesignCapabilityCatalogEntry,\n next: DesignCapabilityCatalogEntry,\n): void => {\n if ((previous.provider.runtimeContractVersion !== undefined && previous.provider.runtimeContractVersion !== next.provider.runtimeContractVersion) ||\n !sameStableRef(previous.declarativeRegistration.capabilityRevisionRef, next.declarativeRegistration.capabilityRevisionRef) ||\n !sameStableRef(previous.declarativeRegistration.providerRevisionRef, next.declarativeRegistration.providerRevisionRef)) {\n throw new TypeError('A breaking runtime contract requires a new capability/provider identity while the existing contract remains supported.');\n }\n const providerContract = (entry: DesignCapabilityCatalogEntry) => {\n const { providerVersion: _revision, capabilityRef, performance: _performance, sideEffectAdapterRef, ...rest } = entry.provider;\n const { version: _capabilityRevision, ...capability } = capabilityRef;\n return { ...rest, runtimeContractVersion: next.provider.runtimeContractVersion, capabilityRef: capability,\n ...(sideEffectAdapterRef ? { sideEffectAdapterRef: { ...sideEffectAdapterRef, version: undefined } } : {}) };\n };\n if (canonicalContentHash(providerContract(previous)) !== canonicalContentHash(providerContract(next))) {\n throw new TypeError('A compatible provider upgrade must preserve lifecycle, effects, ownership and public rendering semantics.');\n }\n const manifestContract = (entry: DesignCapabilityCatalogEntry) => ({\n kind: entry.manifest.kind,\n runtime: { ...entry.manifest.runtime, providerBindings: entry.manifest.runtime.providerBindings.map(binding => ({ ...binding, providerRef: { ...binding.providerRef, version: undefined } })) },\n placement: entry.manifest.placement && { ...entry.manifest.placement, slots: undefined },\n accessibility: entry.manifest.accessibility,\n });\n if (canonicalContentHash(manifestContract(previous)) !== canonicalContentHash(manifestContract(next))) {\n throw new TypeError('Capability behavior, placement and access semantics must preserve the published runtime contract.');\n }\n const oldRegistration = previous.declarativeRegistration;\n const newRegistration = next.declarativeRegistration;\n // Slots name optional composition points. Adding one cannot invalidate a\n // saved tree, while removing an existing point would orphan its children.\n for (const [oldSlots, newSlots] of [\n [previous.manifest.placement?.slots ?? [], next.manifest.placement?.slots ?? []],\n [oldRegistration.allowedSlots, newRegistration.allowedSlots],\n ]) {\n if (oldSlots.some(slot => !newSlots.includes(slot))) {\n throw new TypeError('Published runtime slots cannot be removed.');\n }\n }\n const schema = (entry: typeof oldRegistration, reference: RevisionRef) => {\n const document = entry.schemaDocuments.find(candidate => sameSchemaContract(candidate.schemaRevisionRef, reference));\n if (!document || canonicalContentHash(document.document) !== reference.contentHash) throw new TypeError('Runtime contract schema integrity failed.');\n return document.document;\n };\n const checkSchema = (oldRef: RevisionRef, newRef: RevisionRef, output = false) => {\n if (!sameStableRef(oldRef, newRef) || oldRef.schemaVersion !== newRef.schemaVersion ||\n !acceptsPreviousSchema(schema(output ? newRegistration : oldRegistration, output ? newRef : oldRef),\n schema(output ? oldRegistration : newRegistration, output ? oldRef : newRef))) {\n throw new TypeError(`Schema ${oldRef.id} breaks the published runtime contract.`);\n }\n };\n checkSchema(oldRegistration.propertySchemaRevisionRef, newRegistration.propertySchemaRevisionRef);\n for (const direction of ['inputPorts', 'outputPorts'] as const) {\n const oldPorts = oldRegistration[direction];\n const newPorts = newRegistration[direction];\n const oldManifestPorts = previous.manifest.ports?.[direction === 'inputPorts' ? 'inputs' : 'outputs'] ?? [];\n const newManifestPorts = next.manifest.ports?.[direction === 'inputPorts' ? 'inputs' : 'outputs'] ?? [];\n for (const port of oldManifestPorts) {\n const replacement = newManifestPorts.find(candidate => candidate.name === port.name);\n if (!replacement || canonicalContentHash(port) !== canonicalContentHash(replacement)) throw new TypeError('Published runtime port semantics changed.');\n }\n if (newManifestPorts.some(port => port.required && !oldManifestPorts.some(previousPort => previousPort.name === port.name)) ||\n newPorts.some(port => port.required && !oldPorts.some(previousPort => previousPort.name === port.name))) {\n throw new TypeError('New runtime ports must be optional for published declarations.');\n }\n for (const port of oldPorts) {\n const replacement = newPorts.find(candidate => candidate.name === port.name);\n if (!replacement || port.required !== replacement.required || port.multiple !== replacement.multiple) throw new TypeError('Public runtime port cardinality changed.');\n checkSchema(port.schemaRevisionRef, replacement.schemaRevisionRef, direction === 'outputPorts');\n }\n }\n const requirements = (entry: typeof oldRegistration) => entry.ontologyRequirements.map(requirement => {\n const { revision: _revision, contentHash: _hash, ...schema } = requirement.renderModelSchemaRevisionRef;\n return { ...requirement, renderModelSchemaRevisionRef: schema };\n });\n if (canonicalContentHash(requirements(oldRegistration)) !== canonicalContentHash(requirements(newRegistration))) {\n throw new TypeError('Runtime Ontology access requirements changed.');\n }\n const existingOutputs = new Set(oldRegistration.outputPorts.map(port => port.name));\n const existingActions = newRegistration.actionRequirements.filter(requirement => existingOutputs.has(requirement.outputPort));\n if (canonicalContentHash(oldRegistration.actionRequirements) !== canonicalContentHash(existingActions)) {\n throw new TypeError('Published output action and permission requirements changed.');\n }\n for (const key of ['allowedSideEffects', 'supportedSurfaces', 'allowedParentCapabilityRefs', 'allowedChildCapabilityRefs'] as const) {\n if (canonicalContentHash(oldRegistration[key]) !== canonicalContentHash(newRegistration[key])) throw new TypeError(`Runtime contract ${key} changed.`);\n }\n};\n\n/** Enrich a rebuildable runtime projection using governed historical catalog entries.\n * Page definitions, release snapshots and dependency hashes remain immutable.\n */\ntype RuntimeContractProjection = { contentHash: string } & ({\n contract: 'PageRuntimeBundle';\n capabilityInstances: (DeclarativeCapabilityContractRequest & { nodeId: string })[];\n renderTree: { nodes: Pick<RenderNode, 'nodeId' | 'providerRef' | 'capabilityRef' | 'runtimeContractVersion'>[] };\n} | {\n contract: 'WorkbenchRuntimeBundle';\n appInstances: { targetRevisionRef: RevisionRef; providerRevisionRef: RevisionRef; inputSchemaRevisionRef: RevisionRef; runtimeContractVersion?: string }[];\n layout: { hostCapabilityRevisionRef: RevisionRef; hostProviderRevisionRef: RevisionRef; runtimeContractVersion?: string };\n});\nexport const projectRuntimeContracts = <T extends RuntimeContractProjection>(\n bundle: T,\n entries: readonly DesignCapabilityCatalogEntry[],\n): T => {\n const resolve = (request: DeclarativeCapabilityContractRequest): string | undefined => {\n if (request.runtimeContractVersion) return request.runtimeContractVersion;\n const candidates = entries.filter(entry =>\n sameStableRef(entry.declarativeRegistration.capabilityRevisionRef, request.capabilityRevisionRef) &&\n sameStableRef(entry.declarativeRegistration.providerRevisionRef, request.providerRevisionRef));\n const current = [...candidates].sort((a, b) =>\n b.declarativeRegistration.capabilityRevisionRef.revision - a.declarativeRegistration.capabilityRevisionRef.revision ||\n b.declarativeRegistration.registrationRevisionRef.revision - a.declarativeRegistration.registrationRevisionRef.revision ||\n Number(Boolean(b.provider.runtimeContractVersion)) - Number(Boolean(a.provider.runtimeContractVersion)))[0];\n if (!current?.provider.runtimeContractVersion) return undefined;\n try {\n assertDeclarativeCapabilityContract(current, request);\n return current.provider.runtimeContractVersion;\n } catch {\n const historical = candidates.find(entry =>\n sameRevisionRef(entry.declarativeRegistration.capabilityRevisionRef, request.capabilityRevisionRef) &&\n sameRevisionRef(entry.declarativeRegistration.providerRevisionRef, request.providerRevisionRef));\n if (!historical) return undefined;\n try {\n assertDeclarativeCapabilityContract(historical, request);\n assertCompatibleCapabilityUpgrade(historical, current);\n return current.provider.runtimeContractVersion;\n } catch {\n // An incompatible retained contract must resolve to its own implementation.\n return undefined;\n }\n }\n };\n const projected = structuredClone(bundle);\n if (projected.contract === 'PageRuntimeBundle') {\n for (const instance of projected.capabilityInstances) {\n const contract = resolve(instance);\n if (!contract) continue;\n const node = projected.renderTree.nodes.find(node => node.nodeId === instance.nodeId);\n if (!node || String(node.providerRef?.version) !== String(instance.providerRevisionRef.revision) ||\n String(node.capabilityRef.version) !== String(instance.capabilityRevisionRef.revision) ||\n node.providerRef?.id !== instance.providerRevisionRef.id || node.capabilityRef.id !== instance.capabilityRevisionRef.id) continue;\n instance.runtimeContractVersion = contract;\n node.runtimeContractVersion = contract;\n }\n } else {\n for (const instance of projected.appInstances) {\n const contract = resolve({ capabilityRevisionRef: instance.targetRevisionRef, providerRevisionRef: instance.providerRevisionRef, inputSchemaRevisionRef: instance.inputSchemaRevisionRef, runtimeContractVersion: instance.runtimeContractVersion });\n if (contract) instance.runtimeContractVersion = contract;\n }\n const contract = resolve({ capabilityRevisionRef: projected.layout.hostCapabilityRevisionRef, providerRevisionRef: projected.layout.hostProviderRevisionRef, runtimeContractVersion: projected.layout.runtimeContractVersion });\n if (contract) projected.layout.runtimeContractVersion = contract;\n }\n const { contentHash: _hash, ...unsigned } = projected;\n projected.contentHash = canonicalContentHash(unsigned);\n return projected;\n};\n","export type PureRenderModelValue = null | boolean | number | string | PureRenderModelArray | PureRenderModelObject;\nexport interface PureRenderModelArray extends ReadonlyArray<PureRenderModelValue> {}\nexport interface PureRenderModelObject {\n readonly [key: string]: PureRenderModelValue;\n}\n\nexport type ViewRuntimeBindingKind = 'intent-adapter' | 'visual-slot' | 'opaque-adapter';\n\nexport interface ViewRuntimeBinding {\n readonly path: string;\n readonly kind: ViewRuntimeBindingKind;\n readonly value: unknown;\n}\n\nexport interface CompiledViewProviderInput {\n readonly renderModel: PureRenderModelValue;\n readonly runtimeBindings: readonly ViewRuntimeBinding[];\n}\n\nconst DEFAULT_FORBIDDEN_RENDER_MODEL_KEYS = Object.freeze([\n 'tenant',\n 'tenantId',\n 'customer',\n 'customerId',\n 'route',\n 'routeId',\n 'pathname',\n 'location',\n 'raw',\n 'rawRow',\n '__raw',\n '__rawRow',\n]);\n\nconst escapePointer = (value: string): string => value.replace(/~/g, '~0').replace(/\\//g, '~1');\nconst unescapePointer = (value: string): string => value.replace(/~1/g, '/').replace(/~0/g, '~');\nconst childPath = (path: string, key: string | number): string => `${path}/${escapePointer(String(key))}`;\n\nconst isPlainObject = (value: unknown): value is Record<string, unknown> => {\n if (!value || typeof value !== 'object') return false;\n const prototype = Object.getPrototypeOf(value);\n return prototype === Object.prototype || prototype === null;\n};\n\nconst bindingKind = (value: unknown): ViewRuntimeBindingKind => {\n if (typeof value === 'function') return 'intent-adapter';\n if (value && typeof value === 'object' && '$$typeof' in value) return 'visual-slot';\n return 'opaque-adapter';\n};\n\nexport interface CompileViewProviderInputOptions {\n forbiddenKeys?: readonly string[];\n}\n\n/**\n * Separates deterministic, serializable view data from runtime adapters.\n * React elements become visual slots and functions become intent adapters\n * without adding a React dependency to the SDK.\n */\nexport const compileViewProviderInput = (\n input: unknown,\n options: CompileViewProviderInputOptions = {},\n): CompiledViewProviderInput => {\n const forbidden = new Set([...DEFAULT_FORBIDDEN_RENDER_MODEL_KEYS, ...(options.forbiddenKeys ?? [])]);\n const runtimeBindings: ViewRuntimeBinding[] = [];\n const ancestors = new WeakSet<object>();\n\n const visit = (value: unknown, path: string): PureRenderModelValue => {\n if (value === null) return null;\n if (typeof value === 'string' || typeof value === 'boolean') return value;\n if (typeof value === 'number') {\n if (!Number.isFinite(value)) throw new Error(`Non-finite number is not allowed in renderModel at ${path || '/'}.`);\n return value;\n }\n if (value === undefined) return null;\n if (typeof value === 'bigint' || typeof value === 'symbol' || typeof value === 'function') {\n runtimeBindings.push(Object.freeze({ path, kind: bindingKind(value), value }));\n return null;\n }\n if (!value || typeof value !== 'object') {\n throw new Error(`Unsupported renderModel value at ${path || '/'}.`);\n }\n if (!Array.isArray(value) && !isPlainObject(value)) {\n runtimeBindings.push(Object.freeze({ path, kind: bindingKind(value), value }));\n return null;\n }\n if (!Array.isArray(value) && '$$typeof' in value) {\n runtimeBindings.push(Object.freeze({ path, kind: 'visual-slot', value }));\n return null;\n }\n if (ancestors.has(value)) throw new Error(`Cyclic renderModel input at ${path || '/'}.`);\n ancestors.add(value);\n try {\n if (Array.isArray(value)) {\n return Object.freeze(value.map((item, index) => visit(item, childPath(path, index))));\n }\n const output: Record<string, PureRenderModelValue> = {};\n for (const [key, item] of Object.entries(value)) {\n if (forbidden.has(key)) {\n throw new Error(`Forbidden renderModel field ${key} at ${childPath(path, key)}.`);\n }\n output[key] = visit(item, childPath(path, key));\n }\n return Object.freeze(output);\n } finally {\n ancestors.delete(value);\n }\n };\n\n return Object.freeze({\n renderModel: visit(input, ''),\n runtimeBindings: Object.freeze(runtimeBindings),\n });\n};\n\nconst cloneRenderModel = (value: PureRenderModelValue): unknown => {\n if (Array.isArray(value)) return value.map((item) => cloneRenderModel(item));\n if (value && typeof value === 'object') {\n return Object.fromEntries(Object.entries(value).map(([key, item]) => [key, cloneRenderModel(item)]));\n }\n return value;\n};\n\n/** Provider adapters use this only at the final implementation edge. */\nexport const applyViewRuntimeBindings = (\n renderModel: PureRenderModelValue,\n bindings: readonly ViewRuntimeBinding[],\n): unknown => {\n const root = { value: cloneRenderModel(renderModel) };\n for (const binding of bindings) {\n const segments = binding.path.split('/').slice(1).map(unescapePointer);\n if (segments.length === 0) {\n root.value = binding.value;\n continue;\n }\n let cursor: any = root.value;\n for (let index = 0; index < segments.length - 1; index += 1) {\n cursor = cursor?.[segments[index]];\n if (cursor === undefined || cursor === null) {\n throw new Error(`Runtime binding path does not exist: ${binding.path}`);\n }\n }\n cursor[segments[segments.length - 1]] = binding.value;\n }\n return root.value;\n};\n","import type { ContractPort } from '../contracts/capability';\nimport type {\n ConductorTaskDefinition,\n ConductorWorkflowDefinition,\n WorkflowDefinition,\n WorkflowOutputBinding,\n WorkflowParameter,\n} from '../contracts/workflow-definition';\nimport {\n ConductorWorkflowDefinitionSchema,\n WorkflowDefinitionSchema,\n WorkflowOutputBindingSchema,\n WorkflowParameterSchema,\n} from '../contracts/workflow-definition';\n\nexport interface CompileWorkflowDefinitionFromConductorInput {\n metadata: WorkflowDefinition['metadata'];\n revision: WorkflowDefinition['revision'];\n presentation: WorkflowDefinition['presentation'];\n conductor: ConductorWorkflowDefinition;\n variables: readonly WorkflowParameter[];\n output: readonly WorkflowOutputBinding[];\n execution: Omit<WorkflowDefinition['execution'], 'timeoutMs' | 'conductor'>;\n triggers: WorkflowDefinition['triggers'];\n views: WorkflowDefinition['views'];\n dataContracts: WorkflowDefinition['dataContracts'];\n governance: WorkflowDefinition['governance'];\n interfaces: WorkflowDefinition['interfaces'];\n}\n\nexport interface WorkflowPersistenceProjection {\n tasks: readonly ConductorTaskDefinition[];\n variables: readonly WorkflowParameter[];\n output: readonly WorkflowOutputBinding[];\n}\n\nexport const DEFAULT_CONDUCTOR_OWNER_EMAIL = 'dev@inf-monkeys.com';\n\nconst localizedText = (value: WorkflowDefinition['metadata']['description']): string | undefined => {\n if (typeof value === 'string') return value;\n if (!value) return undefined;\n return value['en-US'] ?? value['zh-CN'] ?? Object.values(value)[0];\n};\nconst parameterPort = (workflowId: string, parameter: WorkflowParameter): ContractPort => ({\n name: parameter.name,\n schemaRef: `schema://workflow/${workflowId}/input/${parameter.name}`,\n required: parameter.required === true,\n multiple: parameter.typeOptions?.multipleValues === true,\n description: localizedText(parameter.description),\n});\n\nconst outputPort = (workflowId: string, output: WorkflowOutputBinding): ContractPort => ({\n name: output.key,\n schemaRef: `schema://workflow/${workflowId}/output/${output.key}`,\n required: false,\n multiple: false,\n});\n\n/**\n * One-time production compiler from Conductor + authoring data to the canonical\n * WorkflowDefinition. Nested control-flow tasks remain typed inside each node,\n * so the projection does not depend on a lossy graph reconstruction.\n */\nexport const compileWorkflowDefinitionFromConductor = (\n input: CompileWorkflowDefinitionFromConductorInput,\n): WorkflowDefinition => {\n const conductor = ConductorWorkflowDefinitionSchema.parse(input.conductor);\n if (conductor.name !== input.metadata.id || conductor.version !== input.metadata.version) {\n throw new Error('Conductor workflow identity must match canonical metadata.');\n }\n const variables = input.variables.map((parameter) => WorkflowParameterSchema.parse(parameter));\n const outputs = input.output.map((output) => WorkflowOutputBindingSchema.parse(output));\n if (JSON.stringify(conductor.inputParameters) !== JSON.stringify(variables.map((parameter) => parameter.name))) {\n throw new Error('Conductor inputParameters must match canonical workflow variables in order.');\n }\n const expectedOutput = Object.fromEntries(outputs.map((output) => [output.key, output.value]));\n if (JSON.stringify(conductor.outputParameters ?? {}) !== JSON.stringify(expectedOutput)) {\n throw new Error('Conductor outputParameters must match canonical workflow output bindings.');\n }\n\n const nodes = conductor.tasks.map((task) => ({\n id: task.taskReferenceName,\n referenceName: task.taskReferenceName,\n capabilityRef: task.name,\n inputBindings: task.inputParameters ?? {},\n configuration: { executor: 'conductor' as const, task },\n }));\n const edges = nodes.slice(1).map((node, index) => ({ from: nodes[index].id, to: node.id }));\n const {\n name: _name,\n description: _description,\n version: _version,\n tasks: _tasks,\n inputParameters: _inputParameters,\n outputParameters: _outputParameters,\n timeoutSeconds,\n ...conductorOptions\n } = conductor;\n\n return WorkflowDefinitionSchema.parse({\n contract: 'WorkflowDefinition',\n metadata: input.metadata,\n revision: input.revision,\n presentation: input.presentation,\n ports: {\n inputs: variables.map((parameter) => parameterPort(input.metadata.id, parameter)),\n outputs: outputs.map((output) => outputPort(input.metadata.id, output)),\n },\n parameters: { variables, outputs },\n graph: { nodes, edges },\n execution: {\n ...input.execution,\n ...(timeoutSeconds > 0 ? { timeoutMs: timeoutSeconds * 1000 } : {}),\n conductor: {\n ...conductorOptions,\n ownerEmail:\n conductorOptions.ownerEmail ?? DEFAULT_CONDUCTOR_OWNER_EMAIL,\n },\n },\n triggers: input.triggers,\n views: input.views,\n dataContracts: input.dataContracts,\n governance: input.governance,\n interfaces: input.interfaces,\n });\n};\n\nexport const compileConductorWorkflowDefinition = (\n input: WorkflowDefinition,\n): ConductorWorkflowDefinition => {\n const workflow = WorkflowDefinitionSchema.parse(input);\n return ConductorWorkflowDefinitionSchema.parse({\n ...workflow.execution.conductor,\n ownerEmail:\n workflow.execution.conductor.ownerEmail ??\n DEFAULT_CONDUCTOR_OWNER_EMAIL,\n name: workflow.metadata.id,\n description: localizedText(workflow.metadata.description),\n version: workflow.metadata.version,\n tasks: workflow.graph.nodes.map((node) => node.configuration.task),\n inputParameters: workflow.parameters.variables.map((parameter) => parameter.name),\n outputParameters: Object.fromEntries(workflow.parameters.outputs.map((output) => [output.key, output.value])),\n timeoutSeconds: workflow.execution.timeoutMs ? Math.ceil(workflow.execution.timeoutMs / 1000) : 0,\n });\n};\n\nexport const compileWorkflowPersistenceProjection = (\n input: WorkflowDefinition,\n): WorkflowPersistenceProjection => {\n const workflow = WorkflowDefinitionSchema.parse(input);\n return Object.freeze({\n tasks: Object.freeze(workflow.graph.nodes.map((node) => node.configuration.task)),\n variables: Object.freeze(workflow.parameters.variables),\n output: Object.freeze(workflow.parameters.outputs),\n });\n};\n","import { z } from 'zod';\nimport { ContractIdentifierSchema, JsonValueSchema, Sha256Schema } from './common';\n\nexport const WorkflowColumnFieldRefSchema = z\n .object({\n ontologyId: ContractIdentifierSchema,\n fieldKey: ContractIdentifierSchema,\n })\n .strict();\n\nexport const WorkflowColumnInputSchema = z.discriminatedUnion('kind', [\n z.object({ kind: z.literal('default') }).strict(),\n z.object({ kind: z.literal('constant'), value: JsonValueSchema }).strict(),\n z.object({ kind: z.literal('field'), field: WorkflowColumnFieldRefSchema }).strict(),\n z\n .object({\n kind: z.literal('context'),\n field: z.enum(['assetId', 'teamId', 'ontologyId', 'columnId']),\n })\n .strict(),\n]);\n\nexport const WorkflowColumnDependencySchema = z.discriminatedUnion('kind', [\n z.object({ kind: z.literal('field'), field: WorkflowColumnFieldRefSchema }).strict(),\n z\n .object({\n kind: z.literal('relation'),\n relation: WorkflowColumnFieldRefSchema,\n direction: z.enum(['incoming', 'outgoing']),\n fields: z.array(WorkflowColumnFieldRefSchema).max(100),\n })\n .strict(),\n]);\n\n// Paths are literal own-property segments, never executable JSONPath expressions.\nexport const WorkflowColumnOutputPathSchema = z.array(z.string().min(1).max(256)).max(20);\nexport const WorkflowColumnOutputSchema = z\n .object({\n type: z.enum(['number', 'text', 'json']),\n path: WorkflowColumnOutputPathSchema,\n nullable: z.boolean().default(false),\n })\n .strict();\n\nexport const WorkflowColumnBindingSchema = z\n .object({\n contract: z.literal('WorkflowColumnBinding'),\n version: z.literal(1),\n enabled: z.boolean(),\n paused: z.boolean().default(false),\n workflow: z\n .object({\n id: ContractIdentifierSchema,\n version: z.number().int().positive(),\n inputSchemaHash: Sha256Schema,\n })\n .strict(),\n inputs: z.record(z.string().min(1).max(128), WorkflowColumnInputSchema),\n dependencies: z.array(WorkflowColumnDependencySchema).max(100).default([]),\n output: WorkflowColumnOutputSchema,\n policy: z\n .object({\n debounceMs: z.number().int().min(0).max(30_000).default(5000),\n maxDelayMs: z.number().int().min(0).max(30_000).default(30_000),\n concurrency: z.number().int().min(1).max(32).default(2),\n // Indexed queries need visible projections of their declared sources before execution.\n requireSearchProjection: z.boolean().optional(),\n })\n .strict()\n .default({ debounceMs: 5000, maxDelayMs: 30_000, concurrency: 2 }),\n // The workflow supplies an ISO datetime with offset for one future expiry.\n // Scheduling infrastructure needs no knowledge of months or business periods.\n expiry: z.object({ path: WorkflowColumnOutputPathSchema }).strict().optional(),\n })\n .strict();\n\nexport type WorkflowColumnBinding = z.infer<typeof WorkflowColumnBindingSchema>;\nexport type WorkflowColumnInput = z.infer<typeof WorkflowColumnInputSchema>;\nexport type WorkflowColumnDependency = z.infer<typeof WorkflowColumnDependencySchema>;\nexport type WorkflowColumnFieldRef = z.infer<typeof WorkflowColumnFieldRefSchema>;\n","import { IsoDateTimeSchema, JsonValueSchema, type JsonValue } from '../contracts/common';\nimport {\n WorkflowColumnBindingSchema,\n type WorkflowColumnBinding,\n} from '../contracts/workflow-column';\n\nexport function parseWorkflowColumnBinding(value: unknown): WorkflowColumnBinding {\n const binding = WorkflowColumnBindingSchema.parse(value);\n if (Object.keys(binding.inputs).length > 100)\n throw new Error('Workflow column supports at most 100 input bindings.');\n if (binding.policy.maxDelayMs < binding.policy.debounceMs)\n throw new Error('Workflow column maxDelayMs must be at least debounceMs.');\n for (const name of Object.keys(binding.inputs)) {\n if (\n name !== name.trim() ||\n name.startsWith('__') ||\n name === 'constructor' ||\n name === 'prototype'\n ) {\n throw new Error(`Invalid Workflow input name: ${name}`);\n }\n }\n return binding;\n}\n\nfunction selectOwnValue(payload: unknown, path: string[]): unknown {\n let value = payload;\n for (const key of path) {\n if (\n value === null ||\n typeof value !== 'object' ||\n !Object.prototype.hasOwnProperty.call(value, key)\n ) {\n throw new Error(`Workflow output is missing the configured path: ${JSON.stringify(path)}`);\n }\n value = (value as Record<string, unknown>)[key];\n }\n if (value === undefined) throw new Error('Workflow output is absent.');\n return value;\n}\n\nexport function resolveWorkflowColumnResult(\n binding: WorkflowColumnBinding,\n payload: unknown,\n nowMs = Date.now(),\n): { value: JsonValue; expiresAt?: string } {\n const selected = selectOwnValue(payload, binding.output.path);\n if (selected === null && !binding.output.nullable)\n throw new Error('Workflow output is null but this column does not allow null results.');\n if (selected !== null) {\n if (\n binding.output.type === 'number' &&\n (typeof selected !== 'number' || !Number.isFinite(selected))\n )\n throw new Error('Workflow output must be a finite number.');\n if (binding.output.type === 'text' && typeof selected !== 'string')\n throw new Error('Workflow output must be text.');\n }\n const value = JsonValueSchema.parse(selected);\n if (!binding.expiry) return { value };\n const expiresAt = IsoDateTimeSchema.parse(selectOwnValue(payload, binding.expiry.path));\n if (!Number.isFinite(nowMs) || Date.parse(expiresAt) <= nowMs)\n throw new Error('Workflow expiry must be a future datetime.');\n return { value, expiresAt };\n}\n","import { z } from 'zod';\nimport { ContractIdentifierSchema, ContractVersionSchema, LocalizedTextSchema } from './common';\n\nexport const PermissionDefinitionSchema = z\n .object({\n code: ContractIdentifierSchema,\n name: LocalizedTextSchema,\n description: LocalizedTextSchema.optional(),\n resource: ContractIdentifierSchema,\n action: ContractIdentifierSchema,\n domain: ContractIdentifierSchema.optional(),\n })\n .strict();\n\nexport const PermissionBundleSchema = z\n .object({\n bundleId: ContractIdentifierSchema,\n name: LocalizedTextSchema,\n permissionCodes: z.array(ContractIdentifierSchema).default([]),\n })\n .strict();\n\nexport const SystemGroupDefinitionSchema = z\n .object({\n groupCode: ContractIdentifierSchema,\n name: LocalizedTextSchema,\n description: LocalizedTextSchema.optional(),\n permissionPolicy: z.enum(['bundles', 'studio_current', 'all_current']).default('bundles'),\n permissionBundleIds: z.array(ContractIdentifierSchema).default([]),\n })\n .strict()\n .refine((value) => value.permissionPolicy !== 'bundles' || value.permissionBundleIds.length > 0, {\n message: 'A bundles permission policy requires at least one permission bundle.',\n path: ['permissionBundleIds'],\n });\n\nexport const ProductAccessDeclarationSchema = z\n .object({\n contract: z.literal('ProductAccessDeclaration'),\n declarationId: ContractIdentifierSchema,\n version: ContractVersionSchema,\n ownerRepo: ContractIdentifierSchema,\n permissions: z.array(PermissionDefinitionSchema).default([]),\n permissionBundles: z.array(PermissionBundleSchema).default([]),\n systemGroups: z.array(SystemGroupDefinitionSchema).min(1),\n })\n .strict();\n\nexport type PermissionDefinition = z.infer<typeof PermissionDefinitionSchema>;\nexport type PermissionBundle = z.infer<typeof PermissionBundleSchema>;\nexport type SystemGroupDefinition = z.infer<typeof SystemGroupDefinitionSchema>;\nexport type ProductAccessDeclaration = z.infer<typeof ProductAccessDeclarationSchema>;\n","import {\n ProductAccessDeclarationSchema,\n type ProductAccessDeclaration,\n} from '../contracts/access';\n\nexport interface CompiledProductAccessDeclaration {\n declaration: ProductAccessDeclaration;\n permissionsByCode: ReadonlyMap<string, ProductAccessDeclaration['permissions'][number]>;\n permissionCodesByBundle: ReadonlyMap<string, readonly string[]>;\n permissionCodesBySystemGroup: ReadonlyMap<string, readonly string[]>;\n permissionPolicyBySystemGroup: ReadonlyMap<string, ProductAccessDeclaration['systemGroups'][number]['permissionPolicy']>;\n}\n\nconst uniqueBy = <T>(values: readonly T[], key: (value: T) => string, label: string): Map<string, T> => {\n const result = new Map<string, T>();\n for (const value of values) {\n const id = key(value);\n if (result.has(id)) throw new Error(`Duplicate ${label} ${id}.`);\n result.set(id, value);\n }\n return result;\n};\n\nexport const compileProductAccessDeclaration = (\n input: ProductAccessDeclaration,\n): CompiledProductAccessDeclaration => {\n const declaration = ProductAccessDeclarationSchema.parse(input);\n const permissionsByCode = uniqueBy(declaration.permissions, (item) => item.code, 'permission');\n const bundlesById = uniqueBy(declaration.permissionBundles, (item) => item.bundleId, 'permission bundle');\n uniqueBy(declaration.systemGroups, (item) => item.groupCode, 'system group');\n\n const permissionCodesByBundle = new Map<string, readonly string[]>();\n for (const bundle of declaration.permissionBundles) {\n for (const permissionCode of bundle.permissionCodes) {\n if (!permissionsByCode.has(permissionCode)) {\n throw new Error(`Permission bundle ${bundle.bundleId} references unknown permission ${permissionCode}.`);\n }\n }\n permissionCodesByBundle.set(bundle.bundleId, [...new Set(bundle.permissionCodes)]);\n }\n\n const permissionCodesBySystemGroup = new Map<string, readonly string[]>();\n const permissionPolicyBySystemGroup = new Map<string, ProductAccessDeclaration['systemGroups'][number]['permissionPolicy']>();\n for (const group of declaration.systemGroups) {\n const permissionCodes = new Set<string>();\n permissionPolicyBySystemGroup.set(group.groupCode, group.permissionPolicy);\n if (group.permissionPolicy === 'all_current') {\n for (const permission of declaration.permissions) permissionCodes.add(permission.code);\n }\n if (group.permissionPolicy === 'studio_current') {\n for (const permission of declaration.permissions) {\n if (permission.domain === 'studio' || permission.code.startsWith('studio:')) permissionCodes.add(permission.code);\n }\n }\n for (const bundleId of group.permissionBundleIds) {\n if (!bundlesById.has(bundleId)) {\n throw new Error(`System group ${group.groupCode} references unknown permission bundle ${bundleId}.`);\n }\n for (const permissionCode of permissionCodesByBundle.get(bundleId) ?? []) {\n permissionCodes.add(permissionCode);\n }\n }\n permissionCodesBySystemGroup.set(group.groupCode, [...permissionCodes]);\n }\n\n return {\n declaration,\n permissionsByCode,\n permissionCodesByBundle,\n permissionCodesBySystemGroup,\n permissionPolicyBySystemGroup,\n };\n};\n","import Ajv from 'ajv';\nimport type { ComponentAssembly, ComponentAssemblyDescriptor } from '../contracts/component-assembly';\nimport { ComponentAssemblySchema } from '../contracts/component-assembly';\n\nconst validatorPools = new WeakMap<object, Ajv>();\nconst definitionId = 'https://monkeys.design/schemas/component-props/v1';\n\nconst schemaObject = (value: unknown): Record<string, unknown> | undefined =>\n value !== null && typeof value === 'object' && !Array.isArray(value) ? value as Record<string, unknown> : undefined;\n\n/** Only declared text leaves are localizable; unrestricted objects do not declare text. */\nconst declaresTextPath = (schema: unknown, path: readonly (string | number)[], definitions: Record<string, unknown>, depth = 0): boolean => {\n if (depth > 48) return false;\n const node = schemaObject(schema);\n if (!node) return false;\n if (node.const !== undefined || node.enum !== undefined || node.pattern !== undefined || node.format !== undefined) return false;\n if (Array.isArray(node.allOf) && node.allOf.some(variant => {\n const constraint = schemaObject(variant);\n return constraint && ['const', 'enum', 'pattern', 'format'].some(key => constraint[key] !== undefined);\n })) return false;\n if (typeof node.$ref === 'string' && node.$ref.startsWith('#/$defs/')) {\n const name = node.$ref.slice('#/$defs/'.length).replace(/~1/g, '/').replace(/~0/g, '~');\n if (Object.prototype.hasOwnProperty.call(definitions, name) && declaresTextPath(definitions[name], path, definitions, depth + 1)) return true;\n }\n for (const kind of ['anyOf', 'oneOf', 'allOf']) {\n const variants = node[kind];\n if (Array.isArray(variants) && variants.some(variant => declaresTextPath(variant, path, definitions, depth + 1))) return true;\n }\n if (path.length === 0) {\n // Enums and discriminators describe structure, even when encoded as strings.\n return node.type === 'string' || (Array.isArray(node.type) && node.type.includes('string'));\n }\n const [part, ...rest] = path;\n if (typeof part === 'number') {\n const tuple = Array.isArray(node.prefixItems) ? node.prefixItems : Array.isArray(node.items) ? node.items : undefined;\n return declaresTextPath(tuple ? tuple[part] : node.items, rest, definitions, depth + 1);\n }\n const properties = schemaObject(node.properties);\n const child = properties && Object.prototype.hasOwnProperty.call(properties, part!) ? properties[part!] : node.additionalProperties;\n return declaresTextPath(child, rest, definitions, depth + 1);\n};\n\nconst readOwnTextTarget = (props: unknown, path: readonly (string | number)[]): unknown => {\n let current = props;\n for (const part of path) {\n if (current === null || typeof current !== 'object' ||\n (Array.isArray(current) ? typeof part !== 'number' || part >= current.length : typeof part !== 'string') ||\n !Object.prototype.hasOwnProperty.call(current, part)) throw new TypeError('Localized component path does not exist.');\n current = (current as Record<string | number, unknown>)[part];\n }\n return current;\n};\n\n/** Compile once per descriptor; runtime values still come from the owning props. */\nexport function compileComponentAssemblyValidator(\n descriptor: ComponentAssemblyDescriptor,\n definitions: Record<string, unknown> = {},\n): (value: unknown) => ComponentAssembly {\n let ajv = validatorPools.get(definitions);\n if (!ajv) {\n ajv = new Ajv({ strict: false, allErrors: true, validateFormats: false });\n ajv.addSchema({ $id: definitionId, $defs: definitions });\n validatorPools.set(definitions, ajv);\n }\n const propertySchema = (schema: unknown): any => {\n if (Array.isArray(schema)) return schema.map(propertySchema);\n if (schema && typeof schema === 'object') return Object.fromEntries(Object.entries(schema).map(([key, value]) => [key, key === '$ref' && typeof value === 'string' && value.startsWith('#/$defs/') ? definitionId + value : propertySchema(value)]));\n return schema ?? {};\n };\n const scalarSlot = { anyOf: [{ type: ['string', 'number', 'boolean', 'null'] }, { type: 'array', items: { $ref: '#/$defs/renderable' } }] };\n const properties = Object.fromEntries(descriptor.props.filter((prop) => prop.kind === 'property' || prop.kind === 'slot' || prop.accepts?.includes('slot') || prop.accepts?.includes('property')).map((prop) => [prop.name, prop.schema === undefined ? scalarSlot : propertySchema(prop.schema)]));\n const variants = descriptor.variants?.map((variant) => ({ ...variant, validate: ajv.compile({ type: 'object', properties: Object.fromEntries(Object.entries(variant.properties).map(([name, schema]) => [name, propertySchema(schema)])) }) }));\n const validate = ajv.compile({ $defs: { renderable: scalarSlot }, type: 'object', properties, patternProperties: { '^(data-|aria-)[a-zA-Z0-9_-]+$': { type: ['string', 'number', 'boolean', 'null'] } }, additionalProperties: false });\n const byName = new Map(descriptor.props.map((prop) => [prop.name, prop]));\n return (value) => {\n // Preserve explicit slot-name arrays in declaration order; RenderTree owns each slot.\n const assembly = ComponentAssemblySchema.parse(value);\n if (Object.prototype.hasOwnProperty.call(assembly.props, 'dangerouslySetInnerHTML')) throw new TypeError('Executable HTML is not a component assembly prop.');\n if (!validate(assembly.props)) throw new TypeError(`Invalid ${descriptor.id} props: ${ajv.errorsText(validate.errors)}`);\n for (const [group, kind] of [['events', 'event'], ['slots', 'slot'], ['renderers', 'renderer']] as const) {\n for (const name of Object.keys(assembly[group])) {\n if (byName.get(name)?.kind !== kind && !byName.get(name)?.accepts?.includes(kind)) throw new TypeError(`Invalid ${descriptor.id} ${group} member: ${name}`);\n }\n }\n for (const name of Object.keys(assembly.hosts)) {\n if (!byName.has(name)) throw new TypeError(`Unknown ${descriptor.id} host member: ${name}`);\n }\n for (const name of Object.keys(assembly.messages)) {\n if (!byName.has(name) || !(['slot', 'property'].includes(byName.get(name)!.kind) || byName.get(name)?.accepts?.includes('slot'))) throw new TypeError(`Invalid ${descriptor.id} localized member: ${name}`);\n }\n for (const binding of assembly.messageBindings ?? []) {\n const root = binding.path[0];\n const prop = typeof root === 'string' ? byName.get(root) : undefined;\n if (!prop || !['property', 'slot'].includes(prop.kind) || !Object.prototype.hasOwnProperty.call(assembly.props, root!)) throw new TypeError(`Invalid ${descriptor.id} localized path root.`);\n if (['id', 'type', 'key', 'contract', 'schemaVersion'].includes(String(binding.path[binding.path.length - 1]))) throw new TypeError(`Invalid ${descriptor.id} structural localization target.`);\n const target = readOwnTextTarget(assembly.props, binding.path);\n if ((typeof target !== 'string' && target !== null) || !declaresTextPath(prop.schema ?? scalarSlot, binding.path.slice(1), definitions)) throw new TypeError(`Invalid ${descriptor.id} localized text path.`);\n }\n for (const prop of descriptor.props) {\n if (prop.required && !Object.values(assembly).some((group) => group && typeof group === 'object' && Object.prototype.hasOwnProperty.call(group, prop.name))) {\n throw new TypeError(`Missing ${descriptor.id} prop: ${prop.name}`);\n }\n }\n if (variants) {\n const supplied = new Set(['props', 'events', 'slots', 'renderers', 'hosts', 'messages'].flatMap((group) => Object.keys(assembly[group as 'props'])));\n if (!variants.some((variant) => variant.required.every((name) => supplied.has(name)) && [...supplied].every((name) => variant.allowed.includes(name) || /^(data-|aria-)/.test(name)) && variant.validate(assembly.props))) throw new TypeError(`Invalid ${descriptor.id} prop combination.`);\n }\n return assembly;\n };\n}\n","import { I18nTextSchema } from './declarative-control';\nimport { z } from 'zod';\nimport { ContractIdentifierSchema, JsonObjectSchema } from './common';\n\nconst member = z.string().min(1).max(256).refine(\n (value) => !['__proto__', 'prototype', 'constructor'].includes(value),\n 'Unsafe component member.',\n);\n\n/** A bounded projection of callback arguments, never executable source. */\nexport const ComponentEventArgumentSchema = z.object({\n argument: z.number().int().min(0).max(31),\n path: z.array(member).max(16).default([]),\n}).strict();\n\nexport const ComponentEventBindingSchema = z.object({\n port: ContractIdentifierSchema,\n arguments: z.array(ComponentEventArgumentSchema).max(32).default([]),\n preventDefault: z.boolean().default(false),\n stopPropagation: z.boolean().default(false),\n}).strict();\n\nexport const ComponentMessageSchema = z.union([\n ContractIdentifierSchema,\n z.object({ textI18n: I18nTextSchema }).strict(),\n z.object({ key: ContractIdentifierSchema, values: z.record(member, z.union([z.string(), z.number().finite(), z.boolean()])).default({}) }).strict(),\n]);\n\n/** An explicit text location inside existing JSON props, never executable source. */\nexport const ComponentMessageBindingSchema = z.object({\n path: z.array(z.union([\n member.refine(value => !/[\\u0000-\\u001f\\u007f-\\u009f]/.test(value), 'Invalid component path member.'),\n z.number().int().nonnegative().max(Number.MAX_SAFE_INTEGER),\n ])).min(1).max(16),\n message: ComponentMessageSchema,\n}).strict();\n\n/** Optional adaptation of original React props on an existing RenderNode. */\nexport const ComponentAssemblySchema = z.object({\n contract: z.literal('ComponentAssembly'),\n schemaVersion: z.literal(1),\n props: JsonObjectSchema.default({}),\n events: z.record(member, ComponentEventBindingSchema).default({}),\n // Each name remains an explicit RenderTree slot; array order controls composition.\n slots: z.record(member, z.union([ContractIdentifierSchema, z.array(ContractIdentifierSchema).min(1).max(256).refine(names => new Set(names).size === names.length, 'Component slot names must be unique.')])).default({}),\n renderers: z.record(member, ContractIdentifierSchema).default({}),\n hosts: z.record(member, ContractIdentifierSchema).default({}),\n messages: z.record(member, ComponentMessageSchema).default({}),\n messageBindings: z.array(ComponentMessageBindingSchema).max(256).optional(),\n}).strict().superRefine((value, context) => {\n const paths = value.messageBindings?.map(binding => binding.path) ?? [];\n for (const [index, path] of paths.entries()) {\n if (typeof path[0] !== 'string' || Object.prototype.hasOwnProperty.call(value.messages, path[0]) || paths.slice(0, index).some(previous => previous.every((part, offset) => path[offset] === part) || path.every((part, offset) => previous[offset] === part))) {\n context.addIssue({ code: 'custom', path: ['messageBindings', index, 'path'], message: 'Localized paths need a named root and unique, non-overlapping ownership.' });\n }\n }\n const seen = new Set<string>();\n for (const group of ['props', 'events', 'slots', 'renderers', 'hosts', 'messages'] as const) {\n for (const key of Object.keys(value[group])) {\n if (!member.safeParse(key).success || seen.has(key)) {\n context.addIssue({ code: 'custom', path: [group, key], message: 'Component prop has an unsafe or duplicate owner.' });\n }\n seen.add(key);\n }\n }\n});\n\nexport type ComponentMessage = z.infer<typeof ComponentMessageSchema>;\nexport type ComponentMessageBinding = z.infer<typeof ComponentMessageBindingSchema>;\nexport type ComponentEventArgument = z.infer<typeof ComponentEventArgumentSchema>;\nexport type ComponentEventBinding = z.infer<typeof ComponentEventBindingSchema>;\nexport type ComponentAssembly = z.infer<typeof ComponentAssemblySchema>;\n\nexport interface ComponentPropDescriptor {\n name: string;\n type: string;\n required: boolean;\n kind: 'property' | 'slot' | 'event' | 'renderer' | 'host';\n accepts?: readonly ('property' | 'slot' | 'event' | 'renderer' | 'host')[];\n defaultValue?: unknown;\n schema?: Record<string, unknown> | boolean;\n parameters?: readonly { name: string; type: string }[];\n result?: string;\n}\n\nexport interface ComponentAssemblyDescriptor {\n id: string;\n version: 1;\n source: string;\n exports: readonly { entrypoint: string; export: string }[];\n props: readonly ComponentPropDescriptor[];\n variants?: readonly { required: readonly string[]; allowed: readonly string[]; properties: Record<string, Record<string, unknown> | boolean> }[];\n stateBindings?: readonly { prop: string; defaultProp?: string; event: string; argument: number; path: readonly string[] }[];\n}\n","import type { JsonObject, JsonValue } from '../contracts/common';\nimport {\n PageExpressionSchema, PagePropertyBindingSchema, PAGE_EXPRESSION_LIMITS, assertPageValueBudget,\n type PageExpression, type PagePropertyBinding,\n} from '../contracts/page-expression';\n\nexport type PageExpressionContext = Partial<Record<'state' | 'model' | 'bindings' | 'queries' | 'scope' | 'intent' | 'result' | 'actions', JsonValue>>;\nconst unsafe = new Set(['__proto__', 'prototype', 'constructor']);\nconst fail = (code: string): never => { throw Object.assign(new Error(code), { code }); };\nconst assertBudget = assertPageValueBudget;\n\nexport const readPageValue = (value: JsonValue | undefined, path: readonly string[]): JsonValue | undefined => {\n let current = value;\n for (const segment of path) {\n if (unsafe.has(segment)) fail('PAGE_EXPRESSION_UNSAFE_PATH');\n if (!current || typeof current !== 'object' || !Object.prototype.hasOwnProperty.call(current, segment)) return undefined;\n if (Array.isArray(current) && !/^(0|[1-9][0-9]*)$/.test(segment)) return undefined;\n current = (current as JsonObject)[segment];\n }\n return current;\n};\n\nconst unary = new Set(['not', 'string', 'number', 'length', 'round', 'entries', 'from-entries', 'trim', 'encode-uri-component']);\nconst binary = new Set(['subtract', 'divide', 'equals', 'not-equals', 'less-than', 'less-or-equal', 'greater-than', 'greater-or-equal', 'includes', 'get', 'fixed']);\n\nexport const compilePageExpression = (input: unknown): PageExpression => {\n assertBudget(input);\n const expression = PageExpressionSchema.parse(input);\n const check = (node: PageExpression): void => {\n if (node.kind === 'operator') {\n if ((unary.has(node.operator) && node.arguments.length !== 1) || (binary.has(node.operator) && node.arguments.length !== 2) || (['set-path', 'slice'].includes(node.operator) && node.arguments.length !== 3) || (node.operator === 'number-format' && node.arguments.length !== 5)) fail('PAGE_EXPRESSION_ARITY');\n node.arguments.forEach(check);\n } else if (node.kind === 'conditional') {\n check(node.condition); check(node.then); check(node.else);\n } else if (node.kind === 'object') Object.values(node.fields).forEach(check);\n else if (node.kind === 'array') node.items.forEach(check);\n else if (node.kind === 'map' || node.kind === 'filter' || node.kind === 'sum') { check(node.source); check(node.value); }\n };\n check(expression);\n return expression;\n};\n\nconst number = (value: JsonValue): number => typeof value === 'number' && Number.isFinite(value) ? value : fail('PAGE_EXPRESSION_TYPE_NUMBER');\nconst boolean = (value: JsonValue): boolean => typeof value === 'boolean' ? value : fail('PAGE_EXPRESSION_TYPE_BOOLEAN');\nconst finite = (value: number): number => Number.isFinite(value) ? value : fail('PAGE_EXPRESSION_NUMBER');\nconst object = (value: JsonValue): JsonObject => value && typeof value === 'object' && !Array.isArray(value) ? value : fail('PAGE_EXPRESSION_TYPE_OBJECT');\nconst valuePath = (value: JsonValue): string[] => {\n if (!Array.isArray(value) || value.length > 16 || value.some((segment) => typeof segment !== 'string' || !segment || unsafe.has(segment))) return fail('PAGE_EXPRESSION_UNSAFE_PATH');\n return value as string[];\n};\n\nexport const writePageDraftPath = (source: JsonValue, path: readonly string[], value: JsonValue): JsonValue => {\n if (!path.length) return value;\n const [segment, ...rest] = path;\n if (!segment || unsafe.has(segment) || path.length > 16) return fail('PAGE_EXPRESSION_UNSAFE_PATH');\n if (Array.isArray(source)) {\n if (!/^(0|[1-9][0-9]*)$/.test(segment) || Number(segment) >= source.length) return fail('PAGE_EXPRESSION_ARRAY_INDEX');\n return source.map((item, index) => index === Number(segment) ? writePageDraftPath(item, rest, value) : item);\n }\n const current = object(source);\n return { ...current, [segment]: writePageDraftPath(current[segment] ?? {}, rest, value) };\n};\n\nconst same = (a: JsonValue, b: JsonValue): boolean => {\n if (a === b) return true;\n if (!a || !b || typeof a !== 'object' || typeof b !== 'object' || Array.isArray(a) !== Array.isArray(b)) return false;\n const keys = Object.keys(a);\n return keys.length === Object.keys(b).length && keys.every((key) => Object.prototype.hasOwnProperty.call(b, key) && same((a as JsonObject)[key]!, (b as JsonObject)[key]!));\n};\n\nconst evaluateCompiled = (expression: PageExpression, context: PageExpressionContext, budget: { operations: number }): JsonValue => {\n const run = (node: PageExpression, current: PageExpressionContext): JsonValue => {\n if (++budget.operations > PAGE_EXPRESSION_LIMITS.operations) fail('PAGE_EXPRESSION_BUDGET');\n if (node.kind === 'literal') return node.value;\n if (node.kind === 'read') {\n const value = readPageValue(current[node.root], node.path) ?? null;\n assertBudget(value);\n return value;\n }\n if (node.kind === 'conditional') return run(boolean(run(node.condition, current)) ? node.then : node.else, current);\n if (node.kind === 'object') return Object.fromEntries(Object.entries(node.fields).map(([key, value]) => [key, run(value, current)]));\n if (node.kind === 'array') return node.items.map((value) => run(value, current));\n if (node.kind === 'map' || node.kind === 'filter' || node.kind === 'sum') {\n const source = run(node.source, current);\n if (!Array.isArray(source)) return fail('PAGE_EXPRESSION_TYPE_ARRAY');\n if (source.length > PAGE_EXPRESSION_LIMITS.collection) fail('PAGE_EXPRESSION_BUDGET');\n const values = source.map((item, index) => run(node.value, { ...current, scope: { item, index, parent: current.scope ?? null } }));\n if (node.kind === 'map') return values;\n if (node.kind === 'filter') return source.filter((_, index) => boolean(values[index]!));\n return finite(values.reduce<number>((total, value) => total + number(value), 0));\n }\n if (node.kind !== 'operator') return fail('PAGE_EXPRESSION_INVALID');\n if (node.operator === 'coalesce') {\n for (const argument of node.arguments) { const value = run(argument, current); if (value !== null) return value; }\n return null;\n }\n if (node.operator === 'and') return node.arguments.every((argument) => boolean(run(argument, current)));\n if (node.operator === 'or') return node.arguments.some((argument) => boolean(run(argument, current)));\n const values = node.arguments.map((argument) => run(argument, current));\n const first = values[0]!;\n const second = values[1]!;\n switch (node.operator) {\n case 'add': return finite(values.reduce<number>((a, b) => a + number(b), 0));\n case 'subtract': return finite(number(first) - number(second));\n case 'multiply': return finite(values.reduce<number>((a, b) => a * number(b), 1));\n case 'divide': { const numerator = number(first); const denominator = number(second); return denominator === 0 ? null : finite(numerator / denominator); }\n case 'min': return Math.min(...values.map(number));\n case 'max': return Math.max(...values.map(number));\n case 'round': return Math.round(number(first));\n case 'equals': return same(first, second);\n case 'not-equals': return !same(first, second);\n case 'less-than': return number(first) < number(second);\n case 'less-or-equal': return number(first) <= number(second);\n case 'greater-than': return number(first) > number(second);\n case 'greater-or-equal': return number(first) >= number(second);\n case 'not': return !boolean(first);\n case 'string': return first === null ? '' : typeof first === 'object' ? fail('PAGE_EXPRESSION_TYPE_SCALAR') : String(first);\n case 'number': return typeof first === 'number' ? first : typeof first === 'string' && first.trim() && Number.isFinite(Number(first)) ? Number(first) : null;\n case 'concat': {\n const strings = values.map((value) => typeof value === 'string' ? value : fail('PAGE_EXPRESSION_TYPE_STRING'));\n if (strings.reduce((bytes, value) => bytes + value.length * 2, 0) > PAGE_EXPRESSION_LIMITS.bytes) fail('PAGE_EXPRESSION_BUDGET');\n return strings.join('');\n }\n case 'length': return typeof first === 'string' || Array.isArray(first) ? first.length : fail('PAGE_EXPRESSION_TYPE_COLLECTION');\n case 'includes': return Array.isArray(first) ? first.some((value) => same(value, second)) : typeof first === 'string' && typeof second === 'string' ? first.includes(second) : fail('PAGE_EXPRESSION_TYPE_COLLECTION');\n case 'get': {\n if (typeof second !== 'string') return fail('PAGE_EXPRESSION_TYPE_STRING');\n return readPageValue(first, [second]) ?? null;\n }\n case 'set-path': return writePageDraftPath(first, valuePath(second), values[2]!);\n case 'merge': {\n const objects = values.map(object);\n const merged = Object.assign({}, ...objects) as JsonObject;\n assertBudget(merged);\n return merged;\n }\n case 'entries': return Object.entries(object(first));\n case 'from-entries': {\n const result: JsonObject = {};\n if (!Array.isArray(first) || first.length > PAGE_EXPRESSION_LIMITS.collection) return fail('PAGE_EXPRESSION_TYPE_ARRAY');\n for (const pair of first) {\n if (!Array.isArray(pair) || pair.length !== 2 || typeof pair[0] !== 'string' || unsafe.has(pair[0])) return fail('PAGE_EXPRESSION_ENTRY');\n if (Object.prototype.hasOwnProperty.call(result, pair[0])) return fail('PAGE_EXPRESSION_DUPLICATE_KEY');\n result[pair[0]] = pair[1]!;\n }\n return result;\n }\n case 'array-concat': {\n const result: JsonValue[] = [];\n for (const value of values) {\n if (!Array.isArray(value)) return fail('PAGE_EXPRESSION_TYPE_ARRAY');\n if (result.length + value.length > PAGE_EXPRESSION_LIMITS.collection) return fail('PAGE_EXPRESSION_BUDGET');\n result.push(...value);\n }\n return result;\n }\n case 'slice': {\n const start = number(second); const end = number(values[2]!);\n if (!Array.isArray(first) || !Number.isSafeInteger(start) || !Number.isSafeInteger(end)) return fail('PAGE_EXPRESSION_TYPE_ARRAY');\n return first.slice(start, end);\n }\n case 'trim': return typeof first === 'string' ? first.trim() : fail('PAGE_EXPRESSION_TYPE_STRING');\n case 'encode-uri-component': {\n if (typeof first !== 'string') return fail('PAGE_EXPRESSION_TYPE_STRING');\n try { return encodeURIComponent(first); } catch { return fail('PAGE_EXPRESSION_INVALID_UNICODE'); }\n }\n case 'number-format': {\n if (second !== 'en-US' && second !== 'zh-CN') return fail('PAGE_EXPRESSION_LOCALE');\n const minimumFractionDigits = number(values[2]!);\n const maximumFractionDigits = number(values[3]!);\n if (![minimumFractionDigits, maximumFractionDigits].every((digits) => Number.isSafeInteger(digits) && digits >= 0 && digits <= 10) || minimumFractionDigits > maximumFractionDigits) return fail('PAGE_EXPRESSION_PRECISION');\n return new Intl.NumberFormat(second, { minimumFractionDigits, maximumFractionDigits, useGrouping: boolean(values[4]!) }).format(number(first));\n }\n case 'fixed': {\n const digits = number(second);\n if (!Number.isSafeInteger(digits) || digits < 0 || digits > 10) return fail('PAGE_EXPRESSION_PRECISION');\n return number(first).toFixed(digits);\n }\n\n }\n };\n const result = run(expression, context);\n assertBudget(result);\n return result;\n};\n\nexport const evaluatePageExpression = (expression: unknown, context: PageExpressionContext): JsonValue =>\n evaluateCompiled(compilePageExpression(expression), context, { operations: 0 });\n\nconst write = (input: JsonObject, path: readonly string[], value: JsonValue): JsonObject => {\n const [key, ...rest] = path;\n if (!key || unsafe.has(key)) return fail('PAGE_EXPRESSION_UNSAFE_PATH');\n if (!rest.length) return { ...input, [key]: value };\n const child = input[key];\n if (child !== undefined && (child === null || typeof child !== 'object' || Array.isArray(child))) fail('PAGE_PROPERTY_PATH_TYPE');\n return { ...input, [key]: write((child ?? {}) as JsonObject, rest, value) };\n};\n\nexport const projectPageProperties = (base: JsonObject, bindings: readonly PagePropertyBinding[], context: PageExpressionContext): JsonObject => {\n assertBudget(bindings);\n const parsed = bindings.map((binding) => PagePropertyBindingSchema.parse(binding));\n const paths: string[][] = [];\n for (const binding of parsed) {\n if (paths.some((path) => path.slice(0, Math.min(path.length, binding.targetPath.length)).every((key, i) => key === binding.targetPath[i]))) fail('PAGE_PROPERTY_OVERLAP');\n paths.push(binding.targetPath);\n }\n const budget = { operations: 0 };\n return parsed.reduce((model, binding) => {\n const value = evaluateCompiled(compilePageExpression(binding.expression), context, budget);\n const type = value === null ? 'null' : Array.isArray(value) ? 'array' : typeof value;\n if (binding.valueType && type !== binding.valueType) fail('PAGE_PROPERTY_TYPE');\n return write(model, binding.targetPath, value);\n }, base);\n};\n","import { z } from 'zod';\nimport { JsonObjectSchema, JsonValueSchema } from './common';\n\nconst member = z.string().min(1).max(256).refine((value) => !['__proto__', 'prototype', 'constructor'].includes(value), 'Unsafe editor path.');\nexport const RecordEditorPathSchema = z.array(z.union([member, z.object({ itemId: z.string().min(1).max(256), idKey: member.default('id') }).strict()])).max(32);\nexport const RecordEditorFieldErrorSchema = z.object({ path: RecordEditorPathSchema, code: z.string().min(1).max(256) }).strict();\n/** Only non-sensitive document values belong in a draft. Secret replacements remain component-local. */\nexport const RecordEditorDraftSchema = z.object({\n revision: z.string().min(1).max(256),\n original: JsonObjectSchema,\n value: JsonObjectSchema,\n touched: z.array(RecordEditorPathSchema).max(4096),\n errors: z.array(RecordEditorFieldErrorSchema).max(4096),\n}).strict();\nexport const RecordEditorDraftOperationSchema = z.discriminatedUnion('kind', [\n z.object({ kind: z.literal('set'), path: RecordEditorPathSchema, value: JsonValueSchema }).strict(),\n z.object({ kind: z.literal('touch'), path: RecordEditorPathSchema }).strict(),\n z.object({ kind: z.literal('reset'), revision: z.string().min(1).max(256), value: JsonObjectSchema }).strict(),\n z.object({ kind: z.literal('insert'), path: RecordEditorPathSchema, idKey: member.default('id'), value: JsonObjectSchema, beforeId: z.string().min(1).optional() }).strict(),\n z.object({ kind: z.literal('remove'), path: RecordEditorPathSchema, idKey: member.default('id'), itemId: z.string().min(1) }).strict(),\n z.object({ kind: z.literal('move'), path: RecordEditorPathSchema, idKey: member.default('id'), itemId: z.string().min(1), beforeId: z.string().min(1).optional() }).strict(),\n]);\nexport type RecordEditorPath = z.infer<typeof RecordEditorPathSchema>;\nexport type RecordEditorDraft = z.infer<typeof RecordEditorDraftSchema>;\nexport type RecordEditorDraftOperation = z.infer<typeof RecordEditorDraftOperationSchema>;\nexport type RecordEditorFieldError = z.infer<typeof RecordEditorFieldErrorSchema>;\n\n/** Safe Action diagnostics: paths and localization codes only, never submitted values. */\nexport const RecordEditorValidationDetailsSchema = z.object({\n contract: z.literal('RecordEditorValidation'),\n schemaVersion: z.literal(1),\n errors: z.array(RecordEditorFieldErrorSchema).min(1).max(256),\n}).strict();\nexport const RecordEditorSubmissionSnapshotSchema = z.object({\n revision: z.string().min(1).max(256),\n value: JsonObjectSchema,\n}).strict();\nexport type RecordEditorSubmissionSnapshot = z.infer<typeof RecordEditorSubmissionSnapshotSchema>;\n","import type { JsonObject, JsonValue } from '../contracts/common';\nimport { RecordEditorDraftOperationSchema, RecordEditorPathSchema, RecordEditorSubmissionSnapshotSchema, RecordEditorValidationDetailsSchema, type RecordEditorSubmissionSnapshot, type RecordEditorDraft, type RecordEditorDraftOperation, type RecordEditorPath } from '../contracts/record-editor-draft';\n\nconst own = (value: object, key: string) => Object.prototype.hasOwnProperty.call(value, key);\nexport const recordEditorValuesEqual = (left: JsonValue, right: JsonValue): boolean => {\n if (left === right) return true;\n if (!left || !right || typeof left !== 'object' || typeof right !== 'object' || Array.isArray(left) !== Array.isArray(right)) return false;\n const keys = Object.keys(left);\n return keys.length === Object.keys(right).length && keys.every((key) => own(right, key) && recordEditorValuesEqual((left as JsonObject)[key]!, (right as JsonObject)[key]!));\n};\nexport const recordEditorPathKey = (path: RecordEditorPath): string => JSON.stringify(RecordEditorPathSchema.parse(path));\nconst assertValue = (value: JsonValue) => {\n let nodes = 0;\n const visit = (current: JsonValue, depth: number) => {\n if (++nodes > 16384 || depth > 32) throw new RangeError('Editor draft exceeds its value budget.');\n if (current !== null && typeof current !== 'string' && typeof current !== 'boolean' && !(typeof current === 'number' && Number.isFinite(current)) && typeof current !== 'object') throw new TypeError('Editor draft requires JSON values.');\n if (typeof current === 'number' && !Number.isFinite(current)) throw new TypeError('Editor draft requires finite numbers.');\n if (current && typeof current === 'object' && !Array.isArray(current) && Object.getPrototypeOf(current) !== Object.prototype && Object.getPrototypeOf(current) !== null) throw new TypeError('Editor draft requires plain objects.');\n if (current && typeof current === 'object') for (const [key, child] of Object.entries(current)) {\n if (['__proto__', 'prototype', 'constructor'].includes(key)) throw new TypeError('Unsafe editor member.');\n visit(child, depth + 1);\n }\n };\n visit(value, 0);\n};\nexport const createRecordEditorDraft = (revision: string, value: JsonObject): RecordEditorDraft => {\n if (!revision || revision.length > 256) throw new TypeError('Editor reset requires a revision.');\n assertValue(value);\n const original = JSON.parse(JSON.stringify(value)) as JsonObject;\n return { revision, original, value: JSON.parse(JSON.stringify(original)), touched: [], errors: [] };\n};\nexport const recordEditorDraftIsDirty = (draft: RecordEditorDraft): boolean => !recordEditorValuesEqual(draft.original, draft.value);\nexport const recordEditorArrayItems = (value: JsonValue | undefined, idKey: string): JsonObject[] => {\n RecordEditorPathSchema.parse([idKey]);\n if (!Array.isArray(value) || value.length > 1000) throw new TypeError('Editor array requires at most 1000 identified objects.');\n const seen = new Set<string>();\n for (const item of value) {\n if (!item || typeof item !== 'object' || Array.isArray(item) || !own(item, idKey) || typeof item[idKey] !== 'string' || !item[idKey] || seen.has(item[idKey] as string)) throw new TypeError('Editor array requires unique non-empty stable IDs.');\n seen.add(item[idKey] as string);\n }\n return value as JsonObject[];\n};\nexport const readRecordEditorPath = (value: JsonValue, path: RecordEditorPath): JsonValue | undefined => {\n let current: JsonValue | undefined = value;\n for (const segment of RecordEditorPathSchema.parse(path)) {\n if (typeof segment !== 'string') current = recordEditorArrayItems(current, segment.idKey).find((item) => item[segment.idKey] === segment.itemId);\n else current = current && typeof current === 'object' && !Array.isArray(current) && own(current, segment) ? current[segment] : undefined;\n if (current === undefined) return undefined;\n }\n return current;\n};\nconst write = (value: JsonValue, path: RecordEditorPath, replacement: JsonValue): JsonValue => {\n if (!path.length) return replacement;\n const [segment, ...rest] = path;\n if (typeof segment !== 'string') {\n const items = recordEditorArrayItems(value, segment!.idKey);\n const index = items.findIndex((item) => item[segment!.idKey] === segment!.itemId);\n if (index < 0 || rest[0] === segment!.idKey) throw new TypeError('Editor item is missing or its stable ID is being changed.');\n const result = items.map((item, i) => i === index ? write(item, rest, replacement) : item);\n recordEditorArrayItems(result, segment!.idKey);\n if ((result[index] as JsonObject)[segment!.idKey] !== segment!.itemId) throw new TypeError('Editor stable ID cannot change.');\n return result;\n }\n if (!value || typeof value !== 'object' || Array.isArray(value)) throw new TypeError('Editor path requires an object.');\n return { ...value, [segment]: write(own(value, segment) ? value[segment]! : {}, rest, replacement) };\n};\nexport const applyRecordEditorDraft = (draft: RecordEditorDraft, input: RecordEditorDraftOperation): RecordEditorDraft => {\n const operation = RecordEditorDraftOperationSchema.parse(input);\n if (operation.kind === 'reset') return createRecordEditorDraft(operation.revision, operation.value);\n const key = recordEditorPathKey(operation.path);\n const touched = draft.touched.some((path) => recordEditorPathKey(path) === key) ? draft.touched : [...draft.touched, operation.path];\n if (touched.length > 4096) throw new RangeError('Editor touched path budget exceeded.');\n if (operation.kind === 'touch') return { ...draft, touched };\n let replacement: JsonValue;\n if (operation.kind === 'set') replacement = operation.value;\n else {\n const items = [...recordEditorArrayItems(readRecordEditorPath(draft.value, operation.path), operation.idKey)];\n if (operation.kind === 'insert') {\n recordEditorArrayItems([...items, operation.value], operation.idKey);\n const before = operation.beforeId === undefined ? items.length : items.findIndex((item) => item[operation.idKey] === operation.beforeId);\n if (before < 0) throw new TypeError('Editor insertion target is missing.');\n items.splice(before, 0, operation.value);\n } else {\n const index = items.findIndex((item) => item[operation.idKey] === operation.itemId);\n if (index < 0) throw new TypeError('Editor item is missing.');\n if (operation.kind === 'move' && operation.beforeId === operation.itemId) return { ...draft, touched };\n const [item] = items.splice(index, 1);\n if (operation.kind === 'move') {\n const before = operation.beforeId === undefined ? items.length : items.findIndex((entry) => entry[operation.idKey] === operation.beforeId);\n if (before < 0) throw new TypeError('Editor move target is missing.');\n items.splice(before, 0, item!);\n }\n }\n replacement = items;\n }\n const value = write(draft.value, operation.path, replacement);\n if (!value || typeof value !== 'object' || Array.isArray(value)) throw new TypeError('Editor root requires an object.');\n assertValue(value);\n return { ...draft, value, touched, errors: [] };\n};\n\n\n/** Deliberately select only the non-sensitive draft envelope, excluding secretChanges. */\nexport const captureRecordEditorSubmission = (payload: unknown): RecordEditorSubmissionSnapshot | undefined => {\n if (!payload || typeof payload !== 'object' || Array.isArray(payload)) return undefined;\n const input = payload as Record<string, unknown>;\n const parsed = RecordEditorSubmissionSnapshotSchema.safeParse({ revision: input.draftRevision, value: input.values });\n if (!parsed.success) return undefined;\n try {\n const draft = createRecordEditorDraft(parsed.data.revision, parsed.data.value);\n return { revision: draft.revision, value: draft.value };\n } catch { return undefined; }\n};\n\nexport const projectRecordEditorValidation = (details: unknown, submission: RecordEditorSubmissionSnapshot | undefined) => {\n if (!submission) return undefined;\n const parsed = RecordEditorValidationDetailsSchema.safeParse(details);\n return parsed.success ? { revision: submission.revision, value: submission.value, errors: parsed.data.errors } : undefined;\n};\n","import Ajv2020 from 'ajv/dist/2020';\nimport { JsonObjectSchema, type JsonObject } from '../contracts/common';\n\n/** Compile the authoritative target input schema once; never fetch external schemas. */\nexport const compileTargetRenderModelValidator = (schema: JsonObject, documents: readonly JsonObject[] = []): ((model: unknown) => JsonObject) => {\n const ajv = new Ajv2020({ strict: false, allErrors: false, coerceTypes: false, useDefaults: false, removeAdditional: false });\n const registered = new Set<string>();\n for (const document of documents) {\n if (document !== schema && typeof document.$id === 'string' && document.$id !== schema.$id && !registered.has(document.$id)) {\n ajv.addSchema(document);\n registered.add(document.$id);\n }\n }\n const validate = ajv.compile(schema);\n return (input) => {\n const model = JsonObjectSchema.parse(input);\n if (!validate(model)) throw Object.assign(new TypeError('Target render model does not match its declared schema.'), { code: 'DECLARATIVE_TARGET_RENDER_MODEL_INVALID' });\n return model;\n };\n};\n","import { z } from 'zod';\nimport { IsoDateTimeSchema, JsonObjectSchema } from './common';\nimport { DECLARATIVE_CONTROL_API_PREFIX } from './declarative-control-http';\n\n/** Draft: no shared exports until server/client fixed-route support is integrated. */\nexport const PAGE_STREAM_MAX_FRAME_BYTES = 256 * 1024;\nexport const PAGE_STREAM_MAX_BUFFER_BYTES = 2 * 1024 * 1024;\nexport const PAGE_STREAM_MAX_BUFFER_EVENTS = 2048;\nexport const PAGE_STREAM_MAX_CURSOR_LENGTH = 2048;\nexport const PAGE_STREAM_MAX_INPUT_BYTES = 8192;\nexport const PAGE_STREAM_MAX_EVENT_ITEMS = 256;\nconst StreamIdSchema = z.string().min(1).max(256).regex(/^[^\\u0000-\\u001f\\u007f]+$/);\nconst CursorSchema = z.string().min(1).max(PAGE_STREAM_MAX_CURSOR_LENGTH).regex(/^[^\\u0000-\\u001f\\u007f]+$/);\nconst SequenceSchema = z.number().int().min(1).max(Number.MAX_SAFE_INTEGER);\n\n/** Opaque handle, never authorization. Server binds principal/team/release/page/binding/scope\n * and reauthorizes each connect/control. Neither URLs nor caller-authored scope are accepted. */\nexport const PageStreamDescriptorSchema = z.object({\n contract: z.literal('PageStreamDescriptor'), schemaVersion: z.literal(1),\n streamId: StreamIdSchema, expiresAt: IsoDateTimeSchema,\n channel: z.enum(['terminal', 'events']), cursor: CursorSchema.optional(),\n}).strict();\nexport const PageStreamConnectSchema = z.object({ cursor: CursorSchema.optional() }).strict();\nconst base = {\n contract: z.literal('PageStreamEvent'), schemaVersion: z.literal(1),\n streamId: StreamIdSchema, sequence: SequenceSchema, cursor: CursorSchema,\n};\n/** First accepted frame must be snapshot. Exact duplicates compare cursor+payload;\n * conflicting duplicates/gaps reconnect using only last verified cursor. Transport rejects\n * oversized SSE frames before parsing and bounds retained bytes/events to constants above. */\nexport const PageStreamEventSchema = z.discriminatedUnion('type', [\n z.object({ ...base, type: z.literal('snapshot'), payload: z.object({ model: JsonObjectSchema }).strict() }).strict(),\n z.object({ ...base, type: z.literal('delta'), payload: z.object({ events: z.array(JsonObjectSchema).max(PAGE_STREAM_MAX_EVENT_ITEMS) }).strict() }).strict(),\n z.object({ ...base, type: z.literal('end'), payload: z.object({}).strict() }).strict(),\n z.object({ ...base, type: z.literal('error'), payload: z.object({ code: z.string().min(1).max(128), retryable: z.boolean() }).strict() }).strict(),\n]).superRefine((value, context) => {\n if (new TextEncoder().encode(JSON.stringify(value)).byteLength > PAGE_STREAM_MAX_FRAME_BYTES)\n context.addIssue({ code: 'custom', message: 'Page stream frame exceeds the UTF-8 byte limit.' });\n});\n/** Reuse requestId on retries. Server deduplicates before PTY mutation; credentials never\n * travel in payload. stream.disconnect closes this descriptor lease, not the backing workload. */\nexport const PageStreamControlSchema = z.discriminatedUnion('port', [\n z.object({ requestId: z.string().uuid(), port: z.literal('terminal.input'), payload: z.object({ data: z.string().min(1).max(PAGE_STREAM_MAX_INPUT_BYTES) }).strict() }).strict(),\n z.object({ requestId: z.string().uuid(), port: z.literal('terminal.resize'), payload: z.object({ columns: z.number().int().min(1).max(1000), rows: z.number().int().min(1).max(1000) }).strict() }).strict(),\n z.object({ requestId: z.string().uuid(), port: z.literal('stream.disconnect'), payload: z.object({}).strict() }).strict(),\n]).superRefine((value, context) => {\n if (value.port === 'terminal.input' && new TextEncoder().encode(value.payload.data).byteLength > PAGE_STREAM_MAX_INPUT_BYTES)\n context.addIssue({ code: 'custom', path: ['payload', 'data'], message: 'Terminal input exceeds the UTF-8 byte limit.' });\n});\nconst route = (releaseSlotId: string, bindingId: string, streamId: string) => {\n StreamIdSchema.parse(streamId);\n if (streamId === '.' || streamId === '..') throw new TypeError('Invalid stream route identifier');\n for (const segment of [releaseSlotId, bindingId]) if (!segment || segment.length > 256 || /[\\u0000-\\u001f\\u007f]/.test(segment) || segment === '.' || segment === '..') throw new TypeError('Invalid stream route identifier');\n return `${DECLARATIVE_CONTROL_API_PREFIX}/runtime/pages/${encodeURIComponent(releaseSlotId)}/bindings/${encodeURIComponent(bindingId)}/streams/${encodeURIComponent(streamId)}`;\n};\nexport const pageStreamRoutes = {\n events: (releaseSlotId: string, bindingId: string, streamId: string) => `${route(releaseSlotId, bindingId, streamId)}/events`,\n terminal: (releaseSlotId: string, bindingId: string, streamId: string) => `${route(releaseSlotId, bindingId, streamId)}/terminal`,\n control: (releaseSlotId: string, bindingId: string, streamId: string) => `${route(releaseSlotId, bindingId, streamId)}/control`,\n} as const;\nexport const PageStreamControlResultSchema = z.object({ requestId: z.string().uuid(), accepted: z.literal(true) }).strict();\nexport type PageStreamControlResult = z.infer<typeof PageStreamControlResultSchema>;\nexport type PageStreamDescriptor = z.infer<typeof PageStreamDescriptorSchema>;\nexport type PageStreamEvent = z.infer<typeof PageStreamEventSchema>;\nexport type PageStreamControl = z.infer<typeof PageStreamControlSchema>;\n","import { PageStreamEventSchema, PageStreamDescriptorSchema, PAGE_STREAM_MAX_BUFFER_BYTES, PAGE_STREAM_MAX_BUFFER_EVENTS, PAGE_STREAM_MAX_FRAME_BYTES } from '../contracts/page-stream';\nimport type { JsonObject } from '../contracts/common';\nimport { canonicalContentHash } from './declarative-control-compiler';\nexport type PageStreamReducerErrorCode = 'PAGE_STREAM_INVALID_FRAME' | 'PAGE_STREAM_ID_MISMATCH' | 'PAGE_STREAM_SNAPSHOT_REQUIRED' | 'PAGE_STREAM_SEQUENCE_CONFLICT' | 'PAGE_STREAM_SEQUENCE_GAP' | 'PAGE_STREAM_TERMINATED' | 'PAGE_STREAM_CAPACITY_EXCEEDED';\nexport class PageStreamReducerError extends Error { constructor(readonly code: PageStreamReducerErrorCode) { super(code); this.name = 'PageStreamReducerError'; } }\nexport interface PageStreamState {\n readonly streamId: string;\n readonly status: 'awaiting-snapshot' | 'open' | 'ended' | 'error';\n readonly model: JsonObject | undefined;\n readonly events: readonly JsonObject[];\n readonly sequence: number;\n readonly cursor: string | undefined;\n readonly error: { code: string; retryable: boolean } | undefined;\n readonly seen: Readonly<Record<string, string>>;\n readonly retainedBytes: number;\n}\nexport function createPageStreamState(streamId: string): PageStreamState {\n if (!PageStreamDescriptorSchema.shape.streamId.safeParse(streamId).success) throw new PageStreamReducerError('PAGE_STREAM_ID_MISMATCH');\n return { streamId, status: 'awaiting-snapshot', model: undefined, events: [], sequence: 0, cursor: undefined, error: undefined, seen: {}, retainedBytes: 0 };\n}\nconst MAX_SEEN_FRAMES = 2048;\nconst bytes = (value: unknown) => new TextEncoder().encode(JSON.stringify(value)).byteLength;\n/** Verified snapshots replace presentation state; deltas retain every event or reject atomically. */\nexport function applyPageStreamEvent(state: PageStreamState, input: unknown): PageStreamState {\n let frame: ReturnType<typeof PageStreamEventSchema.parse>;\n try { if (bytes(input) > PAGE_STREAM_MAX_FRAME_BYTES) throw new Error(); frame = PageStreamEventSchema.parse(input); }\n catch { throw new PageStreamReducerError('PAGE_STREAM_INVALID_FRAME'); }\n if (frame.streamId !== state.streamId) throw new PageStreamReducerError('PAGE_STREAM_ID_MISMATCH');\n const fingerprint = canonicalContentHash(frame);\n const seen = state.seen[String(frame.sequence)];\n if (seen) { if (seen === fingerprint) return state; throw new PageStreamReducerError('PAGE_STREAM_SEQUENCE_CONFLICT'); }\n if (state.status === 'ended' || state.status === 'error') throw new PageStreamReducerError('PAGE_STREAM_TERMINATED');\n if (state.status === 'awaiting-snapshot') { if (frame.type !== 'snapshot') throw new PageStreamReducerError('PAGE_STREAM_SNAPSHOT_REQUIRED'); }\n else if (frame.sequence !== state.sequence + 1) throw new PageStreamReducerError(frame.sequence <= state.sequence ? 'PAGE_STREAM_SEQUENCE_CONFLICT' : 'PAGE_STREAM_SEQUENCE_GAP');\n const model = frame.type === 'snapshot' ? frame.payload.model : state.model;\n const events = frame.type === 'snapshot' ? [] : frame.type === 'delta' ? [...state.events, ...frame.payload.events] : state.events;\n // A snapshot replaces the model and replay baseline. Deltas retain a bounded\n // fingerprint window; replay older than that window still fails sequence checks.\n const nextSeen = frame.type === 'snapshot' ? { [String(frame.sequence)]: fingerprint } : {\n ...Object.fromEntries(Object.entries(state.seen).filter(([sequence]) => Number(sequence) > frame.sequence - MAX_SEEN_FRAMES)),\n [String(frame.sequence)]: fingerprint,\n };\n const retainedBytes = bytes({ model, events, seen: nextSeen });\n if (events.length > PAGE_STREAM_MAX_BUFFER_EVENTS || retainedBytes > PAGE_STREAM_MAX_BUFFER_BYTES) throw new PageStreamReducerError('PAGE_STREAM_CAPACITY_EXCEEDED');\n return { streamId: state.streamId, model, events, sequence: frame.sequence, cursor: frame.cursor, seen: nextSeen, retainedBytes,\n status: frame.type === 'end' ? 'ended' : frame.type === 'error' ? 'error' : 'open', error: frame.type === 'error' ? frame.payload : undefined };\n}\n","import Ajv2020 from \"ajv/dist/2020\";\nimport type {\n ActionProgramDefinition,\n RevisionRef,\n} from \"../contracts/declarative-control\";\nimport type { SchemaDefinition } from \"../contracts/semantic\";\nimport {\n canonicalContentHash,\n sameRevisionRef,\n} from \"./declarative-control-compiler\";\n\nexport interface ProgramCapability {\n input: unknown;\n result: unknown;\n}\nexport type ProgramCapabilityMap = Record<string, ProgramCapability>;\nexport interface ActionProgramContext<\n Q extends ProgramCapabilityMap,\n C extends ProgramCapabilityMap,\n F extends Record<string, unknown> = Record<string, unknown>,\n S extends Record<string, unknown> = Record<string, unknown>,\n R extends string = string,\n> {\n query<K extends keyof Q & string>(\n id: K,\n input: Q[K][\"input\"],\n ): Promise<Q[K][\"result\"]>;\n command<K extends keyof C & string>(\n id: K,\n input: C[K][\"input\"],\n options: { stepKey: string },\n ): Promise<C[K][\"result\"]>;\n ui: {\n form<K extends keyof F & string>(\n schemaId: K,\n value: F[K],\n ): Promise<{ status: \"submitted\"; value: F[K] } | { status: \"cancelled\" }>;\n toast(message: string, tone: \"success\" | \"error\" | \"info\"): Promise<void>;\n refresh(alias: R): Promise<void>;\n download(handle: string): Promise<{ status: \"started\" }>;\n };\n state: {\n get<K extends keyof S & string>(alias: K): Promise<S[K]>;\n set<K extends keyof S & string>(alias: K, value: S[K]): Promise<void>;\n };\n}\nexport interface ProgramSchemaRegistration {\n definitionRevisionRef: RevisionRef;\n definition: SchemaDefinition;\n}\n\n/** Strict structural projection. Validation-only keywords remain enforced by runtime AJV. */\nexport function programSchemaType(\n schema: unknown,\n path = \"$\",\n depth = 0,\n): string {\n if (\n depth > 32 ||\n !schema ||\n typeof schema !== \"object\" ||\n Array.isArray(schema)\n )\n throw new Error(`Unsupported schema at ${path}`);\n const value = schema as Record<string, unknown>;\n const allowed = new Set([\n \"$schema\",\n \"$id\",\n \"title\",\n \"description\",\n \"type\",\n \"properties\",\n \"required\",\n \"additionalProperties\",\n \"items\",\n \"enum\",\n \"const\",\n \"anyOf\",\n \"oneOf\",\n \"minLength\",\n \"maxLength\",\n \"pattern\",\n \"format\",\n \"minimum\",\n \"maximum\",\n \"exclusiveMinimum\",\n \"exclusiveMaximum\",\n \"multipleOf\",\n \"minItems\",\n \"maxItems\",\n \"uniqueItems\",\n \"minProperties\",\n \"maxProperties\",\n \"default\",\n \"examples\",\n \"readOnly\",\n \"writeOnly\",\n ]);\n for (const key of Object.keys(value))\n if (!allowed.has(key))\n throw new Error(`Unsupported schema keyword ${path}.${key}`);\n const child = (schema: unknown, key: string) =>\n programSchemaType(schema, `${path}.${key}`, depth + 1);\n const literal = (input: unknown) => {\n if (\n input !== null &&\n ![\"string\", \"number\", \"boolean\"].includes(typeof input)\n )\n throw new Error(`Unsupported literal at ${path}`);\n return JSON.stringify(input);\n };\n if (\"const\" in value) return literal(value.const);\n if (Array.isArray(value.enum) && value.enum.length)\n return value.enum.map(literal).join(\" | \");\n if (Array.isArray(value.anyOf) || Array.isArray(value.oneOf))\n return (\n ((value.anyOf ?? value.oneOf) as unknown[])\n .map((schema, i) => `(${child(schema, String(i))})`)\n .join(\" | \") || \"never\"\n );\n if (Array.isArray(value.type))\n return value.type\n .map((type) => child({ ...value, type }, String(type)))\n .join(\" | \");\n switch (value.type) {\n case \"null\":\n return \"null\";\n case \"boolean\":\n return \"boolean\";\n case \"string\":\n return \"string\";\n case \"number\":\n case \"integer\":\n return \"number\";\n case \"array\":\n return `Array<${child(value.items, \"items\")}>`;\n case \"object\": {\n const properties = value.properties ?? {};\n if (\n typeof properties !== \"object\" ||\n !properties ||\n Array.isArray(properties)\n )\n throw new Error(`Invalid properties at ${path}`);\n const required = value.required ?? [];\n if (\n !Array.isArray(required) ||\n required.some(\n (key) =>\n typeof key !== \"string\" ||\n !Object.prototype.hasOwnProperty.call(properties, key),\n )\n )\n throw new Error(`Unsupported required keys at ${path}`);\n const fields = Object.entries(properties).map(\n ([key, schema]) =>\n `${JSON.stringify(key)}${required.includes(key) ? \"\" : \"?\"}: ${child(schema, key)};`,\n );\n if (value.additionalProperties !== false) {\n // A schema-valued index signature could conflict with named fields; reject it explicitly.\n if (\n value.additionalProperties !== undefined &&\n value.additionalProperties !== true\n )\n throw new Error(`Unsupported additionalProperties at ${path}`);\n fields.push(\"[key: string]: unknown;\");\n }\n return `{ ${fields.join(\" \")} }`;\n }\n default:\n throw new Error(`Schema needs a supported explicit type at ${path}`);\n }\n}\n\nexport function generateActionProgramTypes(\n definition: ActionProgramDefinition,\n schemas: readonly ProgramSchemaRegistration[],\n): string {\n const resolve = (ref: RevisionRef) => {\n const matches = schemas.filter((entry) =>\n sameRevisionRef(entry.definitionRevisionRef, ref),\n );\n if (\n matches.length !== 1 ||\n canonicalContentHash(matches[0]!.definition) !== ref.contentHash\n )\n throw new Error(`Missing exact Schema ${ref.id}`);\n return programSchemaType(matches[0]!.definition.document);\n };\n const formRefs = new Map(\n [\n definition.inputSchemaRevisionRef,\n definition.resultSchemaRevisionRef,\n ...definition.dependencies.flatMap((dep) => [\n dep.inputSchemaRevisionRef,\n dep.resultSchemaRevisionRef,\n ]),\n ].map((ref) => [ref.id, ref]),\n );\n for (const ref of [\n definition.inputSchemaRevisionRef,\n definition.resultSchemaRevisionRef,\n ...definition.dependencies.flatMap((dep) => [\n dep.inputSchemaRevisionRef,\n dep.resultSchemaRevisionRef,\n ]),\n ]) {\n if (!sameRevisionRef(formRefs.get(ref.id)!, ref))\n throw new Error(\"Ambiguous form Schema revision \" + ref.id);\n }\n const forms =\n \"{\" +\n [...formRefs]\n .map(([id, ref]) => JSON.stringify(id) + \": \" + resolve(ref) + \";\")\n .join(\" \") +\n \"}\";\n const states =\n \"{\" +\n definition.stateAliases\n .map(\n (entry) =>\n JSON.stringify(entry.alias) +\n \": \" +\n resolve(entry.schemaRevisionRef) +\n \";\",\n )\n .join(\" \") +\n \"}\";\n const refresh =\n definition.refreshAliases\n .map((alias) => JSON.stringify(alias))\n .join(\" | \") || \"never\";\n const capabilityMap = (kind: \"query\" | \"command\") =>\n `{\\n${definition.dependencies\n .filter((dep) => dep.kind === kind)\n .map(\n (dep) =>\n `${JSON.stringify(dep.revisionRef.id)}: {input: ${\"Pick<\" + resolve(dep.inputSchemaRevisionRef) + \", \" + (dep.dynamicInputKeys.map((key) => JSON.stringify(key)).join(\" | \") || \"never\") + \">\"}; result: ${resolve(dep.resultSchemaRevisionRef)}};`,\n )\n .join(\"\\n\")}\\n}`;\n return `// Generated from exact program/schema revisions. Do not edit.\\nimport type { ActionProgramContext } from \"@inf-monkeys-tech/monkeys\";\\nexport type Input = ${resolve(definition.inputSchemaRevisionRef)};\\nexport type Result = ${resolve(definition.resultSchemaRevisionRef)};\\nexport type Queries = ${capabilityMap(\"query\")};\\nexport type Commands = ${capabilityMap(\"command\")};\\nexport type BaseContext = ActionProgramContext<Queries, Commands, ${forms}, ${states}, ${refresh}>;\\nexport type Context = Omit<BaseContext, \"ui\" | \"state\"> & {ui: Pick<BaseContext[\"ui\"], ${\n definition.effects\n .filter((effect) => !effect.startsWith(\"state.\"))\n .map((effect) => JSON.stringify(effect))\n .join(\" | \") || \"never\"\n }>; state: Pick<BaseContext[\"state\"], ${\n definition.effects\n .filter((effect) => effect.startsWith(\"state.\"))\n .map((effect) => JSON.stringify(effect.slice(6)))\n .join(\" | \") || \"never\"\n }>};\\nexport type Program = (context: Context, input: Input) => Promise<Result>;\\n`;\n}\n\n/** Validates JSON values without imposing a component render-model object shape. */\nexport function compileProgramValueValidator(schema: Record<string, unknown>, documents: readonly Record<string, unknown>[] = []) {\n const ajv = new Ajv2020({ strict: false, allErrors: false, coerceTypes: false, removeAdditional: false, useDefaults: false });\n const ids = new Set<string>();\n for (const document of documents) if (typeof document.$id === \"string\" && document.$id !== schema.$id && !ids.has(document.$id)) { ajv.addSchema(document); ids.add(document.$id); }\n return ajv.compile(schema);\n}\n"],"mappings":"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","names":["UsedValueState","schema","Type","schema","schema","DataType","schema","schema","schema","_a","schema","schema","schema","ref","schema","ref","schema","ref","base","Ajv","schema","ref","schema","schema","schema","schema","schema","schema","schema","schema","schema","schema","schema","schema","schema","schema","schema","schema","schema","schema","schema","DiscrError","schema","ref","Ajv","schema","ref","schema","schema","require_applicator","require_unevaluated","require_core","require_validation","ajv","Ajv2020","z","z","z","bytes","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","schema","file","valuePath","ref","state","member","index","z","definition","z","z","z","bytes","schema","z","scopedIdentityKey","schema","ref","input","stableSerialize","deepFreeze","SHA256_INITIAL","SHA256_ROUND","rotateRight","sha256Hex","uniqueIndex","disabled","presentation","activationId","identity","signature","requiredPermission","_behavior","target","unique","referenceVersion","evaluateAccess","z","z","Ajv","base","result","value","z","z","schema","node","contract","localizedText","z","z","z","z","import_ajv","z","z","schema","ajv","Ajv","values","bytes","result","base","z","member","z","write","item","schema","ajv","Ajv2020","z","z","z","import__","schema","ref","ajv","Ajv2020"]}
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}