@almadar/core 10.9.0 → 10.10.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/builders.d.ts +3 -3
- package/dist/{compose-behaviors-CNTCOsui.d.ts → compose-behaviors-CQCfFBnR.d.ts} +1 -1
- package/dist/factory/index.d.ts +3 -3
- package/dist/factory/index.js +6 -0
- package/dist/factory/index.js.map +1 -1
- package/dist/index.d.ts +7 -7
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -1
- package/dist/{schema-DAc5czBW.d.ts → schema-C4ia6wFF.d.ts} +1 -1
- package/dist/{trait-CWjT0yBO.d.ts → trait-CKueAwP9.d.ts} +1 -1
- package/dist/types/index.d.ts +6 -6
- package/dist/{types-CQvAbsEc.d.ts → types-DzmFPbo4.d.ts} +5 -1
- package/package.json +1 -1
package/dist/builders.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { T as TraitConfig, U as UISlot, E as Effect, a as Trait, R as RenderBinding, b as RenderUIEffect, c as TraitEventContract, d as Entity, e as TraitEventListener, C as CallSiteConfig, f as EntityField, g as EntityPersistence, h as EntityRow, i as TraitRef, j as TraitReference } from './trait-
|
|
2
|
-
import { O as OrbitalSchema, U as UseDeclaration, E as EntityRef, P as PageRef, a as OrbitalDefinition, b as Page, c as PageRefObject } from './schema-
|
|
1
|
+
import { T as TraitConfig, U as UISlot, E as Effect, a as Trait, R as RenderBinding, b as RenderUIEffect, c as TraitEventContract, d as Entity, e as TraitEventListener, C as CallSiteConfig, f as EntityField, g as EntityPersistence, h as EntityRow, i as TraitRef, j as TraitReference } from './trait-CKueAwP9.js';
|
|
2
|
+
import { O as OrbitalSchema, U as UseDeclaration, E as EntityRef, P as PageRef, a as OrbitalDefinition, b as Page, c as PageRefObject } from './schema-C4ia6wFF.js';
|
|
3
3
|
import { S as SExpr } from './expression-BUIi9ezJ.js';
|
|
4
|
-
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-
|
|
4
|
+
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-CQCfFBnR.js';
|
|
5
5
|
import { AnyPatternConfig } from '@almadar/patterns';
|
|
6
6
|
import 'zod';
|
|
7
7
|
|
package/dist/factory/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { g as FactoryParamValue, c as FactoryConfigTier, b as FactoryConfigParam, F as FactoryCallSite, h as FactorySignature, R as RuleOverlay, p as RuleOverlayEntry, o as PresentationOverlay, q as TraitOverlay } from '../types-
|
|
2
|
-
export { a as FactoryCallSiteParams, d as FactoryEntitySignature, e as FactoryEventSignature, f as FactoryPageSignature, i as FactorySignatureCatalog, j as FactorySignatureEntityField, k as FactoryTraitSignature, m as JsonSchema, n as JsonSchemaType, J as JsonValue, O as OwnershipOverlayEntry, P as PresentationNavItem, S as SchemaFieldType, r as TraitOverlayEntry, s as TraitOverlayListener } from '../types-
|
|
3
|
-
import { g as EntityPersistence, f as EntityField, j as TraitReference } from '../trait-
|
|
1
|
+
import { g as FactoryParamValue, c as FactoryConfigTier, b as FactoryConfigParam, F as FactoryCallSite, h as FactorySignature, R as RuleOverlay, p as RuleOverlayEntry, o as PresentationOverlay, q as TraitOverlay } from '../types-DzmFPbo4.js';
|
|
2
|
+
export { a as FactoryCallSiteParams, d as FactoryEntitySignature, e as FactoryEventSignature, f as FactoryPageSignature, i as FactorySignatureCatalog, j as FactorySignatureEntityField, k as FactoryTraitSignature, m as JsonSchema, n as JsonSchemaType, J as JsonValue, O as OwnershipOverlayEntry, P as PresentationNavItem, S as SchemaFieldType, r as TraitOverlayEntry, s as TraitOverlayListener } from '../types-DzmFPbo4.js';
|
|
3
|
+
import { g as EntityPersistence, f as EntityField, j as TraitReference } from '../trait-CKueAwP9.js';
|
|
4
4
|
import 'zod';
|
|
5
5
|
import '../expression-BUIi9ezJ.js';
|
|
6
6
|
import '@almadar/patterns';
|
package/dist/factory/index.js
CHANGED
|
@@ -187,8 +187,14 @@ function signatureFieldToEntityField(f) {
|
|
|
187
187
|
case "object":
|
|
188
188
|
return { ...base, type: "object" };
|
|
189
189
|
case "enum":
|
|
190
|
+
if (Array.isArray(f.values) && f.values.length > 0) {
|
|
191
|
+
return { ...base, type: "enum", values: f.values };
|
|
192
|
+
}
|
|
190
193
|
return { ...base, type: "string" };
|
|
191
194
|
case "relation":
|
|
195
|
+
if (f.relation !== void 0) {
|
|
196
|
+
return { ...base, type: "relation", relation: f.relation };
|
|
197
|
+
}
|
|
192
198
|
return { ...base, type: "string" };
|
|
193
199
|
default: {
|
|
194
200
|
f.type;
|
|
@@ -1 +1 @@
|
|
|
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 FactorySignatureEntityField,\n FactoryTraitSignature,\n} from '../types.js';\nimport type { RuleOverlay } from '../overlays.js';\nimport type { EntityField } from '../../types/field.js';\nimport type {\n DomainQuestion,\n DomainQuestionInputType,\n} from './types.js';\n\nexport function generateQuestions(\n plan: ReadonlyArray<FactoryCallSite>,\n catalog: ReadonlyArray<FactorySignature>,\n ruleOverlay?: RuleOverlay,\n): DomainQuestion[] {\n const out: DomainQuestion[] = [];\n const ruleCapabilities = collectRuleCapabilities(ruleOverlay);\n\n for (const call of plan) {\n const signature = findSignature(catalog, call.organism, call.orbital);\n if (!signature) continue;\n out.push(...configKeyQuestions(call, signature));\n out.push(...entityFieldQuestions(call, signature));\n out.push(...capabilityQuestions(call, signature, ruleCapabilities));\n }\n return out;\n}\n\n// ---------------------------------------------------------------------------\n// Config-key questions — derived from the source `config { }` declaration\n// ---------------------------------------------------------------------------\n\nconst TIER_D_NAMED_PRIMITIVES = new Set([\n 'layoutMode',\n 'layoutPattern',\n 'viewPattern',\n 'detailPattern',\n 'detailSlot',\n 'contentTrait',\n]);\n\nconst TIER_D_TYPES = new Set(['trait', 'slot', 'pattern']);\n\nfunction configKeyQuestions(\n call: FactoryCallSite,\n signature: FactorySignature,\n): DomainQuestion[] {\n const out: DomainQuestion[] = [];\n for (const trait of signature.traits) {\n for (const param of trait.overridableConfigKeys) {\n if (param.tier === 'internal') continue;\n if (TIER_D_TYPES.has(param.type)) continue;\n if (param.key.endsWith('Event')) continue;\n if (TIER_D_NAMED_PRIMITIVES.has(param.key)) continue;\n out.push(buildConfigKeyQuestion(call, trait, param));\n }\n }\n return out;\n}\n\nfunction buildConfigKeyQuestion(\n call: FactoryCallSite,\n trait: FactoryTraitSignature,\n param: FactoryConfigParam,\n): DomainQuestion {\n const label = param.label ?? humanizeKey(param.key);\n const question = `${label}?`;\n // Call-site override (organism pre-pinned this knob) takes precedence\n // over the atom-author's default. The question still renders so the\n // user can confirm or change the pre-pinned value.\n const callSiteOverride = callSiteOverrideValue(call, trait.name, param.key);\n const effectiveDefault =\n callSiteOverride !== undefined ? callSiteOverride : param.default;\n const reason =\n param.description ??\n `Customizes \"${param.key}\" on the ${trait.name} trait. ` +\n (effectiveDefault !== undefined\n ? `Default: ${stringifyDefault(effectiveDefault)}.`\n : `No default — leave blank to inherit the factory's behavior.`);\n\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 (effectiveDefault !== undefined) {\n out.defaultValue = effectiveDefault;\n }\n if (param.enumValues && param.enumValues.length > 0) {\n out.suggestedAnswers = param.enumValues;\n }\n if (param.items) {\n out.itemSchema = param.items;\n }\n if (param.properties) {\n out.objectSchema = param.properties;\n }\n if (param.tier) {\n out.tier = param.tier;\n }\n // @description is the knob's own caption, shown under the input; `reason`\n // stays the synthesized \"why we ask\". (Both fall back to the same text\n // when the synthesized reason used the description — the studio shows the\n // caption once.)\n if (param.description) {\n out.helpText = param.description;\n }\n const weight = tierWeight(param.tier);\n out.weight = weight;\n out.priority = weight;\n return out;\n}\n\n/**\n * Impact weight by decision kind — the spine of both the wizard's\n * prescient-first ordering and its Confidence score. policy/domain are the\n * decisions that change what the business does; infra is operational wiring;\n * presentation is polish. Untagged defaults to presentation (1). `internal`\n * never reaches here (filtered in `configKeyQuestions`).\n */\nfunction tierWeight(tier: FactoryConfigParam['tier']): number {\n switch (tier) {\n case 'domain':\n case 'policy':\n return 3;\n case 'infra':\n return 2;\n case 'internal':\n return 0;\n case 'presentation':\n default:\n return 1;\n }\n}\n\nfunction callSiteOverrideValue(\n call: FactoryCallSite,\n traitName: string,\n configKey: string,\n): FactoryParamValue | undefined {\n const override = call.params.traitOverrides?.[traitName];\n if (!override?.config) return undefined;\n if (!Object.prototype.hasOwnProperty.call(override.config, configKey)) {\n return undefined;\n }\n return override.config[configKey] as FactoryParamValue;\n}\n\n/**\n * Pick a widget for a config-key question from the param's typed\n * declaration + its structural carriers. The type tag is lifted\n * verbatim from `.lolo`; `items.properties` and `properties` carry the\n * per-element / per-property schema for structured types so the studio\n * can render a real form instead of a JSON textarea.\n *\n * - `[T]` with `items.properties` → `listOfObjects` (repeatable form)\n * - `[T]` with `enumValues` → `multiselect` (closed checkboxes)\n * - `[T]` otherwise → `tagList` (free-form chips)\n * - `object` with `properties` → `objectForm` (per-property form)\n * - `object` otherwise → `text` (rare; flagged by tests)\n * - `number` / `integer` → `number`\n * - `boolean` → `boolean`\n * - `enum` → `enum`\n * - `string` with `enumValues` → `enum`\n * - `string` → `text`\n */\nexport function deriveInputType(\n param: FactoryConfigParam,\n): DomainQuestionInputType {\n if (param.type.startsWith('[')) {\n if (\n param.items?.properties &&\n Object.keys(param.items.properties).length > 0\n ) {\n return 'listOfObjects';\n }\n if (param.enumValues && param.enumValues.length > 0) {\n return 'multiselect';\n }\n return 'tagList';\n }\n // Typed map (`Map<K,V>`) — a dynamic-key dictionary; edited as an object.\n if (param.type.startsWith('Map<')) {\n return 'objectForm';\n }\n if (param.type === 'object') {\n if (param.properties && Object.keys(param.properties).length > 0) {\n return 'objectForm';\n }\n return 'text';\n }\n switch (param.type) {\n case 'number':\n case 'integer':\n return 'number';\n case 'boolean':\n return 'boolean';\n case 'enum':\n return 'enum';\n case 'string':\n return param.enumValues && param.enumValues.length > 0 ? 'enum' : 'text';\n default:\n return 'text';\n }\n}\n\n/**\n * Humanize a camelCase / kebab-case key into a question prompt\n * fallback when the source `.lolo` doesn't author an explicit label.\n *\n * `itemActions` → `\"Item Actions\"`\n * `owner-field` → `\"Owner Field\"`\n * `URL` → `\"URL\"` (preserves all-caps runs)\n */\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// Entity-field question — lets the user add or override data model fields\n// ---------------------------------------------------------------------------\n\n/**\n * Emit one `fieldList` question per call site that has a canonical entity.\n * The user's answer flows through `answersToMutations` →\n * `set-orbital-entity-fields`, which maps to `applyEntityFields` in\n * `translate.ts` — additive/override semantics (extras only; canonicals are\n * never removed). The `defaultValue` pre-fills the widget with the entity's\n * canonical fields so the user sees the baseline and can extend it.\n *\n * Type note: `FactorySignatureEntityField.type` is `SchemaFieldType` while\n * `EntityField` is a discriminated union with extra required fields for\n * `enum` (needs `values`) and `relation` (needs `relation`). Both are mapped\n * to scalar `string` fields via `signatureFieldToEntityField` to avoid a\n * cast; the data shape seen in `apply-params-to-orb.ts` (the buildEntity\n * consumer) only uses `name`+`type` for the caller-wins merge, so the\n * simplification is safe for this surface.\n */\nfunction entityFieldQuestions(\n call: FactoryCallSite,\n signature: FactorySignature,\n): DomainQuestion[] {\n if (signature.entities.length === 0) return [];\n const entity = signature.entities[0];\n const entityName = call.params.entityName ?? entity.name;\n const defaultFields: ReadonlyArray<EntityField> = entity.fields.map(\n signatureFieldToEntityField,\n );\n const weight = tierWeight('domain');\n return [\n {\n id: `${call.orbital}.__entityFields`,\n orbitalName: call.orbital,\n question: `What fields should a ${entityName} have?`,\n reason: `Defines the data model for ${entityName}. Add domain-specific fields or confirm the canonical defaults.`,\n inputType: 'fieldList',\n mutationTemplate: {\n kind: 'set-orbital-entity-fields',\n orbitalName: call.orbital,\n },\n defaultValue: defaultFields,\n tier: 'domain',\n weight,\n priority: weight,\n },\n ];\n}\n\n/**\n * Map a `FactorySignatureEntityField` to an `EntityField` without unsafe casts.\n * Scalar types translate directly to `ScalarEntityField`. `array` and `object`\n * translate to their variants (no extra required fields). `enum` and `relation`\n * cannot be faithfully represented without their required payloads\n * (`values`/`relation`), so they fall back to `type: 'string'` — the name and\n * metadata are preserved; only the structural constraint is loosened.\n */\nfunction signatureFieldToEntityField(f: FactorySignatureEntityField): EntityField {\n const base = {\n name: f.name,\n required: f.required,\n description: f.description,\n synonyms: f.synonyms,\n intrinsic: f.intrinsic,\n } as const;\n switch (f.type) {\n case 'string':\n case 'number':\n case 'boolean':\n case 'date':\n case 'timestamp':\n case 'datetime':\n return { ...base, type: f.type };\n case 'array':\n return { ...base, type: 'array' };\n case 'object':\n return { ...base, type: 'object' };\n case 'enum':\n // FactorySignatureEntityField carries no `values` array; fall back to\n // string to satisfy EntityField's discriminated union without casting.\n return { ...base, type: 'string' };\n case 'relation':\n // FactorySignatureEntityField carries no `relation` config; fall back.\n return { ...base, type: 'string' };\n default: {\n const _exhaustive: never = f.type;\n return { ...base, type: 'string' };\n }\n }\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 // Capabilities encode governance/policy decisions — high impact.\n weight: 3,\n priority: 3,\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"]}
|
|
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 FactorySignatureEntityField,\n FactoryTraitSignature,\n} from '../types.js';\nimport type { RuleOverlay } from '../overlays.js';\nimport type { EntityField } from '../../types/field.js';\nimport type {\n DomainQuestion,\n DomainQuestionInputType,\n} from './types.js';\n\nexport function generateQuestions(\n plan: ReadonlyArray<FactoryCallSite>,\n catalog: ReadonlyArray<FactorySignature>,\n ruleOverlay?: RuleOverlay,\n): DomainQuestion[] {\n const out: DomainQuestion[] = [];\n const ruleCapabilities = collectRuleCapabilities(ruleOverlay);\n\n for (const call of plan) {\n const signature = findSignature(catalog, call.organism, call.orbital);\n if (!signature) continue;\n out.push(...configKeyQuestions(call, signature));\n out.push(...entityFieldQuestions(call, signature));\n out.push(...capabilityQuestions(call, signature, ruleCapabilities));\n }\n return out;\n}\n\n// ---------------------------------------------------------------------------\n// Config-key questions — derived from the source `config { }` declaration\n// ---------------------------------------------------------------------------\n\nconst TIER_D_NAMED_PRIMITIVES = new Set([\n 'layoutMode',\n 'layoutPattern',\n 'viewPattern',\n 'detailPattern',\n 'detailSlot',\n 'contentTrait',\n]);\n\nconst TIER_D_TYPES = new Set(['trait', 'slot', 'pattern']);\n\nfunction configKeyQuestions(\n call: FactoryCallSite,\n signature: FactorySignature,\n): DomainQuestion[] {\n const out: DomainQuestion[] = [];\n for (const trait of signature.traits) {\n for (const param of trait.overridableConfigKeys) {\n if (param.tier === 'internal') continue;\n if (TIER_D_TYPES.has(param.type)) continue;\n if (param.key.endsWith('Event')) continue;\n if (TIER_D_NAMED_PRIMITIVES.has(param.key)) continue;\n out.push(buildConfigKeyQuestion(call, trait, param));\n }\n }\n return out;\n}\n\nfunction buildConfigKeyQuestion(\n call: FactoryCallSite,\n trait: FactoryTraitSignature,\n param: FactoryConfigParam,\n): DomainQuestion {\n const label = param.label ?? humanizeKey(param.key);\n const question = `${label}?`;\n // Call-site override (organism pre-pinned this knob) takes precedence\n // over the atom-author's default. The question still renders so the\n // user can confirm or change the pre-pinned value.\n const callSiteOverride = callSiteOverrideValue(call, trait.name, param.key);\n const effectiveDefault =\n callSiteOverride !== undefined ? callSiteOverride : param.default;\n const reason =\n param.description ??\n `Customizes \"${param.key}\" on the ${trait.name} trait. ` +\n (effectiveDefault !== undefined\n ? `Default: ${stringifyDefault(effectiveDefault)}.`\n : `No default — leave blank to inherit the factory's behavior.`);\n\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 (effectiveDefault !== undefined) {\n out.defaultValue = effectiveDefault;\n }\n if (param.enumValues && param.enumValues.length > 0) {\n out.suggestedAnswers = param.enumValues;\n }\n if (param.items) {\n out.itemSchema = param.items;\n }\n if (param.properties) {\n out.objectSchema = param.properties;\n }\n if (param.tier) {\n out.tier = param.tier;\n }\n // @description is the knob's own caption, shown under the input; `reason`\n // stays the synthesized \"why we ask\". (Both fall back to the same text\n // when the synthesized reason used the description — the studio shows the\n // caption once.)\n if (param.description) {\n out.helpText = param.description;\n }\n const weight = tierWeight(param.tier);\n out.weight = weight;\n out.priority = weight;\n return out;\n}\n\n/**\n * Impact weight by decision kind — the spine of both the wizard's\n * prescient-first ordering and its Confidence score. policy/domain are the\n * decisions that change what the business does; infra is operational wiring;\n * presentation is polish. Untagged defaults to presentation (1). `internal`\n * never reaches here (filtered in `configKeyQuestions`).\n */\nfunction tierWeight(tier: FactoryConfigParam['tier']): number {\n switch (tier) {\n case 'domain':\n case 'policy':\n return 3;\n case 'infra':\n return 2;\n case 'internal':\n return 0;\n case 'presentation':\n default:\n return 1;\n }\n}\n\nfunction callSiteOverrideValue(\n call: FactoryCallSite,\n traitName: string,\n configKey: string,\n): FactoryParamValue | undefined {\n const override = call.params.traitOverrides?.[traitName];\n if (!override?.config) return undefined;\n if (!Object.prototype.hasOwnProperty.call(override.config, configKey)) {\n return undefined;\n }\n return override.config[configKey] as FactoryParamValue;\n}\n\n/**\n * Pick a widget for a config-key question from the param's typed\n * declaration + its structural carriers. The type tag is lifted\n * verbatim from `.lolo`; `items.properties` and `properties` carry the\n * per-element / per-property schema for structured types so the studio\n * can render a real form instead of a JSON textarea.\n *\n * - `[T]` with `items.properties` → `listOfObjects` (repeatable form)\n * - `[T]` with `enumValues` → `multiselect` (closed checkboxes)\n * - `[T]` otherwise → `tagList` (free-form chips)\n * - `object` with `properties` → `objectForm` (per-property form)\n * - `object` otherwise → `text` (rare; flagged by tests)\n * - `number` / `integer` → `number`\n * - `boolean` → `boolean`\n * - `enum` → `enum`\n * - `string` with `enumValues` → `enum`\n * - `string` → `text`\n */\nexport function deriveInputType(\n param: FactoryConfigParam,\n): DomainQuestionInputType {\n if (param.type.startsWith('[')) {\n if (\n param.items?.properties &&\n Object.keys(param.items.properties).length > 0\n ) {\n return 'listOfObjects';\n }\n if (param.enumValues && param.enumValues.length > 0) {\n return 'multiselect';\n }\n return 'tagList';\n }\n // Typed map (`Map<K,V>`) — a dynamic-key dictionary; edited as an object.\n if (param.type.startsWith('Map<')) {\n return 'objectForm';\n }\n if (param.type === 'object') {\n if (param.properties && Object.keys(param.properties).length > 0) {\n return 'objectForm';\n }\n return 'text';\n }\n switch (param.type) {\n case 'number':\n case 'integer':\n return 'number';\n case 'boolean':\n return 'boolean';\n case 'enum':\n return 'enum';\n case 'string':\n return param.enumValues && param.enumValues.length > 0 ? 'enum' : 'text';\n default:\n return 'text';\n }\n}\n\n/**\n * Humanize a camelCase / kebab-case key into a question prompt\n * fallback when the source `.lolo` doesn't author an explicit label.\n *\n * `itemActions` → `\"Item Actions\"`\n * `owner-field` → `\"Owner Field\"`\n * `URL` → `\"URL\"` (preserves all-caps runs)\n */\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// Entity-field question — lets the user add or override data model fields\n// ---------------------------------------------------------------------------\n\n/**\n * Emit one `fieldList` question per call site that has a canonical entity.\n * The user's answer flows through `answersToMutations` →\n * `set-orbital-entity-fields`, which maps to `applyEntityFields` in\n * `translate.ts` — additive/override semantics (extras only; canonicals are\n * never removed). The `defaultValue` pre-fills the widget with the entity's\n * canonical fields so the user sees the baseline and can extend it.\n *\n * Type note: `FactorySignatureEntityField.type` is `SchemaFieldType` while\n * `EntityField` is a discriminated union. `signatureFieldToEntityField` maps\n * each variant faithfully: enum fields carry `values`, relation fields carry\n * `relation`. When the payload is absent the field degrades to `string` rather\n * than producing an invalid variant.\n */\nfunction entityFieldQuestions(\n call: FactoryCallSite,\n signature: FactorySignature,\n): DomainQuestion[] {\n if (signature.entities.length === 0) return [];\n const entity = signature.entities[0];\n const entityName = call.params.entityName ?? entity.name;\n const defaultFields: ReadonlyArray<EntityField> = entity.fields.map(\n signatureFieldToEntityField,\n );\n const weight = tierWeight('domain');\n return [\n {\n id: `${call.orbital}.__entityFields`,\n orbitalName: call.orbital,\n question: `What fields should a ${entityName} have?`,\n reason: `Defines the data model for ${entityName}. Add domain-specific fields or confirm the canonical defaults.`,\n inputType: 'fieldList',\n mutationTemplate: {\n kind: 'set-orbital-entity-fields',\n orbitalName: call.orbital,\n },\n defaultValue: defaultFields,\n tier: 'domain',\n weight,\n priority: weight,\n },\n ];\n}\n\n/**\n * Map a `FactorySignatureEntityField` to an `EntityField` without unsafe casts.\n * Scalar types translate directly to `ScalarEntityField`. `array` and `object`\n * translate to their variants (no extra required fields). `enum` produces an\n * `EnumEntityField` when `values` is present, otherwise falls back to `string`.\n * `relation` produces a `RelationEntityField` when `relation` is present, otherwise\n * falls back to `string`.\n */\nfunction signatureFieldToEntityField(f: FactorySignatureEntityField): EntityField {\n const base = {\n name: f.name,\n required: f.required,\n description: f.description,\n synonyms: f.synonyms,\n intrinsic: f.intrinsic,\n } as const;\n switch (f.type) {\n case 'string':\n case 'number':\n case 'boolean':\n case 'date':\n case 'timestamp':\n case 'datetime':\n return { ...base, type: f.type };\n case 'array':\n return { ...base, type: 'array' };\n case 'object':\n return { ...base, type: 'object' };\n case 'enum':\n if (Array.isArray(f.values) && f.values.length > 0) {\n return { ...base, type: 'enum', values: f.values };\n }\n // No values present — safe fallback; payload would be invalid without them.\n return { ...base, type: 'string' };\n case 'relation':\n if (f.relation !== undefined) {\n return { ...base, type: 'relation', relation: f.relation };\n }\n // No relation config present — safe fallback.\n return { ...base, type: 'string' };\n default: {\n const _exhaustive: never = f.type;\n return { ...base, type: 'string' };\n }\n }\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 // Capabilities encode governance/policy decisions — high impact.\n weight: 3,\n priority: 3,\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
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import { a as OrbitalDefinition, O as OrbitalSchema } from './schema-
|
|
2
|
-
export { A as AGENT_DOMAIN_CATEGORIES, d as ALLOWED_CUSTOM_COMPONENTS, e as AgentDomainCategory, f as AgentDomainCategorySchema, g as AllowedCustomComponent, C as ColorSlice, h as ColorSliceSchema, i as ColorTokens, j as ColorTokensSchema, k as ComputedEventContract, l as ComputedEventContractSchema, m as ComputedEventListener, n as ComputedEventListenerSchema, o as ConfigProvenanceRecord, p as ConfigProvenanceRecordSchema, q as CustomPatternDefinition, r as CustomPatternDefinitionInput, s as CustomPatternDefinitionSchema, t as CustomPatternMap, u as CustomPatternMapInput, v as CustomPatternMapSchema, D as DensitySlice, w as DensitySliceSchema, x as DensityTokens, y as DensityTokensSchema, z as DesignPreferences, B as DesignPreferencesInput, F as DesignPreferencesSchema, G as DesignTokens, H as DesignTokensInput, I as DesignTokensSchema, J as DomainCategory, K as DomainCategorySchema, L as DomainContext, M as DomainContextInput, N as DomainContextSchema, Q as DomainVocabulary, R as DomainVocabularySchema, S as ElevationSlice, T as ElevationSliceSchema, V as ElevationTokens, W as ElevationTokensSchema, X as EntityCall, Y as EntityCallSchema, E as EntityRef, Z as EntityRefSchema, _ as EntityRefStringSchema, $ as EntitySemanticRole, a0 as EntitySemanticRoleSchema, a1 as EventListener, a2 as EventListenerSchema, a3 as EventSemanticRole, a4 as EventSemanticRoleSchema, a5 as EventSource, a6 as EventSourceSchema, a7 as FullOrbitalUnit, a8 as GameSubCategory, a9 as GameSubCategorySchema, aa as GeometrySlice, ab as GeometrySliceSchema, ac as GeometryTokens, ad as GeometryTokensSchema, ae as IconFamily, af as IconFamilySchema, ag as IconographySlice, ah as IconographySliceSchema, ai as IconographyTokens, aj as IconographyTokensSchema, ak as IllustrationSlice, al as IllustrationSliceSchema, am as IllustrationStyle, an as IllustrationStyleSchema, ao as IllustrationTokens, ap as IllustrationTokensSchema, aq as MotionDurationKey, ar as MotionDurationKeySchema, as as MotionDurationPalette, at as MotionDurationPaletteSchema, au as MotionEasingKey, av as MotionEasingKeySchema, aw as MotionEasingPalette, ax as MotionEasingPaletteSchema, ay as MotionIntent, az as MotionIntentMap, aA as MotionIntentMapSchema, aB as MotionIntentSchema, aC as MotionSlice, aD as MotionSliceSchema, aE as MotionTokens, aF as MotionTokensSchema, aG as NodeClassification, aH as NodeClassificationSchema, a7 as Orbital, aI as OrbitalConfig, aJ as OrbitalConfigInput, aK as OrbitalConfigSchema, aL as OrbitalDefinitionSchema, aM as OrbitalInput, aN as OrbitalPage, aO as OrbitalPageInput, aP as OrbitalPageSchema, aQ as OrbitalPageStrictInput, aR as OrbitalPageStrictSchema, aS as OrbitalSchemaInput, aT as OrbitalSchemaSchema, aU as OrbitalSchemaWithTraits, aV as OrbitalUnit, aW as OrbitalUnitSchema, aX as OrbitalZodSchema, b as Page, P as PageRef, c as PageRefObject, aY as PageRefObjectSchema, aZ as PageRefSchema, a_ as PageRefStringSchema, a$ as PageSchema, b0 as PageTraitRef, b1 as PageTraitRefSchema, b2 as RelatedLink, b3 as RelatedLinkSchema, b4 as SchemaMetadata, b5 as SchemaMetadataSchema, b6 as SkinSpec, b7 as SkinSpecSchema, b8 as SpacingScale, b9 as SpacingScaleSchema, ba as StateSemanticRole, bb as StateSemanticRoleSchema, bc as SuggestedGuard, bd as SuggestedGuardSchema, be as ThemeDefinition, bf as ThemeDefinitionSchema, bg as ThemeRef, bh as ThemeRefSchema, bi as ThemeRefStringSchema, bj as ThemeTokens, bk as ThemeTokensSchema, bl as ThemeVariant, bm as ThemeVariantSchema, bn as TypeIntent, bo as TypeIntentMap, bp as TypeIntentMapSchema, bq as TypeIntentSchema, br as TypeScale, bs as TypeScaleEntry, bt as TypeScaleEntrySchema, bu as TypeScaleSchema, bv as TypeScaleTokens, bw as TypeScaleTokensSchema, bx as TypeSizeKey, by as TypeSizeKeySchema, bz as TypeSlice, bA as TypeSliceSchema, bB as TypeSlot, bC as TypeSlotSchema, bD as TypeWeight, bE as TypeWeightSchema, bF as UXHints, bG as UXHintsSchema, U as UseDeclaration, bH as UseDeclarationSchema, bI as UserPersona, bJ as UserPersonaInput, bK as UserPersonaSchema, bL as ViewType, bM as ViewTypeSchema, bN as isEntityCall, bO as isEntityReference, bP as isEntityReferenceAny, bQ as isImportedTraitRef, bR as isOrbitalDefinition, bS as isPageReference, bT as isPageReferenceObject, bU as isPageReferenceString, bV as isThemeReference, bW as parseEntityRef, bX as parseImportedTraitRef, bY as parseOrbitalSchema, bZ as parsePageRef, b_ as safeParseOrbitalSchema } from './schema-
|
|
3
|
-
import {
|
|
4
|
-
export { A as ASSET_ASPECTS,
|
|
1
|
+
import { a as OrbitalDefinition, O as OrbitalSchema } from './schema-C4ia6wFF.js';
|
|
2
|
+
export { A as AGENT_DOMAIN_CATEGORIES, d as ALLOWED_CUSTOM_COMPONENTS, e as AgentDomainCategory, f as AgentDomainCategorySchema, g as AllowedCustomComponent, C as ColorSlice, h as ColorSliceSchema, i as ColorTokens, j as ColorTokensSchema, k as ComputedEventContract, l as ComputedEventContractSchema, m as ComputedEventListener, n as ComputedEventListenerSchema, o as ConfigProvenanceRecord, p as ConfigProvenanceRecordSchema, q as CustomPatternDefinition, r as CustomPatternDefinitionInput, s as CustomPatternDefinitionSchema, t as CustomPatternMap, u as CustomPatternMapInput, v as CustomPatternMapSchema, D as DensitySlice, w as DensitySliceSchema, x as DensityTokens, y as DensityTokensSchema, z as DesignPreferences, B as DesignPreferencesInput, F as DesignPreferencesSchema, G as DesignTokens, H as DesignTokensInput, I as DesignTokensSchema, J as DomainCategory, K as DomainCategorySchema, L as DomainContext, M as DomainContextInput, N as DomainContextSchema, Q as DomainVocabulary, R as DomainVocabularySchema, S as ElevationSlice, T as ElevationSliceSchema, V as ElevationTokens, W as ElevationTokensSchema, X as EntityCall, Y as EntityCallSchema, E as EntityRef, Z as EntityRefSchema, _ as EntityRefStringSchema, $ as EntitySemanticRole, a0 as EntitySemanticRoleSchema, a1 as EventListener, a2 as EventListenerSchema, a3 as EventSemanticRole, a4 as EventSemanticRoleSchema, a5 as EventSource, a6 as EventSourceSchema, a7 as FullOrbitalUnit, a8 as GameSubCategory, a9 as GameSubCategorySchema, aa as GeometrySlice, ab as GeometrySliceSchema, ac as GeometryTokens, ad as GeometryTokensSchema, ae as IconFamily, af as IconFamilySchema, ag as IconographySlice, ah as IconographySliceSchema, ai as IconographyTokens, aj as IconographyTokensSchema, ak as IllustrationSlice, al as IllustrationSliceSchema, am as IllustrationStyle, an as IllustrationStyleSchema, ao as IllustrationTokens, ap as IllustrationTokensSchema, aq as MotionDurationKey, ar as MotionDurationKeySchema, as as MotionDurationPalette, at as MotionDurationPaletteSchema, au as MotionEasingKey, av as MotionEasingKeySchema, aw as MotionEasingPalette, ax as MotionEasingPaletteSchema, ay as MotionIntent, az as MotionIntentMap, aA as MotionIntentMapSchema, aB as MotionIntentSchema, aC as MotionSlice, aD as MotionSliceSchema, aE as MotionTokens, aF as MotionTokensSchema, aG as NodeClassification, aH as NodeClassificationSchema, a7 as Orbital, aI as OrbitalConfig, aJ as OrbitalConfigInput, aK as OrbitalConfigSchema, aL as OrbitalDefinitionSchema, aM as OrbitalInput, aN as OrbitalPage, aO as OrbitalPageInput, aP as OrbitalPageSchema, aQ as OrbitalPageStrictInput, aR as OrbitalPageStrictSchema, aS as OrbitalSchemaInput, aT as OrbitalSchemaSchema, aU as OrbitalSchemaWithTraits, aV as OrbitalUnit, aW as OrbitalUnitSchema, aX as OrbitalZodSchema, b as Page, P as PageRef, c as PageRefObject, aY as PageRefObjectSchema, aZ as PageRefSchema, a_ as PageRefStringSchema, a$ as PageSchema, b0 as PageTraitRef, b1 as PageTraitRefSchema, b2 as RelatedLink, b3 as RelatedLinkSchema, b4 as SchemaMetadata, b5 as SchemaMetadataSchema, b6 as SkinSpec, b7 as SkinSpecSchema, b8 as SpacingScale, b9 as SpacingScaleSchema, ba as StateSemanticRole, bb as StateSemanticRoleSchema, bc as SuggestedGuard, bd as SuggestedGuardSchema, be as ThemeDefinition, bf as ThemeDefinitionSchema, bg as ThemeRef, bh as ThemeRefSchema, bi as ThemeRefStringSchema, bj as ThemeTokens, bk as ThemeTokensSchema, bl as ThemeVariant, bm as ThemeVariantSchema, bn as TypeIntent, bo as TypeIntentMap, bp as TypeIntentMapSchema, bq as TypeIntentSchema, br as TypeScale, bs as TypeScaleEntry, bt as TypeScaleEntrySchema, bu as TypeScaleSchema, bv as TypeScaleTokens, bw as TypeScaleTokensSchema, bx as TypeSizeKey, by as TypeSizeKeySchema, bz as TypeSlice, bA as TypeSliceSchema, bB as TypeSlot, bC as TypeSlotSchema, bD as TypeWeight, bE as TypeWeightSchema, bF as UXHints, bG as UXHintsSchema, U as UseDeclaration, bH as UseDeclarationSchema, bI as UserPersona, bJ as UserPersonaInput, bK as UserPersonaSchema, bL as ViewType, bM as ViewTypeSchema, bN as isEntityCall, bO as isEntityReference, bP as isEntityReferenceAny, bQ as isImportedTraitRef, bR as isOrbitalDefinition, bS as isPageReference, bT as isPageReferenceObject, bU as isPageReferenceString, bV as isThemeReference, bW as parseEntityRef, bX as parseImportedTraitRef, bY as parseOrbitalSchema, bZ as parsePageRef, b_ as safeParseOrbitalSchema } from './schema-C4ia6wFF.js';
|
|
3
|
+
import { p as State } from './trait-CKueAwP9.js';
|
|
4
|
+
export { A as ASSET_ASPECTS, q as ASSET_DIMENSIONS, r as AgentEffect, s as AnimationDef, t as AnimationDefInput, u as AnimationDefSchema, v as ArrayEntityField, w as Asset, x as AssetAspect, y as AssetAspectSchema, z as AssetCatalog, B as AssetCatalogEntry, D as AssetCatalogEntryInput, F as AssetCatalogEntrySchema, G as AssetCatalogSchema, H as AssetDimension, I as AssetDimensionSchema, J as AssetMap, K as AssetMapInput, L as AssetMapSchema, M as AssetMapping, N as AssetMappingInput, O as AssetMappingSchema, P as AssetSchema, Q as AssetUrl, V as AtomicEffect, W as CallServiceConfig, X as CallServiceEffect, C as CallSiteConfig, Y as CallSiteConfigEntry, Z as CheckpointLoadEffect, _ as CheckpointSaveEffect, n as ConfigFieldDeclaration, $ as ConfigFieldDeclarationSchema, a0 as DeclaredTraitConfig, a1 as DeclaredTraitConfigSchema, a2 as DerefEffect, a3 as DespawnEffect, a4 as DoEffect, a5 as ENTITY_ROLES, E as Effect, a6 as EffectInput, a7 as EffectSchema, a8 as EmitConfig, a9 as EmitEffect, d as Entity, aa as EntityData, f as EntityField, ab as EntityFieldContract, ac as EntityFieldContractSchema, ad as EntityFieldInput, ae as EntityFieldSchema, g as EntityPersistence, af as EntityPersistenceSchema, ag as EntityRole, ah as EntityRoleSchema, h as EntityRow, ai as EntitySchema, aj as EntityWith, ak as EnumEntityField, al as EvaluateConfig, am as EvaluateEffect, an as Event, ao as EventInput, m as EventPayloadField, ap as EventPayloadFieldSchema, aq as EventSchema, ar as EventScope, as as EventScopeSchema, at as FetchEffect, au as FetchOptions, av as FetchResult, aw as Field, ax as FieldFormat, ay as FieldFormatSchema, az as FieldSchema, aA as FieldType, aB as FieldTypeSchema, aC as FieldValue, aD as ForwardConfig, aE as ForwardEffect, aF as GAME_TYPES, aG as GameType, aH as GameTypeSchema, aI as Guard, aJ as GuardInput, aK as GuardSchema, aL as ListenSource, aM as ListenSourceSchema, aN as LogEffect, aO as McpServiceDef, aP as McpServiceDefSchema, aQ as NavigateEffect, aR as NnConfig, aS as NnLayer, aT as NotifyEffect, aU as OrbitalEntity, aV as OrbitalEntityInput, aW as OrbitalEntitySchema, aX as OrbitalTraitRef, aY as OrbitalTraitRefSchema, aZ as OsEffect, a_ as PayloadField, a$ as PayloadFieldSchema, b0 as PersistData, b1 as PersistEffect, b2 as PersistEmitConfig, b3 as PresentationType, b4 as RefEffect, k as RelationConfig, b5 as RelationConfigSchema, b6 as RelationEntityField, R as RenderBinding, b7 as RenderItemLambda, b8 as RenderUIConfig, b as RenderUIEffect, b9 as RenderUINode, ba as RequiredField, bb as RequiredFieldSchema, bc as ResolvedAsset, bd as ResolvedAssetInput, be as ResolvedAssetSchema, bf as ResolvedPatternProps, bg as RestAuthConfig, bh as RestAuthConfigSchema, bi as RestServiceDef, bj as RestServiceDefSchema, bk as SERVICE_TYPES, bl as ScalarEntityField, bm as SemanticAssetRef, bn as SemanticAssetRefInput, bo as SemanticAssetRefSchema, o as ServiceDefinition, bp as ServiceDefinitionSchema, bq as ServiceParams, br as ServiceParamsValue, S as ServiceRef, bs as ServiceRefObject, bt as ServiceRefObjectSchema, bu as ServiceRefSchema, bv as ServiceRefStringSchema, bw as ServiceType, bx as ServiceTypeSchema, by as SetEffect, bz as SocketEvents, bA as SocketEventsSchema, bB as SocketServiceDef, bC as SocketServiceDefSchema, bD as SpawnEffect, bE as StateInput, bF as StateMachine, bG as StateMachineInput, bH as StateMachineSchema, bI as StateSchema, bJ as SwapEffect, bK as TrainConfig, bL as TrainEffect, a as Trait, bM as TraitCategory, bN as TraitCategorySchema, T as TraitConfig, l as TraitConfigObject, bO as TraitConfigSchema, bP as TraitConfigValue, bQ as TraitConfigValueSchema, bR as TraitDataEntity, bS as TraitDataEntitySchema, bT as TraitEntityField, bU as TraitEntityFieldSchema, c as TraitEventContract, bV as TraitEventContractSchema, e as TraitEventListener, bW as TraitEventListenerSchema, bX as TraitInput, i as TraitRef, bY as TraitRefSchema, j as TraitReference, bZ as TraitReferenceInput, b_ as TraitReferenceSchema, b$ as TraitSchema, c0 as TraitTick, c1 as TraitTickSchema, c2 as TraitUIBinding, c3 as Transition, c4 as TransitionInput, c5 as TransitionSchema, c6 as TypedEffect, U as UISlot, c7 as UISlotSchema, c8 as UI_SLOTS, c9 as VISUAL_STYLES, ca as VisualStyle, cb as VisualStyleSchema, cc as WatchEffect, cd as WatchOptions, ce as atomic, cf as callService, cg as createAssetKey, ch as deref, ci as deriveCollection, cj as despawn, ck as doEffects, cl as emit, cm as findService, cn as getDefaultAnimationsForRole, co as getServiceNames, cp as getTraitConfig, cq as getTraitName, cr as hasService, cs as isCallSiteConfigDeclaration, ct as isCircuitEvent, cu as isEffect, cv as isInlineTrait, cw as isMcpService, cx as isRestService, cy as isRuntimeEntity, cz as isSExprEffect, cA as isServiceReference, cB as isServiceReferenceObject, cC as isSingletonEntity, cD as isSocketService, cE as navigate, cF as normalizeTraitRef, cG as notify, cH as parseAssetKey, cI as parseServiceRef, cJ as persist, cK as ref, cL as renderUI, cM as set, cN as spawn, cO as swap, cP as validateAssetAnimations, cQ as watch } from './trait-CKueAwP9.js';
|
|
5
5
|
export { C as CORE_BINDINGS, a as CoreBinding, b as EvalContext, c as EventPayload, d as EventPayloadValue, E 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-BUIi9ezJ.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, AnnotationTier, 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, EdgeType, EditFlow, EffectPayload, EffectResult, EffectTrace, EventEmit, EventKey, EventListen, EventLogEntry, EvolutionDelta, GateState, GitHubLink, HistoryMeta, InteractionModel, InteractionModelInput, InteractionModelSchema, KNOWN_VALIDATION_ERROR_CODES, KnobPayload, KnownValidationErrorCode, LazyService, LineageEntry, ListInteraction, LivingEdge, LivingEffect, LivingEntity, LivingEvent, LivingField, LivingOrbital, LivingOrbitalSchema, LivingPage, LivingState, LivingTrait, LivingTransition, LivingValue, LivingVertex, OrbitalVerificationAPI, ParsedDesign, ParsedDomainContext, ParsedEmitDeclaration, ParsedEntity, ParsedEvent, ParsedListenDeclaration, ParsedOrbital, ParsedPage, ParsedState, ParsedStateMachine, ParsedTrait, ParsedTraitConfig, ParsedTransition, PatternTypeSchema, PersistActionName, Probability, ResolvedEntityBinding, ResolvedField, ResolvedNavigation, ResolvedPattern, ResolvedSection, ResolvedSectionEvent, ResolvedTraitBinding, ResolvedTraitDataEntity, ResolvedTraitEvent, ResolvedTraitGuard, ResolvedTraitListener, ResolvedTraitState, ResolvedTraitTick, ResolvedTraitTransition, ResolvedTraitUIBinding, SaveOptions, SaveResult, SemanticAnnotation, SemanticChangeKind, SemanticVector, ServerResponseTrace, ServiceAction, ServiceActionName, ServiceContract, ServiceEvents, SnapshotDocument, StatsView, StoreContract, StoreFilter, StoreFilterOp, TraitFieldRef, TraitFieldRefSchema, TraitStateSnapshot, TransitionFrom, TransitionTrace, Unsubscribe, ValidationDocument, ValidationError, ValidationErrorCode, ValidationIssue, ValidationMeta, ValidationResult, ValidationResults, VerificationCheck, VerificationSnapshot, VerificationSummary, VertexId, VertexPayload, VertexType, ViewFlow, createEmptyResolvedPage, createEmptyResolvedTrait, createLazyService, createResolvedField, createTypedEventBus, getAllPatternTypes, getBindingExamples, getInteractionModelForDomain, inferTsType, isKnownValidationErrorCode, isResolvedIR, isTraitFieldRef, toBindingRoot, validateBindingInContext, widenTier } from './types/index.js';
|
|
8
|
-
import { T as ToolArgs, J as JsonValue } from './types-
|
|
9
|
-
export { F as FactoryCallSite, a as FactoryCallSiteParams, b as FactoryConfigParam, c as FactoryConfigTier, d as FactoryEntitySignature, e as FactoryEventSignature, f as FactoryPageSignature, g as FactoryParamValue, h as FactorySignature, i as FactorySignatureCatalog, j as FactorySignatureEntityField, k as FactoryTraitSignature, l as JsonObject, m as JsonSchema, n as JsonSchemaType, O as OwnershipOverlayEntry, P as PresentationNavItem, o as PresentationOverlay, R as RuleOverlay, p as RuleOverlayEntry, S as SchemaFieldType, q as TraitOverlay, r as TraitOverlayEntry, s as TraitOverlayListener, t as isJsonArray, u as isJsonObject, v as isJsonPrimitive } from './types-
|
|
8
|
+
import { T as ToolArgs, J as JsonValue } from './types-DzmFPbo4.js';
|
|
9
|
+
export { F as FactoryCallSite, a as FactoryCallSiteParams, b as FactoryConfigParam, c as FactoryConfigTier, d as FactoryEntitySignature, e as FactoryEventSignature, f as FactoryPageSignature, g as FactoryParamValue, h as FactorySignature, i as FactorySignatureCatalog, j as FactorySignatureEntityField, k as FactoryTraitSignature, l as JsonObject, m as JsonSchema, n as JsonSchemaType, O as OwnershipOverlayEntry, P as PresentationNavItem, o as PresentationOverlay, R as RuleOverlay, p as RuleOverlayEntry, S as SchemaFieldType, q as TraitOverlay, r as TraitOverlayEntry, s as TraitOverlayListener, t as isJsonArray, u as isJsonObject, v as isJsonPrimitive } from './types-DzmFPbo4.js';
|
|
10
10
|
export { CallSiteDiff, DomainQuestion, DomainQuestionAnswer, DomainQuestionAnswers, DomainQuestionInputType, FactoryCallPlanMutation, FactoryCallPlanMutationTemplate, FactoryCallPlanState, OrbitalCallInput, TranslationBinding, TranslationResult, TranslationWarning, answerToMutations, answersToMutations, applyFactoryCallPlanMutation, deriveInputType, diffFactoryCalls, generateQuestions, translateOverlaysToParams } from './factory/index.js';
|
|
11
|
-
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-
|
|
11
|
+
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-CQCfFBnR.js';
|
|
12
12
|
export { PATTERN_TYPES, PatternConfig, PatternType, isValidPatternType } from '@almadar/patterns';
|
|
13
13
|
export { BFSNode, BFSPathNode, EdgeWalkTransition, GraphTransition, GuardPayload, ReplayStep, ReplayTransition, StateEdge, WalkStep, buildEdgeCoveringWalk, buildGuardPayloads, buildReplayPaths, buildStateGraph, collectReachableStates, constTruth, extractPayloadFieldRef, walkStatePairs } from './state-machine/index.js';
|
|
14
14
|
import 'zod';
|
package/dist/index.js
CHANGED
|
@@ -3176,8 +3176,14 @@ function signatureFieldToEntityField(f) {
|
|
|
3176
3176
|
case "object":
|
|
3177
3177
|
return { ...base, type: "object" };
|
|
3178
3178
|
case "enum":
|
|
3179
|
+
if (Array.isArray(f.values) && f.values.length > 0) {
|
|
3180
|
+
return { ...base, type: "enum", values: f.values };
|
|
3181
|
+
}
|
|
3179
3182
|
return { ...base, type: "string" };
|
|
3180
3183
|
case "relation":
|
|
3184
|
+
if (f.relation !== void 0) {
|
|
3185
|
+
return { ...base, type: "relation", relation: f.relation };
|
|
3186
|
+
}
|
|
3181
3187
|
return { ...base, type: "string" };
|
|
3182
3188
|
default: {
|
|
3183
3189
|
f.type;
|