@almadar/core 10.129.0 → 11.0.1

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 (135) hide show
  1. package/dist/behavior-package.d.ts +49 -11
  2. package/dist/behavior-package.js +1 -1
  3. package/dist/{orbital-CkFdDS9f.d.ts → builders-BdgbY7Th.d.ts} +5828 -6917
  4. package/dist/builders.d.ts +6 -6
  5. package/dist/builders.js +7 -6
  6. package/dist/{bus-CcbB__oo.d.ts → bus-C0hFDNFR.d.ts} +262 -354
  7. package/dist/chunk-347APWFM.js +286 -0
  8. package/dist/chunk-347APWFM.js.map +1 -0
  9. package/dist/chunk-5WQ3U7NJ.js +2363 -0
  10. package/dist/chunk-5WQ3U7NJ.js.map +1 -0
  11. package/dist/chunk-5YTPYMPZ.js +99 -0
  12. package/dist/chunk-5YTPYMPZ.js.map +1 -0
  13. package/dist/chunk-66Q5VX2F.js +3810 -0
  14. package/dist/chunk-66Q5VX2F.js.map +1 -0
  15. package/dist/chunk-7GHJU5WI.js +39 -0
  16. package/dist/chunk-7GHJU5WI.js.map +1 -0
  17. package/dist/chunk-B4MNHGBP.js +8 -0
  18. package/dist/chunk-B4MNHGBP.js.map +1 -0
  19. package/dist/chunk-E4T2MQAV.js +24 -0
  20. package/dist/chunk-E4T2MQAV.js.map +1 -0
  21. package/dist/chunk-ENOCKYGA.js +412 -0
  22. package/dist/chunk-ENOCKYGA.js.map +1 -0
  23. package/dist/chunk-FGT5OS2Y.js +918 -0
  24. package/dist/chunk-FGT5OS2Y.js.map +1 -0
  25. package/dist/chunk-GF7KCLNR.js +3284 -0
  26. package/dist/chunk-GF7KCLNR.js.map +1 -0
  27. package/dist/chunk-PNGFWLHD.js +1567 -0
  28. package/dist/chunk-PNGFWLHD.js.map +1 -0
  29. package/dist/{chunk-X4SC7FGF.js → chunk-RGACZEYC.js} +99 -96
  30. package/dist/chunk-RGACZEYC.js.map +1 -0
  31. package/dist/{chunk-RYPVOI6H.js → chunk-SNZYN7UA.js} +2541 -433
  32. package/dist/{chunk-RYPVOI6H.js.map → chunk-SNZYN7UA.js.map} +1 -1
  33. package/dist/{chunk-KDMV222Q.js → chunk-TDNQT3M3.js} +304 -373
  34. package/dist/chunk-TDNQT3M3.js.map +1 -0
  35. package/dist/chunk-VG7BRFUD.js +152 -0
  36. package/dist/chunk-VG7BRFUD.js.map +1 -0
  37. package/dist/chunk-Z7BI7DE7.js +1293 -0
  38. package/dist/chunk-Z7BI7DE7.js.map +1 -0
  39. package/dist/{domain-Dz3jP-UM.d.ts → domain-Cpmja5ak.d.ts} +55 -55
  40. package/dist/{effect-CiEVLsZz.d.ts → effect-DZaXwSAz.d.ts} +283 -453
  41. package/dist/{effect-result-Bebwu9yT.d.ts → effect-result-1HpXgeBc.d.ts} +656 -851
  42. package/dist/{expression-D0Fs0riG.d.ts → expression-DirYKz-f.d.ts} +5 -13
  43. package/dist/factory/index.d.ts +7 -144
  44. package/dist/factory/index.js +8 -8
  45. package/dist/factory-runtime/index.d.ts +7 -6
  46. package/dist/factory-runtime/index.js +527 -8
  47. package/dist/factory-runtime/index.js.map +1 -1
  48. package/dist/fixtures.d.ts +9 -11
  49. package/dist/fixtures.js +12 -8
  50. package/dist/fixtures.js.map +1 -1
  51. package/dist/i18n/index.d.ts +15 -19
  52. package/dist/i18n/index.js +2 -1
  53. package/dist/{index-BC-Jycqj.d.ts → index-D7SxwNdv.d.ts} +34 -734
  54. package/dist/index.d.ts +92 -247
  55. package/dist/index.js +322 -986
  56. package/dist/index.js.map +1 -1
  57. package/dist/kernel-wire.d.ts +3 -3
  58. package/dist/kernel-wire.js +3 -79
  59. package/dist/kernel-wire.js.map +1 -1
  60. package/dist/language/constructs.json +22 -2
  61. package/dist/language/program-types.json +203 -22
  62. package/dist/language/protocols.json +46 -0
  63. package/dist/language/ui-vocabulary.json +1697 -0
  64. package/dist/language/validation-codes.json +1222 -1212
  65. package/dist/language/vocabulary.json +44 -8
  66. package/dist/language-data.d.ts +7 -4
  67. package/dist/language-data.js +20 -14
  68. package/dist/language-data.js.map +1 -1
  69. package/dist/patterns/component-mapping.json +11 -1
  70. package/dist/patterns/definitions.d.ts +2 -2
  71. package/dist/patterns/definitions.js +1 -1
  72. package/dist/patterns/event-contracts.json +1 -15
  73. package/dist/patterns/game-font-families.json +13 -0
  74. package/dist/patterns/index.d.ts +24 -120
  75. package/dist/patterns/index.js +3 -3
  76. package/dist/patterns/pattern-tile-geometry.json +1065 -0
  77. package/dist/patterns/patterns-registry.json +2539 -431
  78. package/dist/patterns/registry.json +2539 -431
  79. package/dist/trait-sRjIivFq.d.ts +3519 -0
  80. package/dist/types/index.d.ts +9 -10
  81. package/dist/types/index.js +11 -5
  82. package/dist/{types-DGwrltUF.d.ts → types-C6_yPMpn.d.ts} +3 -3
  83. package/fixtures/events-wire/client-effects-by-trait/response.json +0 -18
  84. package/fixtures/events-wire/client-effects-provenance/response.json +0 -18
  85. package/fixtures/events-wire/effect-results-every-kind/response.json +2 -27
  86. package/fixtures/events-wire/navigate-1/response.json +8 -5
  87. package/fixtures/events-wire/navigate-2/response.json +11 -8
  88. package/fixtures/events-wire/navigate-3/response.json +14 -11
  89. package/fixtures/events-wire/navigate-back/response.json +7 -4
  90. package/fixtures/events-wire/render-ui-3/response.json +12 -9
  91. package/fixtures/events-wire/render-ui-clear/response.json +0 -7
  92. package/fixtures/events-wire/sse-stream/response.json +0 -20
  93. package/fixtures/events-wire/sse-stream/stream.json +0 -20
  94. package/fixtures/events-wire/stateless-traits/response.json +14 -5
  95. package/fixtures/kernel-wire/golden/basic-entity.json +1687 -0
  96. package/fixtures/kernel-wire/golden/entity-rerender.json +743 -0
  97. package/fixtures/kernel-wire/golden/rollback.json +793 -0
  98. package/fixtures/kernel-wire/golden/tick-counter.json +1538 -0
  99. package/fixtures/kernel-wire/golden/two-orbital-chore.json +847 -0
  100. package/fixtures/kernel-wire/golden/two-orbital-task.json +457 -0
  101. package/fixtures/kernel-wire/played-step.json +136 -0
  102. package/fixtures/kernel-wire/scripts/basic-entity.json +28 -0
  103. package/fixtures/kernel-wire/scripts/entity-rerender.json +13 -0
  104. package/fixtures/kernel-wire/scripts/rollback.json +53 -0
  105. package/fixtures/kernel-wire/scripts/tick-counter.json +26 -0
  106. package/fixtures/kernel-wire/scripts/two-orbital-chore.json +9 -0
  107. package/fixtures/kernel-wire/scripts/two-orbital-task.json +9 -0
  108. package/package.json +28 -19
  109. package/dist/builders-DmZE5By0.d.ts +0 -2663
  110. package/dist/chunk-45I2O4SJ.js +0 -4646
  111. package/dist/chunk-45I2O4SJ.js.map +0 -1
  112. package/dist/chunk-6LR43Z5E.js +0 -3061
  113. package/dist/chunk-6LR43Z5E.js.map +0 -1
  114. package/dist/chunk-GIUA3NUJ.js +0 -809
  115. package/dist/chunk-GIUA3NUJ.js.map +0 -1
  116. package/dist/chunk-GTY53NS5.js +0 -1908
  117. package/dist/chunk-GTY53NS5.js.map +0 -1
  118. package/dist/chunk-JOHDVS6J.js +0 -1614
  119. package/dist/chunk-JOHDVS6J.js.map +0 -1
  120. package/dist/chunk-KDMV222Q.js.map +0 -1
  121. package/dist/chunk-QRHJUS3D.js +0 -23
  122. package/dist/chunk-QRHJUS3D.js.map +0 -1
  123. package/dist/chunk-QUOTJULD.js +0 -4009
  124. package/dist/chunk-QUOTJULD.js.map +0 -1
  125. package/dist/chunk-V5VNGRVU.js +0 -66
  126. package/dist/chunk-V5VNGRVU.js.map +0 -1
  127. package/dist/chunk-X4SC7FGF.js.map +0 -1
  128. package/dist/entityAccess-BPSz1i2n.d.ts +0 -80
  129. package/dist/mock/index.d.ts +0 -153
  130. package/dist/mock/index.js +0 -190
  131. package/dist/mock/index.js.map +0 -1
  132. package/dist/schema-T5RT5s6H.d.ts +0 -282
  133. package/dist/state-machine/index.d.ts +0 -359
  134. package/dist/state-machine/index.js +0 -3
  135. package/dist/state-machine/index.js.map +0 -1
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/render-ui-edit.ts","../src/agent-trace-view.ts","../src/xml.ts","../src/codec.ts","../src/resolver.ts","../src/lib/get-nested-value.ts","../src/lib/theme-tone-colors.ts","../src/dependency-graph.ts","../src/kernel-evaluator.ts","../src/kernel-row-access.ts","../src/diff.ts","../src/summarize.ts","../src/access/externalInputs.ts","../src/access/inbound.ts","../src/route-match.ts","../src/shared-entity/merge.ts","../src/shared-entity/find-entity.ts"],"names":["ref","inferTsType","hex"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * Render-UI structural editing — the single canonical pattern-tree navigator,\n * mutators, and overlay application. Promoted out of apps/builder so the studio\n * client, rabit's contextual-edit path, and the overlay replay share ONE\n * implementation (no shadow copies).\n *\n * Operates on the SERIALIZABLE structural pattern node — the resolved `.orb`\n * render-ui shape (`{ type, children, ...props }`, props are strings/numbers/\n * booleans/bindings/arrays). It never holds function-typed props: those exist\n * only in the React-component `AnyPatternConfig`, never in resolved IR. A node\n * to insert/swap is built as a structural literal and validated against the\n * pattern registry by the caller — `AnyPatternConfig` is never assigned in.\n */\n\nimport type { OrbitalDefinition, Trait, Effect } from './types/index.js';\nimport { renderUiEntriesOf } from './patterns/helpers/render-ui-pattern-types.js';\n\n// ----------------------------------------------------------------------------\n// Structural pattern node\n// ----------------------------------------------------------------------------\n\n/** A serializable value inside a render-ui pattern node. No functions. */\nexport type PatternValue =\n | string\n | number\n | boolean\n | Date\n | null\n | undefined\n | PatternNode\n | readonly PatternValue[];\n\n/**\n * One node in a render-ui pattern tree as it appears in resolved `.orb`. A\n * child is a nested node or a `@trait.X` embed (another trait's render).\n */\nexport interface PatternNode {\n type?: string;\n children?: Array<PatternNode | string>;\n [prop: string]: PatternValue | Array<PatternNode | string> | undefined;\n}\n\n// ----------------------------------------------------------------------------\n// EditFocus — a canvas selection resolved to an address in the resolved `.orb`\n// ----------------------------------------------------------------------------\n\nexport type EditFocusLevel =\n | 'node'\n | 'slot'\n | 'field'\n | 'effect'\n | 'trait'\n | 'page'\n | 'orbital';\n\n/** A pointed-at element. Plain data — constructible with or without a DOM. */\nexport interface EditFocus {\n level: EditFocusLevel;\n orbital: string;\n trait?: string;\n transition?: string;\n state?: string;\n slot?: string;\n path?: string;\n patternType?: string;\n entity?: string;\n source?: string;\n label: string;\n}\n\n// ----------------------------------------------------------------------------\n// RenderUiPatch — a structural render-ui edit, replayed after factory expansion\n// ----------------------------------------------------------------------------\n\nexport type RenderUiPatchOp = 'replace' | 'insert' | 'remove' | 'set-prop' | 'rebind';\n\nexport interface RenderUiPatchAddress {\n trait: string;\n transition: string;\n state?: string;\n slot: string;\n /** patternPath, e.g. `root.children.2`. For `insert`, the PARENT path. */\n path: string;\n}\n\nexport interface RenderUiPatch {\n op: RenderUiPatchOp;\n address: RenderUiPatchAddress;\n /** Structural fingerprint of the pre-edit node, used to re-anchor the patch\n * if a later factory rebuild shifts `address.path`. */\n fingerprint?: string;\n /** For `replace` / `insert`: the concrete node to place. */\n node?: PatternNode;\n /** For `insert`: index within the parent's children (default: append). */\n index?: number;\n /** For `set-prop` / `rebind`: the prop key. */\n prop?: string;\n /** For `set-prop`: the new value. For `rebind`: pass the binding via `value`. */\n value?: PatternValue;\n}\n\n// ----------------------------------------------------------------------------\n// Pure node primitives\n// ----------------------------------------------------------------------------\n\n/** The children array of a node: `children`, or `props.children` (the nested form some IR passes emit). */\nfunction childrenOf(node: PatternNode): Array<PatternNode | string> | null {\n if (Array.isArray(node.children)) return node.children;\n const props = node.props;\n if (props && typeof props === 'object' && !Array.isArray(props) && !(props instanceof Date)) {\n const nested = (props as PatternNode).children;\n if (Array.isArray(nested)) return nested;\n }\n return null;\n}\n\n/**\n * Navigate a path as the renderer emits it (`root`, `root.children.0`,\n * `root.children.1.children.0`) to a node. The leading `root` is a label, not\n * a key; a path without it is accepted too.\n */\nexport function navigatePatternPath(root: PatternNode, path: string): PatternNode | null {\n if (!path || path === 'root') return root;\n const parts = (path.startsWith('root.') ? path.slice('root.'.length) : path).split('.');\n let current: PatternNode | Array<PatternNode | string> | null = root;\n for (const part of parts) {\n if (current === null) return null;\n if (Array.isArray(current)) {\n const idx = Number.parseInt(part, 10);\n if (Number.isNaN(idx) || idx < 0 || idx >= current.length) return null;\n const item: PatternNode | string | undefined = current[idx];\n current = item && typeof item === 'object' && !Array.isArray(item) ? item : null;\n } else if (part === 'children') {\n current = childrenOf(current);\n } else {\n const value: PatternValue | PatternNode[] | undefined = current[part];\n current = value && typeof value === 'object' && !Array.isArray(value) && !(value instanceof Date) ? (value as PatternNode) : null;\n }\n }\n return Array.isArray(current) ? null : current;\n}\n\n/** `<parent>.children.<i>` → the parent's path and the index; null for anything else. */\nexport function splitPatternChildPath(path: string): { parentPath: string; index: number } | null {\n const match = /^(.*)\\.children\\.(\\d+)$/.exec(path) ?? /^children\\.(\\d+)$/.exec(path);\n if (!match) return null;\n if (match.length === 2) return { parentPath: 'root', index: Number.parseInt(match[1], 10) };\n return { parentPath: match[1], index: Number.parseInt(match[2], 10) };\n}\n\n/** Set a prop on the node at `path`. Returns false if the path misses. */\nexport function setPropAtPath(\n root: PatternNode,\n path: string,\n prop: string,\n value: PatternValue,\n): boolean {\n const node = navigatePatternPath(root, path);\n if (!node) return false;\n node[prop] = value;\n return true;\n}\n\n/** Replace the node at a child path (`<parent>.children.<i>`) with `node`. */\nexport function replaceChildAtPath(root: PatternNode, path: string, node: PatternNode): boolean {\n const split = splitPatternChildPath(path);\n if (!split) return false;\n const parent = navigatePatternPath(root, split.parentPath);\n const children = parent ? childrenOf(parent) : null;\n if (!children || split.index >= children.length) return false;\n children[split.index] = node;\n return true;\n}\n\n/** Insert `node` into the parent's `children` at `index` (clamped to end). */\nexport function insertChildAtPath(\n root: PatternNode,\n parentPath: string,\n index: number,\n node: PatternNode,\n): boolean {\n const parent = navigatePatternPath(root, parentPath);\n if (!parent) return false;\n const children = childrenOf(parent) ?? [];\n const i = index < 0 || index > children.length ? children.length : index;\n children.splice(i, 0, node);\n if (!childrenOf(parent)) parent.children = children;\n return true;\n}\n\n/** Remove the node at a child path. */\nexport function removeChildAtPath(root: PatternNode, path: string): boolean {\n const split = splitPatternChildPath(path);\n if (!split) return false;\n const parent = navigatePatternPath(root, split.parentPath);\n const children = parent ? childrenOf(parent) : null;\n if (!children || split.index >= children.length) return false;\n children.splice(split.index, 1);\n return true;\n}\n\n/** Replace a node's contents in place (used to swap the render-ui root). */\nfunction replaceNodeInPlace(target: PatternNode, source: PatternNode): void {\n for (const key of Object.keys(target)) {\n delete target[key];\n }\n Object.assign(target, source);\n}\n\n// ----------------------------------------------------------------------------\n// Fingerprint (re-anchor)\n// ----------------------------------------------------------------------------\n\nfunction stableValue(value: PatternValue | PatternNode[] | undefined): string {\n if (value === undefined) return 'u';\n if (value === null) return 'n';\n if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') {\n return JSON.stringify(value);\n }\n if (value instanceof Date) return value.toISOString();\n if (Array.isArray(value)) return `[${value.map(stableValue).join(',')}]`;\n const nodeType = 'type' in value ? value.type : undefined;\n return `{${typeof nodeType === 'string' ? nodeType : ''}}`;\n}\n\n/** Deterministic structural fingerprint of a node (excludes child contents;\n * identifies the base node so a patch can re-anchor after a path shift). */\nexport function fingerprintNode(node: PatternNode): string {\n const props = Object.keys(node)\n .filter((k) => k !== 'children')\n .sort()\n .map((k) => `${k}=${stableValue(node[k])}`)\n .join(',');\n const childCount = Array.isArray(node.children) ? node.children.length : 0;\n return `t:${node.type ?? ''}|${props}|c:${childCount}`;\n}\n\nfunction findByFingerprint(node: PatternNode, path: string, fp: string): string | null {\n if (fingerprintNode(node) === fp) return path;\n if (Array.isArray(node.children)) {\n for (let i = 0; i < node.children.length; i++) {\n const child = node.children[i];\n if (typeof child === 'string') continue;\n const r = findByFingerprint(child, `${path}.children.${i}`, fp);\n if (r) return r;\n }\n }\n return null;\n}\n\n// ----------------------------------------------------------------------------\n// Overlay application\n// ----------------------------------------------------------------------------\n\nexport interface RenderOverlayResult {\n applied: number;\n /** Patches whose target node could not be resolved (path gone + fingerprint\n * unmatched). Surfaced as `patch_stale` — never silently dropped. */\n stale: RenderUiPatch[];\n}\n\n/** A render-ui effect's slot + root pattern node, validated from the canonical\n * `Effect` tuple. The `['render-ui', slot, config]` form carries the structural\n * pattern node at index 2 in resolved `.orb`; we narrow `Effect` by its tag and\n * validate the payload is a concrete node (not a `@binding` string or null). */\n\n/** Narrow a trait reference to an inline `Trait` (the only `TraitRef` member\n * with a `stateMachine`). No cast — `in` narrows the union. */\nfunction asInlineTrait(ref: OrbitalDefinition['traits'][number]): Trait | null {\n if (typeof ref === 'object' && ref !== null && 'stateMachine' in ref) {\n return ref;\n }\n return null;\n}\n\n/** Where a trait's render lives: the transition (by event, optionally its from-state) and the slot. */\nexport interface RenderRootAddress {\n transition: string;\n state?: string;\n slot: string;\n}\n\n/**\n * The render-ui root a trait paints for an address, including renders nested\n * in control forms (`when`/`if`). Prefers the exact transition; an empty\n * transition (a canvas selection with no provenance) takes the first render\n * into that slot.\n */\nexport function renderRootOf(trait: Trait, address: RenderRootAddress): PatternNode | null {\n const wantTransition = address.transition !== '';\n const wantState = address.state !== undefined && address.state !== '';\n let fallback: PatternNode | null = null;\n for (const t of trait.stateMachine?.transitions ?? []) {\n if (wantState && t.from !== address.state) continue;\n for (const entry of renderUiEntriesOf(t.effects ?? [])) {\n if (entry.slot !== address.slot) continue;\n const node = entry.pattern as PatternNode;\n if (wantTransition && t.event === address.transition) return node;\n if (!wantTransition) fallback ??= node;\n }\n }\n return fallback;\n}\n\n/** Find the render-ui root node for a patch address (see `renderRootOf`). */\nfunction findRenderUiRoot(\n orbital: OrbitalDefinition,\n address: RenderUiPatchAddress,\n): PatternNode | null {\n for (const ref of orbital.traits) {\n const trait = asInlineTrait(ref);\n if (trait && trait.name === address.trait) return renderRootOf(trait, address);\n }\n return null;\n}\n\n/** Resolve the effective path for a patch, re-anchoring by fingerprint. */\nfunction resolvePath(root: PatternNode, patch: RenderUiPatch): string | null {\n if (patch.op === 'insert') {\n return navigatePatternPath(root, patch.address.path) ? patch.address.path : null;\n }\n const atPath = navigatePatternPath(root, patch.address.path);\n if (atPath && (patch.fingerprint === undefined || fingerprintNode(atPath) === patch.fingerprint)) {\n return patch.address.path;\n }\n if (patch.fingerprint !== undefined) {\n return findByFingerprint(root, 'root', patch.fingerprint);\n }\n return null;\n}\n\nfunction applyOnePatch(orbital: OrbitalDefinition, patch: RenderUiPatch): boolean {\n const root = findRenderUiRoot(orbital, patch.address);\n if (!root) return false;\n const path = resolvePath(root, patch);\n if (path === null) return false;\n\n switch (patch.op) {\n case 'set-prop':\n case 'rebind':\n return patch.prop !== undefined && setPropAtPath(root, path, patch.prop, patch.value);\n case 'remove':\n return removeChildAtPath(root, path);\n case 'insert':\n return patch.node !== undefined\n && insertChildAtPath(root, path, patch.index ?? Number.MAX_SAFE_INTEGER, patch.node);\n case 'replace': {\n if (patch.node === undefined) return false;\n if (path === 'root') {\n const target = navigatePatternPath(root, 'root');\n if (!target) return false;\n replaceNodeInPlace(target, patch.node);\n return true;\n }\n return replaceChildAtPath(root, path, patch.node);\n }\n default:\n return false;\n }\n}\n\n/**\n * Replay render-ui patches onto a resolved orbital, in place. Deterministic:\n * given the same base + patches, produces the same tree. Patches that cannot be\n * anchored are returned in `stale` (never silently dropped or misapplied).\n */\nexport function applyRenderOverlay(\n orbital: OrbitalDefinition,\n patches: readonly RenderUiPatch[],\n): RenderOverlayResult {\n let applied = 0;\n const stale: RenderUiPatch[] = [];\n for (const patch of patches) {\n if (applyOnePatch(orbital, patch)) {\n applied += 1;\n } else {\n stale.push(patch);\n }\n }\n return { applied, stale };\n}\n","/**\n * Agent-trace view-model — the canonical render shapes for the studio's\n * agent-trace UI (ChatBar, SubagentTracePanel and their sub-components).\n *\n * Promoted out of apps/builder so the trace components can move into\n * `@almadar/ui` without depending on `@almadar-io/agent-trace`,\n * `@almadar-io/rabit`, or apps/builder-local hooks. These are pure\n * presentation shapes — what the components read, nothing the runtime\n * produces. Arbitrary tool payloads use core's `JsonValue` / `ToolArgs`\n * (see `./types/json`), never `unknown`.\n *\n * @packageDocumentation\n */\n\nimport type { JsonValue, ToolArgs } from './types/json.js';\nimport type { SemanticChangeKind } from './types/changeset.js';\nimport type { LlmCallMeta } from './types/sse.js';\nimport { EventPayloadSchema, type EventPayload } from './types/expression.js';\n\n// ----------------------------------------------------------------------------\n// Shared leaf shapes\n// ----------------------------------------------------------------------------\n\n/** Which kind of tool an in-app assistant used: a declared input, an entity read, or a name it was not given. Absent for other agents' tools. */\nexport type AppToolKind = 'input' | 'read' | 'invalid';\n\n/** Conversational role rendered with an avatar/icon in the trace stream. */\nexport type TraceAvatarRole = 'user' | 'assistant' | 'system';\n\n/** File-mutation kind surfaced by a `file_operation` trace activity. */\nexport type TraceFileOperation = 'ls' | 'read_file' | 'write_file' | 'edit_file';\n\n/** A single line within a unified-diff hunk. */\nexport interface TraceDiffLine {\n type: 'add' | 'remove' | 'context';\n content: string;\n}\n\n/** A unified-diff hunk rendered by a `schema_diff` trace activity. */\nexport interface TraceDiffHunk {\n oldStart: number;\n oldLines: number;\n newStart: number;\n newLines: number;\n lines: TraceDiffLine[];\n}\n\n// ----------------------------------------------------------------------------\n// TraceActivity — the coordinator/page-level `Activity` discriminated union\n// ----------------------------------------------------------------------------\n\n/**\n * Page-level agent activity. Discriminated by `type`; each variant carries\n * only the fields the trace components read. Mirrors apps/builder's local\n * `Activity` union (useAgentChat.ts). Tool args are `ToolArgs`, tool results\n * are `JsonValue` — no `unknown`.\n */\nexport type TraceActivity =\n | { type: 'message'; role: TraceAvatarRole; content: string; timestamp: number; isStreaming?: boolean }\n /** The agent used a tool. `argsText` is the arguments exactly as the model wrote them. */\n | { type: 'tool_call'; tool: string; kind?: AppToolKind; argsText: string; timestamp: number; isExecuting?: boolean }\n /** What the tool answered: whether it took effect, why not, how many rows a read returned, and the full answer the model saw. */\n | { type: 'tool_result'; tool: string; kind?: AppToolKind; success: boolean; detail?: string; rows?: number; resultText: string; timestamp: number }\n | { type: 'file_operation'; operation: TraceFileOperation; path: string; success?: boolean; timestamp: number }\n | { type: 'schema_diff'; filePath: string; hunks: TraceDiffHunk[]; timestamp: number }\n | { type: 'error'; message: string; code?: string; timestamp: number }\n | { type: 'coordinator_decision'; organism: string; reason: string; priorOrganism: string | null; timestamp: number }\n | { type: 'plan_committed'; orbitals: string[]; timestamp: number }\n | { type: 'pending_question'; questionId: string; question: string; orbitalName?: string; timestamp: number }\n | {\n type: 'clarification_question';\n level: 'organism' | 'molecule' | 'atom_trait';\n scope: { orbitalName?: string; traitName?: string };\n question: string;\n candidates: Array<{\n id: string;\n label: string;\n description: string;\n whyThisFits: string;\n }>;\n skipDefault: string;\n timestamp: number;\n }\n | {\n type: 'analysis';\n organism: string;\n organismReason?: string;\n complexity?: { category: string; reasoning: string };\n renames: Array<{ from: string; to: string }>;\n deletes: string[];\n timestamp: number;\n }\n | { type: 'orbital_started'; orbitalName: string; timestamp: number }\n | { type: 'orbital_done'; orbitalName: string; traitCount?: number; transitionCount?: number; timestamp: number }\n | {\n type: 'schema_change';\n changeKind: SemanticChangeKind;\n orbitalName: string;\n traitName?: string;\n transitionEvent?: string;\n timestamp: number;\n }\n | { type: 'done'; orbitalCount: number; timestamp: number }\n | { type: 'cancelled'; message: string; timestamp: number }\n /** A raw LLM response, with the call that produced it when known. */\n | { type: 'llm_response'; content: string; llm?: LlmCallMeta; timestamp: number };\n\n/** Every `TraceActivity` type — the vocabulary a host picks an audience's view from. */\nexport const TRACE_ACTIVITY_TYPES = [\n 'message',\n 'tool_call',\n 'tool_result',\n 'file_operation',\n 'schema_diff',\n 'error',\n 'coordinator_decision',\n 'plan_committed',\n 'pending_question',\n 'clarification_question',\n 'analysis',\n 'orbital_started',\n 'orbital_done',\n 'schema_change',\n 'done',\n 'cancelled',\n 'llm_response',\n] as const satisfies ReadonlyArray<TraceActivity['type']>;\n\n/** Which activities one audience sees. */\nexport interface TraceActivityAudience {\n types: ReadonlyArray<TraceActivity['type']>;\n /** Message roles shown; omitted = every role. */\n messageRoles?: ReadonlyArray<TraceAvatarRole>;\n /** `schema_change` kinds shown; omitted = every kind. */\n schemaChangeKinds?: ReadonlyArray<SemanticChangeKind>;\n}\n\nexport function selectTraceActivities(\n activities: readonly TraceActivity[],\n audience: TraceActivityAudience,\n): TraceActivity[] {\n return activities.filter((activity) => {\n if (!audience.types.includes(activity.type)) return false;\n if (activity.type === 'message' && audience.messageRoles) return audience.messageRoles.includes(activity.role);\n if (activity.type === 'schema_change' && audience.schemaChangeKinds) {\n return audience.schemaChangeKinds.includes(activity.changeKind);\n }\n return true;\n });\n}\n\n/**\n * One activity as the payload a host delivers for a live step\n * (`ServiceHostPorts.message`): `{ activity }`. Absent optional fields are dropped.\n */\nexport function traceActivityPayload(activity: TraceActivity): EventPayload {\n return EventPayloadSchema.parse({ activity: JSON.parse(JSON.stringify(activity)) });\n}\n\n// ----------------------------------------------------------------------------\n// TraceActivityItem — the agent-trace `ActivityItem` render union\n// ----------------------------------------------------------------------------\n\n/**\n * Trace-stream activity item, the shape `InlineActivityRow` /\n * `InlineActivityStream` render. Mirrors `@almadar-io/agent-trace`'s\n * `ActivityItem`. Distinct from `TraceActivity`: `message.role` includes\n * `'tool'` and an optional `label`; it omits the coordinator/plan/question\n * variants. A tool's arguments and answer are text (`argsText`, `resultText`):\n * exactly what the agent sent and got back.\n */\nexport type TraceActivityItem =\n | {\n type: 'message';\n role: TraceAvatarRole | 'tool';\n content: string;\n timestamp: number;\n isStreaming?: boolean;\n label?: string;\n }\n | { type: 'tool_call'; tool: string; argsText: string; timestamp: number; isExecuting?: boolean }\n | { type: 'tool_result'; tool: string; resultText: string; success: boolean; timestamp: number; durationMs?: number }\n | { type: 'file_operation'; operation: TraceFileOperation; path: string; success?: boolean; timestamp: number }\n | { type: 'schema_diff'; filePath: string; hunks: TraceDiffHunk[]; timestamp: number }\n | { type: 'error'; message: string; code?: string; timestamp: number }\n | { type: 'milestone'; milestone: string; summary?: string; timestamp: number };\n\n// ----------------------------------------------------------------------------\n// TraceSubagent — the `SubagentState` panel model\n// ----------------------------------------------------------------------------\n\n/** One progress entry within a subagent's running log. */\nexport interface TraceSubagentMessage {\n message: string;\n tool?: string;\n timestamp: number;\n}\n\n/**\n * Live subagent state rendered by `SubagentRow` / `SubagentRichCard` /\n * `OrbitalGroup`. Mirrors apps/builder's `SubagentState`. `orbitalName` is\n * the canvas-focus filter key.\n */\nexport interface TraceSubagent {\n id: string;\n name: string;\n role: string;\n orbitalName?: string;\n parentId?: string;\n status: 'running' | 'complete' | 'error';\n task: string;\n messages: TraceSubagentMessage[];\n durationMs?: number;\n /** Full nested activity (tool calls, messages, milestones) for a rich\n * per-subagent detail view — additive, optional; `messages` remains the\n * flat progress-log shape for consumers that only need that. */\n timeline?: ReadonlyArray<TraceActivityItem>;\n}\n\n// ----------------------------------------------------------------------------\n// TraceChatMessage — the rabit tool-loop `ChatMessage` model\n// ----------------------------------------------------------------------------\n\n/** A tool call emitted by an assistant `TraceChatMessage`. */\nexport interface TraceChatMessageToolCall {\n id: string;\n name: string;\n /** Parsed JSON arguments (the LLM emits a JSON string; stored parsed). */\n args: ToolArgs;\n}\n\n/**\n * Canonical coordinator conversation message rendered by `ChatMessageRow` /\n * `CoordinatorConversation`. Mirrors rabit's tool-loop `ChatMessage`\n * (role/content/toolCalls/toolCallId/toolName/reasoningContent).\n */\nexport interface TraceChatMessage {\n role: 'system' | 'user' | 'assistant' | 'tool';\n content: string;\n /** Present on assistant messages that called tools. */\n toolCalls?: ReadonlyArray<TraceChatMessageToolCall>;\n /** Present on tool messages — matches the `id` of the corresponding tool_call. */\n toolCallId?: string;\n /** Tool name on tool messages (cosmetic — helps tracing). */\n toolName?: string;\n /** Thinking-mode chain-of-thought (DeepSeek), echoed back on tool round-trips. */\n reasoningContent?: string;\n}\n\n\nexport interface AgentTraceState {\n activities: TraceActivity[];\n subagents: TraceSubagent[];\n coordinatorMessages: TraceChatMessage[];\n status: 'idle' | 'running' | 'paused' | 'complete' | 'error';\n}\n","export type XmlValue = string | XmlValue[] | { [key: string]: XmlValue };\n\nexport class XmlSyntaxError extends Error {\n constructor(message: string) {\n super(message);\n this.name = 'XmlSyntaxError';\n }\n}\n\ninterface XmlNode {\n attrs: Map<string, string>;\n children: Array<[string, XmlNode]>;\n own: string;\n full: string;\n}\n\nconst XML_SPACE = /[ \\t\\n\\r]/;\nconst NAME = /^[\\p{Alphabetic}_][\\p{Alphabetic}\\p{Nd}\\p{Nl}_.-]*$/u;\nconst PREDEFINED: Record<string, string> = { lt: '<', gt: '>', amp: '&', quot: '\"', apos: \"'\" };\n\nfunction bad(message: string): XmlSyntaxError {\n return new XmlSyntaxError(`xml/parse: ${message}`);\n}\n\nfunction isBlank(text: string): boolean {\n for (const c of text) if (!XML_SPACE.test(c)) return false;\n return true;\n}\n\nfunction collapse(text: string): string {\n return text.split(/[ \\t\\n\\r]+/).filter((part) => part !== '').join(' ');\n}\n\nfunction localName(qualified: string): string {\n const local = qualified.slice(qualified.lastIndexOf(':') + 1);\n if (!NAME.test(local)) throw bad(`invalid name \\`${qualified}\\``);\n return local;\n}\n\nfunction decodeEntities(raw: string): string {\n let out = '';\n let i = 0;\n while (i < raw.length) {\n const amp = raw.indexOf('&', i);\n if (amp === -1) return out + raw.slice(i);\n out += raw.slice(i, amp);\n const semi = raw.indexOf(';', amp);\n if (semi === -1) throw bad('unterminated entity');\n const name = raw.slice(amp + 1, semi);\n if (Object.prototype.hasOwnProperty.call(PREDEFINED, name)) {\n out += PREDEFINED[name];\n } else if (/^#x[0-9A-Fa-f]+$/.test(name) || /^#[0-9]+$/.test(name)) {\n const code = name[1] === 'x' ? parseInt(name.slice(2), 16) : parseInt(name.slice(1), 10);\n if (code === 0 || code > 0x10ffff || (code >= 0xd800 && code <= 0xdfff)) throw bad(`invalid character reference \\`&${name};\\``);\n out += String.fromCodePoint(code);\n } else {\n throw bad(`unknown entity \\`&${name};\\``);\n }\n i = semi + 1;\n }\n return out;\n}\n\nfunction skipDoctype(text: string, from: number): number {\n let depth = 0;\n let quote = '';\n for (let i = from; i < text.length; i++) {\n const c = text[i];\n if (quote !== '') {\n if (c === quote) quote = '';\n } else if (c === '\"' || c === \"'\") {\n quote = c;\n } else if (c === '[') {\n depth++;\n } else if (c === ']') {\n depth--;\n } else if (c === '>' && depth <= 0) {\n return i + 1;\n }\n }\n throw bad('unterminated doctype');\n}\n\ninterface StartTag {\n qualified: string;\n node: XmlNode;\n empty: boolean;\n end: number;\n}\n\nfunction readStartTag(text: string, from: number): StartTag {\n let i = from + 1;\n const nameStart = i;\n while (i < text.length && !XML_SPACE.test(text[i]) && text[i] !== '/' && text[i] !== '>') i++;\n const qualified = text.slice(nameStart, i);\n localName(qualified);\n const node: XmlNode = { attrs: new Map(), children: [], own: '', full: '' };\n const seen = new Set<string>();\n for (;;) {\n while (i < text.length && XML_SPACE.test(text[i])) i++;\n if (i >= text.length) throw bad('unterminated tag');\n if (text[i] === '>') return { qualified, node, empty: false, end: i + 1 };\n if (text[i] === '/') {\n if (text[i + 1] !== '>') throw bad('malformed tag');\n return { qualified, node, empty: true, end: i + 2 };\n }\n const keyStart = i;\n while (i < text.length && !XML_SPACE.test(text[i]) && text[i] !== '=' && text[i] !== '>' && text[i] !== '/') i++;\n const key = text.slice(keyStart, i);\n while (i < text.length && XML_SPACE.test(text[i])) i++;\n if (text[i] !== '=') throw bad(`attribute \\`${key}\\` has no value`);\n i++;\n while (i < text.length && XML_SPACE.test(text[i])) i++;\n const quote = text[i];\n if (quote !== '\"' && quote !== \"'\") throw bad(`attribute \\`${key}\\` value is not quoted`);\n const close = text.indexOf(quote, i + 1);\n if (close === -1) throw bad('unterminated attribute value');\n const value = decodeEntities(text.slice(i + 1, close));\n i = close + 1;\n if (seen.has(key)) throw bad(`duplicate attribute \\`${key}\\``);\n seen.add(key);\n if (key === 'xmlns' || key.startsWith('xmlns:')) continue;\n node.attrs.set(localName(key), value);\n }\n}\n\nfunction parseTree(text: string): XmlNode {\n const stack: Array<{ qualified: string; node: XmlNode }> = [];\n let root: XmlNode | null = null;\n\n const close = (node: XmlNode, name: string): void => {\n const parent = stack[stack.length - 1];\n if (parent === undefined) {\n root = node;\n } else {\n parent.node.full += node.full;\n parent.node.children.push([name, node]);\n }\n };\n const addText = (piece: string): void => {\n const top = stack[stack.length - 1];\n if (top !== undefined) {\n top.node.own += piece;\n top.node.full += piece;\n } else if (!isBlank(piece)) {\n throw bad(root === null ? 'text before the root element' : 'text after the root element');\n }\n };\n\n let i = 0;\n while (i < text.length) {\n if (text[i] !== '<') {\n const next = text.indexOf('<', i);\n const end = next === -1 ? text.length : next;\n addText(decodeEntities(text.slice(i, end)));\n i = end;\n } else if (text.startsWith('<!--', i)) {\n const end = text.indexOf('-->', i + 4);\n if (end === -1) throw bad('unterminated comment');\n i = end + 3;\n } else if (text.startsWith('<![CDATA[', i)) {\n const end = text.indexOf(']]>', i + 9);\n if (end === -1) throw bad('unterminated CDATA');\n if (stack.length === 0) throw bad('CDATA outside the root element');\n addText(text.slice(i + 9, end));\n i = end + 3;\n } else if (text.startsWith('<?', i)) {\n const end = text.indexOf('?>', i + 2);\n if (end === -1) throw bad('unterminated processing instruction');\n i = end + 2;\n } else if (text.startsWith('<!', i)) {\n i = skipDoctype(text, i + 2);\n } else if (text.startsWith('</', i)) {\n const end = text.indexOf('>', i);\n if (end === -1) throw bad('unterminated closing tag');\n const top = stack.pop();\n if (top === undefined) throw bad('unexpected closing tag');\n if (text.slice(i + 2, end).trim() !== top.qualified) throw bad(`mismatched closing tag for \\`${top.qualified}\\``);\n close(top.node, localName(top.qualified));\n i = end + 1;\n } else {\n if (root !== null && stack.length === 0) throw bad('more than one root element');\n const tag = readStartTag(text, i);\n if (tag.empty) close(tag.node, localName(tag.qualified));\n else stack.push({ qualified: tag.qualified, node: tag.node });\n i = tag.end;\n }\n }\n if (stack.length > 0) throw bad('unclosed element');\n if (root === null) throw bad('no root element');\n return root;\n}\n\nfunction toValue(node: XmlNode): XmlValue {\n const text = collapse(node.full);\n const ownHasText = !isBlank(node.own);\n if (node.attrs.size === 0 && (node.children.length === 0 || ownHasText)) return text;\n const entries: Array<[string, XmlValue]> = [];\n for (const [key, value] of node.attrs) entries.push([`@${key}`, value]);\n const groups = new Map<string, XmlValue[]>();\n for (const [name, child] of node.children) {\n const group = groups.get(name);\n if (group === undefined) groups.set(name, [toValue(child)]);\n else group.push(toValue(child));\n }\n for (const [name, group] of groups) entries.push([name, group.length === 1 ? group[0] : group]);\n if ((node.children.length === 0 || ownHasText) && text !== '') entries.push(['#text', text]);\n return Object.fromEntries(entries);\n}\n\n/** Every field path (through nested shapes and list elements) whose declared type is a list. */\nexport type XmlListPaths = ReadonlyArray<ReadonlyArray<string>>;\n\nfunction applyListPaths(value: XmlValue, paths: XmlListPaths): XmlValue {\n if (Array.isArray(value)) return value.map((item) => applyListPaths(item, paths));\n if (typeof value === 'string') return value;\n const heads = new Set<string>();\n for (const path of paths) if (path.length > 0) heads.add(path[0]);\n const next: { [key: string]: XmlValue } = { ...value };\n for (const head of heads) {\n if (!Object.prototype.hasOwnProperty.call(next, head)) continue;\n let child = next[head];\n if (paths.some((path) => path.length === 1 && path[0] === head) && !Array.isArray(child)) child = [child];\n const rest = paths.filter((path) => path.length > 1 && path[0] === head).map((path) => path.slice(1));\n next[head] = rest.length > 0 ? applyListPaths(child, rest) : child;\n }\n return next;\n}\n\n/** With `listPaths`, each list-typed path always reads as a list: a lone child is wrapped, an absent one stays absent. */\nexport function parseXml(text: string, listPaths: XmlListPaths = []): XmlValue {\n const value = toValue(parseTree(text));\n return listPaths.length === 0 ? value : applyListPaths(value, listPaths);\n}\n\n\nexport function xmlValid(text: string): boolean {\n try {\n parseTree(text);\n return true;\n } catch (error) {\n if (error instanceof XmlSyntaxError) return false;\n throw error;\n }\n}\n\n","import { md5 } from '@noble/hashes/legacy.js';\n\nexport type DigestEncoding = 'hex' | 'base64';\n\nexport class CodecError extends Error {\n readonly reason: string;\n\n constructor(reason: string) {\n super(`Invalid argument: ${reason}`);\n this.name = 'CodecError';\n this.reason = reason;\n }\n}\n\nconst BASE64_ALPHABET = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\nconst UNRESERVED = /^[A-Za-z0-9\\-_.!~*'()]$/;\nconst HEX = '0123456789abcdef';\n\nfunction assertWellFormed(s: string): void {\n for (let i = 0; i < s.length; i++) {\n const c = s.charCodeAt(i);\n if (c >= 0xd800 && c <= 0xdbff) {\n const next = s.charCodeAt(i + 1);\n if (!(next >= 0xdc00 && next <= 0xdfff)) throw new CodecError('string contains an unpaired surrogate');\n i++;\n } else if (c >= 0xdc00 && c <= 0xdfff) {\n throw new CodecError('string contains an unpaired surrogate');\n }\n }\n}\n\nexport function utf8Bytes(s: string): Uint8Array {\n assertWellFormed(s);\n return new TextEncoder().encode(s);\n}\n\nexport function base64EncodeBytes(bytes: Uint8Array): string {\n let out = '';\n for (let i = 0; i < bytes.length; i += 3) {\n const b0 = bytes[i];\n const b1 = bytes[i + 1];\n const b2 = bytes[i + 2];\n out += BASE64_ALPHABET[b0 >> 2];\n out += BASE64_ALPHABET[((b0 & 3) << 4) | ((b1 ?? 0) >> 4)];\n out += b1 === undefined ? '=' : BASE64_ALPHABET[((b1 & 15) << 2) | ((b2 ?? 0) >> 6)];\n out += b2 === undefined ? '=' : BASE64_ALPHABET[b2 & 63];\n }\n return out;\n}\n\n/** Strict RFC 4648 standard alphabet: padded, canonical trailing bits, no whitespace. */\nexport function base64DecodeBytes(text: string): Uint8Array {\n if (text.length % 4 !== 0) throw new CodecError('base64 length must be a multiple of 4');\n const pad = text.endsWith('==') ? 2 : text.endsWith('=') ? 1 : 0;\n const body = text.length - pad;\n const bytes = new Uint8Array((text.length / 4) * 3 - pad);\n let n = 0;\n for (let i = 0; i < text.length; i += 4) {\n let acc = 0;\n let chars = 0;\n for (let j = 0; j < 4 && i + j < body; j++) {\n const v = BASE64_ALPHABET.indexOf(text[i + j]);\n if (v < 0) throw new CodecError(`base64 contains an invalid character at ${i + j}`);\n acc = (acc << 6) | v;\n chars++;\n }\n acc <<= 6 * (4 - chars);\n const produced = chars === 4 ? 3 : chars - 1;\n if ((acc & ((1 << (24 - 8 * produced)) - 1)) !== 0) {\n throw new CodecError('base64 has non-canonical trailing bits');\n }\n for (let k = 0; k < produced; k++) bytes[n++] = (acc >> (16 - 8 * k)) & 255;\n }\n return bytes;\n}\n\nfunction hex(bytes: Uint8Array): string {\n let out = '';\n for (const b of bytes) out += HEX[b >> 4] + HEX[b & 15];\n return out;\n}\n\nexport function encodeDigest(bytes: Uint8Array, encoding: DigestEncoding): string {\n return encoding === 'hex' ? hex(bytes) : base64EncodeBytes(bytes);\n}\n\nconst K = new Uint32Array([\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 rotr = (x: number, n: number): number => (x >>> n) | (x << (32 - n));\n\nexport function sha256Bytes(message: Uint8Array): Uint8Array {\n const h = new Uint32Array([\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19,\n ]);\n const padded = new Uint8Array(Math.ceil((message.length + 9) / 64) * 64);\n padded.set(message);\n padded[message.length] = 0x80;\n const view = new DataView(padded.buffer);\n view.setUint32(padded.length - 8, Math.floor(message.length / 0x20000000), false);\n view.setUint32(padded.length - 4, (message.length << 3) >>> 0, false);\n const w = new Uint32Array(64);\n for (let off = 0; off < padded.length; off += 64) {\n for (let i = 0; i < 16; i++) w[i] = view.getUint32(off + i * 4, false);\n for (let i = 16; i < 64; i++) {\n const s0 = rotr(w[i - 15], 7) ^ rotr(w[i - 15], 18) ^ (w[i - 15] >>> 3);\n const s1 = rotr(w[i - 2], 17) ^ rotr(w[i - 2], 19) ^ (w[i - 2] >>> 10);\n w[i] = (w[i - 16] + s0 + w[i - 7] + s1) | 0;\n }\n let [a, b, c, d, e, f, g, hh] = h;\n for (let i = 0; i < 64; i++) {\n const t1 = (hh + (rotr(e, 6) ^ rotr(e, 11) ^ rotr(e, 25)) + ((e & f) ^ (~e & g)) + K[i] + w[i]) | 0;\n const t2 = ((rotr(a, 2) ^ rotr(a, 13) ^ rotr(a, 22)) + ((a & b) ^ (a & c) ^ (b & c))) | 0;\n hh = g;\n g = f;\n f = e;\n e = (d + t1) | 0;\n d = c;\n c = b;\n b = a;\n a = (t1 + t2) | 0;\n }\n h[0] += a; h[1] += b; h[2] += c; h[3] += d; h[4] += e; h[5] += f; h[6] += g; h[7] += hh;\n }\n const out = new Uint8Array(32);\n const outView = new DataView(out.buffer);\n for (let i = 0; i < 8; i++) outView.setUint32(i * 4, h[i], false);\n return out;\n}\n\nexport function md5Bytes(message: Uint8Array): Uint8Array {\n return md5(message);\n}\n\nexport function hmacSha256Bytes(key: Uint8Array, data: Uint8Array): Uint8Array {\n const block = key.length > 64 ? sha256Bytes(key) : key;\n const ipad = new Uint8Array(64 + data.length);\n const opad = new Uint8Array(64 + 32);\n for (let i = 0; i < 64; i++) {\n const kb = i < block.length ? block[i] : 0;\n ipad[i] = kb ^ 0x36;\n opad[i] = kb ^ 0x5c;\n }\n ipad.set(data, 64);\n opad.set(sha256Bytes(ipad), 64);\n return sha256Bytes(opad);\n}\n\nexport function encodeUriComponent(s: string): string {\n let out = '';\n for (const ch of s) {\n if (UNRESERVED.test(ch)) {\n out += ch;\n } else {\n for (const b of utf8Bytes(ch)) out += `%${HEX[b >> 4].toUpperCase()}${HEX[b & 15].toUpperCase()}`;\n }\n }\n return out;\n}\n\nexport function decodeUriComponent(s: string): string {\n try {\n return decodeURIComponent(s);\n } catch {\n throw new CodecError('URI malformed');\n }\n}\n\nexport function encodeBase64(text: string): string {\n return base64EncodeBytes(utf8Bytes(text));\n}\n\nexport function decodeBase64(text: string): string {\n const bytes = base64DecodeBytes(text);\n try {\n return new TextDecoder('utf-8', { fatal: true }).decode(bytes);\n } catch {\n throw new CodecError('base64 does not decode to valid UTF-8');\n }\n}\n\nexport function hashSha256(text: string, encoding: DigestEncoding): string {\n const message = utf8Bytes(text);\n return encodeDigest(sha256Bytes(message), encoding);\n}\n\nexport function hmacSha256(key: string, message: string, encoding: DigestEncoding): string {\n const keyBytes = utf8Bytes(key);\n const messageBytes = utf8Bytes(message);\n return encodeDigest(hmacSha256Bytes(keyBytes, messageBytes), encoding);\n}\n\n/** MD5 of already-decoded bytes, supplied as standard padded base64. */\nexport function hashMd5(base64Bytes: string, encoding: DigestEncoding): string {\n return encodeDigest(md5Bytes(base64DecodeBytes(base64Bytes)), encoding);\n}\n","/**\n * Schema Resolver\n *\n * Converts OrbitalSchema to Intermediate Representation (IR).\n * Resolves all entity references, expands traits, and prepares schema for compilation/runtime.\n *\n * @packageDocumentation\n */\n\nimport type { OrbitalSchema } from './types/schema.js';\nimport type { Orbital, Trait, Page, PageTraitRef, Entity } from './types/index.js';\nimport type { ResolvedIR, ResolvedPage, ResolvedEntity, ResolvedTrait, ResolvedTraitEvent, ResolvedTraitTransition, ResolvedTraitTick } from './types/ir.js';\nimport type { EntityField } from './types/field.js';\nimport type { FieldValue } from './types/entity.js';\nimport type { State, Event, Transition } from './types/state-machine.js';\nimport type { TraitEventListener, TraitTick } from './types/trait.js';\nimport { isRoutePage } from './types/page.js';\n\n/**\n * Extended entity shape for schema data that may carry `defaults`/`icon`.\n * The core Entity type does not include either — `defaults` is extra data\n * for singleton initialization, `icon` an optional display extension —\n * but parsed schemas can attach both.\n */\ninterface EntityWithDefaults extends Entity {\n defaults?: Record<string, FieldValue>;\n icon?: string;\n}\n\n// ============================================================================\n// Cache\n// ============================================================================\n\n/**\n * Cache for resolved schemas, keyed on the schema object reference.\n *\n * Identity-based caching (WeakMap) is the only correct shape here: two\n * versions of the same logical schema with the same `name` + `version`\n * can have different content (e.g. a palette drop adds a render-ui\n * pattern, an agent edit rewrites a trait's effects). The old\n * `${name}-${version}` key collided across content mutations and\n * returned a stale IR — fine for the compiler's one-shot path, fatal\n * for the runtime's live-editing path where downstream identity checks\n * (`traits` array refs, trait state-machine references) depend on the\n * IR being fresh when the schema's content moved.\n *\n * WeakMap also means we don't have to think about cache invalidation:\n * when the consumer drops its reference to the schema, the entry is\n * garbage-collected automatically.\n */\nlet schemaCache = new WeakMap<OrbitalSchema, ResolvedIR>();\n\n/**\n * Clear the schema resolution cache.\n *\n * With WeakMap-on-reference caching, cache entries die naturally when\n * the schema object is GC'd, so explicit clearing is rarely necessary.\n * Kept for hot-reload paths that want to force fresh resolution; since\n * WeakMap has no `clear()`, we swap in a fresh instance.\n */\nexport function clearSchemaCache(): void {\n schemaCache = new WeakMap<OrbitalSchema, ResolvedIR>();\n}\n\n/**\n * Get cache statistics (for debugging).\n *\n * WeakMap doesn't expose size or keys; the best we can do is signal\n * that the cache is identity-keyed. Kept for API parity with the old\n * Map-based cache.\n */\nexport function getSchemaCacheStats(): { size: number; keys: string[] } {\n return { size: -1, keys: [] };\n}\n\n// ============================================================================\n// Schema to IR Conversion\n// ============================================================================\n\n/**\n * Convert OrbitalSchema to Intermediate Representation (IR).\n *\n * This function:\n * 1. Resolves all entity references\n * 2. Expands trait definitions (inline or from library)\n * 3. Resolves page bindings\n * 4. Creates the IR structure used by compiler and runtime\n *\n * @param schema - OrbitalSchema to convert\n * @param useCache - Whether to use cached result (default: true)\n * @returns Fully resolved IR\n *\n * @example\n * const schema = { name: 'MyApp', orbitals: [...] };\n * const ir = schemaToIR(schema);\n * console.log(ir.entities.size); // Number of entities\n * console.log(ir.pages.size); // Number of pages\n */\nexport function schemaToIR(schema: OrbitalSchema, useCache: boolean = true): ResolvedIR {\n // Identity cache: same object reference → same IR. Caller is responsible\n // for handing us a fresh ref when content moved (e.g. immutable update).\n if (useCache) {\n const cached = schemaCache.get(schema);\n if (cached) return cached;\n }\n\n // Create empty IR structure\n const ir: ResolvedIR = {\n appName: schema.name,\n description: schema.description,\n version: schema.version || '1.0.0',\n entities: new Map<string, ResolvedEntity>(),\n traits: new Map<string, ResolvedTrait>(),\n pages: new Map<string, ResolvedPage>(),\n entityBindings: [],\n generatedAt: new Date().toISOString(),\n };\n\n // Process each orbital\n for (const orbital of schema.orbitals as Orbital[]) {\n // Resolve entity if present\n if (orbital.entity && typeof orbital.entity !== 'string') {\n const entityDef = orbital.entity as EntityWithDefaults;\n const entity: ResolvedEntity = {\n name: entityDef.name,\n description: entityDef.description,\n icon: entityDef.icon,\n collection: entityDef.collection || entityDef.name.toLowerCase() + 's',\n fields: (entityDef.fields || [])\n .filter((field: EntityField): field is EntityField & { name: string } =>\n typeof field.name === 'string' && field.name.length > 0,\n )\n .map((field) => ({\n name: field.name,\n type: field.type,\n tsType: inferTsType(field.type),\n description: field.description,\n default: field.default,\n required: field.required ?? false,\n // lolo string unions lower to `type:'string'` + a `values` sidecar\n // (FieldType::Enum is never emitted) — read values off any variant\n // that carries them, not just `enum`. EXCLUDES `type:'union'`\n // deliberately: its `values` carries tagged-union variant NAMES or a\n // by-name recursive back-reference (`type MenuItem = { subMenu :\n // [MenuItem] }`), never legal literal values — treating either as\n // an enum vocabulary would let a downstream option-list render the\n // variant/alias NAME as if it were a selectable value (mirrors the\n // Rust-side skip in `orbital-core/src/type_compat.rs`).\n values: field.type !== 'union' && 'values' in field && field.values?.length ? field.values : undefined,\n enumValues: field.type !== 'union' && 'values' in field && field.values?.length ? field.values : undefined,\n relation: field.type === 'relation' ? field.relation : undefined,\n intrinsic: field.intrinsic,\n items: 'items' in field ? field.items : undefined,\n properties: field.properties,\n })),\n runtime: entityDef.persistence === 'runtime',\n shared: entityDef.shared,\n hasInstances: (entityDef.instances?.length ?? 0) > 0,\n instances: entityDef.instances,\n defaults: entityDef.defaults,\n usedByTraits: [],\n usedByPages: [],\n };\n ir.entities.set(entity.name, entity);\n }\n\n // Resolve traits. Preprocessed ref traits from @almadar/runtime's\n // preprocessSchema arrive as wrappers { ref, config, linkedEntity,\n // _resolved: <full trait> }. Unwrap those before projecting so the\n // page-level trait binding can find them by name in ir.traits.\n // Without this unwrap, `trait.name` on a ref wrapper is undefined,\n // and useTraitStateMachine subscribes to zero events for every ref.\n for (const rawTrait of (orbital.traits || [])) {\n const maybeResolved =\n typeof rawTrait === 'object' && 'ref' in rawTrait ? rawTrait._resolved : undefined;\n const trait: Trait =\n maybeResolved && maybeResolved.stateMachine\n ? maybeResolved\n : (rawTrait as Trait);\n if (!trait.name) continue;\n const resolvedTrait: ResolvedTrait = {\n name: trait.name,\n description: trait.description,\n source: 'schema',\n // V4 dual-carry ids + emit contracts, preserved when the source\n // trait carries them — the emit-source stamp needs `id`/`eventId`\n // for id-scoped `listens` matching (`buildSourceMatcher` compares\n // ids ONLY, so a name-only stamp never matches a `traitId`-carrying\n // listen). Absent on id-free schemas, which keep the legacy\n // name-only stamp exactly as before.\n ...(trait.id !== undefined ? { id: trait.id } : {}),\n ...(trait.emits !== undefined\n ? { emits: trait.emits.map((e) => ({ event: e.event, eventId: e.eventId })) }\n : {}),\n states: (trait.stateMachine?.states || []).map((s: State) => ({\n name: s.name,\n isInitial: s.isInitial ?? false,\n isFinal: s.isFinal ?? s.isTerminal ?? false,\n })),\n events: (trait.stateMachine?.events || []).map((e: Event) => ({\n key: e.key,\n name: e.name,\n payload: e.payloadSchema,\n })) as ResolvedTraitEvent[],\n transitions: (trait.stateMachine?.transitions || []).map((t: Transition) => ({\n from: t.from,\n to: t.to,\n event: t.event,\n guard: t.guard,\n effects: t.effects || [],\n })) as ResolvedTraitTransition[],\n guards: [],\n ticks: (trait.ticks || []).map((tk: TraitTick) => ({\n name: tk.name,\n interval: tk.interval,\n guard: tk.guard,\n effects: tk.effects,\n priority: tk.priority ?? 0,\n appliesTo: tk.appliesTo ?? [],\n whileVisible: tk.whileVisible === true,\n })) as ResolvedTraitTick[],\n listens: (trait.listens || []).map((l: TraitEventListener) => ({\n event: l.event,\n triggers: l.triggers,\n guard: l.guard,\n payloadMapping: l.payloadMapping,\n source: l.source,\n })),\n dataEntities: [],\n linkedEntity: trait.linkedEntity,\n config: trait.config,\n };\n ir.traits.set(trait.name, resolvedTrait);\n }\n\n // Resolve pages: the route table a client opens; protocol pages are served by other sides\n for (const page of (orbital.pages || []) as Page[]) {\n if (!isRoutePage(page)) continue;\n const resolvedPage: ResolvedPage = {\n name: page.name,\n path: page.path,\n featureName: page.name.toLowerCase(),\n viewType: page.viewType && ['list', 'detail', 'create', 'edit', 'dashboard'].includes(page.viewType) ?\n page.viewType as ('list' | 'detail' | 'create' | 'edit' | 'dashboard') : undefined,\n ...pageModifiers(page),\n sections: [],\n traits: (page.traits || []).map((traitRef: PageTraitRef) => {\n const resolvedTrait = resolveTraitRef(traitRef, ir.traits, orbital.traits as Trait[] || []);\n // Precedence: page-level rebind → orbital-trait-wrapper rebind →\n // atom's resolved trait linkedEntity (from `uses` import) →\n // orbital primary entity. Without walking past the wrapper to\n // the atom's _resolved, atoms imported via `uses` without an\n // explicit `-> Entity` rebind silently rebind to the orbital's\n // primary entity (gap #22 design said atoms keep their own\n // auxiliary entity).\n const orbitalTrait = (orbital.traits as Trait[] || []).find(\n (t): t is Trait => typeof t === 'object' && t !== null\n && (\n ('name' in t && (t as { name?: string }).name === traitRef.ref)\n || ('ref' in t && (t as { ref?: string }).ref === traitRef.ref)\n )\n );\n const orbitalTraitWrapped = orbitalTrait as (Trait & { _resolved?: Trait }) | undefined;\n const wrapperLinked = orbitalTraitWrapped?.linkedEntity ?? orbitalTraitWrapped?._resolved?.linkedEntity;\n const resolvedLinked = resolvedTrait?.linkedEntity;\n return {\n ref: traitRef.ref,\n trait: resolvedTrait,\n linkedEntity: traitRef.linkedEntity ?? wrapperLinked ?? resolvedLinked ??\n (orbital.entity ? (typeof orbital.entity === 'string' ? orbital.entity.replace('.entity', '') : (orbital.entity as Entity).name) : undefined),\n config: traitRef.config,\n };\n }),\n entityBindings: [],\n navigation: [],\n singletonEntities: [],\n };\n ir.pages.set(page.name, resolvedPage);\n }\n }\n\n // Cache result against the schema's object identity.\n if (useCache) {\n schemaCache.set(schema, ir);\n }\n\n return ir;\n}\n\n// ============================================================================\n// Helper Functions\n// ============================================================================\n\n/**\n * Infers TypeScript type from schema type string\n * \n * Converts schema type strings to their TypeScript equivalents.\n * Handles primitive types, arrays, and custom types.\n * \n * @param {string} schemaType - Schema type string (e.g., 'string', 'number[]')\n * @returns {string} TypeScript type string\n * \n * @example\n * inferTsType('string') // returns 'string'\n * inferTsType('number[]') // returns 'number[]'\n * inferTsType('custom') // returns 'custom'\n */\nfunction inferTsType(schemaType: string): string {\n const typeMap: Record<string, string> = {\n string: 'string',\n number: 'number',\n boolean: 'boolean',\n date: 'Date',\n datetime: 'Date',\n timestamp: 'number',\n money: 'number',\n file: 'FileValue',\n bytes: 'string',\n array: 'unknown[]',\n object: 'Record<string, unknown>',\n any: 'unknown',\n };\n\n // Handle array types like \"string[]\"\n if (schemaType.endsWith('[]')) {\n const baseType = schemaType.slice(0, -2);\n return `${typeMap[baseType] || baseType}[]`;\n }\n\n // Typed-map form `Map<K,V>` (the orbital `Map K V` type) → `Record<K, V>`.\n // Mirrors the Rust `parse_payload_field_type` map branch.\n if (schemaType.startsWith('Map<') && schemaType.endsWith('>')) {\n const inner = schemaType.slice(4, -1);\n const comma = inner.indexOf(',');\n if (comma !== -1) {\n const key = inferTsType(inner.slice(0, comma).trim());\n const value = inferTsType(inner.slice(comma + 1).trim());\n return `Record<${key}, ${value}>`;\n }\n }\n\n return typeMap[schemaType] || schemaType;\n}\n\n/**\n * Resolves a trait reference to a full trait definition\n * \n * Looks up trait references in the resolved traits map or schema traits array.\n * Creates appropriate trait structures for different reference types.\n * \n * @param {PageTraitRef} traitRef - Trait reference (string or object)\n * @param {Map<string, ResolvedTrait>} traitsMap - Map of resolved traits\n * @param {Trait[]} schemaTraits - Array of schema traits\n * @returns {ResolvedTrait} Resolved trait definition\n * \n * @example\n * const trait = resolveTraitRef('MyTrait', traitsMap, schemaTraits);\n * const trait = resolveTraitRef({ ref: 'MyTrait' }, traitsMap, schemaTraits);\n */\nfunction resolveTraitRef(\n traitRef: PageTraitRef,\n traitsMap: Map<string, ResolvedTrait>,\n schemaTraits: Trait[]\n): ResolvedTrait {\n const refName = typeof traitRef === 'string' ? traitRef : traitRef.ref || '';\n\n // Try to find in resolved traits\n if (traitsMap.has(refName)) {\n return traitsMap.get(refName)!;\n }\n\n // Try to find in schema traits\n const schemaTrait = schemaTraits.find((t: Trait) => t.name === refName);\n if (schemaTrait) {\n // This is a simplified inline trait\n return {\n name: refName,\n source: 'inline',\n states: [],\n events: [],\n transitions: [],\n guards: [],\n ticks: [],\n listens: [],\n dataEntities: [],\n };\n }\n\n // Fallback: create empty trait\n return {\n name: refName,\n source: 'schema',\n states: [],\n events: [],\n transitions: [],\n guards: [],\n ticks: [],\n listens: [],\n dataEntities: [],\n };\n}\n\n// ============================================================================\n// Page Helpers\n// ============================================================================\n\n/**\n * Get a specific page from resolved IR by name.\n * If no name is provided, returns the first page.\n *\n * @param ir - Resolved IR\n * @param pageName - Optional page name to find\n * @returns Resolved page or undefined\n *\n * @example\n * const ir = schemaToIR(schema);\n * const homePage = getPage(ir, 'HomePage');\n * const firstPage = getPage(ir); // No name = first page\n */\nexport function getPage(ir: ResolvedIR, pageName?: string): ResolvedPage | undefined {\n if (!pageName) {\n // Return first page if no name specified\n return ir.pages.values().next().value;\n }\n return ir.pages.get(pageName);\n}\n\n/**\n * Get all pages from resolved IR as an array\n *\n * @param ir - Resolved IR\n * @returns Array of resolved pages\n */\nexport function getPages(ir: ResolvedIR): ResolvedPage[] {\n return Array.from(ir.pages.values());\n}\n\n/**\n * Get a specific entity from resolved IR by name\n *\n * @param ir - Resolved IR\n * @param entityName - Entity name to find\n * @returns Resolved entity or undefined\n */\nexport function getEntity(ir: ResolvedIR, entityName: string): ResolvedEntity | undefined {\n return ir.entities.get(entityName);\n}\n\n/**\n * Get a specific trait from resolved IR by name\n *\n * @param ir - Resolved IR\n * @param traitName - Trait name to find\n * @returns Resolved trait or undefined\n */\nexport function getTrait(ir: ResolvedIR, traitName: string): ResolvedTrait | undefined {\n return ir.traits.get(traitName);\n}\n\n/** The declared page modifiers, omitting absent ones (never defaulted). */\nexport function pageModifiers(\n page: Pick<Page, 'access' | 'indexing' | 'title' | 'description' | 'sourcePage' | 'translationOf'>,\n): Pick<ResolvedPage, 'access' | 'indexing' | 'title' | 'description' | 'sourcePage' | 'translationOf'> {\n return {\n ...(page.access !== undefined ? { access: page.access } : {}),\n ...(page.indexing !== undefined ? { indexing: page.indexing } : {}),\n ...(page.sourcePage !== undefined ? { sourcePage: page.sourcePage } : {}),\n ...(page.translationOf !== undefined ? { translationOf: page.translationOf } : {}),\n ...(page.title !== undefined ? { title: page.title } : {}),\n ...(page.description !== undefined ? { description: page.description } : {}),\n };\n}\n","/**\n * `getNestedValue` — safely retrieve a nested value from an object using a\n * dot-notation path (e.g. `\"company.address.city\"`).\n *\n * Single owner moved here from `@almadar/ui/lib/getNestedValue` (Stage B\n * B1-F): emitted SERVER code cannot import `@almadar/ui` (a render-substrate\n * package), so a helper server-side codegen needs — reading a listen\n * payload's mapped field, a template binding, a display column — has to\n * live in core. `@almadar/ui/lib` re-exports this symbol for its own\n * consumers.\n *\n * @packageDocumentation\n */\nimport type { EventPayload, EventPayloadValue, FieldValue } from '../types/index.js';\nimport type { UserContext } from '../types/user.js';\n\ntype NestedValueInput =\n | EventPayload\n | EventPayloadValue\n | FieldValue\n | Record<string, FieldValue | undefined>\n | UserContext\n | null\n | undefined;\n\n/**\n * Get a nested value from an object using a dot-notation path.\n *\n * Widened over the UI original to admit every shape a payload/field value\n * can hold (`EventPayload`, `EventPayloadValue`, `FieldValue`) — a `string`,\n * `number` or `Date` at any level bails to `undefined`; an array is indexed by a\n * numeric segment (`\"rows.0.name\"`), matching `object/get` in both evaluators.\n *\n * @example\n * const data = { company: { name: \"Acme Corp\", address: { city: \"NYC\" } } };\n * getNestedValue(data, \"company.name\"); // => \"Acme Corp\"\n * getNestedValue(data, \"company.address.city\"); // => \"NYC\"\n * getNestedValue(data, \"company.missing\"); // => undefined\n */\nexport function getNestedValue(obj: NestedValueInput, path: string): FieldValue | undefined {\n if (obj === null || obj === undefined || !path) return undefined;\n if (typeof obj !== 'object') return undefined;\n\n // Fast path: no dots means simple property access.\n if (!path.includes('.') && !Array.isArray(obj)) {\n return (obj as Record<string, FieldValue | undefined>)[path];\n }\n\n let value: NestedValueInput = obj;\n for (const part of path.split('.')) {\n if (value === null || value === undefined || typeof value !== 'object') return undefined;\n // An array is indexed by a numeric segment, as `object/get` does in both evaluators.\n if (Array.isArray(value)) {\n if (!/^\\d+$/.test(part)) return undefined;\n value = (value as readonly NestedValueInput[])[Number(part)];\n continue;\n }\n value = (value as Record<string, FieldValue | undefined>)[part];\n }\n\n return value as FieldValue | undefined;\n}\n","/**\n * Resolves drawing tones to a theme preset's colors and measures how far apart two colors look, so a\n * test can prove that the tones a simulation tells apart stay distinguishable in every theme.\n */\n\nimport { DIAGRAM_TONE_COLOR_KEYS, type DiagramTone } from '../types/canvas-theme.js';\nimport type { ThemeDefinition } from '../types/domain.js';\n\n/** Two marks closer than this (CIEDE2000) read as the same color. */\nexport const INDISTINCT_DELTA_E = 10;\n\nexport interface ThemeMode {\n /** `<theme>` for the base tokens, `<theme>:<variant>` for a variant. */\n id: string;\n colors: Readonly<Record<string, string>>;\n}\n\n/**\n * The base mode plus every variant, as the theme CSS emits them: a variant block carries only its own\n * colors (a key it omits falls back to the CSS defaults, not to the base). A base that declares no\n * colors is not a designed mode (it renders the app's default palette), so it is left out.\n */\nexport function themeModes(name: string, theme: ThemeDefinition): ThemeMode[] {\n const base = theme.tokens.colors ?? {};\n const modes: ThemeMode[] = Object.keys(base).length > 0 ? [{ id: name, colors: base }] : [];\n for (const [variant, v] of Object.entries(theme.variants ?? {})) modes.push({ id: `${name}:${variant}`, colors: v.colors ?? {} });\n return modes;\n}\n\n/** The mode's color for a tone, or undefined when the theme leaves it to the CSS defaults. */\nexport function toneColor(mode: ThemeMode, tone: DiagramTone): string | undefined {\n return mode.colors[DIAGRAM_TONE_COLOR_KEYS[tone]];\n}\n\nexport type Lab = readonly [number, number, number];\n\n/** sRGB hex (`#rgb`, `#rrggbb`, alpha ignored) to CIE L*a*b* (D65). Undefined for any other form. */\nexport function hexToLab(hex: string): Lab | undefined {\n const m = /^#([0-9a-f]{3}|[0-9a-f]{6}|[0-9a-f]{8})$/i.exec(hex.trim());\n if (!m) return undefined;\n const h = m[1].length === 3 ? m[1].split('').map((c) => c + c).join('') : m[1].slice(0, 6);\n const lin = (i: number) => {\n const c = parseInt(h.slice(i, i + 2), 16) / 255;\n return c <= 0.04045 ? c / 12.92 : ((c + 0.055) / 1.055) ** 2.4;\n };\n const [r, g, b] = [lin(0), lin(2), lin(4)];\n const f = (t: number) => (t > 216 / 24389 ? Math.cbrt(t) : (24389 / 27 * t + 16) / 116);\n const fx = f((0.4124564 * r + 0.3575761 * g + 0.1804375 * b) / 0.95047);\n const fy = f(0.2126729 * r + 0.7151522 * g + 0.072175 * b);\n const fz = f((0.0193339 * r + 0.119192 * g + 0.9503041 * b) / 1.08883);\n return [116 * fy - 16, 500 * (fx - fy), 200 * (fy - fz)];\n}\n\n/** CIEDE2000 color difference (Sharma, Wu & Dalal 2005). */\nexport function ciede2000(lab1: Lab, lab2: Lab): number {\n const [L1, a1, b1] = lab1;\n const [L2, a2, b2] = lab2;\n const rad = Math.PI / 180;\n const C1 = Math.hypot(a1, b1);\n const C2 = Math.hypot(a2, b2);\n const Cbar7 = ((C1 + C2) / 2) ** 7;\n const G = 0.5 * (1 - Math.sqrt(Cbar7 / (Cbar7 + 25 ** 7)));\n const a1p = (1 + G) * a1;\n const a2p = (1 + G) * a2;\n const C1p = Math.hypot(a1p, b1);\n const C2p = Math.hypot(a2p, b2);\n const hue = (b: number, a: number) => {\n if (a === 0 && b === 0) return 0;\n const h = Math.atan2(b, a) / rad;\n return h >= 0 ? h : h + 360;\n };\n const h1p = hue(b1, a1p);\n const h2p = hue(b2, a2p);\n const dLp = L2 - L1;\n const dCp = C2p - C1p;\n let dhp = 0;\n if (C1p * C2p !== 0) {\n dhp = h2p - h1p;\n if (dhp > 180) dhp -= 360;\n else if (dhp < -180) dhp += 360;\n }\n const dHp = 2 * Math.sqrt(C1p * C2p) * Math.sin((dhp / 2) * rad);\n const Lbarp = (L1 + L2) / 2;\n const Cbarp = (C1p + C2p) / 2;\n let hbarp = h1p + h2p;\n if (C1p * C2p !== 0) {\n if (Math.abs(h1p - h2p) <= 180) hbarp = (h1p + h2p) / 2;\n else hbarp = h1p + h2p < 360 ? (h1p + h2p + 360) / 2 : (h1p + h2p - 360) / 2;\n }\n const T =\n 1 -\n 0.17 * Math.cos((hbarp - 30) * rad) +\n 0.24 * Math.cos(2 * hbarp * rad) +\n 0.32 * Math.cos((3 * hbarp + 6) * rad) -\n 0.2 * Math.cos((4 * hbarp - 63) * rad);\n const dTheta = 30 * Math.exp(-(((hbarp - 275) / 25) ** 2));\n const Cbarp7 = Cbarp ** 7;\n const RC = 2 * Math.sqrt(Cbarp7 / (Cbarp7 + 25 ** 7));\n const SL = 1 + (0.015 * (Lbarp - 50) ** 2) / Math.sqrt(20 + (Lbarp - 50) ** 2);\n const SC = 1 + 0.045 * Cbarp;\n const SH = 1 + 0.015 * Cbarp * T;\n const RT = -Math.sin(2 * dTheta * rad) * RC;\n return Math.sqrt((dLp / SL) ** 2 + (dCp / SC) ** 2 + (dHp / SH) ** 2 + RT * (dCp / SC) * (dHp / SH));\n}\n\n/** CIEDE2000 between two hex colors; undefined when either is not a hex color. */\nexport function colorDifference(a: string, b: string): number | undefined {\n const la = hexToLab(a);\n const lb = hexToLab(b);\n return la && lb ? ciede2000(la, lb) : undefined;\n}\n","/**\n * An app's dependency graph, read from what its program records: each orbital's\n * `uses` imports, then every behavior they reach with its own imports, each placed\n * in its layer.\n *\n * @packageDocumentation\n */\n\nimport { z } from 'zod';\nimport type { OrbitalSchema } from './types/schema.js';\n\n/** Which package owns a behavior: the public substrate (`@almadar/std`), its realization (`@almadar-io/behaviors`), or neither registry. */\nexport type BehaviorTier = 'std' | 'io' | 'unknown';\n\n/** Where a behavior sits upstream of an app: an io realization, a std behavior, a std UI primitive (a registry `pattern` factory), or outside both registries. */\nexport type DependencyLayer = 'io' | 'std' | 'primitive' | 'unknown';\n\n/**\n * One `uses Alias from \"…\"` of an orbital, as its program records it: the behavior it\n * resolves to (the path's trailing name, as the compiler resolves it), that behavior's\n * tier, and the traits composed from it (`ref: \"<Alias>.traits.<T>\"`).\n */\nexport interface BehaviorImport {\n as: string;\n from: string;\n behavior: string;\n tier: BehaviorTier;\n traits: ReadonlyArray<{ name: string; ref: string }>;\n}\n\n/** Each orbital's direct imports, and every behavior reached with its layer and its own imports. */\nexport interface DependencyGraph {\n orbitals: Record<string, readonly string[]>;\n behaviors: Record<string, { layer: DependencyLayer; imports: readonly string[] }>;\n}\n\nexport const DependencyGraphSchema = z.object({\n orbitals: z.record(z.string(), z.array(z.string())),\n behaviors: z.record(z.string(), z.object({ layer: z.enum(['io', 'std', 'primitive', 'unknown']), imports: z.array(z.string()) })),\n}) satisfies z.ZodType<DependencyGraph>;\n\n/** How `dependencyGraphOf` reads the installed behaviors. */\nexport interface DependencyGraphDeps {\n tierOf: (name: string) => BehaviorTier;\n /** The behavior's own program, or null when none is installed. */\n orbOf: (name: string) => OrbitalSchema | null;\n /** The UI pattern a behavior is the factory of, if any. */\n patternOf: (name: string) => string | undefined;\n}\n\n/**\n * A program's imports as edges: each `uses {as, from}` resolved to its behavior by\n * the path's trailing name (the compiler's loader rule), that behavior's tier, and the\n * traits composed from it (`ref: \"<as>.traits.<T>\"`). Own traits carry no `ref`.\n */\nexport function importsOf(schema: OrbitalSchema, tierOf: (name: string) => BehaviorTier): BehaviorImport[] {\n return schema.orbitals.flatMap((orbital) =>\n (orbital.uses ?? []).map((use) => {\n const behavior = use.from.slice(use.from.lastIndexOf('/') + 1);\n const prefix = `${use.as}.traits.`;\n const traits = (orbital.traits ?? []).flatMap((t) =>\n typeof t === 'object' && 'ref' in t && t.ref.startsWith(prefix)\n ? [{ name: t.name ?? t.ref.slice(prefix.length), ref: t.ref }]\n : [],\n );\n return { as: use.as, from: use.from, behavior, tier: tierOf(behavior), traits };\n }),\n );\n}\n\n/**\n * Each orbital's direct imports, then every behavior reached, once, with its own\n * imports from its program and its layer: a `pattern` factory is a UI primitive,\n * otherwise its tier.\n */\nexport function dependencyGraphOf(schema: OrbitalSchema, deps: DependencyGraphDeps): DependencyGraph {\n const unique = (s: OrbitalSchema): string[] => [...new Set(importsOf(s, deps.tierOf).map((i) => i.behavior))];\n const orbitals = Object.fromEntries(schema.orbitals.map((o) => [o.name, unique({ ...schema, orbitals: [o] })]));\n const behaviors: Record<string, { layer: DependencyLayer; imports: readonly string[] }> = {};\n const queue = Object.values(orbitals).flat();\n while (queue.length > 0) {\n const name = queue.shift();\n if (name === undefined || behaviors[name]) continue;\n const orb = deps.orbOf(name);\n const imports = orb ? unique(orb) : [];\n behaviors[name] = { layer: deps.patternOf(name) !== undefined ? 'primitive' : deps.tierOf(name), imports };\n queue.push(...imports);\n }\n return { orbitals, behaviors };\n}\n","/**\n * The kernel's evaluator as a typed host operation.\n *\n * `@almadar/kernel` (wasm) and the native add-on export the one Rust evaluator and the one row-access\n * owner as functions over JSON strings. This module is their typed face: it marshals the wire types\n * `orbital-core` generates (`kernel-wire`) so a host never writes a JSON call itself and never carries an\n * evaluator of its own. A render hands its binding context once and every expression it binds in one\n * `evaluateMany` crossing.\n *\n * The module that loads the kernel installs it once (`installKernelEvaluator`); a caller that evaluates\n * before that gets a typed error, never a second evaluator.\n *\n * @packageDocumentation\n */\n\nimport type {\n EvalContextWire,\n EvalOutcomeWire,\n EvalTracedWire,\n GuardOutcomeWire,\n MutationOpWire,\n MutationVerdictWire,\n RowBindingWire,\n TraceEffectsWire,\n} from './generated/kernel-wire';\nimport type { EntityRow, EventPayload, JsonObject, JsonValue, SExpr } from './types/index';\n\n/** The evaluation functions `@almadar/kernel` (wasm) and the native add-on export, over JSON strings. */\nexport interface KernelEvaluatorExports {\n evaluateMany(contextJson: string, expressionsJson: string): string;\n resolveValues(contextJson: string, valuesJson: string): string;\n evaluateGuards(contextJson: string, guardsJson: string): string;\n evaluateTraced(contextJson: string, expressionJson: string): string;\n traceEffects(contextJson: string, effectsJson: string): string;\n mapListenPayload(mappingJson: string, payloadJson: string): string;\n scopeRows(bindingsJson: string, rowsJson: string, policyJson: string, filterJson: string, entityType: string): string;\n checkMutationAccess(operation: string, bindingsJson: string, rowJson: string, policyJson: string, entityType: string): string;\n resolveRowBinding(term: string, bindingsJson: string): string;\n}\n\n/** An expression the kernel's evaluator rejected. */\nexport class KernelEvalError extends Error {\n constructor(message: string) {\n super(message);\n this.name = 'KernelEvalError';\n }\n}\n\n/** A caller evaluated before the module that loads the kernel installed its evaluator. */\nexport class KernelEvaluatorNotInstalledError extends Error {\n constructor() {\n super('the kernel evaluator is not installed: load @almadar/kernel and call installKernelEvaluator before evaluating');\n this.name = 'KernelEvaluatorNotInstalledError';\n }\n}\n\nexport interface KernelEvaluator {\n /** Every expression of one render against one context, in one crossing; a failing expression is its own outcome. */\n evaluateMany(context: EvalContextWire, expressions: readonly SExpr[]): EvalOutcomeWire[];\n /** Every prop value of one render resolved in one crossing: each binding (embedded in a string or at any depth) and each operator call. */\n resolveValues(context: EvalContextWire, values: readonly JsonValue[]): EvalOutcomeWire[];\n /** One expression's value; throws `KernelEvalError` with the evaluator's message when it fails. */\n evaluate(context: EvalContextWire, expression: SExpr): JsonValue;\n /** Every guard of one render against one context, in one crossing, by the kernel's truthiness. */\n evaluateGuards(context: EvalContextWire, guards: readonly SExpr[]): GuardOutcomeWire[];\n evaluateGuard(context: EvalContextWire, guard: SExpr): GuardOutcomeWire;\n /** One expression with every node's entry, value and exit by structural path. */\n evaluateTraced(context: EvalContextWire, expression: SExpr): EvalTracedWire;\n /** Effects run in order against the context's row: a trace per effect, the events raised, the writes made and the row after them. */\n traceEffects(context: EvalContextWire, effects: readonly SExpr[]): TraceEffectsWire;\n /** A listen route's `with { field: <expr> }` mapping applied to the source payload, in one crossing. */\n mapListenPayload(mapping: Readonly<Record<string, SExpr>>, payload: EventPayload): EventPayload;\n /** The rows that pass the declared `@read` policy and the call-site filter, under the bindings' viewer. */\n scopeRows<T extends EntityRow>(bindings: EvalContextWire, rows: readonly T[], policy: SExpr | undefined, filter: SExpr | undefined, entityType: string): T[];\n /** Whether `row` may undergo `operation` under the declared directive (no directive allows). */\n checkMutation(operation: MutationOpWire, bindings: EvalContextWire, row: EntityRow, policy: SExpr | undefined, entityType: string): MutationVerdictWire;\n /** What a `@user`/`@payload`/`@config`/`@now` term folds to for a row predicate. */\n resolveRowBinding(term: string, bindings: EvalContextWire): RowBindingWire;\n}\n\nconst optionalJson = (expr: SExpr | undefined): string => (expr === undefined ? '' : JSON.stringify(expr));\n\nexport function createKernelEvaluator(kernel: KernelEvaluatorExports): KernelEvaluator {\n const evaluateMany = (context: EvalContextWire, expressions: readonly SExpr[]): EvalOutcomeWire[] => {\n if (expressions.length === 0) return [];\n return JSON.parse(kernel.evaluateMany(JSON.stringify(context), JSON.stringify(expressions))) as EvalOutcomeWire[];\n };\n const evaluateGuards = (context: EvalContextWire, guards: readonly SExpr[]): GuardOutcomeWire[] => {\n if (guards.length === 0) return [];\n return JSON.parse(kernel.evaluateGuards(JSON.stringify(context), JSON.stringify(guards))) as GuardOutcomeWire[];\n };\n return {\n evaluateMany,\n resolveValues(context, values) {\n if (values.length === 0) return [];\n return JSON.parse(kernel.resolveValues(JSON.stringify(context), JSON.stringify(values))) as EvalOutcomeWire[];\n },\n evaluate(context, expression) {\n const outcome = evaluateMany(context, [expression])[0];\n if (outcome.kind === 'error') throw new KernelEvalError(outcome.message);\n return outcome.value;\n },\n evaluateGuards,\n evaluateGuard(context, guard) {\n return evaluateGuards(context, [guard])[0];\n },\n evaluateTraced(context, expression) {\n return JSON.parse(kernel.evaluateTraced(JSON.stringify(context), JSON.stringify(expression))) as EvalTracedWire;\n },\n traceEffects(context, effects) {\n return JSON.parse(kernel.traceEffects(JSON.stringify(context), JSON.stringify(effects))) as TraceEffectsWire;\n },\n mapListenPayload(mapping, payload) {\n return JSON.parse(kernel.mapListenPayload(JSON.stringify(mapping), JSON.stringify(payload))) as EventPayload;\n },\n scopeRows<T extends EntityRow>(bindings: EvalContextWire, rows: readonly T[], policy: SExpr | undefined, filter: SExpr | undefined, entityType: string): T[] {\n if (policy === undefined && filter === undefined) return [...rows];\n return JSON.parse(\n kernel.scopeRows(JSON.stringify(bindings), JSON.stringify(rows), optionalJson(policy), optionalJson(filter), entityType),\n ) as T[];\n },\n checkMutation(operation, bindings, row, policy, entityType) {\n return JSON.parse(\n kernel.checkMutationAccess(operation, JSON.stringify(bindings), JSON.stringify(row), optionalJson(policy), entityType),\n ) as MutationVerdictWire;\n },\n resolveRowBinding(term, bindings) {\n return JSON.parse(kernel.resolveRowBinding(term, JSON.stringify(bindings))) as RowBindingWire;\n },\n };\n}\n\nlet installed: KernelEvaluator | undefined;\n\n/** Install the evaluator over a loaded kernel; a later install replaces the earlier one. */\nexport function installKernelEvaluator(kernel: KernelEvaluatorExports): KernelEvaluator {\n installed = createKernelEvaluator(kernel);\n return installed;\n}\n\nexport function hasKernelEvaluator(): boolean {\n return installed !== undefined;\n}\n\n/** The installed evaluator; throws `KernelEvaluatorNotInstalledError` before the kernel is loaded. */\nexport function kernelEvaluator(): KernelEvaluator {\n if (installed === undefined) throw new KernelEvaluatorNotInstalledError();\n return installed;\n}\n\n/** The payload an `emit` raised, from the wire: an object is the event payload; any other value reports none. */\nexport function eventPayloadOf(value: JsonValue | undefined): EventPayload | undefined {\n return value !== undefined && value !== null && typeof value === 'object' && !Array.isArray(value) ? (value as EventPayload) : undefined;\n}\n\n/** What may cross into the kernel as a value: JSON, plus a date (sent as its ISO string) and an absent key. */\nexport type WireInput =\n | string\n | number\n | boolean\n | Date\n | null\n | undefined\n | readonly WireInput[]\n | { readonly [key: string]: WireInput };\n\n/** A value as it crosses into the kernel: a date is its ISO string and an absent key is not sent. */\nexport function toWireValue(value: WireInput): JsonValue {\n if (value === undefined || value === null) return null;\n if (value instanceof Date) return value.toISOString();\n if (Array.isArray(value)) return value.map(toWireValue);\n if (typeof value === 'object') {\n const out: JsonObject = {};\n for (const [key, item] of Object.entries(value)) {\n if (item !== undefined) out[key] = toWireValue(item);\n }\n return out;\n }\n return value;\n}\n\n/**\n * A listen entry's `payloadMapping` applied to the source payload by the kernel, in one crossing. No mapping, or no\n * payload, passes the payload through.\n */\nexport function applyListenMapping(\n payloadMapping: Readonly<Record<string, SExpr>> | undefined,\n payload: EventPayload | undefined,\n): EventPayload | undefined {\n if (!payloadMapping || !payload) return payload;\n return kernelEvaluator().mapListenPayload(payloadMapping, payload);\n}\n\n/** Kernel exports that call `load` on first use, once: a host pays for the kernel only when something evaluates. */\nexport function lazyKernelExports(load: () => KernelEvaluatorExports): KernelEvaluatorExports {\n let loaded: KernelEvaluatorExports | undefined;\n const kernel = (): KernelEvaluatorExports => (loaded ??= load());\n return {\n evaluateMany: (context, expressions) => kernel().evaluateMany(context, expressions),\n resolveValues: (context, values) => kernel().resolveValues(context, values),\n evaluateGuards: (context, guards) => kernel().evaluateGuards(context, guards),\n evaluateTraced: (context, expression) => kernel().evaluateTraced(context, expression),\n traceEffects: (context, effects) => kernel().traceEffects(context, effects),\n mapListenPayload: (mapping, payload) => kernel().mapListenPayload(mapping, payload),\n scopeRows: (bindings, rows, policy, filter, entityType) => kernel().scopeRows(bindings, rows, policy, filter, entityType),\n checkMutationAccess: (operation, bindings, row, policy, entityType) =>\n kernel().checkMutationAccess(operation, bindings, row, policy, entityType),\n resolveRowBinding: (term, bindings) => kernel().resolveRowBinding(term, bindings),\n };\n}\n","/**\n * Row-level entity access on the kernel's one owner (`orbital-core` `entity_access`).\n *\n * An access directive is a per-row predicate evaluated with `@entity` bound to the candidate row (the incoming\n * data for `@create`) and `@user` bound to the viewer. A predicate that fails to evaluate drops the row or\n * denies the mutation. The hosts that still run a persistence adapter call these in place of an evaluator of\n * their own; the kernel decides.\n *\n * @packageDocumentation\n */\n\nimport { kernelEvaluator, toWireValue } from './kernel-evaluator';\nimport type { EvalContextWire, MutationOpWire } from './generated/kernel-wire';\nimport type { EntityRow, EventPayload, RowBindingResult, SExpr, TraitConfigObject } from './types/index';\nimport type { UserContext } from './types/user';\n\n/** What every access check evaluates against. */\nexport interface AccessBindings {\n user?: UserContext;\n /** The dispatch's `now` stamp, so a time-based policy agrees with the dispatch's guards. */\n now?: number;\n payload?: EventPayload;\n /** The issuing trait's call-site config, so a policy or filter reading `@config.*` resolves it. */\n config?: TraitConfigObject;\n}\n\n/** The three directives checked against a row before it is written. */\nexport type MutationOp = MutationOpWire;\n\nfunction accessContext(bindings: AccessBindings): EvalContextWire {\n return {\n ...(bindings.user !== undefined ? { user: toWireValue(bindings.user) } : {}),\n ...(bindings.now !== undefined ? { now: bindings.now } : {}),\n ...(bindings.payload !== undefined ? { payload: toWireValue(bindings.payload) } : {}),\n ...(bindings.config !== undefined ? { config: toWireValue(bindings.config) } : {}),\n state: 'idle',\n };\n}\n\n/**\n * The one denial message. Three enforcement paths produce it identically, because a consumer distinguishing\n * \"denied\" from \"failed\" reads this string.\n */\nexport function accessDeniedMessage(op: MutationOp, entityType: string): string {\n return `@${op} denied: the declared access policy for '${entityType}' rejected this row`;\n}\n\n/**\n * Retain only the rows BOTH the declared `@read` policy and the call-site `filter:` accept: the policy can only\n * narrow what the call site sees. A no-op when neither is declared.\n */\nexport function applyRowAccess<T extends EntityRow>(\n rows: T[],\n policy: SExpr | undefined,\n filter: SExpr | undefined,\n bindings: AccessBindings,\n entityType = '',\n): T[] {\n return kernelEvaluator().scopeRows(accessContext(bindings), rows, policy, filter, entityType);\n}\n\n/**\n * Whether `row` may undergo `operation` under the declared directive: `row` is the incoming data for `create`, the\n * existing row for `update`/`delete`. No directive allows; a directive that fails to evaluate denies.\n */\nexport function checkMutationAccess(\n operation: MutationOp,\n row: EntityRow,\n policy: SExpr | undefined,\n bindings: AccessBindings,\n entityType = '',\n): boolean {\n if (policy === undefined) return true;\n return kernelEvaluator().checkMutation(operation, accessContext(bindings), row, policy, entityType).allowed;\n}\n\n/** What the store push-down driver needs from the kernel (`RowAccess` in `@almadar/db/pushdown`), bound to one dispatch. */\nexport interface RowAccessBundle {\n resolve(term: string): RowBindingResult;\n mayWrite(row: EntityRow, policy: SExpr | undefined): boolean;\n scope<T extends EntityRow>(rows: T[], policy: SExpr | undefined, filter: SExpr | undefined): T[];\n}\n\nexport function rowAccess(bindings: AccessBindings): RowAccessBundle {\n return {\n resolve: (term) => kernelEvaluator().resolveRowBinding(term, accessContext(bindings)),\n mayWrite: (row, policy) => checkMutationAccess('update', row, policy, bindings),\n scope: (rows, policy, filter) => applyRowAccess(rows, policy, filter, bindings),\n };\n}\n","/**\n * Schema Diffing & Protection\n *\n * Pure functions for comparing OrbitalSchema objects, detecting destructive changes,\n * and categorizing removals. No I/O — operates on in-memory schema objects.\n */\n\nimport type { OrbitalSchema } from './types/schema.js';\nimport type { OrbitalDefinition, PageRef } from './types/orbital.js';\nimport type { Trait, TraitRef } from './types/trait.js';\nimport type { Page } from './types/page.js';\n// EntityField used transitively through entity.fields\nimport type { State, Transition } from './types/state-machine.js';\nimport type { Effect } from './types/effect.js';\nimport type {\n SchemaChange,\n ChangeSetDocument,\n CategorizedRemovals,\n ChangesetValue,\n PageContentReduction,\n SemanticSchemaChange,\n} from './types/changeset.js';\nimport { isInlineTrait } from './types/trait.js';\nimport { isRoutePage, protocolName } from './types/page.js';\n\n// ============================================================================\n// Schema Diffing\n// ============================================================================\n\n/**\n * Diff two OrbitalSchema objects and produce a list of changes.\n * Compares orbitals, entities, traits, pages, services, and top-level fields.\n */\nexport function diffSchemas(\n before: OrbitalSchema,\n after: OrbitalSchema,\n): { changes: SchemaChange[] } {\n const changes: SchemaChange[] = [];\n let changeId = 0;\n const nextId = () => `change-${++changeId}`;\n\n // Compare top-level fields\n if (before.name !== after.name) {\n changes.push({\n id: nextId(),\n operation: 'modify',\n target: 'schema',\n path: ['name'],\n before: before.name,\n after: after.name,\n description: `Renamed schema from \"${before.name}\" to \"${after.name}\"`,\n });\n }\n\n if (before.description !== after.description) {\n changes.push({\n id: nextId(),\n operation: 'modify',\n target: 'schema',\n path: ['description'],\n before: before.description,\n after: after.description,\n description: `Modified schema description`,\n });\n }\n\n // Compare orbitals by name\n const beforeOrbitals = new Map(\n (before.orbitals || []).map((o, i) => [o.name, { orbital: o, index: i }]),\n );\n const afterOrbitals = new Map(\n (after.orbitals || []).map((o, i) => [o.name, { orbital: o, index: i }]),\n );\n\n // Detect removed orbitals\n for (const [name, { index }] of beforeOrbitals) {\n if (!afterOrbitals.has(name)) {\n changes.push({\n id: nextId(),\n operation: 'remove',\n target: 'orbital',\n path: ['orbitals', index],\n before: name,\n description: `Removed orbital: ${name}`,\n });\n }\n }\n\n // Detect added orbitals\n for (const [name, { index }] of afterOrbitals) {\n if (!beforeOrbitals.has(name)) {\n changes.push({\n id: nextId(),\n operation: 'add',\n target: 'orbital',\n path: ['orbitals', index],\n after: name,\n description: `Added orbital: ${name}`,\n });\n }\n }\n\n // Detect modified orbitals (deep compare via JSON)\n for (const [name, { orbital: afterOrbital, index }] of afterOrbitals) {\n const beforeEntry = beforeOrbitals.get(name);\n if (beforeEntry) {\n const beforeJson = JSON.stringify(beforeEntry.orbital);\n const afterJson = JSON.stringify(afterOrbital);\n if (beforeJson !== afterJson) {\n changes.push({\n id: nextId(),\n operation: 'modify',\n target: 'orbital',\n path: ['orbitals', index],\n description: `Modified orbital: ${name}`,\n });\n\n // Drill into entity changes\n const beforeEntity = beforeEntry.orbital.entity;\n const afterEntity = afterOrbital.entity;\n if (JSON.stringify(beforeEntity) !== JSON.stringify(afterEntity)) {\n const entityName =\n typeof afterEntity === 'string'\n ? afterEntity\n : afterEntity && typeof afterEntity === 'object' && 'name' in afterEntity\n ? (afterEntity as { name: string }).name\n : 'entity';\n changes.push({\n id: nextId(),\n operation: 'modify',\n target: 'entity',\n path: ['orbitals', index, 'entity'],\n description: `Modified entity: ${entityName}`,\n });\n }\n\n // Drill into trait changes\n const beforeTraits = beforeEntry.orbital.traits || [];\n const afterTraits = afterOrbital.traits || [];\n if (JSON.stringify(beforeTraits) !== JSON.stringify(afterTraits)) {\n changes.push({\n id: nextId(),\n operation: 'modify',\n target: 'traits',\n path: ['orbitals', index, 'traits'],\n description: `Modified traits in orbital: ${name}`,\n });\n }\n\n // Drill into page changes\n const beforePages = beforeEntry.orbital.pages || [];\n const afterPages = afterOrbital.pages || [];\n if (JSON.stringify(beforePages) !== JSON.stringify(afterPages)) {\n changes.push({\n id: nextId(),\n operation: 'modify',\n target: 'pages',\n path: ['orbitals', index, 'pages'],\n description: `Modified pages in orbital: ${name}`,\n });\n }\n }\n }\n }\n\n // Compare services\n const beforeServices = JSON.stringify(before.services || []);\n const afterServices = JSON.stringify(after.services || []);\n if (beforeServices !== afterServices) {\n changes.push({\n id: nextId(),\n operation: 'modify',\n target: 'services',\n path: ['services'],\n description: 'Modified services',\n });\n }\n\n return { changes };\n}\n\n// ============================================================================\n// Destructive Change Detection\n// ============================================================================\n\n/**\n * Check if a changeset contains any removals.\n */\nexport function isDestructiveChange(changeSet: { changes: SchemaChange[] }): boolean {\n return changeSet.changes.some((c) => c.operation === 'remove');\n}\n\n/**\n * Extract all removal operations from a changeset.\n */\nexport function getRemovals(changeSet: { changes: SchemaChange[] }): SchemaChange[] {\n return changeSet.changes.filter((c) => c.operation === 'remove');\n}\n\n/**\n * Categorize removals by severity.\n *\n * - Critical: orbitals, entities, states, pages (require confirmation)\n * - Standard: fields, actions, traits (auto-snapshotted)\n * - Minor: transitions, guards (tracked)\n */\nexport function categorizeRemovals(changeSet: {\n changes: SchemaChange[];\n}): CategorizedRemovals {\n const critical: SchemaChange[] = [];\n const standard: SchemaChange[] = [];\n const minor: SchemaChange[] = [];\n\n for (const change of changeSet.changes) {\n if (change.operation !== 'remove') continue;\n\n const target = change.target.toLowerCase();\n if (\n target === 'orbital' ||\n target === 'entity' ||\n target === 'state' ||\n target === 'page'\n ) {\n critical.push(change);\n } else if (\n target === 'field' ||\n target === 'action' ||\n target === 'trait' ||\n target === 'traits'\n ) {\n standard.push(change);\n } else {\n minor.push(change);\n }\n }\n\n return { critical, standard, minor, pageContentReductions: [] };\n}\n\n/**\n * Check if critical removals require explicit confirmation.\n */\nexport function requiresConfirmation(removals: CategorizedRemovals): boolean {\n return removals.critical.length > 0;\n}\n\n// ============================================================================\n// Page Content Reduction\n// ============================================================================\n\n/**\n * Detect implicit content reduction within pages.\n * Catches cases where a page 'modify' reduces components/actions/displays\n * without an explicit 'remove' operation.\n */\nexport function detectPageContentReduction(\n beforePages: unknown[],\n afterPages: unknown[],\n): PageContentReduction[] {\n const reductions: PageContentReduction[] = [];\n\n const getPageName = (p: unknown): string | null => {\n if (p && typeof p === 'object' && 'name' in p) {\n return (p as { name: string }).name;\n }\n return null;\n };\n\n const countContent = (\n page: unknown,\n ): { sections: number; actions: number } => {\n if (!page || typeof page !== 'object') return { sections: 0, actions: 0 };\n const p = page as { traits?: unknown[] };\n const traits = Array.isArray(p.traits) ? p.traits : [];\n return { sections: traits.length, actions: 0 };\n };\n\n // Build maps by name\n const beforeMap = new Map<string, unknown>();\n for (const p of beforePages) {\n const name = getPageName(p);\n if (name) beforeMap.set(name, p);\n }\n\n for (const afterPage of afterPages) {\n const name = getPageName(afterPage);\n if (!name) continue;\n const beforePage = beforeMap.get(name);\n if (!beforePage) continue;\n\n const beforeContent = countContent(beforePage);\n const afterContent = countContent(afterPage);\n\n const sectionsRemoved = beforeContent.sections - afterContent.sections;\n const actionsRemoved = beforeContent.actions - afterContent.actions;\n\n if (sectionsRemoved > 0 || actionsRemoved > 0) {\n reductions.push({\n pageName: name,\n componentsRemoved: sectionsRemoved,\n actionsRemoved,\n displaysRemoved: 0,\n before: beforeContent,\n after: afterContent,\n isSignificant: sectionsRemoved > 0,\n });\n }\n }\n\n return reductions;\n}\n\n/**\n * Check if page content reductions are significant.\n */\nexport function hasSignificantPageReduction(\n reductions: PageContentReduction[],\n): boolean {\n return reductions.some((r) => r.isSignificant);\n}\n\n// ============================================================================\n// Semantic Schema Diffing\n// ============================================================================\n\n/** Stable JSON comparison. */\nfunction jsonEqual(a: unknown, b: unknown): boolean {\n return JSON.stringify(a) === JSON.stringify(b);\n}\n\nfunction setsEqual(a: Set<string>, b: Set<string>): boolean {\n if (a.size !== b.size) return false;\n for (const item of a) {\n if (!b.has(item)) return false;\n }\n return true;\n}\n\n/** Every trait an orbital declares, keyed by its name (a composed trait without a `name` goes by its `ref`). */\nfunction namedTraitMap(refs: TraitRef[]): Map<string, TraitRef> {\n const map = new Map<string, TraitRef>();\n for (const r of refs) {\n const key = typeof r === 'string' ? r : isInlineTrait(r) ? r.name : (r.name ?? r.ref);\n map.set(key, r);\n }\n return map;\n}\n\n/** The atom a composed trait points at; `null` for an inline trait. */\nfunction composedSource(r: TraitRef): string | null {\n if (typeof r === 'string') return r;\n return isInlineTrait(r) ? null : r.ref;\n}\n\nfunction traitConfigOf(r: TraitRef): Trait['config'] | Exclude<TraitRef, string | Trait>['config'] {\n return typeof r === 'string' ? undefined : r.config;\n}\n\nfunction inlinePageMap(refs: PageRef[]): Map<string, Page> {\n const map = new Map<string, Page>();\n for (const r of refs) {\n if (typeof r === 'string') continue;\n if ('ref' in r && !('name' in r)) continue;\n const page = r as Page;\n if (!isRoutePage(page)) map.set(`${protocolName(page)}:${page.name}`, page);\n else if (page.path) map.set(page.path, page);\n }\n return map;\n}\n\nfunction isRenderUIEffect(effect: Effect): boolean {\n if (!Array.isArray(effect)) return false;\n return String(effect[0]) === 'render-ui' || String(effect[0]) === 'renderUI';\n}\n\nfunction tKey(t: Transition): string {\n return `${t.from ?? ''}+${t.event}`;\n}\n\nfunction diffSemanticTransitions(\n orbitalName: string, traitName: string,\n before: Transition[], after: Transition[],\n): SemanticSchemaChange[] {\n const changes: SemanticSchemaChange[] = [];\n const bMap = new Map(before.map(t => [tKey(t), t]));\n const aMap = new Map(after.map(t => [tKey(t), t]));\n\n for (const [key, aT] of aMap) {\n const bT = bMap.get(key);\n if (!bT) continue;\n\n if (!jsonEqual(bT.guard, aT.guard)) {\n changes.push({ kind: 'guard-changed', orbitalName, traitName, transitionEvent: aT.event });\n }\n\n if (!jsonEqual(bT.effects, aT.effects)) {\n const bEffects = bT.effects ?? [];\n const aEffects = aT.effects ?? [];\n const bRUI = bEffects.filter(isRenderUIEffect);\n const aRUI = aEffects.filter(isRenderUIEffect);\n\n if (bRUI.length !== aRUI.length || !jsonEqual(bRUI, aRUI)) {\n changes.push({ kind: 'render-ui-changed', orbitalName, traitName, transitionEvent: aT.event });\n } else {\n changes.push({ kind: 'effect-changed', orbitalName, traitName, transitionEvent: aT.event });\n }\n }\n }\n return changes;\n}\n\nfunction diffSemanticOrbital(\n name: string, before: OrbitalDefinition, after: OrbitalDefinition,\n): SemanticSchemaChange[] {\n const changes: SemanticSchemaChange[] = [];\n\n // Entity fields\n const bEntity = typeof before.entity === 'object' ? before.entity : null;\n const aEntity = typeof after.entity === 'object' ? after.entity : null;\n if (bEntity && aEntity) {\n if (!jsonEqual(bEntity.fields, aEntity.fields)) {\n changes.push({ kind: 'entity-fields-changed', orbitalName: name });\n }\n } else if (bEntity !== aEntity) {\n changes.push({ kind: 'entity-fields-changed', orbitalName: name });\n }\n\n // Traits — inline and composed (`ref`) alike, keyed by the name the orbital knows them by.\n const bTraits = namedTraitMap(before.traits ?? []);\n const aTraits = namedTraitMap(after.traits ?? []);\n\n for (const [tName] of aTraits) {\n if (!bTraits.has(tName)) changes.push({ kind: 'trait-added', orbitalName: name, traitName: tName });\n }\n for (const [tName] of bTraits) {\n if (!aTraits.has(tName)) changes.push({ kind: 'trait-removed', orbitalName: name, traitName: tName });\n }\n\n for (const [tName, aRef] of aTraits) {\n const bRef = bTraits.get(tName);\n if (bRef === undefined) continue;\n\n if (composedSource(bRef) !== composedSource(aRef)) {\n changes.push({ kind: 'trait-removed', orbitalName: name, traitName: tName });\n changes.push({ kind: 'trait-added', orbitalName: name, traitName: tName });\n continue;\n }\n if (!jsonEqual(traitConfigOf(bRef), traitConfigOf(aRef))) {\n changes.push({ kind: 'trait-config-changed', orbitalName: name, traitName: tName });\n }\n if (!isInlineTrait(bRef) || !isInlineTrait(aRef)) {\n if (typeof bRef !== 'string' && typeof aRef !== 'string'\n && (!jsonEqual(bRef.linkedEntity, aRef.linkedEntity) || !jsonEqual(bRef.events, aRef.events))) {\n changes.push({ kind: 'event-wiring-changed', orbitalName: name, traitName: tName });\n }\n continue;\n }\n const bTrait = bRef;\n const aTrait = aRef;\n\n const bSM = bTrait.stateMachine;\n const aSM = aTrait.stateMachine;\n\n if (!bSM && !aSM) continue;\n if (!bSM || !aSM) {\n changes.push({ kind: 'state-machine-changed', orbitalName: name, traitName: tName });\n continue;\n }\n\n const bStates = new Set((bSM.states ?? []).map((s: State) => s.name));\n const aStates = new Set((aSM.states ?? []).map((s: State) => s.name));\n if (!setsEqual(bStates, aStates)) {\n changes.push({ kind: 'state-machine-changed', orbitalName: name, traitName: tName });\n }\n\n const bTKeys = new Set((bSM.transitions ?? []).map(tKey));\n const aTKeys = new Set((aSM.transitions ?? []).map(tKey));\n if (!setsEqual(bTKeys, aTKeys)) {\n if (!changes.some(c => c.kind === 'state-machine-changed' && c.traitName === tName)) {\n changes.push({ kind: 'state-machine-changed', orbitalName: name, traitName: tName });\n }\n }\n\n changes.push(...diffSemanticTransitions(name, tName, bSM.transitions ?? [], aSM.transitions ?? []));\n\n if (!jsonEqual(bTrait.emits, aTrait.emits) || !jsonEqual(bTrait.listens, aTrait.listens)) {\n changes.push({ kind: 'event-wiring-changed', orbitalName: name, traitName: tName });\n }\n }\n\n if (!jsonEqual(before.theme, after.theme)) {\n changes.push({ kind: 'theme-changed', orbitalName: name });\n }\n\n // Pages\n const bPages = inlinePageMap(before.pages ?? []);\n const aPages = inlinePageMap(after.pages ?? []);\n const bPaths = new Set(bPages.keys());\n const aPaths = new Set(aPages.keys());\n\n if (!setsEqual(bPaths, aPaths)) {\n changes.push({ kind: 'page-changed', orbitalName: name });\n } else {\n for (const [path, aPage] of aPages) {\n if (!jsonEqual(bPages.get(path), aPage)) {\n changes.push({ kind: 'page-changed', orbitalName: name });\n break;\n }\n }\n }\n\n return changes;\n}\n\n/**\n * Semantic diff: what .orb CONCEPTS changed between two schema versions.\n *\n * Unlike `diffSchemas()` which produces operational CRUD changes for persistence,\n * this produces concept-level changes (guard-changed, render-ui-changed, etc.)\n * for canvas focus derivation, CLI narration, and selective re-verification.\n */\nexport function diffSchemaSemantics(\n before: OrbitalSchema,\n after: OrbitalSchema,\n): SemanticSchemaChange[] {\n const changes: SemanticSchemaChange[] = [];\n\n const bOrbitals = new Map<string, OrbitalDefinition>();\n for (const o of before.orbitals ?? []) {\n const orb = o as OrbitalDefinition;\n bOrbitals.set(orb.name, orb);\n }\n\n const aOrbitals = new Map<string, OrbitalDefinition>();\n for (const o of after.orbitals ?? []) {\n const orb = o as OrbitalDefinition;\n aOrbitals.set(orb.name, orb);\n }\n\n const added: string[] = [];\n for (const [name] of aOrbitals) {\n if (!bOrbitals.has(name)) {\n changes.push({ kind: 'orbital-added', orbitalName: name });\n added.push(name);\n }\n }\n for (const [name] of bOrbitals) {\n if (!aOrbitals.has(name)) {\n changes.push({ kind: 'orbital-removed', orbitalName: name });\n }\n }\n if (added.length > 1) {\n changes.push({ kind: 'behavior-composed', orbitalName: added[0] });\n }\n\n for (const [name, aOrb] of aOrbitals) {\n const bOrb = bOrbitals.get(name);\n if (bOrb) changes.push(...diffSemanticOrbital(name, bOrb, aOrb));\n }\n\n // An app-level theme or token change restyles every orbital.\n if (!jsonEqual(before.theme, after.theme) || !jsonEqual(before.designTokens, after.designTokens)) {\n for (const [name] of aOrbitals) {\n if (!changes.some((c) => c.kind === 'theme-changed' && c.orbitalName === name)) {\n changes.push({ kind: 'theme-changed', orbitalName: name });\n }\n }\n }\n\n return changes;\n}\n\n// ============================================================================\n// High-level Orbital Schema Diff (changeset envelope)\n// ============================================================================\n\n/**\n * Source label for a changeset. The persistence layer accepts the canonical\n * agent labels plus `skill-agent:<skill>`-style identifiers, so the type stays\n * open as a string.\n */\nexport type SchemaDiffSource =\n | 'requirements-agent'\n | 'builder-agent'\n | 'user'\n | 'auto-fix'\n | (string & {});\n\n/** Tracking granularity used when generating the diff. */\nexport type SchemaDiffMode = 'initial' | 'update';\n\n/** Author identification carried on the changeset envelope. */\nexport interface SchemaDiffAuthor {\n userId: string;\n name?: string;\n}\n\n/** Options that shape the resulting diff envelope. */\nexport interface SchemaDiffOptions {\n mode: SchemaDiffMode;\n author: SchemaDiffAuthor;\n source: SchemaDiffSource;\n}\n\n/** Per-change entry in the diff envelope. */\nexport interface SchemaDiffChange {\n operation: 'add' | 'modify' | 'remove' | 'rename' | 'merge' | 'set';\n path: string;\n value?: ChangesetValue;\n previousValue?: ChangesetValue;\n}\n\n/** Aggregate orbital/trait deltas surfaced by the diff. */\nexport interface SchemaDiffSummary {\n orbitalsAdded: string[];\n orbitalsRemoved: string[];\n orbitalsModified: string[];\n traitsAdded: string[];\n traitsModified: string[];\n traitsRemoved: string[];\n}\n\n/** Changeset envelope produced by `diffOrbitalSchemas`. */\nexport interface SchemaDiffChangeset {\n id: string;\n source: SchemaDiffSource;\n author: SchemaDiffAuthor;\n description: string;\n changes: SchemaDiffChange[];\n}\n\n/** Result of comparing two OrbitalSchema versions. */\nexport interface SchemaDiff {\n hasChanges: boolean;\n changeCount: number;\n changeset: SchemaDiffChangeset;\n summary: SchemaDiffSummary;\n}\n\n/**\n * Compare two `OrbitalSchema` versions and produce a changeset envelope.\n *\n * Higher-level companion to `diffSchemas`: where `diffSchemas` returns a flat\n * list of `SchemaChange` entries keyed by structural path, this returns the\n * envelope the persistence layer ships to Firestore (id, author, source,\n * summary buckets).\n *\n * Identifier generation: `changeset.id` is a deterministic `chg_<hex>` value\n * derived from the schema name + change count when `globalThis.crypto.randomUUID`\n * is unavailable; otherwise a UUID is used. Callers that need a stable id\n * across regenerations should supply one themselves.\n */\nexport function diffOrbitalSchemas(\n before: OrbitalSchema | null,\n after: OrbitalSchema,\n options: SchemaDiffOptions,\n): SchemaDiff {\n const summary: SchemaDiffSummary = {\n orbitalsAdded: [],\n orbitalsRemoved: [],\n orbitalsModified: [],\n traitsAdded: [],\n traitsModified: [],\n traitsRemoved: [],\n };\n const changes: SchemaDiffChange[] = [];\n\n if (!before) {\n for (const orbital of after.orbitals ?? []) {\n const orb = orbital as OrbitalDefinition;\n summary.orbitalsAdded.push(orb.name);\n changes.push({\n operation: 'add',\n path: `orbitals[${summary.orbitalsAdded.length - 1}]`,\n value: orb,\n });\n }\n } else {\n const beforeOrbitals = new Map<string, OrbitalDefinition>();\n for (const o of before.orbitals ?? []) {\n const orb = o as OrbitalDefinition;\n beforeOrbitals.set(orb.name, orb);\n }\n const afterOrbitals = new Map<string, OrbitalDefinition>();\n for (const o of after.orbitals ?? []) {\n const orb = o as OrbitalDefinition;\n afterOrbitals.set(orb.name, orb);\n }\n\n let idx = 0;\n for (const [name, orb] of afterOrbitals) {\n const prev = beforeOrbitals.get(name);\n if (!prev) {\n summary.orbitalsAdded.push(name);\n changes.push({\n operation: 'add',\n path: `orbitals[${idx}]`,\n value: orb,\n });\n } else if (JSON.stringify(prev) !== JSON.stringify(orb)) {\n summary.orbitalsModified.push(name);\n changes.push({\n operation: 'merge',\n path: `orbitals[${idx}]`,\n previousValue: prev,\n value: orb,\n });\n }\n idx++;\n }\n for (const [name, orb] of beforeOrbitals) {\n if (!afterOrbitals.has(name)) {\n summary.orbitalsRemoved.push(name);\n changes.push({\n operation: 'remove',\n path: `orbitals[${name}]`,\n previousValue: orb,\n });\n }\n }\n\n if (before.name !== after.name) {\n changes.push({\n operation: 'set',\n path: 'name',\n previousValue: before.name,\n value: after.name,\n });\n }\n if (before.version !== after.version) {\n changes.push({\n operation: 'set',\n path: 'version',\n previousValue: before.version,\n value: after.version,\n });\n }\n if (before.description !== after.description) {\n changes.push({\n operation: 'set',\n path: 'description',\n previousValue: before.description,\n value: after.description,\n });\n }\n if (before.summary !== after.summary) {\n changes.push({\n operation: 'set',\n path: 'summary',\n previousValue: before.summary,\n value: after.summary,\n });\n }\n }\n\n const hasChanges = changes.length > 0;\n const description = describeDiff(summary, options.mode, after.name);\n\n return {\n hasChanges,\n changeCount: changes.length,\n changeset: {\n id: generateChangesetId(after.name, changes.length),\n source: options.source,\n author: options.author,\n description,\n changes,\n },\n summary,\n };\n}\n\nfunction describeDiff(\n summary: SchemaDiffSummary,\n mode: SchemaDiffMode,\n schemaName: string,\n): string {\n const parts: string[] = [];\n if (summary.orbitalsAdded.length > 0) {\n parts.push(`+${summary.orbitalsAdded.length} orbital(s)`);\n }\n if (summary.orbitalsModified.length > 0) {\n parts.push(`~${summary.orbitalsModified.length} orbital(s)`);\n }\n if (summary.orbitalsRemoved.length > 0) {\n parts.push(`-${summary.orbitalsRemoved.length} orbital(s)`);\n }\n if (parts.length === 0) return 'No changes';\n return `${mode === 'initial' ? 'Initial' : 'Update'} ${schemaName}: ${parts.join(', ')}`;\n}\n\nfunction generateChangesetId(seed: string, count: number): string {\n const cryptoApi = (globalThis as { crypto?: { randomUUID?: () => string } }).crypto;\n if (cryptoApi?.randomUUID) return cryptoApi.randomUUID();\n let hash = 0;\n const source = `${seed}:${count}:${Date.now()}`;\n for (let i = 0; i < source.length; i++) {\n hash = (hash * 31 + source.charCodeAt(i)) | 0;\n }\n return `chg_${(hash >>> 0).toString(16)}_${count}`;\n}\n","/**\n * Orbital Summarization\n *\n * Deterministic orbital-to-orbital transformation:\n * full schema in → business skeleton out.\n *\n * Input: OrbitalSchema. Output: OrbitalSchema.\n * Same types — just stripped of implementation details.\n *\n * This module provides functions to extract the essential business structure\n * from a complete orbital schema, removing implementation details like\n * effects, guards, and visual styling while preserving the core entity,\n * trait, and page definitions.\n *\n * @packageDocumentation\n */\n\nimport type { OrbitalSchema } from './types/schema.js';\nimport type { OrbitalDefinition } from './types/orbital.js';\nimport { isEntityCall, isEntityReference, parseEntityRef } from './types/orbital.js';\nimport type { Entity } from './types/entity.js';\nimport type { EntityField } from './types/field.js';\nimport { isTypeVariableField } from './types/field.js';\nimport type { Trait } from './types/trait.js';\nimport { isInlineTrait } from './types/trait.js';\nimport type { Page } from './types/page.js';\nimport type { Transition, Event, State } from './types/state-machine.js';\n\n// ============================================================================\n// Workflow Type Detection\n// ============================================================================\n\n/**\n * Standard CRUD state names used for workflow classification.\n * @internal\n */\nconst CRUD_STATES = new Set(['browsing', 'creating', 'editing', 'viewing', 'deleting']);\n\n/**\n * Pattern for detecting wizard-style step states (step1, step2, etc).\n * @internal\n */\nconst STEP_PATTERN = /^step\\d+$/i;\n\n/**\n * Classify a workflow from its state machine states.\n *\n * - CRUD: 3+ states match {browsing, creating, editing, viewing, deleting}\n * - Wizard: 2+ states match /^step\\d+$/i, OR linear chain to terminal state\n * - Custom: everything else\n */\nexport function classifyWorkflow(states: State[]): 'crud' | 'wizard' | 'custom' {\n const names = states.map(s => s.name.toLowerCase());\n\n const crudMatch = names.filter(n => CRUD_STATES.has(n)).length;\n if (crudMatch >= 3) return 'crud';\n\n const stepCount = names.filter(n => STEP_PATTERN.test(n)).length;\n if (stepCount >= 2) return 'wizard';\n\n const hasTerminal = states.some(s => s.isTerminal || s.isFinal);\n const hasComplete = names.some(n =>\n n === 'complete' || n === 'completed' || n === 'done' || n === 'finished'\n );\n if ((hasTerminal || hasComplete) && states.length >= 4 && crudMatch <= 1) {\n return 'wizard';\n }\n\n return 'custom';\n}\n\n// ============================================================================\n// Entity Summarization\n// ============================================================================\n\n/**\n * Check if a field is a primary key.\n * @internal\n */\nfunction isPrimaryKey(field: EntityField): boolean {\n return field.primaryKey === true;\n}\n\n/**\n * Check if a field is a business field (not primary key, has business meaning).\n * @internal\n */\nfunction isBusinessField(field: EntityField): boolean {\n if (isPrimaryKey(field)) return false;\n if (field.type === 'enum' || field.type === 'relation') return true;\n if (field.required) return true;\n return false;\n}\n\n/**\n * Summarize an entity to its business-relevant fields.\n * @internal\n */\nfunction summarizeEntity(entity: Entity): Entity {\n const fields: EntityField[] = entity.fields.filter(isBusinessField).map(summarizeField);\n return {\n name: entity.name,\n collection: entity.collection,\n fields,\n };\n}\n\nfunction summarizeField(f: EntityField): EntityField {\n if (f.type === 'enum') {\n return {\n ...(f.name !== undefined ? { name: f.name } : {}),\n type: 'enum',\n values: f.values,\n ...(f.required ? { required: true } : {}),\n };\n }\n if (f.type === 'union') {\n return {\n ...(f.name !== undefined ? { name: f.name } : {}),\n type: 'union',\n values: f.values,\n ...(f.required ? { required: true } : {}),\n };\n }\n if (f.type === 'relation') {\n return {\n ...(f.name !== undefined ? { name: f.name } : {}),\n type: 'relation',\n relation: f.relation,\n ...(f.required ? { required: true } : {}),\n };\n }\n if (f.type === 'array') {\n return {\n ...(f.name !== undefined ? { name: f.name } : {}),\n type: 'array',\n items: f.items,\n ...(f.required ? { required: true } : {}),\n };\n }\n if (f.type === 'tuple') {\n return {\n ...(f.name !== undefined ? { name: f.name } : {}),\n type: 'tuple',\n properties: f.properties,\n ...(f.required ? { required: true } : {}),\n };\n }\n if (f.type === 'object') {\n return {\n ...(f.name !== undefined ? { name: f.name } : {}),\n type: 'object',\n ...(f.required ? { required: true } : {}),\n };\n }\n if (f.type === 'field') {\n return {\n ...(f.name !== undefined ? { name: f.name } : {}),\n type: 'field',\n ...(f.record !== undefined ? { record: f.record } : {}),\n ...(f.items !== undefined ? { items: summarizeField(f.items) } : {}),\n ...(f.required ? { required: true } : {}),\n };\n }\n if (isTypeVariableField(f)) {\n return {\n ...(f.name !== undefined ? { name: f.name } : {}),\n type: f.type,\n ...(f.required ? { required: true } : {}),\n };\n }\n return {\n ...(f.name !== undefined ? { name: f.name } : {}),\n type: f.type,\n ...(f.required ? { required: true } : {}),\n };\n}\n\n// ============================================================================\n// Transition Summarization\n// ============================================================================\n\n/**\n * Deduplicate transitions that are identical in (from, to, event).\n * Strips effects and guards.\n */\n/**\n * Deduplicate transitions that are identical in (from, to, event).\n * Strips effects and guards.\n * @internal\n */\nfunction summarizeTransitions(transitions: Transition[]): Transition[] {\n const seen = new Set<string>();\n const result: Transition[] = [];\n\n for (const t of transitions) {\n const key = `${t.from}::${t.to}::${t.event}`;\n if (!seen.has(key)) {\n seen.add(key);\n result.push({ from: t.from, to: t.to, event: t.event });\n }\n }\n\n return result;\n}\n\n// ============================================================================\n// Trait Summarization\n// ============================================================================\n\n/**\n * Summarize events to just their keys.\n * @internal\n */\nfunction summarizeEvents(events: Event[]): Event[] {\n return events.map(e => ({ key: e.key, name: e.key }));\n}\n\n/**\n * Summarize a trait to its essential structure.\n * @internal\n */\nfunction summarizeTrait(trait: Trait): Trait {\n const states = trait.stateMachine?.states ?? [];\n const events = trait.stateMachine?.events ?? [];\n const transitions = trait.stateMachine?.transitions ?? [];\n\n const result: Trait = { name: trait.name };\n if (trait.linkedEntity) result.linkedEntity = trait.linkedEntity;\n\n if (trait.stateMachine) {\n result.stateMachine = {\n states: states.map(s => {\n const st: State = { name: s.name };\n if (s.isInitial) st.isInitial = true;\n if (s.isTerminal) st.isTerminal = true;\n if (s.isFinal) st.isFinal = true;\n return st;\n }),\n events: summarizeEvents(events),\n transitions: summarizeTransitions(transitions),\n };\n }\n\n if (trait.emits && trait.emits.length > 0) {\n result.emits = trait.emits.map(e => ({\n event: e.event,\n ...(e.scope ? { scope: e.scope } : {}),\n }));\n }\n\n if (trait.listens && trait.listens.length > 0) {\n result.listens = trait.listens.map(l => ({\n event: l.event,\n triggers: l.triggers,\n ...(l.scope ? { scope: l.scope } : {}),\n }));\n }\n\n return result;\n}\n\n// ============================================================================\n// Page Summarization\n// ============================================================================\n\n/**\n * Summarize a page to its essential structure.\n * @internal\n */\nfunction summarizePage(page: Page): Page {\n const result: Page = { name: page.name, path: page.path };\n if (page.protocol !== undefined) result.protocol = page.protocol;\n if (page.address !== undefined) result.address = page.address;\n if (page.traits && page.traits.length > 0) {\n result.traits = page.traits.map(t => ({ ref: t.ref }));\n }\n return result;\n}\n\n// ============================================================================\n// Public API\n// ============================================================================\n\n/**\n * Summarize a single orbital into its business skeleton.\n *\n * OrbitalDefinition in → OrbitalDefinition out.\n * Strips effects, guards, payloads, theme, optional fields.\n * Deduplicates transitions on (from, to, event).\n */\nexport function summarizeOrbital(orbital: OrbitalDefinition): OrbitalDefinition {\n let entity: Entity;\n if (isEntityReference(orbital.entity)) {\n entity = { name: orbital.entity, fields: [] };\n } else if (isEntityCall(orbital.entity)) {\n // EntityCall (Phase F): synthesize a placeholder Entity from the call shape.\n // The full inlined entity is only available after the compiler's inline phase.\n const call = orbital.entity;\n const name = call.name ?? parseEntityRef(call.extends)?.alias ?? call.extends;\n entity = {\n name,\n fields: call.fields ?? [],\n ...(call.persistence ? { persistence: call.persistence } : {}),\n ...(call.collection ? { collection: call.collection } : {}),\n };\n } else {\n entity = summarizeEntity(orbital.entity);\n }\n\n const traits = orbital.traits.map(traitRef => {\n if (isInlineTrait(traitRef)) {\n return summarizeTrait(traitRef);\n }\n return traitRef;\n });\n\n const pages = orbital.pages\n .filter((p): p is Page => typeof p === 'object' && 'name' in p && !('ref' in p))\n .map(summarizePage);\n\n return { name: orbital.name, entity, traits, pages };\n}\n\n/**\n * Summarize an entire OrbitalSchema into a business skeleton.\n *\n * OrbitalSchema in → OrbitalSchema out.\n * Strips schema-level metadata (domainContext, design, designTokens, customPatterns).\n */\nexport function summarizeSchema(schema: OrbitalSchema): OrbitalSchema {\n return {\n name: schema.name,\n description: schema.description,\n version: schema.version,\n orbitals: schema.orbitals.map(summarizeOrbital),\n };\n}\n","/**\n * Declared inputs — the events a client outside the program (an API\n * caller, an agent acting as the user, an MCP client) may send a trait. Authored\n * as `listens { EVENT -> input { … } }`, lowered onto the trait's own\n * `stateMachine.events[]` entry as `input: true`. The one owner of that list:\n * hosts gate their input channel with it, and clients build their tool lists\n * from it. Mirrors `orbital-core/src/runtime/external_inputs.rs`.\n *\n * @packageDocumentation\n */\n\nimport type { OrbitalSchema } from '../types/schema.js';\nimport type { PayloadField } from '../types/state-machine.js';\nimport type { JsonSchema } from '../factory/types.js';\nimport type { EventPayload, EventPayloadValue } from '../types/expression.js';\nimport { mapEntityFieldType } from '../factory/params-schema.js';\nimport { isInlineTrait, splitEventAddress } from '../types/trait.js';\nimport { orbitalInlineEntities } from './entityAccess.js';\n\n/**\n * An event written with `listens` addressing (`EVENT`, `Trait.EVENT`,\n * `Orbital.Trait.EVENT`) as a value. A service contract param of this type is\n * checked by `orb validate` against the program's declared external inputs.\n */\nexport type EventAddress = string;\n\nexport interface ExternalInput {\n orbital: string;\n trait: string;\n event: string;\n payloadSchema: PayloadField[];\n description?: string;\n synonyms?: string;\n tier?: string;\n}\n\nexport function externalInputsOf(schema: OrbitalSchema): ExternalInput[] {\n const out: ExternalInput[] = [];\n for (const orbital of schema.orbitals ?? []) {\n for (const traitRef of orbital.traits ?? []) {\n if (!isInlineTrait(traitRef)) continue;\n for (const ev of traitRef.stateMachine?.events ?? []) {\n if (ev.input !== true) continue;\n out.push({\n orbital: orbital.name,\n trait: traitRef.name,\n event: ev.key,\n payloadSchema: ev.payloadSchema ?? [],\n ...(ev.description !== undefined ? { description: ev.description } : {}),\n ...(ev.synonyms !== undefined ? { synonyms: ev.synonyms } : {}),\n ...(ev.tier !== undefined ? { tier: ev.tier } : {}),\n });\n }\n }\n }\n return out;\n}\n\n/**\n * The entities a `call-service` provider acting as the caller may read: every\n * persisted entity, once, in schema order. Rows stay filtered by each entity's\n * `@read` policy at read time. Mirrors the compiled host's `ENTITY_READS`\n * (`orbital-shell-typescript` `orbital_route.rs`).\n */\nexport function readableEntitiesOf(schema: OrbitalSchema): string[] {\n const out: string[] = [];\n for (const orbital of schema.orbitals ?? []) {\n for (const entity of orbitalInlineEntities(orbital)) {\n if (entity.persistence === 'runtime' || out.includes(entity.name)) continue;\n out.push(entity.name);\n }\n }\n return out;\n}\n\nexport function findExternalInput(\n schema: OrbitalSchema,\n orbital: string,\n trait: string,\n event: string,\n): ExternalInput | undefined {\n return externalInputsOf(schema).find((i) => i.orbital === orbital && i.trait === trait && i.event === event);\n}\n\n/**\n * The declared input a `listens`-addressed event names, resolved from the\n * calling trait's position: `EVENT` is that trait's own, `Trait.EVENT` a trait\n * of its orbital, `Orbital.Trait.EVENT` any orbital. Mirrors the L2 rule in\n * `orbital-compiler` `config_type.rs` `EventRefIndex::check`.\n */\nexport function findInputByAddress(\n inputs: readonly ExternalInput[],\n address: string,\n caller: { orbital: string; trait: string },\n): ExternalInput | undefined {\n const { event, source } = splitEventAddress(address);\n if (source?.kind === 'any') return undefined;\n const orbital = source?.kind === 'orbital' ? source.orbital : caller.orbital;\n const trait = source === undefined ? caller.trait : source.trait;\n return inputs.find((i) => i.orbital === orbital && i.trait === trait && i.event === event);\n}\n\n/** A declared payload as the JSON Schema of one object — what a tool-calling model fills. */\nexport function payloadSchemaToJsonSchema(fields: readonly PayloadField[]): JsonSchema {\n const properties: { [key: string]: JsonSchema } = {};\n const required: string[] = [];\n for (const field of fields) {\n // An object that declares no keys can take no argument, so it is not offered.\n if (field.properties !== undefined && field.properties.length === 0 && field.type !== 'union') continue;\n properties[field.name] = payloadFieldToJsonSchema(field);\n if (field.required === true) required.push(field.name);\n }\n return {\n type: 'object',\n ...(fields.length > 0 ? { additionalProperties: false } : {}),\n properties,\n ...(required.length > 0 ? { required } : {}),\n };\n}\n\nfunction elementOf(type: string): { isArray: boolean; element: string } {\n const isArray = type.startsWith('[') && type.endsWith(']');\n return { isArray, element: isArray ? type.slice(1, -1) : type };\n}\n\nfunction payloadFieldToJsonSchema(field: PayloadField): JsonSchema {\n const { isArray, element } = elementOf(field.type);\n const base: JsonSchema =\n field.properties !== undefined\n ? payloadSchemaToJsonSchema(field.properties)\n : (() => {\n const t = mapEntityFieldType(element);\n return t === null ? {} : { type: t };\n })();\n const shape: JsonSchema = field.values !== undefined ? { ...base, enum: [...field.values] } : base;\n return isArray ? { type: 'array', items: shape } : shape;\n}\n\nfunction isPayloadObject(value: EventPayloadValue): value is EventPayload {\n return typeof value === 'object' && value !== null && !Array.isArray(value) && !(value instanceof Date);\n}\n\n/** One way a value misses its declared payload. */\nexport interface PayloadIssue {\n readonly path: string;\n readonly reason: 'missing' | 'unknown' | 'wrong-type' | 'not-one-of';\n readonly expected?: string;\n}\n\n/**\n * Check a value against a declared payload: required fields, primitive and container types,\n * closed value sets, declared object shapes (closed) at any depth. An object field without\n * declared properties stays open; a type with no JSON shape (`node`, an entity name) is not\n * checked beyond its container.\n */\nexport function payloadIssues(fields: readonly PayloadField[], value: EventPayloadValue): PayloadIssue[] {\n return objectIssues(fields, value, '');\n}\n\nfunction objectIssues(fields: readonly PayloadField[], value: EventPayloadValue, at: string): PayloadIssue[] {\n if (!isPayloadObject(value)) {\n return [{ path: at === '' ? '.' : at, reason: 'wrong-type', expected: 'object' }];\n }\n const join = (key: string): string => (at === '' ? key : `${at}.${key}`);\n const issues: PayloadIssue[] = [];\n for (const field of fields) {\n const v = value[field.name];\n if (v === undefined || v === null) {\n if (field.required === true) issues.push({ path: join(field.name), reason: 'missing' });\n continue;\n }\n issues.push(...fieldIssues(field, v, join(field.name)));\n }\n const declared = new Set(fields.map((f) => f.name));\n const allowed = fields.length > 0 ? fields.map((f) => f.name).join(' | ') : '(no keys)';\n for (const key of Object.keys(value)) {\n if (!declared.has(key)) issues.push({ path: join(key), reason: 'unknown', expected: allowed });\n }\n return issues;\n}\n\nfunction fieldIssues(field: PayloadField, value: EventPayloadValue, at: string): PayloadIssue[] {\n const { isArray, element } = elementOf(field.type);\n if (isArray || field.type === 'array') {\n if (!Array.isArray(value)) return [{ path: at, reason: 'wrong-type', expected: field.type }];\n return value.flatMap((item, i) => elementIssues(field, element, item, `${at}[${i}]`));\n }\n return elementIssues(field, element, value, at);\n}\n\nfunction elementIssues(field: PayloadField, element: string, value: EventPayloadValue, at: string): PayloadIssue[] {\n if (field.properties !== undefined && field.type !== 'union') return objectIssues(field.properties, value, at);\n if (field.type === 'union' && field.properties !== undefined) {\n const variants = field.properties;\n return variants.some((v) => elementIssues(v, elementOf(v.type).element, value, at).length === 0)\n ? []\n : [{ path: at, reason: 'wrong-type', expected: variants.map((v) => v.type).join(' | ') }];\n }\n const json = element === 'object' ? 'object' : mapEntityFieldType(element);\n const matches =\n json === null ||\n (json === 'object' && isPayloadObject(value)) ||\n (json === 'array' && Array.isArray(value)) ||\n (json === 'string' && (typeof value === 'string' || value instanceof Date)) ||\n (json === 'number' && typeof value === 'number') ||\n (json === 'integer' && typeof value === 'number' && Number.isInteger(value)) ||\n (json === 'boolean' && typeof value === 'boolean');\n if (!matches) return [{ path: at, reason: 'wrong-type', expected: element }];\n if (field.values !== undefined && (typeof value !== 'string' || !field.values.includes(value))) {\n return [{ path: at, reason: 'not-one-of', expected: field.values.join(' | ') }];\n }\n return [];\n}\n","/**\n * Declared inbound deliveries — the `/api/hooks/<name>` requests a program accepts from outside\n * (a provider's webhook). The app declares the names (`inbound: [\"google-calendar\"]`) and a trait\n * declares the handler (`listens { EVENT -> inbound \"name\" answers ANSWER { … } }`, lowered onto\n * its `stateMachine.events[]` entry as `inbound`). The host only carries bytes: it hands the\n * runtime `{headers, rawBody}` and writes back the answer the runtime returns (EXEC-INBOUND-1).\n * Mirrors `orbital-core/crates/base/src/inbound.rs`.\n *\n * @packageDocumentation\n */\n\nimport type { OrbitalSchema } from '../types/schema.js';\nimport { EventPayloadValueSchema, type EventPayload, type EventPayloadValue } from '../types/expression.js';\nimport { isInlineTrait } from '../types/trait.js';\n\nimport type { InboundVerification } from '../types/state-machine.js';\n\nexport type { InboundDeclaration, InboundVerification } from '../types/state-machine.js';\n\n/** One declared handler: the trait and event a hook name is delivered to, and the event that answers. */\nexport interface InboundRoute {\n name: string;\n orbital: string;\n trait: string;\n event: string;\n answer: string;\n verifies?: InboundVerification;\n}\n\n/** What a host carries of one request: its headers and its body text exactly as received. */\nexport interface InboundDelivery {\n headers: Readonly<Record<string, string | undefined>>;\n rawBody: string;\n}\n\n/** The HTTP answer the host writes: the status and the JSON text of the body. */\nexport interface InboundAnswer {\n status: number;\n body: string;\n stderr?: string;\n /** Response headers the answer declares; a terminal host reads `orb-run` (twin of the kernel's `InboundAnswer.headers`). */\n headers?: Record<string, string>;\n}\n\n/** The declared `headers` of an answer: absent or null is none, a map of strings is them, anything else is invalid. */\nfunction answerHeaders(value: EventPayloadValue | undefined): Record<string, string> | undefined | false {\n if (value === undefined || value === null) return undefined;\n if (typeof value !== 'object' || Array.isArray(value)) return false;\n const out: Record<string, string> = {};\n for (const [key, entry] of Object.entries(value)) {\n if (typeof entry !== 'string') return false;\n out[key] = entry;\n }\n return out;\n}\n\nexport function inboundRoutesOf(schema: OrbitalSchema): InboundRoute[] {\n const out: InboundRoute[] = [];\n for (const orbital of schema.orbitals ?? []) {\n for (const traitRef of orbital.traits ?? []) {\n if (!isInlineTrait(traitRef)) continue;\n for (const ev of traitRef.stateMachine?.events ?? []) {\n if (ev.inbound === undefined) continue;\n out.push({\n name: ev.inbound.name,\n orbital: orbital.name,\n trait: traitRef.name,\n event: ev.key,\n answer: ev.inbound.answers,\n ...(ev.inbound.verifies !== undefined ? { verifies: ev.inbound.verifies } : {}),\n });\n }\n }\n }\n return out;\n}\n\n/**\n * The handler for `name`: declared by the app's `inbound` list AND by exactly one trait. Anything\n * else is a hook the program does not serve.\n */\nexport function findInbound(schema: OrbitalSchema, name: string): InboundRoute | undefined {\n if (!(schema.inbound ?? []).includes(name)) return undefined;\n const routes = inboundRoutesOf(schema).filter((r) => r.name === name);\n return routes.length === 1 ? routes[0] : undefined;\n}\n\n/**\n * The trait that handles `event` as an inbound hook in `orbital`, when a client-facing route's\n * request names it (`trait` is the request's target trait, undefined when it names none). Such a\n * request is refused: only the hook intake delivers an inbound event.\n */\nexport function inboundOnlyTrait(schema: OrbitalSchema, orbital: string, trait: string | undefined, event: string): string | undefined {\n return inboundRoutesOf(schema).find((r) => r.orbital === orbital && r.event === event && (trait === undefined || trait === r.trait))?.trait;\n}\n\n/** The refusal message for an inbound-only event named on a client-facing route. */\nexport function inboundOnlyMessage(trait: string, event: string): string {\n return `${trait}.${event} is an inbound hook event: only /api/hooks/<name> delivers it`;\n}\n\nfunction errorBody(message: string): string {\n return JSON.stringify({ error: message });\n}\n\n/** The answer for a hook name the program does not serve. */\nexport function unknownHook(name: string): InboundAnswer {\n return { status: 404, body: errorBody(`Unknown hook provider: ${name}`) };\n}\n\n/** The answer for a route whose `verifies` names a credential the host holds no value for: nothing runs. */\nexport function credentialUnset(credential: string): InboundAnswer {\n return { status: 401, body: errorBody(`credential ${credential} is not set`) };\n}\n\n/** The answer for a delivery whose dispatch failed; the sender retries a 5xx. */\nexport function dispatchFailed(message: string): InboundAnswer {\n return { status: 500, body: errorBody(message) };\n}\n\nfunction parsedBody(rawBody: string): EventPayloadValue {\n try {\n const parsed = EventPayloadValueSchema.safeParse(JSON.parse(rawBody));\n return parsed.success ? parsed.data : null;\n } catch {\n return null;\n }\n}\n\n/** Equality in time that depends on the longer value only, never on where they differ. */\nexport function constantTimeEquals(a: string, b: string): boolean {\n const left = new TextEncoder().encode(a);\n const right = new TextEncoder().encode(b);\n let diff = left.length ^ right.length;\n for (let i = 0; i < Math.max(left.length, right.length); i += 1) diff |= (left[i] ?? 0) ^ (right[i] ?? 0);\n return diff === 0;\n}\n\n/**\n * The payload an inbound event is delivered with: `headers` (names lower-cased; a name given\n * twice joins its values with `, `), `rawBody` exactly as received, `body`, the parsed JSON of\n * `rawBody` or null when it is empty or not JSON, and, when the route declares `verifies`,\n * `verified`: the comparison of the named header with the credential's value, which stays out of\n * the payload. An unset or empty credential never verifies; the dispatcher refuses it first (`credentialUnset`).\n */\nexport function inboundPayload(route: InboundRoute, delivery: InboundDelivery, credential?: string | null): EventPayload {\n const headers: EventPayload = {};\n for (const [name, value] of Object.entries(delivery.headers)) {\n if (value === undefined) continue;\n const key = name.toLowerCase();\n const prev = headers[key];\n headers[key] = typeof prev === 'string' ? `${prev}, ${value}` : value;\n }\n const payload: EventPayload = { headers, body: parsedBody(delivery.rawBody), rawBody: delivery.rawBody };\n if (route.verifies !== undefined) {\n const seen = headers[route.verifies.header];\n payload.verified = credential === undefined || credential === null || credential === '' ? false : constantTimeEquals(typeof seen === 'string' ? seen : '', credential);\n }\n return payload;\n}\n\n/**\n * The answer a dispatch produced: the first emit of the route's answer event, whose payload is\n * `{ status, body, stderr? }`. With none, the first effect failure of the handler is the message; a\n * dispatch that neither answered nor failed is `inbound-unanswered`; a payload of another shape\n * is `inbound-answer-invalid`.\n */\nexport function inboundAnswerOf(\n route: InboundRoute,\n emitted: readonly { event: string; payload?: EventPayload }[],\n failure?: string,\n): InboundAnswer {\n const answer = emitted.find((e) => e.event === route.answer);\n if (answer === undefined) return dispatchFailed(failure ?? 'inbound-unanswered');\n const payload: EventPayload = answer.payload ?? {};\n const { status, body, stderr } = payload;\n const headers = answerHeaders(payload.headers);\n if (typeof status === 'number' && Number.isInteger(status) && status >= 100 && status <= 599 && typeof body === 'string' && (stderr === undefined || typeof stderr === 'string') && headers !== false) {\n return {\n status,\n body,\n ...(stderr === undefined ? {} : { stderr }),\n ...(headers === undefined ? {} : { headers }),\n };\n }\n return dispatchFailed('inbound-answer-invalid');\n}\n","import { isPageReference, isRoutePage, type OrbitalSchema, type Page } from './types/index.js';\n/**\n * Route matching — the one resolver from a concrete path to a declared page\n * pattern (`/appointments/:id`), shared by the UI router, the verifiers and\n * the expectation walker.\n *\n * @packageDocumentation\n */\n\n/**\n * Match a concrete path against a pattern with :param placeholders.\n * Returns null if no match, or the extracted params if match.\n *\n * @example\n * matchPath('/inspection/:id', '/inspection/123') // { id: '123' }\n * matchPath('/users/:userId/posts/:postId', '/users/42/posts/7') // { userId: '42', postId: '7' }\n * matchPath('/about', '/about') // {}\n * matchPath('/about', '/contact') // null\n */\nexport function matchPath(\n pattern: string,\n path: string\n): Record<string, string> | null {\n // Normalize paths - remove trailing slashes, ensure leading slash\n const normalizeSegment = (p: string) => {\n let normalized = p.trim();\n if (!normalized.startsWith('/')) normalized = '/' + normalized;\n if (normalized.length > 1 && normalized.endsWith('/')) {\n normalized = normalized.slice(0, -1);\n }\n return normalized;\n };\n\n const normalizedPattern = normalizeSegment(pattern);\n const normalizedPath = normalizeSegment(path);\n\n const patternParts = normalizedPattern.split('/').filter(Boolean);\n const pathParts = normalizedPath.split('/').filter(Boolean);\n\n // Must have same number of segments\n if (patternParts.length !== pathParts.length) {\n return null;\n }\n\n const params: Record<string, string> = {};\n\n for (let i = 0; i < patternParts.length; i++) {\n const patternPart = patternParts[i];\n const pathPart = pathParts[i];\n\n if (patternPart.startsWith(':')) {\n // This is a param - extract the name and value\n const paramName = patternPart.slice(1);\n params[paramName] = decodeURIComponent(pathPart);\n } else if (patternPart !== pathPart) {\n // Static segment doesn't match\n return null;\n }\n }\n\n return params;\n}\n\n/**\n * Order two route patterns most-specific-first: at the first segment where they\n * disagree in kind, a static segment outranks a `:param`. Patterns that agree in\n * kind everywhere tie, leaving declaration order to decide.\n *\n * Without this, `/listings/:id` declared before `/listings/moderation` swallows\n * its static sibling, because every `:param` matches any segment.\n */\nexport function comparePathSpecificity(a: string, b: string): number {\n const aParts = a.split('/').filter(Boolean);\n const bParts = b.split('/').filter(Boolean);\n const shared = Math.min(aParts.length, bParts.length);\n\n for (let i = 0; i < shared; i++) {\n const aParam = aParts[i].startsWith(':');\n const bParam = bParts[i].startsWith(':');\n if (aParam !== bParam) return aParam ? 1 : -1;\n }\n\n return 0;\n}\n\n/**\n * Match a concrete path against route-bearing candidates, most-specific first.\n * The single resolver every route lookup goes through — the candidate array is\n * never reordered in place, so callers keep their declaration-order semantics.\n */\nexport function matchPathAmong<T>(\n candidates: readonly T[],\n path: string,\n pathOf: (candidate: T) => string | undefined\n): { candidate: T; params: Record<string, string> } | null {\n // Rank only the patterns that match: across unrelated patterns the\n // comparator is not transitive, so a whole-list sort could leave\n // `/x/:id` ahead of its static sibling `/x/checkin`.\n let best: { candidate: T; params: Record<string, string>; pattern: string } | null = null;\n for (const candidate of candidates) {\n const pattern = pathOf(candidate);\n if (!pattern) continue;\n const params = matchPath(pattern, path);\n if (params === null) continue;\n if (best === null || comparePathSpecificity(pattern, best.pattern) < 0) {\n best = { candidate, params, pattern };\n }\n }\n\n return best === null ? null : { candidate: best.candidate, params: best.params };\n}\n\n/**\n * The page an app shows when no page matches its route: the first page the program marks `initial`,\n * else the first inline page of the first orbital that declares one. The runtime's navigation\n * default, runtime-verify's boot probe, the catalog and the behavior-value frame all read it.\n */\nexport function defaultPage(schema: OrbitalSchema): { page: Page; orbitalName: string } | null {\n let first: { page: Page; orbitalName: string } | null = null;\n for (const orbital of schema.orbitals) {\n for (const page of orbital.pages ?? []) {\n if (isPageReference(page) || !isRoutePage(page)) continue;\n if (page.isInitial === true) return { page, orbitalName: orbital.name };\n first ??= { page, orbitalName: orbital.name };\n }\n }\n return first;\n}\n\n/** A concrete path matches a route pattern: same segment count, each pattern segment a `:param` or equal. */\nexport function pathMatchesPattern(path: string, pattern: string): boolean {\n return matchPath(pattern, path) !== null;\n}\n","/**\n * Shared-entity frame merge.\n *\n * The DRY primitive both execution paths share: several traits bound to one\n * `[shared]` entity each contribute field writes per frame, and exactly one\n * render trait paints the merged result. Both the JS interpreter (`@almadar/runtime`/\n * `@almadar/ui`) and the generated TypeScript (Rust\n * `orbital-shell-typescript` codegen) fold writes through this same\n * function, so the two execution paths merge state identically.\n *\n * @packageDocumentation\n */\n\nimport type { EntityRow, FieldValue } from '../types/entity.js';\n\n/**\n * One field write a writer trait applies to the shared entity's running\n * scratch state within a frame.\n */\nexport interface EntityFieldWrite {\n readonly field: string;\n /** The frame's own value type (`EntityRow`'s): a writer may copy an absent field back. */\n readonly value: FieldValue | undefined;\n}\n\n/**\n * A shared-entity snapshot. Aliases the canonical `EntityRow` — the SAME\n * row shape every other entity-state surface in the codebase uses (guard\n * contexts, `traitFieldStatesRef`, `RuntimeEntityStore`) — so a shared\n * entity's snapshot needs no conversion at its boundaries.\n */\nexport type EntityFrameState = EntityRow;\n\n/**\n * Field-level fold of ordered writes onto the current entity state. A\n * later write to the same field overwrites an earlier one (ordered);\n * fields absent from `orderedWrites` are carried over verbatim rather than\n * the whole object being replaced, so disjoint writers never clobber each\n * other.\n */\nexport function mergeEntityFrame(\n current: EntityFrameState,\n orderedWrites: readonly EntityFieldWrite[],\n): EntityFrameState {\n if (orderedWrites.length === 0) return current;\n const next: EntityRow = { ...current };\n for (const write of orderedWrites) {\n next[write.field] = write.value;\n }\n return next;\n}\n\n/**\n * Resolves what a trait's `@entity` binding reads: a client-supplied\n * `frame` is UNTRUSTED (it travels on the wire as `EventRequest.fields`),\n * so it may only contribute keys on `allowedFrameKeys` (the entity's\n * `@intrinsic` fields) and never `id` — a real row column always wins over\n * the frame, and an explicit `id` argument wins over everything. Both\n * execution paths (the JS interpreter and the generated TS server) call\n * this so `@entity` layers identically: declared defaults < fetched row <\n * frame, with the row/id override on top.\n */\nexport function resolveEntityView(input: {\n readonly frame?: EntityRow;\n readonly row?: EntityRow | null;\n readonly id?: string;\n readonly allowedFrameKeys: readonly string[];\n}): EntityRow {\n const { frame, row, id, allowedFrameKeys } = input;\n const view: EntityRow = {};\n if (frame) {\n for (const key of allowedFrameKeys) {\n if (key === 'id') continue;\n if (Object.prototype.hasOwnProperty.call(frame, key)) {\n view[key] = frame[key];\n }\n }\n }\n Object.assign(view, row ?? {});\n if (id !== undefined) view.id = id;\n return view;\n}\n\n/**\n * Strips frame/view-state keys from a row before it reaches the store, so\n * an untrusted client frame (or scratch view state) never gets persisted.\n * Both persist paths call this on the way to their store write.\n */\nexport function omitFrameFields(row: EntityRow, frameKeys: readonly string[]): EntityRow {\n const next: EntityRow = { ...row };\n for (const key of frameKeys) {\n delete next[key];\n }\n return next;\n}\n","import type { Entity } from '../types/entity.js';\n\n/** The entity named `name` among a set of orbitals' own resolved entities. */\nexport function findEntityAmongOrbitals(\n entities: Iterable<Entity | undefined>,\n name: string,\n): Entity | undefined {\n for (const entity of entities) {\n if (entity?.name === name) return entity;\n }\n return undefined;\n}\n"]}
1
+ {"version":3,"sources":["../src/render-ui-edit.ts","../src/agent-trace-view.ts","../src/codec.ts","../src/embedded-trait-config.ts","../src/lib/get-nested-value.ts","../src/lib/theme-tone-colors.ts","../src/dependency-graph.ts","../src/kernel-row-access.ts","../src/diff.ts","../src/access/entityAccess.ts","../src/access/contract.ts","../src/route-match.ts","../src/shared-entity/merge.ts","../src/shared-entity/find-entity.ts"],"names":["hex","z"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * Render-UI structural editing — the single canonical pattern-tree navigator,\n * mutators, and overlay application. Promoted out of apps/builder so the studio\n * client, rabit's contextual-edit path, and the overlay replay share ONE\n * implementation (no shadow copies).\n *\n * Operates on the SERIALIZABLE structural pattern node — the resolved `.orb`\n * render-ui shape (`{ type, children, ...props }`, props are strings/numbers/\n * booleans/bindings/arrays). It never holds function-typed props: those exist\n * only in the React-component `AnyPatternConfig`, never in resolved IR. A node\n * to insert/swap is built as a structural literal and validated against the\n * pattern registry by the caller — `AnyPatternConfig` is never assigned in.\n */\n\nimport type { OrbitalDefinition, Trait, Effect } from './types/index.js';\nimport { renderUiEntriesOf } from './patterns/helpers/render-ui-pattern-types.js';\n\n// ----------------------------------------------------------------------------\n// Structural pattern node\n// ----------------------------------------------------------------------------\n\n/** A serializable value inside a render-ui pattern node. No functions. */\nexport type PatternValue =\n | string\n | number\n | boolean\n | Date\n | null\n | undefined\n | PatternNode\n | readonly PatternValue[];\n\n/**\n * One node in a render-ui pattern tree as it appears in resolved `.orb`. A\n * child is a nested node or a `@trait.X` embed (another trait's render).\n */\nexport interface PatternNode {\n type?: string;\n children?: Array<PatternNode | string>;\n [prop: string]: PatternValue | Array<PatternNode | string> | undefined;\n}\n\n// ----------------------------------------------------------------------------\n// EditFocus — a canvas selection resolved to an address in the resolved `.orb`\n// ----------------------------------------------------------------------------\n\nexport type EditFocusLevel =\n | 'node'\n | 'slot'\n | 'field'\n | 'effect'\n | 'trait'\n | 'page'\n | 'orbital';\n\n/** A pointed-at element. Plain data — constructible with or without a DOM. */\nexport interface EditFocus {\n level: EditFocusLevel;\n orbital: string;\n trait?: string;\n transition?: string;\n state?: string;\n slot?: string;\n path?: string;\n patternType?: string;\n entity?: string;\n source?: string;\n label: string;\n}\n\n// ----------------------------------------------------------------------------\n// RenderUiPatch — a structural render-ui edit, replayed after factory expansion\n// ----------------------------------------------------------------------------\n\nexport type RenderUiPatchOp = 'replace' | 'insert' | 'remove' | 'set-prop' | 'rebind';\n\nexport interface RenderUiPatchAddress {\n trait: string;\n transition: string;\n state?: string;\n slot: string;\n /** patternPath, e.g. `root.children.2`. For `insert`, the PARENT path. */\n path: string;\n}\n\nexport interface RenderUiPatch {\n op: RenderUiPatchOp;\n address: RenderUiPatchAddress;\n /** Structural fingerprint of the pre-edit node, used to re-anchor the patch\n * if a later factory rebuild shifts `address.path`. */\n fingerprint?: string;\n /** For `replace` / `insert`: the concrete node to place. */\n node?: PatternNode;\n /** For `insert`: index within the parent's children (default: append). */\n index?: number;\n /** For `set-prop` / `rebind`: the prop key. */\n prop?: string;\n /** For `set-prop`: the new value. For `rebind`: pass the binding via `value`. */\n value?: PatternValue;\n}\n\n// ----------------------------------------------------------------------------\n// Pure node primitives\n// ----------------------------------------------------------------------------\n\n/** The children array of a node: `children`, or `props.children` (the nested form some IR passes emit). */\nfunction childrenOf(node: PatternNode): Array<PatternNode | string> | null {\n if (Array.isArray(node.children)) return node.children;\n const props = node.props;\n if (props && typeof props === 'object' && !Array.isArray(props) && !(props instanceof Date)) {\n const nested = (props as PatternNode).children;\n if (Array.isArray(nested)) return nested;\n }\n return null;\n}\n\n/**\n * Navigate a path as the renderer emits it (`root`, `root.children.0`,\n * `root.children.1.children.0`) to a node. The leading `root` is a label, not\n * a key; a path without it is accepted too.\n */\nexport function navigatePatternPath(root: PatternNode, path: string): PatternNode | null {\n if (!path || path === 'root') return root;\n const parts = (path.startsWith('root.') ? path.slice('root.'.length) : path).split('.');\n let current: PatternNode | Array<PatternNode | string> | null = root;\n for (const part of parts) {\n if (current === null) return null;\n if (Array.isArray(current)) {\n const idx = Number.parseInt(part, 10);\n if (Number.isNaN(idx) || idx < 0 || idx >= current.length) return null;\n const item: PatternNode | string | undefined = current[idx];\n current = item && typeof item === 'object' && !Array.isArray(item) ? item : null;\n } else if (part === 'children') {\n current = childrenOf(current);\n } else {\n const value: PatternValue | PatternNode[] | undefined = current[part];\n current = value && typeof value === 'object' && !Array.isArray(value) && !(value instanceof Date) ? (value as PatternNode) : null;\n }\n }\n return Array.isArray(current) ? null : current;\n}\n\n/** `<parent>.children.<i>` → the parent's path and the index; null for anything else. */\nexport function splitPatternChildPath(path: string): { parentPath: string; index: number } | null {\n const match = /^(.*)\\.children\\.(\\d+)$/.exec(path) ?? /^children\\.(\\d+)$/.exec(path);\n if (!match) return null;\n if (match.length === 2) return { parentPath: 'root', index: Number.parseInt(match[1], 10) };\n return { parentPath: match[1], index: Number.parseInt(match[2], 10) };\n}\n\n/** Set a prop on the node at `path`. Returns false if the path misses. */\nexport function setPropAtPath(\n root: PatternNode,\n path: string,\n prop: string,\n value: PatternValue,\n): boolean {\n const node = navigatePatternPath(root, path);\n if (!node) return false;\n node[prop] = value;\n return true;\n}\n\n/** Replace the node at a child path (`<parent>.children.<i>`) with `node`. */\nexport function replaceChildAtPath(root: PatternNode, path: string, node: PatternNode): boolean {\n const split = splitPatternChildPath(path);\n if (!split) return false;\n const parent = navigatePatternPath(root, split.parentPath);\n const children = parent ? childrenOf(parent) : null;\n if (!children || split.index >= children.length) return false;\n children[split.index] = node;\n return true;\n}\n\n/** Insert `node` into the parent's `children` at `index` (clamped to end). */\nexport function insertChildAtPath(\n root: PatternNode,\n parentPath: string,\n index: number,\n node: PatternNode,\n): boolean {\n const parent = navigatePatternPath(root, parentPath);\n if (!parent) return false;\n const children = childrenOf(parent) ?? [];\n const i = index < 0 || index > children.length ? children.length : index;\n children.splice(i, 0, node);\n if (!childrenOf(parent)) parent.children = children;\n return true;\n}\n\n/** Remove the node at a child path. */\nexport function removeChildAtPath(root: PatternNode, path: string): boolean {\n const split = splitPatternChildPath(path);\n if (!split) return false;\n const parent = navigatePatternPath(root, split.parentPath);\n const children = parent ? childrenOf(parent) : null;\n if (!children || split.index >= children.length) return false;\n children.splice(split.index, 1);\n return true;\n}\n\n/** Replace a node's contents in place (used to swap the render-ui root). */\nfunction replaceNodeInPlace(target: PatternNode, source: PatternNode): void {\n for (const key of Object.keys(target)) {\n delete target[key];\n }\n Object.assign(target, source);\n}\n\n// ----------------------------------------------------------------------------\n// Fingerprint (re-anchor)\n// ----------------------------------------------------------------------------\n\nfunction stableValue(value: PatternValue | PatternNode[] | undefined): string {\n if (value === undefined) return 'u';\n if (value === null) return 'n';\n if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') {\n return JSON.stringify(value);\n }\n if (value instanceof Date) return value.toISOString();\n if (Array.isArray(value)) return `[${value.map(stableValue).join(',')}]`;\n const nodeType = 'type' in value ? value.type : undefined;\n return `{${typeof nodeType === 'string' ? nodeType : ''}}`;\n}\n\n/** Deterministic structural fingerprint of a node (excludes child contents;\n * identifies the base node so a patch can re-anchor after a path shift). */\nexport function fingerprintNode(node: PatternNode): string {\n const props = Object.keys(node)\n .filter((k) => k !== 'children')\n .sort()\n .map((k) => `${k}=${stableValue(node[k])}`)\n .join(',');\n const childCount = Array.isArray(node.children) ? node.children.length : 0;\n return `t:${node.type ?? ''}|${props}|c:${childCount}`;\n}\n\nfunction findByFingerprint(node: PatternNode, path: string, fp: string): string | null {\n if (fingerprintNode(node) === fp) return path;\n if (Array.isArray(node.children)) {\n for (let i = 0; i < node.children.length; i++) {\n const child = node.children[i];\n if (typeof child === 'string') continue;\n const r = findByFingerprint(child, `${path}.children.${i}`, fp);\n if (r) return r;\n }\n }\n return null;\n}\n\n// ----------------------------------------------------------------------------\n// Overlay application\n// ----------------------------------------------------------------------------\n\nexport interface RenderOverlayResult {\n applied: number;\n /** Patches whose target node could not be resolved (path gone + fingerprint\n * unmatched). Surfaced as `patch_stale` — never silently dropped. */\n stale: RenderUiPatch[];\n}\n\n/** A render-ui effect's slot + root pattern node, validated from the canonical\n * `Effect` tuple. The `['render-ui', slot, config]` form carries the structural\n * pattern node at index 2 in resolved `.orb`; we narrow `Effect` by its tag and\n * validate the payload is a concrete node (not a `@binding` string or null). */\n\n/** Narrow a trait reference to an inline `Trait` (the only `TraitRef` member\n * with a `stateMachine`). No cast — `in` narrows the union. */\nfunction asInlineTrait(ref: OrbitalDefinition['traits'][number]): Trait | null {\n if (typeof ref === 'object' && ref !== null && 'stateMachine' in ref) {\n return ref;\n }\n return null;\n}\n\n/** Where a trait's render lives: the transition (by event, optionally its from-state) and the slot. */\nexport interface RenderRootAddress {\n transition: string;\n state?: string;\n slot: string;\n}\n\n/**\n * The render-ui root a trait paints for an address, including renders nested\n * in control forms (`when`/`if`). Prefers the exact transition; an empty\n * transition (a canvas selection with no provenance) takes the first render\n * into that slot.\n */\nexport function renderRootOf(trait: Trait, address: RenderRootAddress): PatternNode | null {\n const wantTransition = address.transition !== '';\n const wantState = address.state !== undefined && address.state !== '';\n let fallback: PatternNode | null = null;\n for (const t of trait.stateMachine?.transitions ?? []) {\n if (wantState && t.from !== address.state) continue;\n for (const entry of renderUiEntriesOf(t.effects ?? [])) {\n if (entry.slot !== address.slot) continue;\n const node = entry.pattern as PatternNode;\n if (wantTransition && t.event === address.transition) return node;\n if (!wantTransition) fallback ??= node;\n }\n }\n return fallback;\n}\n\n/** Find the render-ui root node for a patch address (see `renderRootOf`). */\nfunction findRenderUiRoot(\n orbital: OrbitalDefinition,\n address: RenderUiPatchAddress,\n): PatternNode | null {\n for (const ref of orbital.traits) {\n const trait = asInlineTrait(ref);\n if (trait && trait.name === address.trait) return renderRootOf(trait, address);\n }\n return null;\n}\n\n/** Resolve the effective path for a patch, re-anchoring by fingerprint. */\nfunction resolvePath(root: PatternNode, patch: RenderUiPatch): string | null {\n if (patch.op === 'insert') {\n return navigatePatternPath(root, patch.address.path) ? patch.address.path : null;\n }\n const atPath = navigatePatternPath(root, patch.address.path);\n if (atPath && (patch.fingerprint === undefined || fingerprintNode(atPath) === patch.fingerprint)) {\n return patch.address.path;\n }\n if (patch.fingerprint !== undefined) {\n return findByFingerprint(root, 'root', patch.fingerprint);\n }\n return null;\n}\n\nfunction applyOnePatch(orbital: OrbitalDefinition, patch: RenderUiPatch): boolean {\n const root = findRenderUiRoot(orbital, patch.address);\n if (!root) return false;\n const path = resolvePath(root, patch);\n if (path === null) return false;\n\n switch (patch.op) {\n case 'set-prop':\n case 'rebind':\n return patch.prop !== undefined && setPropAtPath(root, path, patch.prop, patch.value);\n case 'remove':\n return removeChildAtPath(root, path);\n case 'insert':\n return patch.node !== undefined\n && insertChildAtPath(root, path, patch.index ?? Number.MAX_SAFE_INTEGER, patch.node);\n case 'replace': {\n if (patch.node === undefined) return false;\n if (path === 'root') {\n const target = navigatePatternPath(root, 'root');\n if (!target) return false;\n replaceNodeInPlace(target, patch.node);\n return true;\n }\n return replaceChildAtPath(root, path, patch.node);\n }\n default:\n return false;\n }\n}\n\n/**\n * Replay render-ui patches onto a resolved orbital, in place. Deterministic:\n * given the same base + patches, produces the same tree. Patches that cannot be\n * anchored are returned in `stale` (never silently dropped or misapplied).\n */\nexport function applyRenderOverlay(\n orbital: OrbitalDefinition,\n patches: readonly RenderUiPatch[],\n): RenderOverlayResult {\n let applied = 0;\n const stale: RenderUiPatch[] = [];\n for (const patch of patches) {\n if (applyOnePatch(orbital, patch)) {\n applied += 1;\n } else {\n stale.push(patch);\n }\n }\n return { applied, stale };\n}\n","/**\n * Agent-trace view-model — the canonical render shapes for the studio's\n * agent-trace UI (ChatBar, SubagentTracePanel and their sub-components).\n *\n * Promoted out of apps/builder so the trace components can move into\n * `@almadar/ui` without depending on `@almadar-io/agent-trace`,\n * `@almadar-io/rabit`, or apps/builder-local hooks. These are pure\n * presentation shapes — what the components read, nothing the runtime\n * produces. Arbitrary tool payloads use core's `JsonValue` / `ToolArgs`\n * (see `./types/json`), never `unknown`.\n *\n * @packageDocumentation\n */\n\nimport { toPayloadValue, type JsonValue, type ToolArgs } from './types/json.js';\nimport type { SemanticChangeKind } from './types/changeset.js';\nimport type { LlmCallMeta } from './types/sse.js';\nimport { EventPayloadSchema, type EventPayload } from './types/expression.js';\n\n// ----------------------------------------------------------------------------\n// Shared leaf shapes\n// ----------------------------------------------------------------------------\n\n/** Which kind of tool an in-app assistant used: a declared input, an entity read, or a name it was not given. Absent for other agents' tools. */\nexport type AppToolKind = 'input' | 'read' | 'invalid';\n\n/** Conversational role rendered with an avatar/icon in the trace stream. */\nexport type TraceAvatarRole = 'user' | 'assistant' | 'system';\n\n/** File-mutation kind surfaced by a `file_operation` trace activity. */\nexport type TraceFileOperation = 'ls' | 'read_file' | 'write_file' | 'edit_file';\n\n/** A single line within a unified-diff hunk. */\nexport interface TraceDiffLine {\n type: 'add' | 'remove' | 'context';\n content: string;\n}\n\n/** A unified-diff hunk rendered by a `schema_diff` trace activity. */\nexport interface TraceDiffHunk {\n oldStart: number;\n oldLines: number;\n newStart: number;\n newLines: number;\n lines: TraceDiffLine[];\n}\n\n// ----------------------------------------------------------------------------\n// TraceActivity — the coordinator/page-level `Activity` discriminated union\n// ----------------------------------------------------------------------------\n\n/**\n * Page-level agent activity. Discriminated by `type`; each variant carries\n * only the fields the trace components read. Mirrors apps/builder's local\n * `Activity` union (useAgentChat.ts). Tool args are `ToolArgs`, tool results\n * are `JsonValue` — no `unknown`.\n */\nexport type TraceActivity =\n | { type: 'message'; role: TraceAvatarRole; content: string; timestamp: number; isStreaming?: boolean }\n /** The agent used a tool. `argsText` is the arguments exactly as the model wrote them. */\n | { type: 'tool_call'; tool: string; kind?: AppToolKind; argsText: string; timestamp: number; isExecuting?: boolean }\n /** What the tool answered: whether it took effect, why not, how many rows a read returned, and the full answer the model saw. */\n | { type: 'tool_result'; tool: string; kind?: AppToolKind; success: boolean; detail?: string; rows?: number; resultText: string; timestamp: number }\n | { type: 'file_operation'; operation: TraceFileOperation; path: string; success?: boolean; timestamp: number }\n | { type: 'schema_diff'; filePath: string; hunks: TraceDiffHunk[]; timestamp: number }\n | { type: 'error'; message: string; code?: string; timestamp: number }\n | { type: 'coordinator_decision'; organism: string; reason: string; priorOrganism: string | null; timestamp: number }\n | { type: 'plan_committed'; orbitals: string[]; timestamp: number }\n | { type: 'pending_question'; questionId: string; question: string; orbitalName?: string; timestamp: number }\n | {\n type: 'clarification_question';\n level: 'organism' | 'molecule' | 'atom_trait';\n scope: { orbitalName?: string; traitName?: string };\n question: string;\n candidates: Array<{\n id: string;\n label: string;\n description: string;\n whyThisFits: string;\n }>;\n skipDefault: string;\n timestamp: number;\n }\n | {\n type: 'analysis';\n organism: string;\n organismReason?: string;\n complexity?: { category: string; reasoning: string };\n renames: Array<{ from: string; to: string }>;\n deletes: string[];\n timestamp: number;\n }\n | { type: 'orbital_started'; orbitalName: string; timestamp: number }\n | { type: 'orbital_done'; orbitalName: string; traitCount?: number; transitionCount?: number; timestamp: number }\n | {\n type: 'schema_change';\n changeKind: SemanticChangeKind;\n orbitalName: string;\n traitName?: string;\n transitionEvent?: string;\n timestamp: number;\n }\n | { type: 'done'; orbitalCount: number; timestamp: number }\n | { type: 'cancelled'; message: string; timestamp: number }\n /** A raw LLM response, with the call that produced it when known. */\n | { type: 'llm_response'; content: string; llm?: LlmCallMeta; timestamp: number };\n\n/** Every `TraceActivity` type — the vocabulary a host picks an audience's view from. */\nexport const TRACE_ACTIVITY_TYPES = [\n 'message',\n 'tool_call',\n 'tool_result',\n 'file_operation',\n 'schema_diff',\n 'error',\n 'coordinator_decision',\n 'plan_committed',\n 'pending_question',\n 'clarification_question',\n 'analysis',\n 'orbital_started',\n 'orbital_done',\n 'schema_change',\n 'done',\n 'cancelled',\n 'llm_response',\n] as const satisfies ReadonlyArray<TraceActivity['type']>;\n\n/** Which activities one audience sees. */\nexport interface TraceActivityAudience {\n types: ReadonlyArray<TraceActivity['type']>;\n /** Message roles shown; omitted = every role. */\n messageRoles?: ReadonlyArray<TraceAvatarRole>;\n /** `schema_change` kinds shown; omitted = every kind. */\n schemaChangeKinds?: ReadonlyArray<SemanticChangeKind>;\n}\n\nexport function selectTraceActivities(\n activities: readonly TraceActivity[],\n audience: TraceActivityAudience,\n): TraceActivity[] {\n return activities.filter((activity) => {\n if (!audience.types.includes(activity.type)) return false;\n if (activity.type === 'message' && audience.messageRoles) return audience.messageRoles.includes(activity.role);\n if (activity.type === 'schema_change' && audience.schemaChangeKinds) {\n return audience.schemaChangeKinds.includes(activity.changeKind);\n }\n return true;\n });\n}\n\n/**\n * One activity as the payload a host delivers for a live step\n * (`ServiceHostPorts.message`): `{ activity }`. Absent optional fields are dropped.\n */\nexport function traceActivityPayload(activity: TraceActivity): EventPayload {\n return EventPayloadSchema.parse({ activity: toPayloadValue(activity) });\n}\n\n// ----------------------------------------------------------------------------\n// TraceActivityItem — the agent-trace `ActivityItem` render union\n// ----------------------------------------------------------------------------\n\n/**\n * Trace-stream activity item, the shape `InlineActivityRow` /\n * `InlineActivityStream` render. Mirrors `@almadar-io/agent-trace`'s\n * `ActivityItem`. Distinct from `TraceActivity`: `message.role` includes\n * `'tool'` and an optional `label`; it omits the coordinator/plan/question\n * variants. A tool's arguments and answer are text (`argsText`, `resultText`):\n * exactly what the agent sent and got back.\n */\nexport type TraceActivityItem =\n | {\n type: 'message';\n role: TraceAvatarRole | 'tool';\n content: string;\n timestamp: number;\n isStreaming?: boolean;\n label?: string;\n }\n | { type: 'tool_call'; tool: string; argsText: string; timestamp: number; isExecuting?: boolean }\n | { type: 'tool_result'; tool: string; resultText: string; success: boolean; timestamp: number; durationMs?: number }\n | { type: 'file_operation'; operation: TraceFileOperation; path: string; success?: boolean; timestamp: number }\n | { type: 'schema_diff'; filePath: string; hunks: TraceDiffHunk[]; timestamp: number }\n | { type: 'error'; message: string; code?: string; timestamp: number }\n | { type: 'milestone'; milestone: string; summary?: string; timestamp: number };\n\n// ----------------------------------------------------------------------------\n// TraceSubagent — the `SubagentState` panel model\n// ----------------------------------------------------------------------------\n\n/** One progress entry within a subagent's running log. */\nexport interface TraceSubagentMessage {\n message: string;\n tool?: string;\n timestamp: number;\n}\n\n/**\n * Live subagent state rendered by `SubagentRow` / `SubagentRichCard` /\n * `OrbitalGroup`. Mirrors apps/builder's `SubagentState`. `orbitalName` is\n * the canvas-focus filter key.\n */\nexport interface TraceSubagent {\n id: string;\n name: string;\n role: string;\n orbitalName?: string;\n parentId?: string;\n status: 'running' | 'complete' | 'error';\n task: string;\n messages: TraceSubagentMessage[];\n durationMs?: number;\n /** Full nested activity (tool calls, messages, milestones) for a rich\n * per-subagent detail view — additive, optional; `messages` remains the\n * flat progress-log shape for consumers that only need that. */\n timeline?: ReadonlyArray<TraceActivityItem>;\n}\n\n// ----------------------------------------------------------------------------\n// TraceChatMessage — the rabit tool-loop `ChatMessage` model\n// ----------------------------------------------------------------------------\n\n/** A tool call emitted by an assistant `TraceChatMessage`. */\nexport interface TraceChatMessageToolCall {\n id: string;\n name: string;\n /** Parsed JSON arguments (the LLM emits a JSON string; stored parsed). */\n args: ToolArgs;\n}\n\n/**\n * Canonical coordinator conversation message rendered by `ChatMessageRow` /\n * `CoordinatorConversation`. Mirrors rabit's tool-loop `ChatMessage`\n * (role/content/toolCalls/toolCallId/toolName/reasoningContent).\n */\nexport interface TraceChatMessage {\n role: 'system' | 'user' | 'assistant' | 'tool';\n content: string;\n /** Present on assistant messages that called tools. */\n toolCalls?: ReadonlyArray<TraceChatMessageToolCall>;\n /** Present on tool messages — matches the `id` of the corresponding tool_call. */\n toolCallId?: string;\n /** Tool name on tool messages (cosmetic — helps tracing). */\n toolName?: string;\n /** Thinking-mode chain-of-thought (DeepSeek), echoed back on tool round-trips. */\n reasoningContent?: string;\n}\n\n\nexport interface AgentTraceState {\n activities: TraceActivity[];\n subagents: TraceSubagent[];\n coordinatorMessages: TraceChatMessage[];\n status: 'idle' | 'running' | 'paused' | 'complete' | 'error';\n}\n","import { md5 } from '@noble/hashes/legacy.js';\n\nexport type DigestEncoding = 'hex' | 'base64';\n\nexport class CodecError extends Error {\n readonly reason: string;\n\n constructor(reason: string) {\n super(`Invalid argument: ${reason}`);\n this.name = 'CodecError';\n this.reason = reason;\n }\n}\n\nconst BASE64_ALPHABET = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\nconst UNRESERVED = /^[A-Za-z0-9\\-_.!~*'()]$/;\nconst HEX = '0123456789abcdef';\n\nfunction assertWellFormed(s: string): void {\n for (let i = 0; i < s.length; i++) {\n const c = s.charCodeAt(i);\n if (c >= 0xd800 && c <= 0xdbff) {\n const next = s.charCodeAt(i + 1);\n if (!(next >= 0xdc00 && next <= 0xdfff)) throw new CodecError('string contains an unpaired surrogate');\n i++;\n } else if (c >= 0xdc00 && c <= 0xdfff) {\n throw new CodecError('string contains an unpaired surrogate');\n }\n }\n}\n\nexport function utf8Bytes(s: string): Uint8Array {\n assertWellFormed(s);\n return new TextEncoder().encode(s);\n}\n\nexport function base64EncodeBytes(bytes: Uint8Array): string {\n let out = '';\n for (let i = 0; i < bytes.length; i += 3) {\n const b0 = bytes[i];\n const b1 = bytes[i + 1];\n const b2 = bytes[i + 2];\n out += BASE64_ALPHABET[b0 >> 2];\n out += BASE64_ALPHABET[((b0 & 3) << 4) | ((b1 ?? 0) >> 4)];\n out += b1 === undefined ? '=' : BASE64_ALPHABET[((b1 & 15) << 2) | ((b2 ?? 0) >> 6)];\n out += b2 === undefined ? '=' : BASE64_ALPHABET[b2 & 63];\n }\n return out;\n}\n\n/** Strict RFC 4648 standard alphabet: padded, canonical trailing bits, no whitespace. */\nexport function base64DecodeBytes(text: string): Uint8Array {\n if (text.length % 4 !== 0) throw new CodecError('base64 length must be a multiple of 4');\n const pad = text.endsWith('==') ? 2 : text.endsWith('=') ? 1 : 0;\n const body = text.length - pad;\n const bytes = new Uint8Array((text.length / 4) * 3 - pad);\n let n = 0;\n for (let i = 0; i < text.length; i += 4) {\n let acc = 0;\n let chars = 0;\n for (let j = 0; j < 4 && i + j < body; j++) {\n const v = BASE64_ALPHABET.indexOf(text[i + j]);\n if (v < 0) throw new CodecError(`base64 contains an invalid character at ${i + j}`);\n acc = (acc << 6) | v;\n chars++;\n }\n acc <<= 6 * (4 - chars);\n const produced = chars === 4 ? 3 : chars - 1;\n if ((acc & ((1 << (24 - 8 * produced)) - 1)) !== 0) {\n throw new CodecError('base64 has non-canonical trailing bits');\n }\n for (let k = 0; k < produced; k++) bytes[n++] = (acc >> (16 - 8 * k)) & 255;\n }\n return bytes;\n}\n\nfunction hex(bytes: Uint8Array): string {\n let out = '';\n for (const b of bytes) out += HEX[b >> 4] + HEX[b & 15];\n return out;\n}\n\nexport function encodeDigest(bytes: Uint8Array, encoding: DigestEncoding): string {\n return encoding === 'hex' ? hex(bytes) : base64EncodeBytes(bytes);\n}\n\nconst K = new Uint32Array([\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 rotr = (x: number, n: number): number => (x >>> n) | (x << (32 - n));\n\nexport function sha256Bytes(message: Uint8Array): Uint8Array {\n const h = new Uint32Array([\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19,\n ]);\n const padded = new Uint8Array(Math.ceil((message.length + 9) / 64) * 64);\n padded.set(message);\n padded[message.length] = 0x80;\n const view = new DataView(padded.buffer);\n view.setUint32(padded.length - 8, Math.floor(message.length / 0x20000000), false);\n view.setUint32(padded.length - 4, (message.length << 3) >>> 0, false);\n const w = new Uint32Array(64);\n for (let off = 0; off < padded.length; off += 64) {\n for (let i = 0; i < 16; i++) w[i] = view.getUint32(off + i * 4, false);\n for (let i = 16; i < 64; i++) {\n const s0 = rotr(w[i - 15], 7) ^ rotr(w[i - 15], 18) ^ (w[i - 15] >>> 3);\n const s1 = rotr(w[i - 2], 17) ^ rotr(w[i - 2], 19) ^ (w[i - 2] >>> 10);\n w[i] = (w[i - 16] + s0 + w[i - 7] + s1) | 0;\n }\n let [a, b, c, d, e, f, g, hh] = h;\n for (let i = 0; i < 64; i++) {\n const t1 = (hh + (rotr(e, 6) ^ rotr(e, 11) ^ rotr(e, 25)) + ((e & f) ^ (~e & g)) + K[i] + w[i]) | 0;\n const t2 = ((rotr(a, 2) ^ rotr(a, 13) ^ rotr(a, 22)) + ((a & b) ^ (a & c) ^ (b & c))) | 0;\n hh = g;\n g = f;\n f = e;\n e = (d + t1) | 0;\n d = c;\n c = b;\n b = a;\n a = (t1 + t2) | 0;\n }\n h[0] += a; h[1] += b; h[2] += c; h[3] += d; h[4] += e; h[5] += f; h[6] += g; h[7] += hh;\n }\n const out = new Uint8Array(32);\n const outView = new DataView(out.buffer);\n for (let i = 0; i < 8; i++) outView.setUint32(i * 4, h[i], false);\n return out;\n}\n\nexport function md5Bytes(message: Uint8Array): Uint8Array {\n return md5(message);\n}\n\nexport function hmacSha256Bytes(key: Uint8Array, data: Uint8Array): Uint8Array {\n const block = key.length > 64 ? sha256Bytes(key) : key;\n const ipad = new Uint8Array(64 + data.length);\n const opad = new Uint8Array(64 + 32);\n for (let i = 0; i < 64; i++) {\n const kb = i < block.length ? block[i] : 0;\n ipad[i] = kb ^ 0x36;\n opad[i] = kb ^ 0x5c;\n }\n ipad.set(data, 64);\n opad.set(sha256Bytes(ipad), 64);\n return sha256Bytes(opad);\n}\n\nexport function encodeUriComponent(s: string): string {\n let out = '';\n for (const ch of s) {\n if (UNRESERVED.test(ch)) {\n out += ch;\n } else {\n for (const b of utf8Bytes(ch)) out += `%${HEX[b >> 4].toUpperCase()}${HEX[b & 15].toUpperCase()}`;\n }\n }\n return out;\n}\n\nexport function decodeUriComponent(s: string): string {\n try {\n return decodeURIComponent(s);\n } catch {\n throw new CodecError('URI malformed');\n }\n}\n\nexport function encodeBase64(text: string): string {\n return base64EncodeBytes(utf8Bytes(text));\n}\n\nexport function decodeBase64(text: string): string {\n const bytes = base64DecodeBytes(text);\n try {\n return new TextDecoder('utf-8', { fatal: true }).decode(bytes);\n } catch {\n throw new CodecError('base64 does not decode to valid UTF-8');\n }\n}\n\nexport function hashSha256(text: string, encoding: DigestEncoding): string {\n const message = utf8Bytes(text);\n return encodeDigest(sha256Bytes(message), encoding);\n}\n\nexport function hmacSha256(key: string, message: string, encoding: DigestEncoding): string {\n const keyBytes = utf8Bytes(key);\n const messageBytes = utf8Bytes(message);\n return encodeDigest(hmacSha256Bytes(keyBytes, messageBytes), encoding);\n}\n\n/** MD5 of already-decoded bytes, supplied as standard padded base64. */\nexport function hashMd5(base64Bytes: string, encoding: DigestEncoding): string {\n return encodeDigest(md5Bytes(base64DecodeBytes(base64Bytes)), encoding);\n}\n","/**\n * Embedded-trait facts the render substrate (`@almadar/ui`) reads: which traits\n * embed which (`@trait.X`), which knobs a trait forwards (`@config.X`), and\n * which children read their embedder's `@callsitePayload`. Resolving a trait's\n * config is the kernel's (`traitConfig`), never done here.\n *\n * @packageDocumentation\n */\nimport type { ConfigFieldDeclaration, DeclaredTraitConfig, OrbitalDefinition, OrbitalSchema, RuntimeValue, SExpr, Trait, TraitConfig, TraitConfigValue, TraitRef } from './types/index.js';\nimport { isCallSiteConfigDeclaration } from './types/index.js';\n\nconst TRAIT_BINDING_PREFIX = '@trait.';\nconst CONFIG_FORWARD_RE = /^@config\\.([A-Za-z_][A-Za-z0-9_]*)$/;\n/**\n * Call-site payload capture grammar. Mirrors the Rust orbital-core\n * `CALLSITE_PAYLOAD_PREFIX` (`orbital-core/src/schema/types.rs`) — a\n * JSX-hoisted inline child trait's config value of this form is a snapshot\n * of the COMPOSING transition's triggering event payload, resolved against\n * the `callsitePayload` core binding root (`@almadar/evaluator`,\n * `@almadar/core`'s `CORE_BINDINGS`).\n */\nconst CALLSITE_PAYLOAD_PREFIX = '@callsitePayload.';\n\n/** True when any string leaf in `value`'s tree starts with `prefix`. Same\n * recursive shape as `collectTraitRefsFromValue`, generalized to a plain\n * prefix test instead of a name-collecting Set — no regex, no heuristics\n * on unrelated text. */\nfunction valueContainsPrefixedString(value: RuntimeValue, prefix: string): boolean {\n if (value === null || value === undefined) return false;\n if (typeof value === 'string') return value.startsWith(prefix);\n if (Array.isArray(value)) return value.some((item) => valueContainsPrefixedString(item, prefix));\n if (typeof value === 'object') {\n return Object.values(value as Record<string, RuntimeValue>).some((v) => valueContainsPrefixedString(v, prefix));\n }\n return false;\n}\n\nfunction collectTraitRefsFromValue(value: RuntimeValue, into: Set<string>): void {\n if (value === null || value === undefined) return;\n if (typeof value === 'string') {\n if (value.startsWith(TRAIT_BINDING_PREFIX)) {\n const rest = value.slice(TRAIT_BINDING_PREFIX.length);\n const dot = rest.indexOf('.');\n const traitName = dot === -1 ? rest : rest.slice(0, dot);\n if (traitName.length > 0) into.add(traitName);\n }\n return;\n }\n if (Array.isArray(value)) {\n for (const item of value) collectTraitRefsFromValue(item, into);\n return;\n }\n if (typeof value === 'object') {\n for (const v of Object.values(value as Record<string, RuntimeValue>)) {\n collectTraitRefsFromValue(v, into);\n }\n }\n}\n\nconst CONFIG_BINDING_PREFIX = '@config.';\n\nfunction collectConfigKeysFromValue(value: RuntimeValue, into: Set<string>): void {\n if (value === null || value === undefined) return;\n if (typeof value === 'string') {\n if (value.startsWith(CONFIG_BINDING_PREFIX)) {\n const key = value.slice(CONFIG_BINDING_PREFIX.length).split('.')[0];\n if (key.length > 0) into.add(key);\n }\n return;\n }\n if (Array.isArray(value)) {\n for (const item of value) collectConfigKeysFromValue(item, into);\n return;\n }\n if (typeof value === 'object') {\n for (const v of Object.values(value as Record<string, RuntimeValue>)) collectConfigKeysFromValue(v, into);\n }\n}\n\n/**\n * The `@trait.X` children some fired effects compose — directly, or through a\n * `@config.K` they render whose value (on `trait`) holds `@trait.X`.\n */\nexport function traitsEmbeddedByEffects(trait: Trait, effects: RuntimeValue): ReadonlySet<string> {\n const refs = new Set<string>();\n const configKeys = new Set<string>();\n collectTraitRefsFromValue(effects, refs);\n collectConfigKeysFromValue(effects, configKeys);\n const config = trait.config as Record<string, RuntimeValue> | undefined;\n if (config) for (const key of configKeys) collectTraitRefsFromValue(config[key] ?? null, refs);\n refs.delete(trait.name);\n return refs;\n}\n\n/**\n * The `@trait.X` children a trait's transitions on `eventKey` compose (see\n * {@link traitsEmbeddedByEffects}). Every arm of the event counts: which guarded\n * arm fires is decided at runtime.\n */\nexport function traitsEmbeddedByEvent(trait: Trait, eventKey: string): ReadonlySet<string> {\n const transitions = (trait.stateMachine as { transitions?: Array<{ event?: string; effects?: RuntimeValue }> } | undefined)?.transitions ?? [];\n const out = new Set<string>();\n for (const transition of transitions) {\n if (transition.event !== eventKey) continue;\n for (const child of traitsEmbeddedByEffects(trait, transition.effects ?? null)) out.add(child);\n }\n return out;\n}\n\n/** Resolve a `TraitRef` entry to its target `Trait` — unwraps the runtime\n * resolver's `{ ref, config, _resolved }` wrapper when present; otherwise\n * the entry is already a plain inline `Trait` (the compiled path's shape). */\nfunction targetTraitOf(traitRef: TraitRef): Trait | undefined {\n if (!traitRef || typeof traitRef !== 'object') return undefined;\n const resolved = (traitRef as TraitRef & { _resolved?: Trait })._resolved;\n return (resolved && typeof resolved === 'object') ? resolved : (traitRef as Trait);\n}\n\n/**\n * Per-orbital referrer → embedded-children adjacency: for every trait in the\n * orbital, the set of trait names it embeds via `@trait.X` (config OR state\n * machine — same scan as `collectEmbeddedTraitReferrers`, but keeping EVERY\n * edge instead of first-referrer-wins, and scoped to one orbital so\n * same-named traits in sibling orbitals never alias). This is the static\n * mirror of the client's page-binding pull (`OrbPreview.allPageTraits`):\n * page-declared traits plus this adjacency's transitive closure is the set\n * of traits that get a state machine on the client.\n */\nexport function collectTraitEmbedAdjacency(\n orbital: OrbitalDefinition,\n): ReadonlyMap<string, ReadonlySet<string>> {\n const out = new Map<string, ReadonlySet<string>>();\n const traits: TraitRef[] = orbital.traits;\n if (!Array.isArray(traits)) return out;\n for (const traitRef of traits) {\n const target = targetTraitOf(traitRef);\n if (!target) continue;\n const referrerName = target.name;\n if (typeof referrerName !== 'string' || referrerName.length === 0) continue;\n const refs = new Set<string>();\n if (target.config) collectTraitRefsFromValue(target.config, refs);\n const stateMachine = (target as { stateMachine?: SExpr }).stateMachine;\n if (stateMachine) collectTraitRefsFromValue(stateMachine, refs);\n refs.delete(referrerName);\n if (refs.size > 0) out.set(referrerName, refs);\n }\n return out;\n}\n\n/**\n * Config-slot-only sibling of `collectTraitEmbedAdjacency`: edges formed by\n * `@trait.X` references in trait CONFIG values (`contentTrait`, `idleContent`,\n * body-content trees) but NOT in state machines. This is the \"content\n * channel\" — which trait the page's composed tree designated as its content —\n * used by the wiring lint to distinguish a claimed content body from chrome\n * that merely renders into the same slot.\n */\nexport function collectTraitConfigRefAdjacency(\n orbital: OrbitalDefinition,\n): ReadonlyMap<string, ReadonlySet<string>> {\n const out = new Map<string, ReadonlySet<string>>();\n const traits: TraitRef[] = orbital.traits;\n if (!Array.isArray(traits)) return out;\n for (const traitRef of traits) {\n const target = targetTraitOf(traitRef);\n if (!target) continue;\n const referrerName = target.name;\n if (typeof referrerName !== 'string' || referrerName.length === 0) continue;\n if (!target.config) continue;\n const refs = new Set<string>();\n collectTraitRefsFromValue(target.config, refs);\n refs.delete(referrerName);\n if (refs.size > 0) out.set(referrerName, refs);\n }\n return out;\n}\n\n/**\n * True when a trait's own config declares at least one `@config.<key>` forward\n * — i.e. part of what it renders is decided by whoever embeds it, resolved by\n * {@link buildResolvedTraitConfigs} against that single referrer. A nested\n * token naming one of the trait's own knobs is the trait reading itself, not a\n * forward. Traits with no forward render identically regardless of embedder, which is what\n * separates an inert shared chrome trait (one `Divider` embedded from two\n * states) from a genuinely embedder-dependent one.\n */\nexport function traitDeclaresConfigForward(trait: Trait | undefined | null): boolean {\n const config = trait?.config;\n if (!config) return false;\n let found = false;\n const walk = (value: RuntimeValue): void => {\n if (found || value === null || value === undefined) return;\n if (typeof value === 'string') {\n const knob = CONFIG_FORWARD_RE.exec(value)?.[1];\n if (knob !== undefined && !(knob in config)) found = true;\n return;\n }\n if (Array.isArray(value)) {\n for (const item of value) walk(item);\n return;\n }\n if (typeof value === 'object') {\n for (const v of Object.values(value as Record<string, RuntimeValue>)) walk(v);\n }\n };\n for (const field of Object.values(config)) {\n const value = (field as { default?: SExpr })?.default;\n // A whole-default forward publishes the knob from the embedder, even under its own name.\n if (typeof value === 'string') {\n if (CONFIG_FORWARD_RE.test(value)) return true;\n continue;\n }\n walk(value);\n if (found) return true;\n }\n return false;\n}\n\n/**\n * True when `trait`'s own config (any nested value, including each field's\n * `.default`) or state machine literally contains a `@callsitePayload.<field>`\n * capture — the JSX-hoisted-child grammar. Scans both, mirroring\n * `collectTraitEmbedAdjacency`'s scan: a molecule can carry the capture in a\n * config default (`content: @callsitePayload.error`) or directly inside a\n * transition's `render-ui` effect args.\n *\n * Used by {@link collectCallsiteCaptureChildren} to find which embedded\n * children need their lifecycle transition re-run under their embedder's\n * payload whenever the embedder's own transition fires (`@almadar/runtime`'s\n * `OrbitalServerRuntime.executeEffects`, `@almadar/ui`'s\n * `useTraitStateMachine`).\n */\n/** A trait config (declared defaults merged with a call-site override) that reads `@callsitePayload`. */\nexport function configReferencesCallsitePayload(config: TraitConfig | undefined): boolean {\n return config !== undefined && valueContainsPrefixedString(config as RuntimeValue, CALLSITE_PAYLOAD_PREFIX);\n}\n\nexport function traitReferencesCallsitePayload(trait: Trait | undefined | null): boolean {\n if (!trait) return false;\n if (trait.config && valueContainsPrefixedString(trait.config as RuntimeValue, CALLSITE_PAYLOAD_PREFIX)) {\n return true;\n }\n const stateMachine = (trait as { stateMachine?: SExpr }).stateMachine;\n if (stateMachine && valueContainsPrefixedString(stateMachine, CALLSITE_PAYLOAD_PREFIX)) {\n return true;\n }\n return false;\n}\n\n/**\n * Per-orbital referrer → embedded-children adjacency, filtered down to\n * children whose subtree needs to be re-rendered under the referrer's\n * payload: a direct child that itself references `@callsitePayload` (see\n * {@link traitReferencesCallsitePayload}), OR a direct child that is a\n * pass-through to a capture-bearing descendant somewhere below it (a\n * grandchild's capture resolves UP the embed chain to the nearest host\n * transition that actually has a payload — mirrors\n * `orbital-compiler/src/phases/validation/binding.rs`'s\n * `validate_callsite_payload_captures`, which validates the same capture up\n * the embed chain on the compiled path).\n *\n * The caller re-renders level by level: after a trait's transition fires\n * with payload `P`, look up its direct children here, re-run each child's\n * lifecycle transition with `callsitePayload: P`, then recurse into that\n * child's own entry in this same map (still with `P`) for grandchildren —\n * so a non-capturing intermediate trait is walked through (to reach the\n * capturing descendant) without itself needing a payload-dependent redraw.\n */\nexport function collectCallsiteCaptureChildren(\n orbital: OrbitalDefinition,\n): ReadonlyMap<string, ReadonlySet<string>> {\n const adjacency = collectTraitEmbedAdjacency(orbital);\n const traitsByName = new Map<string, Trait>();\n const traits: TraitRef[] = orbital.traits;\n if (Array.isArray(traits)) {\n for (const traitRef of traits) {\n const target = targetTraitOf(traitRef);\n if (target?.name) traitsByName.set(target.name, target);\n }\n }\n\n // Memoized \"does this trait's own capture, or any descendant reachable\n // through `adjacency`, capture?\" — a cycle guard (`seen`) protects against\n // a malformed embed graph looping back on itself; embeds don't legitimately\n // cycle, so this is defensive, not load-bearing.\n const reachesCapture = new Map<string, boolean>();\n function traitReachesCapture(name: string, seen: Set<string>): boolean {\n const cached = reachesCapture.get(name);\n if (cached !== undefined) return cached;\n if (seen.has(name)) return false;\n seen.add(name);\n const trait = traitsByName.get(name);\n if (trait && traitReferencesCallsitePayload(trait)) {\n reachesCapture.set(name, true);\n return true;\n }\n const children = adjacency.get(name);\n if (children) {\n for (const child of children) {\n if (traitReachesCapture(child, seen)) {\n reachesCapture.set(name, true);\n return true;\n }\n }\n }\n reachesCapture.set(name, false);\n return false;\n }\n\n const out = new Map<string, ReadonlySet<string>>();\n for (const [referrer, children] of adjacency) {\n const keep = new Set<string>();\n for (const child of children) {\n if (traitReachesCapture(child, new Set())) keep.add(child);\n }\n if (keep.size > 0) out.set(referrer, keep);\n }\n return out;\n}\n\n/**\n * Every `@config.<knob>` token a declared config entry carries: its whole\n * `default`, any token nested in it (`metrics[].target`), and the provenance\n * of forwards a resolver already folded (`forwardedFrom`,\n * `nestedForwardedFrom`). Twin of `orbital_config.rs` `field_forward_tokens`.\n */\nexport function configForwardTokens(entry: ConfigFieldDeclaration): string[] {\n const tokens: string[] = [];\n const walk = (value: TraitConfigValue | undefined): void => {\n if (typeof value === 'string') {\n if (value.startsWith('@config.')) tokens.push(value);\n } else if (Array.isArray(value)) {\n for (const item of value) walk(item);\n } else if (value !== null && typeof value === 'object') {\n for (const item of Object.values(value)) walk(item);\n }\n };\n walk(entry.default);\n if (entry.forwardedFrom !== undefined) tokens.push(entry.forwardedFrom);\n tokens.push(...(entry.nestedForwardedFrom ?? []));\n return tokens;\n}\n\n/**\n * The organism-scope knobs `traits` forward: every declared call-site config\n * entry whose `default` or `forwardedFrom` is a bare `@config.<knob>`. An app\n * stored one `.orb` per orbital keeps exactly these knobs of the organism's\n * `config` in each file (an unforwarded one is `ORB_O_CONFIG_DEAD_KNOB`).\n */\nexport function collectForwardedConfigKeys(traits: ReadonlyArray<TraitRef>): ReadonlySet<string> {\n const forwarded = new Set<string>();\n for (const traitRef of traits) {\n const config = typeof traitRef === 'string' ? undefined : traitRef.config;\n if (!config) continue;\n for (const entry of Object.values(config)) {\n if (!isCallSiteConfigDeclaration(entry)) continue;\n for (const token of configForwardTokens(entry)) {\n const knob = CONFIG_FORWARD_RE.exec(token)?.[1];\n if (knob) forwarded.add(knob);\n }\n }\n }\n return forwarded;\n}\n\n/** The organism-scope knobs an orbital forwards: its traits' forwards plus its `uses` entries' config forwards (an import forwarding the app's config). */\nexport function collectOrbitalForwardedConfigKeys(orbital: Pick<OrbitalDefinition, 'traits' | 'uses'>): ReadonlySet<string> {\n const forwarded = new Set(collectForwardedConfigKeys(orbital.traits ?? []));\n for (const use of orbital.uses ?? []) {\n for (const entry of Object.values(use.config ?? {})) {\n for (const token of configForwardTokens(entry)) {\n const knob = CONFIG_FORWARD_RE.exec(token)?.[1];\n if (knob) forwarded.add(knob);\n }\n }\n }\n return forwarded;\n}\n\n/** `config` narrowed to `forwarded`; undefined when none of its knobs is forwarded. */\nexport function filterConfigToForwardedKeys(\n config: DeclaredTraitConfig,\n forwarded: ReadonlySet<string>,\n): DeclaredTraitConfig | undefined {\n const kept = Object.entries(config).filter(([key]) => forwarded.has(key));\n return kept.length > 0 ? Object.fromEntries(kept) : undefined;\n}\n\n/**\n * One orbital's own file: the orbital plus the organism `config` knobs its traits forward\n * (`@config.<knob>`), so the forward still resolves when the app's files are composed back\n * (the Rust composer unions them). The file shape the studio stores and rabit's per-orbital build writes.\n */\nexport function orbitalFileOf(schema: OrbitalSchema, orbital: OrbitalDefinition): OrbitalSchema {\n const config = schema.config !== undefined\n ? filterConfigToForwardedKeys(schema.config, collectOrbitalForwardedConfigKeys(orbital))\n : undefined;\n return { name: orbital.name, version: schema.version ?? '1.0.0', orbitals: [orbital], ...(config !== undefined ? { config } : {}) };\n}\n","/**\n * `getNestedValue` — safely retrieve a nested value from an object using a\n * dot-notation path (e.g. `\"company.address.city\"`).\n *\n * Single owner moved here from `@almadar/ui/lib/getNestedValue` (Stage B\n * B1-F): emitted SERVER code cannot import `@almadar/ui` (a render-substrate\n * package), so a helper server-side codegen needs — reading a listen\n * payload's mapped field, a template binding, a display column — has to\n * live in core. `@almadar/ui/lib` re-exports this symbol for its own\n * consumers.\n *\n * @packageDocumentation\n */\nimport type { EventPayload, EventPayloadValue, FieldValue } from '../types/index.js';\nimport type { UserContext } from '../types/user.js';\n\ntype NestedValueInput =\n | EventPayload\n | EventPayloadValue\n | FieldValue\n | Record<string, FieldValue | undefined>\n | UserContext\n | null\n | undefined;\n\n/**\n * Get a nested value from an object using a dot-notation path.\n *\n * Widened over the UI original to admit every shape a payload/field value\n * can hold (`EventPayload`, `EventPayloadValue`, `FieldValue`) — a `string`,\n * `number` or `Date` at any level bails to `undefined`; an array is indexed by a\n * numeric segment (`\"rows.0.name\"`), matching `object/get` in both evaluators.\n *\n * @example\n * const data = { company: { name: \"Acme Corp\", address: { city: \"NYC\" } } };\n * getNestedValue(data, \"company.name\"); // => \"Acme Corp\"\n * getNestedValue(data, \"company.address.city\"); // => \"NYC\"\n * getNestedValue(data, \"company.missing\"); // => undefined\n */\nexport function getNestedValue(obj: NestedValueInput, path: string): FieldValue | undefined {\n if (obj === null || obj === undefined || !path) return undefined;\n if (typeof obj !== 'object') return undefined;\n\n // Fast path: no dots means simple property access.\n if (!path.includes('.') && !Array.isArray(obj)) {\n return (obj as Record<string, FieldValue | undefined>)[path];\n }\n\n let value: NestedValueInput = obj;\n for (const part of path.split('.')) {\n if (value === null || value === undefined || typeof value !== 'object') return undefined;\n // An array is indexed by a numeric segment, as `object/get` does in both evaluators.\n if (Array.isArray(value)) {\n if (!/^\\d+$/.test(part)) return undefined;\n value = (value as readonly NestedValueInput[])[Number(part)];\n continue;\n }\n value = (value as Record<string, FieldValue | undefined>)[part];\n }\n\n return value as FieldValue | undefined;\n}\n","/**\n * Resolves drawing tones to a theme preset's colors and measures how far apart two colors look, so a\n * test can prove that the tones a simulation tells apart stay distinguishable in every theme.\n */\n\nimport { DIAGRAM_TONE_COLOR_KEYS, type DiagramTone } from '../types/canvas-theme.js';\nimport type { ThemeDefinition } from '../types/domain.js';\n\n/** Two marks closer than this (CIEDE2000) read as the same color. */\nexport const INDISTINCT_DELTA_E = 10;\n\nexport interface ThemeMode {\n /** `<theme>` for the base tokens, `<theme>:<variant>` for a variant. */\n id: string;\n colors: Readonly<Record<string, string>>;\n}\n\n/**\n * The base mode plus every variant, as the theme CSS emits them: a variant block carries only its own\n * colors (a key it omits falls back to the CSS defaults, not to the base). A base that declares no\n * colors is not a designed mode (it renders the app's default palette), so it is left out.\n */\nexport function themeModes(name: string, theme: ThemeDefinition): ThemeMode[] {\n const base = theme.tokens.colors ?? {};\n const modes: ThemeMode[] = Object.keys(base).length > 0 ? [{ id: name, colors: base }] : [];\n for (const [variant, v] of Object.entries(theme.variants ?? {})) modes.push({ id: `${name}:${variant}`, colors: v.colors ?? {} });\n return modes;\n}\n\n/** The mode's color for a tone, or undefined when the theme leaves it to the CSS defaults. */\nexport function toneColor(mode: ThemeMode, tone: DiagramTone): string | undefined {\n return mode.colors[DIAGRAM_TONE_COLOR_KEYS[tone]];\n}\n\nexport type Lab = readonly [number, number, number];\n\n/** sRGB hex (`#rgb`, `#rrggbb`, alpha ignored) to CIE L*a*b* (D65). Undefined for any other form. */\nexport function hexToLab(hex: string): Lab | undefined {\n const m = /^#([0-9a-f]{3}|[0-9a-f]{6}|[0-9a-f]{8})$/i.exec(hex.trim());\n if (!m) return undefined;\n const h = m[1].length === 3 ? m[1].split('').map((c) => c + c).join('') : m[1].slice(0, 6);\n const lin = (i: number) => {\n const c = parseInt(h.slice(i, i + 2), 16) / 255;\n return c <= 0.04045 ? c / 12.92 : ((c + 0.055) / 1.055) ** 2.4;\n };\n const [r, g, b] = [lin(0), lin(2), lin(4)];\n const f = (t: number) => (t > 216 / 24389 ? Math.cbrt(t) : (24389 / 27 * t + 16) / 116);\n const fx = f((0.4124564 * r + 0.3575761 * g + 0.1804375 * b) / 0.95047);\n const fy = f(0.2126729 * r + 0.7151522 * g + 0.072175 * b);\n const fz = f((0.0193339 * r + 0.119192 * g + 0.9503041 * b) / 1.08883);\n return [116 * fy - 16, 500 * (fx - fy), 200 * (fy - fz)];\n}\n\n/** CIEDE2000 color difference (Sharma, Wu & Dalal 2005). */\nexport function ciede2000(lab1: Lab, lab2: Lab): number {\n const [L1, a1, b1] = lab1;\n const [L2, a2, b2] = lab2;\n const rad = Math.PI / 180;\n const C1 = Math.hypot(a1, b1);\n const C2 = Math.hypot(a2, b2);\n const Cbar7 = ((C1 + C2) / 2) ** 7;\n const G = 0.5 * (1 - Math.sqrt(Cbar7 / (Cbar7 + 25 ** 7)));\n const a1p = (1 + G) * a1;\n const a2p = (1 + G) * a2;\n const C1p = Math.hypot(a1p, b1);\n const C2p = Math.hypot(a2p, b2);\n const hue = (b: number, a: number) => {\n if (a === 0 && b === 0) return 0;\n const h = Math.atan2(b, a) / rad;\n return h >= 0 ? h : h + 360;\n };\n const h1p = hue(b1, a1p);\n const h2p = hue(b2, a2p);\n const dLp = L2 - L1;\n const dCp = C2p - C1p;\n let dhp = 0;\n if (C1p * C2p !== 0) {\n dhp = h2p - h1p;\n if (dhp > 180) dhp -= 360;\n else if (dhp < -180) dhp += 360;\n }\n const dHp = 2 * Math.sqrt(C1p * C2p) * Math.sin((dhp / 2) * rad);\n const Lbarp = (L1 + L2) / 2;\n const Cbarp = (C1p + C2p) / 2;\n let hbarp = h1p + h2p;\n if (C1p * C2p !== 0) {\n if (Math.abs(h1p - h2p) <= 180) hbarp = (h1p + h2p) / 2;\n else hbarp = h1p + h2p < 360 ? (h1p + h2p + 360) / 2 : (h1p + h2p - 360) / 2;\n }\n const T =\n 1 -\n 0.17 * Math.cos((hbarp - 30) * rad) +\n 0.24 * Math.cos(2 * hbarp * rad) +\n 0.32 * Math.cos((3 * hbarp + 6) * rad) -\n 0.2 * Math.cos((4 * hbarp - 63) * rad);\n const dTheta = 30 * Math.exp(-(((hbarp - 275) / 25) ** 2));\n const Cbarp7 = Cbarp ** 7;\n const RC = 2 * Math.sqrt(Cbarp7 / (Cbarp7 + 25 ** 7));\n const SL = 1 + (0.015 * (Lbarp - 50) ** 2) / Math.sqrt(20 + (Lbarp - 50) ** 2);\n const SC = 1 + 0.045 * Cbarp;\n const SH = 1 + 0.015 * Cbarp * T;\n const RT = -Math.sin(2 * dTheta * rad) * RC;\n return Math.sqrt((dLp / SL) ** 2 + (dCp / SC) ** 2 + (dHp / SH) ** 2 + RT * (dCp / SC) * (dHp / SH));\n}\n\n/** CIEDE2000 between two hex colors; undefined when either is not a hex color. */\nexport function colorDifference(a: string, b: string): number | undefined {\n const la = hexToLab(a);\n const lb = hexToLab(b);\n return la && lb ? ciede2000(la, lb) : undefined;\n}\n","/**\n * An app's dependency graph, read from what its program records: each orbital's\n * `uses` imports, then every behavior they reach with its own imports, each placed\n * in its layer.\n *\n * @packageDocumentation\n */\n\nimport { z } from 'zod';\nimport type { OrbitalSchema } from './types/schema.js';\n\n/** Which package owns a behavior: the public substrate (`@almadar/std`), its realization (`@almadar-io/behaviors`), or neither registry. */\nexport type BehaviorTier = 'std' | 'io' | 'unknown';\n\n/** Where a behavior sits upstream of an app: an io realization, a std behavior, a std UI primitive (a registry `pattern` factory), or outside both registries. */\nexport type DependencyLayer = 'io' | 'std' | 'primitive' | 'unknown';\n\n/**\n * One `uses Alias from \"…\"` of an orbital, as its program records it: the behavior it\n * resolves to (the path's trailing name, as the compiler resolves it), that behavior's\n * tier, and the traits composed from it (`ref: \"<Alias>.traits.<T>\"`).\n */\nexport interface BehaviorImport {\n as: string;\n from: string;\n behavior: string;\n tier: BehaviorTier;\n traits: ReadonlyArray<{ name: string; ref: string }>;\n}\n\n/** Each orbital's direct imports, and every behavior reached with its layer and its own imports. */\nexport interface DependencyGraph {\n orbitals: Record<string, readonly string[]>;\n behaviors: Record<string, { layer: DependencyLayer; imports: readonly string[] }>;\n}\n\nexport const DependencyGraphSchema = z.object({\n orbitals: z.record(z.string(), z.array(z.string())),\n behaviors: z.record(z.string(), z.object({ layer: z.enum(['io', 'std', 'primitive', 'unknown']), imports: z.array(z.string()) })),\n}) satisfies z.ZodType<DependencyGraph>;\n\n/** How `dependencyGraphOf` reads the installed behaviors. */\nexport interface DependencyGraphDeps {\n tierOf: (name: string) => BehaviorTier;\n /** The behavior's own program, or null when none is installed. */\n orbOf: (name: string) => OrbitalSchema | null;\n /** The UI pattern a behavior is the factory of, if any. */\n patternOf: (name: string) => string | undefined;\n}\n\n/**\n * A program's imports as edges: each `uses {as, from}` resolved to its behavior by\n * the path's trailing name (the compiler's loader rule), that behavior's tier, and the\n * traits composed from it (`ref: \"<as>.traits.<T>\"`). Own traits carry no `ref`.\n */\nexport function importsOf(schema: OrbitalSchema, tierOf: (name: string) => BehaviorTier): BehaviorImport[] {\n return schema.orbitals.flatMap((orbital) =>\n (orbital.uses ?? []).map((use) => {\n const behavior = use.from.slice(use.from.lastIndexOf('/') + 1);\n const prefix = `${use.as}.traits.`;\n const traits = (orbital.traits ?? []).flatMap((t) =>\n typeof t === 'object' && 'ref' in t && t.ref.startsWith(prefix)\n ? [{ name: t.name ?? t.ref.slice(prefix.length), ref: t.ref }]\n : [],\n );\n return { as: use.as, from: use.from, behavior, tier: tierOf(behavior), traits };\n }),\n );\n}\n\n/**\n * Each orbital's direct imports, then every behavior reached, once, with its own\n * imports from its program and its layer: a `pattern` factory is a UI primitive,\n * otherwise its tier.\n */\nexport function dependencyGraphOf(schema: OrbitalSchema, deps: DependencyGraphDeps): DependencyGraph {\n const unique = (s: OrbitalSchema): string[] => [...new Set(importsOf(s, deps.tierOf).map((i) => i.behavior))];\n const orbitals = Object.fromEntries(schema.orbitals.map((o) => [o.name, unique({ ...schema, orbitals: [o] })]));\n const behaviors: Record<string, { layer: DependencyLayer; imports: readonly string[] }> = {};\n const queue = Object.values(orbitals).flat();\n while (queue.length > 0) {\n const name = queue.shift();\n if (name === undefined || behaviors[name]) continue;\n const orb = deps.orbOf(name);\n const imports = orb ? unique(orb) : [];\n behaviors[name] = { layer: deps.patternOf(name) !== undefined ? 'primitive' : deps.tierOf(name), imports };\n queue.push(...imports);\n }\n return { orbitals, behaviors };\n}\n","/**\n * Row-level entity access on the kernel's one owner (`orbital-core` `entity_access`).\n *\n * An access directive is a per-row predicate evaluated with `@entity` bound to the candidate row (the incoming\n * data for `@create`) and `@user` bound to the viewer. A predicate that fails to evaluate drops the row or\n * denies the mutation. The hosts that still run a persistence adapter call these in place of an evaluator of\n * their own; the kernel decides.\n *\n * @packageDocumentation\n */\n\nimport { kernelEvaluator, toWireValue } from './kernel-evaluator';\nimport type { EvalContextWire, MutationOpWire } from './generated/kernel-wire';\nimport type { EntityRow, EventPayload, RowBindingResult, SExpr, TraitConfigObject } from './types/index';\nimport type { UserContext } from './types/user';\n\n/** What every access check evaluates against. */\nexport interface AccessBindings {\n user?: UserContext;\n /** The dispatch's `now` stamp, so a time-based policy agrees with the dispatch's guards. */\n now?: number;\n payload?: EventPayload;\n /** The issuing trait's call-site config, so a policy or filter reading `@config.*` resolves it. */\n config?: TraitConfigObject;\n}\n\n/** The three directives checked against a row before it is written. */\nexport type MutationOp = MutationOpWire;\n\n/** The kernel's evaluation context for a viewer (and the dispatch facts a policy may read). */\nexport function accessContext(bindings: AccessBindings): EvalContextWire {\n return {\n ...(bindings.user !== undefined ? { user: toWireValue(bindings.user) } : {}),\n ...(bindings.now !== undefined ? { now: bindings.now } : {}),\n ...(bindings.payload !== undefined ? { payload: toWireValue(bindings.payload) } : {}),\n ...(bindings.config !== undefined ? { config: toWireValue(bindings.config) } : {}),\n state: 'idle',\n };\n}\n\n/**\n * The one denial message. Three enforcement paths produce it identically, because a consumer distinguishing\n * \"denied\" from \"failed\" reads this string.\n */\nexport function accessDeniedMessage(op: MutationOp, entityType: string): string {\n return `@${op} denied: the declared access policy for '${entityType}' rejected this row`;\n}\n\n/**\n * Retain only the rows BOTH the declared `@read` policy and the call-site `filter:` accept: the policy can only\n * narrow what the call site sees. A no-op when neither is declared.\n */\nexport function applyRowAccess<T extends EntityRow>(\n rows: T[],\n policy: SExpr | undefined,\n filter: SExpr | undefined,\n bindings: AccessBindings,\n entityType = '',\n): T[] {\n return kernelEvaluator().scopeRows(accessContext(bindings), rows, policy, filter, entityType);\n}\n\n/**\n * Whether `row` may undergo `operation` under the declared directive: `row` is the incoming data for `create`, the\n * existing row for `update`/`delete`. No directive allows; a directive that fails to evaluate denies.\n */\nexport function checkMutationAccess(\n operation: MutationOp,\n row: EntityRow,\n policy: SExpr | undefined,\n bindings: AccessBindings,\n entityType = '',\n): boolean {\n if (policy === undefined) return true;\n return kernelEvaluator().checkMutation(operation, accessContext(bindings), row, policy, entityType).allowed;\n}\n\n/** What the store push-down driver needs from the kernel (`RowAccess` in `@almadar/db/pushdown`), bound to one dispatch. */\nexport interface RowAccessBundle {\n resolve(term: string): RowBindingResult;\n mayWrite(row: EntityRow, policy: SExpr | undefined): boolean;\n scope<T extends EntityRow>(rows: T[], policy: SExpr | undefined, filter: SExpr | undefined): T[];\n}\n\nexport function rowAccess(bindings: AccessBindings): RowAccessBundle {\n return {\n resolve: (term) => kernelEvaluator().resolveRowBinding(term, accessContext(bindings)),\n mayWrite: (row, policy) => checkMutationAccess('update', row, policy, bindings),\n scope: (rows, policy, filter) => applyRowAccess(rows, policy, filter, bindings),\n };\n}\n","/**\n * Schema Diffing & Protection\n *\n * Pure functions for comparing OrbitalSchema objects, detecting destructive changes,\n * and categorizing removals. No I/O — operates on in-memory schema objects.\n */\n\nimport type { OrbitalSchema } from './types/schema.js';\nimport type { OrbitalDefinition, PageRef } from './types/orbital.js';\nimport type { Trait, TraitRef } from './types/trait.js';\nimport type { Page } from './types/page.js';\n// EntityField used transitively through entity.fields\nimport type { State, Transition } from './types/state-machine.js';\nimport type { Effect } from './types/effect.js';\nimport type {\n SchemaChange,\n ChangeSetDocument,\n CategorizedRemovals,\n ChangesetValue,\n PageContentReduction,\n SemanticSchemaChange,\n} from './types/changeset.js';\nimport { isInlineTrait } from './types/trait.js';\nimport { isRoutePage, protocolName } from './types/page.js';\n\n// ============================================================================\n// Schema Diffing\n// ============================================================================\n\n/**\n * Diff two OrbitalSchema objects and produce a list of changes.\n * Compares orbitals, entities, traits, pages, services, and top-level fields.\n */\nexport function diffSchemas(\n before: OrbitalSchema,\n after: OrbitalSchema,\n): { changes: SchemaChange[] } {\n const changes: SchemaChange[] = [];\n let changeId = 0;\n const nextId = () => `change-${++changeId}`;\n\n // Compare top-level fields\n if (before.name !== after.name) {\n changes.push({\n id: nextId(),\n operation: 'modify',\n target: 'schema',\n path: ['name'],\n before: before.name,\n after: after.name,\n description: `Renamed schema from \"${before.name}\" to \"${after.name}\"`,\n });\n }\n\n if (before.description !== after.description) {\n changes.push({\n id: nextId(),\n operation: 'modify',\n target: 'schema',\n path: ['description'],\n before: before.description,\n after: after.description,\n description: `Modified schema description`,\n });\n }\n\n // Compare orbitals by name\n const beforeOrbitals = new Map(\n (before.orbitals || []).map((o, i) => [o.name, { orbital: o, index: i }]),\n );\n const afterOrbitals = new Map(\n (after.orbitals || []).map((o, i) => [o.name, { orbital: o, index: i }]),\n );\n\n // Detect removed orbitals\n for (const [name, { index }] of beforeOrbitals) {\n if (!afterOrbitals.has(name)) {\n changes.push({\n id: nextId(),\n operation: 'remove',\n target: 'orbital',\n path: ['orbitals', index],\n before: name,\n description: `Removed orbital: ${name}`,\n });\n }\n }\n\n // Detect added orbitals\n for (const [name, { index }] of afterOrbitals) {\n if (!beforeOrbitals.has(name)) {\n changes.push({\n id: nextId(),\n operation: 'add',\n target: 'orbital',\n path: ['orbitals', index],\n after: name,\n description: `Added orbital: ${name}`,\n });\n }\n }\n\n // Detect modified orbitals (deep compare via JSON)\n for (const [name, { orbital: afterOrbital, index }] of afterOrbitals) {\n const beforeEntry = beforeOrbitals.get(name);\n if (beforeEntry) {\n const beforeJson = JSON.stringify(beforeEntry.orbital);\n const afterJson = JSON.stringify(afterOrbital);\n if (beforeJson !== afterJson) {\n changes.push({\n id: nextId(),\n operation: 'modify',\n target: 'orbital',\n path: ['orbitals', index],\n description: `Modified orbital: ${name}`,\n });\n\n // Drill into entity changes\n const beforeEntity = beforeEntry.orbital.entity;\n const afterEntity = afterOrbital.entity;\n if (JSON.stringify(beforeEntity) !== JSON.stringify(afterEntity)) {\n const entityName =\n typeof afterEntity === 'string'\n ? afterEntity\n : afterEntity && typeof afterEntity === 'object' && 'name' in afterEntity\n ? (afterEntity as { name: string }).name\n : 'entity';\n changes.push({\n id: nextId(),\n operation: 'modify',\n target: 'entity',\n path: ['orbitals', index, 'entity'],\n description: `Modified entity: ${entityName}`,\n });\n }\n\n // Drill into trait changes\n const beforeTraits = beforeEntry.orbital.traits || [];\n const afterTraits = afterOrbital.traits || [];\n if (JSON.stringify(beforeTraits) !== JSON.stringify(afterTraits)) {\n changes.push({\n id: nextId(),\n operation: 'modify',\n target: 'traits',\n path: ['orbitals', index, 'traits'],\n description: `Modified traits in orbital: ${name}`,\n });\n }\n\n // Drill into page changes\n const beforePages = beforeEntry.orbital.pages || [];\n const afterPages = afterOrbital.pages || [];\n if (JSON.stringify(beforePages) !== JSON.stringify(afterPages)) {\n changes.push({\n id: nextId(),\n operation: 'modify',\n target: 'pages',\n path: ['orbitals', index, 'pages'],\n description: `Modified pages in orbital: ${name}`,\n });\n }\n }\n }\n }\n\n // Compare services\n const beforeServices = JSON.stringify(before.services || []);\n const afterServices = JSON.stringify(after.services || []);\n if (beforeServices !== afterServices) {\n changes.push({\n id: nextId(),\n operation: 'modify',\n target: 'services',\n path: ['services'],\n description: 'Modified services',\n });\n }\n\n return { changes };\n}\n\n// ============================================================================\n// Destructive Change Detection\n// ============================================================================\n\n/**\n * Check if a changeset contains any removals.\n */\nexport function isDestructiveChange(changeSet: { changes: SchemaChange[] }): boolean {\n return changeSet.changes.some((c) => c.operation === 'remove');\n}\n\n/**\n * Extract all removal operations from a changeset.\n */\nexport function getRemovals(changeSet: { changes: SchemaChange[] }): SchemaChange[] {\n return changeSet.changes.filter((c) => c.operation === 'remove');\n}\n\n/**\n * Categorize removals by severity.\n *\n * - Critical: orbitals, entities, states, pages (require confirmation)\n * - Standard: fields, actions, traits (auto-snapshotted)\n * - Minor: transitions, guards (tracked)\n */\nexport function categorizeRemovals(changeSet: {\n changes: SchemaChange[];\n}): CategorizedRemovals {\n const critical: SchemaChange[] = [];\n const standard: SchemaChange[] = [];\n const minor: SchemaChange[] = [];\n\n for (const change of changeSet.changes) {\n if (change.operation !== 'remove') continue;\n\n const target = change.target.toLowerCase();\n if (\n target === 'orbital' ||\n target === 'entity' ||\n target === 'state' ||\n target === 'page'\n ) {\n critical.push(change);\n } else if (\n target === 'field' ||\n target === 'action' ||\n target === 'trait' ||\n target === 'traits'\n ) {\n standard.push(change);\n } else {\n minor.push(change);\n }\n }\n\n return { critical, standard, minor, pageContentReductions: [] };\n}\n\n/**\n * Check if critical removals require explicit confirmation.\n */\nexport function requiresConfirmation(removals: CategorizedRemovals): boolean {\n return removals.critical.length > 0;\n}\n\n// ============================================================================\n// Page Content Reduction\n// ============================================================================\n\n/**\n * Detect implicit content reduction within pages.\n * Catches cases where a page 'modify' reduces components/actions/displays\n * without an explicit 'remove' operation.\n */\nexport function detectPageContentReduction(\n beforePages: unknown[],\n afterPages: unknown[],\n): PageContentReduction[] {\n const reductions: PageContentReduction[] = [];\n\n const getPageName = (p: unknown): string | null => {\n if (p && typeof p === 'object' && 'name' in p) {\n return (p as { name: string }).name;\n }\n return null;\n };\n\n const countContent = (\n page: unknown,\n ): { sections: number; actions: number } => {\n if (!page || typeof page !== 'object') return { sections: 0, actions: 0 };\n const p = page as { traits?: unknown[] };\n const traits = Array.isArray(p.traits) ? p.traits : [];\n return { sections: traits.length, actions: 0 };\n };\n\n // Build maps by name\n const beforeMap = new Map<string, unknown>();\n for (const p of beforePages) {\n const name = getPageName(p);\n if (name) beforeMap.set(name, p);\n }\n\n for (const afterPage of afterPages) {\n const name = getPageName(afterPage);\n if (!name) continue;\n const beforePage = beforeMap.get(name);\n if (!beforePage) continue;\n\n const beforeContent = countContent(beforePage);\n const afterContent = countContent(afterPage);\n\n const sectionsRemoved = beforeContent.sections - afterContent.sections;\n const actionsRemoved = beforeContent.actions - afterContent.actions;\n\n if (sectionsRemoved > 0 || actionsRemoved > 0) {\n reductions.push({\n pageName: name,\n componentsRemoved: sectionsRemoved,\n actionsRemoved,\n displaysRemoved: 0,\n before: beforeContent,\n after: afterContent,\n isSignificant: sectionsRemoved > 0,\n });\n }\n }\n\n return reductions;\n}\n\n/**\n * Check if page content reductions are significant.\n */\nexport function hasSignificantPageReduction(\n reductions: PageContentReduction[],\n): boolean {\n return reductions.some((r) => r.isSignificant);\n}\n\n// ============================================================================\n// Semantic Schema Diffing\n// ============================================================================\n\n/** Stable JSON comparison. */\nfunction jsonEqual(a: unknown, b: unknown): boolean {\n return JSON.stringify(a) === JSON.stringify(b);\n}\n\nfunction setsEqual(a: Set<string>, b: Set<string>): boolean {\n if (a.size !== b.size) return false;\n for (const item of a) {\n if (!b.has(item)) return false;\n }\n return true;\n}\n\n/** Every trait an orbital declares, keyed by its name (a composed trait without a `name` goes by its `ref`). */\nfunction namedTraitMap(refs: TraitRef[]): Map<string, TraitRef> {\n const map = new Map<string, TraitRef>();\n for (const r of refs) {\n const key = typeof r === 'string' ? r : isInlineTrait(r) ? r.name : (r.name ?? r.ref);\n map.set(key, r);\n }\n return map;\n}\n\n/** The atom a composed trait points at; `null` for an inline trait. */\nfunction composedSource(r: TraitRef): string | null {\n if (typeof r === 'string') return r;\n return isInlineTrait(r) ? null : r.ref;\n}\n\nfunction traitConfigOf(r: TraitRef): Trait['config'] | Exclude<TraitRef, string | Trait>['config'] {\n return typeof r === 'string' ? undefined : r.config;\n}\n\nfunction inlinePageMap(refs: PageRef[]): Map<string, Page> {\n const map = new Map<string, Page>();\n for (const r of refs) {\n if (typeof r === 'string') continue;\n if ('ref' in r && !('name' in r)) continue;\n const page = r as Page;\n if (!isRoutePage(page)) map.set(`${protocolName(page)}:${page.name}`, page);\n else if (page.path) map.set(page.path, page);\n }\n return map;\n}\n\nfunction isRenderUIEffect(effect: Effect): boolean {\n if (!Array.isArray(effect)) return false;\n return String(effect[0]) === 'render-ui' || String(effect[0]) === 'renderUI';\n}\n\nfunction tKey(t: Transition): string {\n return `${t.from ?? ''}+${t.event}`;\n}\n\nfunction diffSemanticTransitions(\n orbitalName: string, traitName: string,\n before: Transition[], after: Transition[],\n): SemanticSchemaChange[] {\n const changes: SemanticSchemaChange[] = [];\n const bMap = new Map(before.map(t => [tKey(t), t]));\n const aMap = new Map(after.map(t => [tKey(t), t]));\n\n for (const [key, aT] of aMap) {\n const bT = bMap.get(key);\n if (!bT) continue;\n\n if (!jsonEqual(bT.guard, aT.guard)) {\n changes.push({ kind: 'guard-changed', orbitalName, traitName, transitionEvent: aT.event });\n }\n\n if (!jsonEqual(bT.effects, aT.effects)) {\n const bEffects = bT.effects ?? [];\n const aEffects = aT.effects ?? [];\n const bRUI = bEffects.filter(isRenderUIEffect);\n const aRUI = aEffects.filter(isRenderUIEffect);\n\n if (bRUI.length !== aRUI.length || !jsonEqual(bRUI, aRUI)) {\n changes.push({ kind: 'render-ui-changed', orbitalName, traitName, transitionEvent: aT.event });\n } else {\n changes.push({ kind: 'effect-changed', orbitalName, traitName, transitionEvent: aT.event });\n }\n }\n }\n return changes;\n}\n\nfunction diffSemanticOrbital(\n name: string, before: OrbitalDefinition, after: OrbitalDefinition,\n): SemanticSchemaChange[] {\n const changes: SemanticSchemaChange[] = [];\n\n // Entity fields\n const bEntity = typeof before.entity === 'object' ? before.entity : null;\n const aEntity = typeof after.entity === 'object' ? after.entity : null;\n if (bEntity && aEntity) {\n if (!jsonEqual(bEntity.fields, aEntity.fields)) {\n changes.push({ kind: 'entity-fields-changed', orbitalName: name });\n }\n } else if (bEntity !== aEntity) {\n changes.push({ kind: 'entity-fields-changed', orbitalName: name });\n }\n\n // Traits — inline and composed (`ref`) alike, keyed by the name the orbital knows them by.\n const bTraits = namedTraitMap(before.traits ?? []);\n const aTraits = namedTraitMap(after.traits ?? []);\n\n for (const [tName] of aTraits) {\n if (!bTraits.has(tName)) changes.push({ kind: 'trait-added', orbitalName: name, traitName: tName });\n }\n for (const [tName] of bTraits) {\n if (!aTraits.has(tName)) changes.push({ kind: 'trait-removed', orbitalName: name, traitName: tName });\n }\n\n for (const [tName, aRef] of aTraits) {\n const bRef = bTraits.get(tName);\n if (bRef === undefined) continue;\n\n if (composedSource(bRef) !== composedSource(aRef)) {\n changes.push({ kind: 'trait-removed', orbitalName: name, traitName: tName });\n changes.push({ kind: 'trait-added', orbitalName: name, traitName: tName });\n continue;\n }\n if (!jsonEqual(traitConfigOf(bRef), traitConfigOf(aRef))) {\n changes.push({ kind: 'trait-config-changed', orbitalName: name, traitName: tName });\n }\n if (!isInlineTrait(bRef) || !isInlineTrait(aRef)) {\n if (typeof bRef !== 'string' && typeof aRef !== 'string'\n && (!jsonEqual(bRef.linkedEntity, aRef.linkedEntity) || !jsonEqual(bRef.events, aRef.events))) {\n changes.push({ kind: 'event-wiring-changed', orbitalName: name, traitName: tName });\n }\n continue;\n }\n const bTrait = bRef;\n const aTrait = aRef;\n\n const bSM = bTrait.stateMachine;\n const aSM = aTrait.stateMachine;\n\n if (!bSM && !aSM) continue;\n if (!bSM || !aSM) {\n changes.push({ kind: 'state-machine-changed', orbitalName: name, traitName: tName });\n continue;\n }\n\n const bStates = new Set((bSM.states ?? []).map((s: State) => s.name));\n const aStates = new Set((aSM.states ?? []).map((s: State) => s.name));\n if (!setsEqual(bStates, aStates)) {\n changes.push({ kind: 'state-machine-changed', orbitalName: name, traitName: tName });\n }\n\n const bTKeys = new Set((bSM.transitions ?? []).map(tKey));\n const aTKeys = new Set((aSM.transitions ?? []).map(tKey));\n if (!setsEqual(bTKeys, aTKeys)) {\n if (!changes.some(c => c.kind === 'state-machine-changed' && c.traitName === tName)) {\n changes.push({ kind: 'state-machine-changed', orbitalName: name, traitName: tName });\n }\n }\n\n changes.push(...diffSemanticTransitions(name, tName, bSM.transitions ?? [], aSM.transitions ?? []));\n\n if (!jsonEqual(bTrait.emits, aTrait.emits) || !jsonEqual(bTrait.listens, aTrait.listens)) {\n changes.push({ kind: 'event-wiring-changed', orbitalName: name, traitName: tName });\n }\n }\n\n if (!jsonEqual(before.theme, after.theme)) {\n changes.push({ kind: 'theme-changed', orbitalName: name });\n }\n\n // Pages\n const bPages = inlinePageMap(before.pages ?? []);\n const aPages = inlinePageMap(after.pages ?? []);\n const bPaths = new Set(bPages.keys());\n const aPaths = new Set(aPages.keys());\n\n if (!setsEqual(bPaths, aPaths)) {\n changes.push({ kind: 'page-changed', orbitalName: name });\n } else {\n for (const [path, aPage] of aPages) {\n if (!jsonEqual(bPages.get(path), aPage)) {\n changes.push({ kind: 'page-changed', orbitalName: name });\n break;\n }\n }\n }\n\n return changes;\n}\n\n/**\n * Semantic diff: what .orb CONCEPTS changed between two schema versions.\n *\n * Unlike `diffSchemas()` which produces operational CRUD changes for persistence,\n * this produces concept-level changes (guard-changed, render-ui-changed, etc.)\n * for canvas focus derivation, CLI narration, and selective re-verification.\n */\nexport function diffSchemaSemantics(\n before: OrbitalSchema,\n after: OrbitalSchema,\n): SemanticSchemaChange[] {\n const changes: SemanticSchemaChange[] = [];\n\n const bOrbitals = new Map<string, OrbitalDefinition>();\n for (const o of before.orbitals ?? []) {\n const orb = o as OrbitalDefinition;\n bOrbitals.set(orb.name, orb);\n }\n\n const aOrbitals = new Map<string, OrbitalDefinition>();\n for (const o of after.orbitals ?? []) {\n const orb = o as OrbitalDefinition;\n aOrbitals.set(orb.name, orb);\n }\n\n const added: string[] = [];\n for (const [name] of aOrbitals) {\n if (!bOrbitals.has(name)) {\n changes.push({ kind: 'orbital-added', orbitalName: name });\n added.push(name);\n }\n }\n for (const [name] of bOrbitals) {\n if (!aOrbitals.has(name)) {\n changes.push({ kind: 'orbital-removed', orbitalName: name });\n }\n }\n if (added.length > 1) {\n changes.push({ kind: 'behavior-composed', orbitalName: added[0] });\n }\n\n for (const [name, aOrb] of aOrbitals) {\n const bOrb = bOrbitals.get(name);\n if (bOrb) changes.push(...diffSemanticOrbital(name, bOrb, aOrb));\n }\n\n // An app-level theme or token change restyles every orbital.\n if (!jsonEqual(before.theme, after.theme) || !jsonEqual(before.designTokens, after.designTokens)) {\n for (const [name] of aOrbitals) {\n if (!changes.some((c) => c.kind === 'theme-changed' && c.orbitalName === name)) {\n changes.push({ kind: 'theme-changed', orbitalName: name });\n }\n }\n }\n\n return changes;\n}\n\n// ============================================================================\n// High-level Orbital Schema Diff (changeset envelope)\n// ============================================================================\n\n/**\n * Source label for a changeset. The persistence layer accepts the canonical\n * agent labels plus `skill-agent:<skill>`-style identifiers, so the type stays\n * open as a string.\n */\nexport type SchemaDiffSource =\n | 'requirements-agent'\n | 'builder-agent'\n | 'user'\n | 'auto-fix'\n | (string & {});\n\n/** Tracking granularity used when generating the diff. */\nexport type SchemaDiffMode = 'initial' | 'update';\n\n/** Author identification carried on the changeset envelope. */\nexport interface SchemaDiffAuthor {\n userId: string;\n name?: string;\n}\n\n/** Options that shape the resulting diff envelope. */\nexport interface SchemaDiffOptions {\n mode: SchemaDiffMode;\n author: SchemaDiffAuthor;\n source: SchemaDiffSource;\n}\n\n/** Per-change entry in the diff envelope. */\nexport interface SchemaDiffChange {\n operation: 'add' | 'modify' | 'remove' | 'rename' | 'merge' | 'set';\n path: string;\n value?: ChangesetValue;\n previousValue?: ChangesetValue;\n}\n\n/** Aggregate orbital/trait deltas surfaced by the diff. */\nexport interface SchemaDiffSummary {\n orbitalsAdded: string[];\n orbitalsRemoved: string[];\n orbitalsModified: string[];\n traitsAdded: string[];\n traitsModified: string[];\n traitsRemoved: string[];\n}\n\n/** Changeset envelope produced by `diffOrbitalSchemas`. */\nexport interface SchemaDiffChangeset {\n id: string;\n source: SchemaDiffSource;\n author: SchemaDiffAuthor;\n description: string;\n changes: SchemaDiffChange[];\n}\n\n/** Result of comparing two OrbitalSchema versions. */\nexport interface SchemaDiff {\n hasChanges: boolean;\n changeCount: number;\n changeset: SchemaDiffChangeset;\n summary: SchemaDiffSummary;\n}\n\n/**\n * Compare two `OrbitalSchema` versions and produce a changeset envelope.\n *\n * Higher-level companion to `diffSchemas`: where `diffSchemas` returns a flat\n * list of `SchemaChange` entries keyed by structural path, this returns the\n * envelope the persistence layer ships to Firestore (id, author, source,\n * summary buckets).\n *\n * Identifier generation: `changeset.id` is a deterministic `chg_<hex>` value\n * derived from the schema name + change count when `globalThis.crypto.randomUUID`\n * is unavailable; otherwise a UUID is used. Callers that need a stable id\n * across regenerations should supply one themselves.\n */\nexport function diffOrbitalSchemas(\n before: OrbitalSchema | null,\n after: OrbitalSchema,\n options: SchemaDiffOptions,\n): SchemaDiff {\n const summary: SchemaDiffSummary = {\n orbitalsAdded: [],\n orbitalsRemoved: [],\n orbitalsModified: [],\n traitsAdded: [],\n traitsModified: [],\n traitsRemoved: [],\n };\n const changes: SchemaDiffChange[] = [];\n\n if (!before) {\n for (const orbital of after.orbitals ?? []) {\n const orb = orbital as OrbitalDefinition;\n summary.orbitalsAdded.push(orb.name);\n changes.push({\n operation: 'add',\n path: `orbitals[${summary.orbitalsAdded.length - 1}]`,\n value: orb,\n });\n }\n } else {\n const beforeOrbitals = new Map<string, OrbitalDefinition>();\n for (const o of before.orbitals ?? []) {\n const orb = o as OrbitalDefinition;\n beforeOrbitals.set(orb.name, orb);\n }\n const afterOrbitals = new Map<string, OrbitalDefinition>();\n for (const o of after.orbitals ?? []) {\n const orb = o as OrbitalDefinition;\n afterOrbitals.set(orb.name, orb);\n }\n\n let idx = 0;\n for (const [name, orb] of afterOrbitals) {\n const prev = beforeOrbitals.get(name);\n if (!prev) {\n summary.orbitalsAdded.push(name);\n changes.push({\n operation: 'add',\n path: `orbitals[${idx}]`,\n value: orb,\n });\n } else if (JSON.stringify(prev) !== JSON.stringify(orb)) {\n summary.orbitalsModified.push(name);\n changes.push({\n operation: 'merge',\n path: `orbitals[${idx}]`,\n previousValue: prev,\n value: orb,\n });\n }\n idx++;\n }\n for (const [name, orb] of beforeOrbitals) {\n if (!afterOrbitals.has(name)) {\n summary.orbitalsRemoved.push(name);\n changes.push({\n operation: 'remove',\n path: `orbitals[${name}]`,\n previousValue: orb,\n });\n }\n }\n\n if (before.name !== after.name) {\n changes.push({\n operation: 'set',\n path: 'name',\n previousValue: before.name,\n value: after.name,\n });\n }\n if (before.version !== after.version) {\n changes.push({\n operation: 'set',\n path: 'version',\n previousValue: before.version,\n value: after.version,\n });\n }\n if (before.description !== after.description) {\n changes.push({\n operation: 'set',\n path: 'description',\n previousValue: before.description,\n value: after.description,\n });\n }\n if (before.summary !== after.summary) {\n changes.push({\n operation: 'set',\n path: 'summary',\n previousValue: before.summary,\n value: after.summary,\n });\n }\n }\n\n const hasChanges = changes.length > 0;\n const description = describeDiff(summary, options.mode, after.name);\n\n return {\n hasChanges,\n changeCount: changes.length,\n changeset: {\n id: generateChangesetId(after.name, changes.length),\n source: options.source,\n author: options.author,\n description,\n changes,\n },\n summary,\n };\n}\n\nfunction describeDiff(\n summary: SchemaDiffSummary,\n mode: SchemaDiffMode,\n schemaName: string,\n): string {\n const parts: string[] = [];\n if (summary.orbitalsAdded.length > 0) {\n parts.push(`+${summary.orbitalsAdded.length} orbital(s)`);\n }\n if (summary.orbitalsModified.length > 0) {\n parts.push(`~${summary.orbitalsModified.length} orbital(s)`);\n }\n if (summary.orbitalsRemoved.length > 0) {\n parts.push(`-${summary.orbitalsRemoved.length} orbital(s)`);\n }\n if (parts.length === 0) return 'No changes';\n return `${mode === 'initial' ? 'Initial' : 'Update'} ${schemaName}: ${parts.join(', ')}`;\n}\n\nfunction generateChangesetId(seed: string, count: number): string {\n const cryptoApi = (globalThis as { crypto?: { randomUUID?: () => string } }).crypto;\n if (cryptoApi?.randomUUID) return cryptoApi.randomUUID();\n let hash = 0;\n const source = `${seed}:${count}:${Date.now()}`;\n for (let i = 0; i < source.length; i++) {\n hash = (hash * 31 + source.charCodeAt(i)) | 0;\n }\n return `chg_${(hash >>> 0).toString(16)}_${count}`;\n}\n","/**\n * An orbital's inline entity definitions. Access policies and the owner of an entity are the\n * kernel's (`KernelEngine.readRows`, `entityOwnerOrbital`).\n *\n * @packageDocumentation\n */\n\nimport type { OrbitalEntity } from '../types/entity.js';\nimport type { EntityRef, OrbitalDefinition } from '../types/orbital.js';\n\n/**\n * One orbital's own inline entity definitions: its primary entity plus any\n * auxiliaries an import brought along (`auxiliaryEntities` — a linkedEntity\n * naming an imported atom's own entity resolves here, not among any\n * orbital's primary entity alone). Skips unresolved `string`/`EntityCall`\n * refs — those are pre-inline-phase forms that never reach this by the time\n * a schema is served.\n */\nexport function orbitalInlineEntities(orbital: OrbitalDefinition): OrbitalEntity[] {\n const out: OrbitalEntity[] = [];\n const refs: EntityRef[] = [orbital.entity, ...(orbital.auxiliaryEntities ?? [])];\n for (const ref of refs) {\n if (typeof ref === 'object' && ref !== null && 'fields' in ref) {\n out.push(ref as OrbitalEntity);\n }\n }\n return out;\n}\n","/**\n * The declared contract a program carries for the outside: the inputs a client may send a trait, the inbound\n * hooks a provider may deliver to, and the answers the kernel gives. The kernel owns the rules\n * (`orbital-core` `contract/external_inputs.rs`, `contract/inbound.rs`; `KernelEngine.contract*` asks them): these are\n * the shapes of its answers, parsed at the boundary.\n *\n * @packageDocumentation\n */\n\nimport { z } from 'zod';\nimport type { JsonSchema } from '../factory/types.js';\nimport { InboundVerificationSchema, PayloadFieldSchema } from '../types/state-machine.js';\n\nexport type { InboundDeclaration, InboundVerification } from '../types/state-machine.js';\n\nexport const ExternalInputSchema = z.object({\n orbital: z.string(),\n trait: z.string(),\n event: z.string(),\n payloadSchema: z.array(PayloadFieldSchema),\n description: z.string().optional(),\n synonyms: z.string().optional(),\n tier: z.string().optional(),\n});\n\n/** A declared input: what an outside client may send which trait. */\nexport type ExternalInput = z.infer<typeof ExternalInputSchema>;\n\n/** One declared handler: the trait and event a hook name is delivered to, and the event that answers. */\nexport const InboundRouteSchema = z.object({\n name: z.string(),\n orbital: z.string(),\n trait: z.string(),\n event: z.string(),\n answer: z.string(),\n verifies: InboundVerificationSchema.optional(),\n});\n\nexport type InboundRoute = z.infer<typeof InboundRouteSchema>;\n\n/** What a host carries of one request: its headers and its body text exactly as received. */\nexport interface InboundDelivery {\n headers: Readonly<Record<string, string | undefined>>;\n rawBody: string;\n}\n\n/** The HTTP answer the host writes: the status and the JSON text of the body. */\nexport const InboundAnswerSchema = z.object({\n status: z.number(),\n body: z.string(),\n stderr: z.string().optional(),\n /** Response headers the answer declares; a terminal host reads `orb-run`. */\n headers: z.record(z.string(), z.string()).optional(),\n});\n\nexport type InboundAnswer = z.infer<typeof InboundAnswerSchema>;\n\n/** The kernel's answer to \"which handler does this hook name\": the route, or the answer to write for a hook it does not serve. */\nexport const InboundFoundSchema = z.union([z.object({ route: InboundRouteSchema }), z.object({ answer: InboundAnswerSchema })]);\n\n/** An inbound hook event named on a client-facing route: the trait that handles it and the refusal message. */\nexport const InboundOnlySchema = z.object({ trait: z.string(), message: z.string() }).nullable();\n\n/** A list of names (the readable entities). */\nexport const NameListSchema = z.array(z.string());\n\n/** A name, or null when the program has none (the `[identity]` entity, the owner of an entity). */\nexport const OptionalNameSchema = z.string().nullable();\n\n/** One way a value misses its declared payload (the kernel's `payloadIssues`). */\nexport const PayloadIssueSchema = z.object({\n path: z.string(),\n reason: z.enum(['missing', 'unknown', 'wrong-type', 'not-one-of']),\n expected: z.string().optional(),\n});\n\nexport type PayloadIssue = z.infer<typeof PayloadIssueSchema>;\n\n/** The JSON Schema of a declared payload (the kernel's `payloadSchemaToJsonSchema`). */\nexport const PayloadJsonSchemaSchema: z.ZodType<JsonSchema> = z.lazy(() =>\n z.strictObject({\n type: z.enum(['string', 'number', 'integer', 'boolean', 'array', 'object']).optional(),\n properties: z.record(z.string(), PayloadJsonSchemaSchema).optional(),\n required: z.array(z.string()).optional(),\n additionalProperties: z.boolean().optional(),\n items: PayloadJsonSchemaSchema.optional(),\n enum: z.array(z.string()).optional(),\n }),\n);\n","import { isPageReference, isRoutePage, type OrbitalSchema, type Page } from './types/index.js';\n/**\n * Route matching — the one resolver from a concrete path to a declared page\n * pattern (`/appointments/:id`), shared by the UI router, the verifiers and\n * the expectation walker.\n *\n * @packageDocumentation\n */\n\n/**\n * Match a concrete path against a pattern with :param placeholders.\n * Returns null if no match, or the extracted params if match.\n *\n * @example\n * matchPath('/inspection/:id', '/inspection/123') // { id: '123' }\n * matchPath('/users/:userId/posts/:postId', '/users/42/posts/7') // { userId: '42', postId: '7' }\n * matchPath('/about', '/about') // {}\n * matchPath('/about', '/contact') // null\n */\nexport function matchPath(\n pattern: string,\n path: string\n): Record<string, string> | null {\n // Normalize paths - remove trailing slashes, ensure leading slash\n const normalizeSegment = (p: string) => {\n let normalized = p.trim();\n if (!normalized.startsWith('/')) normalized = '/' + normalized;\n if (normalized.length > 1 && normalized.endsWith('/')) {\n normalized = normalized.slice(0, -1);\n }\n return normalized;\n };\n\n const normalizedPattern = normalizeSegment(pattern);\n const normalizedPath = normalizeSegment(path);\n\n const patternParts = normalizedPattern.split('/').filter(Boolean);\n const pathParts = normalizedPath.split('/').filter(Boolean);\n\n // Must have same number of segments\n if (patternParts.length !== pathParts.length) {\n return null;\n }\n\n const params: Record<string, string> = {};\n\n for (let i = 0; i < patternParts.length; i++) {\n const patternPart = patternParts[i];\n const pathPart = pathParts[i];\n\n if (patternPart.startsWith(':')) {\n // This is a param - extract the name and value\n const paramName = patternPart.slice(1);\n params[paramName] = decodeURIComponent(pathPart);\n } else if (patternPart !== pathPart) {\n // Static segment doesn't match\n return null;\n }\n }\n\n return params;\n}\n\n/**\n * Order two route patterns most-specific-first: at the first segment where they\n * disagree in kind, a static segment outranks a `:param`. Patterns that agree in\n * kind everywhere tie, leaving declaration order to decide.\n *\n * Without this, `/listings/:id` declared before `/listings/moderation` swallows\n * its static sibling, because every `:param` matches any segment.\n */\nexport function comparePathSpecificity(a: string, b: string): number {\n const aParts = a.split('/').filter(Boolean);\n const bParts = b.split('/').filter(Boolean);\n const shared = Math.min(aParts.length, bParts.length);\n\n for (let i = 0; i < shared; i++) {\n const aParam = aParts[i].startsWith(':');\n const bParam = bParts[i].startsWith(':');\n if (aParam !== bParam) return aParam ? 1 : -1;\n }\n\n return 0;\n}\n\n/**\n * Match a concrete path against route-bearing candidates, most-specific first.\n * The single resolver every route lookup goes through — the candidate array is\n * never reordered in place, so callers keep their declaration-order semantics.\n */\nexport function matchPathAmong<T>(\n candidates: readonly T[],\n path: string,\n pathOf: (candidate: T) => string | undefined\n): { candidate: T; params: Record<string, string> } | null {\n // Rank only the patterns that match: across unrelated patterns the\n // comparator is not transitive, so a whole-list sort could leave\n // `/x/:id` ahead of its static sibling `/x/checkin`.\n let best: { candidate: T; params: Record<string, string>; pattern: string } | null = null;\n for (const candidate of candidates) {\n const pattern = pathOf(candidate);\n if (!pattern) continue;\n const params = matchPath(pattern, path);\n if (params === null) continue;\n if (best === null || comparePathSpecificity(pattern, best.pattern) < 0) {\n best = { candidate, params, pattern };\n }\n }\n\n return best === null ? null : { candidate: best.candidate, params: best.params };\n}\n\n/**\n * The page an app shows when no page matches its route: the first page the program marks `initial`,\n * else the first inline page of the first orbital that declares one. The runtime's navigation\n * default, runtime-verify's boot probe, the catalog and the behavior-value frame all read it.\n */\nexport function defaultPage(schema: OrbitalSchema): { page: Page; orbitalName: string } | null {\n let first: { page: Page; orbitalName: string } | null = null;\n for (const orbital of schema.orbitals) {\n for (const page of orbital.pages ?? []) {\n if (isPageReference(page) || !isRoutePage(page)) continue;\n if (page.isInitial === true) return { page, orbitalName: orbital.name };\n first ??= { page, orbitalName: orbital.name };\n }\n }\n return first;\n}\n\n/**\n * The page an app shows for a path no page matches: the one the program marks `notFound`, else none.\n * The resolver admits at most one per program.\n */\nexport function notFoundPage(schema: OrbitalSchema): { page: Page; orbitalName: string } | null {\n for (const orbital of schema.orbitals) {\n for (const page of orbital.pages ?? []) {\n if (isPageReference(page) || !isRoutePage(page)) continue;\n if (page.isNotFound === true) return { page, orbitalName: orbital.name };\n }\n }\n return null;\n}\n\n/** A concrete path matches a route pattern: same segment count, each pattern segment a `:param` or equal. */\nexport function pathMatchesPattern(path: string, pattern: string): boolean {\n return matchPath(pattern, path) !== null;\n}\n","/**\n * Shared-entity frame merge.\n *\n * The DRY primitive both execution paths share: several traits bound to one\n * `[shared]` entity each contribute field writes per frame, and exactly one\n * render trait paints the merged result. Both the JS interpreter (`@almadar/runtime`/\n * `@almadar/ui`) and the generated TypeScript (Rust\n * `orbital-shell-typescript` codegen) fold writes through this same\n * function, so the two execution paths merge state identically.\n *\n * @packageDocumentation\n */\n\nimport type { EntityRow, FieldValue } from '../types/entity.js';\n\n/**\n * One field write a writer trait applies to the shared entity's running\n * scratch state within a frame.\n */\nexport interface EntityFieldWrite {\n readonly field: string;\n /** The field's JSON value; `undefined` is a writer copying an absent field back, which leaves the key absent. */\n readonly value: FieldValue | undefined;\n}\n\n/**\n * A shared-entity snapshot. Aliases the canonical `EntityRow` — the SAME\n * row shape every other entity-state surface in the codebase uses (guard\n * contexts, `traitFieldStatesRef`, `RuntimeEntityStore`) — so a shared\n * entity's snapshot needs no conversion at its boundaries.\n */\nexport type EntityFrameState = EntityRow;\n\n/**\n * Field-level fold of ordered writes onto the current entity state. A\n * later write to the same field overwrites an earlier one (ordered);\n * fields absent from `orderedWrites` are carried over verbatim rather than\n * the whole object being replaced, so disjoint writers never clobber each\n * other.\n */\nexport function mergeEntityFrame(\n current: EntityFrameState,\n orderedWrites: readonly EntityFieldWrite[],\n): EntityFrameState {\n if (orderedWrites.length === 0) return current;\n const next: EntityRow = { ...current };\n for (const write of orderedWrites) {\n if (write.value === undefined) delete next[write.field];\n else next[write.field] = write.value;\n }\n return next;\n}\n\n/**\n * Resolves what a trait's `@entity` binding reads: a client-supplied\n * `frame` is UNTRUSTED (it travels on the wire as `EventRequest.fields`),\n * so it may only contribute keys on `allowedFrameKeys` (the entity's\n * `@intrinsic` fields) and never `id` — a real row column always wins over\n * the frame, and an explicit `id` argument wins over everything. Both\n * execution paths (the JS interpreter and the generated TS server) call\n * this so `@entity` layers identically: declared defaults < fetched row <\n * frame, with the row/id override on top.\n */\nexport function resolveEntityView(input: {\n readonly frame?: EntityRow;\n readonly row?: EntityRow | null;\n readonly id?: string;\n readonly allowedFrameKeys: readonly string[];\n}): EntityRow {\n const { frame, row, id, allowedFrameKeys } = input;\n const view: EntityRow = {};\n if (frame) {\n for (const key of allowedFrameKeys) {\n if (key === 'id') continue;\n if (Object.prototype.hasOwnProperty.call(frame, key)) {\n view[key] = frame[key];\n }\n }\n }\n Object.assign(view, row ?? {});\n if (id !== undefined) view.id = id;\n return view;\n}\n\n/**\n * Strips frame/view-state keys from a row before it reaches the store, so\n * an untrusted client frame (or scratch view state) never gets persisted.\n * Both persist paths call this on the way to their store write.\n */\nexport function omitFrameFields(row: EntityRow, frameKeys: readonly string[]): EntityRow {\n const next: EntityRow = { ...row };\n for (const key of frameKeys) {\n delete next[key];\n }\n return next;\n}\n","import type { Entity } from '../types/entity.js';\n\n/** The entity named `name` among a set of orbitals' own resolved entities. */\nexport function findEntityAmongOrbitals(\n entities: Iterable<Entity | undefined>,\n name: string,\n): Entity | undefined {\n for (const entity of entities) {\n if (entity?.name === name) return entity;\n }\n return undefined;\n}\n"]}