@almadar/core 10.129.0 → 11.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/behavior-package.d.ts +49 -11
- package/dist/behavior-package.js +1 -1
- package/dist/{orbital-CkFdDS9f.d.ts → builders-BhnofAik.d.ts} +5966 -7116
- package/dist/builders.d.ts +6 -6
- package/dist/builders.js +7 -6
- package/dist/{bus-CcbB__oo.d.ts → bus-BrRFWDQK.d.ts} +270 -354
- package/dist/chunk-347APWFM.js +286 -0
- package/dist/chunk-347APWFM.js.map +1 -0
- package/dist/chunk-3URQAGD7.js +98 -0
- package/dist/chunk-3URQAGD7.js.map +1 -0
- package/dist/chunk-7GHJU5WI.js +39 -0
- package/dist/chunk-7GHJU5WI.js.map +1 -0
- package/dist/chunk-B4MNHGBP.js +8 -0
- package/dist/chunk-B4MNHGBP.js.map +1 -0
- package/dist/{chunk-KDMV222Q.js → chunk-F6KHUW7T.js} +304 -373
- package/dist/chunk-F6KHUW7T.js.map +1 -0
- package/dist/chunk-FGT5OS2Y.js +918 -0
- package/dist/chunk-FGT5OS2Y.js.map +1 -0
- package/dist/chunk-FQLEAMAB.js +24 -0
- package/dist/chunk-FQLEAMAB.js.map +1 -0
- package/dist/chunk-HEXOGHQ4.js +3264 -0
- package/dist/chunk-HEXOGHQ4.js.map +1 -0
- package/dist/chunk-JCD6GLBX.js +412 -0
- package/dist/chunk-JCD6GLBX.js.map +1 -0
- package/dist/{chunk-QUOTJULD.js → chunk-MGLG2XLD.js} +20 -219
- package/dist/chunk-MGLG2XLD.js.map +1 -0
- package/dist/chunk-MTBEBSNO.js +1293 -0
- package/dist/chunk-MTBEBSNO.js.map +1 -0
- package/dist/{chunk-X4SC7FGF.js → chunk-RGACZEYC.js} +99 -96
- package/dist/chunk-RGACZEYC.js.map +1 -0
- package/dist/{chunk-RYPVOI6H.js → chunk-UZPYYI37.js} +524 -26
- package/dist/{chunk-RYPVOI6H.js.map → chunk-UZPYYI37.js.map} +1 -1
- package/dist/chunk-VG7BRFUD.js +152 -0
- package/dist/chunk-VG7BRFUD.js.map +1 -0
- package/dist/chunk-Y2DYZPP5.js +2329 -0
- package/dist/chunk-Y2DYZPP5.js.map +1 -0
- package/dist/chunk-ZEI7C32D.js +1566 -0
- package/dist/chunk-ZEI7C32D.js.map +1 -0
- package/dist/{domain-Dz3jP-UM.d.ts → domain-CfKPpXCP.d.ts} +51 -51
- package/dist/{effect-result-Bebwu9yT.d.ts → effect-result-DPERsn_v.d.ts} +641 -851
- package/dist/{effect-CiEVLsZz.d.ts → effect-wP-IdRt2.d.ts} +236 -443
- package/dist/{expression-D0Fs0riG.d.ts → expression-DirYKz-f.d.ts} +5 -13
- package/dist/factory/index.d.ts +7 -144
- package/dist/factory/index.js +8 -8
- package/dist/factory-runtime/index.d.ts +7 -6
- package/dist/factory-runtime/index.js +527 -8
- package/dist/factory-runtime/index.js.map +1 -1
- package/dist/fixtures.d.ts +9 -11
- package/dist/fixtures.js +12 -8
- package/dist/fixtures.js.map +1 -1
- package/dist/i18n/index.d.ts +15 -19
- package/dist/i18n/index.js +2 -1
- package/dist/{index-BC-Jycqj.d.ts → index-DomgmRBG.d.ts} +29 -729
- package/dist/index.d.ts +69 -247
- package/dist/index.js +322 -986
- package/dist/index.js.map +1 -1
- package/dist/kernel-wire.d.ts +3 -3
- package/dist/kernel-wire.js +3 -79
- package/dist/kernel-wire.js.map +1 -1
- package/dist/language/constructs.json +22 -2
- package/dist/language/program-types.json +203 -22
- package/dist/language/protocols.json +46 -0
- package/dist/language/ui-vocabulary.json +1697 -0
- package/dist/language/validation-codes.json +1205 -1215
- package/dist/language/vocabulary.json +44 -8
- package/dist/language-data.d.ts +7 -4
- package/dist/language-data.js +20 -14
- package/dist/language-data.js.map +1 -1
- package/dist/patterns/component-mapping.json +11 -1
- package/dist/patterns/definitions.d.ts +2 -2
- package/dist/patterns/definitions.js +1 -1
- package/dist/patterns/event-contracts.json +1 -15
- package/dist/patterns/index.d.ts +24 -120
- package/dist/patterns/index.js +3 -3
- package/dist/patterns/patterns-registry.json +522 -24
- package/dist/patterns/registry.json +522 -24
- package/dist/trait-CzG9M89M.d.ts +3519 -0
- package/dist/types/index.d.ts +9 -10
- package/dist/types/index.js +11 -5
- package/dist/{types-DGwrltUF.d.ts → types-BHlTjwWd.d.ts} +3 -3
- package/fixtures/events-wire/client-effects-by-trait/response.json +0 -18
- package/fixtures/events-wire/client-effects-provenance/response.json +0 -18
- package/fixtures/events-wire/effect-results-every-kind/response.json +2 -27
- package/fixtures/events-wire/navigate-1/response.json +8 -5
- package/fixtures/events-wire/navigate-2/response.json +11 -8
- package/fixtures/events-wire/navigate-3/response.json +14 -11
- package/fixtures/events-wire/navigate-back/response.json +7 -4
- package/fixtures/events-wire/render-ui-3/response.json +12 -9
- package/fixtures/events-wire/render-ui-clear/response.json +0 -7
- package/fixtures/events-wire/sse-stream/response.json +0 -20
- package/fixtures/events-wire/sse-stream/stream.json +0 -20
- package/fixtures/events-wire/stateless-traits/response.json +14 -5
- package/fixtures/kernel-wire/golden/basic-entity.json +1687 -0
- package/fixtures/kernel-wire/golden/entity-rerender.json +743 -0
- package/fixtures/kernel-wire/golden/rollback.json +793 -0
- package/fixtures/kernel-wire/golden/tick-counter.json +1538 -0
- package/fixtures/kernel-wire/golden/two-orbital-chore.json +847 -0
- package/fixtures/kernel-wire/golden/two-orbital-task.json +457 -0
- package/fixtures/kernel-wire/played-step.json +136 -0
- package/fixtures/kernel-wire/scripts/basic-entity.json +28 -0
- package/fixtures/kernel-wire/scripts/entity-rerender.json +13 -0
- package/fixtures/kernel-wire/scripts/rollback.json +53 -0
- package/fixtures/kernel-wire/scripts/tick-counter.json +26 -0
- package/fixtures/kernel-wire/scripts/two-orbital-chore.json +9 -0
- package/fixtures/kernel-wire/scripts/two-orbital-task.json +9 -0
- package/package.json +28 -19
- package/dist/builders-DmZE5By0.d.ts +0 -2663
- package/dist/chunk-45I2O4SJ.js +0 -4646
- package/dist/chunk-45I2O4SJ.js.map +0 -1
- package/dist/chunk-6LR43Z5E.js +0 -3061
- package/dist/chunk-6LR43Z5E.js.map +0 -1
- package/dist/chunk-GIUA3NUJ.js +0 -809
- package/dist/chunk-GIUA3NUJ.js.map +0 -1
- package/dist/chunk-GTY53NS5.js +0 -1908
- package/dist/chunk-GTY53NS5.js.map +0 -1
- package/dist/chunk-JOHDVS6J.js +0 -1614
- package/dist/chunk-JOHDVS6J.js.map +0 -1
- package/dist/chunk-KDMV222Q.js.map +0 -1
- package/dist/chunk-QRHJUS3D.js +0 -23
- package/dist/chunk-QRHJUS3D.js.map +0 -1
- package/dist/chunk-QUOTJULD.js.map +0 -1
- package/dist/chunk-V5VNGRVU.js +0 -66
- package/dist/chunk-V5VNGRVU.js.map +0 -1
- package/dist/chunk-X4SC7FGF.js.map +0 -1
- package/dist/entityAccess-BPSz1i2n.d.ts +0 -80
- package/dist/mock/index.d.ts +0 -153
- package/dist/mock/index.js +0 -190
- package/dist/mock/index.js.map +0 -1
- package/dist/schema-T5RT5s6H.d.ts +0 -282
- package/dist/state-machine/index.d.ts +0 -359
- package/dist/state-machine/index.js +0 -3
- package/dist/state-machine/index.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/factory/knob-defs.ts","../src/factory/questions/reducer.ts","../src/factory/mutate.ts","../src/factory/params-schema.ts","../src/factory/composition.ts"],"names":[],"mappings":"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","file":"chunk-KDMV222Q.js","sourcesContent":["import type { FactoryConfigParam, FactorySignatureCatalog } from './types.js';\n\n/**\n * Rehydrate `overridableConfigKeys` from a catalog's `knobDefs` table,\n * in place, and drop the wire-only `overridableConfigKeyRefs`.\n *\n * Call this immediately after parsing a catalog and before handing it to any\n * consumer — every consumer reads `overridableConfigKeys` and must never see\n * a signature mid-rehydration.\n *\n * A catalog with no `knobDefs` is returned untouched, which is what makes the\n * format change backward compatible: old catalogs still carry their knobs\n * inline. An out-of-range or missing ref is skipped rather than throwing —\n * a truncated table should degrade to fewer knobs, not take down every\n * consumer of the catalog.\n */\nexport function rehydrateKnobDefs(catalog: FactorySignatureCatalog): FactorySignatureCatalog {\n const table = catalog.knobDefs;\n if (table === undefined || table.length === 0) return catalog;\n for (const sig of catalog.signatures) {\n for (const trait of sig.traits ?? []) {\n const refs = trait.overridableConfigKeyRefs;\n if (refs === undefined) continue;\n const knobs: FactoryConfigParam[] = [];\n for (const i of refs) {\n const knob = table[i];\n if (knob !== undefined) knobs.push(knob);\n }\n const mutable = trait as {\n overridableConfigKeys: ReadonlyArray<FactoryConfigParam>;\n overridableConfigKeyRefs?: ReadonlyArray<number>;\n };\n mutable.overridableConfigKeys = knobs;\n delete mutable.overridableConfigKeyRefs;\n }\n // Orbital-level `config` — same table, same ref/rehydrate shape as the\n // per-trait `overridableConfigKeyRefs` above.\n const configRefs = sig.configRefs;\n if (configRefs === undefined) continue;\n const configKnobs: FactoryConfigParam[] = [];\n for (const i of configRefs) {\n const knob = table[i];\n if (knob !== undefined) configKnobs.push(knob);\n }\n const mutableSig = sig as {\n config?: ReadonlyArray<FactoryConfigParam>;\n configRefs?: ReadonlyArray<number>;\n };\n mutableSig.config = configKnobs;\n delete mutableSig.configRefs;\n }\n return catalog;\n}\n","/**\n * `answersToMutations(answers, questions)` — turns a\n * `DomainQuestionAnswers` record into a typed\n * `FactoryCallPlanMutation[]`. Each question's `mutationTemplate`\n * matches one variant of the union; the answer fills in the value.\n * `null` (or omitted) answers produce no mutation.\n *\n * @packageDocumentation\n */\n\nimport type { EntityField } from '../../types/field.js';\nimport type { EntityPersistence } from '../../types/entity.js';\nimport type { TraitReference } from '../../types/trait.js';\nimport type { FactoryParamValue } from '../types.js';\nimport type { RuleOverlayEntry } from '../overlays.js';\nimport type { FactoryCallPlanMutation } from '../mutate.js';\nimport type {\n DomainQuestion,\n DomainQuestionAnswer,\n DomainQuestionAnswers,\n FactoryCallPlanMutationTemplate,\n} from './types.js';\n\nconst PERSISTENCE_VALUES: ReadonlyArray<EntityPersistence> = [\n 'persistent',\n 'runtime',\n];\n\nexport function answersToMutations(\n answers: DomainQuestionAnswers,\n questions: ReadonlyArray<DomainQuestion>,\n): FactoryCallPlanMutation[] {\n const out: FactoryCallPlanMutation[] = [];\n for (const q of questions) {\n const answer = answers[q.id];\n if (answer === undefined || answer === null) continue;\n out.push(...answerToMutations(q.mutationTemplate, answer, q));\n }\n return out;\n}\n\nexport function answerToMutations(\n template: FactoryCallPlanMutationTemplate,\n answer: DomainQuestionAnswer,\n _question: DomainQuestion,\n): FactoryCallPlanMutation[] {\n switch (template.kind) {\n case 'set-orbital-entity-name': {\n if (typeof answer !== 'string' || answer.length === 0) return [];\n return [\n {\n kind: 'set-orbital-entity-name',\n orbitalName: template.orbitalName,\n name: answer,\n },\n ];\n }\n case 'set-orbital-entity-fields': {\n if (!isEntityFieldArray(answer)) return [];\n if (answer.length === 0) return [];\n return [\n {\n kind: 'set-orbital-entity-fields',\n orbitalName: template.orbitalName,\n fields: answer,\n },\n ];\n }\n case 'set-orbital-persistence': {\n if (!isPersistence(answer)) return [];\n return [\n {\n kind: 'set-orbital-persistence',\n orbitalName: template.orbitalName,\n persistence: answer,\n },\n ];\n }\n case 'set-orbital-collection': {\n if (typeof answer !== 'string' || answer.length === 0) return [];\n return [\n {\n kind: 'set-orbital-collection',\n orbitalName: template.orbitalName,\n collection: answer,\n },\n ];\n }\n case 'set-orbital-page-path': {\n if (typeof answer !== 'string' || answer.length === 0) return [];\n return [\n {\n kind: 'set-orbital-page-path',\n orbitalName: template.orbitalName,\n pageName: template.pageName,\n path: answer,\n },\n ];\n }\n case 'set-trait-override-config': {\n if (!isFactoryParamValue(answer)) return [];\n return [\n {\n kind: 'set-trait-override-config',\n orbitalName: template.orbitalName,\n traitName: template.traitName,\n key: template.configKey,\n value: answer,\n },\n ];\n }\n case 'add-extra-trait': {\n if (!isTraitReference(answer)) return [];\n return [\n {\n kind: 'add-extra-trait',\n orbitalName: template.orbitalName,\n trait: answer,\n },\n ];\n }\n case 'remove-extra-trait': {\n if (typeof answer !== 'string' || answer.length === 0) return [];\n return [\n {\n kind: 'remove-extra-trait',\n orbitalName: template.orbitalName,\n ref: answer,\n },\n ];\n }\n case 'set-rule': {\n if (typeof answer !== 'string') return [];\n if (answer !== 'yes') return [];\n const rule: RuleOverlayEntry = {\n id: `${template.capability}::${template.appliesTo.join(',')}`,\n capability: template.capability,\n description: `User accepted ${template.capability} for ${template.appliesTo.join(', ')}.`,\n appliesTo: template.appliesTo,\n };\n return [{ kind: 'set-rule', rule }];\n }\n case 'remove-rule': {\n return [{ kind: 'remove-rule', ruleId: template.ruleId }];\n }\n }\n}\n\nfunction isEntityFieldArray(\n a: DomainQuestionAnswer,\n): a is ReadonlyArray<EntityField> {\n if (!Array.isArray(a)) return false;\n for (const x of a) {\n if (typeof x !== 'object' || x === null) return false;\n if (!('name' in x) || !('type' in x)) return false;\n if (typeof x.name !== 'string' || typeof x.type !== 'string') return false;\n }\n return true;\n}\n\nfunction isPersistence(a: DomainQuestionAnswer): a is EntityPersistence {\n return (\n typeof a === 'string' &&\n (PERSISTENCE_VALUES as ReadonlyArray<string>).includes(a)\n );\n}\n\nfunction isFactoryParamValue(a: DomainQuestionAnswer): a is FactoryParamValue {\n if (a === null) return false;\n const t = typeof a;\n if (t === 'string' || t === 'number' || t === 'boolean') return true;\n if (Array.isArray(a)) return true;\n if (t === 'object') return true;\n return false;\n}\n\nfunction isTraitReference(a: DomainQuestionAnswer): a is TraitReference {\n if (typeof a !== 'object' || a === null || Array.isArray(a)) return false;\n if (!('ref' in a)) return false;\n return typeof a.ref === 'string';\n}\n","import type { EntityField } from '../types/field.js';\nimport type { TraitReference } from '../types/trait.js';\nimport type { EntityPersistence } from '../types/entity.js';\nimport type { RuleOverlay, RuleOverlayEntry } from './overlays.js';\nimport type { FactoryParamValue } from './types.js';\n\n/**\n * One slot the agent emits per orbital. Slim shape — agent-facing,\n * carries only what factory dispatch needs. The studio renders forms\n * over this; the projector turns it into a `FactoryCallSite`.\n */\nexport interface OrbitalCallInput {\n orbitalName: string;\n organism?: string;\n orbital?: string;\n entityName?: string;\n entityFields?: ReadonlyArray<EntityField>;\n persistence?: EntityPersistence;\n collection?: string;\n pagePaths?: Readonly<Record<string, string>>;\n traitOverlay?: Readonly<\n Record<\n string,\n {\n config?: Readonly<Record<string, FactoryParamValue>>;\n linkedEntity?: string;\n name?: string;\n }\n >\n >;\n extraTraits?: ReadonlyArray<TraitReference>;\n}\n\n/**\n * Discriminated union of typed edits. Each variant carries only the\n * payload pieces that change. The reducer is total over the union.\n */\nexport type FactoryCallPlanMutation =\n | {\n kind: 'set-orbital-entity-fields';\n orbitalName: string;\n fields: ReadonlyArray<EntityField>;\n }\n | { kind: 'set-orbital-entity-name'; orbitalName: string; name: string }\n | {\n kind: 'set-orbital-persistence';\n orbitalName: string;\n persistence: EntityPersistence;\n }\n | { kind: 'set-orbital-collection'; orbitalName: string; collection: string }\n | {\n kind: 'set-orbital-page-path';\n orbitalName: string;\n pageName: string;\n path: string;\n }\n | {\n kind: 'set-trait-override-config';\n orbitalName: string;\n traitName: string;\n key: string;\n value: FactoryParamValue;\n }\n | {\n kind: 'add-extra-trait';\n orbitalName: string;\n trait: TraitReference;\n }\n | { kind: 'remove-extra-trait'; orbitalName: string; ref: string }\n | { kind: 'set-rule'; rule: RuleOverlayEntry }\n | { kind: 'remove-rule'; ruleId: string };\n\n/**\n * State shape the reducer operates on. Mirrors the slice of the\n * agent's analysis result that incremental edits target.\n */\nexport interface FactoryCallPlanState {\n orbitals: ReadonlyArray<OrbitalCallInput>;\n ruleOverlay?: RuleOverlay;\n}\n\n/**\n * Immutable reducer. Returns a new state; never mutates input.\n */\nexport function applyFactoryCallPlanMutation(\n state: FactoryCallPlanState,\n m: FactoryCallPlanMutation,\n): FactoryCallPlanState {\n switch (m.kind) {\n case 'set-orbital-entity-fields':\n return patchOrbital(state, m.orbitalName, (o) => ({\n ...o,\n entityFields: m.fields,\n }));\n case 'set-orbital-entity-name':\n return patchOrbital(state, m.orbitalName, (o) => ({\n ...o,\n entityName: m.name,\n }));\n case 'set-orbital-persistence':\n return patchOrbital(state, m.orbitalName, (o) => ({\n ...o,\n persistence: m.persistence,\n }));\n case 'set-orbital-collection':\n return patchOrbital(state, m.orbitalName, (o) => ({\n ...o,\n collection: m.collection,\n }));\n case 'set-orbital-page-path':\n return patchOrbital(state, m.orbitalName, (o) => ({\n ...o,\n pagePaths: { ...(o.pagePaths ?? {}), [m.pageName]: m.path },\n }));\n case 'set-trait-override-config':\n return patchOrbital(state, m.orbitalName, (o) => {\n const overlay = o.traitOverlay ?? {};\n const existing = overlay[m.traitName] ?? {};\n const existingConfig = existing.config ?? {};\n return {\n ...o,\n traitOverlay: {\n ...overlay,\n [m.traitName]: {\n ...existing,\n config: { ...existingConfig, [m.key]: m.value },\n },\n },\n };\n });\n case 'add-extra-trait':\n return patchOrbital(state, m.orbitalName, (o) => {\n const existing = o.extraTraits ?? [];\n if (existing.some((t) => t.ref === m.trait.ref)) return o;\n return { ...o, extraTraits: [...existing, m.trait] };\n });\n case 'remove-extra-trait':\n return patchOrbital(state, m.orbitalName, (o) => ({\n ...o,\n extraTraits: (o.extraTraits ?? []).filter((t) => t.ref !== m.ref),\n }));\n case 'set-rule': {\n const rules = state.ruleOverlay?.rules ?? [];\n const idx = rules.findIndex((r) => r.id === m.rule.id);\n const next = idx >= 0\n ? rules.map((r, i) => (i === idx ? m.rule : r))\n : [...rules, m.rule];\n return {\n ...state,\n ruleOverlay: { ...(state.ruleOverlay ?? { rules: [] }), rules: next },\n };\n }\n case 'remove-rule': {\n const rules = state.ruleOverlay?.rules ?? [];\n const next = rules.filter((r) => r.id !== m.ruleId);\n return {\n ...state,\n ruleOverlay: { ...(state.ruleOverlay ?? { rules: [] }), rules: next },\n };\n }\n }\n}\n\nfunction patchOrbital(\n state: FactoryCallPlanState,\n orbitalName: string,\n patch: (o: OrbitalCallInput) => OrbitalCallInput,\n): FactoryCallPlanState {\n return {\n ...state,\n orbitals: state.orbitals.map((o) =>\n o.orbitalName === orbitalName ? patch(o) : o,\n ),\n };\n}\n","/**\n * FactorySignature → JsonSchema generator.\n *\n * Walks a resolved `FactorySignature` (post `inheritCallSiteOverrideTypes`)\n * and emits a JSON Schema for the corresponding `AnalysisOrbitalParams`\n * shape: `entityName / pagePath / fields / traitOverrides / extraTraits\n * / pages / theme`. The `traitOverrides` property is the densest part — one\n * entry per trait with a typed `config` sub-schema reflecting\n * `overridableConfigKeys` (type + enum + items + properties + label +\n * synonyms metadata).\n *\n * The output is consumed by V2's tool-calling layer\n * (`@almadar-io/agent`'s coordinator + per-orbital subagent) via\n * OpenAI's `tool.parameters` with `strict: true` — the LLM is masked\n * to the schema and physically cannot emit unknown trait names,\n * invented knob keys, or out-of-set enum values.\n *\n * `additionalProperties: false` is set at every level so unknown keys\n * are rejected. Inherited descriptive metadata (label, description,\n * synonyms) flows into `description` / `x-label` / `x-synonyms`\n * extension keywords so studio UIs + prompt rendering can use the\n * same single artifact.\n */\nimport { getAllPatternTypes } from '../patterns/helpers/prompt-helpers.js';\nimport { persistenceModeAllowsOverrides } from '../types/entity.js';\nimport { UI_SLOTS } from '../types/effect.js';\nimport type { EntityField } from '../types/field.js';\nimport type {\n FactoryConfigParam,\n FactoryParamValue,\n FactorySignature,\n FactoryTraitSignature,\n JsonSchema,\n JsonSchemaType,\n JsonValue,\n} from './types.js';\n\n// ============================================================================\n// Top-level: signature → params schema\n// ============================================================================\n\nexport function signatureToParamsSchema(\n signature: FactorySignature,\n options?: { readonly themeNames?: readonly string[] },\n): JsonSchema {\n // `trait`-typed knobs must hold `@trait.<TraitName>` naming a trait on\n // THIS orbital — the exact contract rabit's `validateTraitTypedConfigRefs`\n // enforces at fill time with a retry. Baking the same values as an enum\n // makes the invalid reference inexpressible instead of caught-and-retried\n // (SCAN-TRAITREF-KNOB-1: the fill spent its attempts on\n // `sidebarTrait = \"AuthorDirectory\"` and the HIT demoted).\n const traitRefValues = signature.traits.map((t) => `@trait.${t.name}`).sort();\n const traitProps: { [key: string]: JsonSchema } = {};\n for (const trait of signature.traits) {\n // An imported trait is carried, not overridable at the call site.\n if (trait.importedFrom !== undefined) continue;\n // A trait can never be its OWN content/sidebar slot — the compiler rejects\n // it as `ORB_BINDING_TRAIT_SELF_REFERENCE`. Offering it is an always-invalid\n // value in a closed enum: measured 1,238 of 1,238 trait-typed knobs carried\n // their own trait, and a fill that picked it demoted a factory HIT\n // (std-lms/AppointmentPolicyFromStdOrbital). Excluded per-trait rather than\n // globally — a SIBLING trait remains a legitimate value.\n const selectableRefs = traitRefValues.filter((v) => v !== `@trait.${trait.name}`);\n const traitSchema = traitToOverrideSchema(trait, selectableRefs);\n if (traitSchema !== null) {\n traitProps[trait.name] = traitSchema;\n }\n }\n\n const allowPersistenceOverride = persistenceModeAllowsOverrides(\n signature.entities[0]?.persistence,\n signature.entities[0]?.dataBearing ?? false,\n );\n\n const properties: { [key: string]: JsonSchema } = {\n entityName: {\n type: 'string',\n description: 'PascalCase singular entity rename (e.g. \"Listing\", \"Member\"). Renames the DOMAIN concept and rewrites every `@Entity.*` reference. Use this when the user wants to rename the THING, not where it\\'s stored.',\n },\n pagePath: {\n type: 'string',\n description: \"URL path override for the orbital's first page.\",\n },\n fields: {\n type: 'array',\n description: 'Extra entity fields appended to the canonical entity. Caller wins on name collision.',\n items: ENTITY_FIELD_SCHEMA,\n },\n traitOverrides: Object.keys(traitProps).length > 0\n ? {\n type: 'object',\n additionalProperties: false,\n description:\n 'Per-trait knob overrides keyed on the canonical trait name. Each value can include `config` (knob values), `linkedEntity` (rebind), `events` (per-key rename map), `listens` (cross-orbital subscriptions), `emitsScope` (`internal` keeps emits local; `external` lets sibling orbitals listen), and `name` (rename the inlined trait). Only the traits + knobs shown here are valid — the schema rejects unknown keys.',\n properties: traitProps,\n }\n : { type: 'object', additionalProperties: false, properties: {} },\n extraTraits: {\n type: 'array',\n description: 'Sibling traits to compose beyond the factory-authored stack.',\n items: EXTRA_TRAIT_SCHEMA,\n },\n pages: {\n type: 'array',\n description: 'Per-page overrides keyed by canonical page name.',\n items: PAGE_OVERRIDE_SCHEMA,\n },\n theme: {\n type: 'string',\n // Theme names are injected by the caller rather than harvested from\n // `@almadar-ui/themes/*.css` — core is UPSTREAM of `@almadar/ui`, which\n // owns the theme CSS, and cannot read the filesystem to discover it.\n ...(options?.themeNames !== undefined && options.themeNames.length > 0\n ? { enum: [...options.themeNames] }\n : {}),\n description:\n 'Theme key — the full `data-theme` value applied to the layout root (e.g. linear-clean-light, terminal-dark, game-adventure-dark). Plan-level: pick ONE for the whole app — it is threaded to every orbital. Omit to leave the factory default.',\n },\n };\n\n if (signature.config && signature.config.length > 0) {\n const configProps: { [key: string]: JsonSchema } = {};\n for (const knob of signature.config) {\n configProps[knob.key] = knobToSchema(knob, undefined, traitRefValues);\n }\n properties.config = {\n type: 'object',\n additionalProperties: false,\n description: \"This orbital's own declared knobs (Orbital.config). Only the keys shown are valid.\",\n properties: configProps,\n };\n }\n\n if (allowPersistenceOverride) {\n properties.collection = {\n type: 'string',\n description: 'Override the persistence collection / table name. Defaults to `plural(entityName).toLowerCase()`. Use this when the user names the database/table/storage location (\"save them under X\", \"the table is called X\", \"in our database it\\'s X\") — NOT when they rename the domain concept (that\\'s `entityName`).',\n };\n properties.persistence = {\n type: 'string',\n enum: ['persistent', 'runtime'],\n description: 'Override the entity persistence mode. `persistent` = stored in the configured backend; `runtime` = in-memory session-scoped only.',\n };\n }\n\n const schema: JsonSchema = {\n type: 'object',\n additionalProperties: false,\n description: `Typed params for ${signature.organism} / ${signature.orbital}. Empty {} = factory defaults.`,\n properties,\n };\n assertNoUnsatisfiableEnum(schema, `${signature.organism}/${signature.orbital}`);\n return schema;\n}\n\n/**\n * The standing form of the self-reference bug: **a closed enum must not be\n * empty.** An empty `enum` permits nothing, so every value the model can\n * produce is rejected and the HIT demotes with no path back — strictly worse\n * than a wrong default, and invisible because each individual construct is\n * still legal JSON Schema.\n *\n * This is deliberately the GENERAL check rather than a second per-slot filter.\n * Each enum here is built by projecting one candidate list across many slots\n * (traits, entities, events, patterns, themes), and every such projection can\n * narrow to nothing for some signature — the trait case did, at 1,238 of 1,238\n * offers, and was found only because a scan happened to trip on it. Anything\n * that empties a candidate set now fails the bake loudly instead of shipping a\n * schema the compiler will always reject.\n */\nexport function assertNoUnsatisfiableEnum(node: JsonSchema, where: string, path = ''): void {\n if (Array.isArray(node.enum) && node.enum.length === 0) {\n throw new Error(\n `[signatures] ${where}: empty enum at \"${path || '<root>'}\" — the schema permits no value, ` +\n 'so every fill for this knob is rejected. Omit the knob instead of offering an unsatisfiable one.',\n );\n }\n for (const [key, child] of Object.entries(node.properties ?? {})) {\n assertNoUnsatisfiableEnum(child, where, path === '' ? key : `${path}.${key}`);\n }\n if (node.items !== undefined) assertNoUnsatisfiableEnum(node.items, where, `${path}[]`);\n}\n\n// ============================================================================\n// Trait override schema — one entry per trait in the signature\n// ============================================================================\n\nfunction traitToOverrideSchema(\n trait: FactoryTraitSignature,\n traitRefValues?: ReadonlyArray<string>,\n): JsonSchema | null {\n // Skip traits with zero overridable knobs AND no other override surface.\n // A `@rebindable` trait always has an override surface (linkedEntity), so\n // it keeps an entry even with zero config knobs.\n if (trait.overridableConfigKeys.length === 0 && trait.entityRebindable !== true) return null;\n\n const knobProps: { [key: string]: JsonSchema } = {};\n for (const knob of trait.overridableConfigKeys) {\n // A trait-typed knob on a trait with no SELECTABLE sibling has no valid\n // value at all — the only candidate was the enclosing trait, which the\n // compiler rejects as ORB_BINDING_TRAIT_SELF_REFERENCE. Omit it, the same\n // way `listens` is omitted for render-only traits below: an unsatisfiable\n // knob must not be offered.\n //\n // Without this the self-reference filter would silently DEGRADE such a\n // knob to a free string (`knobToSchema` only builds the enum when the set\n // is non-empty), reopening SCAN-TRAITREF-KNOB-1 for exactly the orbitals\n // the filter was meant to protect. `undefined` still means \"topology\n // unknown\" (legacy catalog) and keeps the free-string surface; only a\n // DEFINED-and-empty set is unsatisfiable.\n if (knob.type === 'trait' && traitRefValues !== undefined && traitRefValues.length === 0) {\n continue;\n }\n knobProps[knob.key] = knobToSchema(knob, trait, traitRefValues);\n }\n\n // `linkedEntity` is ONLY offered for traits whose binding the atom author\n // marked `@rebindable`. For fixed-binding traits it's omitted entirely so\n // the LLM physically cannot author a rebind the validator would reject.\n // rabit narrows the value to a closed enum of the organism's entities.\n const properties: { [key: string]: JsonSchema } = {\n config: {\n type: 'object',\n additionalProperties: false,\n properties: knobProps,\n },\n };\n if (trait.entityRebindable === true) {\n properties.linkedEntity = {\n type: 'string',\n description: \"Rebind this trait to a different entity in the organism (rewrites every @entity.* / ref / fetch / persist binding inside it).\",\n };\n }\n\n // `listens[].triggers` must name an event THIS trait's own state machine\n // transitions on (ORB_X_LISTEN_TRIGGER_UNMATCHED otherwise). When the\n // signature carries the trait's topology, mask the LLM to it: enum the\n // triggers when transitions exist, and omit `listens` entirely for\n // render-only traits (zero transitions — no listen entry can ever be\n // valid; target the sibling trait that owns the transition instead).\n // Unknown topology (legacy catalogs) keeps the free-string surface.\n const triggersSchema: JsonSchema =\n trait.transitionEvents !== undefined && trait.transitionEvents.length > 0\n ? {\n type: 'string',\n enum: [...trait.transitionEvents],\n description: 'Local state-machine event fired when the subscription matches. Must be one of the events this trait\\'s own transitions already react to.',\n }\n : {\n type: 'string',\n description: 'Local state-machine event fired when the subscription matches.',\n };\n const listensProperty: { [key: string]: JsonSchema } =\n trait.transitionEvents !== undefined && trait.transitionEvents.length === 0\n ? {}\n : {\n listens: {\n type: 'array',\n items: {\n type: 'object',\n additionalProperties: false,\n required: ['event', 'triggers'],\n properties: {\n event: { type: 'string', description: 'Event key to subscribe to (bare name, no orbital prefix).' },\n triggers: triggersSchema,\n scope: { type: 'string', enum: ['internal', 'external'], description: '`internal` = same-orbital events. `external` = events from sibling orbitals (use this for cross-orbital reactivity).' },\n },\n },\n description: 'Replace this trait\\'s `listens` entirely. Empty array clears upstream listeners. For cross-orbital reactivity, add an entry with `scope: \"external\"` matching the source orbital\\'s emit event.',\n },\n };\n\n return {\n type: 'object',\n additionalProperties: false,\n description: `Override knobs for ${trait.name}.`,\n properties: {\n ...properties,\n name: {\n type: 'string',\n description: \"Rename the inlined trait at the call site. Does NOT change topology — just the trait's local name.\",\n },\n events: {\n type: 'object',\n additionalProperties: { type: 'string' },\n description: 'Per-key event rename map (e.g. `{ \"OPEN\": \"ADD_ITEM\" }`). Rewrites the events array, transition triggers, emit/listen event keys, and `[\"emit\", X]` SExpression literals inside the trait.',\n },\n ...listensProperty,\n emitsScope: {\n type: 'string',\n enum: ['internal', 'external'],\n description: '`internal` = emits stay local to this orbital. `external` = sibling orbitals can listen. Set to `external` when another orbital needs to react to this trait\\'s events (counter updates, list refreshes, badges, etc.).',\n },\n },\n };\n}\n\n// ============================================================================\n// Knob schema — FactoryConfigParam → JsonSchema for one knob\n// ============================================================================\n\nfunction knobToSchema(\n knob: FactoryConfigParam,\n trait?: FactoryTraitSignature,\n traitRefValues?: ReadonlyArray<string>,\n): JsonSchema {\n const out: JsonSchema = {};\n\n // Map the knob's declared type tag to a JSON Schema type.\n const baseType = mapKnobType(knob.type);\n if (baseType !== null) out.type = baseType;\n\n // Enum constraint — knob.enumValues becomes JSON Schema's `enum`.\n if (knob.enumValues && knob.enumValues.length > 0) {\n out.enum = [...knob.enumValues];\n // If type wasn't already string-ish, pin it to string for enum.\n if (!out.type) out.type = 'string';\n }\n\n // `slot`-typed knobs are a CLOSED registry (UI_SLOTS) — unconstrained,\n // the fill invents values like 'inline' that hard-fail the validator\n // (ORB_T_INVALID_SLOT_DEFAULT) and demote the whole HIT. Same posture\n // as the listens-triggers enum: constrain at the schema so an invalid\n // value can't reach the factory.\n if (knob.type === 'slot' && out.enum === undefined) {\n out.enum = [...UI_SLOTS];\n }\n\n // `pattern`-typed knobs are the same closed-registry shape as slots —\n // unconstrained, the fill invents names like 'full' that hard-fail\n // ORB_T_INVALID_PATTERN_DEFAULT + ORB_RUI_INVALID_PATTERN and demote the\n // HIT (SCAN-PATTERN-KNOB-1, organism-scan run12). Enum over the pattern\n // registry's type names; same self-consistency guard as the other pins.\n if (knob.type === 'pattern' && out.enum === undefined) {\n const patternTypes: readonly string[] = getAllPatternTypes();\n const selfConsistent =\n typeof knob.default !== 'string' ||\n knob.default === '' ||\n patternTypes.includes(knob.default);\n if (patternTypes.length > 0 && selfConsistent) {\n out.enum = [...patternTypes].sort();\n }\n }\n\n // `trait`-typed knobs: enum over the orbital's canonical `@trait.<name>`\n // references — the same value set `validateTraitTypedConfigRefs` accepts.\n // Same guards as the other reference pins: skip when unavailable or when\n // the knob's own non-empty default is missing from the set.\n if (\n knob.type === 'trait' &&\n out.enum === undefined &&\n traitRefValues !== undefined &&\n traitRefValues.length > 0\n ) {\n const selfConsistent =\n typeof knob.default !== 'string' ||\n knob.default === '' ||\n traitRefValues.includes(knob.default);\n if (selfConsistent) {\n out.enum =\n typeof knob.default === 'string' && knob.default === ''\n ? ['', ...traitRefValues]\n : [...traitRefValues];\n }\n }\n\n // `event`-DECLARED knobs (the `.lolo` type, never inferred) reference an\n // event in the owning trait's vocabulary — unconstrained, the fill\n // invents literals like 'note.search' that fail\n // ORB_T_INVALID_EVENT_DEFAULT and demote the HIT (SCAN-EVENT-KNOB-1).\n // Enum = the trait's event union from the signature, plus '' (the\n // validator's default-off outlet). Canonical names stay correct under\n // call-site renames because the inline pass rename-folds event-typed\n // knob values (event_typed_knob_rename_fold.rs). Guards: skip when the\n // union is empty (vacuous, compiler parity) or when the knob's own\n // non-empty default is missing from it (an enum that forbids its own\n // default is wrong by construction).\n //\n // A-UNIFY: a DEFINER knob (A-UNIFY spells it `: event` same as a\n // reference knob) is exempt — its value CREATES the event name rather\n // than referencing one, so pinning it to the trait's existing vocabulary\n // would forbid the very name it's meant to introduce. Left UNPINNED is\n // deliberate and correct: any name is valid by construction, a definer\n // cannot go stale. Do not \"fix\" this back to a pin.\n const isDefinerKnob = trait?.definerKnobs?.includes(knob.key) ?? false;\n if (knob.type === 'event' && isDefinerKnob) {\n out['x-role'] = 'definer';\n }\n if (knob.type === 'event' && !isDefinerKnob && out.enum === undefined && trait !== undefined) {\n const vocabulary = new Set<string>([\n ...trait.emittedEvents,\n ...trait.listenedEvents,\n ...(trait.transitionEvents ?? []),\n ]);\n vocabulary.delete('');\n const selfConsistent =\n typeof knob.default !== 'string' ||\n knob.default === '' ||\n vocabulary.has(knob.default);\n if (vocabulary.size > 0 && selfConsistent) {\n out.enum = ['', ...[...vocabulary].sort()];\n }\n }\n\n // Recursive shape for arrays: `items` shape from EntityField.\n if (knob.items !== undefined) {\n out.items = entityFieldToSchema(knob.items);\n if (!out.type) out.type = 'array';\n }\n\n // Recursive shape for objects / structs.\n if (knob.properties !== undefined && Object.keys(knob.properties).length > 0) {\n const props: { [key: string]: JsonSchema } = {};\n for (const [k, ef] of Object.entries(knob.properties)) {\n props[k] = entityFieldToSchema(ef);\n }\n out.properties = props;\n if (!out.type) out.type = 'object';\n }\n\n // Default value (if any) — passes through as JsonValue.\n if (knob.default !== undefined) {\n out.default = toJsonValue(knob.default);\n }\n\n // Descriptive metadata — surfaced for prompt rendering + studio UIs.\n if (knob.description) out.description = knob.description;\n if (knob.label) out['x-label'] = knob.label;\n if (knob.synonyms) out['x-synonyms'] = knob.synonyms;\n if (knob.tier) out['x-tier'] = knob.tier;\n\n return out;\n}\n\n// ============================================================================\n// EntityField → JsonSchema (used by knob.items / knob.properties / fields)\n// ============================================================================\n\nfunction entityFieldToSchema(field: EntityField): JsonSchema {\n // A union's `properties` are its VARIANTS by name, not members: offer one\n // closed shape per variant so a value is exactly one of them.\n if (field.type === 'union') {\n const variants = field.values\n .map((name) => field.properties?.[name])\n .filter((v): v is EntityField => v !== undefined);\n if (variants.length === 0) return {};\n return { oneOf: variants.map((v) => ({ ...entityFieldToSchema(v), additionalProperties: false })) };\n }\n const out: JsonSchema = {};\n const baseType = mapEntityFieldType(field.type);\n if (baseType !== null) out.type = baseType;\n\n // Enum / scalar vocabulary hint — both `enum` and scalar variants\n // carry an optional `values: string[]` in the discriminated union.\n if (\n (field.type === 'enum' ||\n field.type === 'string' ||\n field.type === 'number' ||\n field.type === 'boolean' ||\n field.type === 'date' ||\n field.type === 'timestamp' ||\n field.type === 'datetime') &&\n Array.isArray(field.values) &&\n field.values.length > 0\n ) {\n out.enum = field.values.filter(isEnumLeaf);\n if (!out.type) out.type = 'string';\n }\n if (field.type === 'array' && field.items !== undefined) {\n out.items = entityFieldToSchema(field.items);\n if (!out.type) out.type = 'array';\n }\n // Struct shape — a named struct like `[ItemAction]` lowers to an object\n // EntityField whose `properties` carry the per-field sub-tree with\n // `required` flags. Projecting them (plus `required`) lets the ajv\n // contract boundary reject a wrong field name (e.g. `action` instead of\n // `event`) at fill time instead of the factory type-check failing the\n // build afterwards and demoting the orbital.\n if (field.properties !== undefined && Object.keys(field.properties).length > 0) {\n const props: { [key: string]: JsonSchema } = {};\n const required: string[] = [];\n for (const [k, ef] of Object.entries(field.properties)) {\n props[k] = entityFieldToSchema(ef);\n if (ef.required === true) required.push(k);\n }\n out.properties = props;\n if (required.length > 0) out.required = required;\n if (!out.type) out.type = 'object';\n }\n if (field.default !== undefined) {\n out.default = toJsonValue(field.default);\n }\n return out;\n}\n\nfunction isEnumLeaf(v: JsonValue): v is string | number | boolean {\n return typeof v === 'string' || typeof v === 'number' || typeof v === 'boolean';\n}\n\n// ============================================================================\n// Type mappers\n// ============================================================================\n\nfunction mapKnobType(knobType: string): JsonSchemaType | null {\n // Strip array bracket wrapper for `[T]` types.\n if (knobType.startsWith('[') && knobType.endsWith(']')) return 'array';\n switch (knobType) {\n case 'string':\n return 'string';\n case 'number':\n case 'integer':\n case 'float':\n return knobType === 'integer' ? 'integer' : 'number';\n case 'boolean':\n case 'bool':\n return 'boolean';\n case 'object':\n // An orbital value is `{ behavior, orbital, …import body }` on the wire; a behavior value is `{ behavior }`.\n case 'orbital':\n case 'behavior':\n return 'object';\n case 'array':\n return 'array';\n case 'enum':\n return 'string';\n // String-valued reference tags: a trait ref is \"@trait.<Name>\", a\n // slot/pattern/icon/asset is a registry name, an event is an event\n // key, a date is an ISO string. These were mis-emitted as `object`\n // (11k knobs catalog-wide carried an object type with a string\n // default), which was harmless while tool schemas were advisory but\n // breaks hard validation.\n case 'trait':\n case 'slot':\n case 'pattern':\n case 'secret':\n case 'icon':\n case 'asset':\n case 'event':\n case 'EventAddress':\n case 'CallKey':\n case 'field':\n case 'date':\n return 'string';\n case 'render-ui':\n // First-class render-ui SExpr tree (Layer 3 variant-body knob).\n // The runtime substitutes the value into the parent atom's\n // `(render-ui main @config.X)` body verbatim. Schema-wise it's a\n // recursive object with `type: \"<pattern-name>\"` + nested\n // `children`; for LLM JSON Schema we surface it as `object` and\n // rely on the knob description + pattern-registry awareness for\n // shape guidance.\n return 'object';\n // Polymorphic values: a `node` accepts a string leaf OR a render-ui\n // tree; `json`/`unknown` carry arbitrary JSON. No `type` — the\n // schema stays structurally honest instead of over-constraining.\n case 'node':\n case 'json':\n case 'unknown':\n return null;\n default:\n // Custom struct types (e.g. `FormatOption`) — `knobToSchema` pins\n // `object` iff `knob.properties` captured a shape; otherwise the\n // knob stays untyped rather than claiming a shape we don't know.\n return null;\n }\n}\n\nexport function mapEntityFieldType(fieldType: string): JsonSchemaType | null {\n switch (fieldType) {\n case 'string':\n case 'date':\n case 'timestamp':\n case 'datetime':\n // JSON Schema has no email/url/phone/uuid/image primitive — the declared\n // domain is carried on the signature's own `type` field (see\n // `asSchemaFieldType`), not here. This maps to the WIRE shape only.\n case 'email':\n case 'url':\n case 'phone':\n case 'uuid':\n case 'image':\n case 'bytes':\n return 'string';\n case 'number':\n case 'instant':\n return 'number';\n case 'boolean':\n return 'boolean';\n case 'array':\n return 'array';\n case 'object':\n case 'relation':\n case 'orbital':\n case 'behavior':\n return 'object';\n case 'enum':\n return 'string';\n case 'trait':\n case 'slot':\n case 'pattern':\n case 'secret':\n return 'string';\n // Phase B (SCAN-EVENT-KNOB-2): event-name reference — a string at the\n // wire level, same as `mapKnobType`'s `case 'event'` (that asymmetry\n // — this function fell to `default: null`, leaving struct-field\n // `event` members with NO json-schema type — was the bug).\n case 'event':\n case 'EventAddress':\n case 'CallKey':\n case 'field':\n return 'string';\n // Polymorphic renderable content: a node accepts a string leaf OR a\n // render-ui tree — no JSON-Schema `type` constraint, mirroring\n // `mapKnobType`'s `case 'node'`. (The default would return null too;\n // explicit for parity and self-documentation.)\n case 'node':\n return null;\n default:\n return null;\n }\n}\n\n// ============================================================================\n// Coerce arbitrary value into JsonValue (no unknown leaks)\n// ============================================================================\n\n/**\n * Widen the two JSON-shaped value types the signature carries\n * (`FactoryConfigParam.default` is `FactoryParamValue`, `EntityField.default`\n * is `JsonValue`) into the mutable `JsonValue` a schema `default` holds.\n *\n * Typed as their union rather than `unknown`: both are already JSON by\n * construction, so no escape hatch is needed and the recursion stays checked.\n * Non-finite numbers become `null` because `NaN`/`Infinity` have no JSON\n * encoding and would serialise as `null` anyway — better to say so here than\n * to let `JSON.stringify` decide silently.\n */\nfunction toJsonValue(value: FactoryParamValue | JsonValue): JsonValue {\n if (value === null) return null;\n if (typeof value === 'string') return value;\n if (typeof value === 'number') return Number.isFinite(value) ? value : null;\n if (typeof value === 'boolean') return value;\n if (Array.isArray(value)) {\n return value.map(toJsonValue);\n }\n const out: { [key: string]: JsonValue } = {};\n for (const [k, v] of Object.entries(value)) {\n out[k] = toJsonValue(v);\n }\n return out;\n}\n\n// ============================================================================\n// Shared schemas for entity field / extra trait / page override entries\n// ============================================================================\n\n/**\n * Discriminated-union shape for an entity field. Each `oneOf` branch\n * pins `type` to a literal and lists its dependent required slots:\n * - `type === 'enum'` REQUIRES `values: string[]`\n * - `type === 'relation'` REQUIRES `relation: { entity, cardinality }`\n * - `type === 'array'` MAY carry `items` (optional for legacy\n * codegen emit; lolo + Rust validator handle typed-element cases)\n * - other scalars accept the base shape\n *\n * `additionalProperties: false` at every level rejects unknown keys at\n * the LLM tool-call layer. Mirrors `EntityField` discriminated union\n * from `@almadar/core` (8.6.2).\n */\nconst ENTITY_FIELD_BASE_PROPS = {\n name: { type: 'string' as JsonSchemaType, description: 'Field name (camelCase).' },\n required: { type: 'boolean' as JsonSchemaType },\n primaryKey: { type: 'boolean' as JsonSchemaType },\n intrinsic: { type: 'boolean' as JsonSchemaType },\n min: { type: 'number' as JsonSchemaType },\n max: { type: 'number' as JsonSchemaType },\n description: { type: 'string' as JsonSchemaType },\n synonyms: { type: 'string' as JsonSchemaType },\n mock: { type: 'string' as JsonSchemaType },\n mergedFrom: { type: 'string' as JsonSchemaType },\n projectedFrom: {\n type: 'object' as JsonSchemaType,\n additionalProperties: false,\n required: ['type'],\n properties: { type: { type: 'string' as JsonSchemaType }, field: { type: 'string' as JsonSchemaType } },\n },\n properties: { type: 'object' as JsonSchemaType, additionalProperties: { $ref: 'urn:almadar:entity-field#/$defs/field' } },\n values: { type: 'array' as JsonSchemaType, items: { type: 'string' as JsonSchemaType } },\n default: {\n type: ['string', 'number', 'boolean', 'null', 'array', 'object'] as ReadonlyArray<JsonSchemaType>,\n } as JsonSchema,\n};\n// Includes the semantic domains: without them an L1 factory HIT cannot express\n// an email field at all, so `fill_params` could never produce one.\nconst SCALAR_FIELD_TYPES: ReadonlyArray<string> = [\n 'string', 'number', 'int', 'boolean', 'date', 'timestamp', 'datetime', 'instant',\n 'email', 'url', 'phone', 'uuid', 'image', 'money',\n 'file', 'bytes', 'trait', 'slot', 'pattern', 'node', 'event', 'EventAddress', 'CallKey', 'SExpr',\n];\nconst SCALAR_FIELD_BRANCH: JsonSchema = {\n type: 'object',\n additionalProperties: false,\n required: ['name', 'type'],\n properties: {\n ...ENTITY_FIELD_BASE_PROPS,\n type: { type: 'string', enum: SCALAR_FIELD_TYPES, description: 'Field type tag.' },\n },\n};\nconst ENUM_FIELD_BRANCH: JsonSchema = {\n type: 'object',\n additionalProperties: false,\n required: ['name', 'type', 'values'],\n properties: {\n ...ENTITY_FIELD_BASE_PROPS,\n type: { type: 'string', enum: ['enum'], description: 'Enum field.' },\n values: {\n type: 'array',\n description: 'Closed string vocabulary. e.g. [\"active\",\"inactive\",\"pending\"].',\n minItems: 1,\n items: { type: 'string' },\n },\n },\n};\nconst RELATION_FIELD_BRANCH: JsonSchema = {\n type: 'object',\n additionalProperties: false,\n required: ['name', 'type', 'relation'],\n properties: {\n ...ENTITY_FIELD_BASE_PROPS,\n type: { type: 'string', enum: ['relation'], description: 'Relation (FK) field.' },\n relation: {\n type: 'object',\n additionalProperties: false,\n required: ['entity'],\n properties: {\n entity: { type: 'string', description: 'Sibling entity name (PascalCase singular).' },\n entityId: { type: 'string' },\n cardinality: { type: 'string', enum: ['one', 'many'] },\n field: { type: 'string' },\n onDelete: { type: 'string', enum: ['cascade', 'nullify', 'restrict'] },\n },\n description: 'Relation target. `cardinality: \"one\"` for FK (customerId → one Customer); \"many\" for collection (tags → many Tag).',\n },\n },\n};\nconst ARRAY_FIELD_BRANCH: JsonSchema = {\n type: 'object',\n additionalProperties: false,\n required: ['name', 'type'],\n properties: {\n ...ENTITY_FIELD_BASE_PROPS,\n type: { type: 'string', enum: ['array'], description: 'Array field.' },\n items: { $ref: 'urn:almadar:entity-field#/$defs/field' },\n },\n};\n// A nested structure within the entity: an `object` declares its members\n// (struct) or its value type (map). A shapeless `object` is not offered —\n// `orb validate` rejects it (ORB_T_GENERIC_TYPE_DEPRECATED).\nconst OBJECT_FIELD_BRANCH: JsonSchema = {\n type: 'object',\n additionalProperties: false,\n required: ['name', 'type'],\n anyOf: [{ required: ['properties'] }, { required: ['items'] }],\n properties: {\n ...ENTITY_FIELD_BASE_PROPS,\n type: { type: 'string', enum: ['object'], description: 'Struct members or map value shape.' },\n items: { $ref: 'urn:almadar:entity-field#/$defs/field' },\n },\n};\nconst UNION_FIELD_BRANCH: JsonSchema = {\n type: 'object',\n additionalProperties: false,\n required: ['name', 'type', 'values'],\n properties: {\n ...ENTITY_FIELD_BASE_PROPS,\n type: { type: 'string', enum: ['union'] },\n values: { ...ENTITY_FIELD_BASE_PROPS.values, minItems: 1 },\n },\n};\nconst TUPLE_FIELD_BRANCH: JsonSchema = {\n type: 'object',\n additionalProperties: false,\n required: ['name', 'type', 'properties'],\n properties: {\n ...ENTITY_FIELD_BASE_PROPS,\n type: { type: 'string', enum: ['tuple'] },\n properties: { ...ENTITY_FIELD_BASE_PROPS.properties, minProperties: 1 },\n },\n};\nconst ENTITY_FIELD_BRANCHES: ReadonlyArray<JsonSchema> = [\n SCALAR_FIELD_BRANCH,\n ENUM_FIELD_BRANCH,\n RELATION_FIELD_BRANCH,\n ARRAY_FIELD_BRANCH,\n OBJECT_FIELD_BRANCH,\n UNION_FIELD_BRANCH,\n TUPLE_FIELD_BRANCH,\n];\nexport const ENTITY_FIELD_SCHEMA: JsonSchema = {\n $id: 'urn:almadar:entity-field',\n oneOf: ENTITY_FIELD_BRANCHES,\n $defs: {\n field: {\n oneOf: ENTITY_FIELD_BRANCHES.map(branch => ({ ...branch, required: branch.required?.filter(key => key !== 'name') })),\n },\n },\n};\n\nconst EXTRA_TRAIT_SCHEMA: JsonSchema = {\n type: 'object',\n additionalProperties: false,\n required: ['from', 'as', 'ref'],\n properties: {\n from: { type: 'string', description: 'Registry path (e.g. std/behaviors/std-approval-request).' },\n as: { type: 'string', description: 'Local alias used in `ref`.' },\n ref: { type: 'string', description: 'Trait reference (Alias.traits.X).' },\n name: { type: 'string', description: 'Optional rename of the inlined trait.' },\n linkedEntity: { type: 'string', description: 'Optional entity rebinding.' },\n emitsScope: { type: 'string', enum: ['internal', 'external'] },\n },\n};\n\nconst PAGE_OVERRIDE_SCHEMA: JsonSchema = {\n type: 'object',\n additionalProperties: false,\n required: ['name'],\n properties: {\n name: { type: 'string', description: 'Canonical page name from the orbital.' },\n path: { type: 'string', description: 'URL path override.' },\n linkedEntity: { type: 'string', description: 'Rebind the primary entity.' },\n },\n};\n","/**\n * L3 composition factory — a typed CompositionSpec (the entity, the blocks with their\n * declared config, a layout of stacks holding block slots, and event wiring between blocks)\n * is checked against each block's declared contract, then assembled into an orbital from the\n * existing builders. The LLM fills the spec; it never authors `.lolo`.\n */\nimport { makeOrbitalWithUses, makeTraitRef } from '../builders.js';\nimport { makeLayoutTrait, makeSlot } from '../builders/layout-trait.js';\nimport type { AnyPatternConfig } from '../patterns/index.js';\nimport { controlBody } from '../patterns/helpers/render-ui-pattern-types.js';\nimport type { Effect } from '../types/effect.js';\nimport type { SExpr } from '../types/expression.js';\nimport { configRefEventKnob, isCallSiteConfigDeclaration, isInlineTrait, mergeCallSiteConfigOverrides, resolveConfigRefEventName } from '../types/index.js';\nimport type { DeclaredTraitConfig, OrbitalDefinition, OrbitalEntity, Trait, TraitConfigValue, TraitEventListener, TraitRef, UseDeclaration } from '../types/index.js';\nimport type { FactoryParamValue } from './types.js';\n\nexport interface CompositionBlock {\n /** Local trait name in the composed orbital. */\n name: string;\n /** `uses` path of the behavior that owns the block (`std/behaviors/std-browse`). */\n from: string;\n /** `uses` alias. */\n as: string;\n /** The behavior's trait this block aliases. */\n trait: string;\n /** Rebind the block to an entity (only for a rebindable trait). */\n linkedEntity?: string;\n /** Call-site config, keys limited to the trait's declared knobs. */\n config?: Readonly<Record<string, FactoryParamValue>>;\n}\n\nexport type CompositionLayoutNode =\n | { kind: 'block'; block: string }\n | {\n kind: 'stack';\n direction?: 'vertical' | 'horizontal';\n gap?: string;\n align?: string;\n justify?: string;\n className?: string;\n children: ReadonlyArray<CompositionLayoutNode>;\n };\n\nexport interface CompositionWire {\n fromBlock: string;\n event: string;\n toBlock: string;\n trigger: string;\n}\n\nexport type CompositionEntity =\n | {\n kind: 'import';\n from: string;\n as: string;\n /** Upstream orbital that owns the entity and its rules. */\n orbital: string;\n entity: string;\n /** Upstream page path remapped onto the composition page. */\n page: string;\n only?: ReadonlyArray<string>;\n }\n | { kind: 'declare'; entity: OrbitalEntity };\n\nexport interface CompositionSpec {\n orbital: string;\n entity: CompositionEntity;\n blocks: ReadonlyArray<CompositionBlock>;\n layout: CompositionLayoutNode;\n wiring?: ReadonlyArray<CompositionWire>;\n page: { name: string; path: string };\n /** Inline traits an existing page carries, kept verbatim: placeable in the layout, never edited, never wired. */\n kept?: ReadonlyArray<Trait>;\n}\n\n/** What a block declares — read from its behavior's signature + registry trait by the caller. */\nexport interface CompositionBlockContract {\n configKeys: ReadonlyArray<string>;\n /** The trait's declared `config {}`; resolves `@config.<knob>` event names. */\n declaredConfig?: DeclaredTraitConfig;\n emits: ReadonlyArray<string>;\n /** Events the trait's transitions handle. */\n triggers: ReadonlyArray<string>;\n /** The trait's own listens (restated when a wire adds one: a reference's `listens` replaces the set). */\n listens: ReadonlyArray<TraitEventListener>;\n entityRebindable: boolean;\n /** Entity fields the block's own effects write (`set @entity.<field> …`). */\n setsFields?: ReadonlyArray<string>;\n /** The record a fixed-binding trait is bound to (a rebindable one takes the composition's). */\n linkedEntity?: string;\n}\n\nexport interface CompositionContext {\n block(from: string, trait: string): CompositionBlockContract | null;\n}\n\nexport type CompositionIssueCode =\n | 'unknown-block'\n | 'unknown-config-key'\n | 'unknown-event'\n | 'unknown-trigger'\n | 'layout-unknown-block'\n | 'unplaced-block'\n | 'not-rebindable'\n | 'duplicate-name'\n | 'alias-conflict'\n | 'unknown-wire-block'\n | 'missing-collection'\n | 'unknown-trait-ref'\n | 'entity-mismatch';\n\nexport interface CompositionIssue {\n code: CompositionIssueCode;\n path: string;\n message: string;\n}\n\nexport interface ResolvedBlockContract {\n contract: CompositionBlockContract;\n /** `@config.<knob>` event names with no value at this call site (dropped from the contract). */\n unresolved: string[];\n}\n\nfunction eventNamer(\n contract: CompositionBlockContract,\n config: Readonly<Record<string, FactoryParamValue>> | undefined,\n): (event: string) => string | undefined {\n const effective: Record<string, TraitConfigValue> = {};\n for (const [knob, field] of Object.entries(contract.declaredConfig ?? {})) {\n const override = config?.[knob];\n if (typeof override === 'string') effective[knob] = override;\n else if (field.default !== undefined) effective[knob] = field.default;\n }\n return (event) => {\n if (configRefEventKnob(event) === undefined) return event;\n const r = resolveConfigRefEventName(event, contract.declaredConfig, effective);\n return r.ok ? r.value : undefined;\n };\n}\n\n/**\n * The name an event (or trigger) takes under `toConfig`, given its name under `fromConfig`: the\n * declared `@config.<knob>` that produced it is resolved again, so a knob rename carries the wire.\n */\nexport function followEventName(\n contract: CompositionBlockContract,\n side: 'emits' | 'triggers',\n name: string,\n fromConfig: Readonly<Record<string, FactoryParamValue>> | undefined,\n toConfig: Readonly<Record<string, FactoryParamValue>> | undefined,\n): { ok: true; value: string } | { ok: false; message: string } {\n const before = eventNamer(contract, fromConfig);\n const after = eventNamer(contract, toConfig);\n const sources = contract[side].filter((e) => before(e) === name);\n if (sources.length === 0) return { ok: true, value: name };\n const values = [...new Set(sources.flatMap((e) => after(e) ?? []))];\n if (values.length > 1) return { ok: false, message: `${name} comes from ${sources.join(', ')}, which this block names differently (${values.join(', ')}) — wire one of those names` };\n return { ok: true, value: values[0]! };\n}\n\n/** A block's contract with every `@config.<knob>` event name resolved against its call-site config (folded over the declared defaults). */\nexport function resolveBlockContract(\n contract: CompositionBlockContract,\n config: Readonly<Record<string, FactoryParamValue>> | undefined,\n): ResolvedBlockContract {\n const unresolved: string[] = [];\n const named = eventNamer(contract, config);\n const resolve = (event: string): string | undefined => {\n const v = named(event);\n if (v === undefined && !unresolved.includes(event)) unresolved.push(event);\n return v;\n };\n const names = (events: ReadonlyArray<string>): string[] =>\n events.flatMap((e) => {\n const v = resolve(e);\n return v === undefined ? [] : [v];\n });\n const listens = contract.listens.flatMap((l): TraitEventListener[] => {\n const event = resolve(l.event);\n const triggers = resolve(l.triggers);\n return event === undefined || triggers === undefined ? [] : [{ ...l, event, triggers }];\n });\n return { contract: { ...contract, emits: names(contract.emits), triggers: names(contract.triggers), listens }, unresolved };\n}\n\n/** Whether a block can sit on a page about `record`: rebindable, unbound, or fixed to that record. */\nexport function bindsRecord(contract: CompositionBlockContract, record: string): boolean {\n return contract.entityRebindable || contract.linkedEntity === undefined || contract.linkedEntity === record;\n}\n\nfunction placedBlocks(node: CompositionLayoutNode, out: string[]): void {\n if (node.kind === 'block') out.push(node.block);\n else for (const child of node.children) placedBlocks(child, out);\n}\n\nexport function checkComposition(spec: CompositionSpec, ctx: CompositionContext): CompositionIssue[] {\n const issues: CompositionIssue[] = [];\n if (spec.entity.kind === 'declare' && spec.entity.entity.persistence === 'persistent' && !spec.entity.entity.collection) {\n issues.push({ code: 'missing-collection', path: 'entity.collection', message: `persistent entity ${spec.entity.entity.name} declares no collection` });\n }\n const contracts = new Map<string, CompositionBlockContract>();\n const names = new Set<string>();\n const aliases = new Map<string, string>();\n if (spec.entity.kind === 'import') aliases.set(spec.entity.as, spec.entity.from);\n for (const b of spec.blocks) {\n const at = `blocks.${b.name}`;\n if (names.has(b.name)) issues.push({ code: 'duplicate-name', path: at, message: `two blocks are named \"${b.name}\"` });\n names.add(b.name);\n const prior = aliases.get(b.as);\n if (prior !== undefined && prior !== b.from) {\n issues.push({ code: 'alias-conflict', path: `${at}.as`, message: `alias \"${b.as}\" already names ${prior}` });\n }\n aliases.set(b.as, b.from);\n const contract = ctx.block(b.from, b.trait);\n if (contract === null) {\n issues.push({ code: 'unknown-block', path: at, message: `${b.from} declares no trait ${b.trait}` });\n continue;\n }\n contracts.set(b.name, resolveBlockContract(contract, b.config).contract);\n for (const key of Object.keys(b.config ?? {})) {\n if (!contract.configKeys.includes(key)) {\n issues.push({ code: 'unknown-config-key', path: `${at}.config.${key}`, message: `${b.trait} declares no knob \"${key}\" (declares: ${contract.configKeys.join(', ')})` });\n }\n }\n const recordName = spec.entity.kind === 'import' ? spec.entity.entity : spec.entity.entity.name;\n if (!bindsRecord(contract, recordName)) {\n issues.push({\n code: 'entity-mismatch',\n path: at,\n message: `${b.trait} is bound to the record \"${contract.linkedEntity}\" and cannot be rebound — name this page's record \"${contract.linkedEntity}\" or use another part`,\n });\n }\n if (b.linkedEntity !== undefined && !contract.entityRebindable) {\n issues.push({ code: 'not-rebindable', path: `${at}.linkedEntity`, message: `${b.trait} has a fixed entity binding` });\n }\n }\n for (const b of spec.blocks) {\n const declared = ctx.block(b.from, b.trait)?.declaredConfig ?? {};\n for (const [key, value] of Object.entries(b.config ?? {})) {\n if (declared[key]?.type !== 'trait' || typeof value !== 'string') continue;\n const target = value.startsWith('@trait.') ? value.slice('@trait.'.length) : undefined;\n if (target === undefined || !names.has(target)) {\n issues.push({\n code: 'unknown-trait-ref',\n path: `blocks.${b.name}.config.${key}`,\n message: `${key} must be \"@trait.<block>\" naming a block of this composition (${[...names].join(', ')}), got \"${value}\"`,\n });\n }\n }\n }\n const keptNames = new Set<string>();\n for (const k of spec.kept ?? []) {\n if (names.has(k.name) || keptNames.has(k.name)) issues.push({ code: 'duplicate-name', path: `kept.${k.name}`, message: `two parts are named \"${k.name}\"` });\n keptNames.add(k.name);\n }\n const placed: string[] = [];\n placedBlocks(spec.layout, placed);\n for (const p of placed) {\n if (!names.has(p) && !keptNames.has(p)) issues.push({ code: 'layout-unknown-block', path: `layout.${p}`, message: `the layout places \"${p}\", which is not a block` });\n }\n // A block another block renders through a trait slot (`@trait.<name>` in its config) is placed there.\n const slotted = new Set<string>();\n const collectSlots = (v: FactoryParamValue): void => {\n if (typeof v === 'string') {\n if (v.startsWith('@trait.')) slotted.add(v.slice('@trait.'.length));\n } else if (Array.isArray(v)) {\n for (const x of v) collectSlots(x);\n } else if (typeof v === 'object' && v !== null) {\n for (const x of Object.values(v)) collectSlots(x);\n }\n };\n for (const b of spec.blocks) for (const v of Object.values(b.config ?? {})) collectSlots(v);\n for (const b of spec.blocks) {\n if (!placed.includes(b.name) && !slotted.has(b.name)) issues.push({ code: 'unplaced-block', path: `blocks.${b.name}`, message: `\"${b.name}\" is not placed in the layout` });\n }\n for (const [i, w] of (spec.wiring ?? []).entries()) {\n const at = `wiring.${i}`;\n const src = contracts.get(w.fromBlock);\n const dst = contracts.get(w.toBlock);\n if (!names.has(w.fromBlock) || !names.has(w.toBlock)) {\n issues.push({ code: 'unknown-wire-block', path: at, message: `wire ${w.fromBlock} → ${w.toBlock} names a missing block` });\n continue;\n }\n if (src !== undefined && !src.emits.includes(w.event)) {\n issues.push({ code: 'unknown-event', path: `${at}.event`, message: `${w.fromBlock} does not emit ${w.event} (emits: ${src.emits.join(', ')})` });\n }\n if (dst !== undefined && !dst.triggers.includes(w.trigger)) {\n issues.push({ code: 'unknown-trigger', path: `${at}.trigger`, message: `${w.toBlock} handles no ${w.trigger} (handles: ${dst.triggers.join(', ')})` });\n }\n }\n return issues;\n}\n\nfunction layoutTree(node: CompositionLayoutNode): AnyPatternConfig | string {\n if (node.kind === 'block') return makeSlot(node.block);\n return {\n type: 'stack',\n ...(node.direction !== undefined ? { direction: node.direction } : {}),\n ...(node.gap !== undefined ? { gap: node.gap } : {}),\n ...(node.align !== undefined ? { align: node.align } : {}),\n ...(node.justify !== undefined ? { justify: node.justify } : {}),\n ...(node.className !== undefined ? { className: node.className } : {}),\n children: node.children.map(layoutTree),\n };\n}\n\nfunction entityName(e: CompositionEntity): string {\n return e.kind === 'import' ? e.entity : e.entity.name;\n}\n\nexport type CompositionResult = { ok: true; orbital: OrbitalDefinition } | { ok: false; issues: CompositionIssue[] };\n\nexport function assembleComposition(spec: CompositionSpec, ctx: CompositionContext): CompositionResult {\n const issues = checkComposition(spec, ctx);\n if (issues.length > 0) return { ok: false, issues };\n const entity = entityName(spec.entity);\n const uses: UseDeclaration[] = [];\n const seen = new Set<string>();\n const addUse = (from: string, as: string): void => {\n if (seen.has(as)) return;\n seen.add(as);\n uses.push({ from, as });\n };\n if (spec.entity.kind === 'import') addUse(spec.entity.from, spec.entity.as);\n for (const b of spec.blocks) addUse(b.from, b.as);\n\n const root = layoutTree(spec.layout);\n const viewName = `${spec.orbital}View`;\n const view = makeLayoutTrait({\n name: viewName,\n linkedEntity: entity,\n renderUI: typeof root === 'string' ? { type: 'stack', children: [root] } : root,\n });\n\n const blockTraits: TraitRef[] = spec.blocks.map((b) => {\n const declared = ctx.block(b.from, b.trait);\n const contract = declared !== null ? resolveBlockContract(declared, b.config).contract : null;\n const wires = (spec.wiring ?? []).filter((w) => w.toBlock === b.name);\n const listens: TraitEventListener[] | undefined =\n wires.length > 0 && contract !== null\n ? [\n ...contract.listens,\n ...wires.map((w): TraitEventListener => ({ event: w.event, triggers: w.trigger, source: { kind: 'trait', trait: w.fromBlock } })),\n ]\n : undefined;\n const rebind = b.linkedEntity ?? (contract?.entityRebindable === true ? entity : undefined);\n return makeTraitRef({\n ref: `${b.as}.traits.${b.trait}`,\n name: b.name,\n ...(rebind !== undefined ? { linkedEntity: rebind } : {}),\n ...(b.config !== undefined\n ? { config: mergeCallSiteConfigOverrides({}, b.config) }\n : {}),\n ...(listens !== undefined ? { listens } : {}),\n });\n });\n\n if (spec.entity.kind === 'import') {\n const e = spec.entity;\n const orbital: OrbitalDefinition = {\n ...makeOrbitalWithUses({ name: spec.orbital, uses, entity: `${e.as}.orbitals.${e.orbital}.entity`, traits: [view, ...blockTraits, ...(spec.kept ?? [])] }),\n reference: {\n ref: `${e.as}.orbitals.${e.orbital}`,\n entity: e.entity,\n ...(e.only !== undefined ? { only: [...e.only] } : {}),\n pages: { [e.page]: spec.page.path },\n mounts: { [e.page]: [viewName] },\n },\n };\n return { ok: true, orbital };\n }\n return {\n ok: true,\n orbital: makeOrbitalWithUses({\n name: spec.orbital,\n uses,\n entity: spec.entity.entity,\n traits: [view, ...blockTraits, ...(spec.kept ?? [])],\n pages: [{ name: spec.page.name, path: spec.page.path, traits: [{ ref: viewName }] }],\n }),\n };\n}\n\n/** A block's contract, read off the atom's own registry trait. */\n/** `orbitalEntity`: the primary record of the orbital declaring `trait` — what a trait with no `->` binds. */\nexport function blockContractOf(trait: Trait, orbitalEntity?: string): CompositionBlockContract {\n const triggers: string[] = [];\n for (const t of trait.stateMachine?.transitions ?? []) if (!triggers.includes(t.event)) triggers.push(t.event);\n const sets = new Set<string>();\n const visitEffect = (effect: Effect | SExpr): void => {\n if (!Array.isArray(effect)) return;\n if (effect[0] === 'set' && typeof effect[1] === 'string' && effect[1].startsWith('@entity.')) {\n const field = effect[1].slice('@entity.'.length).split('.')[0];\n if (field !== undefined && field.length > 0) sets.add(field);\n }\n for (const child of controlBody(effect)) visitEffect(child);\n };\n for (const t of trait.stateMachine?.transitions ?? []) for (const e of t.effects ?? []) visitEffect(e);\n const linkedEntity = trait.linkedEntity ?? orbitalEntity;\n return {\n configKeys: Object.keys(trait.config ?? {}),\n ...(trait.config !== undefined ? { declaredConfig: trait.config } : {}),\n emits: (trait.emits ?? []).map((e) => e.event),\n triggers,\n listens: trait.listens ?? [],\n entityRebindable: trait.entityRebindable === true,\n setsFields: [...sets],\n ...(linkedEntity !== undefined ? { linkedEntity } : {}),\n };\n}\n\nfunction toParamValue(value: TraitConfigValue | undefined): FactoryParamValue | undefined {\n if (value === undefined || value === null) return undefined;\n if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') return value;\n if (Array.isArray(value)) {\n const out: FactoryParamValue[] = [];\n for (const v of value) {\n const p = toParamValue(v);\n if (p !== undefined) out.push(p);\n }\n return out;\n }\n if (typeof value === 'object') {\n const out: Record<string, FactoryParamValue> = {};\n for (const [k, v] of Object.entries(value)) {\n const p = toParamValue(v);\n if (p !== undefined) out[k] = p;\n }\n return out;\n }\n return undefined;\n}\n\n/**\n * An organism orbital broken into its parts: every trait reference whose alias the orbital\n * `uses` (aliases and lowered inline embeds alike) as a ready block, call-site config unwrapped.\n */\nexport function decomposeOrbital(orbital: OrbitalDefinition): CompositionBlock[] {\n const fromOf = new Map((orbital.uses ?? []).map((u) => [u.as, u.from]));\n const blocks: CompositionBlock[] = [];\n for (const t of orbital.traits) {\n if (typeof t === 'string' || isInlineTrait(t)) continue;\n const m = /^([A-Za-z_]\\w*)\\.traits\\.([A-Za-z_]\\w*)$/.exec(t.ref);\n if (m === null) continue;\n const from = fromOf.get(m[1]!);\n if (from === undefined) continue;\n const config: Record<string, FactoryParamValue> = {};\n for (const [key, entry] of Object.entries(t.config ?? {})) {\n const value = toParamValue(isCallSiteConfigDeclaration(entry) ? entry.default : entry);\n if (value !== undefined) config[key] = value;\n }\n blocks.push({\n name: t.name ?? m[2]!,\n from,\n as: m[1]!,\n trait: m[2]!,\n ...(t.linkedEntity !== undefined ? { linkedEntity: t.linkedEntity } : {}),\n ...(Object.keys(config).length > 0 ? { config } : {}),\n });\n }\n return blocks;\n}\n\ntype TraitRefObject = Extract<TraitRef, { ref: string }>;\n\nfunction isTraitRefObject(t: TraitRef): t is TraitRefObject {\n return typeof t !== 'string' && !isInlineTrait(t) && 'ref' in t;\n}\n\nfunction refListens(t: TraitRefObject): ReadonlyArray<TraitEventListener> {\n return t.listens ?? [];\n}\n\nexport type CompositionSpecOfResult = { ok: true; spec: CompositionSpec } | { ok: false; reason: string };\n\nfunction sameListen(a: TraitEventListener, b: TraitEventListener): boolean {\n const src = (l: TraitEventListener): string => (l.source?.kind === 'trait' ? `trait:${l.source.trait}` : JSON.stringify(l.source ?? null));\n return a.event === b.event && a.triggers === b.triggers && src(a) === src(b);\n}\n\n/**\n * A page built from trait references, read back as the composition it is: its blocks (the app\n * chrome left out — composition wraps the page itself), the page's trait order as the layout,\n * listens beyond a block's own contract as wiring, its entity and its page. A page carrying an\n * inline trait is no composition of blocks and is refused with the reason.\n */\nexport function compositionSpecOf(\n orbital: OrbitalDefinition,\n ctx: CompositionContext,\n chromeRefs: ReadonlySet<string>,\n): CompositionSpecOfResult {\n const kept: Trait[] = [];\n for (const t of orbital.traits) {\n if (typeof t === 'string') return { ok: false, reason: `trait \"${t}\" is a bare name, not a block reference` };\n if (isInlineTrait(t)) kept.push(t);\n }\n const refs = orbital.traits.filter(isTraitRefObject);\n const chromeNames = new Set(refs.filter((t) => chromeRefs.has(t.ref)).map((t) => t.name ?? t.ref));\n const blocks = decomposeOrbital(orbital).filter((b) => !chromeRefs.has(`${b.as}.traits.${b.trait}`));\n if (blocks.length !== refs.length - chromeNames.size) {\n return { ok: false, reason: 'a trait reference names no `uses` alias' };\n }\n const names = new Set(blocks.map((b) => b.name));\n const wiring: CompositionWire[] = [];\n for (const block of blocks) {\n const ref = refs.find((t) => (t.name ?? '') === block.name || (t.name === undefined && t.ref.endsWith(`.traits.${block.name}`)));\n const contract = ctx.block(block.from, block.trait);\n const own = contract !== null ? resolveBlockContract(contract, block.config).contract.listens : [];\n const listens = ref !== undefined ? refListens(ref) : [];\n for (const l of listens) {\n if (l.source?.kind !== 'trait' || !names.has(l.source.trait) || own.some((o) => sameListen(o, l))) continue;\n wiring.push({ fromBlock: l.source.trait, event: l.event, toBlock: block.name, trigger: l.triggers });\n }\n }\n let entity: CompositionEntity;\n let page: { name: string; path: string };\n let order: string[];\n if (typeof orbital.entity === 'object' && !('extends' in orbital.entity)) {\n entity = { kind: 'declare', entity: orbital.entity };\n const first = (orbital.pages ?? []).find((p) => typeof p !== 'string' && !('ref' in p) && typeof p.path === 'string');\n if (first === undefined || typeof first === 'string' || 'ref' in first) return { ok: false, reason: 'the orbital has no inline page' };\n page = { name: first.name, path: first.path };\n order = (first.traits ?? []).flatMap((t) => (typeof t === 'string' ? [t] : 'ref' in t && typeof t.ref === 'string' ? [t.ref] : []));\n } else {\n const reference = orbital.reference;\n const m = reference !== undefined ? /^([A-Za-z_]\\w*)\\.orbitals\\.([A-Za-z_]\\w*)$/.exec(reference.ref) : null;\n const from = m !== null ? (orbital.uses ?? []).find((u) => u.as === m[1])?.from : undefined;\n const mounted = Object.entries(reference?.mounts ?? {})[0];\n if (reference === undefined || m === null || from === undefined || reference.entity === undefined || mounted === undefined) {\n return { ok: false, reason: 'the orbital neither declares its entity nor imports one with a mounted page' };\n }\n const [upstream, traits] = mounted;\n entity = { kind: 'import', from, as: m[1]!, orbital: m[2]!, entity: reference.entity, page: upstream, ...(reference.only !== undefined ? { only: [...reference.only] } : {}) };\n page = { name: `${orbital.name}Page`, path: reference.pages?.[upstream] ?? upstream };\n order = [...traits];\n }\n const keptNames = new Set(kept.map((k) => k.name));\n const placed = order.filter((n) => names.has(n) || keptNames.has(n));\n for (const b of blocks) if (!placed.includes(b.name)) placed.push(b.name);\n return {\n ok: true,\n spec: {\n orbital: orbital.name,\n entity,\n blocks,\n layout: { kind: 'stack', direction: 'vertical', children: placed.map((block) => ({ kind: 'block', block })) },\n wiring,\n page,\n ...(kept.length > 0 ? { kept } : {}),\n },\n };\n}\n"]}
|
package/dist/chunk-QRHJUS3D.js
DELETED
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import { z } from 'zod';
|
|
2
|
-
|
|
3
|
-
// src/types/json.ts
|
|
4
|
-
var JsonValueSchema = z.lazy(
|
|
5
|
-
() => z.union([z.string(), z.number(), z.boolean(), z.null(), z.array(JsonValueSchema), z.record(z.string(), JsonValueSchema)])
|
|
6
|
-
);
|
|
7
|
-
function isJsonPrimitive(value) {
|
|
8
|
-
return value === null || typeof value === "string" || typeof value === "number" || typeof value === "boolean";
|
|
9
|
-
}
|
|
10
|
-
function isJsonObject(value) {
|
|
11
|
-
return value !== null && typeof value === "object" && !Array.isArray(value);
|
|
12
|
-
}
|
|
13
|
-
function isJsonArray(value) {
|
|
14
|
-
return Array.isArray(value);
|
|
15
|
-
}
|
|
16
|
-
function toPayloadValue(value) {
|
|
17
|
-
if (value === null || value === void 0) return value;
|
|
18
|
-
return JsonValueSchema.parse(JSON.parse(JSON.stringify(value)));
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
export { JsonValueSchema, isJsonArray, isJsonObject, isJsonPrimitive, toPayloadValue };
|
|
22
|
-
//# sourceMappingURL=chunk-QRHJUS3D.js.map
|
|
23
|
-
//# sourceMappingURL=chunk-QRHJUS3D.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/types/json.ts"],"names":[],"mappings":";;;AA4CO,IAAM,kBAAwC,CAAA,CAAE,IAAA;AAAA,EAAK,MAC1D,CAAA,CAAE,KAAA,CAAM,CAAC,CAAA,CAAE,MAAA,EAAO,EAAG,CAAA,CAAE,MAAA,EAAO,EAAG,CAAA,CAAE,OAAA,EAAQ,EAAG,CAAA,CAAE,IAAA,EAAK,EAAG,CAAA,CAAE,KAAA,CAAM,eAAe,CAAA,EAAG,CAAA,CAAE,MAAA,CAAO,CAAA,CAAE,MAAA,EAAO,EAAG,eAAe,CAAC,CAAC;AAC1H;AA+BO,SAAS,gBACd,KAAA,EAC2C;AAC3C,EAAA,OACE,KAAA,KAAU,QACP,OAAO,KAAA,KAAU,YACjB,OAAO,KAAA,KAAU,QAAA,IACjB,OAAO,KAAA,KAAU,SAAA;AAExB;AAKO,SAAS,aAAa,KAAA,EAAuC;AAClE,EAAA,OACE,KAAA,KAAU,QACP,OAAO,KAAA,KAAU,YACjB,CAAC,KAAA,CAAM,QAAQ,KAAK,CAAA;AAE3B;AAKO,SAAS,YAAY,KAAA,EAAwC;AAClE,EAAA,OAAO,KAAA,CAAM,QAAQ,KAAK,CAAA;AAC5B;AAMO,SAAS,eAAe,KAAA,EAAqD;AAClF,EAAA,IAAI,KAAA,KAAU,IAAA,IAAQ,KAAA,KAAU,MAAA,EAAW,OAAO,KAAA;AAClD,EAAA,OAAO,eAAA,CAAgB,MAAM,IAAA,CAAK,KAAA,CAAM,KAAK,SAAA,CAAU,KAAK,CAAC,CAAC,CAAA;AAChE","file":"chunk-QRHJUS3D.js","sourcesContent":["/**\n * JSON primitives — the universal \"data crossed a boundary\" type.\n *\n * Every value that arrives over the wire from an LLM (tool-call args),\n * from disk (workspace files), or from an HTTP body before\n * domain-specific validation is a `JsonValue`. Narrow with a typed\n * predicate (`is`-guard) at the boundary; don't widen back to `unknown`.\n *\n * `JsonObject` and `ToolArgs` are aliases for the common\n * `Record<string, JsonValue>` shape. `ToolArgs` is the name the\n * agent surface uses for LLM-emitted tool-call arguments; `JsonObject`\n * is the general-purpose alias. They are the same type — the alias\n * exists so call sites read at the right semantic level.\n *\n * Why not `Record<string, unknown>`? Two reasons. (1) `unknown` widens\n * back to anything, which defeats the purpose of typing the boundary.\n * (2) The `@almadar/eslint-plugin/no-record-string-unknown` rule blocks\n * the wider form — `JsonValue`-based records are the typed answer.\n *\n * @packageDocumentation\n */\n\nimport { z } from 'zod';\nimport type { EventPayloadValue } from './expression.js';\n\n/**\n * Recursive JSON value union — every shape JSON can carry.\n */\nexport type JsonValue =\n | string\n | number\n | boolean\n | null\n | JsonValue[]\n | { [key: string]: JsonValue };\n\n/**\n * JSON object — keyed string→JsonValue. The wire form of arbitrary\n * structured data. Replaces `Record<string, unknown>` at typed\n * boundaries (LLM emits, file reads, HTTP bodies).\n */\nexport type JsonObject = { [key: string]: JsonValue };\n\n/** Zod schema for JsonValue — the one boundary validator for parsed-JSON slots. */\nexport const JsonValueSchema: z.ZodType<JsonValue> = z.lazy(() =>\n z.union([z.string(), z.number(), z.boolean(), z.null(), z.array(JsonValueSchema), z.record(z.string(), JsonValueSchema)]),\n);\n\n/**\n * LLM tool-call arguments — same shape as `JsonObject`, named for the\n * agent-surface call site. Each tool's `execute(args: ToolArgs)`\n * receives this and narrows via an `is`-guard predicate before any\n * field access.\n */\nexport type ToolArgs = JsonObject;\n\n/**\n * Universal type-guard input — every runtime value shape a predicate can\n * be handed, enumerated instead of `unknown` (the repo bans `unknown`\n * even at guard boundaries). Primitives cover every `typeof` result;\n * `object` covers arrays, records, class instances, and functions.\n */\nexport type RuntimeValue =\n | string\n | number\n | bigint\n | boolean\n | symbol\n | Date\n | null\n | undefined\n | object;\n\n/**\n * Type guard: is the given value a JSON primitive (non-array,\n * non-object)? Used by walkers that decide whether to recurse.\n */\nexport function isJsonPrimitive(\n value: JsonValue,\n): value is string | number | boolean | null {\n return (\n value === null\n || typeof value === 'string'\n || typeof value === 'number'\n || typeof value === 'boolean'\n );\n}\n\n/**\n * Type guard: is the given value a JSON object (non-array, non-null)?\n */\nexport function isJsonObject(value: JsonValue): value is JsonObject {\n return (\n value !== null\n && typeof value === 'object'\n && !Array.isArray(value)\n );\n}\n\n/**\n * Type guard: is the given value a JSON array?\n */\nexport function isJsonArray(value: JsonValue): value is JsonValue[] {\n return Array.isArray(value);\n}\n\n/**\n * A rich value the UI hands back (a program schema, a selected node) as an event payload value:\n * its JSON form, which is what the event wire carries. `JsonValue` is a payload value.\n */\nexport function toPayloadValue(value: object | null | undefined): EventPayloadValue {\n if (value === null || value === undefined) return value;\n return JsonValueSchema.parse(JSON.parse(JSON.stringify(value)));\n}\n"]}
|