@almadar/core 11.2.0 → 11.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (92) hide show
  1. package/dist/behavior-package.js +1 -3
  2. package/dist/{builders-C4TIhiks.d.ts → builders-CAQ_shuO.d.ts} +274 -274
  3. package/dist/builders.d.ts +6 -6
  4. package/dist/builders.js +8 -10
  5. package/dist/{bus-do1P9luP.d.ts → bus-QFvlnIfW.d.ts} +113 -438
  6. package/dist/{chunk-B4MNHGBP.js → chunk-5IRZ6ROW.js} +0 -2
  7. package/dist/{chunk-7NDAXM2Z.js → chunk-6XYHVJ4J.js} +1 -3
  8. package/dist/{chunk-2NKK2X53.js → chunk-7JO77HA6.js} +1 -3
  9. package/dist/chunk-AIRZM37O.js +3809 -0
  10. package/dist/{chunk-RGACZEYC.js → chunk-DDBAQMWA.js} +0 -2
  11. package/dist/{chunk-VOFHP52Z.js → chunk-DHWP7B4S.js} +147 -7
  12. package/dist/{chunk-7GHJU5WI.js → chunk-GNLND5O2.js} +0 -2
  13. package/dist/{chunk-PYYHDYTD.js → chunk-ISAUHHDU.js} +1 -3
  14. package/dist/{chunk-M4S2B5VJ.js → chunk-IU3WGC6Q.js} +0 -2
  15. package/dist/{chunk-VIHQKKTZ.js → chunk-JCRN3F6T.js} +10 -12
  16. package/dist/{chunk-7B4JRMRL.js → chunk-JPJQCTJI.js} +12 -6
  17. package/dist/{chunk-6H3UIZR2.js → chunk-O2ZUOWNK.js} +4 -6
  18. package/dist/{chunk-IE6WCCJP.js → chunk-OLSKERKZ.js} +51 -47
  19. package/dist/{chunk-N3CK4AYW.js → chunk-QV6J4EAF.js} +560 -58
  20. package/dist/{chunk-347APWFM.js → chunk-R3Y7ABF4.js} +2 -4
  21. package/dist/{chunk-3DZOFI53.js → chunk-TOAMAGC7.js} +2 -4
  22. package/dist/{chunk-LPJ7GKRM.js → chunk-UCP26C3C.js} +4 -6
  23. package/dist/{chunk-VG7BRFUD.js → chunk-W3UJRSYC.js} +0 -2
  24. package/dist/{effect-Dr--GXRe.d.ts → effect--PY8R4Oi.d.ts} +72 -38
  25. package/dist/{effect-result-geymPT9w.d.ts → effect-result-fH1ZTxn6.d.ts} +59 -38
  26. package/dist/{expression-DirYKz-f.d.ts → expression-DxY6ct3t.d.ts} +1 -1
  27. package/dist/factory/index.d.ts +3 -3
  28. package/dist/factory/index.js +8 -10
  29. package/dist/factory-runtime/index.d.ts +4 -4
  30. package/dist/factory-runtime/index.js +15 -17
  31. package/dist/fixtures.d.ts +8 -7
  32. package/dist/fixtures.js +6 -8
  33. package/dist/i18n/index.js +2 -4
  34. package/dist/{index-C8mF8btS.d.ts → index-Dk2AoJdI.d.ts} +43 -30
  35. package/dist/index.d.ts +17 -19
  36. package/dist/index.js +23 -25
  37. package/dist/kernel-wire.d.ts +3 -3
  38. package/dist/kernel-wire.js +3 -5
  39. package/dist/language/constructs.json +5 -0
  40. package/dist/language/program-types.json +6 -0
  41. package/dist/language/validation-codes.json +140 -0
  42. package/dist/language/vocabulary.json +45 -1
  43. package/dist/language-data.js +3 -5
  44. package/dist/lolo-document/index.js +0 -2
  45. package/dist/patterns/component-mapping.json +1 -1
  46. package/dist/patterns/definitions.d.ts +2 -2
  47. package/dist/patterns/definitions.js +1 -3
  48. package/dist/patterns/event-contracts.json +1 -1
  49. package/dist/patterns/index.d.ts +9 -3
  50. package/dist/patterns/index.js +3 -5
  51. package/dist/patterns/patterns-registry.json +560 -56
  52. package/dist/patterns/registry.json +560 -56
  53. package/dist/themes/index.js +2 -4
  54. package/dist/{trait-D9MjuwGC.d.ts → trait-BO2gbBte.d.ts} +82 -92
  55. package/dist/types/index.d.ts +9 -9
  56. package/dist/types/index.js +12 -14
  57. package/dist/{types-Bi-KSa0a.d.ts → types-CSBhbbse.d.ts} +3 -3
  58. package/package.json +6 -6
  59. package/dist/behavior-package.js.map +0 -1
  60. package/dist/builders.js.map +0 -1
  61. package/dist/chunk-2NKK2X53.js.map +0 -1
  62. package/dist/chunk-347APWFM.js.map +0 -1
  63. package/dist/chunk-3DZOFI53.js.map +0 -1
  64. package/dist/chunk-6H3UIZR2.js.map +0 -1
  65. package/dist/chunk-7B4JRMRL.js.map +0 -1
  66. package/dist/chunk-7GHJU5WI.js.map +0 -1
  67. package/dist/chunk-7NDAXM2Z.js.map +0 -1
  68. package/dist/chunk-B4MNHGBP.js.map +0 -1
  69. package/dist/chunk-IE6WCCJP.js.map +0 -1
  70. package/dist/chunk-LPJ7GKRM.js.map +0 -1
  71. package/dist/chunk-M4S2B5VJ.js.map +0 -1
  72. package/dist/chunk-N3CK4AYW.js.map +0 -1
  73. package/dist/chunk-PYYHDYTD.js.map +0 -1
  74. package/dist/chunk-RGACZEYC.js.map +0 -1
  75. package/dist/chunk-VG7BRFUD.js.map +0 -1
  76. package/dist/chunk-VIHQKKTZ.js.map +0 -1
  77. package/dist/chunk-VOFHP52Z.js.map +0 -1
  78. package/dist/chunk-ZDIHVDTW.js +0 -3810
  79. package/dist/chunk-ZDIHVDTW.js.map +0 -1
  80. package/dist/factory/index.js.map +0 -1
  81. package/dist/factory-runtime/index.js.map +0 -1
  82. package/dist/fixtures.js.map +0 -1
  83. package/dist/i18n/index.js.map +0 -1
  84. package/dist/index.js.map +0 -1
  85. package/dist/kernel-wire.js.map +0 -1
  86. package/dist/language-data.js.map +0 -1
  87. package/dist/lolo-document/index.js.map +0 -1
  88. package/dist/patterns/definitions.js.map +0 -1
  89. package/dist/patterns/index.js.map +0 -1
  90. package/dist/themes/index.js.map +0 -1
  91. package/dist/types/index.js.map +0 -1
  92. package/dist/{domain-JuWUUeJ3.d.ts → domain-Cpmja5ak.d.ts} +51 -51
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
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"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"kernel-wire.js"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/language-data.ts"],"names":[],"mappings":"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","file":"language-data.js","sourcesContent":["/**\n * The language-data bundle a host without `node_modules` (a browser running the\n * wasm `orb` clients) hands to `install_language` — TS mirror of\n * `orbital_core::language_data::install_language_bundle`. Read from the\n * INSTALLED `@almadar/core` and `@almadar/std` through their top-level\n * `orbLanguage` declarations, the same files `orb` reads natively\n * (`docs/Almadar_Behavior_Packages.md` §14), never a hardcoded layout.\n *\n * Node-only (reads with `node:fs`): exported from the\n * `@almadar/core/language-data` subpath only (the `fixtures` precedent).\n *\n * @packageDocumentation\n */\nimport { existsSync, readdirSync, readFileSync } from 'node:fs';\nimport { dirname, join, resolve } from 'node:path';\n\nimport { installedPackageDirs, userStoreDir } from './behavior-package.js';\nimport { parseVocabularyPack, type LanguageCode, type VocabularyPack } from './i18n/index.js';\nimport type { ThemeDefinition } from './types/domain.js';\nimport type { JsonValue } from './types/json.js';\n\n/** One installed language pack: the npm package declaring `orbVocabulary` and its vocabulary. */\nexport interface InstalledVocabularyPack {\n package: string;\n version: string;\n /** The language versions the pack is written for (`orbVocabulary.language`). */\n language: string;\n vocabulary: VocabularyPack;\n}\n\nexport interface LanguageBundle {\n core: {\n version: string;\n /** The language version core provides (`orbLanguage.version`). */\n language: string;\n patterns: JsonValue;\n componentMapping: JsonValue;\n eventContracts: JsonValue;\n services: JsonValue;\n bindingRules: JsonValue;\n programTypes: JsonValue;\n protocols: JsonValue;\n themes: ThemeDefinition[];\n };\n std: {\n version: string;\n /** The language versions std is written for (`orbLanguage.language`). */\n language: string;\n operators: JsonValue;\n };\n /** Every installed language pack ({@link readVocabularyPacks}); English is built in. */\n vocabularies: InstalledVocabularyPack[];\n}\n\ninterface LanguagePackage {\n root: string;\n version: string;\n block: Record<string, string | string[]>;\n}\n\nexport class LanguageDataError extends Error {\n constructor(message: string) {\n super(message);\n this.name = 'LanguageDataError';\n }\n}\n\n/** The nearest `node_modules/<name>/package.json` walking up from `fromDir` — the\n * same walk as `orbital_core::behavior_packages::find_npm_package`. */\nfunction findManifest(name: string, fromDir: string): string | null {\n let dir = resolve(fromDir);\n for (;;) {\n const candidate = join(dir, 'node_modules', name, 'package.json');\n if (existsSync(candidate)) return candidate;\n const parent = dirname(dir);\n if (parent === dir) return null;\n dir = parent;\n }\n}\n\nfunction readLanguagePackage(name: string, fromDir: string, languageKey: 'version' | 'language'): LanguagePackage {\n const manifestPath = findManifest(name, fromDir);\n if (!manifestPath) throw new LanguageDataError(`${name} is not installed (searched from ${fromDir})`);\n const manifest = JSON.parse(readFileSync(manifestPath, 'utf8')) as {\n version?: string;\n orbLanguage?: Record<string, string | string[]>;\n };\n if (!manifest.orbLanguage) throw new LanguageDataError(`${manifestPath} declares no \\`orbLanguage\\` block`);\n if (!manifest.orbLanguage[languageKey]) throw new LanguageDataError(`${manifestPath} declares no \\`orbLanguage.${languageKey}\\``);\n return { root: dirname(manifestPath), version: manifest.version ?? '', block: manifest.orbLanguage };\n}\n\nfunction declaredText(pkg: LanguagePackage, field: string): string {\n const value = pkg.block[field];\n if (!value) throw new LanguageDataError(`${pkg.root}/package.json declares no \\`orbLanguage.${field}\\``);\n if (typeof value !== 'string') throw new LanguageDataError(`${pkg.root}/package.json: \\`orbLanguage.${field}\\` is not a single value`);\n return value;\n}\n\nfunction declared(pkg: LanguagePackage, field: string): string {\n return join(pkg.root, declaredText(pkg, field));\n}\n\nfunction readJson(path: string): JsonValue {\n return JSON.parse(readFileSync(path, 'utf8')) as JsonValue;\n}\n\ninterface VocabularyManifest {\n name?: string;\n version?: string;\n orbVocabulary?: { language?: string; vocabulary?: string };\n}\n\n/**\n * Every installed language pack, the same rule as `orb` (`orbital-core`\n * `i18n::packs`): each package ({@link installedPackageDirs}, nearest first,\n * the user store last) whose `package.json` declares a top-level\n * `orbVocabulary`; nearest wins per package name. Two packages claiming one\n * language code, or a pack whose declared file is missing or malformed, fail\n * naming the package. Sorted by package name. Register them with\n * `registerVocabulary` from `@almadar/core/i18n` (each subpath is its own\n * bundle, so registration must go through the caller's i18n import).\n */\nexport function readVocabularyPacks(fromDir: string, userStore: string = userStoreDir()): InstalledVocabularyPack[] {\n const seen = new Set<string>();\n const packs: InstalledVocabularyPack[] = [];\n for (const dir of installedPackageDirs(fromDir, userStore)) {\n const manifestPath = join(dir, 'package.json');\n const manifest = JSON.parse(readFileSync(manifestPath, 'utf8')) as VocabularyManifest;\n const block = manifest.orbVocabulary;\n if (!block || !manifest.name || seen.has(manifest.name)) continue;\n seen.add(manifest.name);\n if (!block.language || !block.vocabulary) {\n throw new LanguageDataError(`${manifest.name} (${manifestPath}): \\`orbVocabulary\\` needs \\`language\\` and \\`vocabulary\\``);\n }\n const file = join(dir, block.vocabulary);\n if (!existsSync(file)) throw new LanguageDataError(`${manifest.name}: declared vocabulary ${file} does not exist`);\n let vocabulary: VocabularyPack;\n try {\n vocabulary = parseVocabularyPack(JSON.parse(readFileSync(file, 'utf8')), `${manifest.name}/${block.vocabulary}`);\n } catch (e) {\n throw new LanguageDataError(`${manifest.name}: ${e instanceof Error ? e.message : String(e)}`);\n }\n packs.push({ package: manifest.name, version: manifest.version ?? '', language: block.language, vocabulary });\n }\n const byCode = new Map<LanguageCode, string>();\n for (const pack of packs) {\n const code = pack.vocabulary.meta.code;\n const other = byCode.get(code);\n if (other) throw new LanguageDataError(`language \"${code}\" is claimed by two packs: ${other} and ${pack.package}`);\n byCode.set(code, pack.package);\n }\n return packs.sort((a, b) => (a.package < b.package ? -1 : a.package > b.package ? 1 : 0));\n}\n\n/** Assemble the bundle from the `@almadar/core`, `@almadar/std` and language packs installed for `fromDir`. */\nexport function readLanguageBundle(fromDir: string, userStore: string = userStoreDir()): LanguageBundle {\n const core = readLanguagePackage('@almadar/core', fromDir, 'version');\n const std = readLanguagePackage('@almadar/std', fromDir, 'language');\n const themesDir = declared(core, 'themes');\n const themes = (existsSync(themesDir) ? readdirSync(themesDir) : [])\n .filter((f) => f.endsWith('.json'))\n .sort()\n .map((f) => JSON.parse(readFileSync(join(themesDir, f), 'utf8')) as ThemeDefinition);\n if (themes.length === 0) throw new LanguageDataError(`${themesDir} holds no theme presets`);\n return {\n core: {\n version: core.version,\n language: declaredText(core, 'version'),\n patterns: readJson(declared(core, 'patterns')),\n componentMapping: readJson(declared(core, 'componentMapping')),\n eventContracts: readJson(declared(core, 'eventContracts')),\n services: readJson(declared(core, 'services')),\n bindingRules: readJson(declared(core, 'bindingRules')),\n programTypes: readJson(declared(core, 'programTypes')),\n protocols: readJson(declared(core, 'protocols')),\n themes,\n },\n std: {\n version: std.version,\n language: declaredText(std, 'language'),\n operators: readJson(declared(std, 'operators')),\n },\n vocabularies: readVocabularyPacks(fromDir, userStore),\n };\n}\n"]}