@almadar/core 10.129.0 → 11.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (135) hide show
  1. package/dist/behavior-package.d.ts +49 -11
  2. package/dist/behavior-package.js +1 -1
  3. package/dist/{orbital-CkFdDS9f.d.ts → builders-BdgbY7Th.d.ts} +5828 -6917
  4. package/dist/builders.d.ts +6 -6
  5. package/dist/builders.js +7 -6
  6. package/dist/{bus-CcbB__oo.d.ts → bus-C0hFDNFR.d.ts} +262 -354
  7. package/dist/chunk-347APWFM.js +286 -0
  8. package/dist/chunk-347APWFM.js.map +1 -0
  9. package/dist/chunk-5WQ3U7NJ.js +2363 -0
  10. package/dist/chunk-5WQ3U7NJ.js.map +1 -0
  11. package/dist/chunk-5YTPYMPZ.js +99 -0
  12. package/dist/chunk-5YTPYMPZ.js.map +1 -0
  13. package/dist/chunk-66Q5VX2F.js +3810 -0
  14. package/dist/chunk-66Q5VX2F.js.map +1 -0
  15. package/dist/chunk-7GHJU5WI.js +39 -0
  16. package/dist/chunk-7GHJU5WI.js.map +1 -0
  17. package/dist/chunk-B4MNHGBP.js +8 -0
  18. package/dist/chunk-B4MNHGBP.js.map +1 -0
  19. package/dist/chunk-E4T2MQAV.js +24 -0
  20. package/dist/chunk-E4T2MQAV.js.map +1 -0
  21. package/dist/chunk-ENOCKYGA.js +412 -0
  22. package/dist/chunk-ENOCKYGA.js.map +1 -0
  23. package/dist/chunk-FGT5OS2Y.js +918 -0
  24. package/dist/chunk-FGT5OS2Y.js.map +1 -0
  25. package/dist/chunk-GF7KCLNR.js +3284 -0
  26. package/dist/chunk-GF7KCLNR.js.map +1 -0
  27. package/dist/chunk-PNGFWLHD.js +1567 -0
  28. package/dist/chunk-PNGFWLHD.js.map +1 -0
  29. package/dist/{chunk-X4SC7FGF.js → chunk-RGACZEYC.js} +99 -96
  30. package/dist/chunk-RGACZEYC.js.map +1 -0
  31. package/dist/{chunk-RYPVOI6H.js → chunk-SNZYN7UA.js} +2541 -433
  32. package/dist/{chunk-RYPVOI6H.js.map → chunk-SNZYN7UA.js.map} +1 -1
  33. package/dist/{chunk-KDMV222Q.js → chunk-TDNQT3M3.js} +304 -373
  34. package/dist/chunk-TDNQT3M3.js.map +1 -0
  35. package/dist/chunk-VG7BRFUD.js +152 -0
  36. package/dist/chunk-VG7BRFUD.js.map +1 -0
  37. package/dist/chunk-Z7BI7DE7.js +1293 -0
  38. package/dist/chunk-Z7BI7DE7.js.map +1 -0
  39. package/dist/{domain-Dz3jP-UM.d.ts → domain-Cpmja5ak.d.ts} +55 -55
  40. package/dist/{effect-CiEVLsZz.d.ts → effect-DZaXwSAz.d.ts} +283 -453
  41. package/dist/{effect-result-Bebwu9yT.d.ts → effect-result-1HpXgeBc.d.ts} +656 -851
  42. package/dist/{expression-D0Fs0riG.d.ts → expression-DirYKz-f.d.ts} +5 -13
  43. package/dist/factory/index.d.ts +7 -144
  44. package/dist/factory/index.js +8 -8
  45. package/dist/factory-runtime/index.d.ts +7 -6
  46. package/dist/factory-runtime/index.js +527 -8
  47. package/dist/factory-runtime/index.js.map +1 -1
  48. package/dist/fixtures.d.ts +9 -11
  49. package/dist/fixtures.js +12 -8
  50. package/dist/fixtures.js.map +1 -1
  51. package/dist/i18n/index.d.ts +15 -19
  52. package/dist/i18n/index.js +2 -1
  53. package/dist/{index-BC-Jycqj.d.ts → index-D7SxwNdv.d.ts} +34 -734
  54. package/dist/index.d.ts +92 -247
  55. package/dist/index.js +322 -986
  56. package/dist/index.js.map +1 -1
  57. package/dist/kernel-wire.d.ts +3 -3
  58. package/dist/kernel-wire.js +3 -79
  59. package/dist/kernel-wire.js.map +1 -1
  60. package/dist/language/constructs.json +22 -2
  61. package/dist/language/program-types.json +203 -22
  62. package/dist/language/protocols.json +46 -0
  63. package/dist/language/ui-vocabulary.json +1697 -0
  64. package/dist/language/validation-codes.json +1222 -1212
  65. package/dist/language/vocabulary.json +44 -8
  66. package/dist/language-data.d.ts +7 -4
  67. package/dist/language-data.js +20 -14
  68. package/dist/language-data.js.map +1 -1
  69. package/dist/patterns/component-mapping.json +11 -1
  70. package/dist/patterns/definitions.d.ts +2 -2
  71. package/dist/patterns/definitions.js +1 -1
  72. package/dist/patterns/event-contracts.json +1 -15
  73. package/dist/patterns/game-font-families.json +13 -0
  74. package/dist/patterns/index.d.ts +24 -120
  75. package/dist/patterns/index.js +3 -3
  76. package/dist/patterns/pattern-tile-geometry.json +1065 -0
  77. package/dist/patterns/patterns-registry.json +2539 -431
  78. package/dist/patterns/registry.json +2539 -431
  79. package/dist/trait-sRjIivFq.d.ts +3519 -0
  80. package/dist/types/index.d.ts +9 -10
  81. package/dist/types/index.js +11 -5
  82. package/dist/{types-DGwrltUF.d.ts → types-C6_yPMpn.d.ts} +3 -3
  83. package/fixtures/events-wire/client-effects-by-trait/response.json +0 -18
  84. package/fixtures/events-wire/client-effects-provenance/response.json +0 -18
  85. package/fixtures/events-wire/effect-results-every-kind/response.json +2 -27
  86. package/fixtures/events-wire/navigate-1/response.json +8 -5
  87. package/fixtures/events-wire/navigate-2/response.json +11 -8
  88. package/fixtures/events-wire/navigate-3/response.json +14 -11
  89. package/fixtures/events-wire/navigate-back/response.json +7 -4
  90. package/fixtures/events-wire/render-ui-3/response.json +12 -9
  91. package/fixtures/events-wire/render-ui-clear/response.json +0 -7
  92. package/fixtures/events-wire/sse-stream/response.json +0 -20
  93. package/fixtures/events-wire/sse-stream/stream.json +0 -20
  94. package/fixtures/events-wire/stateless-traits/response.json +14 -5
  95. package/fixtures/kernel-wire/golden/basic-entity.json +1687 -0
  96. package/fixtures/kernel-wire/golden/entity-rerender.json +743 -0
  97. package/fixtures/kernel-wire/golden/rollback.json +793 -0
  98. package/fixtures/kernel-wire/golden/tick-counter.json +1538 -0
  99. package/fixtures/kernel-wire/golden/two-orbital-chore.json +847 -0
  100. package/fixtures/kernel-wire/golden/two-orbital-task.json +457 -0
  101. package/fixtures/kernel-wire/played-step.json +136 -0
  102. package/fixtures/kernel-wire/scripts/basic-entity.json +28 -0
  103. package/fixtures/kernel-wire/scripts/entity-rerender.json +13 -0
  104. package/fixtures/kernel-wire/scripts/rollback.json +53 -0
  105. package/fixtures/kernel-wire/scripts/tick-counter.json +26 -0
  106. package/fixtures/kernel-wire/scripts/two-orbital-chore.json +9 -0
  107. package/fixtures/kernel-wire/scripts/two-orbital-task.json +9 -0
  108. package/package.json +28 -19
  109. package/dist/builders-DmZE5By0.d.ts +0 -2663
  110. package/dist/chunk-45I2O4SJ.js +0 -4646
  111. package/dist/chunk-45I2O4SJ.js.map +0 -1
  112. package/dist/chunk-6LR43Z5E.js +0 -3061
  113. package/dist/chunk-6LR43Z5E.js.map +0 -1
  114. package/dist/chunk-GIUA3NUJ.js +0 -809
  115. package/dist/chunk-GIUA3NUJ.js.map +0 -1
  116. package/dist/chunk-GTY53NS5.js +0 -1908
  117. package/dist/chunk-GTY53NS5.js.map +0 -1
  118. package/dist/chunk-JOHDVS6J.js +0 -1614
  119. package/dist/chunk-JOHDVS6J.js.map +0 -1
  120. package/dist/chunk-KDMV222Q.js.map +0 -1
  121. package/dist/chunk-QRHJUS3D.js +0 -23
  122. package/dist/chunk-QRHJUS3D.js.map +0 -1
  123. package/dist/chunk-QUOTJULD.js +0 -4009
  124. package/dist/chunk-QUOTJULD.js.map +0 -1
  125. package/dist/chunk-V5VNGRVU.js +0 -66
  126. package/dist/chunk-V5VNGRVU.js.map +0 -1
  127. package/dist/chunk-X4SC7FGF.js.map +0 -1
  128. package/dist/entityAccess-BPSz1i2n.d.ts +0 -80
  129. package/dist/mock/index.d.ts +0 -153
  130. package/dist/mock/index.js +0 -190
  131. package/dist/mock/index.js.map +0 -1
  132. package/dist/schema-T5RT5s6H.d.ts +0 -282
  133. package/dist/state-machine/index.d.ts +0 -359
  134. package/dist/state-machine/index.js +0 -3
  135. package/dist/state-machine/index.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/builders/apply-config-overrides.ts","../src/builders/layout-strategy.ts","../src/builders/event-wiring.ts","../src/builders/compose-behaviors.ts","../src/expectation-shape.ts","../src/builders/rename-entity.ts","../src/data-bearing.ts","../src/factory-runtime/apply-params-to-orb.ts","../src/embedded-trait-config.ts","../src/factory/questions/generate.ts","../src/builders/route-slug.ts","../src/builders/owned-surface.ts","../src/builders/field-comparison-literals.ts","../src/builders/compose-app.ts","../src/builders/layout-trait.ts","../src/builders.ts"],"names":["merged","out","walk","field","config","asDefinitions"],"mappings":"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","file":"chunk-6LR43Z5E.js","sourcesContent":["/**\n * Apply trait config overrides to a schema — pure, returns a new schema.\n *\n * Used by config-driven preview surfaces (the playground property inspector and\n * the verify config-sweep) to render a behavior with different `config` values\n * WITHOUT recompiling: the override is written onto the matching trait, then the\n * schema is re-registered and re-rendered.\n *\n * The resolved schema's traits are inlined `Trait`s whose `config` is the\n * DECLARED schema (`{ field: { type, default, ... } }`), so an override patches\n * each field's `default`. A trait that instead carries call-site value config\n * (a `{ ref, config }` reference) gets the values merged directly.\n *\n * @packageDocumentation\n */\n\nimport type { OrbitalSchema } from '../types/schema.js';\nimport type { TraitRef, TraitConfig, ConfigFieldDeclaration } from '../types/trait.js';\nimport { isInlineTrait, mergeCallSiteConfigOverrides } from '../types/trait.js';\n\nfunction overrideTrait(trait: Exclude<TraitRef, string>, values: TraitConfig): Exclude<TraitRef, string> {\n if (isInlineTrait(trait)) {\n // Inlined Trait: `config` is the DECLARED schema → patch each field's `default`.\n const config = trait.config;\n if (config === undefined) return trait;\n const next: Record<string, ConfigFieldDeclaration> = { ...config };\n for (const [field, value] of Object.entries(values)) {\n const decl = config[field];\n if (decl !== undefined) {\n next[field] = { ...decl, default: value };\n }\n }\n return { ...trait, config: next };\n }\n\n return { ...trait, config: mergeCallSiteConfigOverrides(trait.config ?? {}, values) };\n}\n\nfunction traitIdentity(trait: Exclude<TraitRef, string>): string | undefined {\n if (trait.name !== undefined) return trait.name;\n return 'ref' in trait ? trait.ref : undefined;\n}\n\n/**\n * Return a new schema with `config` overrides applied to traits whose identity\n * (`name`, falling back to `ref`) matches a key in `overrides`. Fields not\n * declared on the trait are ignored — overrides never invent config.\n */\nexport function applyTraitConfigOverrides(\n schema: OrbitalSchema,\n overrides: Readonly<Record<string, TraitConfig>>,\n): OrbitalSchema {\n if (overrides === undefined || Object.keys(overrides).length === 0) return schema;\n return {\n ...schema,\n orbitals: schema.orbitals.map((orbital) => ({\n ...orbital,\n traits: orbital.traits.map((trait) => {\n if (typeof trait === 'string') return trait;\n const id = traitIdentity(trait);\n const values = id !== undefined ? overrides[id] : undefined;\n return values !== undefined ? overrideTrait(trait, values) : trait;\n }),\n })),\n };\n}\n","/**\n * Layout Strategy Detection\n *\n * Auto-detects the best layout strategy for a composed application\n * based on the number of orbitals and their event wiring topology.\n *\n * @packageDocumentation\n */\n\nimport type { OrbitalDefinition } from '../types/orbital.js';\nimport type { EventWiringEntry } from './event-wiring.js';\n\n// ============================================================================\n// Types\n// ============================================================================\n\n/**\n * Layout strategy for the composed application.\n *\n * - 'single': One orbital, one page\n * - 'tabs': 2-4 orbitals with no sequential chain\n * - 'sidebar': 5+ orbitals (navigation-heavy)\n * - 'dashboard': Single page with all orbitals visible\n * - 'wizard-flow': Sequential event chain detected (A -> B -> C)\n */\nexport type LayoutStrategy =\n | 'sidebar'\n | 'tabs'\n | 'dashboard'\n | 'wizard-flow'\n | 'single';\n\n// ============================================================================\n// Chain Detection\n// ============================================================================\n\n/**\n * Detect whether the event wiring forms a sequential chain.\n *\n * A sequential chain exists when orbital A's `from` feeds into B's `to`,\n * and B's `from` feeds into C's `to`, forming A -> B -> C.\n *\n * We build a directed graph from wiring entries and look for a chain\n * that covers 3+ nodes (the minimum for a meaningful wizard flow).\n */\nfunction hasSequentialChain(wiring: EventWiringEntry[]): boolean {\n if (wiring.length < 2) {\n return false;\n }\n\n // Build adjacency: from -> Set<to>\n const adjacency = new Map<string, Set<string>>();\n const allTargets = new Set<string>();\n\n for (const entry of wiring) {\n let targets = adjacency.get(entry.from);\n if (!targets) {\n targets = new Set<string>();\n adjacency.set(entry.from, targets);\n }\n targets.add(entry.to);\n allTargets.add(entry.to);\n }\n\n // Find roots (nodes that are sources but never targets)\n const roots: string[] = [];\n for (const from of adjacency.keys()) {\n if (!allTargets.has(from)) {\n roots.push(from);\n }\n }\n\n // If no clear root, try all sources\n const starts = roots.length > 0 ? roots : [...adjacency.keys()];\n\n // Walk from each start and measure chain length\n for (const start of starts) {\n let current = start;\n let length = 1;\n const visited = new Set<string>([current]);\n\n while (true) {\n const nexts = adjacency.get(current);\n if (!nexts || nexts.size === 0) break;\n\n // Follow the first unvisited successor (linear chain)\n let advanced = false;\n for (const next of nexts) {\n if (!visited.has(next)) {\n visited.add(next);\n current = next;\n length++;\n advanced = true;\n break;\n }\n }\n\n if (!advanced) break;\n }\n\n // A chain of 3+ nodes qualifies as wizard-flow\n if (length >= 3) {\n return true;\n }\n }\n\n return false;\n}\n\n// ============================================================================\n// Public API\n// ============================================================================\n\n/**\n * Detect the best layout strategy based on orbital count and event wiring.\n *\n * Heuristic:\n * 1. Sequential event chain detected -> 'wizard-flow'\n * 2. 1 orbital -> 'single'\n * 3. 2-4 orbitals -> 'tabs'\n * 4. 5+ orbitals -> 'sidebar'\n */\nexport function detectLayoutStrategy(\n orbitals: OrbitalDefinition[],\n eventWiring?: EventWiringEntry[],\n): LayoutStrategy {\n // Check for sequential chain first (takes priority)\n if (eventWiring && eventWiring.length > 0 && hasSequentialChain(eventWiring)) {\n return 'wizard-flow';\n }\n\n const count = orbitals.length;\n\n if (count <= 1) {\n return 'single';\n }\n\n if (count <= 4) {\n return 'tabs';\n }\n\n return 'sidebar';\n}\n","/**\n * Event Wiring\n *\n * Applies cross-orbital event wiring to orbital definitions.\n * Adds emits/listens declarations to traits so they can communicate\n * across orbital boundaries.\n *\n * @packageDocumentation\n */\n\nimport type { OrbitalDefinition } from '../types/orbital.js';\nimport type { Trait, TraitEventContract, TraitEventListener } from '../types/trait.js';\nimport { isInlineTrait } from '../types/trait.js';\n\n// ============================================================================\n// Types\n// ============================================================================\n\n/**\n * A single event wiring entry connecting two traits across orbitals.\n */\nexport interface EventWiringEntry {\n /** Source trait name or orbital name */\n from: string;\n /** Event name (UPPER_SNAKE_CASE) */\n event: string;\n /** Target trait name or orbital name */\n to: string;\n /** Event to trigger on the listener side */\n triggers: string;\n}\n\n// ============================================================================\n// Helpers\n// ============================================================================\n\n/**\n * Find a trait by name across all orbitals.\n * Only inline traits can be mutated; string/ref traits are skipped.\n * Returns the inline Trait object if found, or null.\n */\nfunction findInlineTrait(\n orbitals: OrbitalDefinition[],\n name: string,\n): Trait | null {\n for (const orbital of orbitals) {\n for (const traitRef of orbital.traits) {\n if (isInlineTrait(traitRef) && traitRef.name === name) {\n return traitRef;\n }\n }\n }\n return null;\n}\n\n/**\n * Check if an emit already exists in the list.\n * @internal\n */\nfunction hasEmit(emits: TraitEventContract[], event: string): boolean {\n return emits.some((e) => e.event === event);\n}\n\n/**\n * Check if a listen already exists in the list.\n * @internal\n */\nfunction hasListen(\n listens: TraitEventListener[],\n event: string,\n triggers: string,\n): boolean {\n return listens.some((l) => l.event === event && l.triggers === triggers);\n}\n\n// ============================================================================\n// Public API\n// ============================================================================\n\n/**\n * Apply event wiring to orbital definitions.\n *\n * For each wiring entry:\n * 1. Find the source trait and add an external emit (if not already present)\n * 2. Find the target trait and add an external listen (if not already present)\n *\n * Returns a new array of orbitals with wiring applied (deep-cloned).\n */\nexport function applyEventWiring(\n orbitals: OrbitalDefinition[],\n wiring: EventWiringEntry[],\n): OrbitalDefinition[] {\n // Deep clone to avoid mutating input\n const cloned: OrbitalDefinition[] = JSON.parse(\n JSON.stringify(orbitals),\n ) as OrbitalDefinition[];\n\n for (const entry of wiring) {\n // Wire the source: add emit\n const sourceTrait = findInlineTrait(cloned, entry.from);\n if (sourceTrait) {\n if (!sourceTrait.emits) {\n sourceTrait.emits = [];\n }\n if (!hasEmit(sourceTrait.emits, entry.event)) {\n sourceTrait.emits.push({\n event: entry.event,\n scope: 'external',\n });\n }\n }\n\n // Wire the target: add listen\n const targetTrait = findInlineTrait(cloned, entry.to);\n if (targetTrait) {\n if (!targetTrait.listens) {\n targetTrait.listens = [];\n }\n if (!hasListen(targetTrait.listens, entry.event, entry.triggers)) {\n targetTrait.listens.push({\n event: entry.event,\n triggers: entry.triggers,\n scope: 'external',\n });\n }\n }\n }\n\n return cloned;\n}\n","/**\n * Compose Behaviors\n *\n * Main entry point for composing multiple orbital definitions into\n * a single OrbitalSchema application. Handles event wiring, layout\n * strategy detection, and page generation.\n *\n * @packageDocumentation\n */\n\nimport type { OrbitalDefinition } from '../types/orbital.js';\nimport type { OrbitalSchema } from '../types/schema.js';\nimport type { IdentityLedger, LedgerEntry } from '../types/identity.js';\nimport type { Page } from '../types/page.js';\nimport type { EventWiringEntry } from './event-wiring.js';\nimport { applyEventWiring } from './event-wiring.js';\nimport type { LayoutStrategy } from './layout-strategy.js';\nimport { detectLayoutStrategy } from './layout-strategy.js';\n\n/** True when an input is a whole OrbitalSchema (carries an `orbitals` array). */\nfunction isSchema(input: OrbitalDefinition | OrbitalSchema): input is OrbitalSchema {\n return 'orbitals' in input && Array.isArray((input as OrbitalSchema).orbitals);\n}\n\n/** Unwrap OrbitalSchema | OrbitalDefinition inputs to a flat OrbitalDefinition[]. */\nexport function asDefinitions(inputs: (OrbitalDefinition | OrbitalSchema)[]): OrbitalDefinition[] {\n return inputs.flatMap(input =>\n isSchema(input) ? (input.orbitals as OrbitalDefinition[]) : [input],\n );\n}\n\n/**\n * Union the identity ledgers of the schema-shaped inputs (V4 Phase 6, runtime\n * mirror of the Rust compose ledger merge). Bare OrbitalDefinition inputs and\n * ledger-less schemas contribute nothing (pre-V4 back-compat: no ledger in →\n * no ledger out). Entries are keyed by id; first occurrence in input order wins\n * for a duplicate id — the rows share one identity, so a `curName` divergence\n * across slices resolves deterministically to the earliest input's row. Output\n * entries are sorted by id for stable, order-independent composition.\n */\nexport function mergeLedgers(inputs: (OrbitalDefinition | OrbitalSchema)[]): IdentityLedger | undefined {\n const merged = new Map<string, LedgerEntry>();\n let sawLedger = false;\n for (const input of inputs) {\n if (!isSchema(input) || input.ledger === undefined) continue;\n sawLedger = true;\n for (const [id, entry] of Object.entries(input.ledger.entries)) {\n if (!merged.has(id)) merged.set(id, entry);\n }\n }\n if (!sawLedger) return undefined;\n const entries: Record<string, LedgerEntry> = {};\n for (const [id, entry] of [...merged.entries()].sort(\n ([a], [b]) => (a < b ? -1 : a > b ? 1 : 0),\n )) {\n entries[id] = entry;\n }\n return { schemaVersion: 1, entries };\n}\n\n/**\n * Composed `schemaVersion` = max over the schema-shaped inputs that declare one\n * (the newest IR version any slice carries; collapses to the shared value when\n * uniform). Undefined when no input declares a version — pre-V4 stays unversioned.\n */\nfunction mergeSchemaVersions(inputs: (OrbitalDefinition | OrbitalSchema)[]): number | undefined {\n let max: number | undefined;\n for (const input of inputs) {\n if (!isSchema(input) || input.schemaVersion === undefined) continue;\n max = max === undefined ? input.schemaVersion : Math.max(max, input.schemaVersion);\n }\n return max;\n}\n\n// ============================================================================\n// Types\n// ============================================================================\n\n/**\n * Input for composing behaviors into an application.\n */\nexport interface ComposeBehaviorsInput {\n /** Application name */\n appName: string;\n /** Orbital definitions (or schemas) to compose */\n orbitals: (OrbitalDefinition | OrbitalSchema)[];\n /** Layout strategy override, or 'auto' to detect */\n layoutStrategy?: LayoutStrategy | 'auto';\n /** Cross-orbital event wiring */\n eventWiring?: EventWiringEntry[];\n /** Optional entity name mappings (original -> renamed) */\n entityMappings?: Record<string, string>;\n}\n\n/**\n * Result of composing behaviors.\n */\nexport interface ComposeBehaviorsResult {\n /** The composed OrbitalSchema */\n schema: OrbitalSchema;\n /** Layout metadata */\n layout: { strategy: LayoutStrategy; pageCount: number };\n /** Wiring metadata */\n wiring: { connections: number };\n}\n\n// ============================================================================\n// Page Generation\n// ============================================================================\n\nfunction toKebabCase(name: string): string {\n return name\n .replace(/([a-z])([A-Z])/g, '$1-$2')\n .replace(/[\\s_]+/g, '-')\n .toLowerCase();\n}\n\n/**\n * Generate pages for each orbital based on the layout strategy.\n *\n * For strategies that produce one page per orbital (sidebar, tabs, wizard-flow),\n * each orbital gets a page at `/<kebab-name>` with `isInitial` on the first.\n *\n * For 'dashboard', all orbitals share a single page.\n * For 'single', the lone orbital gets a single root page.\n */\nfunction generatePages(\n orbitals: OrbitalDefinition[],\n strategy: LayoutStrategy,\n): Page[] {\n switch (strategy) {\n case 'single': {\n const orbital = orbitals[0];\n const name = orbital?.name ?? 'Main';\n return [\n {\n name: `${name}Page`,\n path: '/',\n isInitial: true,\n primaryEntity: getEntityName(orbital),\n },\n ];\n }\n\n case 'dashboard': {\n return [\n {\n name: 'DashboardPage',\n path: '/',\n viewType: 'dashboard',\n isInitial: true,\n },\n ];\n }\n\n case 'sidebar':\n case 'tabs':\n case 'wizard-flow': {\n return orbitals.map((orbital, index) => ({\n name: `${orbital.name}Page`,\n path: index === 0 ? '/' : `/${toKebabCase(orbital.name)}`,\n isInitial: index === 0,\n primaryEntity: getEntityName(orbital),\n }));\n }\n }\n}\n\n/**\n * Extract entity name from an orbital definition.\n * Handles both inline entities and string references.\n */\nfunction getEntityName(orbital: OrbitalDefinition | undefined): string | undefined {\n if (!orbital) return undefined;\n const entity = orbital.entity;\n if (typeof entity === 'string') {\n // Reference like \"Alias.entity\" - extract the alias as entity name\n return entity.replace('.entity', '');\n }\n return entity.name;\n}\n\n// ============================================================================\n// Public API\n// ============================================================================\n\n/**\n * Compose multiple orbital definitions into a single application schema.\n *\n * Steps:\n * 1. Apply event wiring (adds emits/listens to traits)\n * 2. Detect or use provided layout strategy\n * 3. Generate pages based on the strategy\n * 4. Build the final OrbitalSchema\n */\nexport function composeBehaviors(\n input: ComposeBehaviorsInput,\n): ComposeBehaviorsResult {\n const {\n appName,\n orbitals: rawInputs,\n layoutStrategy: strategyInput,\n eventWiring,\n } = input;\n\n // Unwrap any OrbitalSchema inputs to OrbitalDefinition[]\n const rawOrbitals = asDefinitions(rawInputs);\n\n // Step 1: Apply event wiring\n const wiredOrbitals =\n eventWiring && eventWiring.length > 0\n ? applyEventWiring(rawOrbitals, eventWiring)\n : rawOrbitals;\n\n // Step 2: Determine layout strategy\n const strategy: LayoutStrategy =\n !strategyInput || strategyInput === 'auto'\n ? detectLayoutStrategy(wiredOrbitals, eventWiring)\n : strategyInput;\n\n // Step 3: Generate pages\n const pages = generatePages(wiredOrbitals, strategy);\n\n // Step 4: Assign generated pages to orbitals (merge, don't replace existing)\n const orbitalsWithPages = wiredOrbitals.map((orbital, index) => {\n // If the orbital already has pages, keep them\n if (orbital.pages && orbital.pages.length > 0) {\n return orbital;\n }\n // An orbital import's pages come whole from the imported orbital (LOLO §8b).\n if (orbital.reference !== undefined) {\n return orbital;\n }\n\n // Assign the generated page for this orbital\n const page = strategy === 'dashboard' || strategy === 'single'\n ? pages[0]\n : pages[index];\n\n return {\n ...orbital,\n pages: page ? [page] : [],\n };\n });\n\n // Step 5: Union identity information from the schema-shaped inputs.\n const ledger = mergeLedgers(rawInputs);\n const schemaVersion = mergeSchemaVersions(rawInputs);\n\n // Step 6: Build the schema. Identity keys are added only when present so\n // ledger-less inputs compose byte-identically to the pre-V4 output.\n const schema: OrbitalSchema = {\n name: appName,\n version: '1.0.0',\n orbitals: orbitalsWithPages,\n ...(schemaVersion !== undefined ? { schemaVersion } : {}),\n ...(ledger !== undefined ? { ledger } : {}),\n };\n\n return {\n schema,\n layout: {\n strategy,\n pageCount: pages.length,\n },\n wiring: {\n connections: eventWiring?.length ?? 0,\n },\n };\n}\n","/**\n * Expectation shape union — the JS composer's merge of two `expects` shapes field by field\n * (requiredness and value lists widen, ranges narrow, nested properties and items merge;\n * incompatible constraints throw). Twin of `orbital-core` `expects::merge_expectation_shape`,\n * which the derivation (now in `orb`) uses.\n *\n * @packageDocumentation\n */\n\nimport { canonicalJson } from './types/visit-key.js';\nimport type { EventPayloadValue } from './types/expression.js';\nimport { EntityFieldSchema, type EntityField } from './types/field.js';\n\nexport function mergeExpectationShape(existing: readonly EntityField[] | undefined, incoming: readonly EntityField[] | undefined): EntityField[] | undefined {\n if (existing === undefined && incoming === undefined) return undefined;\n const mergeField = (prior: EntityField, field: EntityField): EntityField => {\n const fail = (): never => { throw new Error(`expectation shape mismatch — field \"${field.name ?? prior.name}\" has incompatible type constraints`); };\n const priorType = prior.type === 'enum' ? 'string' : prior.type;\n const fieldType = field.type === 'enum' ? 'string' : field.type;\n if (priorType !== fieldType) return fail();\n if (prior.type === 'relation' && field.type === 'relation') {\n if (prior.relation.entityId !== undefined && field.relation.entityId !== undefined && prior.relation.entityId !== field.relation.entityId) return fail();\n const relation = (value: typeof prior.relation): EventPayloadValue => ({ entity: value.entity, cardinality: value.cardinality, field: value.field, onDelete: value.onDelete });\n if (canonicalJson(relation(prior.relation)) !== canonicalJson(relation(field.relation))) return fail();\n }\n if (prior.type === 'tuple' && field.type === 'tuple' && canonicalJson(Object.keys(prior.properties).sort()) !== canonicalJson(Object.keys(field.properties).sort())) return fail();\n const min = prior.min === undefined ? field.min : field.min === undefined ? prior.min : Math.max(prior.min, field.min);\n const max = prior.max === undefined ? field.max : field.max === undefined ? prior.max : Math.min(prior.max, field.max);\n if (min !== undefined && max !== undefined && min > max) return fail();\n let merged: EntityField = { ...prior, ...(prior.required === true || field.required === true ? { required: true } : {}), ...(min !== undefined ? { min } : {}), ...(max !== undefined ? { max } : {}) };\n if (prior.type === 'relation' && field.type === 'relation') merged = { ...merged, type: 'relation', relation: { ...prior.relation, ...(prior.relation.entityId === undefined && field.relation.entityId !== undefined ? { entityId: field.relation.entityId } : {}) } };\n if ('values' in prior || 'values' in field) {\n const values = [...new Set([...('values' in prior ? prior.values ?? [] : []), ...('values' in field ? field.values ?? [] : [])])];\n if (values.length > 0) merged = EntityFieldSchema.parse({ ...merged, values });\n }\n if (prior.properties !== undefined || field.properties !== undefined) {\n const properties = { ...prior.properties };\n for (const [key, value] of Object.entries(field.properties ?? {})) properties[key] = properties[key] === undefined ? value : mergeField(properties[key], value);\n merged = { ...merged, properties };\n }\n if ('items' in prior || 'items' in field) {\n const priorItems = 'items' in prior ? prior.items : undefined;\n const incomingItems = 'items' in field ? field.items : undefined;\n const items = priorItems === undefined ? incomingItems : incomingItems === undefined ? priorItems : mergeField(priorItems, incomingItems);\n if (items !== undefined) merged = EntityFieldSchema.parse({ ...merged, items });\n }\n return merged;\n };\n const merged = [...(existing ?? [])];\n for (const field of incoming ?? []) {\n const index = merged.findIndex(candidate => candidate.name === field.name);\n const prior = merged[index];\n if (prior === undefined) merged.push(field);\n else merged[index] = mergeField(prior, field);\n }\n return merged;\n}\n","/**\n * One structural rename of an entity across a set of orbitals — the positions the compiler's\n * visitors read an entity name from (`orbital-core/src/stamp.rs`, `orbital-compiler`'s\n * `inline/rewrite.rs` `visit_entity_slots` + `ENTITY_VALUED_PROPS`, `rename_entities_in_trait`,\n * relation/page/expects passes), never a text search:\n *\n * - declarations: an object carrying `name` + `fields` (primary/auxiliary entities, a trait's\n * `sourceEntityDefinition` and `dataEntities`), optionally given a new `collection`;\n * - `@Name` / `@Name.<path>` tokens anywhere (guards, effects, ticks, listens, policies, config);\n * - the entity slot of `[\"fetch\", N]`, `[\"persist\", create|update|delete, N]`, `[\"ref\", N]`\n * (exactly two elements) and `[\"spawn\", N]`;\n * - entity-valued keys (`entity`, `source`, `entityType`, `linkedEntity`, `primaryEntity`,\n * `payloadEntity`, `extends`) and payload `type` references (`N`, `[N]`, `projectedFrom.type`);\n * - config fields typed `entity`, `expects` entries, and the `entityRefIds` key (its id stays);\n * - an effect-row use's `resource` when its `kind` is `persist` or `fetch`.\n *\n * Ids are kept, so readers that resolve by id still land on the renamed declaration. Pure: the\n * input is not mutated. Used where an app namespaces a colliding organism (`compose-app.ts`).\n */\nimport type { OrbitalDefinition, OrbitalSchema, Trait } from '../types/index.js';\nimport { isCallSiteConfigDeclaration, ledgerRename } from '../types/index.js';\nimport type { JsonObject, JsonValue } from '../types/json.js';\nimport { isJsonObject } from '../types/json.js';\n\nconst ENTITY_VALUED_KEYS: ReadonlySet<string> = new Set(['entity', 'source', 'entityType', 'linkedEntity', 'primaryEntity', 'payloadEntity', 'extends']);\nconst PERSIST_ACTIONS: ReadonlySet<string> = new Set(['create', 'upsert', 'update', 'delete']);\n\nexport interface RenameEntityOptions {\n /** The renamed declaration's collection, set explicitly (the compiler and runtime derive differently). */\n collection?: string;\n /**\n * The atom's own declaration of the trait a reference names (`Alias.traits.T`, resolved through\n * the orbital's `uses`). A call site restates knob values and type arguments without their types,\n * so the atom is the only source for which knobs are `entity`-typed (`targetEntity : entity`) and\n * which type parameters are Entity-kind; callers that hold the registry supply it. Without it\n * such values are left as they are.\n */\n atomTraitOf?: (orbital: OrbitalDefinition, traitRef: string) => Trait | undefined;\n}\n\n/** A trait reference with its atom-declared entity-typed knobs and Entity-kind type arguments renamed. */\nfunction renameAtomEntitySlots(trait: JsonValue, atomOf: (ref: string) => Trait | undefined, from: string, to: string): JsonValue {\n if (!isJsonObject(trait) || typeof trait['ref'] !== 'string') return trait;\n const atom = atomOf(trait['ref']);\n if (atom === undefined) return trait;\n const next: JsonObject = { ...trait };\n // No `linkedEntity` binds the atom's own entity by name: renaming that name makes the binding explicit.\n if (trait['linkedEntity'] === undefined && atom.linkedEntity === from) next['linkedEntity'] = to;\n const config = trait['config'];\n if (isJsonObject(config)) {\n const renamed: JsonObject = { ...config };\n for (const [knob, declared] of Object.entries(atom.config ?? {})) {\n const field = renamed[knob];\n if (isCallSiteConfigDeclaration(declared) && declared.type === 'entity' && isJsonObject(field) && field['default'] === from) renamed[knob] = { ...field, default: to };\n }\n next['config'] = renamed;\n }\n const typeArgs = trait['typeArgs'];\n if (isJsonObject(typeArgs)) {\n const entityParams = new Set((atom.typeParams ?? []).filter((p) => p.kind === 'Entity').map((p) => p.name));\n next['typeArgs'] = Object.fromEntries(Object.entries(typeArgs).map(([param, value]) => [param, entityParams.has(param) && value === from ? to : value]));\n }\n return next;\n}\n\nfunction renameToken(value: string, from: string, to: string): string {\n if (value === `@${from}`) return `@${to}`;\n if (value.startsWith(`@${from}.`)) return `@${to}${value.slice(from.length + 1)}`;\n return value;\n}\n\nfunction walk(node: JsonValue, from: string, to: string, options: RenameEntityOptions): JsonValue {\n if (typeof node === 'string') return renameToken(node, from, to);\n if (Array.isArray(node)) {\n const out = node.map((item) => walk(item, from, to, options));\n const op = node[0];\n if ((op === 'fetch' || op === 'spawn') && node[1] === from) out[1] = to;\n if (op === 'ref' && node.length === 2 && node[1] === from) out[1] = to;\n if (op === 'persist' && typeof node[1] === 'string' && PERSIST_ACTIONS.has(node[1]) && node[2] === from) out[2] = to;\n return out;\n }\n if (!isJsonObject(node)) return node;\n\n const out: JsonObject = {};\n for (const [key, value] of Object.entries(node)) {\n if (key === 'entityRefIds' && isJsonObject(value)) {\n out[key] = Object.fromEntries(Object.entries(value).map(([name, id]) => [name === from ? to : name, id]));\n continue;\n }\n if (typeof value === 'string' && ENTITY_VALUED_KEYS.has(key) && value === from) {\n out[key] = to;\n continue;\n }\n if (key === 'type' && typeof value === 'string' && (value === from || value === `[${from}]`)) {\n out[key] = value === from ? to : `[${to}]`;\n continue;\n }\n out[key] = walk(value, from, to, options);\n }\n\n const isDeclaration = node['name'] === from && Array.isArray(node['fields']);\n if (isDeclaration) {\n out['name'] = to;\n if (options.collection !== undefined) out['collection'] = options.collection;\n }\n // An effect-row use: `resource` is the entity only for the data effects (a slot, an event or a path otherwise).\n if ((node['kind'] === 'persist' || node['kind'] === 'fetch') && node['resource'] === from) out['resource'] = to;\n const isExpectation = node['name'] === from && (node['kind'] === 'entity' || node['kind'] === 'identity');\n if (isExpectation) out['name'] = to;\n if (node['type'] === 'entity' && node['default'] === from) out['default'] = to;\n return out;\n}\n\n/** `orbitals` with entity `from` renamed `to` at every position an entity name is read from. */\nexport function renameEntity(\n orbitals: ReadonlyArray<OrbitalDefinition>,\n from: string,\n to: string,\n options: RenameEntityOptions = {},\n): OrbitalDefinition[] {\n if (from === to) return [...orbitals];\n return orbitals.map((orbital) => {\n const tree: JsonValue = JSON.parse(JSON.stringify(orbital));\n const atomTraitOf = options.atomTraitOf;\n if (atomTraitOf !== undefined && isJsonObject(tree)) {\n const atomOf = (ref: string): Trait | undefined => atomTraitOf(orbital, ref);\n if (Array.isArray(tree['traits'])) tree['traits'] = tree['traits'].map((t) => renameAtomEntitySlots(t, atomOf, from, to));\n if (Array.isArray(tree['pages'])) {\n tree['pages'] = tree['pages'].map((page) => (isJsonObject(page) && Array.isArray(page['traits'])\n ? { ...page, traits: page['traits'].map((t) => renameAtomEntitySlots(t, atomOf, from, to)) }\n : page));\n }\n }\n const renamed: OrbitalDefinition = JSON.parse(JSON.stringify(walk(tree, from, to, options)));\n return renamed;\n });\n}\n\n/** The ids of the declarations named `name` (an entity declaration carries its own stable id). */\nfunction declarationIds(orbitals: ReadonlyArray<OrbitalDefinition>, name: string): string[] {\n const ids: string[] = [];\n const visit = (node: JsonValue): void => {\n if (Array.isArray(node)) {\n node.forEach(visit);\n return;\n }\n if (!isJsonObject(node)) return;\n if (node['name'] === name && Array.isArray(node['fields']) && typeof node['id'] === 'string') ids.push(node['id']);\n Object.values(node).forEach(visit);\n };\n visit(JSON.parse(JSON.stringify(orbitals)));\n return ids;\n}\n\n/** `renameEntity` over a whole schema: its orbitals, and the ledger rows of the renamed declarations. */\nexport function renameEntityInSchema(\n schema: OrbitalSchema,\n from: string,\n to: string,\n options: RenameEntityOptions = {},\n at: string = new Date().toISOString(),\n): OrbitalSchema {\n const orbitals = renameEntity(schema.orbitals, from, to, options);\n let ledger = schema.ledger;\n if (ledger !== undefined) {\n for (const id of declarationIds(schema.orbitals, from)) {\n if (ledger.entries[id] !== undefined) ledger = ledgerRename(ledger, id, to, at);\n }\n }\n return { ...schema, orbitals, ...(ledger !== undefined ? { ledger } : {}) };\n}\n\n/** A reference trait whose atom fixes its entity binding (not `@rebindable`). */\nexport interface EntityRenameBlocker {\n orbitalName: string;\n traitName: string;\n traitRef: string;\n}\n\n/**\n * The reference traits that pin entity `name`: an atom that does not mark its binding\n * `@rebindable` owns the entity it binds, so renaming it is `ORB_T_ENTITY_NOT_REBINDABLE`. An atom\n * the resolver cannot find pins it too — rebindability is never assumed.\n */\nexport function entityRenameBlockers(\n orbitals: ReadonlyArray<OrbitalDefinition>,\n name: string,\n atomTraitOf: (orbital: OrbitalDefinition, traitRef: string) => Trait | undefined,\n): EntityRenameBlocker[] {\n const isRebindable = (orbital: OrbitalDefinition, ref: string): boolean => atomTraitOf(orbital, ref)?.entityRebindable === true;\n const blockers: EntityRenameBlocker[] = [];\n for (const orbital of orbitals) {\n for (const trait of orbital.traits ?? []) {\n if (typeof trait !== 'object' || !('ref' in trait) || typeof trait.ref !== 'string') continue;\n const bound = trait.linkedEntity ?? atomTraitOf(orbital, trait.ref)?.linkedEntity;\n if (bound !== name || isRebindable(orbital, trait.ref)) continue;\n blockers.push({ orbitalName: orbital.name, traitName: trait.name ?? trait.ref, traitRef: trait.ref });\n }\n }\n return blockers;\n}\n\n/**\n * `atomTraitOf` for a registry: `Alias.traits.T` resolved through the orbital's `uses` to the\n * behavior it imports (the last segment of `from`, `std/behaviors/std-x` → `std-x`), then to that\n * behavior's declaration of trait `T`. `loadBehaviorOrb` is the caller's registry; each behavior\n * is loaded once.\n */\nexport function atomTraitResolver(\n loadBehaviorOrb: (behaviorName: string) => OrbitalSchema | null,\n): (orbital: OrbitalDefinition, traitRef: string) => Trait | undefined {\n const loaded = new Map<string, OrbitalSchema | null>();\n return (orbital, traitRef) => {\n const [alias, kind, traitName] = traitRef.split('.');\n if (kind !== 'traits' || traitName === undefined) return undefined;\n const use = (orbital.uses ?? []).find((u) => u.as === alias);\n if (use === undefined) return undefined;\n const behavior = use.from.split('/').pop() ?? use.from;\n if (!loaded.has(behavior)) loaded.set(behavior, loadBehaviorOrb(behavior));\n for (const atomOrbital of loaded.get(behavior)?.orbitals ?? []) {\n for (const trait of atomOrbital.traits ?? []) {\n if (typeof trait === 'object' && !('ref' in trait) && trait.name === traitName) return trait;\n }\n }\n return undefined;\n };\n}\n\nfunction renameOrbitalNode(node: JsonValue, from: string, to: string): JsonValue {\n if (Array.isArray(node)) return node.map((item) => renameOrbitalNode(item, from, to));\n if (!isJsonObject(node)) return node;\n const out: JsonObject = {};\n for (const [key, value] of Object.entries(node)) out[key] = renameOrbitalNode(value, from, to);\n if (node['kind'] === 'orbital' && node['orbital'] === from) out['orbital'] = to;\n return out;\n}\n\n/**\n * `orbitals` with orbital `from` held as `to`: its declaration and every listen sourced from it\n * (`{ kind: 'orbital', orbital, trait }`, the compiler's listen-source rewrite). For an app that\n * holds an organism's orbital under that organism's prefix, applied over the organism's own files.\n */\nexport function renameOrbital(orbitals: ReadonlyArray<OrbitalDefinition>, from: string, to: string): OrbitalDefinition[] {\n if (from === to) return [...orbitals];\n return orbitals.map((orbital) => {\n const renamed: OrbitalDefinition = JSON.parse(JSON.stringify(renameOrbitalNode(JSON.parse(JSON.stringify(orbital)), from, to)));\n return renamed.name === from ? { ...renamed, name: to } : renamed;\n });\n}\n","import type { OrbitalDefinition } from './types/orbital.js';\nimport type { SExpr } from './types/expression.js';\nimport type { TypedEffect } from './types/effect.js';\nimport { isInlineTrait } from './types/trait.js';\n\nfunction touchesRecord(effect: TypedEffect | SExpr, name: string): boolean {\n if (!Array.isArray(effect)) return false;\n if (effect[0] === 'fetch' && effect[1] === name) return true;\n if (effect[0] === 'persist' && effect[2] === name) return true;\n for (const item of effect) {\n if (Array.isArray(item) && touchesRecord(item, name)) return true;\n }\n return false;\n}\n\n/** True when the orbital's own inline traits fetch or persist its primary record. */\nexport function orbitalTouchesOwnRecord(orbital: OrbitalDefinition): boolean {\n const entity = orbital.entity;\n const name = typeof entity === 'object' && entity !== null && 'name' in entity ? entity.name : undefined;\n if (typeof name !== 'string') return false;\n return (orbital.traits ?? []).some((trait) =>\n isInlineTrait(trait) && (trait.stateMachine?.transitions ?? []).some((t) => (t.effects ?? []).some((e) => touchesRecord(e, name))),\n );\n}\n","/**\n * `applyParamsToOrb` — pure runtime overlay function. Equivalent to the body\n * the std-ts codegen emits inline for every std factory, lifted out so that:\n * 1. team-published behaviors (Firestore-stored) can dispatch through the\n * same overlay as std behaviors;\n * 2. std factories can collapse to one-line wrappers calling this function.\n *\n * Reference: `docs/Almadar_Studio_SDK.md` §7.4.2.\n *\n * Pure data → data. No I/O.\n *\n * @packageDocumentation\n */\n\nimport type {\n Effect,\n Entity,\n EntityField,\n Expression,\n OrbitalDefinition,\n OrbitalEntity,\n OrbitalSchema,\n PageRefObject,\n PageTraitRef,\n SExpr,\n CallSiteConfig,\n CallSiteConfigEntry,\n Trait,\n TraitConfigValue,\n TraitEventContract,\n TraitEventListener,\n TraitReference,\n TraitTick,\n TraitId,\n} from '../types/index.js';\nimport {\n isCallSiteConfigDeclaration,\n isConfigFieldSchema,\n mergeCallSiteConfigOverrides,\n overrideDeclaredKnobs,\n persistenceModeAllowsOverrides,\n ledgerRename,\n} from '../types/index.js';\nimport type {\n MakePageRefOpts,\n MakeTraitRefOpts,\n} from '../builders.js';\nimport {\n makeOrbitalWithUses,\n makePageRef,\n makeTraitRef,\n} from '../builders.js';\nimport type { OrbitalParamsManifest } from './manifest-types.js';\nimport type {\n OrbitalFactoryParams,\n OrbitalTraitOverride,\n ParamValidationResult,\n} from './types.js';\nimport { orbitalTouchesOwnRecord } from '../data-bearing.js';\n\n/**\n * Structural validation of caller-supplied params against the manifest.\n * Rejects unknown top-level keys and unknown `traitOverrides` keys (the\n * latter against the manifest's `traitNames` allow-list).\n */\nexport function validateOrbitalFactoryParams(\n manifest: OrbitalParamsManifest,\n raw: object,\n): ParamValidationResult {\n if (raw === null || Array.isArray(raw)) {\n return {\n ok: false,\n error: { kind: 'not-object', received: Array.isArray(raw) ? 'array' : 'null' },\n };\n }\n\n const ALLOWED_KEYS = new Set<string>(manifest.paramFields.map((f) => f.name));\n for (const key of Object.keys(raw)) {\n if (!ALLOWED_KEYS.has(key)) {\n return { ok: false, error: { kind: 'unknown-key', key } };\n }\n }\n\n const candidate = raw as OrbitalFactoryParams;\n if (candidate.traitOverrides !== undefined) {\n const to = candidate.traitOverrides;\n if (to === null || typeof to !== 'object' || Array.isArray(to)) {\n return {\n ok: false,\n error: {\n kind: 'trait-overrides-not-object',\n received: Array.isArray(to) ? 'array' : typeof to,\n },\n };\n }\n const allowed = new Set<string>(manifest.traitNames);\n for (const traitName of Object.keys(to)) {\n if (!allowed.has(traitName)) {\n return {\n ok: false,\n error: {\n kind: 'unknown-trait-override',\n trait: traitName,\n allowed: manifest.traitNames,\n },\n };\n }\n }\n }\n\n if (candidate.config !== undefined) {\n const cfg = candidate.config;\n if (cfg === null || typeof cfg !== 'object' || Array.isArray(cfg)) {\n return {\n ok: false,\n error: { kind: 'config-not-object', received: Array.isArray(cfg) ? 'array' : typeof cfg },\n };\n }\n const allowedKeys = manifest.configKeys ?? [];\n for (const key of Object.keys(cfg)) {\n if (!allowedKeys.includes(key)) {\n return { ok: false, error: { kind: 'unknown-config-key', key, allowed: allowedKeys } };\n }\n }\n }\n\n return { ok: true, params: candidate };\n}\n\ninterface OverlayContext {\n readonly canonicalEntityName: string;\n readonly canonicalEntity: OrbitalEntity;\n readonly dataBearing: boolean;\n}\n\nfunction assertResolvedEntity(\n entity: OrbitalSchema['orbitals'][number]['entity'],\n orbitalName: string,\n orbName: string,\n): OrbitalEntity {\n if (typeof entity === 'string') {\n throw new Error(\n `applyParamsToOrb: orbital \"${orbitalName}\" in orb \"${orbName}\" has an unresolved entity reference (string form). Pass a resolved .orb.`,\n );\n }\n if ('extends' in entity) {\n throw new Error(\n `applyParamsToOrb: orbital \"${orbitalName}\" in orb \"${orbName}\" has an unresolved EntityCall (\"extends\" form). Pass a resolved .orb.`,\n );\n }\n return entity;\n}\n\nfunction findOrbitalOrThrow(\n orb: OrbitalSchema,\n orbitalName: string,\n): OrbitalSchema['orbitals'][number] {\n const orbital = orb.orbitals.find((o) => o.name === orbitalName);\n if (!orbital) {\n throw new Error(\n `applyParamsToOrb: orbital \"${orbitalName}\" not found in orb \"${orb.name}\". Available: ${orb.orbitals\n .map((o) => o.name)\n .join(', ')}`,\n );\n }\n return orbital;\n}\n\nfunction buildEntity(\n ctx: OverlayContext,\n effectiveName: string,\n effectiveCollection: string | undefined,\n params: OrbitalFactoryParams,\n): Entity {\n const canonicalFields: readonly EntityField[] = Array.isArray(ctx.canonicalEntity.fields)\n ? ctx.canonicalEntity.fields\n : [];\n\n const extras: readonly EntityField[] = params.fields ?? [];\n\n for (const f of extras) {\n if (f.type === 'enum') {\n if (!Array.isArray(f.values) || f.values.length === 0) {\n throw new Error(\n `Field \"${f.name ?? '<unnamed>'}\" (type: \"enum\") requires a non-empty \\`values: string[]\\` array. ` +\n `Got: ${f.values === undefined ? 'undefined' : JSON.stringify(f.values)}.`,\n );\n }\n }\n if (f.type === 'relation') {\n const rel = f.relation;\n if (!rel || typeof rel.entity !== 'string' || rel.entity.length === 0) {\n throw new Error(\n `Field \"${f.name ?? '<unnamed>'}\" (type: \"relation\") requires \\`relation: { entity: <EntityName>, cardinality: \"one\" | \"many\" }\\`. ` +\n `Got: ${rel === undefined ? 'undefined' : JSON.stringify(rel)}.`,\n );\n }\n if (rel.cardinality !== 'one' && rel.cardinality !== 'many') {\n throw new Error(\n `Field \"${f.name ?? '<unnamed>'}\" (type: \"relation\") requires \\`relation.cardinality: \"one\" | \"many\"\\`. ` +\n `Got: ${rel.cardinality === undefined ? 'undefined' : JSON.stringify(rel.cardinality)}.`,\n );\n }\n }\n }\n\n let mergedFields: readonly EntityField[];\n if (extras.length === 0) {\n mergedFields = canonicalFields;\n } else {\n const extraNames = new Set(extras.map((f) => f.name));\n mergedFields = [\n ...canonicalFields.filter((f) => !extraNames.has(f.name)),\n ...extras,\n ];\n }\n\n const allowPersistenceOverride = persistenceModeAllowsOverrides(\n ctx.canonicalEntity.persistence,\n ctx.dataBearing,\n );\n\n const entity: Entity = {\n name: effectiveName,\n persistence: allowPersistenceOverride\n ? (params.persistence ?? ctx.canonicalEntity.persistence)\n : ctx.canonicalEntity.persistence,\n fields: [...mergedFields],\n };\n if (allowPersistenceOverride && effectiveCollection !== undefined) {\n entity.collection = effectiveCollection;\n } else if (allowPersistenceOverride && entity.persistence === 'persistent' && ctx.canonicalEntity.persistence === 'runtime') {\n // A runtime record made persistent has no canonical collection to inherit.\n entity.collection = `${(params.entityName ?? effectiveName).toLowerCase()}s`;\n }\n return entity;\n}\n\ntype TraitOrInline = OrbitalSchema['orbitals'][number]['traits'][number];\ntype PageOrRef = NonNullable<OrbitalSchema['orbitals'][number]['pages']>[number];\n\ntype TraitRefObject = Extract<TraitOrInline, { ref: string }>;\n\nfunction isTraitReferenceObject(t: TraitOrInline): t is TraitRefObject {\n if (t === null || typeof t !== 'object') return false;\n if (!('ref' in t)) return false;\n return typeof t.ref === 'string';\n}\n\nfunction isPageRefObject(p: PageOrRef): p is PageRefObject {\n if (p === null || typeof p !== 'object') return false;\n if (!('ref' in p)) return false;\n return typeof p.ref === 'string';\n}\n\nfunction rewriteInlineLinkedEntity<T extends { linkedEntity?: string }>(\n shape: T,\n oldName: string,\n newName: string,\n): T {\n if (shape.linkedEntity !== oldName) return shape;\n return { ...shape, linkedEntity: newName };\n}\n\nconst ENTITY_POSITIONAL_OPS: ReadonlyArray<{\n readonly op: string;\n readonly actionGuard?: ReadonlySet<string>;\n readonly entityIndex: number;\n}> = [\n { op: 'fetch', entityIndex: 1 },\n { op: 'ref', entityIndex: 1 },\n { op: 'spawn', entityIndex: 1 },\n { op: 'persist', actionGuard: new Set(['create', 'update', 'delete']), entityIndex: 2 },\n];\n\nconst ENTITY_VALUED_PROPS: ReadonlySet<string> = new Set([\n 'entity',\n 'source',\n 'entityType',\n 'linkedEntity',\n]);\n\ninterface SExprMap { readonly [k: string]: SExpr }\n\nfunction rewriteEntityInSExpr(value: SExpr, oldName: string, newName: string): SExpr {\n if (value === null) return null;\n if (typeof value === 'boolean' || typeof value === 'number') return value;\n if (typeof value === 'string') {\n const prefix = `@${oldName}`;\n if (value === prefix || value.startsWith(`${prefix}.`)) {\n return `@${newName}${value.slice(prefix.length)}`;\n }\n return value;\n }\n if (Array.isArray(value)) {\n const first = value[0];\n if (typeof first === 'string') {\n for (const entry of ENTITY_POSITIONAL_OPS) {\n if (first !== entry.op) continue;\n if (entry.actionGuard !== undefined) {\n const action = value[1];\n if (typeof action !== 'string' || !entry.actionGuard.has(action)) continue;\n }\n const at = entry.entityIndex;\n const slot = value[at];\n if (typeof slot !== 'string' || slot !== oldName) continue;\n const rewritten: SExpr[] = [];\n for (let i = 0; i < value.length; i++) {\n rewritten.push(i === at ? newName : rewriteEntityInSExpr(value[i], oldName, newName));\n }\n return rewritten;\n }\n }\n return value.map((v) => rewriteEntityInSExpr(v, oldName, newName));\n }\n return rewriteEntityInSExprMap(value as SExprMap, oldName, newName);\n}\n\nfunction rewriteEntityInSExprMap(obj: SExprMap, oldName: string, newName: string): SExprMap {\n const next: { [k: string]: SExpr } = {};\n for (const [k, v] of Object.entries(obj)) {\n if (ENTITY_VALUED_PROPS.has(k) && typeof v === 'string' && v === oldName) {\n next[k] = newName;\n } else {\n next[k] = rewriteEntityInSExpr(v, oldName, newName);\n }\n }\n return next;\n}\n\nfunction rewritePayloadFieldType(typeStr: string, oldName: string, newName: string): string {\n if (typeStr === oldName) return newName;\n if (typeStr === `[${oldName}]`) return `[${newName}]`;\n return typeStr;\n}\n\nfunction rewriteEventContract(\n contract: TraitEventContract,\n oldName: string,\n newName: string,\n): TraitEventContract {\n if (!contract.payloadSchema || contract.payloadSchema.length === 0) return contract;\n return {\n ...contract,\n payloadSchema: contract.payloadSchema.map((f) => {\n const next = { ...f, type: rewritePayloadFieldType(f.type, oldName, newName) };\n if (typeof f.entity === 'string' && f.entity === oldName) {\n next.entity = newName;\n }\n return next;\n }),\n };\n}\n\nfunction rewriteListener(\n listener: TraitEventListener,\n oldName: string,\n newName: string,\n): TraitEventListener {\n if (!listener.payloadMapping) return listener;\n const nextMapping: Record<string, SExpr> = {};\n for (const [k, v] of Object.entries(listener.payloadMapping)) {\n nextMapping[k] = rewriteEntityInSExpr(v, oldName, newName);\n }\n return { ...listener, payloadMapping: nextMapping };\n}\n\nfunction rewriteTick(tick: TraitTick, oldName: string, newName: string): TraitTick {\n const next: TraitTick = { ...tick };\n if (next.guard !== undefined && next.guard !== null) {\n next.guard = rewriteEntityInSExpr(next.guard as SExpr, oldName, newName) as Expression;\n }\n next.effects = next.effects.map(\n (e) => rewriteEntityInSExpr(e as SExpr, oldName, newName) as Effect,\n );\n return next;\n}\n\n/**\n * Rebind an inline `Trait` to a renamed entity. Combines top-level\n * `linkedEntity` rewrite + body-level entity-ref rewriting (SExpr literals\n * in transitions / effects / ticks / payloads / listens).\n */\nexport function rebindInlineTraitEntity(trait: Trait, oldName: string, newName: string): Trait {\n if (oldName === newName) return trait;\n return rewriteEntityInInlineTrait(rewriteInlineLinkedEntity(trait, oldName, newName), oldName, newName);\n}\n\nexport function rewriteEntityInInlineTrait(trait: Trait, oldName: string, newName: string): Trait {\n if (oldName === newName) return trait;\n const next: Trait = { ...trait };\n\n if (next.stateMachine) {\n next.stateMachine = {\n ...next.stateMachine,\n transitions: next.stateMachine.transitions.map((t) => {\n const updated = { ...t };\n if (updated.guard !== undefined && updated.guard !== null) {\n updated.guard = rewriteEntityInSExpr(updated.guard as SExpr, oldName, newName) as Expression;\n }\n if (updated.effects) {\n updated.effects = updated.effects.map(\n (e) => rewriteEntityInSExpr(e as SExpr, oldName, newName) as Effect,\n );\n }\n return updated;\n }),\n };\n }\n\n if (next.initialEffects) {\n next.initialEffects = next.initialEffects.map(\n (e) => rewriteEntityInSExpr(e as SExpr, oldName, newName) as Effect,\n );\n }\n\n if (next.ticks) {\n next.ticks = next.ticks.map((t) => rewriteTick(t, oldName, newName));\n }\n\n if (next.emits) {\n next.emits = next.emits.map((c) => rewriteEventContract(c, oldName, newName));\n }\n\n if (next.listens) {\n next.listens = next.listens.map((l) => rewriteListener(l, oldName, newName));\n }\n\n return next;\n}\n\ntype TraitInput = OrbitalSchema['orbitals'][number]['traits'][number];\ntype PageInput = NonNullable<OrbitalSchema['orbitals'][number]['pages']>[number];\n\n// V4-W4 stamp-before-rename: traits/pages are emitted CANONICAL. Inline traits\n// (and string refs) pass through untouched — their `@entity.<canonical>` tokens\n// + `linkedEntity` stay canonical and resolve by stamped id. Reference objects\n// are still normalised through `makeTraitRef`/`makePageRef` (shape only, no\n// entity rewrite); their canonical `linkedEntity` is renamed post-stamp.\nfunction rebuildTraits(\n traits: OrbitalSchema['orbitals'][number]['traits'],\n): OrbitalDefinition['traits'] {\n return traits.map((t): TraitInput => {\n if (!isTraitReferenceObject(t)) return t;\n return makeTraitRef({ ...t } as MakeTraitRefOpts);\n });\n}\n\nfunction rebuildPages(\n pages: OrbitalSchema['orbitals'][number]['pages'],\n): NonNullable<OrbitalDefinition['pages']> {\n if (!pages) return [];\n return pages.map((p): PageInput => {\n if (!isPageRefObject(p)) return p;\n return makePageRef({ ...p } as MakePageRefOpts);\n });\n}\n\nexport { mergeCallSiteConfigOverrides } from '../types/index.js';\n\n/**\n * Read-only structural view over the JSON lattice the reference-rewrite\n * walker traverses — same trick as the expectation shape union (`SExpr` and\n * `TraitConfigValue` both assign to it). Exported alongside\n * `rewriteTraitRefsInTree` for the rabit composer's dedupe backstop.\n */\nexport type WalkableData =\n | string\n | number\n | boolean\n | null\n | ReadonlyArray<WalkableData>\n | { readonly [key: string]: WalkableData };\n\n/**\n * Boundary-checked `@trait.<from>` → `@trait.<to>` rewrite of one string\n * (next char `.`/`[`/end), mirroring the compiler's\n * `rewrite_trait_embed_in_sexpr`.\n */\nfunction rewriteTraitRefToken(value: string, renames: ReadonlyMap<string, string>): string {\n const prefix = '@trait.';\n if (!value.startsWith(prefix)) return value;\n const rest = value.slice(prefix.length);\n const splitAt = rest.search(/[.[]/);\n const name = splitAt === -1 ? rest : rest.slice(0, splitAt);\n const to = renames.get(name);\n if (to === undefined) return value;\n return `${prefix}${to}${splitAt === -1 ? '' : rest.slice(splitAt)}`;\n}\n\n/**\n * Deep `@trait.<from>` → `@trait.<to>` token rewrite over a JSON tree —\n * config values at any depth, state-machine trees, listen/tick arms. The\n * rename pass (`applyDeclarationTraitRenames`) and the rabit composer's\n * inline-trait dedupe backstop share this one walker so both cover exactly\n * the positions the compiled path's `rewrite_trait_embed_in_sexpr` does.\n */\nexport function rewriteTraitRefsInTree(node: WalkableData, renames: ReadonlyMap<string, string>): WalkableData {\n if (typeof node === 'string') return rewriteTraitRefToken(node, renames);\n if (Array.isArray(node)) return node.map((item) => rewriteTraitRefsInTree(item, renames));\n if (node !== null && typeof node === 'object') {\n const out: { [key: string]: WalkableData } = {};\n for (const [key, value] of Object.entries(node)) out[key] = rewriteTraitRefsInTree(value, renames);\n return out;\n }\n return node;\n}\n\n/**\n * Re-key a `traitEmbedIds` side-map for the renamed tokens: the map is keyed\n * by the token NAME as it appears in the body, so after the body tokens move\n * to the new name the side-map key must follow (id value unchanged — the\n * compiled path's `identity_normalize` then sees token == current name and\n * no-ops, and the runtime's id-primary lookup keeps resolving).\n */\nfunction rekeyTraitEmbedIds(\n embedIds: Record<string, TraitId>,\n renames: ReadonlyMap<string, string>,\n): Record<string, TraitId> {\n let out: Record<string, TraitId> | undefined;\n for (const [token, id] of Object.entries(embedIds)) {\n const to = renames.get(token);\n if (to === undefined) continue;\n out = out ?? { ...embedIds };\n delete out[token];\n out[to] = id;\n }\n return out ?? embedIds;\n}\n\n/**\n * Apply `traitOverrides.<T>.name` renames to trait DECLARATIONS, AFTER the\n * schema has been stamped (V4-W4 stamp-before-rename).\n *\n * The rename moves the declaration (`traits[].name` for inline traits, the\n * ref object's local `name` for reference traits), the ledger `curName` of\n * each renamed declaration id, AND every name-based reference to the old\n * name: `@trait.<old>` tokens in config values and state-machine/tick effect\n * trees, the `traitEmbedIds` side-map keys that index those tokens, and page\n * trait refs (`pages[].traits[].ref`). The dual-carry ids (`refId`,\n * `traitEmbedIds` values) are untouched, so the compiled path's\n * `identity_normalize` pass observes tokens already equal to the id-resolved\n * current name and no-ops, while the JS runtime — which resolves `@trait.X`\n * config knobs (e.g. `DashboardLayout.config.tile2Trait`) and page refs BY\n * NAME — never sees a dangling reference (FIX-H, dashboard-edit-title-string\n * 2026-08-06: the declaration-only rename left `@trait.DefaultRevenueChart`\n * in a sibling's config and the page ref while validate stayed green).\n *\n * The keys are canonical names because stamping ran while the declaration\n * still carried its canonical name (the factory no longer renames — see\n * `applyParamsToOrb`), so `trait.name === canonicalKey` at this point.\n *\n * Pure — returns a new schema. Applied per orbital; the same override key\n * renames the matching declaration in every orbital that owns it (matches\n * the former per-orbital `applyParamsToOrb` semantics).\n */\nexport function applyDeclarationTraitRenames(\n schema: OrbitalSchema,\n renames: ReadonlyMap<string, string>,\n /**\n * Rename timestamp (ISO string) for the ledger `renames[]` audit row. Threaded\n * from the persistence layer (which owns the clock). The stamp keyed each inline\n * trait's ledger `curName` to its canonical name; without this update the renamed\n * declaration disagrees with `curName` → `ORB_ID_NAME_MISMATCH` on the page ref.\n */\n at: string,\n): OrbitalSchema {\n if (renames.size === 0) return schema;\n\n type TraitElem = OrbitalDefinition['traits'][number];\n const renamedTraitIds: Array<{ id: string; to: string }> = [];\n const renameDeclaration = (t: TraitElem): TraitElem => {\n if (typeof t !== 'object' || t === null) return t;\n let next = t;\n const named = t as { name?: string };\n if (typeof named.name === 'string') {\n const renamed = renames.get(named.name);\n if (renamed !== undefined) {\n const id = (t as { id?: string }).id;\n if (typeof id === 'string') renamedTraitIds.push({ id, to: renamed });\n next = { ...next, name: renamed };\n }\n }\n const walked = rewriteTraitRefsInTree(next as WalkableData, renames) as TraitElem;\n // `walked` is the walker's fresh copy — re-keying its side-map mutates no input.\n const embedIds = (walked as { traitEmbedIds?: Record<string, TraitId> }).traitEmbedIds;\n if (embedIds !== undefined) {\n const rekeyed = rekeyTraitEmbedIds(embedIds, renames);\n if (rekeyed !== embedIds) {\n (walked as { traitEmbedIds?: Record<string, TraitId> }).traitEmbedIds = rekeyed;\n }\n }\n return walked;\n };\n const renamePageTraitRefs = (p: PageInput): PageInput => {\n if (typeof p !== 'object' || p === null) return p;\n // Deep walk first: page-trait `config` values can carry `@trait.<old>` too\n // (the compiler's config-ref normalization covers page-ref config).\n const walked = rewriteTraitRefsInTree(p as WalkableData, renames) as Exclude<PageInput, string>;\n const traits = (walked as { traits?: ReadonlyArray<PageTraitRef | string> }).traits;\n if (!Array.isArray(traits)) return walked;\n return {\n ...walked,\n traits: traits.map((t) => {\n if (typeof t === 'string') return renames.get(t) ?? t;\n const to = renames.get(t.ref);\n return to === undefined ? t : { ...t, ref: to };\n }),\n } as PageInput;\n };\n\n const orbitals = schema.orbitals.map((orbital) => {\n if (!('traits' in orbital) || !Array.isArray(orbital.traits)) return orbital;\n return {\n ...orbital,\n traits: orbital.traits.map(renameDeclaration),\n ...(orbital.pages !== undefined ? { pages: orbital.pages.map(renamePageTraitRefs) } : {}),\n };\n });\n\n // Update the ledger `curName` for each renamed trait declaration id so the\n // declaration + ledger agree — clears `ORB_ID_NAME_MISMATCH`; the compiler's\n // identity-normalization pass then rewrites the canonical page `ref` /\n // `@trait.<canonical>` tokens by id. Covers inline bodies AND Reference-form\n // declarations (both carry a local `id` since the composed-surface backbone).\n let ledger = schema.ledger;\n if (ledger !== undefined) {\n for (const { id, to } of renamedTraitIds) {\n ledger = ledgerRename(ledger, id, to, at);\n }\n }\n\n return { ...schema, orbitals, ...(ledger !== schema.ledger ? { ledger } : {}) };\n}\n\n/** The entity name an orbital declares: its inline entity's, or an import's `reference.entity`. */\nexport function declaredEntityName(orbital: OrbitalDefinition): string | null {\n const entity = orbital.entity;\n if (typeof entity === 'object' && entity !== null && typeof entity.name === 'string') return entity.name;\n return orbital.reference?.entity ?? null;\n}\n\n/** A single entity display rename: `from` (canonical name at stamp) → `to`. */\nexport interface EntityDeclarationRename {\n readonly from: string;\n readonly to: string;\n}\n\n/**\n * Apply an entity rename to DECLARATIONS only, AFTER the schema has been\n * stamped (V4-W4 stamp-before-rename). The entity, its `@entity.<from>` body\n * tokens, and every trait/page `linkedEntity` were all emitted CANONICAL by\n * the factory, so stamping keyed `entityRefIds`/`linkedEntityId` by `from`.\n *\n * This renames only the visible declaration surface — `entity.name` and every\n * trait/page `linkedEntity` whose value is `from` — leaving the `@entity.<from>`\n * body tokens and every stamped id untouched. Readers resolve those tokens by\n * `entityRefIds` id and resolve `linkedEntity` by `linkedEntityId`, so the\n * rename lands on the right declaration without any body rewrite (this is what\n * lets the factory stop calling `rebindInlineTraitEntity`). Collection is not\n * renamed here — its effective value was already baked at build time.\n *\n * Pure — returns a new schema. Applied to every orbital whose primary entity\n * is named `from` (mirrors the former per-orbital `applyParamsToOrb` scope for\n * a single-orbital write).\n */\nexport function applyDeclarationEntityRename(\n schema: OrbitalSchema,\n rename: EntityDeclarationRename,\n /**\n * Rename timestamp (ISO string) for the ledger `renames[]` audit row. Threaded\n * from the persistence layer (which owns the clock). The stamp keyed the ledger\n * `curName` to the canonical entity name; without this update the renamed\n * declaration disagrees with `curName` → `ORB_ID_NAME_MISMATCH`.\n */\n at: string,\n): OrbitalSchema {\n if (rename.from === rename.to) return schema;\n\n const linkedEntityIsFrom = (shape: object): boolean =>\n (shape as { linkedEntity?: string }).linkedEntity === rename.from;\n\n const renamedEntityIds: string[] = [];\n const orbitals = schema.orbitals.map((orbital) => {\n const entity = orbital.entity;\n if (orbital.reference !== undefined && orbital.reference.entity === rename.from) {\n return {\n ...orbital,\n reference: { ...orbital.reference, entity: rename.to },\n traits: orbital.traits.map((t): TraitInput =>\n typeof t === 'object' && t !== null && linkedEntityIsFrom(t) ? { ...t, linkedEntity: rename.to } : t,\n ),\n };\n }\n if (typeof entity !== 'object' || entity === null || entity.name !== rename.from) {\n return orbital;\n }\n const entityId = (entity as { id?: string }).id;\n if (typeof entityId === 'string') renamedEntityIds.push(entityId);\n\n const traits = orbital.traits.map((t): TraitInput =>\n typeof t === 'object' && t !== null && linkedEntityIsFrom(t)\n ? { ...t, linkedEntity: rename.to }\n : t,\n );\n const pages = orbital.pages?.map((p): PageInput =>\n typeof p === 'object' && p !== null && linkedEntityIsFrom(p)\n ? { ...p, linkedEntity: rename.to }\n : p,\n );\n\n return {\n ...orbital,\n entity: { ...entity, name: rename.to },\n traits,\n ...(pages !== undefined ? { pages } : {}),\n };\n });\n\n // Update the ledger `curName` for each renamed entity id (route to the\n // canonical owner) so the declaration + ledger agree — clears\n // `ORB_ID_NAME_MISMATCH`; the compiler's identity-normalization pass then\n // rewrites the canonical `@entity`/`fetch`/`persist` tokens by id.\n let ledger = schema.ledger;\n if (ledger !== undefined) {\n for (const id of renamedEntityIds) {\n ledger = ledgerRename(ledger, id, rename.to, at);\n }\n }\n\n return { ...schema, orbitals, ...(ledger !== schema.ledger ? { ledger } : {}) };\n}\n\n/**\n * Ledger/declaration agreement heal for the factory build path: every entity\n * declaration carrying an id must find its ledger row naming the SAME name\n * the declaration carries. A re-instantiate adopts the prior `.orb`'s ledger\n * via `orb stamp --prior` — including rename rows an earlier build recorded —\n * while the factory re-emits the entity at its baked/requested name, so a\n * stale `curName` would survive a corrective rebuild unchanged and\n * manufacture an `ORB_ID_NAME_MISMATCH` no repair pass can edit away\n * (battery 2026-08-06 domain-rule: param-fill renamed MarketplaceUserOrbital's\n * entity to `Product`; the corrective re-instantiate at `entityName:\n * \"MarketplaceUser\"` applies NO rename — from === to — and the adopted row\n * kept `curName: \"Product\"` against a `MarketplaceUser` declaration).\n *\n * Sound on this path only: the factory always re-emits the declaration at the\n * requested/baked name, so the declaration is the build's truth and the\n * adopted row carries identity (the id) forward. No-op when they agree.\n */\nexport function healEntityLedgerRows(schema: OrbitalSchema, at: string): OrbitalSchema {\n let ledger = schema.ledger;\n if (ledger === undefined) return schema;\n for (const orbital of schema.orbitals) {\n const entity = orbital.entity;\n if (typeof entity !== 'object' || entity === null) continue;\n const id = (entity as { id?: string }).id;\n const name = entity.name;\n if (typeof id !== 'string' || typeof name !== 'string') continue;\n const entry = ledger.entries[id];\n if (entry === undefined || entry.kind !== 'entity' || entry.curName === name) continue;\n ledger = ledgerRename(ledger, id, name, at);\n }\n return ledger !== schema.ledger ? { ...schema, ledger } : schema;\n}\n\n/**\n * Trait-declaration sibling of `healEntityLedgerRows`. A re-instantiate with\n * NO trait renames in its params (a corrective rebuild, or the plan-repair\n * reset-to-factory-defaults verb) adopts the prior `.orb`'s ledger — including\n * trait rename rows an earlier build recorded — while the factory re-emits\n * every trait declaration at its baked/requested name, so the stale `curName`\n * would manufacture an `ORB_ID_NAME_MISMATCH` (the entity twin of this is the\n * battery 2026-08-06 `healEntityLedgerRows` case). Same soundness argument:\n * on this path the factory re-emission is the build's truth and the adopted\n * row carries identity (the id) forward. Reference-form declarations resolve\n * their current name as `name ?? <ref last segment>` (mirrors the compiler's\n * `collect_trait_id_names`). No-op when they agree.\n */\nexport function healTraitLedgerRows(schema: OrbitalSchema, at: string): OrbitalSchema {\n let ledger = schema.ledger;\n if (ledger === undefined) return schema;\n for (const orbital of schema.orbitals) {\n for (const trait of orbital.traits ?? []) {\n if (typeof trait !== 'object' || trait === null) continue;\n const id = (trait as { id?: string }).id;\n if (typeof id !== 'string') continue;\n const declared = (trait as { name?: string; ref?: string });\n const name =\n typeof declared.name === 'string'\n ? declared.name\n : typeof declared.ref === 'string'\n ? declared.ref.slice(declared.ref.lastIndexOf('.') + 1)\n : undefined;\n if (name === undefined) continue;\n const entry = ledger.entries[id];\n if (entry === undefined || entry.kind !== 'trait' || entry.curName === name) continue;\n ledger = ledgerRename(ledger, id, name, at);\n }\n }\n return ledger !== schema.ledger ? { ...schema, ledger } : schema;\n}\n\n/**\n * The overlay. Resolves the effective entity name + collection, calls\n * `makeOrbitalWithUses` with the rewritten data, then applies the params'\n * trait/page overrides post-hoc.\n */\nexport function applyParamsToOrb(\n orb: OrbitalSchema,\n orbitalName: string,\n _manifest: OrbitalParamsManifest,\n params: OrbitalFactoryParams,\n): OrbitalDefinition {\n const orbital = findOrbitalOrThrow(orb, orbitalName);\n const canonicalEntity = assertResolvedEntity(orbital.entity, orbitalName, orb.name);\n const canonicalEntityName = canonicalEntity.name;\n // V4-W4 stamp-before-rename: emit the entity + every `@entity`/`linkedEntity`\n // ref CANONICAL. The effective-name rename is a declaration-only concern\n // applied post-stamp (see `applyDeclarationEntityRename`), so the stamped\n // `entityRefIds`/`linkedEntityId` side-maps are keyed by the canonical name\n // that still agrees with the un-rewritten `@entity.<canonical>` tokens.\n // Readers resolve those tokens by stable id onto the renamed declaration.\n // The collection is inert for stamping (not an identity key), so its\n // effective value is baked at build time — only name + linkedEntity rename.\n const effectiveCollection =\n typeof canonicalEntity.collection === 'string'\n ? (params.collection ??\n (params.entityName\n ? `${params.entityName.toLowerCase()}s`\n : canonicalEntity.collection))\n : params.collection;\n\n const ctx: OverlayContext = { canonicalEntityName, canonicalEntity, dataBearing: orbitalTouchesOwnRecord(orbital) };\n\n const built = makeOrbitalWithUses({\n name: orbital.name,\n uses: orbital.uses ?? [],\n // Derived `expects` declarations ride the overlay untouched — they name\n // SIBLING entities (never the orbital's own), so the entityName rename\n // below cannot affect them.\n ...(orbital.expects !== undefined ? { expects: orbital.expects } : {}),\n entity: buildEntity(ctx, canonicalEntityName, effectiveCollection, params),\n traits: rebuildTraits(orbital.traits),\n pages: rebuildPages(orbital.pages),\n });\n\n // This orbital's OWN declared knobs (`Orbital.config`) ride through\n // untouched when the caller supplies no override, and get their\n // `default`s folded when `params.config` is set. Silently no-ops when the\n // orbital declares no config of its own — mirrors `buildEntity`'s\n // persistence-override gate (an override with nothing to apply to is\n // ignored, not an error; `validateOrbitalFactoryParams` is what rejects a\n // `config` param against a manifest with no `configKeys`).\n if (orbital.config !== undefined) {\n built.config =\n params.config !== undefined\n ? overrideDeclaredKnobs(orbital.config, params.config)\n : orbital.config;\n }\n\n if (built.traits && params.traitOverrides !== undefined) {\n built.traits = built.traits.map((t) => {\n if (!isTraitReferenceObject(t) || typeof t.name !== 'string') return t;\n const override: OrbitalTraitOverride | undefined = params.traitOverrides?.[t.name];\n if (!override) return t;\n const merged: TraitReference = { ...t };\n if (override.config !== undefined) {\n merged.config = mergeCallSiteConfigOverrides(t.config ?? {}, override.config);\n }\n if (override.linkedEntity !== undefined) merged.linkedEntity = override.linkedEntity;\n if (override.events !== undefined) {\n if (\n override.events === null ||\n typeof override.events !== 'object' ||\n Array.isArray(override.events)\n ) {\n throw new Error(\n `traitOverrides[\"${t.name}\"].events must be a Record<string,string> ` +\n `(rename map like { \"OPEN\": \"ADD_ITEM\" }), got ${\n Array.isArray(override.events) ? 'an array' : typeof override.events\n }`,\n );\n }\n for (const [k, v] of Object.entries(override.events)) {\n if (typeof v !== 'string') {\n throw new Error(\n `traitOverrides[\"${t.name}\"].events[\"${k}\"] must be a string ` +\n `(target event name), got ${typeof v}`,\n );\n }\n }\n merged.events = { ...(t.events ?? {}), ...override.events };\n }\n // V4-W4: the trait NAME override is NOT applied here. Names are a\n // display concern applied declaration-only AFTER stamping (see\n // `applyDeclarationTraitRenames`), so the stamped ids/side-maps/page\n // refIds are keyed by canonical names that still agree with the\n // (un-rewritten) `@trait.<canonical>` tokens + page `ref`s. Readers\n // then resolve those tokens by stable id onto the renamed declaration —\n // no token rewrite (the deleted `applyTraitRenames`) required.\n if (override.emitsScope !== undefined) merged.emitsScope = override.emitsScope;\n if (override.listens !== undefined) merged.listens = override.listens;\n return merged;\n });\n }\n\n if (built.pages && params.pagePath !== undefined) {\n built.pages = built.pages.map((p, idx) => {\n if (!isPageRefObject(p) || idx !== 0) return p;\n return { ...p, path: params.pagePath } as PageRefObject;\n });\n }\n\n return built;\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, TraitConfigObject, 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 * (`unionOrganismConfigs`). 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/** A `[NavItem]`-typed knob's literal list (matched by its type tag, never its name); null for `@pages` and scalars. */\nfunction navItemsList(field: ConfigFieldDeclaration): ReadonlyArray<TraitConfigValue> | null {\n return field.type === '[NavItem]' && Array.isArray(field.default) ? field.default : null;\n}\n\nfunction isConfigObject(value: TraitConfigValue): value is TraitConfigObject {\n return value !== null && typeof value === 'object' && !Array.isArray(value);\n}\n\n/** A nav entry's `href`; undefined when the entry carries none. */\nexport function navItemHref(item: TraitConfigValue): string | undefined {\n return isConfigObject(item) && typeof item.href === 'string' ? item.href : undefined;\n}\n\n/**\n * Every per-orbital file's organism `config`, unioned; the first declaration of a knob wins —\n * except a `[NavItem]` list, which concatenates in file (roster) order: an app composed from\n * several organisms gets one sidebar listing each organism's sections, an href already listed\n * dropped. An entry without a readable href is kept, never guessed away.\n */\nexport function unionOrganismConfigs(\n schemas: ReadonlyArray<Pick<OrbitalSchema, 'config'>>,\n): DeclaredTraitConfig | undefined {\n let merged: Record<string, ConfigFieldDeclaration> | undefined;\n for (const schema of schemas) {\n if (schema.config === undefined) continue;\n merged ??= {};\n for (const [key, field] of Object.entries(schema.config)) {\n const held = merged[key];\n if (held === undefined) {\n merged[key] = field;\n continue;\n }\n const heldList = navItemsList(held);\n const addedList = navItemsList(field);\n if (heldList === null || addedList === null) continue;\n const listed = new Set(heldList.map(navItemHref).filter((href): href is string => href !== undefined));\n const added = addedList.filter((item) => {\n const href = navItemHref(item);\n return href === undefined || !listed.has(href);\n });\n if (added.length > 0) merged[key] = { ...held, default: [...heldList, ...added] };\n }\n }\n return merged;\n}\n","/**\n * `generateQuestions(plan, catalog, ruleOverlay?)`.\n *\n * Deterministic, no LLM call. Walks each `FactoryCallSite` in the\n * durable plan against its matching `FactorySignature` and emits one\n * open question per advertised knob the user hasn't already filled.\n *\n * Two families of questions, both source-derived:\n *\n * 1. CONFIG-KEY — one question per\n * `signature.traits[*].overridableConfigKeys[*]`. Each entry is a\n * `FactoryConfigParam` carrying `{ key, type, default?, label?,\n * description?, enumValues?, items?, properties?, tier? }` lifted\n * directly from the source `.lolo` `config { }` block. The widget\n * choice falls out of `deriveInputType` (reads `items.properties`\n * and `properties` so structured types render proper editors, not\n * JSON textareas); the prompt comes from `label` (or a humanized\n * fallback of `key`); the default value pre-fills the widget.\n * Knobs tagged `tier: 'internal'` are filtered out entirely.\n *\n * 2. CAPABILITY-DRIVEN — one question per unique\n * `signature.traits[*].capabilities[*]` tag NOT already covered\n * by `ruleOverlay.rules[].capability`. Surfaces a `set-rule`\n * mutation template scoped to the bound entity.\n *\n * @packageDocumentation\n */\n\nimport type {\n FactoryCallSite,\n FactoryConfigParam,\n FactoryParamValue,\n FactorySignature,\n FactorySignatureEntityField,\n FactoryTraitSignature,\n} from '../types.js';\nimport type { RuleOverlay } from '../overlays.js';\nimport type { EntityField } from '../../types/field.js';\nimport type {\n DomainQuestion,\n DomainQuestionInputType,\n} from './types.js';\n\nexport function generateQuestions(\n plan: ReadonlyArray<FactoryCallSite>,\n catalog: ReadonlyArray<FactorySignature>,\n ruleOverlay?: RuleOverlay,\n /**\n * Optional user-authored prompt from the current session. Carried\n * through so downstream consumers (route handlers, ranking passes)\n * can re-order questions by relevance without re-generating. Does\n * not affect the emitted set — only threading and ordering.\n */\n _userPrompt?: string,\n): DomainQuestion[] {\n const out: DomainQuestion[] = [];\n const ruleCapabilities = collectRuleCapabilities(ruleOverlay);\n\n for (const call of plan) {\n const signature = findSignature(catalog, call.organism, call.orbital);\n if (!signature) continue;\n out.push(...configKeyQuestions(call, signature));\n out.push(...entityFieldQuestions(call, signature));\n out.push(...capabilityQuestions(call, signature, ruleCapabilities));\n }\n return out;\n}\n\n// ---------------------------------------------------------------------------\n// Config-key questions — derived from the source `config { }` declaration\n// ---------------------------------------------------------------------------\n\nconst TIER_D_NAMED_PRIMITIVES = new Set([\n 'layoutMode',\n 'layoutPattern',\n 'viewPattern',\n 'detailPattern',\n 'detailSlot',\n 'contentTrait',\n]);\n\nconst TIER_D_TYPES = new Set(['trait', 'slot', 'pattern', 'event']);\n\nfunction configKeyQuestions(\n call: FactoryCallSite,\n signature: FactorySignature,\n): DomainQuestion[] {\n const out: DomainQuestion[] = [];\n for (const trait of signature.traits) {\n for (const param of trait.overridableConfigKeys) {\n if (param.tier === 'internal') continue;\n if (TIER_D_TYPES.has(param.type)) continue;\n if (TIER_D_NAMED_PRIMITIVES.has(param.key)) continue;\n out.push(buildConfigKeyQuestion(call, trait, param));\n }\n }\n return out;\n}\n\nfunction buildConfigKeyQuestion(\n call: FactoryCallSite,\n trait: FactoryTraitSignature,\n param: FactoryConfigParam,\n): DomainQuestion {\n // `@label` renders verbatim; the fallback is a type guard, not inference —\n // a domain-tier knob reaching it is a missing-`@label` source defect.\n const question = param.label ?? humanizeKey(param.key);\n // Call-site override (organism pre-pinned this knob) takes precedence\n // over the atom-author's default. The question still renders so the\n // user can confirm or change the pre-pinned value.\n const callSiteOverride = callSiteOverrideValue(call, trait.name, param.key);\n const effectiveDefault =\n callSiteOverride !== undefined ? callSiteOverride : param.default;\n\n // `helpText` carries the param's authored description (how to answer).\n // `reason` is the distinct \"why you're seeing this\" — only set when it\n // adds information beyond what helpText already says.\n const helpText = param.description;\n const syntheticReason =\n `Customizes \"${param.key}\" on the ${trait.name} trait. ` +\n (effectiveDefault !== undefined\n ? `Default: ${stringifyDefault(effectiveDefault)}.`\n : `No default — leave blank to inherit the factory's behavior.`);\n const reason = helpText !== undefined ? undefined : syntheticReason;\n\n const isAdvanced = !isPrimaryTier(param.tier);\n\n const out: DomainQuestion = {\n id: `${factoryCallPlanOrbitalName(call)}.${trait.name}.${param.key}`,\n orbitalName: factoryCallPlanOrbitalName(call),\n question,\n inputType: deriveInputType(param),\n mutationTemplate: {\n kind: 'set-trait-override-config',\n orbitalName: factoryCallPlanOrbitalName(call),\n traitName: trait.name,\n configKey: param.key,\n },\n };\n if (reason !== undefined) {\n out.reason = reason;\n }\n if (helpText !== undefined) {\n out.helpText = helpText;\n }\n if (effectiveDefault !== undefined) {\n out.defaultValue = effectiveDefault;\n }\n if (param.enumValues && param.enumValues.length > 0) {\n out.suggestedAnswers = param.enumValues;\n }\n if (param.items) {\n out.itemSchema = param.items;\n }\n if (param.properties) {\n out.objectSchema = param.properties;\n }\n if (param.tier) {\n out.tier = param.tier;\n }\n if (isAdvanced) {\n out.advanced = true;\n }\n const weight = tierWeight(param.tier);\n out.weight = weight;\n out.priority = weight;\n return out;\n}\n\n/**\n * Impact weight by decision kind — the spine of both the wizard's\n * prescient-first ordering and its Confidence score. policy/domain are the\n * decisions that change what the business does; infra is operational wiring;\n * presentation is polish. Untagged defaults to presentation (1). `internal`\n * never reaches here (filtered in `configKeyQuestions`).\n */\nfunction tierWeight(tier: FactoryConfigParam['tier']): number {\n switch (tier) {\n case 'domain':\n case 'policy':\n return 3;\n case 'infra':\n return 2;\n case 'internal':\n return 0;\n case 'presentation':\n default:\n return 1;\n }\n}\n\n/** `true` only for the two tiers that render inline (not collapsed). */\nfunction isPrimaryTier(tier: FactoryConfigParam['tier']): boolean {\n return tier === 'domain' || tier === 'policy';\n}\n\nfunction callSiteOverrideValue(\n call: FactoryCallSite,\n traitName: string,\n configKey: string,\n): FactoryParamValue | undefined {\n const override = call.params.traitOverrides?.[traitName];\n if (!override?.config) return undefined;\n if (!Object.prototype.hasOwnProperty.call(override.config, configKey)) {\n return undefined;\n }\n return override.config[configKey] as FactoryParamValue;\n}\n\n/**\n * Pick a widget for a config-key question from the param's typed\n * declaration + its structural carriers. The type tag is lifted\n * verbatim from `.lolo`; `items.properties` and `properties` carry the\n * per-element / per-property schema for structured types so the studio\n * can render a real form instead of a JSON textarea.\n *\n * - `[T]` with `items.properties` → `listOfObjects` (repeatable form)\n * - `[T]` with `enumValues` → `multiselect` (closed checkboxes)\n * - `[T]` otherwise → `tagList` (free-form chips)\n * - `object` with `properties` → `objectForm` (per-property form)\n * - `object` otherwise → `text` (rare; flagged by tests)\n * - `number` / `integer` → `number`\n * - `boolean` → `boolean`\n * - `enum` → `enum`\n * - `string` with `enumValues` → `enum`\n * - `string` → `text`\n */\nexport function deriveInputType(\n param: FactoryConfigParam,\n): DomainQuestionInputType {\n if (param.type.startsWith('[')) {\n if (\n param.items?.properties &&\n Object.keys(param.items.properties).length > 0\n ) {\n return 'listOfObjects';\n }\n if (param.enumValues && param.enumValues.length > 0) {\n return 'multiselect';\n }\n return 'tagList';\n }\n // Typed map (`Map<K,V>`) — a dynamic-key dictionary; edited as an object.\n if (param.type.startsWith('Map<')) {\n return 'objectForm';\n }\n if (param.type === 'object') {\n if (param.properties && Object.keys(param.properties).length > 0) {\n return 'objectForm';\n }\n return 'text';\n }\n switch (param.type) {\n case 'number':\n case 'integer':\n return 'number';\n case 'boolean':\n return 'boolean';\n case 'enum':\n return 'enum';\n case 'string':\n return param.enumValues && param.enumValues.length > 0 ? 'enum' : 'text';\n default:\n return 'text';\n }\n}\n\n/**\n * Humanize a camelCase / kebab-case key into a question prompt\n * fallback when the source `.lolo` doesn't author an explicit label.\n *\n * `itemActions` → `\"Item Actions\"`\n * `owner-field` → `\"Owner Field\"`\n * `URL` → `\"URL\"` (preserves all-caps runs)\n */\nexport function humanizeKey(key: string): string {\n const parts = key\n .replace(/[-_]+/g, ' ')\n .replace(/([a-z0-9])([A-Z])/g, '$1 $2')\n .replace(/([A-Z]+)([A-Z][a-z])/g, '$1 $2')\n .split(' ')\n .filter((s) => s.length > 0);\n return parts\n .map((p) => (/^[A-Z]+$/.test(p) ? p : p.charAt(0).toUpperCase() + p.slice(1)))\n .join(' ');\n}\n\nfunction stringifyDefault(v: FactoryParamValue): string {\n if (typeof v === 'string') return JSON.stringify(v);\n if (typeof v === 'number' || typeof v === 'boolean') return String(v);\n if (Array.isArray(v)) return `${v.length} item${v.length === 1 ? '' : 's'}`;\n return 'object';\n}\n\n// ---------------------------------------------------------------------------\n// Entity-field question — lets the user add or override data model fields\n// ---------------------------------------------------------------------------\n\n/**\n * Emit one multiselect question per call site that has a canonical entity.\n *\n * The widget shows the entity's canonical fields as labelled checkboxes;\n * the user confirms or deselects them. The answer (selected field names)\n * flows through the UI's name→EntityField lookup via `fieldCandidates`,\n * then into `answersToMutations` → `set-orbital-entity-fields` → `applyEntityFields`\n * in `translate.ts` (additive/override semantics).\n *\n * `suggestedAnswers` = candidate field name strings (drives checkbox list).\n * `defaultValue` = the canonical field-name set pre-selected.\n * `fieldCandidates` = name → EntityField for the UI's resolution step.\n * `fieldDescriptions` = name → description for checkbox sub-labels.\n *\n * Phrased without an article so no \"a\"/\"an\" guess is needed: no\n * source-tagged noun phrase for an entity exists yet — the only\n * candidate, `defaultLabels.entitySingular`, lives on a different\n * registry AND defaults to the raw entity name, so it would not help.\n * An authored `@entityLabel` on the entity is the real fix.\n *\n * Type note: `FactorySignatureEntityField.type` is `SchemaFieldType` while\n * `EntityField` is a discriminated union. `signatureFieldToEntityField` maps\n * each variant faithfully.\n */\nfunction entityFieldQuestions(\n call: FactoryCallSite,\n signature: FactorySignature,\n): DomainQuestion[] {\n if (signature.entities.length === 0) return [];\n const entity = signature.entities[0];\n const entityName = call.params.entityName ?? entity.name;\n\n const candidateFields = entity.fields.map(signatureFieldToEntityField);\n const fieldCandidates: Record<string, EntityField> = {};\n const fieldDescriptions: Record<string, string> = {};\n const candidateNames: string[] = [];\n\n for (let i = 0; i < entity.fields.length; i++) {\n const sig = entity.fields[i];\n const ef = candidateFields[i];\n const name = sig.name;\n candidateNames.push(name);\n fieldCandidates[name] = ef;\n if (sig.description) {\n fieldDescriptions[name] = sig.description;\n }\n }\n\n const weight = tierWeight('domain');\n const q: DomainQuestion = {\n id: `${factoryCallPlanOrbitalName(call)}.__entityFields`,\n orbitalName: factoryCallPlanOrbitalName(call),\n question: `Fields for ${entityName}`,\n reason: `Defines the data model for ${entityName}. Pick the fields that matter for your use case.`,\n inputType: 'multiselect',\n mutationTemplate: {\n kind: 'set-orbital-entity-fields',\n orbitalName: factoryCallPlanOrbitalName(call),\n },\n suggestedAnswers: candidateNames,\n defaultValue: candidateNames,\n fieldCandidates,\n tier: 'domain',\n weight,\n priority: weight,\n };\n if (Object.keys(fieldDescriptions).length > 0) {\n q.fieldDescriptions = fieldDescriptions;\n }\n return [q];\n}\n\n/**\n * Map a `FactorySignatureEntityField` to an `EntityField` without unsafe casts.\n * Scalar types translate directly to `ScalarEntityField`. `array` and `object`\n * translate to their variants (no extra required fields). `enum` produces an\n * `EnumEntityField` when `values` is present, otherwise falls back to `string`.\n * `relation` produces a `RelationEntityField` when `relation` is present, otherwise\n * falls back to `string`.\n */\nfunction signatureFieldToEntityField(f: FactorySignatureEntityField): EntityField {\n const base = {\n name: f.name,\n required: f.required,\n description: f.description,\n synonyms: f.synonyms,\n intrinsic: f.intrinsic,\n } as const;\n switch (f.type) {\n case 'string':\n case 'number':\n case 'boolean':\n case 'date':\n case 'timestamp':\n case 'datetime':\n // Semantic string domains carry no dependent payload, so they pass through\n // as-is and the question widget narrows the input accordingly.\n case 'email':\n case 'url':\n case 'phone':\n case 'uuid':\n case 'image':\n return { ...base, type: f.type };\n case 'array':\n return { ...base, type: 'array' };\n case 'object':\n return { ...base, type: 'object' };\n case 'enum':\n if (Array.isArray(f.values) && f.values.length > 0) {\n return { ...base, type: 'enum', values: f.values };\n }\n // No values present — safe fallback; payload would be invalid without them.\n return { ...base, type: 'string' };\n case 'relation':\n if (f.relation !== undefined) {\n return { ...base, type: 'relation', relation: f.relation };\n }\n // No relation config present — safe fallback.\n return { ...base, type: 'string' };\n case 'node':\n // Renderable content is computed by the trait's effects, never asked\n // for in a questionnaire — no question payload beyond the tag.\n return { ...base, type: 'node' };\n case 'event':\n // Event-name reference (struct-alias member, e.g. `ItemAction.event`)\n // — authored by the trait, never asked for in a questionnaire, same\n // posture as `node`.\n return { ...base, type: 'event' };\n case 'money':\n case 'instant':\n case 'file':\n case 'bytes':\n // No type-dependent payload — same posture as the semantic string\n // domains above.\n return { ...base, type: f.type };\n default: {\n const _exhaustive: never = f.type;\n return { ...base, type: 'string' };\n }\n }\n}\n\n// ---------------------------------------------------------------------------\n// Capability-driven questions\n// ---------------------------------------------------------------------------\n\n/**\n * Emit one yes/no question per unique capability not already covered by\n * the ruleOverlay. Capabilities whose name matches a `policy`-tier config\n * knob on the same trait are skipped — that knob already gives the user\n * a direct toggle for the governance behavior, so a second question adds\n * noise. Only capabilities with no backing policy knob get a question.\n *\n * The emitted question uses `inputType: 'boolean'` (a plain yes/no toggle)\n * with a plain-English prompt and `helpText` explaining what enabling it\n * does. The `set-rule` mutation template remains unchanged.\n */\nfunction capabilityQuestions(\n call: FactoryCallSite,\n signature: FactorySignature,\n ruleCapabilities: ReadonlySet<string>,\n): DomainQuestion[] {\n const entityName =\n call.params.entityName ?? signature.entities[0]?.name ?? factoryCallPlanOrbitalName(call);\n const seen = new Set<string>();\n const out: DomainQuestion[] = [];\n for (const trait of signature.traits) {\n const policyKnobKeys = new Set(\n trait.overridableConfigKeys\n .filter((p) => p.tier === 'policy')\n .map((p) => p.key),\n );\n for (const cap of trait.capabilities) {\n if (seen.has(cap)) continue;\n seen.add(cap);\n if (ruleCapabilities.has(cap)) continue;\n // Skip if a policy-tier knob on this trait already surfaces the toggle.\n if (policyKnobKeys.has(cap)) continue;\n out.push({\n id: `${factoryCallPlanOrbitalName(call)}.capability.${cap}`,\n orbitalName: factoryCallPlanOrbitalName(call),\n question: capabilityPrompt(cap, entityName),\n helpText: capabilityHelp(cap, trait),\n capability: cap,\n inputType: 'boolean',\n mutationTemplate: {\n kind: 'set-rule',\n capability: cap,\n appliesTo: [entityName],\n },\n // Capabilities encode governance/policy decisions — high impact.\n weight: 3,\n priority: 3,\n });\n }\n }\n return out;\n}\n\n/** Plain-English yes/no prompt for a capability toggle. */\nfunction capabilityPrompt(capability: string, entity: string): string {\n const label = humanizeKey(capability);\n return `Enable ${label} for ${entity}?`;\n}\n\n/** How-to-answer help text for a capability question. */\nfunction capabilityHelp(\n capability: string,\n trait: FactoryTraitSignature,\n): string {\n return `Turns on the \"${capability}\" behavior from the ${trait.name} trait. Say yes to wire a governance rule into the schema.`;\n}\n\n// ---------------------------------------------------------------------------\n// Helpers\n// ---------------------------------------------------------------------------\n\nfunction findSignature(\n catalog: ReadonlyArray<FactorySignature>,\n organism: string,\n orbital: string,\n): FactorySignature | undefined {\n return catalog.find((s) => s.organism === organism && s.orbital === orbital);\n}\n\nfunction collectRuleCapabilities(\n overlay: RuleOverlay | undefined,\n): ReadonlySet<string> {\n const out = new Set<string>();\n for (const r of overlay?.rules ?? []) {\n if (typeof r.capability === 'string') out.add(r.capability);\n }\n return out;\n}\n\n/** The plan's name for a call site's orbital — `orbitalName` when it differs from the catalog `orbital`. */\nexport function factoryCallPlanOrbitalName(call: FactoryCallSite): string {\n return call.orbitalName ?? call.orbital;\n}\n","/**\n * Deterministic page-route slug for an orbital. The plan owns the global\n * route namespace: the primary/landing leg keeps `/`, every other leg is\n * assigned `/<orbital-slug>` so a multi-orbital plan never composes two\n * `path: \"/\"` pages (the global `PageDuplicatePath` class). The same slug is\n * the compose-time backstop's re-slug target, so guidance and backstop agree.\n *\n * `ExpenseDashboardOrbital` → `expense-dashboard`. The trailing `Orbital`\n * suffix (when present) is dropped to match the trait-dedup prefix convention\n * in `computeCrossOrbitalTraitRenames`.\n */\nexport function orbitalRouteSlug(orbitalName: string): string {\n return orbitalName\n .replace(/Orbital$/, '')\n .replace(/([a-z0-9])([A-Z])/g, '$1-$2')\n .replace(/[^a-zA-Z0-9]+/g, '-')\n .toLowerCase()\n .replace(/^-+|-+$/g, '');\n}\n","import type { JsonValue } from '../types/index.js';\n\n/**\n * Collect the page paths and trait names an orbital's `.orb` owns. Shared by\n * rabit's delete-turn dangling-ref cleanup and\n * compose-time nav narrowing (`compose-app.ts`) — one walker,\n * two consumers, so the page↔orbital ownership map never drifts between them.\n */\nexport function collectOwnedSurface(node: JsonValue, pages: Set<string>, traits: Set<string>): void {\n if (Array.isArray(node)) {\n for (const item of node) collectOwnedSurface(item, pages, traits);\n return;\n }\n if (node === null || typeof node !== 'object') return;\n const pagesField = node['pages'];\n if (Array.isArray(pagesField)) {\n for (const p of pagesField) {\n if (p !== null && typeof p === 'object' && !Array.isArray(p) && typeof p['path'] === 'string') {\n pages.add(p['path']);\n }\n }\n }\n const traitsField = node['traits'];\n if (Array.isArray(traitsField)) {\n for (const t of traitsField) {\n if (t !== null && typeof t === 'object' && !Array.isArray(t) && typeof t['name'] === 'string') {\n traits.add(t['name']);\n }\n }\n }\n for (const value of Object.values(node)) collectOwnedSurface(value, pages, traits);\n}\n\n/**\n * The inverse walker: references in a SURVIVING orbital that point at a\n * deleted orbital's surface. Two kinds, and only two — a `navigate` to a page\n * the deleted orbital owned, and a `listens` entry sourced from one of its\n * traits that the survivor does not own itself.\n *\n * Lives beside `collectOwnedSurface` for the same reason that one does: it has\n * two consumers now (`collectDeleteCleanupEdits` in the coordinator, and the\n * e2e delete-cascade case, which has to find an orbital worth deleting before\n * it can test the cleanup). A second copy would answer a slightly different\n * question and quietly test nothing — measured: a substring-matching stand-in\n * reported 7–14 \"references\" per orbital on an organism where these rules find\n * zero.\n */\nexport function findDanglingRefs(\n node: JsonValue,\n deletedPages: ReadonlySet<string>,\n deletedTraits: ReadonlySet<string>,\n ownTraits: ReadonlySet<string>,\n out: Set<string>,\n): void {\n if (Array.isArray(node)) {\n if (node[0] === 'navigate' && typeof node[1] === 'string' && deletedPages.has(node[1])) {\n out.add(`navigate \"${node[1]}\" targets a deleted orbital's page`);\n }\n for (const item of node) findDanglingRefs(item, deletedPages, deletedTraits, ownTraits, out);\n return;\n }\n if (node === null || typeof node !== 'object') return;\n const source = node['source'];\n if (\n source !== null &&\n typeof source === 'object' &&\n !Array.isArray(source) &&\n source['kind'] === 'trait' &&\n typeof source['trait'] === 'string' &&\n deletedTraits.has(source['trait']) &&\n !ownTraits.has(source['trait'])\n ) {\n out.add(`a listens entry is sourced from deleted trait \"${source['trait']}\"`);\n }\n for (const value of Object.values(node)) {\n findDanglingRefs(value, deletedPages, deletedTraits, ownTraits, out);\n }\n}\n","/**\n * Baked S-expression field-comparison literal walk — one owner for the\n * consumers that must agree with the compiled path's\n * `ORB_S_ROLE_LITERAL_NOT_MEMBER` check (`user_identity.rs`) and\n * `ORB_S_OWNER_FIELD_NOT_IDENTITY_TYPED` check (`entity_access.rs`): rabit's\n * param-fill enum-delta guard (FIX-J) and the compose-time identity dedupe\n * passes (`compose-app.ts`, FIX-K/FIX-N).\n */\n\n/** Equality ops whose operands the role-literal validator compares (mirrors `user_identity.rs`). */\nconst EQUALITY_OPS: ReadonlySet<string> = new Set(['=', '==', '!=', '!==', 'eq', 'neq']);\n\nexport interface FieldBindingContext {\n entityName: string;\n isIdentity: boolean;\n /** Primary entity of the orbital being walked (`@entity` resolves to it). */\n scopeEntityName: string | null;\n field: string;\n}\n\n/** True when `node` is a binding to `<entity>.<field>` in one of the baked S-expr forms. */\nfunction isFieldBinding(node: unknown, ctx: FieldBindingContext): boolean {\n if (typeof node === 'string') {\n if (ctx.isIdentity && node === `@user.${ctx.field}`) return true;\n if (node === `@${ctx.entityName}.${ctx.field}`) return true;\n return ctx.scopeEntityName === ctx.entityName && node === `@entity.${ctx.field}`;\n }\n if (Array.isArray(node) && node[0] === 'object/get' && node.length === 3) {\n if (ctx.isIdentity && node[1] === '@user' && node[2] === ctx.field) return true;\n if (node[1] === `@${ctx.entityName}` && node[2] === ctx.field) return true;\n return ctx.scopeEntityName === ctx.entityName && node[1] === '@entity' && node[2] === ctx.field;\n }\n return false;\n}\n\n/**\n * Every string literal compared against `<entity>.<field>` inside `node` —\n * equality ops (`=` `==` `!=` `!==` `eq` `neq`) over either operand, plus\n * `array/includes` with the field binding as the haystack.\n */\nexport function collectFieldComparisonLiterals(node: unknown, ctx: FieldBindingContext, out: Set<string>): void {\n if (Array.isArray(node)) {\n const op = node[0];\n if (typeof op === 'string' && EQUALITY_OPS.has(op)) {\n const args = node.slice(1);\n if (args.some((arg) => isFieldBinding(arg, ctx))) {\n for (const arg of args) {\n if (typeof arg === 'string' && !arg.startsWith('@') && !isFieldBinding(arg, ctx)) out.add(arg);\n }\n }\n } else if (op === 'array/includes') {\n if (isFieldBinding(node[1], ctx)) {\n const needle = node[2];\n if (typeof needle === 'string' && !needle.startsWith('@')) out.add(needle);\n }\n }\n for (const item of node) collectFieldComparisonLiterals(item, ctx, out);\n return;\n }\n if (node !== null && typeof node === 'object') {\n for (const value of Object.values(node)) collectFieldComparisonLiterals(value, ctx, out);\n }\n}\n\n/** `@entity.<field>` in the bare dotted form (mirrors `entity_access.rs`'s `entity_field_of`). */\nfunction entityFieldOf(s: string): string | null {\n if (!s.startsWith('@entity.')) return null;\n const rest = s.slice('@entity.'.length);\n return rest.length === 0 || rest.includes('.') || rest.includes('[') ? null : rest;\n}\n\n/** The viewer's identity key in either baked form: `@user.id` or `[\"object/get\", \"@user\", \"id\"]`. */\nfunction isUserIdToken(node: unknown): boolean {\n if (node === '@user.id') return true;\n return (\n Array.isArray(node) &&\n node[0] === 'object/get' &&\n node[1] === '@user' &&\n node[2] === 'id'\n );\n}\n\n/** A candidate-row field read in either baked form: `@entity.<F>` or `[\"object/get\", \"@entity\", F]`. */\nfunction entityFieldBinding(node: unknown): string | null {\n if (typeof node === 'string') return entityFieldOf(node);\n if (Array.isArray(node) && node[0] === 'object/get' && node[1] === '@entity' && typeof node[2] === 'string') {\n return node[2];\n }\n return null;\n}\n\n/**\n * Every field read off the candidate row in the owner-comparison form the\n * compiled path's `ORB_S_OWNER_FIELD_NOT_IDENTITY_TYPED` check enforces: a\n * `=`/`==` comparison with `@user.id` on one side and `@entity.<F>` on the\n * other, at any nesting depth (`or`/`and` clauses included). `id` itself is\n * excluded — an identity entity comparing its own key to the viewer is the\n * self-read shape, not an owner column.\n */\nexport function collectOwnerComparedFields(node: unknown, out: Set<string>): void {\n if (Array.isArray(node)) {\n const op = node[0];\n if (op === '=' || op === '==') {\n const args = node.slice(1);\n if (args.some(isUserIdToken)) {\n for (const arg of args) {\n const field = entityFieldBinding(arg);\n if (field !== null && field !== 'id') out.add(field);\n }\n }\n }\n for (const item of node) collectOwnerComparedFields(item, out);\n return;\n }\n if (node !== null && typeof node === 'object') {\n for (const value of Object.values(node)) collectOwnerComparedFields(value, out);\n }\n}\n\n/**\n * The create/update-effect twin of the owner form: a `persist` payload entry\n * `\"F\": \"@user.id\"` stamping the viewer's identity key onto field `F` of the\n * named entity. Returns entity name → stamped field names. A trailing payload\n * object carrying `emit` is the resolver's options bag, not data (same\n * convention as `effect/persist.rs`).\n */\nexport function collectOwnerStampedFields(node: unknown, out: Map<string, Set<string>>): void {\n if (Array.isArray(node)) {\n if (\n node[0] === 'persist' &&\n (node[1] === 'create' || node[1] === 'upsert' || node[1] === 'update') &&\n typeof node[2] === 'string'\n ) {\n const payload = node[3];\n const isOptionsBag = node.length === 4 && payload !== null && typeof payload === 'object' && !Array.isArray(payload) && 'emit' in payload;\n if (payload !== null && typeof payload === 'object' && !Array.isArray(payload) && !isOptionsBag) {\n for (const [key, value] of Object.entries(payload)) {\n if (!isUserIdToken(value)) continue;\n const set = out.get(node[2]) ?? new Set<string>();\n set.add(key);\n out.set(node[2], set);\n }\n }\n }\n for (const item of node) collectOwnerStampedFields(item, out);\n return;\n }\n if (node !== null && typeof node === 'object') {\n for (const value of Object.values(node)) collectOwnerStampedFields(value, out);\n }\n}\n","/**\n * An app composed from its per-orbital files — the rules no single orbital can see, authored\n * or built in isolation: global page routes and inline trait names stay unique\n * (`dedupeComposedSurface`), exactly one `[identity]` entity survives (`dedupeComposedIdentity`,\n * FIX-K/L/N), the organisms' config is unioned (a multi-organism sidebar concatenates, deduped\n * by href) and every `navItems` list is narrowed to pages the app owns. One owner for rabit's\n * composer, the studio's app load and the seeding harnesses (moved from rabit 2026-10-04).\n *\n * App assembly, not the `behavior/compose` operator: `composeBehaviors` itself is unchanged.\n */\nimport { mergeExpectationShape } from '../expectation-shape.js';\nimport type { DeclaredTraitConfig, Entity, EntityField, ExpectDeclaration, IdentityLedger, JsonObject, JsonValue, OrbitalDefinition, OrbitalSchema, Trait, TraitConfigValue } from '../types/index.js';\nimport { entityRenameBlockers, renameEntity, renameEntityInSchema, type EntityRenameBlocker } from './rename-entity.js';\nimport { isEntityReferenceAny, isJsonObject, isPageReference, isRoutePage, ledgerRename, unionOsGrants } from '../types/index.js';\nimport { rewriteTraitRefsInTree } from '../factory-runtime/apply-params-to-orb.js';\nimport { collectOrbitalForwardedConfigKeys, navItemHref, unionOrganismConfigs } from '../embedded-trait-config.js';\nimport { humanizeKey } from '../factory/questions/generate.js';\nimport { asDefinitions, composeBehaviors, mergeLedgers, type ComposeBehaviorsResult } from './compose-behaviors.js';\nimport type { EventWiringEntry } from './event-wiring.js';\nimport type { LayoutStrategy } from './layout-strategy.js';\nimport { orbitalRouteSlug } from './route-slug.js';\nimport { collectOwnedSurface } from './owned-surface.js';\nimport { collectFieldComparisonLiterals, collectOwnerComparedFields, collectOwnerStampedFields } from './field-comparison-literals.js';\n\n/** One compose-time deterministic rename applied to break a global collision. */\nexport interface SurfaceRename {\n orbitalName: string;\n from: string;\n to: string;\n /** V4 id of the renamed declaration (traits only), for ledger sync. */\n id?: string;\n}\n\n/** One compose-time identity demotion: an entity that lost the `@user` directive. */\nexport interface IdentityDemotion {\n orbitalName: string;\n entityName: string;\n}\n\n/**\n * FIX-K — literals unioned into the winning `[identity]` entity's\n * closed-vocabulary field because a demoted identity's organism baked\n * `*_policy` S-expressions comparing `@user.<field>` against its own role\n * vocabulary (after the demotion every `@user` resolves to the winner, so a\n * literal the winner's field cannot carry is a dead branch —\n * `ORB_S_ROLE_LITERAL_NOT_MEMBER`).\n */\nexport interface IdentityRoleUnion {\n /** Winning identity's orbital. */\n orbitalName: string;\n /** Winning identity entity that grew the literals. */\n entityName: string;\n field: string;\n addedLiterals: string[];\n}\n\n/**\n * FIX-L — a composed-surface `expects identity X` rewritten to\n * `expects entity X` because X lost the `[identity]` tag in this compose\n * (the entity is still provided, so the link-check passes; the compiled\n * path's own `ORB_S_EXPECTATION_PROVIDER_MISMATCH` suggestion is exactly\n * this rewrite).\n */\nexport interface IdentityExpectsRewrite {\n /** Consumer orbital whose declaration was rewritten. */\n orbitalName: string;\n /** Demoted entity the declaration named. */\n entityName: string;\n}\n\n/**\n * FIX-N — a relation field retargeted from a demoted identity to the\n * surviving one because the composed surface compares that field to\n * `@user.id` (an access directive's owner form, or a `persist` payload\n * stamping the viewer's key onto it). Owner-compared fields ONLY — a\n * blanket retarget would corrupt legitimate data relations\n * (`Sprint.members: [TeamMember]`).\n */\nexport interface IdentityRelationRetarget {\n /** Orbital owning the entity definition that was retargeted. */\n orbitalName: string;\n /** Entity owning the relation field. */\n entityName: string;\n field: string;\n fromEntity: string;\n toEntity: string;\n}\n\nexport interface IdentityDedupeResult {\n demotions: IdentityDemotion[];\n roleUnions: IdentityRoleUnion[];\n expectsRewrites: IdentityExpectsRewrite[];\n relationsRetargeted: IdentityRelationRetarget[];\n}\n\n/** One `navItems` narrowing outcome: entries dropped from a single trait's config. */\nexport interface NavItemsNarrowResult {\n orbitalName: string;\n traitName: string;\n droppedHrefs: string[];\n}\n\n/**\n * Rewrite every intra-orbital reference to inline trait `oldName` → `newName`.\n * Targets are structural (never a broad string replace): the trait definition's\n * own `name`, page trait references (`{ ref: \"<name>\" }` or a bare string in a\n * `traits[]` array), and `source.trait` on a listens entry. The inline trait's\n * `ref` field points at the std pattern it wraps (a namespaced\n * `Alias.traits.X`), so it never equals the bare inline name and is left\n * untouched.\n */\nfunction rewriteInlineTraitName(node: JsonValue, oldName: string, newName: string): void {\n if (Array.isArray(node)) {\n for (const item of node) rewriteInlineTraitName(item, oldName, newName);\n return;\n }\n if (!isJsonObject(node)) return;\n for (const key of ['name', 'ref', 'trait']) {\n if (node[key] === oldName) node[key] = newName;\n }\n const traits = node['traits'];\n if (Array.isArray(traits)) {\n for (let i = 0; i < traits.length; i += 1) {\n if (traits[i] === oldName) traits[i] = newName;\n }\n }\n for (const value of Object.values(node)) rewriteInlineTraitName(value, oldName, newName);\n}\n\n/**\n * Rewrite an orbital's own page route `oldPath` → `newPath`: the inline page's\n * `path` (and any `{ path: \"<oldPath>\" }` reference override) plus every\n * `[\"navigate\", \"<oldPath>\"]` effect target inside the same orbital.\n */\nfunction rewriteOwnRoute(node: JsonValue, oldPath: string, newPath: string): void {\n if (Array.isArray(node)) {\n if (node[0] === 'navigate' && node[1] === oldPath) node[1] = newPath;\n for (const item of node) rewriteOwnRoute(item, oldPath, newPath);\n return;\n }\n if (!isJsonObject(node)) return;\n if (node['path'] === oldPath) node['path'] = newPath;\n for (const value of Object.values(node)) rewriteOwnRoute(value, oldPath, newPath);\n}\n\n/** Round-trip an orbital def to a mutable JSON tree (JSON.parse returns `any`). */\nfunction cloneOrbitalNode(orbital: OrbitalDefinition): JsonObject {\n return JSON.parse(JSON.stringify(orbital));\n}\n\n/** Round-trip a mutated JSON tree back to a typed orbital def. */\nfunction nodeToOrbital(node: JsonObject): OrbitalDefinition {\n return JSON.parse(JSON.stringify(node));\n}\n\n/** First unused candidate: `base`, then `base2`, `base3`, … (the seen set decides). */\nfunction firstFreeName(base: string, taken: ReadonlySet<string>): string {\n if (!taken.has(base)) return base;\n for (let n = 2; ; n += 1) {\n const candidate = `${base}${n}`;\n if (!taken.has(candidate)) return candidate;\n }\n}\n\n/** First unused route: `/<slug>`, then `/<slug>-2`, … (the seen set decides). */\nfunction firstFreeRoute(slug: string, taken: ReadonlySet<string>): string {\n const base = `/${slug}`;\n if (!taken.has(base)) return base;\n for (let n = 2; ; n += 1) {\n const candidate = `${base}-${n}`;\n if (!taken.has(candidate)) return candidate;\n }\n}\n\n/**\n * Compose-time backstop for the two global-uniqueness collision classes a\n * per-orbital free-compose subagent cannot see (it authors its `.orb` in\n * isolation): duplicate page routes (`PageDuplicatePath`) and duplicate inline\n * trait names (`ORB_T_DUPLICATE_NAME`). Deterministic, keyed on the composed\n * `orbitals[]` order (`listOrbitals()` is sorted): the FIRST orbital to claim a\n * route/trait name keeps it, later claimants are re-slugged / orbital-prefixed\n * with references rewritten in lockstep — the declaration's own `name`, page\n * trait refs, `source.trait`, AND every `@trait.<old>` token anywhere in the\n * orbital JSON (config values at any depth, state-machine trees — the same\n * coverage as the factory path's `applyDeclarationTraitRenames`, whose\n * exported walker is reused here; FIX-M: a `children` default holding\n * `\"@trait.InlineIconRender6\"` otherwise dangles with\n * `ORB_BINDING_TRAIT_UNKNOWN` on every recompose). Mutates the passed array\n * in place and returns the applied renames so the caller can emit typed\n * trace events. A clean plan (distinct routes, distinct trait names) is a\n * no-op.\n */\nexport function dedupeComposedSurface(orbitals: OrbitalDefinition[]): {\n routes: SurfaceRename[];\n traits: SurfaceRename[];\n pageNames: SurfaceRename[];\n} {\n const routes: SurfaceRename[] = [];\n const traits: SurfaceRename[] = [];\n const pageNames: SurfaceRename[] = [];\n const seenRoutes = new Set<string>();\n const seenTraits = new Set<string>();\n const seenPageNames = new Set<string>();\n\n for (let i = 0; i < orbitals.length; i += 1) {\n let node = cloneOrbitalNode(orbitals[i]);\n const orbitalName = typeof node['name'] === 'string' ? node['name'] : `orbital-${i}`;\n let mutated = false;\n\n // Routes — inline pages own a string `path`; references do not.\n const pages = node['pages'];\n const ownRoutes: string[] = [];\n if (Array.isArray(pages)) {\n for (const p of pages) {\n if (isJsonObject(p) && typeof p['path'] === 'string') ownRoutes.push(p['path']);\n }\n }\n const reservedRoutes = new Set([...seenRoutes, ...ownRoutes]);\n for (const route of ownRoutes) {\n if (!seenRoutes.has(route)) {\n seenRoutes.add(route);\n continue;\n }\n const next = firstFreeRoute(orbitalRouteSlug(orbitalName), reservedRoutes);\n rewriteOwnRoute(node, route, next);\n seenRoutes.add(next);\n reservedRoutes.add(next);\n routes.push({ orbitalName, from: route, to: next });\n mutated = true;\n }\n\n // Inline page names — the page's own `name` is global too (two organisms both ship \"People\").\n if (Array.isArray(pages)) {\n const ownPageNames = pages.flatMap((p) => (isJsonObject(p) && typeof p['path'] === 'string' && typeof p['name'] === 'string' ? [p['name']] : []));\n const reservedPageNames = new Set([...seenPageNames, ...ownPageNames]);\n for (const p of pages) {\n if (!isJsonObject(p) || typeof p['path'] !== 'string' || typeof p['name'] !== 'string') continue;\n const pageName = p['name'];\n if (!seenPageNames.has(pageName)) {\n seenPageNames.add(pageName);\n continue;\n }\n const next = firstFreeName(`${orbitalName.replace(/Orbital$/, '')}${pageName}`, reservedPageNames);\n p['name'] = next;\n seenPageNames.add(next);\n reservedPageNames.add(next);\n pageNames.push({ orbitalName, from: pageName, to: next });\n mutated = true;\n }\n }\n\n // Inline trait names — the `orbital.traits[]` objects with a string `name`.\n const traitDefs = node['traits'];\n const ownTraitNames: string[] = [];\n if (Array.isArray(traitDefs)) {\n for (const t of traitDefs) {\n if (isJsonObject(t) && typeof t['name'] === 'string') ownTraitNames.push(t['name']);\n }\n }\n const prefix = orbitalName.replace(/Orbital$/, '');\n const reservedTraits = new Set([...seenTraits, ...ownTraitNames]);\n const tokenRenames = new Map<string, string>();\n for (const traitName of ownTraitNames) {\n if (!seenTraits.has(traitName)) {\n seenTraits.add(traitName);\n continue;\n }\n const next = firstFreeName(`${prefix}${traitName}`, reservedTraits);\n // Capture the renamed declaration's V4 id BEFORE the rewrite (names are\n // unique within one orbital) so the caller can sync the merged ledger.\n let traitId: string | undefined;\n if (Array.isArray(traitDefs)) {\n for (const t of traitDefs) {\n if (isJsonObject(t) && t['name'] === traitName && typeof t['id'] === 'string') {\n traitId = t['id'];\n break;\n }\n }\n }\n rewriteInlineTraitName(node, traitName, next);\n tokenRenames.set(traitName, next);\n seenTraits.add(next);\n reservedTraits.add(next);\n traits.push({ orbitalName, from: traitName, to: next, ...(traitId !== undefined ? { id: traitId } : {}) });\n mutated = true;\n }\n\n // `@trait.<old>` tokens (config values, state-machine trees) — the\n // structural rewrite above only covers bare-name positions.\n if (tokenRenames.size > 0) {\n node = rewriteTraitRefsInTree(node, tokenRenames) as JsonObject;\n }\n\n if (mutated) orbitals[i] = nodeToOrbital(node);\n }\n\n return { routes, traits, pageNames };\n}\n\n/**\n * Compose-time backstop: keep exactly ONE `[identity]` entity in the composed\n * surface. Every organism bakes its own `@user` entity (`OnlineUser`,\n * `TeamMember`, …), so any multi-organism roster collides on\n * `ORB_S_IDENTITY_NOT_UNIQUE` — an error no per-orbital subagent can see and\n * plan-repair could only \"fix\" by rewriting a sibling's source (battery\n * 2026-08-06 edit-in-complex-app: repair stubbed the 9-trait factory\n * `OnlineUserOrbital` down to 1 trait to strip its identity). Roster order\n * decides the winner (deterministic); losers are demoted in the composed\n * surface only — per-orbital files stay untouched, same contract as\n * `dedupeComposedSurface`.\n *\n * A demotion has two deterministic follow-ons, applied in the same pass:\n *\n * - FIX-K — the loser's organism compares `@user.<field>` against the LOSER's\n * role vocabulary — in baked `*_policy` S-expressions, and through config\n * (an atom's `allowedRoles`) where compose cannot see the comparison.\n * Post-dedupe every `@user` resolves to the winner schema-wide, so the\n * loser's declared vocabulary and every literal it compares join the\n * winner's closed vocabulary (the loser's users keep their roles; owner\n * ruling 2026-10-04).\n * A literal compared against a field the winner does not declare is a\n * shape mismatch: compose fails with a deterministic error rather than\n * silently shipping dead policy branches.\n * A loser is a demoted identity, or an identity an orbital `expects` by name that no orbital\n * provides as identity (composed from another organism): its role vocabulary joins the winner's,\n * and its expectation is rewritten when the app holds it as a plain record.\n *\n * - FIX-L — a composed `expects identity <Loser>` would fail the link-check\n * (`ORB_S_EXPECTATION_PROVIDER_MISMATCH`) on every recompose; it is\n * rewritten to `expects entity <Loser>` — the compiled path's own\n * suggestion — which the still-provided demoted entity satisfies.\n * - FIX-N — relation fields targeting the demoted identity that the composed\n * surface compares to `@user.id` (owner form in a baked access directive,\n * or a `persist` payload stamping the viewer's key) fail\n * `ORB_S_OWNER_FIELD_NOT_IDENTITY_TYPED` once `@user` resolves to the\n * winner; their `relation.entity` is retargeted to the winner. Owner-\n * compared fields ONLY — a blanket retarget would corrupt legitimate data\n * relations (`Sprint.members: [TeamMember]`).\n */\nexport function dedupeComposedIdentity(orbitals: OrbitalDefinition[]): IdentityDedupeResult {\n const demotions: IdentityDemotion[] = [];\n const demotedEntities: Entity[] = [];\n let winnerIndex = -1;\n for (let i = 0; i < orbitals.length; i += 1) {\n const def = orbitals[i]!;\n const entity = def.entity;\n if (entity === undefined || isEntityReferenceAny(entity)) continue;\n if (entity.identity !== true) continue;\n if (winnerIndex === -1) {\n winnerIndex = i;\n continue;\n }\n const demoted = { ...entity };\n delete demoted.identity;\n orbitals[i] = { ...def, entity: demoted };\n demotions.push({ orbitalName: def.name, entityName: entity.name });\n demotedEntities.push(demoted);\n }\n if (winnerIndex === -1) {\n return { demotions, roleUnions: [], expectsRewrites: [], relationsRetargeted: [] };\n }\n // An orbital composed from another organism expects that organism's identity by name; after\n // compose `@user` is the winner, so a named identity nothing provides as identity is a loser too.\n const winnerName = orbitalEntityName(orbitals[winnerIndex]!);\n if (winnerName === null) throw new Error(\"identity dedupe requires a named identity entity\");\n const demotedNames = new Set(demotions.map((d) => d.entityName));\n const strayExpects: Array<{ name: string; shape: EntityField[] }> = [];\n for (const def of orbitals) {\n for (const e of def.expects ?? []) {\n if (e.kind !== 'identity' || e.name === undefined || e.name === winnerName || demotedNames.has(e.name)) continue;\n strayExpects.push({ name: e.name, shape: e.shape ?? [] });\n }\n }\n if (demotions.length === 0 && strayExpects.length === 0) {\n return { demotions, roleUnions: [], expectsRewrites: [], relationsRetargeted: [] };\n }\n const providedNames = new Set(orbitals.flatMap((def) => inlineEntitiesOf(def).map((e) => e.name)));\n const roleUnions = unionDemotedRoleVocabularies(orbitals, winnerIndex, [\n ...demotedEntities.map((d) => ({ name: d.name, fields: d.fields })),\n ...strayExpects.map((e) => ({ name: e.name, fields: e.shape })),\n ]);\n const loserNames = new Set([\n ...demotedNames,\n ...strayExpects.map((e) => e.name).filter((name) => providedNames.has(name)),\n ]);\n const expectsRewrites = rewriteDemotedIdentityExpects(orbitals, loserNames, winnerName);\n const relationsRetargeted = retargetDemotedOwnerRelations(orbitals, winnerIndex, loserNames);\n return { demotions, roleUnions, expectsRewrites, relationsRetargeted };\n}\n\n/** The closed vocabulary of a field — `values`, or the element schema's `values` (mirrors `user_identity.rs`'s `vocabulary`). */\nfunction fieldVocabulary(field: EntityField): readonly string[] | null {\n if ('values' in field && Array.isArray(field.values) && field.values.length > 0) return field.values;\n if ((field.type === 'array' || field.type === 'object') && field.items !== undefined) {\n return fieldVocabulary(field.items);\n }\n return null;\n}\n\nfunction withUnionedVocabulary(field: EntityField, missing: readonly string[]): EntityField {\n if ('values' in field && Array.isArray(field.values) && field.values.length > 0) {\n return { ...field, values: [...field.values, ...missing] };\n }\n if ((field.type === 'array' || field.type === 'object') && field.items !== undefined) {\n return { ...field, items: withUnionedVocabulary(field.items, missing) };\n }\n return field;\n}\n\nexport interface IdentityVocabularyDelta {\n /** The identity's closed-vocabulary fields, widened — a same-named field delta replaces the canonical one. */\n fields: EntityField[];\n added: Array<{ field: string; literals: string[] }>;\n}\n\n/**\n * The literals other orbitals compare `@user.<field>` against that the identity's closed vocabulary\n * lacks, as a field delta the plan applies to the identity line (G-RABIT-036).\n */\nexport function identityVocabularyDelta(identity: Entity, others: ReadonlyArray<OrbitalDefinition>): IdentityVocabularyDelta {\n const delta: IdentityVocabularyDelta = { fields: [], added: [] };\n for (const field of identity.fields ?? []) {\n if (typeof field.name !== 'string') continue;\n const vocab = fieldVocabulary(field);\n if (vocab === null) continue;\n const referenced = new Set<string>();\n for (const def of others) {\n collectFieldComparisonLiterals(def, { entityName: identity.name, isIdentity: true, scopeEntityName: orbitalEntityName(def), field: field.name }, referenced);\n }\n const missing = [...referenced].filter((l) => !vocab.includes(l)).sort();\n if (missing.length === 0) continue;\n delta.fields.push(withUnionedVocabulary(field, missing));\n delta.added.push({ field: field.name, literals: missing });\n }\n return delta;\n}\n\n/**\n * FIX-K — union the role literals a demoted identity's organism hardcoded in\n * its baked policies into the winning identity entity's vocabulary. Field\n * attribution is by NAME: a `@user.<field>` comparison the loser authored\n * against its own `<field>` resolves to the winner's `<field>` after the\n * demotion. Literals referencing a field the winner does not declare cannot\n * be carried over — that shape mismatch is a deterministic compose error.\n */\nfunction unionDemotedRoleVocabularies(\n orbitals: OrbitalDefinition[],\n winnerIndex: number,\n /** Each losing identity's fields: a demoted entity's, or a stray expectation's shape. */\n demotedEntities: ReadonlyArray<{ name: string; fields: ReadonlyArray<EntityField> }>,\n): IdentityRoleUnion[] {\n const winnerDef = orbitals[winnerIndex]!;\n const winnerEntity = winnerDef.entity;\n if (winnerEntity === undefined || isEntityReferenceAny(winnerEntity)) return [];\n const winnerFields = winnerEntity.fields;\n\n const fieldNames = new Set<string>();\n for (const demoted of demotedEntities) {\n for (const f of demoted.fields) {\n if (typeof f.name === 'string') fieldNames.add(f.name);\n }\n }\n\n const unions: IdentityRoleUnion[] = [];\n const replacements = new Map<string, EntityField>();\n const mismatches: string[] = [];\n for (const fieldName of [...fieldNames].sort()) {\n const referenced = new Set<string>();\n for (const def of orbitals) {\n collectFieldComparisonLiterals(def, {\n entityName: winnerEntity.name,\n isIdentity: true,\n scopeEntityName: orbitalEntityName(def),\n field: fieldName,\n }, referenced);\n }\n const winnerField = winnerFields.find((f) => f.name === fieldName);\n // Literals the demoted organisms compare only through config (an atom's `allowedRoles`) never\n // appear in a comparison here: the demoted identity's declared vocabulary carries them.\n if (winnerField !== undefined && fieldVocabulary(winnerField) !== null) {\n for (const demoted of demotedEntities) {\n const own = demoted.fields.find((f) => f.name === fieldName);\n for (const literal of (own !== undefined ? fieldVocabulary(own) : null) ?? []) referenced.add(literal);\n }\n }\n if (referenced.size === 0) continue;\n if (winnerField === undefined) {\n const sources = demotedEntities\n .filter((d) => d.fields.some((f) => f.name === fieldName))\n .map((d) => d.name);\n mismatches.push(\n `@user.${fieldName} is compared against ${[...referenced].sort().map((l) => JSON.stringify(l)).join(', ')} ` +\n `(field declared by demoted ${sources.join(', ')}), but the surviving [identity] entity ` +\n `${winnerEntity.name} declares no field \"${fieldName}\"`,\n );\n continue;\n }\n const vocab = fieldVocabulary(winnerField);\n if (vocab === null) continue;\n const missing = [...referenced].filter((l) => !vocab.includes(l)).sort();\n if (missing.length === 0) continue;\n replacements.set(fieldName, withUnionedVocabulary(winnerField, missing));\n unions.push({\n orbitalName: winnerDef.name,\n entityName: winnerEntity.name,\n field: fieldName,\n addedLiterals: missing,\n });\n }\n\n if (mismatches.length > 0) {\n throw new Error(\n `identity dedupe shape mismatch — ${mismatches.join('; ')}. The identity shapes cannot be ` +\n 'reconciled deterministically and silently dropping the literals ships dead policy branches ' +\n '(ORB_S_ROLE_LITERAL_NOT_MEMBER); compose cannot proceed.',\n );\n }\n\n if (replacements.size > 0) {\n orbitals[winnerIndex] = {\n ...winnerDef,\n entity: {\n ...winnerEntity,\n fields: winnerFields.map((f) => (typeof f.name === 'string' ? replacements.get(f.name) ?? f : f)),\n },\n };\n }\n return unions;\n}\n\n/**\n * The payload fields `node`'s `persist create|update <entityName> {…}` effects write (a trailing\n * object carrying `emit` is the resolver's options bag, not data — the persist.rs convention).\n */\nfunction collectPersistedFields(node: unknown, entityName: string, out: Set<string>): void {\n if (Array.isArray(node)) {\n if (node[0] === 'persist' && (node[1] === 'create' || node[1] === 'upsert' || node[1] === 'update') && node[2] === entityName) {\n const payload: unknown = node[3];\n const isOptionsBag = node.length === 4 && payload !== null && typeof payload === 'object' && !Array.isArray(payload) && 'emit' in payload;\n if (payload !== null && typeof payload === 'object' && !Array.isArray(payload) && !isOptionsBag) {\n for (const key of Object.keys(payload)) out.add(key);\n }\n }\n for (const item of node) collectPersistedFields(item, entityName, out);\n return;\n }\n if (node !== null && typeof node === 'object') {\n for (const value of Object.values(node)) collectPersistedFields(value, entityName, out);\n }\n}\n\n/**\n * FIX-L — rewrite composed-surface `expects identity <demoted>` → `expects entity <demoted>`.\n * An identity shape described `@user`, not the record; as an entity shape each field it names is\n * carried as the entity declares it, and each field the orbital persists to the entity joins it.\n */\nfunction rewriteDemotedIdentityExpects(\n orbitals: OrbitalDefinition[],\n demotedNames: ReadonlySet<string>,\n winnerName: string,\n): IdentityExpectsRewrite[] {\n const entityByName = new Map<string, Entity>();\n for (const def of orbitals) for (const entity of inlineEntitiesOf(def)) entityByName.set(entity.name, entity);\n const rewrites: IdentityExpectsRewrite[] = [];\n for (let i = 0; i < orbitals.length; i += 1) {\n const def = orbitals[i]!;\n const expects = def.expects;\n if (expects === undefined) continue;\n let mutated = false;\n let viewerShape: EntityField[] | undefined;\n const next: ExpectDeclaration[] = expects.map((e): ExpectDeclaration => {\n if (e.kind !== 'identity' || e.name === undefined || !demotedNames.has(e.name)) return e;\n viewerShape = mergeExpectationShape(viewerShape, e.shape);\n mutated = true;\n rewrites.push({ orbitalName: def.name, entityName: e.name });\n if (e.shape === undefined) return { kind: 'entity', name: e.name };\n const persisted = new Set<string>();\n collectPersistedFields(def.traits ?? [], e.name, persisted);\n const declared = new Set(e.shape.map((f) => f.name));\n const entity = entityByName.get(e.name);\n const asDeclared = (field: EntityField): EntityField => entity?.fields.find((f) => f.name === field.name) ?? field;\n const added = [...persisted].sort().flatMap((field) => {\n if (declared.has(field)) return [];\n const own = entity?.fields.find((f) => f.name === field);\n return own !== undefined ? [own] : [];\n });\n return { kind: 'entity', name: e.name, shape: [...e.shape.map(asDeclared), ...added] };\n });\n if (mutated) {\n const viewerIndex = next.findIndex(e => e.kind === 'identity' && (e.name === winnerName || e.name === undefined));\n const viewer = next[viewerIndex];\n const shape = mergeExpectationShape(viewer?.kind === 'identity' ? viewer.shape : undefined, viewerShape);\n const requirement: ExpectDeclaration = { kind: 'identity', name: winnerName, ...(shape !== undefined ? { shape } : {}) };\n if (viewerIndex < 0) next.push(requirement);\n else next[viewerIndex] = requirement;\n orbitals[i] = { ...def, expects: next };\n }\n }\n return rewrites;\n}\n\n/** The inline entities an orbital owns (primary + auxiliary). */\nfunction inlineEntitiesOf(def: OrbitalDefinition): Entity[] {\n const out: Entity[] = [];\n if (def.entity !== undefined && !isEntityReferenceAny(def.entity)) out.push(def.entity);\n for (const er of def.auxiliaryEntities ?? []) {\n if (!isEntityReferenceAny(er)) out.push(er);\n }\n return out;\n}\n\nfunction retargetOwnerRelationFields(\n entity: Entity,\n fieldNames: ReadonlySet<string> | undefined,\n demotedNames: ReadonlySet<string>,\n winner: Entity,\n): { entity: Entity; applied: Array<{ field: string; fromEntity: string; toEntity: string }> } | null {\n if (fieldNames === undefined) return null;\n const applied: Array<{ field: string; fromEntity: string; toEntity: string }> = [];\n const fields = entity.fields.map((f) => {\n if (f.name === undefined || !fieldNames.has(f.name) || f.type !== 'relation') return f;\n if (!demotedNames.has(f.relation.entity)) return f;\n applied.push({ field: f.name, fromEntity: f.relation.entity, toEntity: winner.name });\n const relation = { ...f.relation, entity: winner.name };\n if (relation.entityId !== undefined) {\n if (winner.id !== undefined) relation.entityId = winner.id;\n else delete relation.entityId;\n }\n return { ...f, relation };\n });\n return applied.length === 0 ? null : { entity: { ...entity, fields }, applied };\n}\n\n/**\n * FIX-N — retarget owner-compared relation fields off a demoted identity\n * onto the winner. A field qualifies ONLY when the composed surface compares\n * it to `@user.id`: the `=`/`==` owner form in the entity's own baked access\n * directives (any `or`/`and` nesting), or a `persist` create/update payload\n * stamping `\"<F>\": \"@user.id\"` onto the named entity. Anything else\n * targeting the demoted entity (e.g. `Sprint.members: [TeamMember]`) is a\n * legitimate data relation and stays pointed at it.\n */\nfunction retargetDemotedOwnerRelations(\n orbitals: OrbitalDefinition[],\n winnerIndex: number,\n demotedNames: ReadonlySet<string>,\n): IdentityRelationRetarget[] {\n const winnerDef = orbitals[winnerIndex]!;\n const winnerEntity = winnerDef.entity;\n if (winnerEntity === undefined || isEntityReferenceAny(winnerEntity)) return [];\n\n const candidates = new Map<string, Set<string>>();\n const addAll = (entityName: string, fields: ReadonlySet<string>) => {\n if (fields.size === 0) return;\n const set = candidates.get(entityName) ?? new Set<string>();\n for (const f of fields) set.add(f);\n candidates.set(entityName, set);\n };\n for (const def of orbitals) {\n for (const entity of inlineEntitiesOf(def)) {\n const fields = new Set<string>();\n for (const policy of [entity.read_policy, entity.create_policy, entity.update_policy, entity.delete_policy]) {\n if (policy !== undefined) collectOwnerComparedFields(policy, fields);\n }\n addAll(entity.name, fields);\n }\n const stamped = new Map<string, Set<string>>();\n collectOwnerStampedFields(def.traits ?? [], stamped);\n for (const [entityName, fields] of stamped) addAll(entityName, fields);\n }\n\n const retargets: IdentityRelationRetarget[] = [];\n for (let i = 0; i < orbitals.length; i += 1) {\n const def = orbitals[i]!;\n let next = def;\n if (next.entity !== undefined && !isEntityReferenceAny(next.entity)) {\n const replaced = retargetOwnerRelationFields(next.entity, candidates.get(next.entity.name), demotedNames, winnerEntity);\n if (replaced !== null) {\n next = { ...next, entity: replaced.entity };\n for (const a of replaced.applied) retargets.push({ orbitalName: def.name, entityName: replaced.entity.name, ...a });\n }\n }\n const aux = next.auxiliaryEntities;\n if (aux !== undefined) {\n let auxNext = aux;\n for (let j = 0; j < aux.length; j += 1) {\n const er = aux[j]!;\n if (isEntityReferenceAny(er)) continue;\n const replaced = retargetOwnerRelationFields(er, candidates.get(er.name), demotedNames, winnerEntity);\n if (replaced === null) continue;\n if (auxNext === aux) auxNext = [...aux];\n auxNext[j] = replaced.entity;\n for (const a of replaced.applied) retargets.push({ orbitalName: def.name, entityName: replaced.entity.name, ...a });\n }\n if (auxNext !== aux) next = { ...next, auxiliaryEntities: auxNext };\n }\n if (next !== def) orbitals[i] = next;\n }\n return retargets;\n}\n\n/**\n * Narrow `OrbitalDefinition['entity']` to the object form carrying\n * `name` + `fields` — same accessor shape as `per-orbital-build.ts`'s\n * `asEntityObject`; the bare string-ref form declares no fields.\n */\nexport function asEntityObject(\n entity: OrbitalDefinition['entity'],\n): { name?: string; fields?: ReadonlyArray<EntityField> } | null {\n if (entity === undefined || entity === null || typeof entity === 'string') return null;\n return entity;\n}\n\n/** The entity an orbital DECLARES (object form only — a bare string ref owns nothing here). */\nexport function orbitalEntityName(def: OrbitalDefinition): string | null {\n const name = asEntityObject(def.entity)?.name;\n return typeof name === 'string' ? name : null;\n}\n\n/**\n * Structural check for a declared `[NavItem]` config field — the ONE knob\n * type in the whole library (`std-app-layout.lolo`'s `navItems`), matched by\n * its compiler-assigned type tag rather than by field name so the check stays\n * correct if a second `[NavItem]`-typed knob is ever declared elsewhere. A\n * `default` of `\"@pages\"` (the atom's own host-orbital-scoped binding, see\n * `orbital-compiler/phases/resolve.rs`) is a string, not an array, and is\n * left untouched here — only a literal call-site override array is narrowed.\n */\nfunction isNavItemsConfigField(entry: JsonValue): entry is JsonObject & { default: JsonValue[] } {\n return isJsonObject(entry) && entry['type'] === '[NavItem]' && Array.isArray(entry['default']);\n}\n\n/**\n * S14 — narrow every surviving orbital's literal `navItems` override to\n * hrefs owned by an orbital IN THIS composed surface. A partial roster\n * (Rabit decomposes an organism to a subset by design) otherwise ships the\n * organism's full sidebar, including dead links to pages no orbital in this\n * build produced. `ownedPages` is derived from the SAME `collectOwnedSurface`\n * walk the delete-turn cleanup uses (`orbitals/coordinator/loop.ts`) — one\n * page↔orbital ownership source, not a second text-matching walker. An entry\n * whose `href` cannot be read at all is kept, never guessed away.\n */\nfunction narrowNavItemsToOwnedPages(orbitals: OrbitalDefinition[], ownedPages: ReadonlySet<string>): NavItemsNarrowResult[] {\n\n const drops: NavItemsNarrowResult[] = [];\n for (let i = 0; i < orbitals.length; i += 1) {\n const node = cloneOrbitalNode(orbitals[i]);\n const orbitalName = typeof node['name'] === 'string' ? node['name'] : `orbital-${i}`;\n const traitDefs = node['traits'];\n if (!Array.isArray(traitDefs)) continue;\n let mutated = false;\n\n for (const t of traitDefs) {\n if (!isJsonObject(t)) continue;\n const config = t['config'];\n if (!isJsonObject(config)) continue;\n const traitName = typeof t['name'] === 'string' ? t['name'] : typeof t['ref'] === 'string' ? t['ref'] : 'trait';\n\n for (const [key, entry] of Object.entries(config)) {\n if (!isNavItemsConfigField(entry)) continue;\n const kept: JsonValue[] = [];\n const droppedHrefs: string[] = [];\n for (const item of entry.default) {\n const href = isJsonObject(item) && typeof item['href'] === 'string' ? item['href'] : undefined;\n if (href !== undefined && !ownedPages.has(href)) {\n droppedHrefs.push(href);\n } else {\n kept.push(item);\n }\n }\n if (droppedHrefs.length > 0) {\n config[key] = { ...entry, default: kept };\n mutated = true;\n drops.push({ orbitalName, traitName, droppedHrefs });\n }\n }\n }\n\n if (mutated) orbitals[i] = nodeToOrbital(node);\n }\n\n return drops;\n}\n\n/**\n * Every page path the surface owns: each orbital's own pages, and for an orbital IMPORT (pages\n * empty until `orb resolve` expands it) its source orbital's pages through the import's `pages`\n * remap (G-CORE-017).\n */\nfunction collectOwnedPages(\n orbitals: ReadonlyArray<OrbitalDefinition>,\n importedOrbitalOf: ((orbital: OrbitalDefinition) => OrbitalDefinition | undefined) | undefined,\n): Set<string> {\n const owned = new Set<string>();\n const traitNames = new Set<string>();\n for (const orbital of orbitals) {\n collectOwnedSurface(cloneOrbitalNode(orbital), owned, traitNames);\n if (importedOrbitalOf === undefined) continue;\n for (const path of importedPagePaths(orbital, importedOrbitalOf, new Set())) owned.add(path);\n }\n return owned;\n}\n\n/** The local page paths an orbital import owns: its upstream's pages (through nested imports), minus `omit`, remapped. */\nfunction importedPagePaths(\n orbital: OrbitalDefinition,\n importedOrbitalOf: (orbital: OrbitalDefinition) => OrbitalDefinition | undefined,\n seen: Set<OrbitalDefinition>,\n): string[] {\n const reference = orbital.reference;\n if (reference === undefined || seen.has(orbital)) return [];\n seen.add(orbital);\n const upstream = importedOrbitalOf(orbital);\n if (upstream === undefined) return [];\n const upstreamPaths: string[] = [];\n for (const page of upstream.pages ?? []) {\n if (!isPageReference(page) && isRoutePage(page) && typeof page.path === 'string') upstreamPaths.push(page.path);\n }\n upstreamPaths.push(...importedPagePaths(upstream, importedOrbitalOf, seen));\n const omitted = new Set(reference.omit ?? []);\n const remap = reference.pages ?? {};\n return upstreamPaths.filter((path) => !omitted.has(path)).map((path) => remap[path] ?? path);\n}\n\n/**\n * `organismOrderOf` for a registry: an orbital's position among its organism's declared orbitals,\n * by the catalog orbital it was built from (`catalogOrbitalOf`, rename-stable). Each organism is\n * loaded once.\n */\nexport function organismOrderResolver(\n catalogOrbitalOf: (orbitalName: string) => { organism: string; orbital: string } | undefined,\n loadOrganism: (organism: string) => OrbitalSchema | null,\n): (orbitalName: string) => number | undefined {\n const declared = new Map<string, string[] | null>();\n return (orbitalName) => {\n const source = catalogOrbitalOf(orbitalName);\n if (source === undefined) return undefined;\n if (!declared.has(source.organism)) {\n declared.set(source.organism, loadOrganism(source.organism)?.orbitals.map((o) => o.name) ?? null);\n }\n const index = declared.get(source.organism)?.indexOf(source.orbital) ?? -1;\n return index >= 0 ? index : undefined;\n };\n}\n\n/**\n * `importedOrbitalOf` for a registry: an import's `reference.ref` (`Alias.orbitals.Name`)\n * resolved through the orbital's `uses` to the behavior it imports, then to that behavior's\n * orbital `Name`. `loadBehaviorOrb` is the caller's registry; each behavior is loaded once.\n */\nexport function orbitalImportResolver(\n loadBehaviorOrb: (behaviorName: string) => OrbitalSchema | null,\n): (orbital: OrbitalDefinition) => OrbitalDefinition | undefined {\n const loaded = new Map<string, OrbitalSchema | null>();\n return (orbital) => {\n const ref = orbital.reference?.ref;\n if (ref === undefined) return undefined;\n const [alias, kind, name] = ref.split('.');\n if (kind !== 'orbitals' || name === undefined) return undefined;\n const use = (orbital.uses ?? []).find((u) => u.as === alias);\n if (use === undefined) return undefined;\n const behavior = use.from.split('/').pop() ?? use.from;\n if (!loaded.has(behavior)) loaded.set(behavior, loadBehaviorOrb(behavior));\n return loaded.get(behavior)?.orbitals.find((o) => o.name === name);\n };\n}\n\n/** A `[NavItem]` list dropped entries from the organisms' unioned config (`config.<knob>`). */\nexport interface ConfigNavItemsNarrowResult {\n knob: string;\n droppedHrefs: string[];\n}\n\n/** The unioned organism config with every `[NavItem]` list narrowed to `ownedPages`. */\nfunction narrowConfigNavItems(\n config: DeclaredTraitConfig,\n ownedPages: ReadonlySet<string>,\n): { config: DeclaredTraitConfig; drops: ConfigNavItemsNarrowResult[] } {\n const drops: ConfigNavItemsNarrowResult[] = [];\n const next: Record<string, DeclaredTraitConfig[string]> = { ...config };\n for (const [knob, field] of Object.entries(config)) {\n if (field.type !== '[NavItem]' || !Array.isArray(field.default)) continue;\n const droppedHrefs: string[] = [];\n const kept = field.default.filter((item) => {\n const href = navItemHref(item);\n if (href !== undefined && !ownedPages.has(href)) {\n droppedHrefs.push(href);\n return false;\n }\n return true;\n });\n if (droppedHrefs.length === 0) continue;\n next[knob] = { ...field, default: kept };\n drops.push({ knob, droppedHrefs });\n }\n return { config: next, drops };\n}\n\n/** An organism's landing page given a nav entry because it no longer boots the app. */\nexport interface LandingNavResult {\n organism: string;\n href: string;\n}\n\n/** Every page path the app links: `href` strings and `navigate` targets anywhere in `node`. */\nfunction collectLinkedPaths(node: unknown, out: Set<string>): void {\n if (Array.isArray(node)) {\n if (node[0] === 'navigate' && typeof node[1] === 'string') out.add(node[1]);\n for (const item of node) collectLinkedPaths(item, out);\n return;\n }\n if (node !== null && typeof node === 'object') {\n for (const [key, value] of Object.entries(node)) {\n if (key === 'href' && typeof value === 'string') out.add(value);\n collectLinkedPaths(value, out);\n }\n }\n}\n\n/** An orbital's first inline page (a reference names no path of its own). */\nfunction firstInlinePage(orbital: OrbitalDefinition): { name: string; path: string } | undefined {\n for (const page of orbital.pages ?? []) {\n if (isPageReference(page) || !isRoutePage(page)) continue;\n if (typeof page.path === 'string' && typeof page.name === 'string') return { name: page.name, path: page.path };\n }\n return undefined;\n}\n\n/**\n * Inside its organism an organism's first page boots the app, reachable by construction; composed\n * behind another organism it boots nothing. Each such landing page nothing links joins the app's\n * one `[NavItem]` list, labelled by its declared page name as words (owner ruling 2026-10-04). An organism\n * whose files declare no nav of its own (free-composed lines, a reused atom) links none of its\n * orbitals, so each of them is one. Entries keep roster order. Parameterized pages are reached\n * through their list pages and never listed.\n */\nfunction linkLandingPages(\n orbitals: ReadonlyArray<OrbitalDefinition>,\n config: DeclaredTraitConfig,\n organismOf: (orbitalName: string) => string | undefined,\n /** Orbitals whose own file declares a `[NavItem]` list — their organism links its other orbitals itself. */\n navDeclaringOrbitals: ReadonlySet<string>,\n /** An orbital's position in its organism's declared orbitals; absent, composed order stands in. */\n organismOrderOf?: (orbitalName: string) => number | undefined,\n): { config: DeclaredTraitConfig; added: LandingNavResult[] } {\n const navKnobs = Object.entries(config).filter(([, field]) => field.type === '[NavItem]' && Array.isArray(field.default));\n if (navKnobs.length !== 1) return { config, added: [] };\n const [knob, field] = navKnobs[0]!;\n const list = Array.isArray(field.default) ? field.default : [];\n const linked = new Set<string>();\n collectLinkedPaths(orbitals, linked);\n collectLinkedPaths(config, linked);\n\n // Each entry sits in roster order: after every entry owned by an earlier orbital.\n const ownerIndex = new Map<string, number>();\n orbitals.forEach((orbital, i) => {\n for (const page of orbital.pages ?? []) {\n if (!isPageReference(page) && isRoutePage(page) && typeof page.path === 'string' && !ownerIndex.has(page.path)) ownerIndex.set(page.path, i);\n }\n });\n const indexOf = (entry: TraitConfigValue): number => {\n const href = navItemHref(entry);\n return href !== undefined ? (ownerIndex.get(href) ?? -1) : -1;\n };\n\n const added: LandingNavResult[] = [];\n const next: TraitConfigValue[] = [...list];\n const navOrganisms = new Set<string>();\n for (const name of navDeclaringOrbitals) {\n const organism = organismOf(name);\n if (organism !== undefined) navOrganisms.add(organism);\n }\n // Each organism's landing: its taken orbital declared first in the organism.\n const landingOf = new Map<string, { name: string; rank: number }>();\n orbitals.forEach((orbital, i) => {\n const organism = organismOf(orbital.name);\n if (organism === undefined || firstInlinePage(orbital) === undefined) return;\n const rank = organismOrderOf?.(orbital.name) ?? orbitals.length + i;\n const current = landingOf.get(organism);\n if (current === undefined || rank < current.rank) landingOf.set(organism, { name: orbital.name, rank });\n });\n let bootOrganism: string | undefined;\n let booted = false;\n orbitals.forEach((orbital, i) => {\n const page = firstInlinePage(orbital);\n if (page === undefined) return;\n const organism = organismOf(orbital.name);\n if (!booted) {\n booted = true;\n bootOrganism = organism;\n return;\n }\n if (organism === undefined) return;\n if (navOrganisms.has(organism) && (organism === bootOrganism || landingOf.get(organism)?.name !== orbital.name)) return;\n if (linked.has(page.path) || page.path.split('/').some((segment) => segment.startsWith(':'))) return;\n let at = 0;\n next.forEach((entry, p) => {\n if (indexOf(entry) < i) at = p + 1;\n });\n next.splice(at, 0, { href: page.path, label: humanizeKey(page.name) });\n linked.add(page.path);\n added.push({ organism, href: page.path });\n });\n if (added.length === 0) return { config, added };\n return { config: { ...config, [knob]: { ...field, default: next } }, added };\n}\n\n/** The app surface composed from its files: deduped orbitals, unioned config and ledger. */\nexport interface ComposedSurface {\n orbitals: OrbitalDefinition[];\n config?: DeclaredTraitConfig;\n ledger?: IdentityLedger;\n surfaceRenames: { routes: SurfaceRename[]; traits: SurfaceRename[]; pageNames: SurfaceRename[] };\n identity: IdentityDedupeResult;\n navItemsNarrowed: NavItemsNarrowResult[];\n configNavItemsNarrowed: ConfigNavItemsNarrowResult[];\n landingNavAdded: LandingNavResult[];\n organismRenames: OrganismRename[];\n unrenamableCollisions: UnrenamableCollision[];\n}\n\n/**\n * The app's surface from its per-orbital files, in the files' order (roster order decides every\n * collision): routes and inline trait names deduped, one `[identity]`, the organisms' config and\n * ledgers unioned (ledger rows follow the trait renames), every `navItems` list narrowed to pages\n * the app owns. No pages or layout are generated. The caller's files are not mutated.\n */\n/** The names a later organism took under its prefix because an earlier one owned them. */\nexport interface OrganismRename {\n organism: string;\n entities: Array<{ from: string; to: string }>;\n collections: Array<{ from: string; to: string }>;\n /** Route roots moved under the organism's own path (`/projects` → `/project-manager/projects`). */\n routes: Array<{ from: string; to: string }>;\n}\n\n/** A colliding entity an atom's fixed binding pins: it keeps its name, and the collision stands. */\nexport interface UnrenamableCollision {\n organism: string;\n entity: string;\n blockers: EntityRenameBlocker[];\n}\n\n/** `std-hr-portal` → `HrPortal` (the organism's entity prefix). */\nfunction organismPrefix(organism: string): string {\n return organism.replace(/^std-/, '').split(/[^a-zA-Z0-9]+/).filter(Boolean).map((w) => w[0]!.toUpperCase() + w.slice(1)).join('');\n}\n\n/** `HrPortal` → `hr_portal` (the organism's collection prefix). */\nfunction snakePrefix(prefix: string): string {\n return prefix.replace(/([a-z0-9])([A-Z])/g, '$1_$2').toLowerCase();\n}\n\n/** A route with its parameters normalized (`/projects/:id` and `/projects/:slug` are one route). */\nfunction routeShape(path: string): string {\n return path.split('/').map((segment) => (segment.startsWith(':') ? ':' : segment)).join('/');\n}\n\n/** A route's first segment (`/projects/:id` → `/projects`). */\nfunction routeRoot(path: string): string {\n return `/${path.split('/')[1] ?? ''}`;\n}\n\nfunction underRoot(link: string, root: string): boolean {\n return link === root || link.startsWith(`${root}/`);\n}\n\n/** The inline page paths of a file's orbitals. */\nfunction pagePaths(file: OrbitalDefinition | OrbitalSchema): string[] {\n return asDefinitions([file]).flatMap((orbital) => (orbital.pages ?? []).flatMap((page) => (!isPageReference(page) && typeof page.path === 'string' ? [page.path] : [])));\n}\n\n/** `node` with page paths and links under any of `roots` moved under `base` (segments and parameters kept). */\nfunction moveRoutes(node: JsonValue, roots: ReadonlySet<string>, base: string, inPages = false): JsonValue {\n const move = (path: string): string => (path === '/' ? base : `${base}${path}`);\n const hit = (value: string): boolean => [...roots].some((root) => underRoot(value, root));\n if (Array.isArray(node)) {\n const out = node.map((item) => moveRoutes(item, roots, base, inPages));\n if (node[0] === 'navigate' && typeof node[1] === 'string' && hit(node[1])) out[1] = move(node[1]);\n return out;\n }\n if (!isJsonObject(node)) return node;\n const out: JsonObject = {};\n for (const [key, value] of Object.entries(node)) {\n if (typeof value === 'string' && ((key === 'href') || (inPages && key === 'path')) && hit(value)) out[key] = move(value);\n else out[key] = moveRoutes(value, roots, base, key === 'pages');\n }\n return out;\n}\n\n/** The inline entity declarations of a file's orbitals (primary and auxiliary). */\nfunction declaredEntities(file: OrbitalDefinition | OrbitalSchema): Entity[] {\n return asDefinitions([file]).flatMap((orbital) => inlineEntitiesOf(orbital));\n}\n\nfunction renameCollection(file: OrbitalDefinition | OrbitalSchema, from: string, to: string): OrbitalDefinition | OrbitalSchema {\n const swap = (entity: Entity): Entity => (entity.collection === from ? { ...entity, collection: to } : entity);\n const each = (orbital: OrbitalDefinition): OrbitalDefinition => ({\n ...orbital,\n ...(orbital.entity !== undefined && !isEntityReferenceAny(orbital.entity) ? { entity: swap(orbital.entity) } : {}),\n ...(orbital.auxiliaryEntities !== undefined ? { auxiliaryEntities: orbital.auxiliaryEntities.map((e) => (isEntityReferenceAny(e) ? e : swap(e))) } : {}),\n });\n return 'orbitals' in file ? { ...file, orbitals: file.orbitals.map(each) } : each(file);\n}\n\n/**\n * Organisms are namespaces (owner design 2026-10-04): each stays self-consistent, so a later\n * organism (roster order) whose entity name or explicit collection an earlier organism already\n * owns takes it under its own prefix (`Staff` → `HrPortalStaff`, `staff` → `hr_portal_staff`),\n * every reference in its own files rewritten (`renameEntity`; organisms never reference each\n * other's entities). An entity an atom's fixed binding pins keeps its name and is reported.\n */\nfunction namespaceOrganisms(\n files: ReadonlyArray<OrbitalDefinition | OrbitalSchema>,\n organismOf: (orbitalName: string) => string | undefined,\n atomTraitOf: (orbital: OrbitalDefinition, traitRef: string) => Trait | undefined,\n): { files: Array<OrbitalDefinition | OrbitalSchema>; renames: OrganismRename[]; unrenamable: UnrenamableCollision[] } {\n const organismOfFile = (file: OrbitalDefinition | OrbitalSchema): string | undefined => {\n const first = asDefinitions([file])[0];\n return first !== undefined ? organismOf(first.name) : undefined;\n };\n const out = [...files];\n const order: string[] = [];\n for (const file of files) {\n const organism = organismOfFile(file);\n if (organism !== undefined && !order.includes(organism)) order.push(organism);\n }\n const entityOwner = new Map<string, string>();\n const collectionOwner = new Map<string, string>();\n const routeOwner = new Map<string, string>();\n const renames: OrganismRename[] = [];\n const unrenamable: UnrenamableCollision[] = [];\n\n // A reference with no `linkedEntity` brings its atom's own entity, materialized at resolve. That\n // name cannot move (nothing declares it), so a declared entity of another organism yields to it.\n // Two organisms bringing it implicitly share one entity only when it materializes identically —\n // the same atom trait with the same type arguments; otherwise the collision is pinned.\n const implicitOwner = new Map<string, string>();\n const implicitKey = new Map<string, string>();\n for (const organism of order) {\n const own = files.filter((file) => organismOfFile(file) === organism);\n const declared = new Set(own.flatMap((file) => declaredEntities(file).map((e) => e.name)));\n const conflicts = new Map<string, EntityRenameBlocker[]>();\n for (const orbital of asDefinitions([...own])) {\n const node = cloneOrbitalNode(orbital);\n const traits = Array.isArray(node['traits']) ? node['traits'] : [];\n for (const trait of traits) {\n if (!isJsonObject(trait) || typeof trait['ref'] !== 'string' || trait['linkedEntity'] !== undefined) continue;\n const ref = trait['ref'];\n const implicit = atomTraitOf(orbital, ref)?.linkedEntity;\n if (implicit === undefined || declared.has(implicit)) continue;\n const alias = ref.split('.')[0];\n const behavior = (orbital.uses ?? []).find((u) => u.as === alias)?.from ?? alias;\n const typeArgs = isJsonObject(trait['typeArgs']) ? Object.entries(trait['typeArgs']).sort(([a], [b]) => a.localeCompare(b)) : [];\n const key = JSON.stringify([behavior, ref.split('.').slice(1), typeArgs]);\n const owner = implicitOwner.get(implicit);\n if (owner === undefined) {\n implicitOwner.set(implicit, organism);\n implicitKey.set(implicit, key);\n } else if (owner !== organism && implicitKey.get(implicit) !== key) {\n const blockers = conflicts.get(implicit) ?? [];\n blockers.push({ orbitalName: orbital.name, traitName: typeof trait['name'] === 'string' ? trait['name'] : ref, traitRef: ref });\n conflicts.set(implicit, blockers);\n }\n }\n }\n for (const [entity, blockers] of conflicts) unrenamable.push({ organism, entity, blockers });\n }\n\n for (const organism of order) {\n const indices = out.flatMap((file, i) => (organismOfFile(file) === organism ? [i] : []));\n const orbitalsOf = (): OrbitalDefinition[] => indices.flatMap((i) => asDefinitions([out[i]!]));\n const prefix = organismPrefix(organism);\n const rename: OrganismRename = { organism, entities: [], collections: [], routes: [] };\n\n const names = [...new Set(indices.flatMap((i) => declaredEntities(out[i]!).map((e) => e.name)))];\n for (const name of names) {\n const owner = entityOwner.get(name);\n const implicit = implicitOwner.get(name);\n const collides = (owner !== undefined && owner !== organism) || (implicit !== undefined && implicit !== organism);\n if (!collides) continue;\n const blockers = entityRenameBlockers(orbitalsOf(), name, atomTraitOf);\n if (blockers.length > 0) {\n unrenamable.push({ organism, entity: name, blockers });\n continue;\n }\n const to = `${prefix}${name}`;\n for (const i of indices) {\n const file = out[i]!;\n out[i] = 'orbitals' in file ? renameEntityInSchema(file, name, to, { atomTraitOf }) : renameEntity([file], name, to, { atomTraitOf })[0]!;\n }\n rename.entities.push({ from: name, to });\n }\n\n // Routes: a page an earlier organism already serves moves, with its whole subtree, under this\n // organism's own path; parameters and the organism's links (dynamic ones included) follow.\n const roots = new Set(indices.flatMap((i) => pagePaths(out[i]!)).filter((path) => {\n const owner = routeOwner.get(routeShape(path));\n return owner !== undefined && owner !== organism;\n }).map(routeRoot));\n if (roots.size > 0) {\n const base = `/${organism.replace(/^std-/, '')}`;\n for (const i of indices) {\n const file = out[i]!;\n const moved: JsonValue = moveRoutes(JSON.parse(JSON.stringify(file)), roots, base);\n if (isJsonObject(moved)) out[i] = JSON.parse(JSON.stringify(moved));\n }\n rename.routes.push(...[...roots].map((root) => ({ from: root, to: `${base}${root === '/' ? '' : root}` })));\n }\n\n const collections = [...new Set(indices.flatMap((i) => declaredEntities(out[i]!).flatMap((e) => (e.collection !== undefined ? [e.collection] : []))))];\n for (const collection of collections) {\n const owner = collectionOwner.get(collection);\n if (owner === undefined || owner === organism) continue;\n const to = `${snakePrefix(prefix)}_${collection}`;\n for (const i of indices) out[i] = renameCollection(out[i]!, collection, to);\n rename.collections.push({ from: collection, to });\n }\n\n for (const i of indices) {\n for (const path of pagePaths(out[i]!)) if (!routeOwner.has(routeShape(path))) routeOwner.set(routeShape(path), organism);\n for (const entity of declaredEntities(out[i]!)) {\n if (!entityOwner.has(entity.name)) entityOwner.set(entity.name, organism);\n if (entity.collection !== undefined && !collectionOwner.has(entity.collection)) collectionOwner.set(entity.collection, organism);\n }\n }\n if (rename.entities.length > 0 || rename.collections.length > 0 || rename.routes.length > 0) renames.push(rename);\n }\n return { files: out, renames, unrenamable };\n}\n\nexport interface ComposeSurfaceOptions {\n /**\n * The organism an orbital came from (its spec's `organism`). A page route renamed on compose is\n * then renamed in the nav of every file of that organism; without it, only the renamed orbital's\n * own file follows.\n */\n organismOf?: (orbitalName: string) => string | undefined;\n /**\n * An orbital's position in its organism's declared orbitals. The first declared orbital boots\n * the organism standalone, so composed behind another organism it is the landing page the nav\n * must link; without it, the first composed orbital of the organism stands in.\n */\n organismOrderOf?: (orbitalName: string) => number | undefined;\n /** The atom's declaration of a referenced trait (see `RenameEntityOptions.atomTraitOf`); namespacing reads it. */\n atomTraitOf?: (orbital: OrbitalDefinition, traitRef: string) => Trait | undefined;\n /** An orbital import's source orbital (`orbitalImportResolver`); its pages count as owned when nav is narrowed. */\n importedOrbitalOf?: (orbital: OrbitalDefinition) => OrbitalDefinition | undefined;\n}\n\n/** `[NavItem]` lists in `config` with every `from` href rewritten to `to`; the same object when none matched. */\nfunction renameNavHrefs(config: DeclaredTraitConfig, from: string, to: string): DeclaredTraitConfig {\n let next: Record<string, DeclaredTraitConfig[string]> | undefined;\n for (const [knob, field] of Object.entries(config)) {\n if (field.type !== '[NavItem]' || !Array.isArray(field.default)) continue;\n if (!field.default.some((item) => navItemHref(item) === from)) continue;\n next ??= { ...config };\n next[knob] = { ...field, default: field.default.map((item) => (navItemHref(item) === from && isJsonObject(item) ? { ...item, href: to } : item)) };\n }\n return next ?? config;\n}\n\n/** `node` with listens sourced from `orbital`'s trait `from` re-sourced to `to`. */\nfunction renameListenSources(node: JsonValue, orbital: string, from: string, to: string): JsonValue {\n if (Array.isArray(node)) return node.map((item) => renameListenSources(item, orbital, from, to));\n if (!isJsonObject(node)) return node;\n const out: JsonObject = {};\n for (const [key, value] of Object.entries(node)) out[key] = renameListenSources(value, orbital, from, to);\n if (node['kind'] === 'orbital' && node['orbital'] === orbital && node['trait'] === from) out['trait'] = to;\n return out;\n}\n\n/** `node` with links to route `from` (`navigate` targets, `href` values) pointed at `to`; page `path`s untouched. */\nfunction renameRouteLinks(node: JsonValue, from: string, to: string): JsonValue {\n if (Array.isArray(node)) {\n const out = node.map((item) => renameRouteLinks(item, from, to));\n if (node[0] === 'navigate' && node[1] === from) out[1] = to;\n return out;\n }\n if (!isJsonObject(node)) return node;\n const out: JsonObject = {};\n for (const [key, value] of Object.entries(node)) out[key] = key === 'href' && value === from ? to : renameRouteLinks(value, from, to);\n return out;\n}\n\nexport function composeOrbitalSurface(\n files: ReadonlyArray<OrbitalDefinition | OrbitalSchema>,\n options: ComposeSurfaceOptions = {},\n): ComposedSurface {\n const namespaced = options.organismOf !== undefined\n ? namespaceOrganisms(files, options.organismOf, options.atomTraitOf ?? (() => undefined))\n : { files: [...files], renames: [], unrenamable: [] };\n files = namespaced.files;\n const orbitals = [...asDefinitions([...files])];\n const surfaceRenames = dedupeComposedSurface(orbitals);\n // A listen names its source by orbital + trait, so a trait renamed on compose is followed app-wide.\n for (const r of surfaceRenames.traits) {\n for (let i = 0; i < orbitals.length; i += 1) {\n const next = nodeToOrbital(renameListenSources(cloneOrbitalNode(orbitals[i]!), r.orbitalName, r.from, r.to) as JsonObject);\n if (JSON.stringify(next) !== JSON.stringify(orbitals[i])) orbitals[i] = next;\n }\n }\n // A renamed route is its organism's own page: its siblings' links follow it (another organism's do not).\n if (options.organismOf !== undefined) {\n for (const r of surfaceRenames.routes) {\n const organism = options.organismOf(r.orbitalName);\n if (organism === undefined) continue;\n for (let i = 0; i < orbitals.length; i += 1) {\n const orbital = orbitals[i]!;\n if (orbital.name === r.orbitalName || options.organismOf(orbital.name) !== organism) continue;\n const next = nodeToOrbital(renameRouteLinks(cloneOrbitalNode(orbital), r.from, r.to) as JsonObject);\n if (JSON.stringify(next) !== JSON.stringify(orbital)) orbitals[i] = next;\n }\n }\n }\n const organismOfFile = (file: OrbitalDefinition | OrbitalSchema): Set<string | undefined> =>\n new Set(asDefinitions([file]).map((o) => options.organismOf?.(o.name)));\n const renamedFiles = files.map((file) => {\n if (!('orbitals' in file) || file.config === undefined) return file;\n const ownNames = new Set(file.orbitals.map((o) => o.name));\n const organisms = organismOfFile(file);\n // Paths this file's own orbitals still own after the renames — another orbital's rename\n // of the same path never retargets this file's entry for its own page.\n const ownPaths = new Set<string>();\n for (const o of orbitals) {\n if (!ownNames.has(o.name)) continue;\n for (const page of o.pages ?? []) {\n if (!isPageReference(page) && isRoutePage(page) && typeof page.path === 'string') ownPaths.add(page.path);\n }\n }\n let config = file.config;\n for (const r of surfaceRenames.routes) {\n const organism = options.organismOf?.(r.orbitalName);\n if (!ownNames.has(r.orbitalName) && ownPaths.has(r.from)) continue;\n if (ownNames.has(r.orbitalName) || (organism !== undefined && organisms.has(organism))) config = renameNavHrefs(config, r.from, r.to);\n }\n return config === file.config ? file : { ...file, config };\n });\n const identity = dedupeComposedIdentity(orbitals);\n const ownedPages = collectOwnedPages(orbitals, options.importedOrbitalOf);\n const navItemsNarrowed = narrowNavItemsToOwnedPages(orbitals, ownedPages);\n\n let ledger = mergeLedgers([...renamedFiles]);\n if (ledger !== undefined) {\n for (const r of surfaceRenames.traits) {\n if (r.id !== undefined) ledger = ledgerRename(ledger, r.id, r.to, new Date().toISOString());\n }\n }\n\n // D32: an orbital's own `[NavItem]` knob its traits forward as `@config.<key>` is the app's nav —\n // it joins the one app list in roster order instead of shadowing it on that orbital alone.\n const hoistedNav = new Map<string, DeclaredTraitConfig>();\n for (let i = 0; i < orbitals.length; i += 1) {\n const orbital = orbitals[i]!;\n if (orbital.config === undefined) continue;\n const forwarded = collectOrbitalForwardedConfigKeys(orbital);\n const lifted = Object.entries(orbital.config).filter(([key, field]) => field.type === '[NavItem]' && forwarded.has(key));\n if (lifted.length === 0) continue;\n hoistedNav.set(orbital.name, Object.fromEntries(lifted));\n const kept = Object.fromEntries(Object.entries(orbital.config).filter(([key]) => !lifted.some(([k]) => k === key)));\n const { config: _dropped, ...rest } = orbital;\n orbitals[i] = Object.keys(kept).length > 0 ? { ...rest, config: kept } : rest;\n }\n const configSources = renamedFiles.flatMap((f): Array<Pick<OrbitalSchema, 'config'>> => [\n ...('orbitals' in f ? [f] : []),\n ...asDefinitions([f]).flatMap((o) => {\n const config = hoistedNav.get(o.name);\n return config === undefined ? [] : [{ config }];\n }),\n ]);\n const unioned = unionOrganismConfigs(configSources);\n let config: DeclaredTraitConfig | undefined;\n let configNavItemsNarrowed: ConfigNavItemsNarrowResult[] = [];\n if (unioned !== undefined) {\n const narrowed = narrowConfigNavItems(unioned, ownedPages);\n config = narrowed.config;\n configNavItemsNarrowed = narrowed.drops;\n }\n let landingNavAdded: LandingNavResult[] = [];\n if (config !== undefined && options.organismOf !== undefined) {\n const navDeclaringOrbitals = new Set<string>();\n for (const f of renamedFiles) {\n if (!('orbitals' in f) || f.config === undefined) continue;\n if (!Object.values(f.config).some((entry) => entry.type === '[NavItem]')) continue;\n for (const o of f.orbitals) navDeclaringOrbitals.add(o.name);\n }\n const linked = linkLandingPages(orbitals, config, options.organismOf, navDeclaringOrbitals, options.organismOrderOf);\n config = linked.config;\n landingNavAdded = linked.added;\n }\n\n return {\n orbitals,\n ...(config !== undefined ? { config } : {}),\n ...(ledger !== undefined ? { ledger } : {}),\n surfaceRenames,\n identity,\n navItemsNarrowed,\n configNavItemsNarrowed,\n landingNavAdded,\n organismRenames: namespaced.renames,\n unrenamableCollisions: namespaced.unrenamable,\n };\n}\n\nexport interface ComposeAppFromFilesOptions extends ComposeSurfaceOptions {\n appName: string;\n layoutStrategy?: LayoutStrategy | 'auto';\n eventWiring?: EventWiringEntry[];\n /** The program an import orbital takes its source from: its `inbound` hooks and `egress` origins join the app's. */\n importedProgramOf?: (orbital: OrbitalDefinition) => OrbitalSchema | undefined;\n}\n\n/** Each import orbital with the os grants its upstream orbital declares on itself: the authority the imported traits need, and no more. */\nfunction withUpstreamOsGrants(\n files: ReadonlyArray<OrbitalDefinition | OrbitalSchema>,\n importedOrbitalOf: ((orbital: OrbitalDefinition) => OrbitalDefinition | undefined) | undefined,\n): Array<OrbitalDefinition | OrbitalSchema> {\n const granted = (orbital: OrbitalDefinition): OrbitalDefinition => {\n const upstream = orbital.reference === undefined ? undefined : importedOrbitalOf?.(orbital);\n return upstream?.osGrants === undefined ? orbital : { ...orbital, osGrants: unionOsGrants(orbital.osGrants, upstream.osGrants) };\n };\n return files.map((file) => ('orbitals' in file ? { ...file, orbitals: file.orbitals.map(granted) } : granted(file)));\n}\n\n/** The hooks and origins the composed programs declare, and those of the programs their import orbitals come from, in first-seen order. */\nfunction declaredReach(\n files: ReadonlyArray<OrbitalDefinition | OrbitalSchema>,\n importedProgramOf: ((orbital: OrbitalDefinition) => OrbitalSchema | undefined) | undefined,\n): { inbound: string[]; egress: string[] } {\n const inbound: string[] = [];\n const egress: string[] = [];\n const add = (into: string[], items: readonly string[] | undefined): void => {\n for (const item of items ?? []) if (!into.includes(item)) into.push(item);\n };\n for (const file of files) {\n if (!('orbitals' in file)) continue;\n add(inbound, file.inbound);\n add(egress, file.egress);\n for (const orbital of file.orbitals) {\n const upstream = importedProgramOf?.(orbital);\n add(inbound, upstream?.inbound);\n add(egress, upstream?.egress);\n }\n }\n return { inbound, egress };\n}\n\nexport interface ComposeAppFromFilesResult extends Omit<ComposedSurface, 'orbitals' | 'config' | 'ledger'> {\n schema: OrbitalSchema;\n layout: ComposeBehaviorsResult['layout'];\n wiring: ComposeBehaviorsResult['wiring'];\n}\n\n/**\n * A whole app from its per-orbital files: `composeOrbitalSurface`, then `composeBehaviors` for\n * pages, layout and wiring, with the surface's unioned config and ledger on the schema. Bare\n * definitions compose exactly as `composeBehaviors` composes them.\n */\nexport function composeAppFromFiles(\n inputs: ReadonlyArray<OrbitalDefinition | OrbitalSchema>,\n options: ComposeAppFromFilesOptions,\n): ComposeAppFromFilesResult {\n const files = withUpstreamOsGrants(inputs, options.importedOrbitalOf);\n const { orbitals, config, ledger, ...outcomes } = composeOrbitalSurface(files, {\n ...(options.organismOf !== undefined ? { organismOf: options.organismOf } : {}),\n ...(options.atomTraitOf !== undefined ? { atomTraitOf: options.atomTraitOf } : {}),\n ...(options.importedOrbitalOf !== undefined ? { importedOrbitalOf: options.importedOrbitalOf } : {}),\n ...(options.organismOrderOf !== undefined ? { organismOrderOf: options.organismOrderOf } : {}),\n });\n const result = composeBehaviors({\n appName: options.appName,\n orbitals,\n ...(options.layoutStrategy !== undefined ? { layoutStrategy: options.layoutStrategy } : {}),\n ...(options.eventWiring !== undefined ? { eventWiring: options.eventWiring } : {}),\n });\n const reach = declaredReach(files, options.importedProgramOf);\n return {\n schema: {\n ...result.schema,\n ...(ledger !== undefined ? { ledger } : {}),\n ...(config !== undefined ? { config } : {}),\n ...(reach.inbound.length > 0 ? { inbound: reach.inbound } : {}),\n ...(reach.egress.length > 0 ? { egress: reach.egress } : {}),\n },\n layout: result.layout,\n wiring: result.wiring,\n ...outcomes,\n };\n}\n","/**\n * Layout-Trait Builders\n *\n * Helpers for constructing the canonical inline LayoutTrait pattern that\n * std layout-shell molecules (`std-filtered-list`, `std-master-detail-layout`,\n * etc.) use to wrap a set of atom trait references in a `(render-ui main)`\n * effect with `@trait.X` slot embeds.\n *\n * The canonical LayoutTrait is stateless: ONE state (`composing`, initial),\n * ONE transition (`INIT` self-loop) carrying two effects — `(fetch Entity\n * {emit: {success, failure}})` and `(render-ui \"main\" <pattern-tree>)`. Atoms\n * embedded via `@trait.X` slot references react to the bus events the fetch\n * emits; the LayoutTrait owns no further state.\n *\n * Usage from a std layout-shell molecule:\n *\n * ```ts\n * import { makeSlot, makeLayoutTrait } from '@almadar/core/builders';\n *\n * const layout = makeLayoutTrait({\n * name: 'DashboardLayout',\n * linkedEntity: 'Metric',\n * fetchEntity: 'Metric',\n * loadedEvent: 'MetricLoaded',\n * loadFailedEvent: 'MetricLoadFailed',\n * renderUI: {\n * type: 'stack',\n * direction: 'vertical',\n * children: [\n * makeSlot('StatsRow'),\n * makeSlot('ChartsRow'),\n * makeSlot('FeedRow'),\n * ],\n * },\n * });\n * ```\n *\n * @packageDocumentation\n */\n\nimport type { AnyPatternConfig } from '../patterns/index.js';\nimport type { Trait } from '../types/trait.js';\nimport type { Effect, FetchEffect, RenderBinding, RenderUIEffect, UISlot } from '../types/effect.js';\n\n/**\n * Build a `@trait.<name>` slot reference string. Used as a child entry in a\n * pattern tree to embed another trait's render-ui at that position. The\n * runtime resolves `@trait.X` to the matching trait's render-ui inline.\n *\n * @example makeSlot('FilteredItemSearch') // \"@trait.FilteredItemSearch\"\n */\nexport function makeSlot(traitName: string): string {\n return `@trait.${traitName}`;\n}\n\n/**\n * Build a `(render-ui <slot> <root>)` effect tuple. Pattern-typed sugar over\n * the raw `RenderUIEffect` literal so callers don't have to spell out the\n * three-element tuple form.\n *\n * @param slot - Canonical UI slot name (`'main'`, `'header'`, etc. — see UI_SLOTS).\n * @param root - The pattern config for this slot's content, OR a `@`-binding\n * string ({@link RenderBinding}) pointing at a render tree in `config` /\n * `payload` (e.g. `'@config.bodyContent'`). Pass `null` to clear.\n */\nexport function makeRenderUI(\n slot: UISlot,\n root: AnyPatternConfig | RenderBinding | null,\n): RenderUIEffect {\n // Branch the return so TS narrows into the correct tuple variant of the\n // RenderUIEffect union (each arm is a distinct tuple shape).\n if (root === null) return ['render-ui', slot, null];\n if (typeof root === 'string') return ['render-ui', slot, root];\n return ['render-ui', slot, root];\n}\n\n/**\n * Options for {@link makeLayoutTrait}.\n */\nexport interface MakeLayoutTraitOpts {\n /** Trait name, e.g. `\"DashboardGridLayout\"`. */\n name: string;\n /** Entity this layout's emits/listens bind to. */\n linkedEntity: string;\n /** Optional human-readable description (carried through to `Trait.description`). */\n description?: string;\n /**\n * Entity name to fetch on INIT. When set, a `(fetch <Entity> {emit:\n * {success, failure}})` effect is prepended to the INIT transition. Omit\n * for purely-presentational layouts that don't load data themselves.\n */\n fetchEntity?: string;\n /**\n * Event name emitted on successful fetch. Required when `fetchEntity` is\n * set; the LayoutTrait declares this event in its `emits` and uses it as\n * the `success` emit-name in the fetch effect.\n * Convention: `\"<Entity>Loaded\"`.\n */\n loadedEvent?: string;\n /**\n * Event name emitted on fetch failure. Required when `fetchEntity` is\n * set. Convention: `\"<Entity>LoadFailed\"`.\n */\n loadFailedEvent?: string;\n /**\n * Payload schema for the loaded event. Defaults to `[{ name: \"data\", type:\n * \"[<Entity>]\" }]` when `fetchEntity` is set. Provide explicitly when the\n * payload should carry additional fields.\n */\n loadedPayloadSchema?: Array<{ name: string; type: string; required?: boolean }>;\n /**\n * The pattern tree for the layout's main slot. Children may include\n * `@trait.X` slot strings (built via {@link makeSlot}) interleaved with\n * inline pattern configs (`{ type: 'stack', ... }`). The shape conforms to\n * `AnyPatternConfig` from `@almadar/patterns`.\n */\n renderUI: AnyPatternConfig;\n /**\n * Override the slot the render-ui effect targets. Defaults to `'main'`.\n * Specify when the layout shell should render into a sub-slot (rare).\n */\n slot?: UISlot;\n /**\n * Additional effects appended to the INIT transition AFTER the fetch +\n * render-ui pair. Most layouts don't need this; provided for advanced\n * cases (analytics emit, persistence seed, etc.).\n */\n extraEffects?: Effect[];\n}\n\n/**\n * Build the canonical stateless LayoutTrait used by std layout-shell molecules.\n *\n * Result shape:\n * - `linkedEntity` set per the option\n * - `emits` declares the loaded + loadFailed events when `fetchEntity` is set\n * - One state: `'composing'` (`isInitial: true`)\n * - One transition: `composing → composing` on `INIT`, with effects:\n * - (when `fetchEntity` set) `['fetch', '<Entity>', { emit: { success, failure } }]`\n * - `['render-ui', slot, renderUI]`\n * - …`extraEffects` if provided\n *\n * Atoms whose trait names appear as `@trait.<name>` strings inside `renderUI`\n * get embedded by the runtime when the orbital instantiates. The LayoutTrait\n * itself stays stateless — all reactive behaviour lives in the embedded atoms.\n */\nexport function makeLayoutTrait(opts: MakeLayoutTraitOpts): Trait {\n const slot: UISlot = opts.slot ?? 'main';\n const effects: Effect[] = [];\n\n // Build emits list based on fetch configuration.\n const emits: Trait['emits'] = [];\n const eventDefs: NonNullable<Trait['stateMachine']>['events'] = [\n { key: 'INIT', name: 'Initialize' },\n ];\n\n if (opts.fetchEntity) {\n if (!opts.loadedEvent || !opts.loadFailedEvent) {\n throw new Error(\n `makeLayoutTrait: fetchEntity '${opts.fetchEntity}' set but loadedEvent / loadFailedEvent are required`,\n );\n }\n const payloadSchema =\n opts.loadedPayloadSchema ?? [{ name: 'data', type: `[${opts.fetchEntity}]` }];\n emits.push(\n { event: opts.loadedEvent, scope: 'internal', payloadSchema },\n {\n event: opts.loadFailedEvent,\n scope: 'internal',\n payloadSchema: [\n { name: 'error', type: 'string' },\n { name: 'code', type: 'string' },\n ],\n },\n );\n eventDefs.push(\n { key: opts.loadedEvent, name: `${opts.fetchEntity} loaded`, payloadSchema },\n {\n key: opts.loadFailedEvent,\n name: `${opts.fetchEntity} load failed`,\n payloadSchema: [\n { name: 'error', type: 'string' },\n { name: 'code', type: 'string' },\n ],\n },\n );\n // (fetch <Entity> { emit: { success, failure } })\n const fetchFx: FetchEffect = [\n 'fetch',\n opts.fetchEntity,\n { emit: { success: opts.loadedEvent, failure: opts.loadFailedEvent } },\n ];\n effects.push(fetchFx);\n }\n\n effects.push(makeRenderUI(slot, opts.renderUI));\n if (opts.extraEffects && opts.extraEffects.length > 0) {\n effects.push(...opts.extraEffects);\n }\n\n const trait: Trait = {\n name: opts.name,\n ...(opts.description ? { description: opts.description } : {}),\n linkedEntity: opts.linkedEntity,\n ...(emits.length > 0 ? { emits } : {}),\n stateMachine: {\n states: [{ name: 'composing', isInitial: true }],\n events: eventDefs,\n transitions: [\n {\n from: 'composing',\n to: 'composing',\n event: 'INIT',\n effects,\n },\n ],\n },\n };\n\n return trait;\n}\n","/**\n * Orbital Builders\n *\n * Pure functions for constructing and composing Orbitals.\n * No new types. Everything uses existing core types:\n * Entity, Trait, Page, OrbitalDefinition, OrbitalSchema.\n *\n * Three categories:\n * 1. Builders: construct Entity, Page from common params\n * 2. Utilities: ensureIdField, resolveDefaults\n * 3. Composition: connect, compose, pipe\n *\n * @packageDocumentation\n */\n\nimport type { Entity, EntityPersistence, EntityRow } from './types/entity.js';\nimport type { EntityField } from './types/field.js';\nimport type { Page } from './types/page.js';\nimport type { EntityRef, ExpectDeclaration, OrbitalDefinition, OrbitalRefTraitOverride, PageRef, PageRefObject, UseDeclaration } from './types/orbital.js';\nimport { isEntityCall, isEntityReference, parseEntityRef } from './types/orbital.js';\nimport type { OrbitalSchema } from './types/schema.js';\nimport type { TraitEventContract, TraitEventListener, Trait, TraitRef, TraitReference, TraitConfig, CallSiteConfig, DeclaredTraitConfig } from './types/trait.js';\nimport type { SExpr } from './types/expression.js';\nimport type { RuntimeValue } from './types/json.js';\nimport { isOrbitalValue, OrbitalValueSchema, type OrbitalValue } from './types/behavior-value.js';\nimport { mergeCallSiteConfigOverrides } from './types/trait.js';\nimport { parseOrbitalSchema } from './types/schema.js';\nimport type { EntityId } from './types/identity.js';\n\n// Re-export compose-behaviors module\nexport { applyTraitConfigOverrides } from './builders/apply-config-overrides.js';\nexport { type LayoutStrategy, detectLayoutStrategy } from './builders/layout-strategy.js';\nexport { type EventWiringEntry, applyEventWiring } from './builders/event-wiring.js';\nexport {\n type ComposeBehaviorsInput,\n type ComposeBehaviorsResult,\n composeBehaviors,\n mergeLedgers,\n} from './builders/compose-behaviors.js';\nexport {\n type ComposeAppFromFilesOptions,\n type ComposeAppFromFilesResult,\n type ComposedSurface,\n type ComposeSurfaceOptions,\n type ConfigNavItemsNarrowResult,\n type IdentityDedupeResult,\n type IdentityDemotion,\n type IdentityExpectsRewrite,\n type IdentityRelationRetarget,\n type IdentityRoleUnion,\n type LandingNavResult,\n type OrganismRename,\n type UnrenamableCollision,\n type NavItemsNarrowResult,\n type SurfaceRename,\n asEntityObject,\n composeAppFromFiles,\n composeOrbitalSurface,\n dedupeComposedIdentity,\n dedupeComposedSurface,\n identityVocabularyDelta,\n type IdentityVocabularyDelta,\n orbitalEntityName,\n orbitalImportResolver,\n organismOrderResolver,\n} from './builders/compose-app.js';\nexport { type EntityRenameBlocker, type RenameEntityOptions, atomTraitResolver, entityRenameBlockers, renameEntity, renameEntityInSchema, renameOrbital } from './builders/rename-entity.js';\nexport { orbitalRouteSlug } from './builders/route-slug.js';\nexport { collectOwnedSurface, findDanglingRefs } from './builders/owned-surface.js';\nexport {\n type FieldBindingContext,\n collectFieldComparisonLiterals,\n collectOwnerComparedFields,\n collectOwnerStampedFields,\n} from './builders/field-comparison-literals.js';\n// LayoutTrait + slot-embedding helpers (Phase 7.6 — atom-composition recipe path).\nexport {\n type MakeLayoutTraitOpts,\n makeSlot,\n makeRenderUI,\n makeLayoutTrait,\n} from './builders/layout-trait.js';\n\n// ============================================================================\n// Utilities\n// ============================================================================\n\n/**\n * Ensure the fields array has an `id` field. Prepends one if missing.\n */\nexport function ensureIdField(fields?: EntityField[]): EntityField[] {\n if (!fields || fields.length === 0) return [{ name: 'id', type: 'string', required: true }];\n if (fields.some(f => f.name === 'id')) return fields;\n return [{ name: 'id', type: 'string', required: true }, ...fields];\n}\n\n/**\n * Simple pluralization: append 's'.\n */\nexport function plural(name: string): string {\n return name + 's';\n}\n\n/**\n * Resolve a printable entity name from any EntityRef shape.\n *\n * Handles:\n * - inline Entity object (uses `name`)\n * - bare string reference like \"Modal.entity\" (uses the alias)\n * - EntityCall { extends: \"Modal.entity\", name? } (uses `name` if set, else the alias)\n */\nfunction resolveEntityNameForBuilder(ref: EntityRef): string {\n if (isEntityReference(ref)) {\n return parseEntityRef(ref)?.alias ?? ref;\n }\n if (isEntityCall(ref)) {\n if (ref.name) return ref.name;\n return parseEntityRef(ref.extends)?.alias ?? ref.extends;\n }\n return ref.name;\n}\n\n// ============================================================================\n// Entity Builder\n// ============================================================================\n\nexport interface MakeEntityOpts {\n name: string;\n fields: EntityField[];\n persistence?: EntityPersistence;\n collection?: string;\n /** Pre-authored seed data instances */\n instances?: EntityRow[];\n}\n\n/**\n * Build an Entity from options. Auto-adds id field, auto-derives collection.\n */\nexport function makeEntity(opts: MakeEntityOpts): Entity {\n const fields = ensureIdField(opts.fields);\n const persistence = opts.persistence ?? 'runtime';\n return {\n name: opts.name,\n persistence,\n ...(persistence === 'persistent'\n ? { collection: opts.collection ?? plural(opts.name).toLowerCase() }\n : {}),\n fields,\n ...(opts.instances && opts.instances.length > 0 ? { instances: opts.instances } : {}),\n };\n}\n\n// ============================================================================\n// Page Builder\n// ============================================================================\n\nexport interface MakePageOpts {\n name: string;\n path: string;\n traitName: string;\n isInitial?: boolean;\n}\n\n/**\n * Build a Page that binds to a single trait.\n */\nexport function makePage(opts: MakePageOpts): Page {\n return {\n name: opts.name,\n path: opts.path,\n ...(opts.isInitial ? { isInitial: true } : {}),\n traits: [{ ref: opts.traitName }],\n };\n}\n\n// ============================================================================\n// Orbital Builder\n// ============================================================================\n\n/**\n * Build an OrbitalDefinition from its three components.\n */\nexport function makeOrbital(\n name: string,\n entity: Entity,\n traits: Trait[],\n pages: Page[],\n): OrbitalDefinition {\n return { name, entity, traits, pages } as OrbitalDefinition;\n}\n\n// ============================================================================\n// Reference-form Builders (Phase 4.2)\n// ============================================================================\n//\n// The atom/molecule/organism composition model (see CLAUDE.md \"Std Behaviors\")\n// treats every imported orbital as a callable unit: a reference site is a call\n// site whose sibling fields are call arguments. The compiler's inline pass\n// applies overrides from the reference to a cloned copy of the imported unit.\n//\n// These four helpers are convenience factories for constructing the reference\n// payloads (TraitReference, PageRefObject) and the orbital skeleton that\n// holds them. They exist to compress the otherwise ~200-line-per-behavior TS\n// rewrite down to ~30 lines. They purely pass-through fields: undefined\n// optionals are omitted (the emitted object never contains `key: undefined`),\n// so the result stays compatible with the inliner's \"present-means-override\"\n// semantics.\n\n/**\n * Options for {@link makeTraitRef}.\n */\nexport interface MakeTraitRefOpts {\n /**\n * Optional registry path disambiguator that pairs with {@link ref}\n * (see {@link TraitReference.from}).\n */\n from?: string;\n /** Trait reference string, e.g. \"Browse.traits.BrowseItemBrowse\". */\n ref: string;\n /** Rename the inlined trait at the call site. */\n name?: string;\n /** Rebind the trait to a different linkedEntity. */\n linkedEntity?: string;\n /** Dual-carry id sibling of {@link linkedEntity} (V4 identity graph). */\n linkedEntityId?: EntityId;\n /** Per-key rename map, e.g. `{ OPEN: \"ADD_ITEM\" }`. */\n events?: Record<string, string>;\n /**\n * 3-II trait type-parameter arguments (`:: p SomeType`): declared-param\n * name → type-vocabulary name. Mirrors {@link TraitReference.typeArgs}.\n */\n typeArgs?: Record<string, string>;\n /**\n * Entity-field remap, e.g. `{ name: \"title\", folder: \"parentId\" }`. Rewrites\n * the inlined trait's canonical `@entity.X` / `@payload.row.X` references to\n * the consumer entity's field names. Mirrors {@link TraitReference.fields}.\n */\n fields?: Record<string, string>;\n /**\n * Per-event SExpression effect replacement. Keys are POST-rename event\n * names. See {@link TraitReference.effects} for the full contract.\n */\n effects?: Record<string, SExpr[]>;\n /** Replace the imported trait's `listens` array entirely. */\n listens?: TraitEventListener[];\n /** Set every emit's scope. */\n emitsScope?: 'internal' | 'external';\n /**\n * Call-site config overrides. Each entry is either a plain wiring value\n * (`TraitConfigValue`) or a fully-annotated re-declaration\n * (`ConfigFieldDeclaration`). Matches {@link TraitReference.config}.\n */\n config?: CallSiteConfig;\n}\n\n/**\n * Typed-narrowing variant of {@link MakeTraitRefOpts} for callers that know\n * the imported atom's overridable surfaces — its event-key set, listen-key\n * set, and config shape. Generated std factories use this variant so an LLM\n * tool consumer (orbital-agent) sees the closed event-name set and the\n * config field schema instead of the un-narrowed `Record<string, string>` /\n * `TraitConfig` defaults.\n *\n * Type parameters:\n * - `EventKey` — string union of the atom's emit event names. Narrows the\n * `events` rename map's keys to legal originals only.\n * - `ConfigShape` — typed shape of the trait's `config { ... }` block (literal\n * unions intact). Narrows the `config` override to the atom's actual fields.\n * Extends `CallSiteConfig` to allow both plain wiring values and annotated\n * declarations. Existing callers using plain `TraitConfig` shapes are\n * unaffected (TraitConfig ⊆ CallSiteConfig).\n * - `ListenKey` — string union of the atom's listen-key contract. Narrows\n * each listens entry's `event` against the atom's real subscription set.\n *\n * Runtime behavior is unchanged — {@link makeTraitRef} accepts both the\n * narrow and wide forms via the standard structural-typing rules. This is\n * a type-level narrowing only; widening at the call boundary is intentional.\n */\nexport interface MakeTraitRefOptsTyped<\n EventKey extends string = string,\n ConfigShape extends CallSiteConfig = Record<string, never>,\n ListenKey extends string = string,\n> extends Omit<\n MakeTraitRefOpts,\n 'events' | 'effects' | 'listens' | 'config'\n > {\n /** Per-key rename map, narrowed to the atom's actual event keys. */\n events?: Partial<Record<EventKey, string>>;\n /**\n * Per-event SExpression effect replacement. Keys are POST-rename event\n * names so they're caller-defined (no narrowing here); values stay typed\n * as `SExpr[]`.\n */\n effects?: Partial<Record<string, SExpr[]>>;\n /**\n * Replace the imported trait's `listens` array entirely. Each entry's\n * `event` field is narrowed to {@link ListenKey} where the atom's\n * subscription set is fixed; otherwise this widens to plain string.\n */\n listens?: Array<TraitEventListener & { event?: ListenKey }>;\n /** Typed call-site config overrides — narrowed to {@link ConfigShape}. */\n config?: ConfigShape;\n}\n\n/**\n * Build a {@link TraitReference} from options.\n *\n * Pass-through factory: copies only the fields that are actually provided,\n * so optionals stay absent (no `key: undefined` slots) and the emitted\n * object matches the inliner's expectation that \"present = override\".\n */\nexport function makeTraitRef(opts: MakeTraitRefOpts): TraitReference {\n const ref: TraitReference = { ref: opts.ref };\n if (opts.from !== undefined) ref.from = opts.from;\n if (opts.name !== undefined) ref.name = opts.name;\n if (opts.linkedEntity !== undefined) ref.linkedEntity = opts.linkedEntity;\n if (opts.linkedEntityId !== undefined) ref.linkedEntityId = opts.linkedEntityId;\n if (opts.events !== undefined) ref.events = opts.events;\n if (opts.typeArgs !== undefined) ref.typeArgs = opts.typeArgs;\n if (opts.fields !== undefined) ref.fields = opts.fields;\n if (opts.effects !== undefined) ref.effects = opts.effects;\n if (opts.listens !== undefined) ref.listens = opts.listens;\n if (opts.emitsScope !== undefined) ref.emitsScope = opts.emitsScope;\n if (opts.config !== undefined) ref.config = opts.config;\n return ref;\n}\n\n/**\n * Options for {@link makePageRef}.\n */\nexport interface MakePageRefOpts {\n /**\n * Optional registry path disambiguator that pairs with {@link ref}\n * (see {@link PageRefObject.from}).\n */\n from?: string;\n /** Page reference string, e.g. \"Browse.pages.BrowseItemPage\". */\n ref: string;\n /** URL path override. */\n path?: string;\n /** Rebind the page's primary entity. */\n linkedEntity?: string;\n /** Replace the page's trait list. */\n traits?: TraitRef[];\n}\n\n/**\n * Typed-narrowing variant of {@link MakePageRefOpts}. Narrows the `traits`\n * override array's entries to the orbital's known trait-name union — so the\n * agent can't pass a trait name that doesn't exist on the page's owning\n * orbital. Generated std page-helpers use this variant to surface the\n * trait set in the tool schema; un-narrowed call sites stay compatible.\n *\n * Type parameter:\n * - `TraitName` — string union of trait names the page may reference.\n */\nexport interface MakePageRefOptsTyped<TraitName extends string = string>\n extends Omit<MakePageRefOpts, 'traits'> {\n traits?: Array<{ ref: TraitName } | TraitRef>;\n}\n\n/**\n * Build a {@link PageRefObject} from options. Pass-through factory — omits\n * optional keys that are `undefined`.\n */\nexport function makePageRef(opts: MakePageRefOpts): PageRefObject {\n const ref: PageRefObject = { ref: opts.ref };\n if (opts.from !== undefined) ref.from = opts.from;\n if (opts.path !== undefined) ref.path = opts.path;\n if (opts.linkedEntity !== undefined) ref.linkedEntity = opts.linkedEntity;\n if (opts.traits !== undefined) ref.traits = opts.traits;\n return ref;\n}\n\n/**\n * Options for {@link makeOrbitalWithUses}.\n */\nexport interface MakeOrbitalWithUsesOpts {\n /** Orbital name. */\n name: string;\n /**\n * Per-orbital `uses:` header entries (see CLAUDE.md \"uses: lives inside\n * the orbital\").\n */\n uses: UseDeclaration[];\n /** Entity (inline or reference form). */\n entity: EntityRef;\n /**\n * Derived `expects` declarations (consumer-side requirements). Threaded\n * verbatim — derivation lives in `orb` (`orb behaviors expects`); builders never\n * compute it. Omitted from the result when not provided.\n */\n expects?: ExpectDeclaration[];\n /**\n * Auxiliary entities (name-resolution side channel for un-rebound atom\n * imports — see {@link OrbitalDefinition.auxiliaryEntities}). Threaded\n * verbatim; omitted from the result when not provided.\n */\n auxiliaryEntities?: EntityRef[];\n /** Trait references. */\n traits: TraitRef[];\n /** Optional page references (omitted entirely when not provided). */\n pages?: PageRef[];\n /** The orbital's own declared config knobs, threaded verbatim; omitted when not provided. */\n config?: DeclaredTraitConfig;\n}\n\n/**\n * Build an {@link OrbitalDefinition} with the `uses:` header set. Follows\n * the convention that `uses:` lives on the orbital (not the schema).\n *\n * When `pages` is omitted, the result has no `pages` property (matches the\n * existing {@link OrbitalDefinition.pages} optionality in descriptors that\n * carry trait-only atoms).\n */\nexport function makeOrbitalWithUses(opts: MakeOrbitalWithUsesOpts): OrbitalDefinition {\n const orbital: OrbitalDefinition = {\n name: opts.name,\n uses: opts.uses,\n ...(opts.expects !== undefined ? { expects: opts.expects } : {}),\n entity: opts.entity,\n ...(opts.auxiliaryEntities !== undefined ? { auxiliaryEntities: opts.auxiliaryEntities } : {}),\n traits: opts.traits,\n pages: opts.pages ?? [],\n ...(opts.config !== undefined ? { config: opts.config } : {}),\n };\n return orbital;\n}\n\n/** The alias an orbital value's import binds its source under (one import per orbital, so a fixed name is unambiguous). */\nexport const ORBITAL_VALUE_IMPORT_ALIAS = 'Source';\n\n/**\n * The import orbital an orbital value stands for (LOLO §8b): the value's\n * behavior imported under {@link ORBITAL_VALUE_IMPORT_ALIAS}, its orbital\n * referenced, and its recorded body as the reference body. Plain config values\n * are wrapped into the IR's declaration form here.\n */\nexport function orbitalImportFromValue(value: OrbitalValue): OrbitalDefinition {\n const { behavior, orbital, name, app, config, traits, uses, siblings, ...body } = value;\n const ref = `${ORBITAL_VALUE_IMPORT_ALIAS}.orbitals.${orbital}`;\n const clash = (uses ?? []).find((u) => u.as === ORBITAL_VALUE_IMPORT_ALIAS);\n if (clash !== undefined) {\n throw new Error(`orbital value ${orbital}: an import aliased '${ORBITAL_VALUE_IMPORT_ALIAS}' (from ${clash.from}) collides with the value's own source alias`);\n }\n const traitOverrides =\n traits === undefined\n ? undefined\n : Object.fromEntries(\n Object.entries(traits).map(([trait, overrides]): [string, OrbitalRefTraitOverride] => {\n const { config: traitConfig, ...rest } = overrides;\n return [trait, { ...rest, ...(traitConfig !== undefined ? { config: mergeCallSiteConfigOverrides({}, traitConfig) } : {}) }];\n }),\n );\n return {\n name: name ?? orbital,\n uses: [{ from: behavior, as: ORBITAL_VALUE_IMPORT_ALIAS, ...(app !== undefined ? { config: mergeCallSiteConfigOverrides({}, app) } : {}) }, ...(uses ?? [])],\n entity: `${ref}.entity`,\n traits: (siblings ?? []).map((sibling) => ({\n name: sibling.name,\n ref: sibling.ref,\n ...(sibling.linkedEntity !== undefined ? { linkedEntity: sibling.linkedEntity } : {}),\n ...(sibling.config !== undefined ? { config: mergeCallSiteConfigOverrides({}, sibling.config) } : {}),\n })),\n pages: [],\n reference: {\n ref,\n ...body,\n ...(config !== undefined ? { config: mergeCallSiteConfigOverrides({}, config) } : {}),\n ...(traitOverrides !== undefined ? { traits: traitOverrides } : {}),\n },\n };\n}\n\n/**\n * Parse a program held as data: an orbital value at `orbitals[i]` is the import\n * orbital it stands for ({@link orbitalImportFromValue}); everything else must\n * already be IR.\n */\nexport function parseProgram(data: RuntimeValue): OrbitalSchema {\n if (data === null || typeof data !== 'object' || Array.isArray(data) || !('orbitals' in data) || !Array.isArray(data.orbitals)) {\n return parseOrbitalSchema(data);\n }\n return parseOrbitalSchema({\n ...data,\n orbitals: data.orbitals.map((entry) => (isOrbitalValue(entry) ? orbitalImportFromValue(OrbitalValueSchema.parse(entry)) : entry)),\n });\n}\n\n/**\n * Options for {@link makeAtomOrbital}.\n *\n * Overrides for the single trait reference. Mirrors the {@link MakeTraitRefOpts}\n * subset that is meaningful at the atom-wrapping call site.\n */\nexport interface MakeAtomOrbitalTraitOverrides {\n name?: string;\n events?: Record<string, string>;\n effects?: Record<string, SExpr[]>;\n listens?: TraitEventListener[];\n emitsScope?: 'internal' | 'external';\n config?: CallSiteConfig;\n}\n\n/**\n * Options for {@link makeAtomOrbital}.\n */\nexport interface MakeAtomOrbitalOpts {\n /** Orbital name, e.g. `${entityName}Orbital`. */\n name: string;\n /** Atom registry path, e.g. `std/behaviors/atoms/std-browse`. */\n atomPath: string;\n /** Import alias (PascalCase), e.g. `Browse`. */\n alias: string;\n /** Entity definition to attach to the orbital. */\n entity: Entity;\n /** Trait reference string, e.g. `Browse.traits.BrowseItemBrowse`. */\n traitRef: string;\n /** Optional trait-level overrides applied at the call site. */\n traitOverrides?: MakeAtomOrbitalTraitOverrides;\n /** Optional page reference string, e.g. `Browse.pages.BrowseItemPage`. */\n pageRef?: string;\n /** Optional page-level overrides applied at the call site. */\n pageOverrides?: { path?: string };\n}\n\n/**\n * Build a single-atom {@link OrbitalDefinition}.\n *\n * The common atom shape: one entity + one trait reference + (optionally) one\n * page reference, all under a single `uses:` import. Wraps\n * {@link makeTraitRef}, {@link makePageRef}, and {@link makeOrbitalWithUses}.\n *\n * The trait reference is linkedEntity-bound to `entity.name` by default so\n * that the inliner's entity-substitution pass rewrites every `[\"ref\", X]`\n * and `@X.path` reference inside the atom.\n */\nexport function makeAtomOrbital(opts: MakeAtomOrbitalOpts): OrbitalDefinition {\n const traitRef = makeTraitRef({\n from: opts.atomPath,\n ref: opts.traitRef,\n linkedEntity: opts.entity.name,\n ...(opts.traitOverrides?.name !== undefined ? { name: opts.traitOverrides.name } : {}),\n ...(opts.traitOverrides?.events !== undefined ? { events: opts.traitOverrides.events } : {}),\n ...(opts.traitOverrides?.effects !== undefined ? { effects: opts.traitOverrides.effects } : {}),\n ...(opts.traitOverrides?.listens !== undefined ? { listens: opts.traitOverrides.listens } : {}),\n ...(opts.traitOverrides?.emitsScope !== undefined\n ? { emitsScope: opts.traitOverrides.emitsScope }\n : {}),\n ...(opts.traitOverrides?.config !== undefined ? { config: opts.traitOverrides.config } : {}),\n });\n\n const pages: PageRef[] | undefined = opts.pageRef\n ? [\n makePageRef({\n from: opts.atomPath,\n ref: opts.pageRef,\n linkedEntity: opts.entity.name,\n ...(opts.pageOverrides?.path !== undefined ? { path: opts.pageOverrides.path } : {}),\n }),\n ]\n : undefined;\n\n return makeOrbitalWithUses({\n name: opts.name,\n uses: [{ from: opts.atomPath, as: opts.alias }],\n entity: opts.entity,\n traits: [traitRef],\n ...(pages !== undefined ? { pages } : {}),\n });\n}\n\n/**\n * Wrap one or more OrbitalDefinitions into an OrbitalSchema.\n * Every .orb file should be a full OrbitalSchema — this is the builder for that.\n */\nexport function makeSchema(name: string, ...definitions: OrbitalDefinition[]): OrbitalSchema {\n return { name, version: '1.0.0', orbitals: definitions };\n}\n\n/**\n * Unwrap inputs that may be OrbitalSchema or OrbitalDefinition into a flat\n * array of OrbitalDefinitions. Used internally by compose/pipe/connect/extractTrait\n * so they accept both types.\n */\nfunction asDefinitions(inputs: (OrbitalDefinition | OrbitalSchema)[]): OrbitalDefinition[] {\n return inputs.flatMap(input => {\n if ('orbitals' in input && Array.isArray((input as OrbitalSchema).orbitals)) {\n return (input as OrbitalSchema).orbitals as OrbitalDefinition[];\n }\n return [input as OrbitalDefinition];\n });\n}\n\n/** Unwrap a single OrbitalSchema | OrbitalDefinition to OrbitalDefinition. */\nfunction asDefinition(input: OrbitalDefinition | OrbitalSchema): OrbitalDefinition {\n if ('orbitals' in input && Array.isArray((input as OrbitalSchema).orbitals)) {\n return (input as OrbitalSchema).orbitals[0] as OrbitalDefinition;\n }\n return input as OrbitalDefinition;\n}\n\n// ============================================================================\n// Intra-Orbital Composition\n// ============================================================================\n\n/**\n * Merge multiple OrbitalDefinitions into one.\n * Collects all traits from all sources into a single orbital with a shared entity.\n * Pure: clones all traits, no mutation.\n */\nexport function mergeOrbitals(\n name: string,\n entity: Entity,\n sources: OrbitalDefinition[],\n pages: Page[],\n): OrbitalDefinition {\n const allTraits = sources.flatMap(s =>\n (s.traits as Trait[]).map(t => structuredClone(t)),\n );\n return { name, entity, traits: allTraits, pages } as OrbitalDefinition;\n}\n\n/**\n * Wire an intra-orbital event between two traits.\n * Adds emits to the source trait, listens to the target trait.\n * Pure: returns cloned traits, no mutation.\n */\nexport function wire(\n source: Trait,\n target: Trait,\n event: TraitEventContract,\n triggers: string,\n): [Trait, Trait] {\n const s = structuredClone(source);\n const t = structuredClone(target);\n\n s.emits = [...(s.emits ?? []), { ...event, scope: event.scope ?? ('internal' as const) }];\n t.listens = [...(t.listens ?? []), {\n event: event.event,\n triggers,\n scope: 'internal' as const,\n }];\n\n return [s, t];\n}\n\n/**\n * Extract the first trait from an OrbitalDefinition or OrbitalSchema.\n * If given an OrbitalSchema, unwraps to the first orbital inside it.\n */\nexport function extractTrait(input: OrbitalDefinition | OrbitalSchema): Trait {\n const orbital = asDefinition(input);\n return structuredClone((orbital.traits as Trait[])[0]);\n}\n\n// ============================================================================\n// Composition: connect\n// ============================================================================\n\n/**\n * Wire a cross-orbital event between two orbitals.\n * Adds emits to a's first trait, listens to b's first trait.\n * Pure: returns new orbitals, no mutation.\n */\nexport function connect(\n a: OrbitalDefinition | OrbitalSchema,\n b: OrbitalDefinition | OrbitalSchema,\n event: TraitEventContract,\n triggers?: string,\n): [OrbitalDefinition, OrbitalDefinition] {\n const aClone = structuredClone(asDefinition(a));\n const bClone = structuredClone(asDefinition(b));\n\n // Add emit to first trait of a\n const aTrait = (aClone.traits as Trait[])[0];\n if (aTrait) {\n const emitContract: TraitEventContract = {\n ...event,\n scope: event.scope ?? 'external',\n };\n aTrait.emits = [...(aTrait.emits ?? []), emitContract];\n }\n\n // Add listen to first trait of b\n const bTrait = (bClone.traits as Trait[])[0];\n if (bTrait) {\n const listener: TraitEventListener = {\n event: event.event,\n triggers: triggers ?? 'INIT',\n scope: 'external',\n };\n bTrait.listens = [...(bTrait.listens ?? []), listener];\n }\n\n return [aClone, bClone];\n}\n\n// ============================================================================\n// Composition: compose\n// ============================================================================\n\nexport interface ComposeConnection {\n from: string;\n to: string;\n event: TraitEventContract;\n triggers?: string;\n}\n\nexport interface ComposePage {\n name: string;\n path: string;\n traits: string[];\n isInitial?: boolean;\n}\n\n/**\n * Compose multiple orbitals into a single OrbitalSchema (application).\n * Applies connections (cross-orbital event wiring) and page assignments.\n */\nexport function compose(\n orbitals: (OrbitalDefinition | OrbitalSchema)[],\n pages: ComposePage[],\n connections: ComposeConnection[],\n appName?: string,\n): OrbitalSchema {\n const cloned = structuredClone(asDefinitions(orbitals));\n\n // Apply connections\n for (const conn of connections) {\n const emitter = cloned.find(o => {\n const traits = o.traits as Trait[];\n return traits.some(t => t.name === conn.from);\n });\n const listener = cloned.find(o => {\n const traits = o.traits as Trait[];\n return traits.some(t => t.name === conn.to);\n });\n\n if (emitter && listener) {\n const eTrait = (emitter.traits as Trait[]).find(t => t.name === conn.from);\n const lTrait = (listener.traits as Trait[]).find(t => t.name === conn.to);\n\n if (eTrait) {\n const emitContract: TraitEventContract = { ...conn.event, scope: conn.event.scope ?? 'external' };\n eTrait.emits = [...(eTrait.emits ?? []), emitContract];\n }\n if (lTrait) {\n const listenContract: TraitEventListener = {\n event: conn.event.event,\n triggers: conn.triggers ?? 'INIT',\n scope: 'external',\n };\n lTrait.listens = [...(lTrait.listens ?? []), listenContract];\n }\n }\n }\n\n // Assign pages to orbitals\n for (const orbital of cloned) {\n const traitNames = (orbital.traits as Trait[]).map(t => t.name);\n const matchingPages = pages.filter(p =>\n p.traits.some(t => traitNames.includes(t)),\n );\n orbital.pages = matchingPages.map(p => ({\n name: p.name,\n path: p.path,\n ...(p.isInitial ? { isInitial: true } : {}),\n traits: p.traits\n .filter(t => traitNames.includes(t))\n .map(ref => ({ ref })),\n }));\n }\n\n return {\n name: appName ?? 'Application',\n version: '1.0.0',\n orbitals: cloned,\n };\n}\n\n// ============================================================================\n// Composition: pipe\n// ============================================================================\n\n/**\n * Chain orbitals in sequence with automatic event wiring.\n * Sugar over connect + compose: wires events[0] from orbital[0] to orbital[1], etc.\n */\nexport function pipe(\n orbitals: (OrbitalDefinition | OrbitalSchema)[],\n events: TraitEventContract[],\n appName?: string,\n): OrbitalSchema {\n if (events.length !== orbitals.length - 1) {\n throw new Error(`pipe requires exactly ${orbitals.length - 1} events for ${orbitals.length} orbitals`);\n }\n\n const cloned = structuredClone(asDefinitions(orbitals));\n\n // Wire adjacent pairs\n for (let i = 0; i < events.length; i++) {\n const aTrait = (cloned[i].traits as Trait[])[0];\n const bTrait = (cloned[i + 1].traits as Trait[])[0];\n\n if (aTrait) {\n const emitContract: TraitEventContract = { ...events[i], scope: events[i].scope ?? 'external' };\n aTrait.emits = [...(aTrait.emits ?? []), emitContract];\n }\n if (bTrait) {\n const listener: TraitEventListener = {\n event: events[i].event,\n triggers: 'INIT',\n scope: 'external',\n };\n bTrait.listens = [...(bTrait.listens ?? []), listener];\n }\n }\n\n // Auto-generate pages: one per orbital, first is initial\n const pages: Page[] = cloned.map((o, i) => {\n const entityName = resolveEntityNameForBuilder(o.entity);\n const traitNames = (o.traits as Trait[]).map(t => t.name);\n return {\n name: `${entityName}Page`,\n path: `/${plural(entityName).toLowerCase()}`,\n ...(i === 0 ? { isInitial: true } : {}),\n traits: traitNames.map(ref => ({ ref })),\n };\n });\n\n // Assign pages back to orbitals\n for (let i = 0; i < cloned.length; i++) {\n cloned[i].pages = [pages[i]];\n }\n\n return {\n name: appName ?? 'Application',\n version: '1.0.0',\n orbitals: cloned,\n };\n}\n"]}