@almadar/core 8.6.2 → 8.6.3
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/factory/index.d.ts +263 -47
- package/dist/factory/index.js +308 -5
- package/dist/factory/index.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +308 -5
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/factory/translate.ts","../../src/factory/diff.ts","../../src/factory/mutate.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["import type { EntityField } from '../types/field.js';\nimport type { EntityPersistence } from '../types/entity.js';\nimport type { TraitReference } from '../types/trait.js';\nimport type {\n FactoryCallSite,\n FactoryCallSiteParams,\n FactoryParamValue,\n FactorySignature,\n FactoryTraitSignature,\n} from './types.js';\nimport type {\n OwnershipOverlayEntry,\n PresentationNavItem,\n PresentationOverlay,\n RuleOverlay,\n RuleOverlayEntry,\n TraitOverlay,\n TraitOverlayEntry,\n} from './overlays.js';\n\n/**\n * The per-orbital binding the agent assembles when it picks a\n * signature. Carries the user-authored overrides directly; no shared\n * domain ontology, no DomainDocument.\n */\nexport interface TranslationBinding {\n /** Entity name override. When equal to `signature.entities[0].name`,\n * no rename is emitted. */\n entityName: string;\n /** Extra fields beyond the signature's canonical entity surface. */\n entityFields?: ReadonlyArray<EntityField>;\n /** Persistence override. */\n persistence?: EntityPersistence;\n /** Collection name override. */\n collection?: string;\n /** Per-page path overrides keyed by `signature.pages[i].name`. */\n pagePaths?: Readonly<Record<string, string>>;\n}\n\nexport interface TranslationWarning {\n /** Dotted path of the binding field that couldn't be lowered. */\n field: string;\n /** Human-readable reason. */\n reason: string;\n}\n\nexport interface TranslationResult {\n callSite: FactoryCallSite;\n warnings: ReadonlyArray<TranslationWarning>;\n}\n\nexport function translateOverlaysToParams(\n binding: TranslationBinding,\n signature: FactorySignature,\n presentation?: PresentationOverlay,\n ruleOverlay?: RuleOverlay,\n traitOverlay?: TraitOverlay,\n catalog?: ReadonlyArray<FactorySignature>,\n): TranslationResult {\n const warnings: TranslationWarning[] = [];\n const params: FactoryCallSiteParams = {};\n\n applyEntityName(binding, signature, params);\n applyEntityFields(binding, signature, params);\n applyPersistence(binding, signature, params, warnings);\n applyCollection(binding, params);\n applyPagePaths(binding, signature, params, warnings);\n applyPresentation(presentation, signature, params, warnings);\n applyTraitOverlay(traitOverlay, signature, params, warnings);\n applyRuleOverlay(ruleOverlay, signature, binding, catalog, params, warnings);\n\n return {\n callSite: {\n organism: signature.organism,\n orbital: signature.orbital,\n factoryPath: signature.factoryPath,\n params,\n },\n warnings,\n };\n}\n\n// ---------------------------------------------------------------------------\n// Per-field lowering\n// ---------------------------------------------------------------------------\n\nfunction applyEntityName(\n binding: TranslationBinding,\n signature: FactorySignature,\n params: FactoryCallSiteParams,\n): void {\n if (signature.entities.length === 0) return;\n if (binding.entityName === signature.entities[0].name) return;\n params.entityName = binding.entityName;\n}\n\nfunction applyEntityFields(\n binding: TranslationBinding,\n signature: FactorySignature,\n params: FactoryCallSiteParams,\n): void {\n if (!binding.entityFields || binding.entityFields.length === 0) return;\n if (signature.entities.length === 0) {\n params.entityFields = [...binding.entityFields];\n return;\n }\n const canonical = new Set(signature.entities[0].fields.map((f) => f.name));\n const extras: EntityField[] = [];\n for (const f of binding.entityFields) {\n if (f.name && canonical.has(f.name)) continue;\n extras.push(f);\n }\n if (extras.length > 0) params.entityFields = extras;\n}\n\nfunction applyPersistence(\n binding: TranslationBinding,\n signature: FactorySignature,\n params: FactoryCallSiteParams,\n warnings: TranslationWarning[],\n): void {\n if (!binding.persistence) return;\n if (signature.entities.length === 0) {\n warnings.push({\n field: `entity.${binding.entityName}.persistence`,\n reason: 'factory signature has no entity to apply persistence to',\n });\n return;\n }\n if (binding.persistence === signature.entities[0].persistence) return;\n params.persistence = binding.persistence;\n}\n\nfunction applyCollection(\n binding: TranslationBinding,\n params: FactoryCallSiteParams,\n): void {\n if (!binding.collection) return;\n params.collection = binding.collection;\n}\n\nfunction applyPagePaths(\n binding: TranslationBinding,\n signature: FactorySignature,\n params: FactoryCallSiteParams,\n warnings: TranslationWarning[],\n): void {\n if (!binding.pagePaths) return;\n const sigPages = new Map(signature.pages.map((p) => [p.name, p]));\n const overrides: Record<string, string> = {};\n for (const [pageName, url] of Object.entries(binding.pagePaths)) {\n const sig = sigPages.get(pageName);\n if (!sig) {\n warnings.push({\n field: `page.${pageName}.url`,\n reason: `factory signature has no page named \"${pageName}\"`,\n });\n continue;\n }\n if (sig.defaultPath !== url) overrides[pageName] = url;\n }\n if (Object.keys(overrides).length > 0) params.pagePaths = overrides;\n}\n\nfunction applyPresentation(\n overlay: PresentationOverlay | undefined,\n signature: FactorySignature,\n params: FactoryCallSiteParams,\n warnings: TranslationWarning[],\n): void {\n if (!overlay?.navAdditions || overlay.navAdditions.length === 0) return;\n const target = signature.traits.find((t) =>\n t.overridableConfigKeys.some((p) => p.key === 'navItems'),\n );\n if (!target) {\n warnings.push({\n field: 'presentation.navAdditions',\n reason:\n 'factory signature has no trait advertising a `navItems` config key',\n });\n return;\n }\n const existing = params.traitOverrides?.[target.name] ?? {};\n const existingConfig = existing.config ?? {};\n const items: ReadonlyArray<FactoryParamValue> = overlay.navAdditions.map(\n navItemToParamValue,\n );\n params.traitOverrides = {\n ...params.traitOverrides,\n [target.name]: {\n ...existing,\n config: { ...existingConfig, navItems: items },\n },\n };\n}\n\nfunction applyTraitOverlay(\n overlay: TraitOverlay | undefined,\n signature: FactorySignature,\n params: FactoryCallSiteParams,\n warnings: TranslationWarning[],\n): void {\n if (!overlay) return;\n const traitsByName = new Map(signature.traits.map((t) => [t.name, t]));\n for (const [traitName, entry] of Object.entries(overlay)) {\n const trait = traitsByName.get(traitName);\n if (!trait) {\n warnings.push({\n field: `traitOverlay.${traitName}`,\n reason: `factory signature has no trait named \"${traitName}\"`,\n });\n continue;\n }\n mergeTraitOverride(traitName, entry, trait, params, warnings);\n }\n}\n\nfunction mergeTraitOverride(\n traitName: string,\n entry: TraitOverlayEntry,\n trait: FactoryTraitSignature,\n params: FactoryCallSiteParams,\n warnings: TranslationWarning[],\n): void {\n const advertised = new Set(trait.overridableConfigKeys.map((p) => p.key));\n const existing = params.traitOverrides?.[traitName] ?? {};\n const existingConfig = existing.config ?? {};\n const mergedConfig: Record<string, FactoryParamValue> = { ...existingConfig };\n\n if (entry.config) {\n for (const [k, v] of Object.entries(entry.config)) {\n if (!advertised.has(k)) {\n const advertisedKeys = trait.overridableConfigKeys.map((p) => p.key).join(', ');\n warnings.push({\n field: `traitOverlay.${traitName}.config.${k}`,\n reason: `trait does not advertise config key \"${k}\" (overridableConfigKeys: [${advertisedKeys}])`,\n });\n continue;\n }\n mergedConfig[k] = v;\n }\n }\n\n // Thread every documented override field through verbatim — `config`\n // gets the merged + validated map; the rest pass through as the overlay\n // authored them. Pre-unification only `config` was preserved, so any\n // overlay-authored `linkedEntity` / `events` / `name` / `emitsScope` /\n // `listens` was silently dropped before reaching the factory.\n params.traitOverrides = {\n ...params.traitOverrides,\n [traitName]: {\n ...existing,\n ...(Object.keys(mergedConfig).length > 0 ? { config: mergedConfig } : {}),\n ...(entry.linkedEntity !== undefined ? { linkedEntity: entry.linkedEntity } : {}),\n ...(entry.events !== undefined ? { events: entry.events } : {}),\n ...(entry.name !== undefined ? { name: entry.name } : {}),\n ...(entry.emitsScope !== undefined ? { emitsScope: entry.emitsScope } : {}),\n ...(entry.listens !== undefined ? { listens: entry.listens } : {}),\n },\n };\n}\n\nfunction applyRuleOverlay(\n overlay: RuleOverlay | undefined,\n signature: FactorySignature,\n binding: TranslationBinding,\n catalog: ReadonlyArray<FactorySignature> | undefined,\n params: FactoryCallSiteParams,\n warnings: TranslationWarning[],\n): void {\n if (!overlay) return;\n\n for (const rule of overlay.rules) {\n if (!ruleAppliesToBinding(rule, binding)) continue;\n if (!catalog) {\n warnings.push({\n field: `ruleOverlay.rules.${rule.id}`,\n reason: 'rule overlay supplied without a catalog — capability lookup requires one',\n });\n continue;\n }\n const match = findTraitByCapability(catalog, rule.capability);\n if (!match) {\n warnings.push({\n field: `ruleOverlay.rules.${rule.id}`,\n reason: `no trait in the catalog advertises capability \"${rule.capability}\"`,\n });\n continue;\n }\n appendRuleExtraTrait(rule, match, binding, params);\n if (rule.config) {\n threadRuleConfig(rule, match.trait, params, warnings);\n }\n }\n\n if (overlay.ownership) {\n for (const entry of overlay.ownership) {\n if (entry.entity !== binding.entityName) continue;\n applyOwnership(entry, params, signature, catalog, warnings);\n }\n }\n}\n\nfunction ruleAppliesToBinding(\n rule: RuleOverlayEntry,\n binding: TranslationBinding,\n): boolean {\n if (rule.appliesTo.length === 0) return true;\n return rule.appliesTo.includes(binding.entityName);\n}\n\ninterface CapabilityMatch {\n signature: FactorySignature;\n trait: FactoryTraitSignature;\n}\n\nfunction findTraitByCapability(\n catalog: ReadonlyArray<FactorySignature>,\n capability: string,\n): CapabilityMatch | undefined {\n for (const sig of catalog) {\n for (const trait of sig.traits) {\n if (trait.capabilities.includes(capability)) {\n return { signature: sig, trait };\n }\n }\n }\n return undefined;\n}\n\nfunction appendRuleExtraTrait(\n _rule: RuleOverlayEntry,\n match: CapabilityMatch,\n binding: TranslationBinding,\n params: FactoryCallSiteParams,\n): void {\n const fromPath = `std/behaviors/${match.signature.organism}`;\n const alias = organismToAlias(match.signature.organism);\n const ref: TraitReference = {\n from: fromPath,\n ref: `${alias}.traits.${match.trait.name}`,\n linkedEntity: binding.entityName,\n };\n const existing = params.extraTraits ?? [];\n params.extraTraits = [...existing, ref];\n}\n\nfunction organismToAlias(organism: string): string {\n const trimmed = organism.startsWith('std-') ? organism.slice(4) : organism;\n return trimmed\n .split('-')\n .filter((s) => s.length > 0)\n .map((s) => s.charAt(0).toUpperCase() + s.slice(1))\n .join('');\n}\n\nfunction threadRuleConfig(\n rule: RuleOverlayEntry,\n trait: FactoryTraitSignature,\n params: FactoryCallSiteParams,\n warnings: TranslationWarning[],\n): void {\n if (!rule.config) return;\n const advertised = new Set(trait.overridableConfigKeys.map((p) => p.key));\n const existing = params.traitOverrides?.[trait.name] ?? {};\n const existingConfig = existing.config ?? {};\n const merged: Record<string, FactoryParamValue> = { ...existingConfig };\n for (const [k, v] of Object.entries(rule.config)) {\n if (!advertised.has(k)) {\n warnings.push({\n field: `ruleOverlay.rules.${rule.id}.config.${k}`,\n reason: `trait \"${trait.name}\" does not advertise config key \"${k}\"`,\n });\n continue;\n }\n merged[k] = v;\n }\n if (Object.keys(merged).length > 0) {\n params.traitOverrides = {\n ...params.traitOverrides,\n [trait.name]: { ...existing, config: merged },\n };\n }\n}\n\nfunction applyOwnership(\n entry: OwnershipOverlayEntry,\n params: FactoryCallSiteParams,\n signature: FactorySignature,\n catalog: ReadonlyArray<FactorySignature> | undefined,\n warnings: TranslationWarning[],\n): void {\n const local = signature.traits.find((t) =>\n t.overridableConfigKeys.some((p) => p.key === 'ownerField'),\n );\n if (local) {\n writeOwnerField(local.name, entry.ownerField, params);\n return;\n }\n if (catalog) {\n for (const sig of catalog) {\n const trait = sig.traits.find((t) =>\n t.overridableConfigKeys.some((p) => p.key === 'ownerField'),\n );\n if (trait) {\n writeOwnerField(trait.name, entry.ownerField, params);\n return;\n }\n }\n }\n warnings.push({\n field: `ruleOverlay.ownership.${entry.entity}`,\n reason: 'no trait in the bound signature or catalog advertises an `ownerField` config knob',\n });\n}\n\nfunction writeOwnerField(\n traitName: string,\n ownerField: string,\n params: FactoryCallSiteParams,\n): void {\n const existing = params.traitOverrides?.[traitName] ?? {};\n const existingConfig = existing.config ?? {};\n params.traitOverrides = {\n ...params.traitOverrides,\n [traitName]: {\n ...existing,\n config: { ...existingConfig, ownerField },\n },\n };\n}\n\nfunction navItemToParamValue(item: PresentationNavItem): FactoryParamValue {\n const out: Record<string, FactoryParamValue> = {\n label: item.label,\n path: item.path,\n };\n if (item.icon) out.icon = item.icon;\n return out;\n}\n","/**\n * Structural diff between two `FactoryCallSite[]` lists. Pure typed,\n * no side effects. Used by downstream consumers (agent planner, UI\n * cascade view) to turn a \"previous calls\" + \"next calls\" pair into a\n * minimal change set.\n *\n * Identity for diffing is `(organism, orbital)`. Renames are not\n * handled here — they show up as a delete + add. The agent layer is\n * expected to merge those back into a `'rename'` op if it can prove\n * the underlying domain entity was renamed.\n */\n\nimport type {\n FactoryCallSite,\n FactoryCallSiteParams,\n FactoryParamValue,\n} from './types.js';\n\nexport type CallSiteDiff =\n | { kind: 'add'; orbitalName: string; next: FactoryCallSite }\n | { kind: 'delete'; orbitalName: string; prior: FactoryCallSite }\n | {\n kind: 'edit';\n orbitalName: string;\n prior: FactoryCallSite;\n next: FactoryCallSite;\n }\n | { kind: 'keep'; orbitalName: string; call: FactoryCallSite };\n\nexport function diffFactoryCalls(\n prior: ReadonlyArray<FactoryCallSite>,\n next: ReadonlyArray<FactoryCallSite>,\n): ReadonlyArray<CallSiteDiff> {\n const out: CallSiteDiff[] = [];\n const priorByKey = new Map(prior.map((c) => [callKey(c), c]));\n const nextByKey = new Map(next.map((c) => [callKey(c), c]));\n\n for (const [key, p] of priorByKey) {\n const n = nextByKey.get(key);\n if (!n) {\n out.push({ kind: 'delete', orbitalName: p.orbital, prior: p });\n continue;\n }\n if (paramsEqual(p.params, n.params)) {\n out.push({ kind: 'keep', orbitalName: p.orbital, call: n });\n } else {\n out.push({ kind: 'edit', orbitalName: p.orbital, prior: p, next: n });\n }\n }\n for (const [key, n] of nextByKey) {\n if (!priorByKey.has(key)) {\n out.push({ kind: 'add', orbitalName: n.orbital, next: n });\n }\n }\n return out;\n}\n\nfunction callKey(c: FactoryCallSite): string {\n return `${c.organism}::${c.orbital}`;\n}\n\nfunction paramsEqual(a: FactoryCallSiteParams, b: FactoryCallSiteParams): boolean {\n return canonicalParams(a) === canonicalParams(b);\n}\n\nfunction canonicalParams(p: FactoryCallSiteParams): string {\n const keys: Array<keyof FactoryCallSiteParams> = [\n 'collection',\n 'entityFields',\n 'entityName',\n 'extraTraits',\n 'pagePaths',\n 'persistence',\n 'traitOverrides',\n ];\n const parts: string[] = [];\n for (const k of keys) {\n const v = p[k];\n if (v === undefined) continue;\n parts.push(`${k}:${canonicalNode(v)}`);\n }\n return `{${parts.join(',')}}`;\n}\n\nfunction canonicalNode(\n v:\n | string\n | FactoryCallSiteParams[keyof FactoryCallSiteParams],\n): string {\n if (v === undefined) return 'u';\n if (typeof v === 'string') return JSON.stringify(v);\n if (Array.isArray(v)) {\n return `[${v.map((x) => canonicalParamValue(x as FactoryParamValue)).join(',')}]`;\n }\n const keys = Object.keys(v).sort();\n const parts: string[] = [];\n for (const k of keys) {\n const child = (v as Readonly<Record<string, FactoryParamValue | { config?: Readonly<Record<string, FactoryParamValue>> }>>)[k];\n parts.push(`${JSON.stringify(k)}:${canonicalParamValue(child)}`);\n }\n return `{${parts.join(',')}}`;\n}\n\nfunction canonicalParamValue(\n v: FactoryParamValue | { config?: Readonly<Record<string, FactoryParamValue>> },\n): string {\n if (v === null || v === undefined) return 'u';\n if (typeof v === 'string' || typeof v === 'number' || typeof v === 'boolean') {\n return JSON.stringify(v);\n }\n if (Array.isArray(v)) {\n return `[${v.map(canonicalParamValue).join(',')}]`;\n }\n const keys = Object.keys(v).sort();\n const parts: string[] = [];\n for (const k of keys) {\n const child = (v as Readonly<Record<string, FactoryParamValue | undefined>>)[k];\n if (child === undefined) continue;\n parts.push(`${JSON.stringify(k)}:${canonicalParamValue(child)}`);\n }\n return `{${parts.join(',')}}`;\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"]}
|
|
1
|
+
{"version":3,"sources":["../../src/factory/questions/generate.ts","../../src/factory/questions/reducer.ts","../../src/factory/translate.ts","../../src/factory/diff.ts","../../src/factory/mutate.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["/**\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 FactoryTraitSignature,\n} from '../types.js';\nimport type { RuleOverlay } from '../overlays.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): 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(...capabilityQuestions(call, signature, ruleCapabilities));\n }\n return out;\n}\n\n// ---------------------------------------------------------------------------\n// Config-key questions — derived from the source `config { }` declaration\n// ---------------------------------------------------------------------------\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 (isAlreadyCustomized(call, trait.name, 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 const label = param.label ?? humanizeKey(param.key);\n const question = `${label}?`;\n const reason =\n param.description ??\n `Customizes \"${param.key}\" on the ${trait.name} trait. ` +\n (param.default !== undefined\n ? `Default: ${stringifyDefault(param.default)}.`\n : `No default — leave blank to inherit the factory's behavior.`);\n\n const out: DomainQuestion = {\n id: `${call.orbital}.${trait.name}.${param.key}`,\n orbitalName: call.orbital,\n question,\n reason,\n inputType: deriveInputType(param),\n mutationTemplate: {\n kind: 'set-trait-override-config',\n orbitalName: call.orbital,\n traitName: trait.name,\n configKey: param.key,\n },\n };\n if (param.default !== undefined) {\n out.defaultValue = param.default;\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 return out;\n}\n\nfunction isAlreadyCustomized(\n call: FactoryCallSite,\n traitName: string,\n configKey: string,\n): boolean {\n const override = call.params.traitOverrides?.[traitName];\n if (!override?.config) return false;\n return Object.prototype.hasOwnProperty.call(override.config, configKey);\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 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 */\nfunction 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// Capability-driven questions\n// ---------------------------------------------------------------------------\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 ?? call.orbital;\n const seen = new Set<string>();\n const out: DomainQuestion[] = [];\n for (const trait of signature.traits) {\n for (const cap of trait.capabilities) {\n if (seen.has(cap)) continue;\n seen.add(cap);\n if (ruleCapabilities.has(cap)) continue;\n out.push({\n id: `${call.orbital}.capability.${cap}`,\n orbitalName: call.orbital,\n question: capabilityPrompt(cap, entityName),\n reason: capabilityReason(cap, trait),\n capability: cap,\n inputType: 'capability',\n mutationTemplate: {\n kind: 'set-rule',\n capability: cap,\n appliesTo: [entityName],\n },\n suggestedAnswers: ['yes', 'skip'],\n });\n }\n }\n return out;\n}\n\nfunction capabilityPrompt(capability: string, entity: string): string {\n return `Should \"${capability}\" apply to ${entity}?`;\n}\n\nfunction capabilityReason(\n capability: string,\n trait: FactoryTraitSignature,\n): string {\n return `The \"${trait.name}\" trait advertises capability \"${capability}\". Answer \"yes\" to wire a matching 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 * `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 'singleton',\n 'instance',\n 'local',\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 { EntityPersistence } from '../types/entity.js';\nimport type { TraitReference } from '../types/trait.js';\nimport type {\n FactoryCallSite,\n FactoryCallSiteParams,\n FactoryParamValue,\n FactorySignature,\n FactoryTraitSignature,\n} from './types.js';\nimport type {\n OwnershipOverlayEntry,\n PresentationNavItem,\n PresentationOverlay,\n RuleOverlay,\n RuleOverlayEntry,\n TraitOverlay,\n TraitOverlayEntry,\n} from './overlays.js';\n\n/**\n * The per-orbital binding the agent assembles when it picks a\n * signature. Carries the user-authored overrides directly; no shared\n * domain ontology, no DomainDocument.\n */\nexport interface TranslationBinding {\n /** Entity name override. When equal to `signature.entities[0].name`,\n * no rename is emitted. */\n entityName: string;\n /** Extra fields beyond the signature's canonical entity surface. */\n entityFields?: ReadonlyArray<EntityField>;\n /** Persistence override. */\n persistence?: EntityPersistence;\n /** Collection name override. */\n collection?: string;\n /** Per-page path overrides keyed by `signature.pages[i].name`. */\n pagePaths?: Readonly<Record<string, string>>;\n}\n\nexport interface TranslationWarning {\n /** Dotted path of the binding field that couldn't be lowered. */\n field: string;\n /** Human-readable reason. */\n reason: string;\n}\n\nexport interface TranslationResult {\n callSite: FactoryCallSite;\n warnings: ReadonlyArray<TranslationWarning>;\n}\n\nexport function translateOverlaysToParams(\n binding: TranslationBinding,\n signature: FactorySignature,\n presentation?: PresentationOverlay,\n ruleOverlay?: RuleOverlay,\n traitOverlay?: TraitOverlay,\n catalog?: ReadonlyArray<FactorySignature>,\n): TranslationResult {\n const warnings: TranslationWarning[] = [];\n const params: FactoryCallSiteParams = {};\n\n applyEntityName(binding, signature, params);\n applyEntityFields(binding, signature, params);\n applyPersistence(binding, signature, params, warnings);\n applyCollection(binding, params);\n applyPagePaths(binding, signature, params, warnings);\n applyPresentation(presentation, signature, params, warnings);\n applyTraitOverlay(traitOverlay, signature, params, warnings);\n applyRuleOverlay(ruleOverlay, signature, binding, catalog, params, warnings);\n\n return {\n callSite: {\n organism: signature.organism,\n orbital: signature.orbital,\n factoryPath: signature.factoryPath,\n params,\n },\n warnings,\n };\n}\n\n// ---------------------------------------------------------------------------\n// Per-field lowering\n// ---------------------------------------------------------------------------\n\nfunction applyEntityName(\n binding: TranslationBinding,\n signature: FactorySignature,\n params: FactoryCallSiteParams,\n): void {\n if (signature.entities.length === 0) return;\n if (binding.entityName === signature.entities[0].name) return;\n params.entityName = binding.entityName;\n}\n\nfunction applyEntityFields(\n binding: TranslationBinding,\n signature: FactorySignature,\n params: FactoryCallSiteParams,\n): void {\n if (!binding.entityFields || binding.entityFields.length === 0) return;\n if (signature.entities.length === 0) {\n params.entityFields = [...binding.entityFields];\n return;\n }\n const canonical = new Set(signature.entities[0].fields.map((f) => f.name));\n const extras: EntityField[] = [];\n for (const f of binding.entityFields) {\n if (f.name && canonical.has(f.name)) continue;\n extras.push(f);\n }\n if (extras.length > 0) params.entityFields = extras;\n}\n\nfunction applyPersistence(\n binding: TranslationBinding,\n signature: FactorySignature,\n params: FactoryCallSiteParams,\n warnings: TranslationWarning[],\n): void {\n if (!binding.persistence) return;\n if (signature.entities.length === 0) {\n warnings.push({\n field: `entity.${binding.entityName}.persistence`,\n reason: 'factory signature has no entity to apply persistence to',\n });\n return;\n }\n if (binding.persistence === signature.entities[0].persistence) return;\n params.persistence = binding.persistence;\n}\n\nfunction applyCollection(\n binding: TranslationBinding,\n params: FactoryCallSiteParams,\n): void {\n if (!binding.collection) return;\n params.collection = binding.collection;\n}\n\nfunction applyPagePaths(\n binding: TranslationBinding,\n signature: FactorySignature,\n params: FactoryCallSiteParams,\n warnings: TranslationWarning[],\n): void {\n if (!binding.pagePaths) return;\n const sigPages = new Map(signature.pages.map((p) => [p.name, p]));\n const overrides: Record<string, string> = {};\n for (const [pageName, url] of Object.entries(binding.pagePaths)) {\n const sig = sigPages.get(pageName);\n if (!sig) {\n warnings.push({\n field: `page.${pageName}.url`,\n reason: `factory signature has no page named \"${pageName}\"`,\n });\n continue;\n }\n if (sig.defaultPath !== url) overrides[pageName] = url;\n }\n if (Object.keys(overrides).length > 0) params.pagePaths = overrides;\n}\n\nfunction applyPresentation(\n overlay: PresentationOverlay | undefined,\n signature: FactorySignature,\n params: FactoryCallSiteParams,\n warnings: TranslationWarning[],\n): void {\n if (!overlay?.navAdditions || overlay.navAdditions.length === 0) return;\n const target = signature.traits.find((t) =>\n t.overridableConfigKeys.some((p) => p.key === 'navItems'),\n );\n if (!target) {\n warnings.push({\n field: 'presentation.navAdditions',\n reason:\n 'factory signature has no trait advertising a `navItems` config key',\n });\n return;\n }\n const existing = params.traitOverrides?.[target.name] ?? {};\n const existingConfig = existing.config ?? {};\n const items: ReadonlyArray<FactoryParamValue> = overlay.navAdditions.map(\n navItemToParamValue,\n );\n params.traitOverrides = {\n ...params.traitOverrides,\n [target.name]: {\n ...existing,\n config: { ...existingConfig, navItems: items },\n },\n };\n}\n\nfunction applyTraitOverlay(\n overlay: TraitOverlay | undefined,\n signature: FactorySignature,\n params: FactoryCallSiteParams,\n warnings: TranslationWarning[],\n): void {\n if (!overlay) return;\n const traitsByName = new Map(signature.traits.map((t) => [t.name, t]));\n for (const [traitName, entry] of Object.entries(overlay)) {\n const trait = traitsByName.get(traitName);\n if (!trait) {\n warnings.push({\n field: `traitOverlay.${traitName}`,\n reason: `factory signature has no trait named \"${traitName}\"`,\n });\n continue;\n }\n mergeTraitOverride(traitName, entry, trait, params, warnings);\n }\n}\n\nfunction mergeTraitOverride(\n traitName: string,\n entry: TraitOverlayEntry,\n trait: FactoryTraitSignature,\n params: FactoryCallSiteParams,\n warnings: TranslationWarning[],\n): void {\n const advertised = new Set(trait.overridableConfigKeys.map((p) => p.key));\n const existing = params.traitOverrides?.[traitName] ?? {};\n const existingConfig = existing.config ?? {};\n const mergedConfig: Record<string, FactoryParamValue> = { ...existingConfig };\n\n if (entry.config) {\n for (const [k, v] of Object.entries(entry.config)) {\n if (!advertised.has(k)) {\n const advertisedKeys = trait.overridableConfigKeys.map((p) => p.key).join(', ');\n warnings.push({\n field: `traitOverlay.${traitName}.config.${k}`,\n reason: `trait does not advertise config key \"${k}\" (overridableConfigKeys: [${advertisedKeys}])`,\n });\n continue;\n }\n mergedConfig[k] = v;\n }\n }\n\n // Thread every documented override field through verbatim — `config`\n // gets the merged + validated map; the rest pass through as the overlay\n // authored them. Pre-unification only `config` was preserved, so any\n // overlay-authored `linkedEntity` / `events` / `name` / `emitsScope` /\n // `listens` was silently dropped before reaching the factory.\n params.traitOverrides = {\n ...params.traitOverrides,\n [traitName]: {\n ...existing,\n ...(Object.keys(mergedConfig).length > 0 ? { config: mergedConfig } : {}),\n ...(entry.linkedEntity !== undefined ? { linkedEntity: entry.linkedEntity } : {}),\n ...(entry.events !== undefined ? { events: entry.events } : {}),\n ...(entry.name !== undefined ? { name: entry.name } : {}),\n ...(entry.emitsScope !== undefined ? { emitsScope: entry.emitsScope } : {}),\n ...(entry.listens !== undefined ? { listens: entry.listens } : {}),\n },\n };\n}\n\nfunction applyRuleOverlay(\n overlay: RuleOverlay | undefined,\n signature: FactorySignature,\n binding: TranslationBinding,\n catalog: ReadonlyArray<FactorySignature> | undefined,\n params: FactoryCallSiteParams,\n warnings: TranslationWarning[],\n): void {\n if (!overlay) return;\n\n // `rule.appliesTo` is frozen at the name in scope when the rule was\n // CAPTURED — typically the canonical entity name. If the caller later\n // rebinds via `params.entityName`, `binding.entityName` carries the\n // rebound name and a direct equality check fails. Match against BOTH\n // the rebound name (current binding) AND the canonical name (the\n // signature's authored entity) so cross-turn rule references survive\n // entity renames.\n const matchableNames = collectMatchableEntityNames(signature, binding);\n\n for (const rule of overlay.rules) {\n if (!ruleAppliesToAnyName(rule, matchableNames)) continue;\n if (!catalog) {\n warnings.push({\n field: `ruleOverlay.rules.${rule.id}`,\n reason: 'rule overlay supplied without a catalog — capability lookup requires one',\n });\n continue;\n }\n const match = findTraitByCapability(catalog, rule.capability);\n if (!match) {\n warnings.push({\n field: `ruleOverlay.rules.${rule.id}`,\n reason: `no trait in the catalog advertises capability \"${rule.capability}\"`,\n });\n continue;\n }\n appendRuleExtraTrait(rule, match, binding, params);\n if (rule.config) {\n threadRuleConfig(rule, match.trait, params, warnings);\n }\n }\n\n if (overlay.ownership) {\n for (const entry of overlay.ownership) {\n if (!matchableNames.includes(entry.entity)) continue;\n applyOwnership(entry, params, signature, catalog, warnings);\n }\n }\n}\n\n/**\n * Names the rule overlay may legitimately target for THIS binding.\n * Includes the rebound entity name (current `binding.entityName`) AND\n * every canonical name on `signature.entities[*]`. Deduped, empty-safe.\n */\nfunction collectMatchableEntityNames(\n signature: FactorySignature,\n binding: TranslationBinding,\n): ReadonlyArray<string> {\n const out = new Set<string>();\n if (binding.entityName.length > 0) out.add(binding.entityName);\n for (const ent of signature.entities) {\n if (typeof ent.name === 'string' && ent.name.length > 0) out.add(ent.name);\n }\n return [...out];\n}\n\nfunction ruleAppliesToAnyName(\n rule: RuleOverlayEntry,\n matchableNames: ReadonlyArray<string>,\n): boolean {\n if (rule.appliesTo.length === 0) return true;\n for (const n of rule.appliesTo) {\n if (matchableNames.includes(n)) return true;\n }\n return false;\n}\n\ninterface CapabilityMatch {\n signature: FactorySignature;\n trait: FactoryTraitSignature;\n}\n\nfunction findTraitByCapability(\n catalog: ReadonlyArray<FactorySignature>,\n capability: string,\n): CapabilityMatch | undefined {\n for (const sig of catalog) {\n for (const trait of sig.traits) {\n if (trait.capabilities.includes(capability)) {\n return { signature: sig, trait };\n }\n }\n }\n return undefined;\n}\n\nfunction appendRuleExtraTrait(\n _rule: RuleOverlayEntry,\n match: CapabilityMatch,\n binding: TranslationBinding,\n params: FactoryCallSiteParams,\n): void {\n const fromPath = `std/behaviors/${match.signature.organism}`;\n const alias = organismToAlias(match.signature.organism);\n const ref: TraitReference = {\n from: fromPath,\n ref: `${alias}.traits.${match.trait.name}`,\n linkedEntity: binding.entityName,\n };\n const existing = params.extraTraits ?? [];\n params.extraTraits = [...existing, ref];\n}\n\nfunction organismToAlias(organism: string): string {\n const trimmed = organism.startsWith('std-') ? organism.slice(4) : organism;\n return trimmed\n .split('-')\n .filter((s) => s.length > 0)\n .map((s) => s.charAt(0).toUpperCase() + s.slice(1))\n .join('');\n}\n\nfunction threadRuleConfig(\n rule: RuleOverlayEntry,\n trait: FactoryTraitSignature,\n params: FactoryCallSiteParams,\n warnings: TranslationWarning[],\n): void {\n if (!rule.config) return;\n const advertised = new Set(trait.overridableConfigKeys.map((p) => p.key));\n const existing = params.traitOverrides?.[trait.name] ?? {};\n const existingConfig = existing.config ?? {};\n const merged: Record<string, FactoryParamValue> = { ...existingConfig };\n for (const [k, v] of Object.entries(rule.config)) {\n if (!advertised.has(k)) {\n warnings.push({\n field: `ruleOverlay.rules.${rule.id}.config.${k}`,\n reason: `trait \"${trait.name}\" does not advertise config key \"${k}\"`,\n });\n continue;\n }\n merged[k] = v;\n }\n if (Object.keys(merged).length > 0) {\n params.traitOverrides = {\n ...params.traitOverrides,\n [trait.name]: { ...existing, config: merged },\n };\n }\n}\n\nfunction applyOwnership(\n entry: OwnershipOverlayEntry,\n params: FactoryCallSiteParams,\n signature: FactorySignature,\n catalog: ReadonlyArray<FactorySignature> | undefined,\n warnings: TranslationWarning[],\n): void {\n const local = signature.traits.find((t) =>\n t.overridableConfigKeys.some((p) => p.key === 'ownerField'),\n );\n if (local) {\n writeOwnerField(local.name, entry.ownerField, params);\n return;\n }\n if (catalog) {\n for (const sig of catalog) {\n const trait = sig.traits.find((t) =>\n t.overridableConfigKeys.some((p) => p.key === 'ownerField'),\n );\n if (trait) {\n writeOwnerField(trait.name, entry.ownerField, params);\n return;\n }\n }\n }\n warnings.push({\n field: `ruleOverlay.ownership.${entry.entity}`,\n reason: 'no trait in the bound signature or catalog advertises an `ownerField` config knob',\n });\n}\n\nfunction writeOwnerField(\n traitName: string,\n ownerField: string,\n params: FactoryCallSiteParams,\n): void {\n const existing = params.traitOverrides?.[traitName] ?? {};\n const existingConfig = existing.config ?? {};\n params.traitOverrides = {\n ...params.traitOverrides,\n [traitName]: {\n ...existing,\n config: { ...existingConfig, ownerField },\n },\n };\n}\n\nfunction navItemToParamValue(item: PresentationNavItem): FactoryParamValue {\n const out: Record<string, FactoryParamValue> = {\n label: item.label,\n path: item.path,\n };\n if (item.icon) out.icon = item.icon;\n return out;\n}\n","/**\n * Structural diff between two `FactoryCallSite[]` lists. Pure typed,\n * no side effects. Used by downstream consumers (agent planner, UI\n * cascade view) to turn a \"previous calls\" + \"next calls\" pair into a\n * minimal change set.\n *\n * Identity for diffing is `(organism, orbital)`. Renames are not\n * handled here — they show up as a delete + add. The agent layer is\n * expected to merge those back into a `'rename'` op if it can prove\n * the underlying domain entity was renamed.\n */\n\nimport type {\n FactoryCallSite,\n FactoryCallSiteParams,\n FactoryParamValue,\n} from './types.js';\n\nexport type CallSiteDiff =\n | { kind: 'add'; orbitalName: string; next: FactoryCallSite }\n | { kind: 'delete'; orbitalName: string; prior: FactoryCallSite }\n | {\n kind: 'edit';\n orbitalName: string;\n prior: FactoryCallSite;\n next: FactoryCallSite;\n }\n | { kind: 'keep'; orbitalName: string; call: FactoryCallSite };\n\nexport function diffFactoryCalls(\n prior: ReadonlyArray<FactoryCallSite>,\n next: ReadonlyArray<FactoryCallSite>,\n): ReadonlyArray<CallSiteDiff> {\n const out: CallSiteDiff[] = [];\n const priorByKey = new Map(prior.map((c) => [callKey(c), c]));\n const nextByKey = new Map(next.map((c) => [callKey(c), c]));\n\n for (const [key, p] of priorByKey) {\n const n = nextByKey.get(key);\n if (!n) {\n out.push({ kind: 'delete', orbitalName: p.orbital, prior: p });\n continue;\n }\n if (paramsEqual(p.params, n.params)) {\n out.push({ kind: 'keep', orbitalName: p.orbital, call: n });\n } else {\n out.push({ kind: 'edit', orbitalName: p.orbital, prior: p, next: n });\n }\n }\n for (const [key, n] of nextByKey) {\n if (!priorByKey.has(key)) {\n out.push({ kind: 'add', orbitalName: n.orbital, next: n });\n }\n }\n return out;\n}\n\nfunction callKey(c: FactoryCallSite): string {\n return `${c.organism}::${c.orbital}`;\n}\n\nfunction paramsEqual(a: FactoryCallSiteParams, b: FactoryCallSiteParams): boolean {\n return canonicalParams(a) === canonicalParams(b);\n}\n\nfunction canonicalParams(p: FactoryCallSiteParams): string {\n const keys: Array<keyof FactoryCallSiteParams> = [\n 'collection',\n 'entityFields',\n 'entityName',\n 'extraTraits',\n 'pagePaths',\n 'persistence',\n 'traitOverrides',\n ];\n const parts: string[] = [];\n for (const k of keys) {\n const v = p[k];\n if (v === undefined) continue;\n parts.push(`${k}:${canonicalNode(v)}`);\n }\n return `{${parts.join(',')}}`;\n}\n\nfunction canonicalNode(\n v:\n | string\n | FactoryCallSiteParams[keyof FactoryCallSiteParams],\n): string {\n if (v === undefined) return 'u';\n if (typeof v === 'string') return JSON.stringify(v);\n if (Array.isArray(v)) {\n return `[${v.map((x) => canonicalParamValue(x as FactoryParamValue)).join(',')}]`;\n }\n const keys = Object.keys(v).sort();\n const parts: string[] = [];\n for (const k of keys) {\n const child = (v as Readonly<Record<string, FactoryParamValue | { config?: Readonly<Record<string, FactoryParamValue>> }>>)[k];\n parts.push(`${JSON.stringify(k)}:${canonicalParamValue(child)}`);\n }\n return `{${parts.join(',')}}`;\n}\n\nfunction canonicalParamValue(\n v: FactoryParamValue | { config?: Readonly<Record<string, FactoryParamValue>> },\n): string {\n if (v === null || v === undefined) return 'u';\n if (typeof v === 'string' || typeof v === 'number' || typeof v === 'boolean') {\n return JSON.stringify(v);\n }\n if (Array.isArray(v)) {\n return `[${v.map(canonicalParamValue).join(',')}]`;\n }\n const keys = Object.keys(v).sort();\n const parts: string[] = [];\n for (const k of keys) {\n const child = (v as Readonly<Record<string, FactoryParamValue | undefined>>)[k];\n if (child === undefined) continue;\n parts.push(`${JSON.stringify(k)}:${canonicalParamValue(child)}`);\n }\n return `{${parts.join(',')}}`;\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"]}
|
package/dist/index.d.ts
CHANGED
|
@@ -5,7 +5,7 @@ export { A as AgentEffect, a as AnimationDef, b as AnimationDefInput, c as Anima
|
|
|
5
5
|
export { C as CORE_BINDINGS, a as CoreBinding, E as EvalContext, b as EventPayload, c as EventPayloadValue, d as Expression, e as ExpressionInput, f as ExpressionSchema, L as LogMeta, P as ParsedBinding, S as SExpr, g as SExprAtom, h as SExprAtomSchema, i as SExprInput, j as SExprSchema, k as collectBindings, l as getArgs, m as getOperator, n as isBinding, o as isSExpr, p as isSExprAtom, q as isSExprCall, r as isValidBinding, s as parseBinding, t as sexpr, w as walkSExpr } from './expression-BVRFm0sV.js';
|
|
6
6
|
import { ResolvedIR, ResolvedEntity, ResolvedPage, ResolvedTrait, ChangesetValue, SchemaChange, CategorizedRemovals, PageContentReduction, SemanticSchemaChange } from './types/index.js';
|
|
7
7
|
export { AgentCodeSearchResult, AgentCompactResult, AgentCompactStrategy, AgentContext, AgentGenerateOptions, AgentMemoryCategory, AgentMemoryRecord, AppSummary, AssetLoadStatus, BINDING_CONTEXT_RULES, BINDING_DOCS, BINDING_ROOTS, BindingContext, BindingRoot, BindingSchema, BridgeHealth, BusEvent, BusEventListener, BusEventSource, ChangeAuthor, ChangeSetDocument, ChangeSummary, CheckStatus, ContextExtensions, CreateFlow, DEFAULT_INTERACTION_MODELS, DeleteFlow, EditFlow, EffectTrace, EventEmit, EventKey, EventListen, EventLogEntry, GitHubLink, HistoryMeta, InteractionModel, InteractionModelInput, InteractionModelSchema, LazyService, ListInteraction, OrbitalVerificationAPI, PatternTypeSchema, PersistActionName, ResolvedEntityBinding, ResolvedField, ResolvedNavigation, ResolvedPattern, ResolvedSection, ResolvedSectionEvent, ResolvedTraitBinding, ResolvedTraitDataEntity, ResolvedTraitEvent, ResolvedTraitGuard, ResolvedTraitListener, ResolvedTraitState, ResolvedTraitTick, ResolvedTraitTransition, ResolvedTraitUIBinding, SaveOptions, SaveResult, SemanticChangeKind, ServerResponseTrace, ServiceAction, ServiceActionName, ServiceContract, ServiceEvents, SnapshotDocument, StatsView, StoreContract, StoreFilter, StoreFilterOp, TraitFieldRef, TraitFieldRefSchema, TraitStateSnapshot, TransitionFrom, TransitionTrace, Unsubscribe, ValidationDocument, ValidationIssue, ValidationMeta, ValidationResults, VerificationCheck, VerificationSnapshot, VerificationSummary, ViewFlow, createEmptyResolvedPage, createEmptyResolvedTrait, createLazyService, createResolvedField, createTypedEventBus, getAllPatternTypes, getBindingExamples, getInteractionModelForDomain, inferTsType, isResolvedIR, isTraitFieldRef, toBindingRoot, validateBindingInContext } from './types/index.js';
|
|
8
|
-
export { CallSiteDiff, FactoryCallPlanMutation, FactoryCallPlanState, FactoryCallSite, FactoryCallSiteParams, FactoryConfigParam, FactoryEntitySignature, FactoryPageSignature, FactoryParamValue, FactorySignature, FactorySignatureCatalog, FactorySignatureEntityField, FactoryTraitSignature, JsonSchema, JsonSchemaType, JsonValue, OrbitalCallInput, OwnershipOverlayEntry, PresentationNavItem, PresentationOverlay, RuleOverlay, RuleOverlayEntry, SchemaFieldType, TraitOverlay, TraitOverlayEntry, TraitOverlayListener, TranslationBinding, TranslationResult, TranslationWarning, applyFactoryCallPlanMutation, diffFactoryCalls, translateOverlaysToParams } from './factory/index.js';
|
|
8
|
+
export { CallSiteDiff, DomainQuestion, DomainQuestionAnswer, DomainQuestionAnswers, DomainQuestionInputType, FactoryCallPlanMutation, FactoryCallPlanMutationTemplate, FactoryCallPlanState, FactoryCallSite, FactoryCallSiteParams, FactoryConfigParam, FactoryConfigTier, FactoryEntitySignature, FactoryPageSignature, FactoryParamValue, FactorySignature, FactorySignatureCatalog, FactorySignatureEntityField, FactoryTraitSignature, JsonSchema, JsonSchemaType, JsonValue, OrbitalCallInput, OwnershipOverlayEntry, PresentationNavItem, PresentationOverlay, RuleOverlay, RuleOverlayEntry, SchemaFieldType, TraitOverlay, TraitOverlayEntry, TraitOverlayListener, TranslationBinding, TranslationResult, TranslationWarning, answerToMutations, answersToMutations, applyFactoryCallPlanMutation, deriveInputType, diffFactoryCalls, generateQuestions, translateOverlaysToParams } from './factory/index.js';
|
|
9
9
|
export { C as ComposeBehaviorsInput, a as ComposeBehaviorsResult, E as EventWiringEntry, L as LayoutStrategy, b as applyEventWiring, c as composeBehaviors, d as detectLayoutStrategy } from './compose-behaviors-N7RCJVwH.js';
|
|
10
10
|
export { PATTERN_TYPES, PatternConfig, PatternType, isValidPatternType } from '@almadar/patterns';
|
|
11
11
|
export { BFSNode, BFSPathNode, EdgeWalkTransition, GraphTransition, GuardPayload, ReplayStep, ReplayTransition, StateEdge, WalkStep, buildEdgeCoveringWalk, buildGuardPayloads, buildReplayPaths, buildStateGraph, collectReachableStates, extractPayloadFieldRef, walkStatePairs } from './state-machine/index.js';
|
package/dist/index.js
CHANGED
|
@@ -2290,6 +2290,297 @@ function summarizeSchema(schema) {
|
|
|
2290
2290
|
};
|
|
2291
2291
|
}
|
|
2292
2292
|
|
|
2293
|
+
// src/factory/questions/generate.ts
|
|
2294
|
+
function generateQuestions(plan, catalog, ruleOverlay) {
|
|
2295
|
+
const out = [];
|
|
2296
|
+
const ruleCapabilities = collectRuleCapabilities(ruleOverlay);
|
|
2297
|
+
for (const call of plan) {
|
|
2298
|
+
const signature = findSignature(catalog, call.organism, call.orbital);
|
|
2299
|
+
if (!signature) continue;
|
|
2300
|
+
out.push(...configKeyQuestions(call, signature));
|
|
2301
|
+
out.push(...capabilityQuestions(call, signature, ruleCapabilities));
|
|
2302
|
+
}
|
|
2303
|
+
return out;
|
|
2304
|
+
}
|
|
2305
|
+
function configKeyQuestions(call, signature) {
|
|
2306
|
+
const out = [];
|
|
2307
|
+
for (const trait of signature.traits) {
|
|
2308
|
+
for (const param of trait.overridableConfigKeys) {
|
|
2309
|
+
if (param.tier === "internal") continue;
|
|
2310
|
+
if (isAlreadyCustomized(call, trait.name, param.key)) continue;
|
|
2311
|
+
out.push(buildConfigKeyQuestion(call, trait, param));
|
|
2312
|
+
}
|
|
2313
|
+
}
|
|
2314
|
+
return out;
|
|
2315
|
+
}
|
|
2316
|
+
function buildConfigKeyQuestion(call, trait, param) {
|
|
2317
|
+
const label = param.label ?? humanizeKey(param.key);
|
|
2318
|
+
const question = `${label}?`;
|
|
2319
|
+
const reason = param.description ?? `Customizes "${param.key}" on the ${trait.name} trait. ` + (param.default !== void 0 ? `Default: ${stringifyDefault(param.default)}.` : `No default \u2014 leave blank to inherit the factory's behavior.`);
|
|
2320
|
+
const out = {
|
|
2321
|
+
id: `${call.orbital}.${trait.name}.${param.key}`,
|
|
2322
|
+
orbitalName: call.orbital,
|
|
2323
|
+
question,
|
|
2324
|
+
reason,
|
|
2325
|
+
inputType: deriveInputType(param),
|
|
2326
|
+
mutationTemplate: {
|
|
2327
|
+
kind: "set-trait-override-config",
|
|
2328
|
+
orbitalName: call.orbital,
|
|
2329
|
+
traitName: trait.name,
|
|
2330
|
+
configKey: param.key
|
|
2331
|
+
}
|
|
2332
|
+
};
|
|
2333
|
+
if (param.default !== void 0) {
|
|
2334
|
+
out.defaultValue = param.default;
|
|
2335
|
+
}
|
|
2336
|
+
if (param.enumValues && param.enumValues.length > 0) {
|
|
2337
|
+
out.suggestedAnswers = param.enumValues;
|
|
2338
|
+
}
|
|
2339
|
+
if (param.items) {
|
|
2340
|
+
out.itemSchema = param.items;
|
|
2341
|
+
}
|
|
2342
|
+
if (param.properties) {
|
|
2343
|
+
out.objectSchema = param.properties;
|
|
2344
|
+
}
|
|
2345
|
+
if (param.tier) {
|
|
2346
|
+
out.tier = param.tier;
|
|
2347
|
+
}
|
|
2348
|
+
return out;
|
|
2349
|
+
}
|
|
2350
|
+
function isAlreadyCustomized(call, traitName, configKey) {
|
|
2351
|
+
const override = call.params.traitOverrides?.[traitName];
|
|
2352
|
+
if (!override?.config) return false;
|
|
2353
|
+
return Object.prototype.hasOwnProperty.call(override.config, configKey);
|
|
2354
|
+
}
|
|
2355
|
+
function deriveInputType(param) {
|
|
2356
|
+
if (param.type.startsWith("[")) {
|
|
2357
|
+
if (param.items?.properties && Object.keys(param.items.properties).length > 0) {
|
|
2358
|
+
return "listOfObjects";
|
|
2359
|
+
}
|
|
2360
|
+
if (param.enumValues && param.enumValues.length > 0) {
|
|
2361
|
+
return "multiselect";
|
|
2362
|
+
}
|
|
2363
|
+
return "tagList";
|
|
2364
|
+
}
|
|
2365
|
+
if (param.type === "object") {
|
|
2366
|
+
if (param.properties && Object.keys(param.properties).length > 0) {
|
|
2367
|
+
return "objectForm";
|
|
2368
|
+
}
|
|
2369
|
+
return "text";
|
|
2370
|
+
}
|
|
2371
|
+
switch (param.type) {
|
|
2372
|
+
case "number":
|
|
2373
|
+
case "integer":
|
|
2374
|
+
return "number";
|
|
2375
|
+
case "boolean":
|
|
2376
|
+
return "boolean";
|
|
2377
|
+
case "enum":
|
|
2378
|
+
return "enum";
|
|
2379
|
+
case "string":
|
|
2380
|
+
return param.enumValues && param.enumValues.length > 0 ? "enum" : "text";
|
|
2381
|
+
default:
|
|
2382
|
+
return "text";
|
|
2383
|
+
}
|
|
2384
|
+
}
|
|
2385
|
+
function humanizeKey(key) {
|
|
2386
|
+
const parts = key.replace(/[-_]+/g, " ").replace(/([a-z0-9])([A-Z])/g, "$1 $2").replace(/([A-Z]+)([A-Z][a-z])/g, "$1 $2").split(" ").filter((s) => s.length > 0);
|
|
2387
|
+
return parts.map((p) => /^[A-Z]+$/.test(p) ? p : p.charAt(0).toUpperCase() + p.slice(1)).join(" ");
|
|
2388
|
+
}
|
|
2389
|
+
function stringifyDefault(v) {
|
|
2390
|
+
if (typeof v === "string") return JSON.stringify(v);
|
|
2391
|
+
if (typeof v === "number" || typeof v === "boolean") return String(v);
|
|
2392
|
+
if (Array.isArray(v)) return `${v.length} item${v.length === 1 ? "" : "s"}`;
|
|
2393
|
+
return "object";
|
|
2394
|
+
}
|
|
2395
|
+
function capabilityQuestions(call, signature, ruleCapabilities) {
|
|
2396
|
+
const entityName = call.params.entityName ?? signature.entities[0]?.name ?? call.orbital;
|
|
2397
|
+
const seen = /* @__PURE__ */ new Set();
|
|
2398
|
+
const out = [];
|
|
2399
|
+
for (const trait of signature.traits) {
|
|
2400
|
+
for (const cap of trait.capabilities) {
|
|
2401
|
+
if (seen.has(cap)) continue;
|
|
2402
|
+
seen.add(cap);
|
|
2403
|
+
if (ruleCapabilities.has(cap)) continue;
|
|
2404
|
+
out.push({
|
|
2405
|
+
id: `${call.orbital}.capability.${cap}`,
|
|
2406
|
+
orbitalName: call.orbital,
|
|
2407
|
+
question: capabilityPrompt(cap, entityName),
|
|
2408
|
+
reason: capabilityReason(cap, trait),
|
|
2409
|
+
capability: cap,
|
|
2410
|
+
inputType: "capability",
|
|
2411
|
+
mutationTemplate: {
|
|
2412
|
+
kind: "set-rule",
|
|
2413
|
+
capability: cap,
|
|
2414
|
+
appliesTo: [entityName]
|
|
2415
|
+
},
|
|
2416
|
+
suggestedAnswers: ["yes", "skip"]
|
|
2417
|
+
});
|
|
2418
|
+
}
|
|
2419
|
+
}
|
|
2420
|
+
return out;
|
|
2421
|
+
}
|
|
2422
|
+
function capabilityPrompt(capability, entity) {
|
|
2423
|
+
return `Should "${capability}" apply to ${entity}?`;
|
|
2424
|
+
}
|
|
2425
|
+
function capabilityReason(capability, trait) {
|
|
2426
|
+
return `The "${trait.name}" trait advertises capability "${capability}". Answer "yes" to wire a matching rule into the schema.`;
|
|
2427
|
+
}
|
|
2428
|
+
function findSignature(catalog, organism, orbital) {
|
|
2429
|
+
return catalog.find((s) => s.organism === organism && s.orbital === orbital);
|
|
2430
|
+
}
|
|
2431
|
+
function collectRuleCapabilities(overlay) {
|
|
2432
|
+
const out = /* @__PURE__ */ new Set();
|
|
2433
|
+
for (const r of overlay?.rules ?? []) {
|
|
2434
|
+
if (typeof r.capability === "string") out.add(r.capability);
|
|
2435
|
+
}
|
|
2436
|
+
return out;
|
|
2437
|
+
}
|
|
2438
|
+
|
|
2439
|
+
// src/factory/questions/reducer.ts
|
|
2440
|
+
var PERSISTENCE_VALUES = [
|
|
2441
|
+
"persistent",
|
|
2442
|
+
"runtime",
|
|
2443
|
+
"singleton",
|
|
2444
|
+
"instance",
|
|
2445
|
+
"local"
|
|
2446
|
+
];
|
|
2447
|
+
function answersToMutations(answers, questions) {
|
|
2448
|
+
const out = [];
|
|
2449
|
+
for (const q of questions) {
|
|
2450
|
+
const answer = answers[q.id];
|
|
2451
|
+
if (answer === void 0 || answer === null) continue;
|
|
2452
|
+
out.push(...answerToMutations(q.mutationTemplate, answer));
|
|
2453
|
+
}
|
|
2454
|
+
return out;
|
|
2455
|
+
}
|
|
2456
|
+
function answerToMutations(template, answer, _question) {
|
|
2457
|
+
switch (template.kind) {
|
|
2458
|
+
case "set-orbital-entity-name": {
|
|
2459
|
+
if (typeof answer !== "string" || answer.length === 0) return [];
|
|
2460
|
+
return [
|
|
2461
|
+
{
|
|
2462
|
+
kind: "set-orbital-entity-name",
|
|
2463
|
+
orbitalName: template.orbitalName,
|
|
2464
|
+
name: answer
|
|
2465
|
+
}
|
|
2466
|
+
];
|
|
2467
|
+
}
|
|
2468
|
+
case "set-orbital-entity-fields": {
|
|
2469
|
+
if (!isEntityFieldArray(answer)) return [];
|
|
2470
|
+
if (answer.length === 0) return [];
|
|
2471
|
+
return [
|
|
2472
|
+
{
|
|
2473
|
+
kind: "set-orbital-entity-fields",
|
|
2474
|
+
orbitalName: template.orbitalName,
|
|
2475
|
+
fields: answer
|
|
2476
|
+
}
|
|
2477
|
+
];
|
|
2478
|
+
}
|
|
2479
|
+
case "set-orbital-persistence": {
|
|
2480
|
+
if (!isPersistence(answer)) return [];
|
|
2481
|
+
return [
|
|
2482
|
+
{
|
|
2483
|
+
kind: "set-orbital-persistence",
|
|
2484
|
+
orbitalName: template.orbitalName,
|
|
2485
|
+
persistence: answer
|
|
2486
|
+
}
|
|
2487
|
+
];
|
|
2488
|
+
}
|
|
2489
|
+
case "set-orbital-collection": {
|
|
2490
|
+
if (typeof answer !== "string" || answer.length === 0) return [];
|
|
2491
|
+
return [
|
|
2492
|
+
{
|
|
2493
|
+
kind: "set-orbital-collection",
|
|
2494
|
+
orbitalName: template.orbitalName,
|
|
2495
|
+
collection: answer
|
|
2496
|
+
}
|
|
2497
|
+
];
|
|
2498
|
+
}
|
|
2499
|
+
case "set-orbital-page-path": {
|
|
2500
|
+
if (typeof answer !== "string" || answer.length === 0) return [];
|
|
2501
|
+
return [
|
|
2502
|
+
{
|
|
2503
|
+
kind: "set-orbital-page-path",
|
|
2504
|
+
orbitalName: template.orbitalName,
|
|
2505
|
+
pageName: template.pageName,
|
|
2506
|
+
path: answer
|
|
2507
|
+
}
|
|
2508
|
+
];
|
|
2509
|
+
}
|
|
2510
|
+
case "set-trait-override-config": {
|
|
2511
|
+
if (!isFactoryParamValue(answer)) return [];
|
|
2512
|
+
return [
|
|
2513
|
+
{
|
|
2514
|
+
kind: "set-trait-override-config",
|
|
2515
|
+
orbitalName: template.orbitalName,
|
|
2516
|
+
traitName: template.traitName,
|
|
2517
|
+
key: template.configKey,
|
|
2518
|
+
value: answer
|
|
2519
|
+
}
|
|
2520
|
+
];
|
|
2521
|
+
}
|
|
2522
|
+
case "add-extra-trait": {
|
|
2523
|
+
if (!isTraitReference(answer)) return [];
|
|
2524
|
+
return [
|
|
2525
|
+
{
|
|
2526
|
+
kind: "add-extra-trait",
|
|
2527
|
+
orbitalName: template.orbitalName,
|
|
2528
|
+
trait: answer
|
|
2529
|
+
}
|
|
2530
|
+
];
|
|
2531
|
+
}
|
|
2532
|
+
case "remove-extra-trait": {
|
|
2533
|
+
if (typeof answer !== "string" || answer.length === 0) return [];
|
|
2534
|
+
return [
|
|
2535
|
+
{
|
|
2536
|
+
kind: "remove-extra-trait",
|
|
2537
|
+
orbitalName: template.orbitalName,
|
|
2538
|
+
ref: answer
|
|
2539
|
+
}
|
|
2540
|
+
];
|
|
2541
|
+
}
|
|
2542
|
+
case "set-rule": {
|
|
2543
|
+
if (typeof answer !== "string") return [];
|
|
2544
|
+
if (answer !== "yes") return [];
|
|
2545
|
+
const rule = {
|
|
2546
|
+
id: `${template.capability}::${template.appliesTo.join(",")}`,
|
|
2547
|
+
capability: template.capability,
|
|
2548
|
+
description: `User accepted ${template.capability} for ${template.appliesTo.join(", ")}.`,
|
|
2549
|
+
appliesTo: template.appliesTo
|
|
2550
|
+
};
|
|
2551
|
+
return [{ kind: "set-rule", rule }];
|
|
2552
|
+
}
|
|
2553
|
+
case "remove-rule": {
|
|
2554
|
+
return [{ kind: "remove-rule", ruleId: template.ruleId }];
|
|
2555
|
+
}
|
|
2556
|
+
}
|
|
2557
|
+
}
|
|
2558
|
+
function isEntityFieldArray(a) {
|
|
2559
|
+
if (!Array.isArray(a)) return false;
|
|
2560
|
+
for (const x of a) {
|
|
2561
|
+
if (typeof x !== "object" || x === null) return false;
|
|
2562
|
+
if (!("name" in x) || !("type" in x)) return false;
|
|
2563
|
+
if (typeof x.name !== "string" || typeof x.type !== "string") return false;
|
|
2564
|
+
}
|
|
2565
|
+
return true;
|
|
2566
|
+
}
|
|
2567
|
+
function isPersistence(a) {
|
|
2568
|
+
return typeof a === "string" && PERSISTENCE_VALUES.includes(a);
|
|
2569
|
+
}
|
|
2570
|
+
function isFactoryParamValue(a) {
|
|
2571
|
+
if (a === null) return false;
|
|
2572
|
+
const t = typeof a;
|
|
2573
|
+
if (t === "string" || t === "number" || t === "boolean") return true;
|
|
2574
|
+
if (Array.isArray(a)) return true;
|
|
2575
|
+
if (t === "object") return true;
|
|
2576
|
+
return false;
|
|
2577
|
+
}
|
|
2578
|
+
function isTraitReference(a) {
|
|
2579
|
+
if (typeof a !== "object" || a === null || Array.isArray(a)) return false;
|
|
2580
|
+
if (!("ref" in a)) return false;
|
|
2581
|
+
return typeof a.ref === "string";
|
|
2582
|
+
}
|
|
2583
|
+
|
|
2293
2584
|
// src/factory/translate.ts
|
|
2294
2585
|
function translateOverlaysToParams(binding, signature, presentation, ruleOverlay, traitOverlay, catalog) {
|
|
2295
2586
|
const warnings = [];
|
|
@@ -2437,8 +2728,9 @@ function mergeTraitOverride(traitName, entry, trait, params, warnings) {
|
|
|
2437
2728
|
}
|
|
2438
2729
|
function applyRuleOverlay(overlay, signature, binding, catalog, params, warnings) {
|
|
2439
2730
|
if (!overlay) return;
|
|
2731
|
+
const matchableNames = collectMatchableEntityNames(signature, binding);
|
|
2440
2732
|
for (const rule of overlay.rules) {
|
|
2441
|
-
if (!
|
|
2733
|
+
if (!ruleAppliesToAnyName(rule, matchableNames)) continue;
|
|
2442
2734
|
if (!catalog) {
|
|
2443
2735
|
warnings.push({
|
|
2444
2736
|
field: `ruleOverlay.rules.${rule.id}`,
|
|
@@ -2461,14 +2753,25 @@ function applyRuleOverlay(overlay, signature, binding, catalog, params, warnings
|
|
|
2461
2753
|
}
|
|
2462
2754
|
if (overlay.ownership) {
|
|
2463
2755
|
for (const entry of overlay.ownership) {
|
|
2464
|
-
if (entry.entity
|
|
2756
|
+
if (!matchableNames.includes(entry.entity)) continue;
|
|
2465
2757
|
applyOwnership(entry, params, signature, catalog, warnings);
|
|
2466
2758
|
}
|
|
2467
2759
|
}
|
|
2468
2760
|
}
|
|
2469
|
-
function
|
|
2761
|
+
function collectMatchableEntityNames(signature, binding) {
|
|
2762
|
+
const out = /* @__PURE__ */ new Set();
|
|
2763
|
+
if (binding.entityName.length > 0) out.add(binding.entityName);
|
|
2764
|
+
for (const ent of signature.entities) {
|
|
2765
|
+
if (typeof ent.name === "string" && ent.name.length > 0) out.add(ent.name);
|
|
2766
|
+
}
|
|
2767
|
+
return [...out];
|
|
2768
|
+
}
|
|
2769
|
+
function ruleAppliesToAnyName(rule, matchableNames) {
|
|
2470
2770
|
if (rule.appliesTo.length === 0) return true;
|
|
2471
|
-
|
|
2771
|
+
for (const n of rule.appliesTo) {
|
|
2772
|
+
if (matchableNames.includes(n)) return true;
|
|
2773
|
+
}
|
|
2774
|
+
return false;
|
|
2472
2775
|
}
|
|
2473
2776
|
function findTraitByCapability(catalog, capability) {
|
|
2474
2777
|
for (const sig of catalog) {
|
|
@@ -3283,6 +3586,6 @@ function buildPayloadForEdge(transition, guardCase) {
|
|
|
3283
3586
|
return {};
|
|
3284
3587
|
}
|
|
3285
3588
|
|
|
3286
|
-
export { AGENT_DOMAIN_CATEGORIES, ALLOWED_CUSTOM_COMPONENTS, AgentDomainCategorySchema, AnimationDefSchema, AssetMapSchema, AssetMappingSchema, BINDING_CONTEXT_RULES, BINDING_DOCS, BINDING_ROOTS, BindingSchema, CORE_BINDINGS, ComputedEventContractSchema, ComputedEventListenerSchema, ConfigFieldDeclarationSchema, CustomPatternDefinitionSchema, CustomPatternMapSchema, DEFAULT_INTERACTION_MODELS, DeclaredTraitConfigSchema, DesignPreferencesSchema, DesignTokensSchema, DomainCategorySchema, DomainContextSchema, DomainVocabularySchema, ENTITY_ROLES, EffectSchema, EntityCallSchema, EntityFieldSchema, EntityPersistenceSchema, EntityRefSchema, EntityRefStringSchema, EntityRoleSchema, EntitySchema, EntitySemanticRoleSchema, EventListenerSchema, EventPayloadFieldSchema, EventSchema, EventScopeSchema, EventSemanticRoleSchema, EventSourceSchema, ExpressionSchema, FieldFormatSchema, FieldSchema, FieldTypeSchema, GAME_TYPES, GameSubCategorySchema, GameTypeSchema, GuardSchema, InteractionModelSchema, ListenSourceSchema, McpServiceDefSchema, NodeClassificationSchema, OrbitalConfigSchema, OrbitalDefinitionSchema, OrbitalEntitySchema, OrbitalPageSchema, OrbitalPageStrictSchema, OrbitalSchemaSchema, OrbitalTraitRefSchema, OrbitalUnitSchema, OrbitalSchema as OrbitalZodSchema, PageRefObjectSchema, PageRefSchema, PageRefStringSchema, PageSchema, PageTraitRefSchema, PatternTypeSchema, PayloadFieldSchema, RelatedLinkSchema, RelationConfigSchema, RequiredFieldSchema, ResolvedAssetSchema, RestAuthConfigSchema, RestServiceDefSchema, SERVICE_TYPES, SExprAtomSchema, SExprSchema, SemanticAssetRefSchema, ServiceDefinitionSchema, ServiceRefObjectSchema, ServiceRefSchema, ServiceRefStringSchema, ServiceTypeSchema, SocketEventsSchema, SocketServiceDefSchema, StateMachineSchema, StateSchema, StateSemanticRoleSchema, SuggestedGuardSchema, ThemeDefinitionSchema, ThemeRefSchema, ThemeRefStringSchema, ThemeTokensSchema, ThemeVariantSchema, TraitCategorySchema, TraitConfigSchema, TraitConfigValueSchema, TraitDataEntitySchema, TraitEntityFieldSchema, TraitEventContractSchema, TraitEventListenerSchema, TraitFieldRefSchema, TraitRefSchema, TraitReferenceSchema, TraitSchema, TraitTickSchema, TransitionSchema, UISlotSchema, UI_SLOTS, UXHintsSchema, UseDeclarationSchema, UserPersonaSchema, VISUAL_STYLES, ViewTypeSchema, VisualStyleSchema, applyEventWiring, applyFactoryCallPlanMutation, atomic, buildEdgeCoveringWalk, buildGuardPayloads, buildReplayPaths, buildStateGraph, callService, categorizeRemovals, classifyWorkflow, clearSchemaCache, collectBindings, collectReachableStates, composeBehaviors, createAssetKey, createEmptyResolvedPage, createEmptyResolvedTrait, createLazyService, createResolvedField, createTypedEventBus, deref, deriveCollection, despawn, detectLayoutStrategy, detectPageContentReduction, diffFactoryCalls, diffOrbitalSchemas, diffSchemaSemantics, diffSchemas, doEffects, emit, extractPayloadFieldRef, findService, getAllPatternTypes, getArgs, getBindingExamples, getDefaultAnimationsForRole, getEntity, getInteractionModelForDomain, getOperator, getPage, getPages, getRemovals, getSchemaCacheStats, getServiceNames, getTrait, getTraitConfig, getTraitName, hasService, hasSignificantPageReduction, inferTsType, isBinding, isCircuitEvent, isDestructiveChange, isEffect, isEntityCall, isEntityReference, isEntityReferenceAny, isImportedTraitRef, isInlineTrait, isMcpService, isOrbitalDefinition, isPageReference, isPageReferenceObject, isPageReferenceString, isResolvedIR, isRestService, isRuntimeEntity, isSExpr, isSExprAtom, isSExprCall, isSExprEffect, isServiceReference, isServiceReferenceObject, isSingletonEntity, isSocketService, isThemeReference, isTraitFieldRef, isValidBinding, navigate, normalizeTraitRef, notify, parseAssetKey, parseBinding, parseEntityRef, parseImportedTraitRef, parseOrbitalSchema, parsePageRef, parseServiceRef, persist, ref, renderUI, requiresConfirmation, safeParseOrbitalSchema, schemaToIR, set, sexpr, spawn, summarizeOrbital, summarizeSchema, swap, toBindingRoot, translateOverlaysToParams, validateAssetAnimations, validateBindingInContext, walkSExpr, walkStatePairs, watch };
|
|
3589
|
+
export { AGENT_DOMAIN_CATEGORIES, ALLOWED_CUSTOM_COMPONENTS, AgentDomainCategorySchema, AnimationDefSchema, AssetMapSchema, AssetMappingSchema, BINDING_CONTEXT_RULES, BINDING_DOCS, BINDING_ROOTS, BindingSchema, CORE_BINDINGS, ComputedEventContractSchema, ComputedEventListenerSchema, ConfigFieldDeclarationSchema, CustomPatternDefinitionSchema, CustomPatternMapSchema, DEFAULT_INTERACTION_MODELS, DeclaredTraitConfigSchema, DesignPreferencesSchema, DesignTokensSchema, DomainCategorySchema, DomainContextSchema, DomainVocabularySchema, ENTITY_ROLES, EffectSchema, EntityCallSchema, EntityFieldSchema, EntityPersistenceSchema, EntityRefSchema, EntityRefStringSchema, EntityRoleSchema, EntitySchema, EntitySemanticRoleSchema, EventListenerSchema, EventPayloadFieldSchema, EventSchema, EventScopeSchema, EventSemanticRoleSchema, EventSourceSchema, ExpressionSchema, FieldFormatSchema, FieldSchema, FieldTypeSchema, GAME_TYPES, GameSubCategorySchema, GameTypeSchema, GuardSchema, InteractionModelSchema, ListenSourceSchema, McpServiceDefSchema, NodeClassificationSchema, OrbitalConfigSchema, OrbitalDefinitionSchema, OrbitalEntitySchema, OrbitalPageSchema, OrbitalPageStrictSchema, OrbitalSchemaSchema, OrbitalTraitRefSchema, OrbitalUnitSchema, OrbitalSchema as OrbitalZodSchema, PageRefObjectSchema, PageRefSchema, PageRefStringSchema, PageSchema, PageTraitRefSchema, PatternTypeSchema, PayloadFieldSchema, RelatedLinkSchema, RelationConfigSchema, RequiredFieldSchema, ResolvedAssetSchema, RestAuthConfigSchema, RestServiceDefSchema, SERVICE_TYPES, SExprAtomSchema, SExprSchema, SemanticAssetRefSchema, ServiceDefinitionSchema, ServiceRefObjectSchema, ServiceRefSchema, ServiceRefStringSchema, ServiceTypeSchema, SocketEventsSchema, SocketServiceDefSchema, StateMachineSchema, StateSchema, StateSemanticRoleSchema, SuggestedGuardSchema, ThemeDefinitionSchema, ThemeRefSchema, ThemeRefStringSchema, ThemeTokensSchema, ThemeVariantSchema, TraitCategorySchema, TraitConfigSchema, TraitConfigValueSchema, TraitDataEntitySchema, TraitEntityFieldSchema, TraitEventContractSchema, TraitEventListenerSchema, TraitFieldRefSchema, TraitRefSchema, TraitReferenceSchema, TraitSchema, TraitTickSchema, TransitionSchema, UISlotSchema, UI_SLOTS, UXHintsSchema, UseDeclarationSchema, UserPersonaSchema, VISUAL_STYLES, ViewTypeSchema, VisualStyleSchema, answerToMutations, answersToMutations, applyEventWiring, applyFactoryCallPlanMutation, atomic, buildEdgeCoveringWalk, buildGuardPayloads, buildReplayPaths, buildStateGraph, callService, categorizeRemovals, classifyWorkflow, clearSchemaCache, collectBindings, collectReachableStates, composeBehaviors, createAssetKey, createEmptyResolvedPage, createEmptyResolvedTrait, createLazyService, createResolvedField, createTypedEventBus, deref, deriveCollection, deriveInputType, despawn, detectLayoutStrategy, detectPageContentReduction, diffFactoryCalls, diffOrbitalSchemas, diffSchemaSemantics, diffSchemas, doEffects, emit, extractPayloadFieldRef, findService, generateQuestions, getAllPatternTypes, getArgs, getBindingExamples, getDefaultAnimationsForRole, getEntity, getInteractionModelForDomain, getOperator, getPage, getPages, getRemovals, getSchemaCacheStats, getServiceNames, getTrait, getTraitConfig, getTraitName, hasService, hasSignificantPageReduction, inferTsType, isBinding, isCircuitEvent, isDestructiveChange, isEffect, isEntityCall, isEntityReference, isEntityReferenceAny, isImportedTraitRef, isInlineTrait, isMcpService, isOrbitalDefinition, isPageReference, isPageReferenceObject, isPageReferenceString, isResolvedIR, isRestService, isRuntimeEntity, isSExpr, isSExprAtom, isSExprCall, isSExprEffect, isServiceReference, isServiceReferenceObject, isSingletonEntity, isSocketService, isThemeReference, isTraitFieldRef, isValidBinding, navigate, normalizeTraitRef, notify, parseAssetKey, parseBinding, parseEntityRef, parseImportedTraitRef, parseOrbitalSchema, parsePageRef, parseServiceRef, persist, ref, renderUI, requiresConfirmation, safeParseOrbitalSchema, schemaToIR, set, sexpr, spawn, summarizeOrbital, summarizeSchema, swap, toBindingRoot, translateOverlaysToParams, validateAssetAnimations, validateBindingInContext, walkSExpr, walkStatePairs, watch };
|
|
3287
3590
|
//# sourceMappingURL=index.js.map
|
|
3288
3591
|
//# sourceMappingURL=index.js.map
|