@almadar/core 8.3.0 → 8.5.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/builders.js +1 -0
- package/dist/builders.js.map +1 -1
- package/dist/{compose-behaviors-DsgVjsAB.d.ts → compose-behaviors-TSp2c_dn.d.ts} +1 -1
- package/dist/factory/index.d.ts +142 -73
- package/dist/factory/index.js +6 -1
- package/dist/factory/index.js.map +1 -1
- package/dist/index.d.ts +6 -6
- package/dist/index.js +7 -1
- package/dist/index.js.map +1 -1
- package/dist/{schema-Cov1FvVJ.d.ts → schema-Dp98Xt5i.d.ts} +1 -1
- package/dist/{trait-g5-2JR48.d.ts → trait-BV1DyJ2A.d.ts} +6 -0
- package/dist/types/index.d.ts +4 -4
- package/dist/types/index.js +1 -0
- package/dist/types/index.js.map +1 -1
- package/package.json +1 -1
package/dist/factory/index.d.ts
CHANGED
|
@@ -1,8 +1,98 @@
|
|
|
1
|
-
import { B as EntityField, H as EntityPersistence, bz as TraitReference
|
|
1
|
+
import { bu as TraitEventListener, B as EntityField, H as EntityPersistence, bz as TraitReference } from '../trait-BV1DyJ2A.js';
|
|
2
2
|
import 'zod';
|
|
3
3
|
import '../expression-BVRFm0sV.js';
|
|
4
4
|
import '@almadar/patterns';
|
|
5
5
|
|
|
6
|
+
/**
|
|
7
|
+
* Cross-cutting presentation knobs that don't live per orbital
|
|
8
|
+
* because they're factory-layer concerns (nav items live on a layout
|
|
9
|
+
* trait; theme is a separate `ThemeRef`). The translator reads these
|
|
10
|
+
* and threads them into the matching factory params.
|
|
11
|
+
*/
|
|
12
|
+
interface PresentationOverlay {
|
|
13
|
+
/** Nav items to add to the orbital's layout trait. The translator
|
|
14
|
+
* looks for a `signature.traits[i]` with `overridableConfigKeys`
|
|
15
|
+
* including `navItems` and writes into `traitOverrides[name].config.navItems`. */
|
|
16
|
+
navAdditions?: ReadonlyArray<PresentationNavItem>;
|
|
17
|
+
/** Optional theme ref override for the orbital. */
|
|
18
|
+
themeRef?: string;
|
|
19
|
+
}
|
|
20
|
+
interface PresentationNavItem {
|
|
21
|
+
label: string;
|
|
22
|
+
path: string;
|
|
23
|
+
icon?: string;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* LLM-authored trait-level overrides keyed by trait name (matches
|
|
27
|
+
* `signature.traits[].name`). Each entry's `config` keys are validated
|
|
28
|
+
* against `signature.traits[i].overridableConfigKeys`.
|
|
29
|
+
*/
|
|
30
|
+
type TraitOverlay = Readonly<Record<string, TraitOverlayEntry>>;
|
|
31
|
+
interface TraitOverlayEntry {
|
|
32
|
+
config?: Readonly<Record<string, FactoryParamValue>>;
|
|
33
|
+
linkedEntity?: string;
|
|
34
|
+
events?: Readonly<Record<string, string>>;
|
|
35
|
+
name?: string;
|
|
36
|
+
emitsScope?: 'internal' | 'external';
|
|
37
|
+
listens?: ReadonlyArray<TraitEventListener>;
|
|
38
|
+
}
|
|
39
|
+
type TraitOverlayListener = TraitEventListener;
|
|
40
|
+
/**
|
|
41
|
+
* Rules carry a free-form `capability: string` that the translator
|
|
42
|
+
* matches against `signature.traits[].capabilities` (source-tagged
|
|
43
|
+
* in `.lolo`).
|
|
44
|
+
*/
|
|
45
|
+
interface RuleOverlay {
|
|
46
|
+
rules: ReadonlyArray<RuleOverlayEntry>;
|
|
47
|
+
/** Entity-level ownership signal. The translator threads it into
|
|
48
|
+
* the matched trait's `config.ownerField` (when the matched trait
|
|
49
|
+
* advertises that key in `overridableConfigKeys`). */
|
|
50
|
+
ownership?: ReadonlyArray<OwnershipOverlayEntry>;
|
|
51
|
+
}
|
|
52
|
+
interface RuleOverlayEntry {
|
|
53
|
+
id: string;
|
|
54
|
+
/** Free-form capability label, matched against
|
|
55
|
+
* `signature.traits[].capabilities` by exact set membership. */
|
|
56
|
+
capability: string;
|
|
57
|
+
description: string;
|
|
58
|
+
/** Entity names this rule binds to. Empty array = cross-cutting. */
|
|
59
|
+
appliesTo: ReadonlyArray<string>;
|
|
60
|
+
/** Optional role name (e.g. `"admin"`) when the rule is role-scoped. */
|
|
61
|
+
role?: string;
|
|
62
|
+
/** Optional extra config knobs threaded into the matched trait's
|
|
63
|
+
* `config`. Validated against the trait's `overridableConfigKeys`. */
|
|
64
|
+
config?: Readonly<Record<string, FactoryParamValue>>;
|
|
65
|
+
}
|
|
66
|
+
interface OwnershipOverlayEntry {
|
|
67
|
+
/** Entity name (matches the orbital's bound entity name). */
|
|
68
|
+
entity: string;
|
|
69
|
+
/** Field name on the entity that carries the owner identifier. */
|
|
70
|
+
ownerField: string;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* Recursive JSON Schema. Intentionally narrow — only the keywords V2's
|
|
75
|
+
* signature → schema generator emits. Custom `x-*` extensions carry
|
|
76
|
+
* descriptive metadata (synonyms, label) that doesn't shape validation
|
|
77
|
+
* but stays in the schema for prompt rendering / studio UIs.
|
|
78
|
+
*/
|
|
79
|
+
interface JsonSchema {
|
|
80
|
+
type?: JsonSchemaType | ReadonlyArray<JsonSchemaType>;
|
|
81
|
+
description?: string;
|
|
82
|
+
properties?: Readonly<Record<string, JsonSchema>>;
|
|
83
|
+
required?: ReadonlyArray<string>;
|
|
84
|
+
additionalProperties?: boolean | JsonSchema;
|
|
85
|
+
items?: JsonSchema;
|
|
86
|
+
enum?: ReadonlyArray<string | number | boolean>;
|
|
87
|
+
oneOf?: ReadonlyArray<JsonSchema>;
|
|
88
|
+
anyOf?: ReadonlyArray<JsonSchema>;
|
|
89
|
+
default?: string | number | boolean | ReadonlyArray<unknown> | Readonly<Record<string, unknown>> | null;
|
|
90
|
+
/** Knob's `@synonyms` from the source `.lolo`. */
|
|
91
|
+
'x-synonyms'?: string;
|
|
92
|
+
/** Knob's `@label` from the source `.lolo`. */
|
|
93
|
+
'x-label'?: string;
|
|
94
|
+
}
|
|
95
|
+
type JsonSchemaType = 'string' | 'number' | 'integer' | 'boolean' | 'array' | 'object' | 'null';
|
|
6
96
|
/**
|
|
7
97
|
* OrbitalSchema field type tags. The factory-signature extractor lifts
|
|
8
98
|
* these directly from the resolved `.orb`; consumers narrow further at
|
|
@@ -57,6 +147,16 @@ interface FactoryConfigParam {
|
|
|
57
147
|
description?: string;
|
|
58
148
|
/** Optional closed-enum value set. Lifted from `.lolo` enum syntax. */
|
|
59
149
|
enumValues?: ReadonlyArray<string>;
|
|
150
|
+
/** Array element schema when the slot's type is `[T]`. Mirrors the
|
|
151
|
+
* `.orb` `ConfigField.items` carrier (`FieldDefinition`-shaped). Lets
|
|
152
|
+
* consumers see the per-element typing — e.g. `metrics : [MetricSpec]`
|
|
153
|
+
* exposes `items.properties` with every MetricSpec field + its own
|
|
154
|
+
* `values: [...]` enum constraints. */
|
|
155
|
+
items?: EntityField;
|
|
156
|
+
/** Object property schemas keyed by property name when the slot's type
|
|
157
|
+
* is an inline `{ ... }` or a named struct alias. Mirrors the `.orb`
|
|
158
|
+
* `ConfigField.properties` carrier. */
|
|
159
|
+
properties?: Readonly<Record<string, EntityField>>;
|
|
60
160
|
/** Comma-separated user-vocabulary synonyms. Authored in `.lolo` as
|
|
61
161
|
* `@synonyms "..."` next to the knob declaration. Used by the agent's
|
|
62
162
|
* catalog-summary prompt (so the LLM connects user phrases to knob
|
|
@@ -78,6 +178,13 @@ interface FactoryConfigParam {
|
|
|
78
178
|
interface FactoryTraitSignature {
|
|
79
179
|
/** Canonical trait name post-rename (e.g. `"ChatMessageList"`). */
|
|
80
180
|
name: string;
|
|
181
|
+
/** Upstream trait reference path when this trait is a call-site override
|
|
182
|
+
* of an imported atom — e.g. `"Stats.traits.StatsItemStats"`. Absent
|
|
183
|
+
* when the trait is inline-defined (atom-tier traits). The catalog
|
|
184
|
+
* inheritance pass uses this to resolve the upstream atom signature
|
|
185
|
+
* so each call-site `overridableConfigKeys` entry gets `type` /
|
|
186
|
+
* `items` / `properties` filled in from the canonical declaration. */
|
|
187
|
+
ref?: string;
|
|
81
188
|
/** Event keys this trait emits (post-rename). */
|
|
82
189
|
emittedEvents: ReadonlyArray<string>;
|
|
83
190
|
/** Event keys this trait listens for. */
|
|
@@ -117,6 +224,27 @@ interface FactorySignature {
|
|
|
117
224
|
emittedEvents: ReadonlyArray<string>;
|
|
118
225
|
/** Union of all `traits[].listenedEvents`. */
|
|
119
226
|
listenedEvents: ReadonlyArray<string>;
|
|
227
|
+
/**
|
|
228
|
+
* JSON Schema for the orbital's `AnalysisOrbitalParams` shape. Walks
|
|
229
|
+
* `traitOverrides.<TraitName>.config.<knob>` with the exact type
|
|
230
|
+
* (string/number/boolean/array/object) lifted from each knob's
|
|
231
|
+
* declaration, `enum` from `enumValues`, recursive `items` for array
|
|
232
|
+
* slots, recursive `properties` for struct slots. Every level carries
|
|
233
|
+
* `additionalProperties: false` so the LLM cannot emit unknown trait
|
|
234
|
+
* names, invented knob keys, or out-of-set enum values.
|
|
235
|
+
*
|
|
236
|
+
* Pre-computed at signature extraction time by
|
|
237
|
+
* `tools/almadar-pattern-sync/src/std-ts/signatures/`. V2 tool-calling
|
|
238
|
+
* (`@almadar-io/agent`'s coordinator + per-orbital subagent) feeds this
|
|
239
|
+
* directly to OpenAI's `tool.parameters` with `strict: true` — the
|
|
240
|
+
* LLM is physically constrained by the schema instead of relying on
|
|
241
|
+
* post-hoc validation.
|
|
242
|
+
*
|
|
243
|
+
* Optional for backward compatibility: signatures emitted by older
|
|
244
|
+
* pattern-sync versions don't carry it, in which case V2 tools fall
|
|
245
|
+
* back to a loose schema + post-hoc validation.
|
|
246
|
+
*/
|
|
247
|
+
paramsSchema?: JsonSchema;
|
|
120
248
|
}
|
|
121
249
|
/**
|
|
122
250
|
* Aggregate catalog written to
|
|
@@ -157,10 +285,18 @@ interface FactoryCallSiteParams {
|
|
|
157
285
|
collection?: string;
|
|
158
286
|
/** Per-page path overrides keyed by `signature.pages[i].name`. */
|
|
159
287
|
pagePaths?: Readonly<Record<string, string>>;
|
|
160
|
-
/** Trait
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
288
|
+
/** Trait-level overrides keyed by `signature.traits[i].name`. Each value
|
|
289
|
+
* is a {@link TraitOverlayEntry} — the canonical override surface that
|
|
290
|
+
* admits the full documented set (`config`, `linkedEntity`, `events`,
|
|
291
|
+
* `name`, `emitsScope`, `listens`) and mirrors what `TraitOverlay` (the
|
|
292
|
+
* LLM-facing input) and {@link MakeTraitRefOpts} (the builder input)
|
|
293
|
+
* both accept. The translator threads each field from the overlay
|
|
294
|
+
* through to here verbatim; the factory applies them via the same
|
|
295
|
+
* `TraitReference` override semantics the inliner uses on hand-authored
|
|
296
|
+
* `.orb` traits. Pre-unification this carried only `{ config? }`, which
|
|
297
|
+
* silently dropped every other override field even though both the
|
|
298
|
+
* overlay layer above and the factory builders below accepted them. */
|
|
299
|
+
traitOverrides?: Readonly<Record<string, TraitOverlayEntry>>;
|
|
164
300
|
/** Extra traits to compose into the orbital that aren't part of the
|
|
165
301
|
* canonical signature trait stack. */
|
|
166
302
|
extraTraits?: ReadonlyArray<TraitReference>;
|
|
@@ -172,73 +308,6 @@ type FactoryParamValue = string | number | boolean | ReadonlyArray<FactoryParamV
|
|
|
172
308
|
readonly [key: string]: FactoryParamValue;
|
|
173
309
|
};
|
|
174
310
|
|
|
175
|
-
/**
|
|
176
|
-
* Cross-cutting presentation knobs that don't live per orbital
|
|
177
|
-
* because they're factory-layer concerns (nav items live on a layout
|
|
178
|
-
* trait; theme is a separate `ThemeRef`). The translator reads these
|
|
179
|
-
* and threads them into the matching factory params.
|
|
180
|
-
*/
|
|
181
|
-
interface PresentationOverlay {
|
|
182
|
-
/** Nav items to add to the orbital's layout trait. The translator
|
|
183
|
-
* looks for a `signature.traits[i]` with `overridableConfigKeys`
|
|
184
|
-
* including `navItems` and writes into `traitOverrides[name].config.navItems`. */
|
|
185
|
-
navAdditions?: ReadonlyArray<PresentationNavItem>;
|
|
186
|
-
/** Optional theme ref override for the orbital. */
|
|
187
|
-
themeRef?: string;
|
|
188
|
-
}
|
|
189
|
-
interface PresentationNavItem {
|
|
190
|
-
label: string;
|
|
191
|
-
path: string;
|
|
192
|
-
icon?: string;
|
|
193
|
-
}
|
|
194
|
-
/**
|
|
195
|
-
* LLM-authored trait-level overrides keyed by trait name (matches
|
|
196
|
-
* `signature.traits[].name`). Each entry's `config` keys are validated
|
|
197
|
-
* against `signature.traits[i].overridableConfigKeys`.
|
|
198
|
-
*/
|
|
199
|
-
type TraitOverlay = Readonly<Record<string, TraitOverlayEntry>>;
|
|
200
|
-
interface TraitOverlayEntry {
|
|
201
|
-
config?: Readonly<Record<string, FactoryParamValue>>;
|
|
202
|
-
linkedEntity?: string;
|
|
203
|
-
events?: Readonly<Record<string, string>>;
|
|
204
|
-
name?: string;
|
|
205
|
-
emitsScope?: 'internal' | 'external';
|
|
206
|
-
listens?: ReadonlyArray<TraitEventListener>;
|
|
207
|
-
}
|
|
208
|
-
type TraitOverlayListener = TraitEventListener;
|
|
209
|
-
/**
|
|
210
|
-
* Rules carry a free-form `capability: string` that the translator
|
|
211
|
-
* matches against `signature.traits[].capabilities` (source-tagged
|
|
212
|
-
* in `.lolo`).
|
|
213
|
-
*/
|
|
214
|
-
interface RuleOverlay {
|
|
215
|
-
rules: ReadonlyArray<RuleOverlayEntry>;
|
|
216
|
-
/** Entity-level ownership signal. The translator threads it into
|
|
217
|
-
* the matched trait's `config.ownerField` (when the matched trait
|
|
218
|
-
* advertises that key in `overridableConfigKeys`). */
|
|
219
|
-
ownership?: ReadonlyArray<OwnershipOverlayEntry>;
|
|
220
|
-
}
|
|
221
|
-
interface RuleOverlayEntry {
|
|
222
|
-
id: string;
|
|
223
|
-
/** Free-form capability label, matched against
|
|
224
|
-
* `signature.traits[].capabilities` by exact set membership. */
|
|
225
|
-
capability: string;
|
|
226
|
-
description: string;
|
|
227
|
-
/** Entity names this rule binds to. Empty array = cross-cutting. */
|
|
228
|
-
appliesTo: ReadonlyArray<string>;
|
|
229
|
-
/** Optional role name (e.g. `"admin"`) when the rule is role-scoped. */
|
|
230
|
-
role?: string;
|
|
231
|
-
/** Optional extra config knobs threaded into the matched trait's
|
|
232
|
-
* `config`. Validated against the trait's `overridableConfigKeys`. */
|
|
233
|
-
config?: Readonly<Record<string, FactoryParamValue>>;
|
|
234
|
-
}
|
|
235
|
-
interface OwnershipOverlayEntry {
|
|
236
|
-
/** Entity name (matches the orbital's bound entity name). */
|
|
237
|
-
entity: string;
|
|
238
|
-
/** Field name on the entity that carries the owner identifier. */
|
|
239
|
-
ownerField: string;
|
|
240
|
-
}
|
|
241
|
-
|
|
242
311
|
/**
|
|
243
312
|
* The per-orbital binding the agent assembles when it picks a
|
|
244
313
|
* signature. Carries the user-authored overrides directly; no shared
|
|
@@ -381,4 +450,4 @@ interface FactoryCallPlanState {
|
|
|
381
450
|
*/
|
|
382
451
|
declare function applyFactoryCallPlanMutation(state: FactoryCallPlanState, m: FactoryCallPlanMutation): FactoryCallPlanState;
|
|
383
452
|
|
|
384
|
-
export { type CallSiteDiff, type FactoryCallPlanMutation, type FactoryCallPlanState, type FactoryCallSite, type FactoryCallSiteParams, type FactoryConfigParam, type FactoryEntitySignature, type FactoryPageSignature, type FactoryParamValue, type FactorySignature, type FactorySignatureCatalog, type FactorySignatureEntityField, type FactoryTraitSignature, type OrbitalCallInput, type OwnershipOverlayEntry, type PresentationNavItem, type PresentationOverlay, type RuleOverlay, type RuleOverlayEntry, type SchemaFieldType, type TraitOverlay, type TraitOverlayEntry, type TraitOverlayListener, type TranslationBinding, type TranslationResult, type TranslationWarning, applyFactoryCallPlanMutation, diffFactoryCalls, translateOverlaysToParams };
|
|
453
|
+
export { type CallSiteDiff, type FactoryCallPlanMutation, type FactoryCallPlanState, type FactoryCallSite, type FactoryCallSiteParams, type FactoryConfigParam, type FactoryEntitySignature, type FactoryPageSignature, type FactoryParamValue, type FactorySignature, type FactorySignatureCatalog, type FactorySignatureEntityField, type FactoryTraitSignature, type JsonSchema, type JsonSchemaType, type OrbitalCallInput, type OwnershipOverlayEntry, type PresentationNavItem, type PresentationOverlay, type RuleOverlay, type RuleOverlayEntry, type SchemaFieldType, type TraitOverlay, type TraitOverlayEntry, type TraitOverlayListener, type TranslationBinding, type TranslationResult, type TranslationWarning, applyFactoryCallPlanMutation, diffFactoryCalls, translateOverlaysToParams };
|
package/dist/factory/index.js
CHANGED
|
@@ -134,7 +134,12 @@ function mergeTraitOverride(traitName, entry, trait, params, warnings) {
|
|
|
134
134
|
...params.traitOverrides,
|
|
135
135
|
[traitName]: {
|
|
136
136
|
...existing,
|
|
137
|
-
...Object.keys(mergedConfig).length > 0 ? { config: mergedConfig } : {}
|
|
137
|
+
...Object.keys(mergedConfig).length > 0 ? { config: mergedConfig } : {},
|
|
138
|
+
...entry.linkedEntity !== void 0 ? { linkedEntity: entry.linkedEntity } : {},
|
|
139
|
+
...entry.events !== void 0 ? { events: entry.events } : {},
|
|
140
|
+
...entry.name !== void 0 ? { name: entry.name } : {},
|
|
141
|
+
...entry.emitsScope !== void 0 ? { emitsScope: entry.emitsScope } : {},
|
|
142
|
+
...entry.listens !== void 0 ? { listens: entry.listens } : {}
|
|
138
143
|
}
|
|
139
144
|
};
|
|
140
145
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/factory/translate.ts","../../src/factory/diff.ts","../../src/factory/mutate.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["import type { EntityField } from '../types/field.js';\nimport type { EntityPersistence } from '../types/entity.js';\nimport type { TraitReference } from '../types/trait.js';\nimport type {\n FactoryCallSite,\n FactoryCallSiteParams,\n FactoryParamValue,\n FactorySignature,\n FactoryTraitSignature,\n} from './types.js';\nimport type {\n OwnershipOverlayEntry,\n PresentationNavItem,\n PresentationOverlay,\n RuleOverlay,\n RuleOverlayEntry,\n TraitOverlay,\n TraitOverlayEntry,\n} from './overlays.js';\n\n/**\n * The per-orbital binding the agent assembles when it picks a\n * signature. Carries the user-authored overrides directly; no shared\n * domain ontology, no DomainDocument.\n */\nexport interface TranslationBinding {\n /** Entity name override. When equal to `signature.entities[0].name`,\n * no rename is emitted. */\n entityName: string;\n /** Extra fields beyond the signature's canonical entity surface. */\n entityFields?: ReadonlyArray<EntityField>;\n /** Persistence override. */\n persistence?: EntityPersistence;\n /** Collection name override. */\n collection?: string;\n /** Per-page path overrides keyed by `signature.pages[i].name`. */\n pagePaths?: Readonly<Record<string, string>>;\n}\n\nexport interface TranslationWarning {\n /** Dotted path of the binding field that couldn't be lowered. */\n field: string;\n /** Human-readable reason. */\n reason: string;\n}\n\nexport interface TranslationResult {\n callSite: FactoryCallSite;\n warnings: ReadonlyArray<TranslationWarning>;\n}\n\nexport function translateOverlaysToParams(\n binding: TranslationBinding,\n signature: FactorySignature,\n presentation?: PresentationOverlay,\n ruleOverlay?: RuleOverlay,\n traitOverlay?: TraitOverlay,\n catalog?: ReadonlyArray<FactorySignature>,\n): TranslationResult {\n const warnings: TranslationWarning[] = [];\n const params: FactoryCallSiteParams = {};\n\n applyEntityName(binding, signature, params);\n applyEntityFields(binding, signature, params);\n applyPersistence(binding, signature, params, warnings);\n applyCollection(binding, params);\n applyPagePaths(binding, signature, params, warnings);\n applyPresentation(presentation, signature, params, warnings);\n applyTraitOverlay(traitOverlay, signature, params, warnings);\n applyRuleOverlay(ruleOverlay, signature, binding, catalog, params, warnings);\n\n return {\n callSite: {\n organism: signature.organism,\n orbital: signature.orbital,\n factoryPath: signature.factoryPath,\n params,\n },\n warnings,\n };\n}\n\n// ---------------------------------------------------------------------------\n// Per-field lowering\n// ---------------------------------------------------------------------------\n\nfunction applyEntityName(\n binding: TranslationBinding,\n signature: FactorySignature,\n params: FactoryCallSiteParams,\n): void {\n if (signature.entities.length === 0) return;\n if (binding.entityName === signature.entities[0].name) return;\n params.entityName = binding.entityName;\n}\n\nfunction applyEntityFields(\n binding: TranslationBinding,\n signature: FactorySignature,\n params: FactoryCallSiteParams,\n): void {\n if (!binding.entityFields || binding.entityFields.length === 0) return;\n if (signature.entities.length === 0) {\n params.entityFields = [...binding.entityFields];\n return;\n }\n const canonical = new Set(signature.entities[0].fields.map((f) => f.name));\n const extras: EntityField[] = [];\n for (const f of binding.entityFields) {\n if (f.name && canonical.has(f.name)) continue;\n extras.push(f);\n }\n if (extras.length > 0) params.entityFields = extras;\n}\n\nfunction applyPersistence(\n binding: TranslationBinding,\n signature: FactorySignature,\n params: FactoryCallSiteParams,\n warnings: TranslationWarning[],\n): void {\n if (!binding.persistence) return;\n if (signature.entities.length === 0) {\n warnings.push({\n field: `entity.${binding.entityName}.persistence`,\n reason: 'factory signature has no entity to apply persistence to',\n });\n return;\n }\n if (binding.persistence === signature.entities[0].persistence) return;\n params.persistence = binding.persistence;\n}\n\nfunction applyCollection(\n binding: TranslationBinding,\n params: FactoryCallSiteParams,\n): void {\n if (!binding.collection) return;\n params.collection = binding.collection;\n}\n\nfunction applyPagePaths(\n binding: TranslationBinding,\n signature: FactorySignature,\n params: FactoryCallSiteParams,\n warnings: TranslationWarning[],\n): void {\n if (!binding.pagePaths) return;\n const sigPages = new Map(signature.pages.map((p) => [p.name, p]));\n const overrides: Record<string, string> = {};\n for (const [pageName, url] of Object.entries(binding.pagePaths)) {\n const sig = sigPages.get(pageName);\n if (!sig) {\n warnings.push({\n field: `page.${pageName}.url`,\n reason: `factory signature has no page named \"${pageName}\"`,\n });\n continue;\n }\n if (sig.defaultPath !== url) overrides[pageName] = url;\n }\n if (Object.keys(overrides).length > 0) params.pagePaths = overrides;\n}\n\nfunction applyPresentation(\n overlay: PresentationOverlay | undefined,\n signature: FactorySignature,\n params: FactoryCallSiteParams,\n warnings: TranslationWarning[],\n): void {\n if (!overlay?.navAdditions || overlay.navAdditions.length === 0) return;\n const target = signature.traits.find((t) =>\n t.overridableConfigKeys.some((p) => p.key === 'navItems'),\n );\n if (!target) {\n warnings.push({\n field: 'presentation.navAdditions',\n reason:\n 'factory signature has no trait advertising a `navItems` config key',\n });\n return;\n }\n const existing = params.traitOverrides?.[target.name] ?? {};\n const existingConfig = existing.config ?? {};\n const items: ReadonlyArray<FactoryParamValue> = overlay.navAdditions.map(\n navItemToParamValue,\n );\n params.traitOverrides = {\n ...params.traitOverrides,\n [target.name]: {\n ...existing,\n config: { ...existingConfig, navItems: items },\n },\n };\n}\n\nfunction applyTraitOverlay(\n overlay: TraitOverlay | undefined,\n signature: FactorySignature,\n params: FactoryCallSiteParams,\n warnings: TranslationWarning[],\n): void {\n if (!overlay) return;\n const traitsByName = new Map(signature.traits.map((t) => [t.name, t]));\n for (const [traitName, entry] of Object.entries(overlay)) {\n const trait = traitsByName.get(traitName);\n if (!trait) {\n warnings.push({\n field: `traitOverlay.${traitName}`,\n reason: `factory signature has no trait named \"${traitName}\"`,\n });\n continue;\n }\n mergeTraitOverride(traitName, entry, trait, params, warnings);\n }\n}\n\nfunction mergeTraitOverride(\n traitName: string,\n entry: TraitOverlayEntry,\n trait: FactoryTraitSignature,\n params: FactoryCallSiteParams,\n warnings: TranslationWarning[],\n): void {\n const advertised = new Set(trait.overridableConfigKeys.map((p) => p.key));\n const existing = params.traitOverrides?.[traitName] ?? {};\n const existingConfig = existing.config ?? {};\n const mergedConfig: Record<string, FactoryParamValue> = { ...existingConfig };\n\n if (entry.config) {\n for (const [k, v] of Object.entries(entry.config)) {\n if (!advertised.has(k)) {\n const advertisedKeys = trait.overridableConfigKeys.map((p) => p.key).join(', ');\n warnings.push({\n field: `traitOverlay.${traitName}.config.${k}`,\n reason: `trait does not advertise config key \"${k}\" (overridableConfigKeys: [${advertisedKeys}])`,\n });\n continue;\n }\n mergedConfig[k] = v;\n }\n }\n\n params.traitOverrides = {\n ...params.traitOverrides,\n [traitName]: {\n ...existing,\n ...(Object.keys(mergedConfig).length > 0 ? { config: mergedConfig } : {}),\n },\n };\n}\n\nfunction applyRuleOverlay(\n overlay: RuleOverlay | undefined,\n signature: FactorySignature,\n binding: TranslationBinding,\n catalog: ReadonlyArray<FactorySignature> | undefined,\n params: FactoryCallSiteParams,\n warnings: TranslationWarning[],\n): void {\n if (!overlay) return;\n\n for (const rule of overlay.rules) {\n if (!ruleAppliesToBinding(rule, binding)) continue;\n if (!catalog) {\n warnings.push({\n field: `ruleOverlay.rules.${rule.id}`,\n reason: 'rule overlay supplied without a catalog — capability lookup requires one',\n });\n continue;\n }\n const match = findTraitByCapability(catalog, rule.capability);\n if (!match) {\n warnings.push({\n field: `ruleOverlay.rules.${rule.id}`,\n reason: `no trait in the catalog advertises capability \"${rule.capability}\"`,\n });\n continue;\n }\n appendRuleExtraTrait(rule, match, binding, params);\n if (rule.config) {\n threadRuleConfig(rule, match.trait, params, warnings);\n }\n }\n\n if (overlay.ownership) {\n for (const entry of overlay.ownership) {\n if (entry.entity !== binding.entityName) continue;\n applyOwnership(entry, params, signature, catalog, warnings);\n }\n }\n}\n\nfunction ruleAppliesToBinding(\n rule: RuleOverlayEntry,\n binding: TranslationBinding,\n): boolean {\n if (rule.appliesTo.length === 0) return true;\n return rule.appliesTo.includes(binding.entityName);\n}\n\ninterface CapabilityMatch {\n signature: FactorySignature;\n trait: FactoryTraitSignature;\n}\n\nfunction findTraitByCapability(\n catalog: ReadonlyArray<FactorySignature>,\n capability: string,\n): CapabilityMatch | undefined {\n for (const sig of catalog) {\n for (const trait of sig.traits) {\n if (trait.capabilities.includes(capability)) {\n return { signature: sig, trait };\n }\n }\n }\n return undefined;\n}\n\nfunction appendRuleExtraTrait(\n _rule: RuleOverlayEntry,\n match: CapabilityMatch,\n binding: TranslationBinding,\n params: FactoryCallSiteParams,\n): void {\n const fromPath = `std/behaviors/${match.signature.organism}`;\n const alias = organismToAlias(match.signature.organism);\n const ref: TraitReference = {\n from: fromPath,\n ref: `${alias}.traits.${match.trait.name}`,\n linkedEntity: binding.entityName,\n };\n const existing = params.extraTraits ?? [];\n params.extraTraits = [...existing, ref];\n}\n\nfunction organismToAlias(organism: string): string {\n const trimmed = organism.startsWith('std-') ? organism.slice(4) : organism;\n return trimmed\n .split('-')\n .filter((s) => s.length > 0)\n .map((s) => s.charAt(0).toUpperCase() + s.slice(1))\n .join('');\n}\n\nfunction threadRuleConfig(\n rule: RuleOverlayEntry,\n trait: FactoryTraitSignature,\n params: FactoryCallSiteParams,\n warnings: TranslationWarning[],\n): void {\n if (!rule.config) return;\n const advertised = new Set(trait.overridableConfigKeys.map((p) => p.key));\n const existing = params.traitOverrides?.[trait.name] ?? {};\n const existingConfig = existing.config ?? {};\n const merged: Record<string, FactoryParamValue> = { ...existingConfig };\n for (const [k, v] of Object.entries(rule.config)) {\n if (!advertised.has(k)) {\n warnings.push({\n field: `ruleOverlay.rules.${rule.id}.config.${k}`,\n reason: `trait \"${trait.name}\" does not advertise config key \"${k}\"`,\n });\n continue;\n }\n merged[k] = v;\n }\n if (Object.keys(merged).length > 0) {\n params.traitOverrides = {\n ...params.traitOverrides,\n [trait.name]: { ...existing, config: merged },\n };\n }\n}\n\nfunction applyOwnership(\n entry: OwnershipOverlayEntry,\n params: FactoryCallSiteParams,\n signature: FactorySignature,\n catalog: ReadonlyArray<FactorySignature> | undefined,\n warnings: TranslationWarning[],\n): void {\n const local = signature.traits.find((t) =>\n t.overridableConfigKeys.some((p) => p.key === 'ownerField'),\n );\n if (local) {\n writeOwnerField(local.name, entry.ownerField, params);\n return;\n }\n if (catalog) {\n for (const sig of catalog) {\n const trait = sig.traits.find((t) =>\n t.overridableConfigKeys.some((p) => p.key === 'ownerField'),\n );\n if (trait) {\n writeOwnerField(trait.name, entry.ownerField, params);\n return;\n }\n }\n }\n warnings.push({\n field: `ruleOverlay.ownership.${entry.entity}`,\n reason: 'no trait in the bound signature or catalog advertises an `ownerField` config knob',\n });\n}\n\nfunction writeOwnerField(\n traitName: string,\n ownerField: string,\n params: FactoryCallSiteParams,\n): void {\n const existing = params.traitOverrides?.[traitName] ?? {};\n const existingConfig = existing.config ?? {};\n params.traitOverrides = {\n ...params.traitOverrides,\n [traitName]: {\n ...existing,\n config: { ...existingConfig, ownerField },\n },\n };\n}\n\nfunction navItemToParamValue(item: PresentationNavItem): FactoryParamValue {\n const out: Record<string, FactoryParamValue> = {\n label: item.label,\n path: item.path,\n };\n if (item.icon) out.icon = item.icon;\n return out;\n}\n","/**\n * Structural diff between two `FactoryCallSite[]` lists. Pure typed,\n * no side effects. Used by downstream consumers (agent planner, UI\n * cascade view) to turn a \"previous calls\" + \"next calls\" pair into a\n * minimal change set.\n *\n * Identity for diffing is `(organism, orbital)`. Renames are not\n * handled here — they show up as a delete + add. The agent layer is\n * expected to merge those back into a `'rename'` op if it can prove\n * the underlying domain entity was renamed.\n */\n\nimport type {\n FactoryCallSite,\n FactoryCallSiteParams,\n FactoryParamValue,\n} from './types.js';\n\nexport type CallSiteDiff =\n | { kind: 'add'; orbitalName: string; next: FactoryCallSite }\n | { kind: 'delete'; orbitalName: string; prior: FactoryCallSite }\n | {\n kind: 'edit';\n orbitalName: string;\n prior: FactoryCallSite;\n next: FactoryCallSite;\n }\n | { kind: 'keep'; orbitalName: string; call: FactoryCallSite };\n\nexport function diffFactoryCalls(\n prior: ReadonlyArray<FactoryCallSite>,\n next: ReadonlyArray<FactoryCallSite>,\n): ReadonlyArray<CallSiteDiff> {\n const out: CallSiteDiff[] = [];\n const priorByKey = new Map(prior.map((c) => [callKey(c), c]));\n const nextByKey = new Map(next.map((c) => [callKey(c), c]));\n\n for (const [key, p] of priorByKey) {\n const n = nextByKey.get(key);\n if (!n) {\n out.push({ kind: 'delete', orbitalName: p.orbital, prior: p });\n continue;\n }\n if (paramsEqual(p.params, n.params)) {\n out.push({ kind: 'keep', orbitalName: p.orbital, call: n });\n } else {\n out.push({ kind: 'edit', orbitalName: p.orbital, prior: p, next: n });\n }\n }\n for (const [key, n] of nextByKey) {\n if (!priorByKey.has(key)) {\n out.push({ kind: 'add', orbitalName: n.orbital, next: n });\n }\n }\n return out;\n}\n\nfunction callKey(c: FactoryCallSite): string {\n return `${c.organism}::${c.orbital}`;\n}\n\nfunction paramsEqual(a: FactoryCallSiteParams, b: FactoryCallSiteParams): boolean {\n return canonicalParams(a) === canonicalParams(b);\n}\n\nfunction canonicalParams(p: FactoryCallSiteParams): string {\n const keys: Array<keyof FactoryCallSiteParams> = [\n 'collection',\n 'entityFields',\n 'entityName',\n 'extraTraits',\n 'pagePaths',\n 'persistence',\n 'traitOverrides',\n ];\n const parts: string[] = [];\n for (const k of keys) {\n const v = p[k];\n if (v === undefined) continue;\n parts.push(`${k}:${canonicalNode(v)}`);\n }\n return `{${parts.join(',')}}`;\n}\n\nfunction canonicalNode(\n v:\n | string\n | FactoryCallSiteParams[keyof FactoryCallSiteParams],\n): string {\n if (v === undefined) return 'u';\n if (typeof v === 'string') return JSON.stringify(v);\n if (Array.isArray(v)) {\n return `[${v.map((x) => canonicalParamValue(x as FactoryParamValue)).join(',')}]`;\n }\n const keys = Object.keys(v).sort();\n const parts: string[] = [];\n for (const k of keys) {\n const child = (v as Readonly<Record<string, FactoryParamValue | { config?: Readonly<Record<string, FactoryParamValue>> }>>)[k];\n parts.push(`${JSON.stringify(k)}:${canonicalParamValue(child)}`);\n }\n return `{${parts.join(',')}}`;\n}\n\nfunction canonicalParamValue(\n v: FactoryParamValue | { config?: Readonly<Record<string, FactoryParamValue>> },\n): string {\n if (v === null || v === undefined) return 'u';\n if (typeof v === 'string' || typeof v === 'number' || typeof v === 'boolean') {\n return JSON.stringify(v);\n }\n if (Array.isArray(v)) {\n return `[${v.map(canonicalParamValue).join(',')}]`;\n }\n const keys = Object.keys(v).sort();\n const parts: string[] = [];\n for (const k of keys) {\n const child = (v as Readonly<Record<string, FactoryParamValue | undefined>>)[k];\n if (child === undefined) continue;\n parts.push(`${JSON.stringify(k)}:${canonicalParamValue(child)}`);\n }\n return `{${parts.join(',')}}`;\n}\n","import type { EntityField } from '../types/field.js';\nimport type { TraitReference } from '../types/trait.js';\nimport type { EntityPersistence } from '../types/entity.js';\nimport type { RuleOverlay, RuleOverlayEntry } from './overlays.js';\nimport type { FactoryParamValue } from './types.js';\n\n/**\n * One slot the agent emits per orbital. Slim shape — agent-facing,\n * carries only what factory dispatch needs. The studio renders forms\n * over this; the projector turns it into a `FactoryCallSite`.\n */\nexport interface OrbitalCallInput {\n orbitalName: string;\n organism?: string;\n orbital?: string;\n entityName?: string;\n entityFields?: ReadonlyArray<EntityField>;\n persistence?: EntityPersistence;\n collection?: string;\n pagePaths?: Readonly<Record<string, string>>;\n traitOverlay?: Readonly<\n Record<\n string,\n {\n config?: Readonly<Record<string, FactoryParamValue>>;\n linkedEntity?: string;\n name?: string;\n }\n >\n >;\n extraTraits?: ReadonlyArray<TraitReference>;\n}\n\n/**\n * Discriminated union of typed edits. Each variant carries only the\n * payload pieces that change. The reducer is total over the union.\n */\nexport type FactoryCallPlanMutation =\n | {\n kind: 'set-orbital-entity-fields';\n orbitalName: string;\n fields: ReadonlyArray<EntityField>;\n }\n | { kind: 'set-orbital-entity-name'; orbitalName: string; name: string }\n | {\n kind: 'set-orbital-persistence';\n orbitalName: string;\n persistence: EntityPersistence;\n }\n | { kind: 'set-orbital-collection'; orbitalName: string; collection: string }\n | {\n kind: 'set-orbital-page-path';\n orbitalName: string;\n pageName: string;\n path: string;\n }\n | {\n kind: 'set-trait-override-config';\n orbitalName: string;\n traitName: string;\n key: string;\n value: FactoryParamValue;\n }\n | {\n kind: 'add-extra-trait';\n orbitalName: string;\n trait: TraitReference;\n }\n | { kind: 'remove-extra-trait'; orbitalName: string; ref: string }\n | { kind: 'set-rule'; rule: RuleOverlayEntry }\n | { kind: 'remove-rule'; ruleId: string };\n\n/**\n * State shape the reducer operates on. Mirrors the slice of the\n * agent's analysis result that incremental edits target.\n */\nexport interface FactoryCallPlanState {\n orbitals: ReadonlyArray<OrbitalCallInput>;\n ruleOverlay?: RuleOverlay;\n}\n\n/**\n * Immutable reducer. Returns a new state; never mutates input.\n */\nexport function applyFactoryCallPlanMutation(\n state: FactoryCallPlanState,\n m: FactoryCallPlanMutation,\n): FactoryCallPlanState {\n switch (m.kind) {\n case 'set-orbital-entity-fields':\n return patchOrbital(state, m.orbitalName, (o) => ({\n ...o,\n entityFields: m.fields,\n }));\n case 'set-orbital-entity-name':\n return patchOrbital(state, m.orbitalName, (o) => ({\n ...o,\n entityName: m.name,\n }));\n case 'set-orbital-persistence':\n return patchOrbital(state, m.orbitalName, (o) => ({\n ...o,\n persistence: m.persistence,\n }));\n case 'set-orbital-collection':\n return patchOrbital(state, m.orbitalName, (o) => ({\n ...o,\n collection: m.collection,\n }));\n case 'set-orbital-page-path':\n return patchOrbital(state, m.orbitalName, (o) => ({\n ...o,\n pagePaths: { ...(o.pagePaths ?? {}), [m.pageName]: m.path },\n }));\n case 'set-trait-override-config':\n return patchOrbital(state, m.orbitalName, (o) => {\n const overlay = o.traitOverlay ?? {};\n const existing = overlay[m.traitName] ?? {};\n const existingConfig = existing.config ?? {};\n return {\n ...o,\n traitOverlay: {\n ...overlay,\n [m.traitName]: {\n ...existing,\n config: { ...existingConfig, [m.key]: m.value },\n },\n },\n };\n });\n case 'add-extra-trait':\n return patchOrbital(state, m.orbitalName, (o) => {\n const existing = o.extraTraits ?? [];\n if (existing.some((t) => t.ref === m.trait.ref)) return o;\n return { ...o, extraTraits: [...existing, m.trait] };\n });\n case 'remove-extra-trait':\n return patchOrbital(state, m.orbitalName, (o) => ({\n ...o,\n extraTraits: (o.extraTraits ?? []).filter((t) => t.ref !== m.ref),\n }));\n case 'set-rule': {\n const rules = state.ruleOverlay?.rules ?? [];\n const idx = rules.findIndex((r) => r.id === m.rule.id);\n const next = idx >= 0\n ? rules.map((r, i) => (i === idx ? m.rule : r))\n : [...rules, m.rule];\n return {\n ...state,\n ruleOverlay: { ...(state.ruleOverlay ?? { rules: [] }), rules: next },\n };\n }\n case 'remove-rule': {\n const rules = state.ruleOverlay?.rules ?? [];\n const next = rules.filter((r) => r.id !== m.ruleId);\n return {\n ...state,\n ruleOverlay: { ...(state.ruleOverlay ?? { rules: [] }), rules: next },\n };\n }\n }\n}\n\nfunction patchOrbital(\n state: FactoryCallPlanState,\n orbitalName: string,\n patch: (o: OrbitalCallInput) => OrbitalCallInput,\n): FactoryCallPlanState {\n return {\n ...state,\n orbitals: state.orbitals.map((o) =>\n o.orbitalName === orbitalName ? patch(o) : o,\n ),\n };\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../src/factory/translate.ts","../../src/factory/diff.ts","../../src/factory/mutate.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["import type { EntityField } from '../types/field.js';\nimport type { EntityPersistence } from '../types/entity.js';\nimport type { TraitReference } from '../types/trait.js';\nimport type {\n FactoryCallSite,\n FactoryCallSiteParams,\n FactoryParamValue,\n FactorySignature,\n FactoryTraitSignature,\n} from './types.js';\nimport type {\n OwnershipOverlayEntry,\n PresentationNavItem,\n PresentationOverlay,\n RuleOverlay,\n RuleOverlayEntry,\n TraitOverlay,\n TraitOverlayEntry,\n} from './overlays.js';\n\n/**\n * The per-orbital binding the agent assembles when it picks a\n * signature. Carries the user-authored overrides directly; no shared\n * domain ontology, no DomainDocument.\n */\nexport interface TranslationBinding {\n /** Entity name override. When equal to `signature.entities[0].name`,\n * no rename is emitted. */\n entityName: string;\n /** Extra fields beyond the signature's canonical entity surface. */\n entityFields?: ReadonlyArray<EntityField>;\n /** Persistence override. */\n persistence?: EntityPersistence;\n /** Collection name override. */\n collection?: string;\n /** Per-page path overrides keyed by `signature.pages[i].name`. */\n pagePaths?: Readonly<Record<string, string>>;\n}\n\nexport interface TranslationWarning {\n /** Dotted path of the binding field that couldn't be lowered. */\n field: string;\n /** Human-readable reason. */\n reason: string;\n}\n\nexport interface TranslationResult {\n callSite: FactoryCallSite;\n warnings: ReadonlyArray<TranslationWarning>;\n}\n\nexport function translateOverlaysToParams(\n binding: TranslationBinding,\n signature: FactorySignature,\n presentation?: PresentationOverlay,\n ruleOverlay?: RuleOverlay,\n traitOverlay?: TraitOverlay,\n catalog?: ReadonlyArray<FactorySignature>,\n): TranslationResult {\n const warnings: TranslationWarning[] = [];\n const params: FactoryCallSiteParams = {};\n\n applyEntityName(binding, signature, params);\n applyEntityFields(binding, signature, params);\n applyPersistence(binding, signature, params, warnings);\n applyCollection(binding, params);\n applyPagePaths(binding, signature, params, warnings);\n applyPresentation(presentation, signature, params, warnings);\n applyTraitOverlay(traitOverlay, signature, params, warnings);\n applyRuleOverlay(ruleOverlay, signature, binding, catalog, params, warnings);\n\n return {\n callSite: {\n organism: signature.organism,\n orbital: signature.orbital,\n factoryPath: signature.factoryPath,\n params,\n },\n warnings,\n };\n}\n\n// ---------------------------------------------------------------------------\n// Per-field lowering\n// ---------------------------------------------------------------------------\n\nfunction applyEntityName(\n binding: TranslationBinding,\n signature: FactorySignature,\n params: FactoryCallSiteParams,\n): void {\n if (signature.entities.length === 0) return;\n if (binding.entityName === signature.entities[0].name) return;\n params.entityName = binding.entityName;\n}\n\nfunction applyEntityFields(\n binding: TranslationBinding,\n signature: FactorySignature,\n params: FactoryCallSiteParams,\n): void {\n if (!binding.entityFields || binding.entityFields.length === 0) return;\n if (signature.entities.length === 0) {\n params.entityFields = [...binding.entityFields];\n return;\n }\n const canonical = new Set(signature.entities[0].fields.map((f) => f.name));\n const extras: EntityField[] = [];\n for (const f of binding.entityFields) {\n if (f.name && canonical.has(f.name)) continue;\n extras.push(f);\n }\n if (extras.length > 0) params.entityFields = extras;\n}\n\nfunction applyPersistence(\n binding: TranslationBinding,\n signature: FactorySignature,\n params: FactoryCallSiteParams,\n warnings: TranslationWarning[],\n): void {\n if (!binding.persistence) return;\n if (signature.entities.length === 0) {\n warnings.push({\n field: `entity.${binding.entityName}.persistence`,\n reason: 'factory signature has no entity to apply persistence to',\n });\n return;\n }\n if (binding.persistence === signature.entities[0].persistence) return;\n params.persistence = binding.persistence;\n}\n\nfunction applyCollection(\n binding: TranslationBinding,\n params: FactoryCallSiteParams,\n): void {\n if (!binding.collection) return;\n params.collection = binding.collection;\n}\n\nfunction applyPagePaths(\n binding: TranslationBinding,\n signature: FactorySignature,\n params: FactoryCallSiteParams,\n warnings: TranslationWarning[],\n): void {\n if (!binding.pagePaths) return;\n const sigPages = new Map(signature.pages.map((p) => [p.name, p]));\n const overrides: Record<string, string> = {};\n for (const [pageName, url] of Object.entries(binding.pagePaths)) {\n const sig = sigPages.get(pageName);\n if (!sig) {\n warnings.push({\n field: `page.${pageName}.url`,\n reason: `factory signature has no page named \"${pageName}\"`,\n });\n continue;\n }\n if (sig.defaultPath !== url) overrides[pageName] = url;\n }\n if (Object.keys(overrides).length > 0) params.pagePaths = overrides;\n}\n\nfunction applyPresentation(\n overlay: PresentationOverlay | undefined,\n signature: FactorySignature,\n params: FactoryCallSiteParams,\n warnings: TranslationWarning[],\n): void {\n if (!overlay?.navAdditions || overlay.navAdditions.length === 0) return;\n const target = signature.traits.find((t) =>\n t.overridableConfigKeys.some((p) => p.key === 'navItems'),\n );\n if (!target) {\n warnings.push({\n field: 'presentation.navAdditions',\n reason:\n 'factory signature has no trait advertising a `navItems` config key',\n });\n return;\n }\n const existing = params.traitOverrides?.[target.name] ?? {};\n const existingConfig = existing.config ?? {};\n const items: ReadonlyArray<FactoryParamValue> = overlay.navAdditions.map(\n navItemToParamValue,\n );\n params.traitOverrides = {\n ...params.traitOverrides,\n [target.name]: {\n ...existing,\n config: { ...existingConfig, navItems: items },\n },\n };\n}\n\nfunction applyTraitOverlay(\n overlay: TraitOverlay | undefined,\n signature: FactorySignature,\n params: FactoryCallSiteParams,\n warnings: TranslationWarning[],\n): void {\n if (!overlay) return;\n const traitsByName = new Map(signature.traits.map((t) => [t.name, t]));\n for (const [traitName, entry] of Object.entries(overlay)) {\n const trait = traitsByName.get(traitName);\n if (!trait) {\n warnings.push({\n field: `traitOverlay.${traitName}`,\n reason: `factory signature has no trait named \"${traitName}\"`,\n });\n continue;\n }\n mergeTraitOverride(traitName, entry, trait, params, warnings);\n }\n}\n\nfunction mergeTraitOverride(\n traitName: string,\n entry: TraitOverlayEntry,\n trait: FactoryTraitSignature,\n params: FactoryCallSiteParams,\n warnings: TranslationWarning[],\n): void {\n const advertised = new Set(trait.overridableConfigKeys.map((p) => p.key));\n const existing = params.traitOverrides?.[traitName] ?? {};\n const existingConfig = existing.config ?? {};\n const mergedConfig: Record<string, FactoryParamValue> = { ...existingConfig };\n\n if (entry.config) {\n for (const [k, v] of Object.entries(entry.config)) {\n if (!advertised.has(k)) {\n const advertisedKeys = trait.overridableConfigKeys.map((p) => p.key).join(', ');\n warnings.push({\n field: `traitOverlay.${traitName}.config.${k}`,\n reason: `trait does not advertise config key \"${k}\" (overridableConfigKeys: [${advertisedKeys}])`,\n });\n continue;\n }\n mergedConfig[k] = v;\n }\n }\n\n // Thread every documented override field through verbatim — `config`\n // gets the merged + validated map; the rest pass through as the overlay\n // authored them. Pre-unification only `config` was preserved, so any\n // overlay-authored `linkedEntity` / `events` / `name` / `emitsScope` /\n // `listens` was silently dropped before reaching the factory.\n params.traitOverrides = {\n ...params.traitOverrides,\n [traitName]: {\n ...existing,\n ...(Object.keys(mergedConfig).length > 0 ? { config: mergedConfig } : {}),\n ...(entry.linkedEntity !== undefined ? { linkedEntity: entry.linkedEntity } : {}),\n ...(entry.events !== undefined ? { events: entry.events } : {}),\n ...(entry.name !== undefined ? { name: entry.name } : {}),\n ...(entry.emitsScope !== undefined ? { emitsScope: entry.emitsScope } : {}),\n ...(entry.listens !== undefined ? { listens: entry.listens } : {}),\n },\n };\n}\n\nfunction applyRuleOverlay(\n overlay: RuleOverlay | undefined,\n signature: FactorySignature,\n binding: TranslationBinding,\n catalog: ReadonlyArray<FactorySignature> | undefined,\n params: FactoryCallSiteParams,\n warnings: TranslationWarning[],\n): void {\n if (!overlay) return;\n\n for (const rule of overlay.rules) {\n if (!ruleAppliesToBinding(rule, binding)) continue;\n if (!catalog) {\n warnings.push({\n field: `ruleOverlay.rules.${rule.id}`,\n reason: 'rule overlay supplied without a catalog — capability lookup requires one',\n });\n continue;\n }\n const match = findTraitByCapability(catalog, rule.capability);\n if (!match) {\n warnings.push({\n field: `ruleOverlay.rules.${rule.id}`,\n reason: `no trait in the catalog advertises capability \"${rule.capability}\"`,\n });\n continue;\n }\n appendRuleExtraTrait(rule, match, binding, params);\n if (rule.config) {\n threadRuleConfig(rule, match.trait, params, warnings);\n }\n }\n\n if (overlay.ownership) {\n for (const entry of overlay.ownership) {\n if (entry.entity !== binding.entityName) continue;\n applyOwnership(entry, params, signature, catalog, warnings);\n }\n }\n}\n\nfunction ruleAppliesToBinding(\n rule: RuleOverlayEntry,\n binding: TranslationBinding,\n): boolean {\n if (rule.appliesTo.length === 0) return true;\n return rule.appliesTo.includes(binding.entityName);\n}\n\ninterface CapabilityMatch {\n signature: FactorySignature;\n trait: FactoryTraitSignature;\n}\n\nfunction findTraitByCapability(\n catalog: ReadonlyArray<FactorySignature>,\n capability: string,\n): CapabilityMatch | undefined {\n for (const sig of catalog) {\n for (const trait of sig.traits) {\n if (trait.capabilities.includes(capability)) {\n return { signature: sig, trait };\n }\n }\n }\n return undefined;\n}\n\nfunction appendRuleExtraTrait(\n _rule: RuleOverlayEntry,\n match: CapabilityMatch,\n binding: TranslationBinding,\n params: FactoryCallSiteParams,\n): void {\n const fromPath = `std/behaviors/${match.signature.organism}`;\n const alias = organismToAlias(match.signature.organism);\n const ref: TraitReference = {\n from: fromPath,\n ref: `${alias}.traits.${match.trait.name}`,\n linkedEntity: binding.entityName,\n };\n const existing = params.extraTraits ?? [];\n params.extraTraits = [...existing, ref];\n}\n\nfunction organismToAlias(organism: string): string {\n const trimmed = organism.startsWith('std-') ? organism.slice(4) : organism;\n return trimmed\n .split('-')\n .filter((s) => s.length > 0)\n .map((s) => s.charAt(0).toUpperCase() + s.slice(1))\n .join('');\n}\n\nfunction threadRuleConfig(\n rule: RuleOverlayEntry,\n trait: FactoryTraitSignature,\n params: FactoryCallSiteParams,\n warnings: TranslationWarning[],\n): void {\n if (!rule.config) return;\n const advertised = new Set(trait.overridableConfigKeys.map((p) => p.key));\n const existing = params.traitOverrides?.[trait.name] ?? {};\n const existingConfig = existing.config ?? {};\n const merged: Record<string, FactoryParamValue> = { ...existingConfig };\n for (const [k, v] of Object.entries(rule.config)) {\n if (!advertised.has(k)) {\n warnings.push({\n field: `ruleOverlay.rules.${rule.id}.config.${k}`,\n reason: `trait \"${trait.name}\" does not advertise config key \"${k}\"`,\n });\n continue;\n }\n merged[k] = v;\n }\n if (Object.keys(merged).length > 0) {\n params.traitOverrides = {\n ...params.traitOverrides,\n [trait.name]: { ...existing, config: merged },\n };\n }\n}\n\nfunction applyOwnership(\n entry: OwnershipOverlayEntry,\n params: FactoryCallSiteParams,\n signature: FactorySignature,\n catalog: ReadonlyArray<FactorySignature> | undefined,\n warnings: TranslationWarning[],\n): void {\n const local = signature.traits.find((t) =>\n t.overridableConfigKeys.some((p) => p.key === 'ownerField'),\n );\n if (local) {\n writeOwnerField(local.name, entry.ownerField, params);\n return;\n }\n if (catalog) {\n for (const sig of catalog) {\n const trait = sig.traits.find((t) =>\n t.overridableConfigKeys.some((p) => p.key === 'ownerField'),\n );\n if (trait) {\n writeOwnerField(trait.name, entry.ownerField, params);\n return;\n }\n }\n }\n warnings.push({\n field: `ruleOverlay.ownership.${entry.entity}`,\n reason: 'no trait in the bound signature or catalog advertises an `ownerField` config knob',\n });\n}\n\nfunction writeOwnerField(\n traitName: string,\n ownerField: string,\n params: FactoryCallSiteParams,\n): void {\n const existing = params.traitOverrides?.[traitName] ?? {};\n const existingConfig = existing.config ?? {};\n params.traitOverrides = {\n ...params.traitOverrides,\n [traitName]: {\n ...existing,\n config: { ...existingConfig, ownerField },\n },\n };\n}\n\nfunction navItemToParamValue(item: PresentationNavItem): FactoryParamValue {\n const out: Record<string, FactoryParamValue> = {\n label: item.label,\n path: item.path,\n };\n if (item.icon) out.icon = item.icon;\n return out;\n}\n","/**\n * Structural diff between two `FactoryCallSite[]` lists. Pure typed,\n * no side effects. Used by downstream consumers (agent planner, UI\n * cascade view) to turn a \"previous calls\" + \"next calls\" pair into a\n * minimal change set.\n *\n * Identity for diffing is `(organism, orbital)`. Renames are not\n * handled here — they show up as a delete + add. The agent layer is\n * expected to merge those back into a `'rename'` op if it can prove\n * the underlying domain entity was renamed.\n */\n\nimport type {\n FactoryCallSite,\n FactoryCallSiteParams,\n FactoryParamValue,\n} from './types.js';\n\nexport type CallSiteDiff =\n | { kind: 'add'; orbitalName: string; next: FactoryCallSite }\n | { kind: 'delete'; orbitalName: string; prior: FactoryCallSite }\n | {\n kind: 'edit';\n orbitalName: string;\n prior: FactoryCallSite;\n next: FactoryCallSite;\n }\n | { kind: 'keep'; orbitalName: string; call: FactoryCallSite };\n\nexport function diffFactoryCalls(\n prior: ReadonlyArray<FactoryCallSite>,\n next: ReadonlyArray<FactoryCallSite>,\n): ReadonlyArray<CallSiteDiff> {\n const out: CallSiteDiff[] = [];\n const priorByKey = new Map(prior.map((c) => [callKey(c), c]));\n const nextByKey = new Map(next.map((c) => [callKey(c), c]));\n\n for (const [key, p] of priorByKey) {\n const n = nextByKey.get(key);\n if (!n) {\n out.push({ kind: 'delete', orbitalName: p.orbital, prior: p });\n continue;\n }\n if (paramsEqual(p.params, n.params)) {\n out.push({ kind: 'keep', orbitalName: p.orbital, call: n });\n } else {\n out.push({ kind: 'edit', orbitalName: p.orbital, prior: p, next: n });\n }\n }\n for (const [key, n] of nextByKey) {\n if (!priorByKey.has(key)) {\n out.push({ kind: 'add', orbitalName: n.orbital, next: n });\n }\n }\n return out;\n}\n\nfunction callKey(c: FactoryCallSite): string {\n return `${c.organism}::${c.orbital}`;\n}\n\nfunction paramsEqual(a: FactoryCallSiteParams, b: FactoryCallSiteParams): boolean {\n return canonicalParams(a) === canonicalParams(b);\n}\n\nfunction canonicalParams(p: FactoryCallSiteParams): string {\n const keys: Array<keyof FactoryCallSiteParams> = [\n 'collection',\n 'entityFields',\n 'entityName',\n 'extraTraits',\n 'pagePaths',\n 'persistence',\n 'traitOverrides',\n ];\n const parts: string[] = [];\n for (const k of keys) {\n const v = p[k];\n if (v === undefined) continue;\n parts.push(`${k}:${canonicalNode(v)}`);\n }\n return `{${parts.join(',')}}`;\n}\n\nfunction canonicalNode(\n v:\n | string\n | FactoryCallSiteParams[keyof FactoryCallSiteParams],\n): string {\n if (v === undefined) return 'u';\n if (typeof v === 'string') return JSON.stringify(v);\n if (Array.isArray(v)) {\n return `[${v.map((x) => canonicalParamValue(x as FactoryParamValue)).join(',')}]`;\n }\n const keys = Object.keys(v).sort();\n const parts: string[] = [];\n for (const k of keys) {\n const child = (v as Readonly<Record<string, FactoryParamValue | { config?: Readonly<Record<string, FactoryParamValue>> }>>)[k];\n parts.push(`${JSON.stringify(k)}:${canonicalParamValue(child)}`);\n }\n return `{${parts.join(',')}}`;\n}\n\nfunction canonicalParamValue(\n v: FactoryParamValue | { config?: Readonly<Record<string, FactoryParamValue>> },\n): string {\n if (v === null || v === undefined) return 'u';\n if (typeof v === 'string' || typeof v === 'number' || typeof v === 'boolean') {\n return JSON.stringify(v);\n }\n if (Array.isArray(v)) {\n return `[${v.map(canonicalParamValue).join(',')}]`;\n }\n const keys = Object.keys(v).sort();\n const parts: string[] = [];\n for (const k of keys) {\n const child = (v as Readonly<Record<string, FactoryParamValue | undefined>>)[k];\n if (child === undefined) continue;\n parts.push(`${JSON.stringify(k)}:${canonicalParamValue(child)}`);\n }\n return `{${parts.join(',')}}`;\n}\n","import type { EntityField } from '../types/field.js';\nimport type { TraitReference } from '../types/trait.js';\nimport type { EntityPersistence } from '../types/entity.js';\nimport type { RuleOverlay, RuleOverlayEntry } from './overlays.js';\nimport type { FactoryParamValue } from './types.js';\n\n/**\n * One slot the agent emits per orbital. Slim shape — agent-facing,\n * carries only what factory dispatch needs. The studio renders forms\n * over this; the projector turns it into a `FactoryCallSite`.\n */\nexport interface OrbitalCallInput {\n orbitalName: string;\n organism?: string;\n orbital?: string;\n entityName?: string;\n entityFields?: ReadonlyArray<EntityField>;\n persistence?: EntityPersistence;\n collection?: string;\n pagePaths?: Readonly<Record<string, string>>;\n traitOverlay?: Readonly<\n Record<\n string,\n {\n config?: Readonly<Record<string, FactoryParamValue>>;\n linkedEntity?: string;\n name?: string;\n }\n >\n >;\n extraTraits?: ReadonlyArray<TraitReference>;\n}\n\n/**\n * Discriminated union of typed edits. Each variant carries only the\n * payload pieces that change. The reducer is total over the union.\n */\nexport type FactoryCallPlanMutation =\n | {\n kind: 'set-orbital-entity-fields';\n orbitalName: string;\n fields: ReadonlyArray<EntityField>;\n }\n | { kind: 'set-orbital-entity-name'; orbitalName: string; name: string }\n | {\n kind: 'set-orbital-persistence';\n orbitalName: string;\n persistence: EntityPersistence;\n }\n | { kind: 'set-orbital-collection'; orbitalName: string; collection: string }\n | {\n kind: 'set-orbital-page-path';\n orbitalName: string;\n pageName: string;\n path: string;\n }\n | {\n kind: 'set-trait-override-config';\n orbitalName: string;\n traitName: string;\n key: string;\n value: FactoryParamValue;\n }\n | {\n kind: 'add-extra-trait';\n orbitalName: string;\n trait: TraitReference;\n }\n | { kind: 'remove-extra-trait'; orbitalName: string; ref: string }\n | { kind: 'set-rule'; rule: RuleOverlayEntry }\n | { kind: 'remove-rule'; ruleId: string };\n\n/**\n * State shape the reducer operates on. Mirrors the slice of the\n * agent's analysis result that incremental edits target.\n */\nexport interface FactoryCallPlanState {\n orbitals: ReadonlyArray<OrbitalCallInput>;\n ruleOverlay?: RuleOverlay;\n}\n\n/**\n * Immutable reducer. Returns a new state; never mutates input.\n */\nexport function applyFactoryCallPlanMutation(\n state: FactoryCallPlanState,\n m: FactoryCallPlanMutation,\n): FactoryCallPlanState {\n switch (m.kind) {\n case 'set-orbital-entity-fields':\n return patchOrbital(state, m.orbitalName, (o) => ({\n ...o,\n entityFields: m.fields,\n }));\n case 'set-orbital-entity-name':\n return patchOrbital(state, m.orbitalName, (o) => ({\n ...o,\n entityName: m.name,\n }));\n case 'set-orbital-persistence':\n return patchOrbital(state, m.orbitalName, (o) => ({\n ...o,\n persistence: m.persistence,\n }));\n case 'set-orbital-collection':\n return patchOrbital(state, m.orbitalName, (o) => ({\n ...o,\n collection: m.collection,\n }));\n case 'set-orbital-page-path':\n return patchOrbital(state, m.orbitalName, (o) => ({\n ...o,\n pagePaths: { ...(o.pagePaths ?? {}), [m.pageName]: m.path },\n }));\n case 'set-trait-override-config':\n return patchOrbital(state, m.orbitalName, (o) => {\n const overlay = o.traitOverlay ?? {};\n const existing = overlay[m.traitName] ?? {};\n const existingConfig = existing.config ?? {};\n return {\n ...o,\n traitOverlay: {\n ...overlay,\n [m.traitName]: {\n ...existing,\n config: { ...existingConfig, [m.key]: m.value },\n },\n },\n };\n });\n case 'add-extra-trait':\n return patchOrbital(state, m.orbitalName, (o) => {\n const existing = o.extraTraits ?? [];\n if (existing.some((t) => t.ref === m.trait.ref)) return o;\n return { ...o, extraTraits: [...existing, m.trait] };\n });\n case 'remove-extra-trait':\n return patchOrbital(state, m.orbitalName, (o) => ({\n ...o,\n extraTraits: (o.extraTraits ?? []).filter((t) => t.ref !== m.ref),\n }));\n case 'set-rule': {\n const rules = state.ruleOverlay?.rules ?? [];\n const idx = rules.findIndex((r) => r.id === m.rule.id);\n const next = idx >= 0\n ? rules.map((r, i) => (i === idx ? m.rule : r))\n : [...rules, m.rule];\n return {\n ...state,\n ruleOverlay: { ...(state.ruleOverlay ?? { rules: [] }), rules: next },\n };\n }\n case 'remove-rule': {\n const rules = state.ruleOverlay?.rules ?? [];\n const next = rules.filter((r) => r.id !== m.ruleId);\n return {\n ...state,\n ruleOverlay: { ...(state.ruleOverlay ?? { rules: [] }), rules: next },\n };\n }\n }\n}\n\nfunction patchOrbital(\n state: FactoryCallPlanState,\n orbitalName: string,\n patch: (o: OrbitalCallInput) => OrbitalCallInput,\n): FactoryCallPlanState {\n return {\n ...state,\n orbitals: state.orbitals.map((o) =>\n o.orbitalName === orbitalName ? patch(o) : o,\n ),\n };\n}\n"]}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import { a3 as OrbitalSchema, X as OrbitalDefinition } from './schema-
|
|
2
|
-
export { A as AGENT_DOMAIN_CATEGORIES, a as ALLOWED_CUSTOM_COMPONENTS, b as AgentDomainCategory, c as AgentDomainCategorySchema, d as AllowedCustomComponent, C as ComputedEventContract, e as ComputedEventContractSchema, f as ComputedEventListener, g as ComputedEventListenerSchema, h as CustomPatternDefinition, i as CustomPatternDefinitionInput, j as CustomPatternDefinitionSchema, k as CustomPatternMap, l as CustomPatternMapInput, m as CustomPatternMapSchema, D as DesignPreferences, n as DesignPreferencesInput, o as DesignPreferencesSchema, p as DesignTokens, q as DesignTokensInput, r as DesignTokensSchema, s as DomainCategory, t as DomainCategorySchema, u as DomainContext, v as DomainContextInput, w as DomainContextSchema, x as DomainVocabulary, y as DomainVocabularySchema, E as EntityCall, z as EntityCallSchema, B as EntityRef, F as EntityRefSchema, G as EntityRefStringSchema, H as EntitySemanticRole, I as EntitySemanticRoleSchema, J as EventListener, K as EventListenerSchema, L as EventSemanticRole, M as EventSemanticRoleSchema, N as EventSource, O as EventSourceSchema, T as FullOrbitalUnit, P as GameSubCategory, Q as GameSubCategorySchema, R as NodeClassification, S as NodeClassificationSchema, T as Orbital, U as OrbitalConfig, V as OrbitalConfigInput, W as OrbitalConfigSchema, Y as OrbitalDefinitionSchema, Z as OrbitalInput, _ as OrbitalPage, $ as OrbitalPageInput, a0 as OrbitalPageSchema, a1 as OrbitalPageStrictInput, a2 as OrbitalPageStrictSchema, a5 as OrbitalSchemaInput, a6 as OrbitalSchemaSchema, a7 as OrbitalSchemaWithTraits, a8 as OrbitalUnit, a9 as OrbitalUnitSchema, a4 as OrbitalZodSchema, aa as Page, ab as PageRef, ac as PageRefObject, ad as PageRefObjectSchema, ae as PageRefSchema, af as PageRefStringSchema, ag as PageSchema, ah as PageTraitRef, ai as PageTraitRefSchema, aj as RelatedLink, ak as RelatedLinkSchema, al as StateSemanticRole, am as StateSemanticRoleSchema, an as SuggestedGuard, ao as SuggestedGuardSchema, ap as ThemeDefinition, aq as ThemeDefinitionSchema, ar as ThemeRef, as as ThemeRefSchema, at as ThemeRefStringSchema, au as ThemeTokens, av as ThemeTokensSchema, aw as ThemeVariant, ax as ThemeVariantSchema, ay as UXHints, az as UXHintsSchema, aA as UseDeclaration, aB as UseDeclarationSchema, aC as UserPersona, aD as UserPersonaInput, aE as UserPersonaSchema, aF as ViewType, aG as ViewTypeSchema, aH as isEntityCall, aI as isEntityReference, aJ as isEntityReferenceAny, aK as isImportedTraitRef, aL as isOrbitalDefinition, aM as isPageReference, aN as isPageReferenceObject, aO as isPageReferenceString, aP as isThemeReference, aQ as parseEntityRef, aR as parseImportedTraitRef, aS as parseOrbitalSchema, aT as parsePageRef, aU as safeParseOrbitalSchema } from './schema-
|
|
3
|
-
import { b7 as State } from './trait-
|
|
4
|
-
export { A as AgentEffect, a as AnimationDef, b as AnimationDefInput, c as AnimationDefSchema, d as AssetMap, e as AssetMapInput, f as AssetMapSchema, g as AssetMapping, h as AssetMappingInput, i as AssetMappingSchema, j as AtomicEffect, C as CallServiceConfig, k as CallServiceEffect, l as CheckpointLoadEffect, m as CheckpointSaveEffect, n as ConfigFieldDeclaration, o as ConfigFieldDeclarationSchema, D as DeclaredTraitConfig, p as DeclaredTraitConfigSchema, q as DerefEffect, r as DespawnEffect, s as DoEffect, E as ENTITY_ROLES, t as Effect, u as EffectInput, v as EffectSchema, w as EmitConfig, x as EmitEffect, y as Entity, z as EntityData, B as EntityField, F as EntityFieldInput, G as EntityFieldSchema, H as EntityPersistence, I as EntityPersistenceSchema, J as EntityRole, K as EntityRoleSchema, L as EntityRow, M as EntitySchema, N as EvaluateConfig, O as EvaluateEffect, P as Event, Q as EventInput, R as EventPayloadField, S as EventPayloadFieldSchema, T as EventSchema, U as EventScope, V as EventScopeSchema, W as FetchEffect, X as FetchOptions, Y as FetchResult, Z as Field, _ as FieldFormat, $ as FieldFormatSchema, a0 as FieldSchema, a1 as FieldType, a2 as FieldTypeSchema, a3 as FieldValue, a4 as ForwardConfig, a5 as ForwardEffect, a6 as GAME_TYPES, a7 as GameType, a8 as GameTypeSchema, a9 as Guard, aa as GuardInput, ab as GuardSchema, ac as ListenSource, ad as ListenSourceSchema, ae as LogEffect, af as McpServiceDef, ag as McpServiceDefSchema, ah as NavigateEffect, ai as NnConfig, aj as NnLayer, ak as NotifyEffect, al as OrbitalEntity, am as OrbitalEntityInput, an as OrbitalEntitySchema, ao as OrbitalTraitRef, ap as OrbitalTraitRefSchema, aq as OsEffect, ar as PayloadField, as as PayloadFieldSchema, at as PersistData, au as PersistEffect, av as PersistEmitConfig, aw as PresentationType, ax as RefEffect, ay as RelationConfig, az as RelationConfigSchema, aA as RenderItemLambda, aB as RenderUIConfig, aC as RenderUIEffect, aD as RenderUINode, aE as RequiredField, aF as RequiredFieldSchema, aG as ResolvedAsset, aH as ResolvedAssetInput, aI as ResolvedAssetSchema, aJ as ResolvedPatternProps, aK as RestAuthConfig, aL as RestAuthConfigSchema, aM as RestServiceDef, aN as RestServiceDefSchema, aO as SERVICE_TYPES, aP as SemanticAssetRef, aQ as SemanticAssetRefInput, aR as SemanticAssetRefSchema, aS as ServiceDefinition, aT as ServiceDefinitionSchema, aU as ServiceParams, aV as ServiceParamsValue, aW as ServiceRef, aX as ServiceRefObject, aY as ServiceRefObjectSchema, aZ as ServiceRefSchema, a_ as ServiceRefStringSchema, a$ as ServiceType, b0 as ServiceTypeSchema, b1 as SetEffect, b2 as SocketEvents, b3 as SocketEventsSchema, b4 as SocketServiceDef, b5 as SocketServiceDefSchema, b6 as SpawnEffect, b8 as StateInput, b9 as StateMachine, ba as StateMachineInput, bb as StateMachineSchema, bc as StateSchema, bd as SwapEffect, be as TrainConfig, bf as TrainEffect, bg as Trait, bh as TraitCategory, bi as TraitCategorySchema, bj as TraitConfig, bk as TraitConfigObject, bl as TraitConfigSchema, bm as TraitConfigValue, bn as TraitConfigValueSchema, bo as TraitDataEntity, bp as TraitDataEntitySchema, bq as TraitEntityField, br as TraitEntityFieldSchema, bs as TraitEventContract, bt as TraitEventContractSchema, bu as TraitEventListener, bv as TraitEventListenerSchema, bw as TraitInput, bx as TraitRef, by as TraitRefSchema, bz as TraitReference, bA as TraitReferenceInput, bB as TraitReferenceSchema, bC as TraitSchema, bD as TraitTick, bE as TraitTickSchema, bF as TraitUIBinding, bG as Transition, bH as TransitionInput, bI as TransitionSchema, bJ as TypedEffect, bK as UISlot, bL as UISlotSchema, bM as UI_SLOTS, bN as VISUAL_STYLES, bO as VisualStyle, bP as VisualStyleSchema, bQ as WatchEffect, bR as WatchOptions, bS as atomic, bT as callService, bU as createAssetKey, bV as deref, bW as deriveCollection, bX as despawn, bY as doEffects, bZ as emit, b_ as findService, b$ as getDefaultAnimationsForRole, c0 as getServiceNames, c1 as getTraitConfig, c2 as getTraitName, c3 as hasService, c4 as isCircuitEvent, c5 as isEffect, c6 as isInlineTrait, c7 as isMcpService, c8 as isRestService, c9 as isRuntimeEntity, ca as isSExprEffect, cb as isServiceReference, cc as isServiceReferenceObject, cd as isSingletonEntity, ce as isSocketService, cf as navigate, cg as normalizeTraitRef, ch as notify, ci as parseAssetKey, cj as parseServiceRef, ck as persist, cl as ref, cm as renderUI, cn as set, co as spawn, cp as swap, cq as validateAssetAnimations, cr as watch } from './trait-
|
|
1
|
+
import { a3 as OrbitalSchema, X as OrbitalDefinition } from './schema-Dp98Xt5i.js';
|
|
2
|
+
export { A as AGENT_DOMAIN_CATEGORIES, a as ALLOWED_CUSTOM_COMPONENTS, b as AgentDomainCategory, c as AgentDomainCategorySchema, d as AllowedCustomComponent, C as ComputedEventContract, e as ComputedEventContractSchema, f as ComputedEventListener, g as ComputedEventListenerSchema, h as CustomPatternDefinition, i as CustomPatternDefinitionInput, j as CustomPatternDefinitionSchema, k as CustomPatternMap, l as CustomPatternMapInput, m as CustomPatternMapSchema, D as DesignPreferences, n as DesignPreferencesInput, o as DesignPreferencesSchema, p as DesignTokens, q as DesignTokensInput, r as DesignTokensSchema, s as DomainCategory, t as DomainCategorySchema, u as DomainContext, v as DomainContextInput, w as DomainContextSchema, x as DomainVocabulary, y as DomainVocabularySchema, E as EntityCall, z as EntityCallSchema, B as EntityRef, F as EntityRefSchema, G as EntityRefStringSchema, H as EntitySemanticRole, I as EntitySemanticRoleSchema, J as EventListener, K as EventListenerSchema, L as EventSemanticRole, M as EventSemanticRoleSchema, N as EventSource, O as EventSourceSchema, T as FullOrbitalUnit, P as GameSubCategory, Q as GameSubCategorySchema, R as NodeClassification, S as NodeClassificationSchema, T as Orbital, U as OrbitalConfig, V as OrbitalConfigInput, W as OrbitalConfigSchema, Y as OrbitalDefinitionSchema, Z as OrbitalInput, _ as OrbitalPage, $ as OrbitalPageInput, a0 as OrbitalPageSchema, a1 as OrbitalPageStrictInput, a2 as OrbitalPageStrictSchema, a5 as OrbitalSchemaInput, a6 as OrbitalSchemaSchema, a7 as OrbitalSchemaWithTraits, a8 as OrbitalUnit, a9 as OrbitalUnitSchema, a4 as OrbitalZodSchema, aa as Page, ab as PageRef, ac as PageRefObject, ad as PageRefObjectSchema, ae as PageRefSchema, af as PageRefStringSchema, ag as PageSchema, ah as PageTraitRef, ai as PageTraitRefSchema, aj as RelatedLink, ak as RelatedLinkSchema, al as StateSemanticRole, am as StateSemanticRoleSchema, an as SuggestedGuard, ao as SuggestedGuardSchema, ap as ThemeDefinition, aq as ThemeDefinitionSchema, ar as ThemeRef, as as ThemeRefSchema, at as ThemeRefStringSchema, au as ThemeTokens, av as ThemeTokensSchema, aw as ThemeVariant, ax as ThemeVariantSchema, ay as UXHints, az as UXHintsSchema, aA as UseDeclaration, aB as UseDeclarationSchema, aC as UserPersona, aD as UserPersonaInput, aE as UserPersonaSchema, aF as ViewType, aG as ViewTypeSchema, aH as isEntityCall, aI as isEntityReference, aJ as isEntityReferenceAny, aK as isImportedTraitRef, aL as isOrbitalDefinition, aM as isPageReference, aN as isPageReferenceObject, aO as isPageReferenceString, aP as isThemeReference, aQ as parseEntityRef, aR as parseImportedTraitRef, aS as parseOrbitalSchema, aT as parsePageRef, aU as safeParseOrbitalSchema } from './schema-Dp98Xt5i.js';
|
|
3
|
+
import { b7 as State } from './trait-BV1DyJ2A.js';
|
|
4
|
+
export { A as AgentEffect, a as AnimationDef, b as AnimationDefInput, c as AnimationDefSchema, d as AssetMap, e as AssetMapInput, f as AssetMapSchema, g as AssetMapping, h as AssetMappingInput, i as AssetMappingSchema, j as AtomicEffect, C as CallServiceConfig, k as CallServiceEffect, l as CheckpointLoadEffect, m as CheckpointSaveEffect, n as ConfigFieldDeclaration, o as ConfigFieldDeclarationSchema, D as DeclaredTraitConfig, p as DeclaredTraitConfigSchema, q as DerefEffect, r as DespawnEffect, s as DoEffect, E as ENTITY_ROLES, t as Effect, u as EffectInput, v as EffectSchema, w as EmitConfig, x as EmitEffect, y as Entity, z as EntityData, B as EntityField, F as EntityFieldInput, G as EntityFieldSchema, H as EntityPersistence, I as EntityPersistenceSchema, J as EntityRole, K as EntityRoleSchema, L as EntityRow, M as EntitySchema, N as EvaluateConfig, O as EvaluateEffect, P as Event, Q as EventInput, R as EventPayloadField, S as EventPayloadFieldSchema, T as EventSchema, U as EventScope, V as EventScopeSchema, W as FetchEffect, X as FetchOptions, Y as FetchResult, Z as Field, _ as FieldFormat, $ as FieldFormatSchema, a0 as FieldSchema, a1 as FieldType, a2 as FieldTypeSchema, a3 as FieldValue, a4 as ForwardConfig, a5 as ForwardEffect, a6 as GAME_TYPES, a7 as GameType, a8 as GameTypeSchema, a9 as Guard, aa as GuardInput, ab as GuardSchema, ac as ListenSource, ad as ListenSourceSchema, ae as LogEffect, af as McpServiceDef, ag as McpServiceDefSchema, ah as NavigateEffect, ai as NnConfig, aj as NnLayer, ak as NotifyEffect, al as OrbitalEntity, am as OrbitalEntityInput, an as OrbitalEntitySchema, ao as OrbitalTraitRef, ap as OrbitalTraitRefSchema, aq as OsEffect, ar as PayloadField, as as PayloadFieldSchema, at as PersistData, au as PersistEffect, av as PersistEmitConfig, aw as PresentationType, ax as RefEffect, ay as RelationConfig, az as RelationConfigSchema, aA as RenderItemLambda, aB as RenderUIConfig, aC as RenderUIEffect, aD as RenderUINode, aE as RequiredField, aF as RequiredFieldSchema, aG as ResolvedAsset, aH as ResolvedAssetInput, aI as ResolvedAssetSchema, aJ as ResolvedPatternProps, aK as RestAuthConfig, aL as RestAuthConfigSchema, aM as RestServiceDef, aN as RestServiceDefSchema, aO as SERVICE_TYPES, aP as SemanticAssetRef, aQ as SemanticAssetRefInput, aR as SemanticAssetRefSchema, aS as ServiceDefinition, aT as ServiceDefinitionSchema, aU as ServiceParams, aV as ServiceParamsValue, aW as ServiceRef, aX as ServiceRefObject, aY as ServiceRefObjectSchema, aZ as ServiceRefSchema, a_ as ServiceRefStringSchema, a$ as ServiceType, b0 as ServiceTypeSchema, b1 as SetEffect, b2 as SocketEvents, b3 as SocketEventsSchema, b4 as SocketServiceDef, b5 as SocketServiceDefSchema, b6 as SpawnEffect, b8 as StateInput, b9 as StateMachine, ba as StateMachineInput, bb as StateMachineSchema, bc as StateSchema, bd as SwapEffect, be as TrainConfig, bf as TrainEffect, bg as Trait, bh as TraitCategory, bi as TraitCategorySchema, bj as TraitConfig, bk as TraitConfigObject, bl as TraitConfigSchema, bm as TraitConfigValue, bn as TraitConfigValueSchema, bo as TraitDataEntity, bp as TraitDataEntitySchema, bq as TraitEntityField, br as TraitEntityFieldSchema, bs as TraitEventContract, bt as TraitEventContractSchema, bu as TraitEventListener, bv as TraitEventListenerSchema, bw as TraitInput, bx as TraitRef, by as TraitRefSchema, bz as TraitReference, bA as TraitReferenceInput, bB as TraitReferenceSchema, bC as TraitSchema, bD as TraitTick, bE as TraitTickSchema, bF as TraitUIBinding, bG as Transition, bH as TransitionInput, bI as TransitionSchema, bJ as TypedEffect, bK as UISlot, bL as UISlotSchema, bM as UI_SLOTS, bN as VISUAL_STYLES, bO as VisualStyle, bP as VisualStyleSchema, bQ as WatchEffect, bR as WatchOptions, bS as atomic, bT as callService, bU as createAssetKey, bV as deref, bW as deriveCollection, bX as despawn, bY as doEffects, bZ as emit, b_ as findService, b$ as getDefaultAnimationsForRole, c0 as getServiceNames, c1 as getTraitConfig, c2 as getTraitName, c3 as hasService, c4 as isCircuitEvent, c5 as isEffect, c6 as isInlineTrait, c7 as isMcpService, c8 as isRestService, c9 as isRuntimeEntity, ca as isSExprEffect, cb as isServiceReference, cc as isServiceReferenceObject, cd as isSingletonEntity, ce as isSocketService, cf as navigate, cg as normalizeTraitRef, ch as notify, ci as parseAssetKey, cj as parseServiceRef, ck as persist, cl as ref, cm as renderUI, cn as set, co as spawn, cp as swap, cq as validateAssetAnimations, cr as watch } from './trait-BV1DyJ2A.js';
|
|
5
5
|
export { C as CORE_BINDINGS, a as CoreBinding, E as EvalContext, b as EventPayload, c as EventPayloadValue, d as Expression, e as ExpressionInput, f as ExpressionSchema, L as LogMeta, P as ParsedBinding, S as SExpr, g as SExprAtom, h as SExprAtomSchema, i as SExprInput, j as SExprSchema, k as collectBindings, l as getArgs, m as getOperator, n as isBinding, o as isSExpr, p as isSExprAtom, q as isSExprCall, r as isValidBinding, s as parseBinding, t as sexpr, w as walkSExpr } from './expression-BVRFm0sV.js';
|
|
6
6
|
import { ResolvedIR, ResolvedEntity, ResolvedPage, ResolvedTrait, ChangesetValue, SchemaChange, CategorizedRemovals, PageContentReduction, SemanticSchemaChange } from './types/index.js';
|
|
7
7
|
export { AgentCodeSearchResult, AgentCompactResult, AgentCompactStrategy, AgentContext, AgentGenerateOptions, AgentMemoryCategory, AgentMemoryRecord, AppSummary, AssetLoadStatus, BINDING_CONTEXT_RULES, BINDING_DOCS, BINDING_ROOTS, BindingContext, BindingRoot, BindingSchema, BridgeHealth, BusEvent, BusEventListener, BusEventSource, ChangeAuthor, ChangeSetDocument, ChangeSummary, CheckStatus, ContextExtensions, CreateFlow, DEFAULT_INTERACTION_MODELS, DeleteFlow, EditFlow, EffectTrace, EventEmit, EventKey, EventListen, EventLogEntry, GitHubLink, HistoryMeta, InteractionModel, InteractionModelInput, InteractionModelSchema, LazyService, ListInteraction, OrbitalVerificationAPI, PatternTypeSchema, PersistActionName, ResolvedEntityBinding, ResolvedField, ResolvedNavigation, ResolvedPattern, ResolvedSection, ResolvedSectionEvent, ResolvedTraitBinding, ResolvedTraitDataEntity, ResolvedTraitEvent, ResolvedTraitGuard, ResolvedTraitListener, ResolvedTraitState, ResolvedTraitTick, ResolvedTraitTransition, ResolvedTraitUIBinding, SaveOptions, SaveResult, SemanticChangeKind, ServerResponseTrace, ServiceAction, ServiceActionName, ServiceContract, ServiceEvents, SnapshotDocument, StatsView, StoreContract, StoreFilter, StoreFilterOp, TraitFieldRef, TraitFieldRefSchema, TraitStateSnapshot, TransitionFrom, TransitionTrace, Unsubscribe, ValidationDocument, ValidationIssue, ValidationMeta, ValidationResults, VerificationCheck, VerificationSnapshot, VerificationSummary, ViewFlow, createEmptyResolvedPage, createEmptyResolvedTrait, createLazyService, createResolvedField, createTypedEventBus, getAllPatternTypes, getBindingExamples, getInteractionModelForDomain, inferTsType, isResolvedIR, isTraitFieldRef, toBindingRoot, validateBindingInContext } from './types/index.js';
|
|
8
|
-
export { CallSiteDiff, FactoryCallPlanMutation, FactoryCallPlanState, FactoryCallSite, FactoryCallSiteParams, FactoryConfigParam, FactoryEntitySignature, FactoryPageSignature, FactoryParamValue, FactorySignature, FactorySignatureCatalog, FactorySignatureEntityField, FactoryTraitSignature, OrbitalCallInput, OwnershipOverlayEntry, PresentationNavItem, PresentationOverlay, RuleOverlay, RuleOverlayEntry, SchemaFieldType, TraitOverlay, TraitOverlayEntry, TraitOverlayListener, TranslationBinding, TranslationResult, TranslationWarning, applyFactoryCallPlanMutation, diffFactoryCalls, translateOverlaysToParams } from './factory/index.js';
|
|
9
|
-
export { C as ComposeBehaviorsInput, a as ComposeBehaviorsResult, E as EventWiringEntry, L as LayoutStrategy, b as applyEventWiring, c as composeBehaviors, d as detectLayoutStrategy } from './compose-behaviors-
|
|
8
|
+
export { CallSiteDiff, FactoryCallPlanMutation, FactoryCallPlanState, FactoryCallSite, FactoryCallSiteParams, FactoryConfigParam, FactoryEntitySignature, FactoryPageSignature, FactoryParamValue, FactorySignature, FactorySignatureCatalog, FactorySignatureEntityField, FactoryTraitSignature, JsonSchema, JsonSchemaType, OrbitalCallInput, OwnershipOverlayEntry, PresentationNavItem, PresentationOverlay, RuleOverlay, RuleOverlayEntry, SchemaFieldType, TraitOverlay, TraitOverlayEntry, TraitOverlayListener, TranslationBinding, TranslationResult, TranslationWarning, applyFactoryCallPlanMutation, diffFactoryCalls, translateOverlaysToParams } from './factory/index.js';
|
|
9
|
+
export { C as ComposeBehaviorsInput, a as ComposeBehaviorsResult, E as EventWiringEntry, L as LayoutStrategy, b as applyEventWiring, c as composeBehaviors, d as detectLayoutStrategy } from './compose-behaviors-TSp2c_dn.js';
|
|
10
10
|
export { PATTERN_TYPES, PatternConfig, PatternType, isValidPatternType } from '@almadar/patterns';
|
|
11
11
|
export { BFSNode, BFSPathNode, EdgeWalkTransition, GraphTransition, GuardPayload, ReplayStep, ReplayTransition, StateEdge, WalkStep, buildEdgeCoveringWalk, buildGuardPayloads, buildReplayPaths, buildStateGraph, collectReachableStates, extractPayloadFieldRef, walkStatePairs } from './state-machine/index.js';
|
|
12
12
|
import 'zod';
|
package/dist/index.js
CHANGED
|
@@ -80,6 +80,7 @@ var EntityFieldSchema = z.lazy(
|
|
|
80
80
|
min: z.number().optional(),
|
|
81
81
|
max: z.number().optional(),
|
|
82
82
|
items: EntityFieldSchema.optional(),
|
|
83
|
+
properties: z.record(EntityFieldSchema).optional(),
|
|
83
84
|
relation: RelationConfigSchema.optional()
|
|
84
85
|
}).refine(
|
|
85
86
|
(field) => field.type !== "relation" || field.relation !== void 0,
|
|
@@ -2388,7 +2389,12 @@ function mergeTraitOverride(traitName, entry, trait, params, warnings) {
|
|
|
2388
2389
|
...params.traitOverrides,
|
|
2389
2390
|
[traitName]: {
|
|
2390
2391
|
...existing,
|
|
2391
|
-
...Object.keys(mergedConfig).length > 0 ? { config: mergedConfig } : {}
|
|
2392
|
+
...Object.keys(mergedConfig).length > 0 ? { config: mergedConfig } : {},
|
|
2393
|
+
...entry.linkedEntity !== void 0 ? { linkedEntity: entry.linkedEntity } : {},
|
|
2394
|
+
...entry.events !== void 0 ? { events: entry.events } : {},
|
|
2395
|
+
...entry.name !== void 0 ? { name: entry.name } : {},
|
|
2396
|
+
...entry.emitsScope !== void 0 ? { emitsScope: entry.emitsScope } : {},
|
|
2397
|
+
...entry.listens !== void 0 ? { listens: entry.listens } : {}
|
|
2392
2398
|
}
|
|
2393
2399
|
};
|
|
2394
2400
|
}
|