@almadar/core 9.10.3 → 10.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -244,6 +244,18 @@ declare function extractPayloadFieldRef(ref: unknown): string | null;
244
244
  * buildGuardPayloads(['and', ['not-nil', '@payload.id'], ['eq', '@payload.status', 'ready']]);
245
245
  * // Returns: { pass: { id: 'mock-test-value', status: 'ready' }, fail: { id: null } }
246
246
  */
247
+ /**
248
+ * Evaluate a guard that is fully constant (no `@payload`/`@entity`/`@config`
249
+ * bindings — e.g. after molecule/organism inlining folds `@config.mode` to a
250
+ * literal). Returns the constant truth value, or `null` when the guard depends
251
+ * on a binding (so a payload must be synthesized). This lets callers (a) emit
252
+ * an empty payload for a constant guard (no field to satisfy) and (b) skip the
253
+ * meaningless variant: an always-true guard has no fail case, an always-false
254
+ * guard has no pass case. Without it, `(or (= "create" "create") @payload.row)`
255
+ * (create-mode modal OPEN) was synthesized with a spurious `row`, which the
256
+ * runtime read as edit-mode and rejected.
257
+ */
258
+ declare function constTruth(guard: unknown): boolean | null;
247
259
  declare function buildGuardPayloads(guard: unknown): GuardPayload;
248
260
 
249
261
  /**
@@ -302,9 +314,13 @@ declare function buildReplayPaths(transitions: ReplayTransition[], initialState:
302
314
  /**
303
315
  * Edge-Covering Walk Algorithm
304
316
  *
305
- * Computes an ordered sequence of events (WalkStep[]) that covers every
306
- * transition (edge) in a state machine graph at least once. This guarantees
307
- * 100% transition coverage regardless of graph topology.
317
+ * Computes an ordered sequence of events (WalkStep[]) that attempts to cover
318
+ * every transition (edge) in a state machine graph. This is a greedy chained
319
+ * walk: it does NOT guarantee 100% coverage. With no reset concept it can
320
+ * strand on absorbing states (no outgoing edges and no path back to uncovered
321
+ * edges), and a guard-fail misprediction desyncs the chained walk so later
322
+ * steps fire from the wrong state. Superseded by the hermetic per-frame walk
323
+ * in @almadar-io/verify, which re-seeds each frame independently.
308
324
  *
309
325
  * Algorithm:
310
326
  * 1. Build adjacency list and edge universe (guarded transitions produce two edges)
@@ -328,4 +344,4 @@ declare function buildReplayPaths(transitions: ReplayTransition[], initialState:
328
344
  */
329
345
  declare function buildEdgeCoveringWalk(transitions: EdgeWalkTransition[], initialState: string): WalkStep[];
330
346
 
331
- export { type BFSNode, type BFSPathNode, type EdgeWalkTransition, type GraphTransition, type GuardPayload, type PayloadFieldSchema, type ReplayStep, type ReplayTransition, type StateEdge, type WalkStep, buildEdgeCoveringWalk, buildGuardPayloads, buildReplayPaths, buildStateGraph, collectReachableStates, extractPayloadFieldRef, walkStatePairs };
347
+ export { type BFSNode, type BFSPathNode, type EdgeWalkTransition, type GraphTransition, type GuardPayload, type PayloadFieldSchema, type ReplayStep, type ReplayTransition, type StateEdge, type WalkStep, buildEdgeCoveringWalk, buildGuardPayloads, buildReplayPaths, buildStateGraph, collectReachableStates, constTruth, extractPayloadFieldRef, walkStatePairs };
@@ -59,7 +59,43 @@ function extractPayloadFieldRef(ref) {
59
59
  const match = ref.match(/^@payload\.([A-Za-z0-9_]+)/);
60
60
  return match ? match[1] : null;
61
61
  }
62
+ function constTruth(guard) {
63
+ if (typeof guard === "boolean") return guard;
64
+ if (typeof guard === "string") {
65
+ if (guard.startsWith("@")) return null;
66
+ return guard.length > 0;
67
+ }
68
+ if (!Array.isArray(guard) || guard.length === 0) return null;
69
+ const op = String(guard[0]);
70
+ const isLiteral = (x) => x === null || typeof x === "number" || typeof x === "boolean" || typeof x === "string" && !x.startsWith("@");
71
+ if (op === "=" || op === "==" || op === "eq") {
72
+ return isLiteral(guard[1]) && isLiteral(guard[2]) ? guard[1] === guard[2] : null;
73
+ }
74
+ if (op === "!=" || op === "ne" || op === "not-eq" || op === "neq") {
75
+ return isLiteral(guard[1]) && isLiteral(guard[2]) ? guard[1] !== guard[2] : null;
76
+ }
77
+ if (op === "not") {
78
+ const inner = constTruth(guard[1]);
79
+ return inner === null ? null : !inner;
80
+ }
81
+ if (op === "or") {
82
+ const subs = guard.slice(1).map(constTruth);
83
+ if (subs.some((s) => s === true)) return true;
84
+ if (subs.every((s) => s === false)) return false;
85
+ return null;
86
+ }
87
+ if (op === "and") {
88
+ const subs = guard.slice(1).map(constTruth);
89
+ if (subs.some((s) => s === false)) return false;
90
+ if (subs.every((s) => s === true)) return true;
91
+ return null;
92
+ }
93
+ return null;
94
+ }
62
95
  function buildGuardPayloads(guard) {
96
+ if (constTruth(guard) !== null) {
97
+ return { pass: {}, fail: {} };
98
+ }
63
99
  if (typeof guard === "string") {
64
100
  const field = extractPayloadFieldRef(guard);
65
101
  if (field) return { pass: { [field]: { id: "mock-test-id", name: "mock-test-name" } }, fail: { [field]: null } };
@@ -113,11 +149,11 @@ function buildGuardPayloads(guard) {
113
149
  if (field) return { pass: { [field]: n }, fail: { [field]: n + 1 } };
114
150
  }
115
151
  if (op === "and") {
116
- const subs = guard.slice(1).filter(Array.isArray);
152
+ const subs = guard.slice(1);
117
153
  if (subs.length >= 2) {
118
- const s1 = buildGuardPayloads(subs[0]);
119
- const s2 = buildGuardPayloads(subs[1]);
120
- return { pass: { ...s1.pass, ...s2.pass }, fail: s1.fail };
154
+ const built = subs.map(buildGuardPayloads);
155
+ const pass = built.reduce((acc, b) => ({ ...acc, ...b.pass }), {});
156
+ return { pass, fail: built[0].fail };
121
157
  }
122
158
  if (subs.length === 1) return buildGuardPayloads(subs[0]);
123
159
  }
@@ -349,6 +385,6 @@ function buildPayloadForEdge(transition, guardCase) {
349
385
  return {};
350
386
  }
351
387
 
352
- export { buildEdgeCoveringWalk, buildGuardPayloads, buildReplayPaths, buildStateGraph, collectReachableStates, extractPayloadFieldRef, walkStatePairs };
388
+ export { buildEdgeCoveringWalk, buildGuardPayloads, buildReplayPaths, buildStateGraph, collectReachableStates, constTruth, extractPayloadFieldRef, walkStatePairs };
353
389
  //# sourceMappingURL=index.js.map
354
390
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/state-machine/graph.ts","../../src/state-machine/bfs.ts","../../src/state-machine/guard-payloads.ts","../../src/state-machine/replay-paths.ts","../../src/state-machine/edge-walk.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["/**\n * State Graph Construction\n *\n * Build an adjacency list from state machine transitions.\n * Extracted from orbital-verify-unified/src/analyze.ts.\n *\n * @packageDocumentation\n */\n\nimport type { GraphTransition, StateEdge } from './types.js';\n\n/**\n * Builds an adjacency list from state machine transitions.\n * \n * Constructs a state transition graph where each state maps to an array\n * of outgoing edges (events and target states). Wildcard transitions\n * (from === '*') are excluded since they don't represent fixed edges.\n * Used as the foundation for state machine analysis, traversal, and verification.\n * \n * @param {GraphTransition[]} transitions - Array of state transitions\n * @returns {Map<string, StateEdge[]>} State transition graph\n * \n * @example\n * const graph = buildStateGraph(transitions);\n * const edgesFromInitial = graph.get('initial'); // Array of outgoing edges\n * console.log(`Initial state has ${edgesFromInitial?.length} transitions`);\n */\nexport function buildStateGraph(\n transitions: GraphTransition[]\n): Map<string, StateEdge[]> {\n const graph = new Map<string, StateEdge[]>();\n for (const t of transitions) {\n if (t.from === '*') continue;\n if (!graph.has(t.from)) graph.set(t.from, []);\n graph.get(t.from)!.push({ event: t.event, to: t.to });\n }\n return graph;\n}\n","/**\n * BFS Reachability Algorithms\n *\n * Breadth-first search over state machine graphs.\n * Extracted from orbital-verify-unified/src/analyze.ts and phase3-server.ts.\n *\n * @packageDocumentation\n */\n\nimport type { BFSNode, StateEdge } from './types.js';\nimport { buildStateGraph } from './graph.js';\nimport type { GraphTransition } from './types.js';\n\n/**\n * Collects all reachable states from an initial state using breadth-first search.\n * \n * Performs BFS traversal of the state machine to find all states reachable\n * from the initial state, up to the specified maximum depth. Used for\n * state machine analysis, verification, and test coverage assessment.\n * \n * @param {GraphTransition[]} transitions - Array of state transitions\n * @param {string} initialState - Starting state name\n * @param {number} [maxDepth=5] - Maximum search depth\n * @returns {Set<string>} Set of reachable state names\n * \n * @example\n * const reachable = collectReachableStates(transitions, 'initial', 10);\n * console.log('Reachable states:', Array.from(reachable));\n */\nexport function collectReachableStates(\n transitions: GraphTransition[],\n initialState: string,\n maxDepth = 5\n): Set<string> {\n const graph = buildStateGraph(transitions);\n const visited = new Set<string>([initialState]);\n const queue: BFSNode[] = [{ state: initialState, depth: 0 }];\n\n while (queue.length > 0) {\n const current = queue.shift()!;\n if (current.depth >= maxDepth) continue;\n\n const edges = graph.get(current.state) ?? [];\n for (const edge of edges) {\n if (!visited.has(edge.to)) {\n visited.add(edge.to);\n queue.push({ state: edge.to, depth: current.depth + 1 });\n }\n }\n }\n\n return visited;\n}\n\n/**\n * Walks all reachable (state, event) pairs using BFS and invokes callback for each.\n * \n * Traverses the state machine using breadth-first search and calls the visitor\n * function for each (state, edge) pair encountered. Used by server verification\n * to test transitions by POSTing to endpoints and checking responses.\n * \n * @param {GraphTransition[]} transitions - Array of state transitions\n * @param {string} initialState - Starting state name\n * @param {number} maxDepth - Maximum BFS depth\n * @param {(state: string, edge: StateEdge, depth: number) => Promise<boolean>} visitor - Callback for each pair\n * @returns {Promise<{ visitedPairs: Set<string>; walkedEdges: number }>} Traversal statistics\n * \n * @example\n * const result = await walkStatePairs(transitions, 'initial', 5, async (state, edge) => {\n * console.log(`Transition: ${state} --${edge.event}--> ${edge.to}`);\n * return true; // Continue exploration\n * });\n * console.log(`Visited ${result.visitedPairs.size} state-event pairs`);\n */\nexport async function walkStatePairs(\n transitions: GraphTransition[],\n initialState: string,\n maxDepth: number,\n visitor: (state: string, edge: StateEdge, depth: number) => Promise<boolean>\n): Promise<{ visitedPairs: Set<string>; walkedEdges: number }> {\n const graph = buildStateGraph(transitions);\n const visitedPairs = new Set<string>();\n const queue: BFSNode[] = [{ state: initialState, depth: 0 }];\n let walkedEdges = 0;\n\n while (queue.length > 0) {\n const current = queue.shift()!;\n if (current.depth >= maxDepth) continue;\n\n const edges = graph.get(current.state) ?? [];\n for (const edge of edges) {\n const pairKey = `${current.state}:${edge.event}`;\n if (visitedPairs.has(pairKey)) continue;\n visitedPairs.add(pairKey);\n\n const shouldEnqueue = await visitor(current.state, edge, current.depth);\n walkedEdges++;\n\n if (shouldEnqueue) {\n const stateVisited = [...visitedPairs].some((k) => k.startsWith(`${edge.to}:`));\n if (!stateVisited) {\n queue.push({ state: edge.to, depth: current.depth + 1 });\n }\n }\n }\n }\n\n return { visitedPairs, walkedEdges };\n}\n","/**\n * Guard Payload Builder\n *\n * Derive pass and fail payloads from guard s-expressions.\n * Extracted from orbital-verify-unified/src/analyze.ts.\n *\n * @packageDocumentation\n */\n\nimport type { GuardPayload } from './types.js';\n\n/**\n * Extracts the first segment of a payload field reference.\n * \n * Parses binding references in the format \"@payload.field\" and extracts\n * the first field name segment. Used for identifying payload fields in\n * guard conditions for test data generation.\n * \n * @param {unknown} ref - Binding reference to extract from\n * @returns {string | null} First field segment or null for non-payload references\n * \n * @example\n * extractPayloadFieldRef('@payload.item'); // returns 'item'\n * extractPayloadFieldRef('@payload.data.weight'); // returns 'data'\n * extractPayloadFieldRef('@entity.id'); // returns null\n * extractPayloadFieldRef('@user.name'); // returns null\n */\nexport function extractPayloadFieldRef(ref: unknown): string | null {\n if (typeof ref !== 'string') return null;\n const match = ref.match(/^@payload\\.([A-Za-z0-9_]+)/);\n return match ? match[1] : null;\n}\n\n/**\n * Builds test payloads that satisfy or violate guard conditions.\n * \n * Generates pass/fail test data for guard s-expressions used in state machine\n * transitions. Pass payloads satisfy the guard condition (allowing transition),\n * fail payloads violate it (blocking transition). Used for automated testing\n * and validation of state machine behavior.\n * \n * Supports operators: not-nil, nil, eq, not-eq, gt, gte, lt, lte, and, or, not\n * \n * @param {unknown} guard - Guard s-expression to analyze\n * @returns {GuardPayload} Object with pass and fail payloads\n * \n * @example\n * // Guard: ['not-nil', '@payload.completed']\n * buildGuardPayloads(['not-nil', '@payload.completed']);\n * // Returns: { pass: { completed: 'mock-test-value' }, fail: { completed: null } }\n * \n * @example\n * // Guard: ['eq', '@payload.status', 'active']\n * buildGuardPayloads(['eq', '@payload.status', 'active']);\n * // Returns: { pass: { status: 'active' }, fail: { status: 'not-active' } }\n * \n * @example\n * // Guard: ['and', ['not-nil', '@payload.id'], ['eq', '@payload.status', 'ready']]\n * buildGuardPayloads(['and', ['not-nil', '@payload.id'], ['eq', '@payload.status', 'ready']]);\n * // Returns: { pass: { id: 'mock-test-value', status: 'ready' }, fail: { id: null } }\n */\nexport function buildGuardPayloads(guard: unknown): GuardPayload {\n // Bare-binding existence guard: e.g. `when @payload.row` lowers to\n // the string `\"@payload.row\"`. The transition fires iff that field is\n // truthy. Synthesize pass with a truthy mock and fail with null so\n // the verifier can drive both branches. Without this, std-confirmation\n // and std-modal's existence guards (REQUEST/EDIT requiring @payload.row)\n // get empty payloads in both cases — the pass case then fails the\n // server-side guard and the portal observer flags \"slot not mounted\".\n if (typeof guard === 'string') {\n const field = extractPayloadFieldRef(guard);\n if (field) return { pass: { [field]: { id: 'mock-test-id', name: 'mock-test-name' } }, fail: { [field]: null } };\n }\n\n if (!Array.isArray(guard) || guard.length === 0) {\n return { pass: {}, fail: {} };\n }\n\n const op = String(guard[0]);\n\n if (op === 'not-nil' || op === 'not_nil') {\n const field = extractPayloadFieldRef(guard[1]);\n if (field) return { pass: { [field]: 'mock-test-value' }, fail: { [field]: null } };\n }\n\n if (op === 'nil') {\n const field = extractPayloadFieldRef(guard[1]);\n if (field) return { pass: {}, fail: { [field]: 'mock-test-value' } };\n }\n\n if (op === 'eq' || op === '==' || op === '=') {\n const field = extractPayloadFieldRef(guard[1]);\n const val = guard[2];\n if (field && val !== undefined) {\n const failVal =\n typeof val === 'number' ? val + 1\n : typeof val === 'string' ? `not-${val}`\n : null;\n return { pass: { [field]: val }, fail: { [field]: failVal } };\n }\n }\n\n if (op === 'not-eq' || op === '!=' || op === 'neq') {\n const field = extractPayloadFieldRef(guard[1]);\n const val = guard[2];\n if (field && val !== undefined) {\n const passVal =\n typeof val === 'number' ? val + 1\n : typeof val === 'string' ? `not-${val}`\n : 'other';\n return { pass: { [field]: passVal }, fail: { [field]: val } };\n }\n }\n\n if (op === 'gt' || op === '>') {\n const field = extractPayloadFieldRef(guard[1]);\n const n = typeof guard[2] === 'number' ? guard[2] : 0;\n if (field) return { pass: { [field]: n + 1 }, fail: { [field]: n - 1 } };\n }\n\n if (op === 'gte' || op === '>=') {\n const field = extractPayloadFieldRef(guard[1]);\n const n = typeof guard[2] === 'number' ? guard[2] : 0;\n if (field) return { pass: { [field]: n }, fail: { [field]: n - 1 } };\n }\n\n if (op === 'lt' || op === '<') {\n const field = extractPayloadFieldRef(guard[1]);\n const n = typeof guard[2] === 'number' ? guard[2] : 0;\n if (field) return { pass: { [field]: n - 1 }, fail: { [field]: n + 1 } };\n }\n\n if (op === 'lte' || op === '<=') {\n const field = extractPayloadFieldRef(guard[1]);\n const n = typeof guard[2] === 'number' ? guard[2] : 0;\n if (field) return { pass: { [field]: n }, fail: { [field]: n + 1 } };\n }\n\n if (op === 'and') {\n const subs = (guard.slice(1) as unknown[]).filter(Array.isArray);\n if (subs.length >= 2) {\n const s1 = buildGuardPayloads(subs[0]);\n const s2 = buildGuardPayloads(subs[1]);\n return { pass: { ...s1.pass, ...s2.pass }, fail: s1.fail };\n }\n if (subs.length === 1) return buildGuardPayloads(subs[0]);\n }\n\n if (op === 'or') {\n // Accept BOTH array sub-guards and bare-binding string sub-guards\n // (post-substitution mode-aware guards like\n // `(or (= \"edit\" \"create\") \"@payload.row\")` mix array + string children).\n const subs = guard.slice(1) as unknown[];\n if (subs.length >= 2) {\n const s1 = buildGuardPayloads(subs[0]);\n const s2 = buildGuardPayloads(subs[1]);\n // For OR: pass if EITHER branch passes. Prefer the second branch's\n // pass payload if the first yields nothing useful — the literal-fold\n // case `(= \"edit\" \"create\") || @payload.row` has the first branch\n // return `{}` and the row-payload comes from the second.\n const combinedPass = Object.keys(s1.pass).length > 0 ? s1.pass : s2.pass;\n return { pass: combinedPass, fail: { ...s1.fail, ...s2.fail } };\n }\n if (subs.length === 1) return buildGuardPayloads(subs[0]);\n }\n\n if (op === 'not') {\n const inner = buildGuardPayloads(guard[1]);\n return { pass: inner.fail, fail: inner.pass };\n }\n\n // Agent pure operators used in guards\n if (op === 'agent/is-pinned') {\n const field = extractPayloadFieldRef(guard[1]);\n if (field) return { pass: { [field]: 'mem_test_unpinned' }, fail: { [field]: 'mem_test_pinned' } };\n }\n\n if (op === 'agent/memory-strength') {\n const field = extractPayloadFieldRef(guard[1]);\n if (field) return { pass: { [field]: 'mem_test_id' }, fail: { [field]: 'mem_nonexistent' } };\n }\n\n // Agent operators in comparison contexts (e.g., [\">=\", [\"agent/context-usage\"], 0.85])\n // These don't use @payload, they query agent state directly. Return empty payloads\n // since the guard result depends on agent context, not event payload.\n if (op.startsWith('agent/')) {\n return { pass: {}, fail: {} };\n }\n\n return { pass: {}, fail: {} };\n}\n","/**\n * Replay Path Builder\n *\n * Compute the shortest path (replay steps) from an initial state\n * to every reachable state in a state machine. Used by browser\n * verification to navigate through states before running assertions.\n *\n * Extracted from orbital-verify-unified/src/analyze.ts (collectDataMutationTests).\n *\n * @packageDocumentation\n */\n\nimport type { GraphTransition, ReplayStep, PayloadFieldSchema } from './types.js';\n\n/** Entity-data sentinel payload fields: presence means transition needs a selected row */\nconst ENTITY_PAYLOAD_FIELDS = new Set(['data', 'row', 'item', 'id']);\n\n/**\n * Extended transition with render and payload info needed for replay path building.\n * Compatible with orbital-verify's UnifiedTransition.\n */\nexport interface ReplayTransition extends GraphTransition {\n hasGuard: boolean;\n guard?: unknown[];\n payloadFields: string[];\n payloadSchema: PayloadFieldSchema[];\n renderEffects: Array<{\n slot: string;\n patternType: string | null;\n }>;\n}\n\n/**\n * Builds the shortest replay paths from initial state to all reachable states.\n * \n * Computes step-by-step navigation paths for state machine testing and verification.\n * Uses breadth-first search to find shortest paths up to specified depth limit.\n * Each path contains replay steps with event, state, and payload information\n * needed to reproduce state transitions in tests.\n * \n * @param {ReplayTransition[]} transitions - Transitions with render/payload information\n * @param {string} initialState - Starting state name\n * @param {number} [maxDepth=3] - Maximum path length (default: 3)\n * @returns {Map<string, ReplayStep[]>} Map of state names to replay step arrays\n * \n * @example\n * // Build paths from 'initial' state\n * const paths = buildReplayPaths(transitions, 'initial', 5);\n * \n * // Get steps to reach 'completed' state\n * const stepsToComplete = paths.get('completed');\n * \n * // Execute replay steps\n * for (const step of stepsToComplete) {\n * await dispatchEvent(step.event, step.payload);\n * }\n */\nexport function buildReplayPaths(\n transitions: ReplayTransition[],\n initialState: string,\n maxDepth = 3\n): Map<string, ReplayStep[]> {\n type QueueNode = { state: string; path: ReplayStep[] };\n\n const queue: QueueNode[] = [{ state: initialState, path: [] }];\n const replayPaths = new Map<string, ReplayStep[]>();\n replayPaths.set(initialState, []);\n\n while (queue.length > 0) {\n const { state, path } = queue.shift()!;\n if (path.length >= maxDepth) continue;\n\n const fromHere = transitions.filter(\n (t) => t.from === state && t.event !== 'INIT',\n );\n\n for (const transition of fromHere) {\n if (replayPaths.has(transition.to)) continue;\n\n const renderEffect = transition.renderEffects.find((re) => re.patternType !== null);\n const stepNeedsEntityData =\n transition.hasGuard ||\n transition.payloadFields.some((f) => ENTITY_PAYLOAD_FIELDS.has(f));\n\n const step: ReplayStep = {\n event: transition.event,\n fromState: state,\n toState: transition.to,\n slot: renderEffect?.slot ?? 'main',\n expectedPattern: renderEffect?.patternType ?? undefined,\n needsEntityData: stepNeedsEntityData,\n payloadSchema: transition.payloadSchema.length > 0 ? transition.payloadSchema : undefined,\n };\n\n const newPath = [...path, step];\n replayPaths.set(transition.to, newPath);\n queue.push({ state: transition.to, path: newPath });\n }\n }\n\n return replayPaths;\n}\n","/**\n * Edge-Covering Walk Algorithm\n *\n * Computes an ordered sequence of events (WalkStep[]) that covers every\n * transition (edge) in a state machine graph at least once. This guarantees\n * 100% transition coverage regardless of graph topology.\n *\n * Algorithm:\n * 1. Build adjacency list and edge universe (guarded transitions produce two edges)\n * 2. Precompute BFS shortest paths between all state pairs (for repositioning)\n * 3. Greedy DFS: at each state, prefer uncovered outgoing edges\n * 4. When stuck, insert repositioning steps to nearest state with uncovered edges\n * 5. Guard-fail steps don't advance state (guard blocks transition)\n *\n * Used by StateWalkEngine in @almadar-io/verify. Both orbital-verify and\n * runtime-verify share this algorithm for consistent coverage.\n *\n * @packageDocumentation\n */\n\nimport type { EdgeWalkTransition, WalkStep, StateEdge } from './types.js';\nimport type { EventPayload, EventPayloadValue } from '../types/expression.js';\nimport { buildGuardPayloads } from './guard-payloads.js';\n\n/**\n * Build an ordered walk that covers every edge in the state machine.\n *\n * @param transitions - All transitions in the state machine\n * @param initialState - Starting state\n * @returns Ordered walk steps covering every edge\n */\nexport function buildEdgeCoveringWalk(\n transitions: EdgeWalkTransition[],\n initialState: string,\n): WalkStep[] {\n // 1. Build adjacency list. Skip wildcards (pseudostates) and skip the\n // boot INIT (the runtime auto-fires INIT from the initial state on\n // mount, so the walker doesn't need to fire it). User-triggered INITs\n // from non-initial states (refresh, retry) ARE walkable edges and\n // stay in the graph so coverage can reach them.\n const filtered = transitions.filter(\n (t) => t.from !== '*' && !(t.event === 'INIT' && t.from === initialState),\n );\n\n const graph = new Map<string, Array<{ event: string; to: string; transition: EdgeWalkTransition }>>();\n const allStates = new Set<string>();\n\n for (const t of filtered) {\n allStates.add(t.from);\n allStates.add(t.to);\n if (!graph.has(t.from)) graph.set(t.from, []);\n graph.get(t.from)!.push({ event: t.event, to: t.to, transition: t });\n }\n\n // Ensure initial state is in the set\n allStates.add(initialState);\n\n // 2. Build edge universe. Guarded transitions produce pass + fail edges.\n const uncovered = new Set<string>();\n const edgeMeta = new Map<string, { transition: EdgeWalkTransition; guardCase: 'pass' | 'fail' | null }>();\n\n for (const t of filtered) {\n if (t.hasGuard) {\n const keyPass = `${t.from}+${t.event}->${t.to}[pass]`;\n const keyFail = `${t.from}+${t.event}->${t.to}[fail]`;\n uncovered.add(keyPass);\n uncovered.add(keyFail);\n edgeMeta.set(keyPass, { transition: t, guardCase: 'pass' });\n edgeMeta.set(keyFail, { transition: t, guardCase: 'fail' });\n } else {\n const key = `${t.from}+${t.event}->${t.to}`;\n uncovered.add(key);\n edgeMeta.set(key, { transition: t, guardCase: null });\n }\n }\n\n if (uncovered.size === 0) return [];\n\n // 3. Precompute BFS shortest paths between all state pairs\n const shortestPaths = new Map<string, Map<string, Array<{ event: string; to: string }>>>();\n for (const state of allStates) {\n shortestPaths.set(state, bfsShortestPaths(state, graph));\n }\n\n // 4. Greedy walk\n const walk: WalkStep[] = [];\n let currentState = initialState;\n const maxIterations = uncovered.size * allStates.size * 2; // safety bound\n let iterations = 0;\n\n while (uncovered.size > 0 && iterations < maxIterations) {\n iterations++;\n\n // Find uncovered edges from currentState\n const outgoing = findUncoveredEdges(currentState, graph, uncovered);\n\n if (outgoing.length > 0) {\n // Pick first uncovered edge\n const pick = outgoing[0];\n const payload = buildPayloadForEdge(pick.transition, pick.guardCase);\n\n walk.push({\n from: currentState,\n event: pick.transition.event,\n to: pick.transition.to,\n guardCase: pick.guardCase,\n payload,\n isRepositioning: false,\n });\n\n uncovered.delete(pick.key);\n\n // Guard-fail doesn't advance state\n if (pick.guardCase !== 'fail') {\n currentState = pick.transition.to;\n }\n } else {\n // Stuck: find nearest state with uncovered edges\n const target = findNearestUncoveredState(currentState, graph, uncovered, shortestPaths);\n\n if (!target) {\n // No reachable state with uncovered edges. Remaining edges are unreachable.\n break;\n }\n\n // Insert repositioning steps\n const repoPath = shortestPaths.get(currentState)?.get(target);\n if (!repoPath || repoPath.length === 0) break;\n\n for (const step of repoPath) {\n walk.push({\n from: currentState,\n event: step.event,\n to: step.to,\n guardCase: null,\n payload: {},\n isRepositioning: true,\n });\n currentState = step.to;\n }\n }\n }\n\n return walk;\n}\n\n// ---------------------------------------------------------------------------\n// Internal helpers\n// ---------------------------------------------------------------------------\n\n/**\n * BFS from a source state, returning shortest paths to all reachable states.\n * Each path is an array of {event, to} steps.\n */\nfunction bfsShortestPaths(\n source: string,\n graph: Map<string, Array<{ event: string; to: string; transition: EdgeWalkTransition }>>,\n): Map<string, Array<{ event: string; to: string }>> {\n const paths = new Map<string, Array<{ event: string; to: string }>>();\n const visited = new Set<string>([source]);\n const queue: Array<{ state: string; path: Array<{ event: string; to: string }> }> = [\n { state: source, path: [] },\n ];\n\n while (queue.length > 0) {\n const { state, path } = queue.shift()!;\n const edges = graph.get(state) ?? [];\n\n for (const edge of edges) {\n if (visited.has(edge.to)) continue;\n visited.add(edge.to);\n const newPath = [...path, { event: edge.event, to: edge.to }];\n paths.set(edge.to, newPath);\n queue.push({ state: edge.to, path: newPath });\n }\n }\n\n return paths;\n}\n\n/**\n * Find uncovered edges from a given state.\n */\nfunction findUncoveredEdges(\n state: string,\n graph: Map<string, Array<{ event: string; to: string; transition: EdgeWalkTransition }>>,\n uncovered: Set<string>,\n): Array<{ key: string; transition: EdgeWalkTransition; guardCase: 'pass' | 'fail' | null }> {\n const edges = graph.get(state) ?? [];\n const result: Array<{ key: string; transition: EdgeWalkTransition; guardCase: 'pass' | 'fail' | null }> = [];\n\n for (const edge of edges) {\n if (edge.transition.hasGuard) {\n const keyPass = `${state}+${edge.event}->${edge.to}[pass]`;\n const keyFail = `${state}+${edge.event}->${edge.to}[fail]`;\n // Prefer pass first (advances state), then fail\n if (uncovered.has(keyPass)) {\n result.push({ key: keyPass, transition: edge.transition, guardCase: 'pass' });\n }\n if (uncovered.has(keyFail)) {\n result.push({ key: keyFail, transition: edge.transition, guardCase: 'fail' });\n }\n } else {\n const key = `${state}+${edge.event}->${edge.to}`;\n if (uncovered.has(key)) {\n result.push({ key, transition: edge.transition, guardCase: null });\n }\n }\n }\n\n return result;\n}\n\n/**\n * Find the nearest state (from currentState) that has uncovered outgoing edges.\n */\nfunction findNearestUncoveredState(\n currentState: string,\n graph: Map<string, Array<{ event: string; to: string; transition: EdgeWalkTransition }>>,\n uncovered: Set<string>,\n shortestPaths: Map<string, Map<string, Array<{ event: string; to: string }>>>,\n): string | null {\n // Collect states that have uncovered edges\n const statesWithUncovered = new Set<string>();\n for (const key of uncovered) {\n // Key format: \"state+EVENT->target\" or \"state+EVENT->target[pass]\"\n const fromState = key.split('+')[0];\n statesWithUncovered.add(fromState);\n }\n\n // If current state has uncovered edges, return it (shouldn't happen, but handle it)\n if (statesWithUncovered.has(currentState)) return currentState;\n\n // Find nearest reachable state with uncovered edges\n const paths = shortestPaths.get(currentState);\n if (!paths) return null;\n\n let nearestState: string | null = null;\n let nearestDist = Infinity;\n\n for (const target of statesWithUncovered) {\n const path = paths.get(target);\n if (path && path.length < nearestDist) {\n nearestDist = path.length;\n nearestState = target;\n }\n }\n\n return nearestState;\n}\n\n/**\n * Build a payload for a given edge based on its guard case and payload schema.\n * For guarded transitions, uses guard expressions to generate pass/fail payloads.\n * For unguarded transitions with payload schemas (e.g., EDIT/VIEW with { id }),\n * generates mock values so fetch-by-ID effects can resolve entity data.\n */\nfunction buildPayloadForEdge(\n transition: EdgeWalkTransition,\n guardCase: 'pass' | 'fail' | null,\n): EventPayload {\n // Guard-based payload generation (existing behavior)\n if (transition.hasGuard && transition.guard && guardCase) {\n const payloads = buildGuardPayloads(transition.guard);\n return guardCase === 'pass' ? payloads.pass : payloads.fail;\n }\n\n // Schema-based payload generation for events that declare required fields\n // (e.g., EDIT/VIEW declare { name: \"id\", type: \"string\", required: true })\n if (transition.payloadSchema && transition.payloadSchema.length > 0) {\n const payload: EventPayload = {};\n for (const field of transition.payloadSchema) {\n // Use caller-provided mockValue if available (set from entity context)\n if (field.mockValue !== undefined) {\n payload[field.name] = field.mockValue as EventPayloadValue;\n } else if (field.type === 'string') {\n payload[field.name] = `mock-${field.name}`;\n } else if (field.type === 'number') {\n payload[field.name] = 1;\n } else if (field.type === 'boolean') {\n payload[field.name] = true;\n } else if (field.type === 'object' || field.type === 'any') {\n // `mock-<name>` is a plain string; persisting that for an object\n // field (e.g. SAVE's `data: object` carrying a form row) spreads\n // the string's characters across numeric keys server-side and\n // the downstream grid renders blank cards. An empty object is a\n // safer default — callers that need entity-shaped mocks should\n // set `mockValue` at the call site (see orbital-verify-unified's\n // phase4-browser TraitWalkConfig builder).\n payload[field.name] = {};\n } else {\n payload[field.name] = `mock-${field.name}`;\n }\n }\n return payload;\n }\n\n return {};\n}\n"]}
1
+ {"version":3,"sources":["../../src/state-machine/graph.ts","../../src/state-machine/bfs.ts","../../src/state-machine/guard-payloads.ts","../../src/state-machine/replay-paths.ts","../../src/state-machine/edge-walk.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["/**\n * State Graph Construction\n *\n * Build an adjacency list from state machine transitions.\n * Extracted from orbital-verify-unified/src/analyze.ts.\n *\n * @packageDocumentation\n */\n\nimport type { GraphTransition, StateEdge } from './types.js';\n\n/**\n * Builds an adjacency list from state machine transitions.\n * \n * Constructs a state transition graph where each state maps to an array\n * of outgoing edges (events and target states). Wildcard transitions\n * (from === '*') are excluded since they don't represent fixed edges.\n * Used as the foundation for state machine analysis, traversal, and verification.\n * \n * @param {GraphTransition[]} transitions - Array of state transitions\n * @returns {Map<string, StateEdge[]>} State transition graph\n * \n * @example\n * const graph = buildStateGraph(transitions);\n * const edgesFromInitial = graph.get('initial'); // Array of outgoing edges\n * console.log(`Initial state has ${edgesFromInitial?.length} transitions`);\n */\nexport function buildStateGraph(\n transitions: GraphTransition[]\n): Map<string, StateEdge[]> {\n const graph = new Map<string, StateEdge[]>();\n for (const t of transitions) {\n if (t.from === '*') continue;\n if (!graph.has(t.from)) graph.set(t.from, []);\n graph.get(t.from)!.push({ event: t.event, to: t.to });\n }\n return graph;\n}\n","/**\n * BFS Reachability Algorithms\n *\n * Breadth-first search over state machine graphs.\n * Extracted from orbital-verify-unified/src/analyze.ts and phase3-server.ts.\n *\n * @packageDocumentation\n */\n\nimport type { BFSNode, StateEdge } from './types.js';\nimport { buildStateGraph } from './graph.js';\nimport type { GraphTransition } from './types.js';\n\n/**\n * Collects all reachable states from an initial state using breadth-first search.\n * \n * Performs BFS traversal of the state machine to find all states reachable\n * from the initial state, up to the specified maximum depth. Used for\n * state machine analysis, verification, and test coverage assessment.\n * \n * @param {GraphTransition[]} transitions - Array of state transitions\n * @param {string} initialState - Starting state name\n * @param {number} [maxDepth=5] - Maximum search depth\n * @returns {Set<string>} Set of reachable state names\n * \n * @example\n * const reachable = collectReachableStates(transitions, 'initial', 10);\n * console.log('Reachable states:', Array.from(reachable));\n */\nexport function collectReachableStates(\n transitions: GraphTransition[],\n initialState: string,\n maxDepth = 5\n): Set<string> {\n const graph = buildStateGraph(transitions);\n const visited = new Set<string>([initialState]);\n const queue: BFSNode[] = [{ state: initialState, depth: 0 }];\n\n while (queue.length > 0) {\n const current = queue.shift()!;\n if (current.depth >= maxDepth) continue;\n\n const edges = graph.get(current.state) ?? [];\n for (const edge of edges) {\n if (!visited.has(edge.to)) {\n visited.add(edge.to);\n queue.push({ state: edge.to, depth: current.depth + 1 });\n }\n }\n }\n\n return visited;\n}\n\n/**\n * Walks all reachable (state, event) pairs using BFS and invokes callback for each.\n * \n * Traverses the state machine using breadth-first search and calls the visitor\n * function for each (state, edge) pair encountered. Used by server verification\n * to test transitions by POSTing to endpoints and checking responses.\n * \n * @param {GraphTransition[]} transitions - Array of state transitions\n * @param {string} initialState - Starting state name\n * @param {number} maxDepth - Maximum BFS depth\n * @param {(state: string, edge: StateEdge, depth: number) => Promise<boolean>} visitor - Callback for each pair\n * @returns {Promise<{ visitedPairs: Set<string>; walkedEdges: number }>} Traversal statistics\n * \n * @example\n * const result = await walkStatePairs(transitions, 'initial', 5, async (state, edge) => {\n * console.log(`Transition: ${state} --${edge.event}--> ${edge.to}`);\n * return true; // Continue exploration\n * });\n * console.log(`Visited ${result.visitedPairs.size} state-event pairs`);\n */\nexport async function walkStatePairs(\n transitions: GraphTransition[],\n initialState: string,\n maxDepth: number,\n visitor: (state: string, edge: StateEdge, depth: number) => Promise<boolean>\n): Promise<{ visitedPairs: Set<string>; walkedEdges: number }> {\n const graph = buildStateGraph(transitions);\n const visitedPairs = new Set<string>();\n const queue: BFSNode[] = [{ state: initialState, depth: 0 }];\n let walkedEdges = 0;\n\n while (queue.length > 0) {\n const current = queue.shift()!;\n if (current.depth >= maxDepth) continue;\n\n const edges = graph.get(current.state) ?? [];\n for (const edge of edges) {\n const pairKey = `${current.state}:${edge.event}`;\n if (visitedPairs.has(pairKey)) continue;\n visitedPairs.add(pairKey);\n\n const shouldEnqueue = await visitor(current.state, edge, current.depth);\n walkedEdges++;\n\n if (shouldEnqueue) {\n const stateVisited = [...visitedPairs].some((k) => k.startsWith(`${edge.to}:`));\n if (!stateVisited) {\n queue.push({ state: edge.to, depth: current.depth + 1 });\n }\n }\n }\n }\n\n return { visitedPairs, walkedEdges };\n}\n","/**\n * Guard Payload Builder\n *\n * Derive pass and fail payloads from guard s-expressions.\n * Extracted from orbital-verify-unified/src/analyze.ts.\n *\n * @packageDocumentation\n */\n\nimport type { GuardPayload } from './types.js';\n\n/**\n * Extracts the first segment of a payload field reference.\n * \n * Parses binding references in the format \"@payload.field\" and extracts\n * the first field name segment. Used for identifying payload fields in\n * guard conditions for test data generation.\n * \n * @param {unknown} ref - Binding reference to extract from\n * @returns {string | null} First field segment or null for non-payload references\n * \n * @example\n * extractPayloadFieldRef('@payload.item'); // returns 'item'\n * extractPayloadFieldRef('@payload.data.weight'); // returns 'data'\n * extractPayloadFieldRef('@entity.id'); // returns null\n * extractPayloadFieldRef('@user.name'); // returns null\n */\nexport function extractPayloadFieldRef(ref: unknown): string | null {\n if (typeof ref !== 'string') return null;\n const match = ref.match(/^@payload\\.([A-Za-z0-9_]+)/);\n return match ? match[1] : null;\n}\n\n/**\n * Builds test payloads that satisfy or violate guard conditions.\n * \n * Generates pass/fail test data for guard s-expressions used in state machine\n * transitions. Pass payloads satisfy the guard condition (allowing transition),\n * fail payloads violate it (blocking transition). Used for automated testing\n * and validation of state machine behavior.\n * \n * Supports operators: not-nil, nil, eq, not-eq, gt, gte, lt, lte, and, or, not\n * \n * @param {unknown} guard - Guard s-expression to analyze\n * @returns {GuardPayload} Object with pass and fail payloads\n * \n * @example\n * // Guard: ['not-nil', '@payload.completed']\n * buildGuardPayloads(['not-nil', '@payload.completed']);\n * // Returns: { pass: { completed: 'mock-test-value' }, fail: { completed: null } }\n * \n * @example\n * // Guard: ['eq', '@payload.status', 'active']\n * buildGuardPayloads(['eq', '@payload.status', 'active']);\n * // Returns: { pass: { status: 'active' }, fail: { status: 'not-active' } }\n * \n * @example\n * // Guard: ['and', ['not-nil', '@payload.id'], ['eq', '@payload.status', 'ready']]\n * buildGuardPayloads(['and', ['not-nil', '@payload.id'], ['eq', '@payload.status', 'ready']]);\n * // Returns: { pass: { id: 'mock-test-value', status: 'ready' }, fail: { id: null } }\n */\n/**\n * Evaluate a guard that is fully constant (no `@payload`/`@entity`/`@config`\n * bindings — e.g. after molecule/organism inlining folds `@config.mode` to a\n * literal). Returns the constant truth value, or `null` when the guard depends\n * on a binding (so a payload must be synthesized). This lets callers (a) emit\n * an empty payload for a constant guard (no field to satisfy) and (b) skip the\n * meaningless variant: an always-true guard has no fail case, an always-false\n * guard has no pass case. Without it, `(or (= \"create\" \"create\") @payload.row)`\n * (create-mode modal OPEN) was synthesized with a spurious `row`, which the\n * runtime read as edit-mode and rejected.\n */\nexport function constTruth(guard: unknown): boolean | null {\n if (typeof guard === 'boolean') return guard;\n if (typeof guard === 'string') {\n if (guard.startsWith('@')) return null; // a binding — not constant\n return guard.length > 0; // bare non-binding literal: truthy iff non-empty\n }\n if (!Array.isArray(guard) || guard.length === 0) return null;\n const op = String(guard[0]);\n const isLiteral = (x: unknown): boolean =>\n x === null ||\n typeof x === 'number' ||\n typeof x === 'boolean' ||\n (typeof x === 'string' && !x.startsWith('@'));\n if (op === '=' || op === '==' || op === 'eq') {\n return isLiteral(guard[1]) && isLiteral(guard[2]) ? guard[1] === guard[2] : null;\n }\n if (op === '!=' || op === 'ne' || op === 'not-eq' || op === 'neq') {\n return isLiteral(guard[1]) && isLiteral(guard[2]) ? guard[1] !== guard[2] : null;\n }\n if (op === 'not') {\n const inner = constTruth(guard[1]);\n return inner === null ? null : !inner;\n }\n if (op === 'or') {\n const subs = (guard.slice(1) as unknown[]).map(constTruth);\n if (subs.some((s) => s === true)) return true; // short-circuit\n if (subs.every((s) => s === false)) return false;\n return null;\n }\n if (op === 'and') {\n const subs = (guard.slice(1) as unknown[]).map(constTruth);\n if (subs.some((s) => s === false)) return false; // short-circuit\n if (subs.every((s) => s === true)) return true;\n return null;\n }\n return null;\n}\n\nexport function buildGuardPayloads(guard: unknown): GuardPayload {\n // A fully-constant guard (post-inline literal fold) is decided by its\n // literals, not by the payload — synthesize nothing for either case.\n if (constTruth(guard) !== null) {\n return { pass: {}, fail: {} };\n }\n // Bare-binding existence guard: e.g. `when @payload.row` lowers to\n // the string `\"@payload.row\"`. The transition fires iff that field is\n // truthy. Synthesize pass with a truthy mock and fail with null so\n // the verifier can drive both branches. Without this, std-confirmation\n // and std-modal's existence guards (REQUEST/EDIT requiring @payload.row)\n // get empty payloads in both cases — the pass case then fails the\n // server-side guard and the portal observer flags \"slot not mounted\".\n if (typeof guard === 'string') {\n const field = extractPayloadFieldRef(guard);\n if (field) return { pass: { [field]: { id: 'mock-test-id', name: 'mock-test-name' } }, fail: { [field]: null } };\n }\n\n if (!Array.isArray(guard) || guard.length === 0) {\n return { pass: {}, fail: {} };\n }\n\n const op = String(guard[0]);\n\n if (op === 'not-nil' || op === 'not_nil') {\n const field = extractPayloadFieldRef(guard[1]);\n if (field) return { pass: { [field]: 'mock-test-value' }, fail: { [field]: null } };\n }\n\n if (op === 'nil') {\n const field = extractPayloadFieldRef(guard[1]);\n if (field) return { pass: {}, fail: { [field]: 'mock-test-value' } };\n }\n\n if (op === 'eq' || op === '==' || op === '=') {\n const field = extractPayloadFieldRef(guard[1]);\n const val = guard[2];\n if (field && val !== undefined) {\n const failVal =\n typeof val === 'number' ? val + 1\n : typeof val === 'string' ? `not-${val}`\n : null;\n return { pass: { [field]: val }, fail: { [field]: failVal } };\n }\n }\n\n if (op === 'not-eq' || op === '!=' || op === 'neq') {\n const field = extractPayloadFieldRef(guard[1]);\n const val = guard[2];\n if (field && val !== undefined) {\n const passVal =\n typeof val === 'number' ? val + 1\n : typeof val === 'string' ? `not-${val}`\n : 'other';\n return { pass: { [field]: passVal }, fail: { [field]: val } };\n }\n }\n\n if (op === 'gt' || op === '>') {\n const field = extractPayloadFieldRef(guard[1]);\n const n = typeof guard[2] === 'number' ? guard[2] : 0;\n if (field) return { pass: { [field]: n + 1 }, fail: { [field]: n - 1 } };\n }\n\n if (op === 'gte' || op === '>=') {\n const field = extractPayloadFieldRef(guard[1]);\n const n = typeof guard[2] === 'number' ? guard[2] : 0;\n if (field) return { pass: { [field]: n }, fail: { [field]: n - 1 } };\n }\n\n if (op === 'lt' || op === '<') {\n const field = extractPayloadFieldRef(guard[1]);\n const n = typeof guard[2] === 'number' ? guard[2] : 0;\n if (field) return { pass: { [field]: n - 1 }, fail: { [field]: n + 1 } };\n }\n\n if (op === 'lte' || op === '<=') {\n const field = extractPayloadFieldRef(guard[1]);\n const n = typeof guard[2] === 'number' ? guard[2] : 0;\n if (field) return { pass: { [field]: n }, fail: { [field]: n + 1 } };\n }\n\n if (op === 'and') {\n // Accept BOTH array sub-guards and bare-binding string sub-guards\n // (e.g. `(and \"@payload.row\" (not-nil \"@payload.id\"))`). Dropping the\n // bare strings with filter(Array.isArray) lost their fields from the\n // pass payload. AND passes iff every sub-guard passes, so merge all\n // sub-guards' pass payloads; AND fails iff any sub-guard fails, so the\n // first sub-guard's fail payload is a sufficient violation.\n const subs = guard.slice(1) as unknown[];\n if (subs.length >= 2) {\n const built = subs.map(buildGuardPayloads);\n const pass = built.reduce<GuardPayload['pass']>((acc, b) => ({ ...acc, ...b.pass }), {});\n return { pass, fail: built[0].fail };\n }\n if (subs.length === 1) return buildGuardPayloads(subs[0]);\n }\n\n if (op === 'or') {\n // Accept BOTH array sub-guards and bare-binding string sub-guards\n // (post-substitution mode-aware guards like\n // `(or (= \"edit\" \"create\") \"@payload.row\")` mix array + string children).\n const subs = guard.slice(1) as unknown[];\n if (subs.length >= 2) {\n const s1 = buildGuardPayloads(subs[0]);\n const s2 = buildGuardPayloads(subs[1]);\n // For OR: pass if EITHER branch passes. Prefer the second branch's\n // pass payload if the first yields nothing useful — the literal-fold\n // case `(= \"edit\" \"create\") || @payload.row` has the first branch\n // return `{}` and the row-payload comes from the second.\n const combinedPass = Object.keys(s1.pass).length > 0 ? s1.pass : s2.pass;\n return { pass: combinedPass, fail: { ...s1.fail, ...s2.fail } };\n }\n if (subs.length === 1) return buildGuardPayloads(subs[0]);\n }\n\n if (op === 'not') {\n const inner = buildGuardPayloads(guard[1]);\n return { pass: inner.fail, fail: inner.pass };\n }\n\n // Agent pure operators used in guards\n if (op === 'agent/is-pinned') {\n const field = extractPayloadFieldRef(guard[1]);\n if (field) return { pass: { [field]: 'mem_test_unpinned' }, fail: { [field]: 'mem_test_pinned' } };\n }\n\n if (op === 'agent/memory-strength') {\n const field = extractPayloadFieldRef(guard[1]);\n if (field) return { pass: { [field]: 'mem_test_id' }, fail: { [field]: 'mem_nonexistent' } };\n }\n\n // Agent operators in comparison contexts (e.g., [\">=\", [\"agent/context-usage\"], 0.85])\n // These don't use @payload, they query agent state directly. Return empty payloads\n // since the guard result depends on agent context, not event payload.\n if (op.startsWith('agent/')) {\n return { pass: {}, fail: {} };\n }\n\n return { pass: {}, fail: {} };\n}\n","/**\n * Replay Path Builder\n *\n * Compute the shortest path (replay steps) from an initial state\n * to every reachable state in a state machine. Used by browser\n * verification to navigate through states before running assertions.\n *\n * Extracted from orbital-verify-unified/src/analyze.ts (collectDataMutationTests).\n *\n * @packageDocumentation\n */\n\nimport type { GraphTransition, ReplayStep, PayloadFieldSchema } from './types.js';\n\n/** Entity-data sentinel payload fields: presence means transition needs a selected row */\nconst ENTITY_PAYLOAD_FIELDS = new Set(['data', 'row', 'item', 'id']);\n\n/**\n * Extended transition with render and payload info needed for replay path building.\n * Compatible with orbital-verify's UnifiedTransition.\n */\nexport interface ReplayTransition extends GraphTransition {\n hasGuard: boolean;\n guard?: unknown[];\n payloadFields: string[];\n payloadSchema: PayloadFieldSchema[];\n renderEffects: Array<{\n slot: string;\n patternType: string | null;\n }>;\n}\n\n/**\n * Builds the shortest replay paths from initial state to all reachable states.\n * \n * Computes step-by-step navigation paths for state machine testing and verification.\n * Uses breadth-first search to find shortest paths up to specified depth limit.\n * Each path contains replay steps with event, state, and payload information\n * needed to reproduce state transitions in tests.\n * \n * @param {ReplayTransition[]} transitions - Transitions with render/payload information\n * @param {string} initialState - Starting state name\n * @param {number} [maxDepth=3] - Maximum path length (default: 3)\n * @returns {Map<string, ReplayStep[]>} Map of state names to replay step arrays\n * \n * @example\n * // Build paths from 'initial' state\n * const paths = buildReplayPaths(transitions, 'initial', 5);\n * \n * // Get steps to reach 'completed' state\n * const stepsToComplete = paths.get('completed');\n * \n * // Execute replay steps\n * for (const step of stepsToComplete) {\n * await dispatchEvent(step.event, step.payload);\n * }\n */\nexport function buildReplayPaths(\n transitions: ReplayTransition[],\n initialState: string,\n maxDepth = 3\n): Map<string, ReplayStep[]> {\n type QueueNode = { state: string; path: ReplayStep[] };\n\n const queue: QueueNode[] = [{ state: initialState, path: [] }];\n const replayPaths = new Map<string, ReplayStep[]>();\n replayPaths.set(initialState, []);\n\n while (queue.length > 0) {\n const { state, path } = queue.shift()!;\n if (path.length >= maxDepth) continue;\n\n const fromHere = transitions.filter(\n (t) => t.from === state && t.event !== 'INIT',\n );\n\n for (const transition of fromHere) {\n if (replayPaths.has(transition.to)) continue;\n\n const renderEffect = transition.renderEffects.find((re) => re.patternType !== null);\n const stepNeedsEntityData =\n transition.hasGuard ||\n transition.payloadFields.some((f) => ENTITY_PAYLOAD_FIELDS.has(f));\n\n const step: ReplayStep = {\n event: transition.event,\n fromState: state,\n toState: transition.to,\n slot: renderEffect?.slot ?? 'main',\n expectedPattern: renderEffect?.patternType ?? undefined,\n needsEntityData: stepNeedsEntityData,\n payloadSchema: transition.payloadSchema.length > 0 ? transition.payloadSchema : undefined,\n };\n\n const newPath = [...path, step];\n replayPaths.set(transition.to, newPath);\n queue.push({ state: transition.to, path: newPath });\n }\n }\n\n return replayPaths;\n}\n","/**\n * Edge-Covering Walk Algorithm\n *\n * Computes an ordered sequence of events (WalkStep[]) that attempts to cover\n * every transition (edge) in a state machine graph. This is a greedy chained\n * walk: it does NOT guarantee 100% coverage. With no reset concept it can\n * strand on absorbing states (no outgoing edges and no path back to uncovered\n * edges), and a guard-fail misprediction desyncs the chained walk so later\n * steps fire from the wrong state. Superseded by the hermetic per-frame walk\n * in @almadar-io/verify, which re-seeds each frame independently.\n *\n * Algorithm:\n * 1. Build adjacency list and edge universe (guarded transitions produce two edges)\n * 2. Precompute BFS shortest paths between all state pairs (for repositioning)\n * 3. Greedy DFS: at each state, prefer uncovered outgoing edges\n * 4. When stuck, insert repositioning steps to nearest state with uncovered edges\n * 5. Guard-fail steps don't advance state (guard blocks transition)\n *\n * Used by StateWalkEngine in @almadar-io/verify. Both orbital-verify and\n * runtime-verify share this algorithm for consistent coverage.\n *\n * @packageDocumentation\n */\n\nimport type { EdgeWalkTransition, WalkStep, StateEdge } from './types.js';\nimport type { EventPayload, EventPayloadValue } from '../types/expression.js';\nimport { buildGuardPayloads } from './guard-payloads.js';\n\n/**\n * Build an ordered walk that covers every edge in the state machine.\n *\n * @param transitions - All transitions in the state machine\n * @param initialState - Starting state\n * @returns Ordered walk steps covering every edge\n */\nexport function buildEdgeCoveringWalk(\n transitions: EdgeWalkTransition[],\n initialState: string,\n): WalkStep[] {\n // 1. Build adjacency list. Skip wildcards (pseudostates) and skip the\n // boot INIT (the runtime auto-fires INIT from the initial state on\n // mount, so the walker doesn't need to fire it). User-triggered INITs\n // from non-initial states (refresh, retry) ARE walkable edges and\n // stay in the graph so coverage can reach them.\n const filtered = transitions.filter(\n (t) => t.from !== '*' && !(t.event === 'INIT' && t.from === initialState),\n );\n\n const graph = new Map<string, Array<{ event: string; to: string; transition: EdgeWalkTransition }>>();\n const allStates = new Set<string>();\n\n for (const t of filtered) {\n allStates.add(t.from);\n allStates.add(t.to);\n if (!graph.has(t.from)) graph.set(t.from, []);\n graph.get(t.from)!.push({ event: t.event, to: t.to, transition: t });\n }\n\n // Ensure initial state is in the set\n allStates.add(initialState);\n\n // 2. Build edge universe. Guarded transitions produce pass + fail edges.\n const uncovered = new Set<string>();\n const edgeMeta = new Map<string, { transition: EdgeWalkTransition; guardCase: 'pass' | 'fail' | null }>();\n\n for (const t of filtered) {\n if (t.hasGuard) {\n const keyPass = `${t.from}+${t.event}->${t.to}[pass]`;\n const keyFail = `${t.from}+${t.event}->${t.to}[fail]`;\n uncovered.add(keyPass);\n uncovered.add(keyFail);\n edgeMeta.set(keyPass, { transition: t, guardCase: 'pass' });\n edgeMeta.set(keyFail, { transition: t, guardCase: 'fail' });\n } else {\n const key = `${t.from}+${t.event}->${t.to}`;\n uncovered.add(key);\n edgeMeta.set(key, { transition: t, guardCase: null });\n }\n }\n\n if (uncovered.size === 0) return [];\n\n // 3. Precompute BFS shortest paths between all state pairs\n const shortestPaths = new Map<string, Map<string, Array<{ event: string; to: string }>>>();\n for (const state of allStates) {\n shortestPaths.set(state, bfsShortestPaths(state, graph));\n }\n\n // 4. Greedy walk\n const walk: WalkStep[] = [];\n let currentState = initialState;\n const maxIterations = uncovered.size * allStates.size * 2; // safety bound\n let iterations = 0;\n\n while (uncovered.size > 0 && iterations < maxIterations) {\n iterations++;\n\n // Find uncovered edges from currentState\n const outgoing = findUncoveredEdges(currentState, graph, uncovered);\n\n if (outgoing.length > 0) {\n // Pick first uncovered edge\n const pick = outgoing[0];\n const payload = buildPayloadForEdge(pick.transition, pick.guardCase);\n\n walk.push({\n from: currentState,\n event: pick.transition.event,\n to: pick.transition.to,\n guardCase: pick.guardCase,\n payload,\n isRepositioning: false,\n });\n\n uncovered.delete(pick.key);\n\n // Guard-fail doesn't advance state\n if (pick.guardCase !== 'fail') {\n currentState = pick.transition.to;\n }\n } else {\n // Stuck: find nearest state with uncovered edges\n const target = findNearestUncoveredState(currentState, graph, uncovered, shortestPaths);\n\n if (!target) {\n // No reachable state with uncovered edges. Remaining edges are unreachable.\n break;\n }\n\n // Insert repositioning steps\n const repoPath = shortestPaths.get(currentState)?.get(target);\n if (!repoPath || repoPath.length === 0) break;\n\n for (const step of repoPath) {\n walk.push({\n from: currentState,\n event: step.event,\n to: step.to,\n guardCase: null,\n payload: {},\n isRepositioning: true,\n });\n currentState = step.to;\n }\n }\n }\n\n return walk;\n}\n\n// ---------------------------------------------------------------------------\n// Internal helpers\n// ---------------------------------------------------------------------------\n\n/**\n * BFS from a source state, returning shortest paths to all reachable states.\n * Each path is an array of {event, to} steps.\n */\nfunction bfsShortestPaths(\n source: string,\n graph: Map<string, Array<{ event: string; to: string; transition: EdgeWalkTransition }>>,\n): Map<string, Array<{ event: string; to: string }>> {\n const paths = new Map<string, Array<{ event: string; to: string }>>();\n const visited = new Set<string>([source]);\n const queue: Array<{ state: string; path: Array<{ event: string; to: string }> }> = [\n { state: source, path: [] },\n ];\n\n while (queue.length > 0) {\n const { state, path } = queue.shift()!;\n const edges = graph.get(state) ?? [];\n\n for (const edge of edges) {\n if (visited.has(edge.to)) continue;\n visited.add(edge.to);\n const newPath = [...path, { event: edge.event, to: edge.to }];\n paths.set(edge.to, newPath);\n queue.push({ state: edge.to, path: newPath });\n }\n }\n\n return paths;\n}\n\n/**\n * Find uncovered edges from a given state.\n */\nfunction findUncoveredEdges(\n state: string,\n graph: Map<string, Array<{ event: string; to: string; transition: EdgeWalkTransition }>>,\n uncovered: Set<string>,\n): Array<{ key: string; transition: EdgeWalkTransition; guardCase: 'pass' | 'fail' | null }> {\n const edges = graph.get(state) ?? [];\n const result: Array<{ key: string; transition: EdgeWalkTransition; guardCase: 'pass' | 'fail' | null }> = [];\n\n for (const edge of edges) {\n if (edge.transition.hasGuard) {\n const keyPass = `${state}+${edge.event}->${edge.to}[pass]`;\n const keyFail = `${state}+${edge.event}->${edge.to}[fail]`;\n // Prefer pass first (advances state), then fail\n if (uncovered.has(keyPass)) {\n result.push({ key: keyPass, transition: edge.transition, guardCase: 'pass' });\n }\n if (uncovered.has(keyFail)) {\n result.push({ key: keyFail, transition: edge.transition, guardCase: 'fail' });\n }\n } else {\n const key = `${state}+${edge.event}->${edge.to}`;\n if (uncovered.has(key)) {\n result.push({ key, transition: edge.transition, guardCase: null });\n }\n }\n }\n\n return result;\n}\n\n/**\n * Find the nearest state (from currentState) that has uncovered outgoing edges.\n */\nfunction findNearestUncoveredState(\n currentState: string,\n graph: Map<string, Array<{ event: string; to: string; transition: EdgeWalkTransition }>>,\n uncovered: Set<string>,\n shortestPaths: Map<string, Map<string, Array<{ event: string; to: string }>>>,\n): string | null {\n // Collect states that have uncovered edges\n const statesWithUncovered = new Set<string>();\n for (const key of uncovered) {\n // Key format: \"state+EVENT->target\" or \"state+EVENT->target[pass]\"\n const fromState = key.split('+')[0];\n statesWithUncovered.add(fromState);\n }\n\n // If current state has uncovered edges, return it (shouldn't happen, but handle it)\n if (statesWithUncovered.has(currentState)) return currentState;\n\n // Find nearest reachable state with uncovered edges\n const paths = shortestPaths.get(currentState);\n if (!paths) return null;\n\n let nearestState: string | null = null;\n let nearestDist = Infinity;\n\n for (const target of statesWithUncovered) {\n const path = paths.get(target);\n if (path && path.length < nearestDist) {\n nearestDist = path.length;\n nearestState = target;\n }\n }\n\n return nearestState;\n}\n\n/**\n * Build a payload for a given edge based on its guard case and payload schema.\n * For guarded transitions, uses guard expressions to generate pass/fail payloads.\n * For unguarded transitions with payload schemas (e.g., EDIT/VIEW with { id }),\n * generates mock values so fetch-by-ID effects can resolve entity data.\n */\nfunction buildPayloadForEdge(\n transition: EdgeWalkTransition,\n guardCase: 'pass' | 'fail' | null,\n): EventPayload {\n // Guard-based payload generation (existing behavior)\n if (transition.hasGuard && transition.guard && guardCase) {\n const payloads = buildGuardPayloads(transition.guard);\n return guardCase === 'pass' ? payloads.pass : payloads.fail;\n }\n\n // Schema-based payload generation for events that declare required fields\n // (e.g., EDIT/VIEW declare { name: \"id\", type: \"string\", required: true })\n if (transition.payloadSchema && transition.payloadSchema.length > 0) {\n const payload: EventPayload = {};\n for (const field of transition.payloadSchema) {\n // Use caller-provided mockValue if available (set from entity context)\n if (field.mockValue !== undefined) {\n payload[field.name] = field.mockValue as EventPayloadValue;\n } else if (field.type === 'string') {\n payload[field.name] = `mock-${field.name}`;\n } else if (field.type === 'number') {\n payload[field.name] = 1;\n } else if (field.type === 'boolean') {\n payload[field.name] = true;\n } else if (field.type === 'object' || field.type === 'any') {\n // `mock-<name>` is a plain string; persisting that for an object\n // field (e.g. SAVE's `data: object` carrying a form row) spreads\n // the string's characters across numeric keys server-side and\n // the downstream grid renders blank cards. An empty object is a\n // safer default — callers that need entity-shaped mocks should\n // set `mockValue` at the call site (see orbital-verify-unified's\n // phase4-browser TraitWalkConfig builder).\n payload[field.name] = {};\n } else {\n payload[field.name] = `mock-${field.name}`;\n }\n }\n return payload;\n }\n\n return {};\n}\n"]}
@@ -1549,6 +1549,31 @@ type FieldValue = string | number | boolean | Date | null | string[] | FieldValu
1549
1549
  type EntityRow = {
1550
1550
  id?: string;
1551
1551
  } & Record<string, FieldValue | undefined>;
1552
+ /**
1553
+ * A field-refined `EntityRow` — the SINGLE entity type, narrowed so a set of
1554
+ * named fields are REQUIRED (present, non-`undefined`). This is how an entity-
1555
+ * interacting component declares the fields it needs to function WITHOUT
1556
+ * introducing a separate per-component entity type: it stays structurally an
1557
+ * `EntityRow` (index signature intact, every other field still field-open), so
1558
+ * any domain entity that provides those fields satisfies it.
1559
+ *
1560
+ * One declaration, two jobs: (1) TypeScript enforces that the bound entity has
1561
+ * the fields (a behavior binding a thinner entity fails to typecheck); and
1562
+ * (2) pattern-sync reads the same type and writes `requiredFields` onto the
1563
+ * registry's entity prop, so the `ORB_X_ENTITY_PROP_CONTRACT` validator rule
1564
+ * rejects an incompatible bind at `orbital validate` (accounting for `.lolo`
1565
+ * field-remaps). Use a raw `EntityRow & { rating: number }` intersection when a
1566
+ * field needs a specific scalar type rather than mere presence.
1567
+ *
1568
+ * @example
1569
+ * // HeroOrganism renders entity.title / entity.subtitle:
1570
+ * entity?: EntityWith<'title' | 'subtitle'>;
1571
+ * // entity.title → FieldValue (required)
1572
+ * // entity.other → FieldValue | undefined (still field-open)
1573
+ */
1574
+ type EntityWith<K extends string> = EntityRow & {
1575
+ readonly [P in K]: FieldValue;
1576
+ };
1552
1577
  /**
1553
1578
  * Collection of entity instances keyed by entity name.
1554
1579
  * Used by OrbPreview mockData, OrbitalServerRuntime state, data grids, etc.
@@ -3305,8 +3330,8 @@ declare const TraitReferenceSchema: z.ZodEffects<z.ZodObject<{
3305
3330
  from?: string | undefined;
3306
3331
  effects?: Record<string, unknown[]> | undefined;
3307
3332
  listens?: unknown[] | undefined;
3308
- appliesTo?: string[] | undefined;
3309
3333
  linkedEntity?: string | undefined;
3334
+ appliesTo?: string[] | undefined;
3310
3335
  emitsScope?: "internal" | "external" | undefined;
3311
3336
  }, {
3312
3337
  ref: string;
@@ -3317,8 +3342,8 @@ declare const TraitReferenceSchema: z.ZodEffects<z.ZodObject<{
3317
3342
  from?: string | undefined;
3318
3343
  effects?: Record<string, unknown[]> | undefined;
3319
3344
  listens?: unknown[] | undefined;
3320
- appliesTo?: string[] | undefined;
3321
3345
  linkedEntity?: string | undefined;
3346
+ appliesTo?: string[] | undefined;
3322
3347
  emitsScope?: "internal" | "external" | undefined;
3323
3348
  }>, {
3324
3349
  ref: string;
@@ -3329,8 +3354,8 @@ declare const TraitReferenceSchema: z.ZodEffects<z.ZodObject<{
3329
3354
  from?: string | undefined;
3330
3355
  effects?: Record<string, unknown[]> | undefined;
3331
3356
  listens?: unknown[] | undefined;
3332
- appliesTo?: string[] | undefined;
3333
3357
  linkedEntity?: string | undefined;
3358
+ appliesTo?: string[] | undefined;
3334
3359
  emitsScope?: "internal" | "external" | undefined;
3335
3360
  }, {
3336
3361
  ref: string;
@@ -3341,8 +3366,8 @@ declare const TraitReferenceSchema: z.ZodEffects<z.ZodObject<{
3341
3366
  from?: string | undefined;
3342
3367
  effects?: Record<string, unknown[]> | undefined;
3343
3368
  listens?: unknown[] | undefined;
3344
- appliesTo?: string[] | undefined;
3345
3369
  linkedEntity?: string | undefined;
3370
+ appliesTo?: string[] | undefined;
3346
3371
  emitsScope?: "internal" | "external" | undefined;
3347
3372
  }>;
3348
3373
  /**
@@ -6102,4 +6127,4 @@ declare const OrbitalTraitRefSchema: z.ZodUnion<[z.ZodString, z.ZodObject<{
6102
6127
  } | undefined;
6103
6128
  }>]>;
6104
6129
 
6105
- export { type EvaluateConfig as $, type AgentEffect as A, DeclaredTraitConfigSchema as B, type CallServiceConfig as C, type DeclaredTraitConfig as D, type Effect as E, type DerefEffect as F, type DespawnEffect as G, type DoEffect as H, ENTITY_ROLES as I, type EffectInput as J, EffectSchema as K, type EmitConfig as L, type EmitEffect as M, type EntityData as N, type EntityFieldContract as O, EntityFieldContractSchema as P, type EntityFieldInput as Q, type RenderBinding as R, type State as S, type Trait as T, type UISlot as U, EntityFieldSchema as V, EntityPersistenceSchema as W, type EntityRole as X, EntityRoleSchema as Y, EntitySchema as Z, type EnumEntityField as _, type RenderUIEffect as a, RestServiceDefSchema as a$, type EvaluateEffect as a0, type Event as a1, type EventInput as a2, type EventPayloadField as a3, EventPayloadFieldSchema as a4, EventSchema as a5, type EventScope as a6, EventScopeSchema as a7, type FetchEffect as a8, type FetchOptions as a9, type OrbitalEntityInput as aA, OrbitalEntitySchema as aB, type OrbitalTraitRef as aC, OrbitalTraitRefSchema as aD, type OsEffect as aE, type PayloadField as aF, PayloadFieldSchema as aG, type PersistData as aH, type PersistEffect as aI, type PersistEmitConfig as aJ, type PresentationType as aK, type RefEffect as aL, type RelationConfig as aM, RelationConfigSchema as aN, type RelationEntityField as aO, type RenderItemLambda as aP, type RenderUIConfig as aQ, type RenderUINode as aR, type RequiredField as aS, RequiredFieldSchema as aT, type ResolvedAsset as aU, type ResolvedAssetInput as aV, ResolvedAssetSchema as aW, type ResolvedPatternProps as aX, type RestAuthConfig as aY, RestAuthConfigSchema as aZ, type RestServiceDef as a_, type FetchResult as aa, type Field as ab, type FieldFormat as ac, FieldFormatSchema as ad, FieldSchema as ae, type FieldType as af, FieldTypeSchema as ag, type FieldValue as ah, type ForwardConfig as ai, type ForwardEffect as aj, GAME_TYPES as ak, type GameType as al, GameTypeSchema as am, type Guard as an, type GuardInput as ao, GuardSchema as ap, type ListenSource as aq, ListenSourceSchema as ar, type LogEffect as as, type McpServiceDef as at, McpServiceDefSchema as au, type NavigateEffect as av, type NnConfig as aw, type NnLayer as ax, type NotifyEffect as ay, type OrbitalEntity as az, type TraitEventContract as b, createAssetKey as b$, SERVICE_TYPES as b0, type ScalarEntityField as b1, type SemanticAssetRef as b2, type SemanticAssetRefInput as b3, SemanticAssetRefSchema as b4, type ServiceDefinition as b5, ServiceDefinitionSchema as b6, type ServiceParams as b7, type ServiceParamsValue as b8, type ServiceRef as b9, type TraitDataEntity as bA, TraitDataEntitySchema as bB, type TraitEntityField as bC, TraitEntityFieldSchema as bD, TraitEventContractSchema as bE, TraitEventListenerSchema as bF, type TraitInput as bG, TraitRefSchema as bH, type TraitReferenceInput as bI, TraitReferenceSchema as bJ, TraitSchema as bK, type TraitTick as bL, TraitTickSchema as bM, type TraitUIBinding as bN, type Transition as bO, type TransitionInput as bP, TransitionSchema as bQ, type TypedEffect as bR, UISlotSchema as bS, UI_SLOTS as bT, VISUAL_STYLES as bU, type VisualStyle as bV, VisualStyleSchema as bW, type WatchEffect as bX, type WatchOptions as bY, atomic as bZ, callService as b_, type ServiceRefObject as ba, ServiceRefObjectSchema as bb, ServiceRefSchema as bc, ServiceRefStringSchema as bd, type ServiceType as be, ServiceTypeSchema as bf, type SetEffect as bg, type SocketEvents as bh, SocketEventsSchema as bi, type SocketServiceDef as bj, SocketServiceDefSchema as bk, type SpawnEffect as bl, type StateInput as bm, type StateMachine as bn, type StateMachineInput as bo, StateMachineSchema as bp, StateSchema as bq, type SwapEffect as br, type TrainConfig as bs, type TrainEffect as bt, type TraitCategory as bu, TraitCategorySchema as bv, type TraitConfigObject as bw, TraitConfigSchema as bx, type TraitConfigValue as by, TraitConfigValueSchema as bz, type Entity as c, deref as c0, deriveCollection as c1, despawn as c2, doEffects as c3, emit as c4, findService as c5, getDefaultAnimationsForRole as c6, getServiceNames as c7, getTraitConfig as c8, getTraitName as c9, hasService as ca, isCircuitEvent as cb, isEffect as cc, isInlineTrait as cd, isMcpService as ce, isRestService as cf, isRuntimeEntity as cg, isSExprEffect as ch, isServiceReference as ci, isServiceReferenceObject as cj, isSingletonEntity as ck, isSocketService as cl, navigate as cm, normalizeTraitRef as cn, notify as co, parseAssetKey as cp, parseServiceRef as cq, persist as cr, ref as cs, renderUI as ct, set as cu, spawn as cv, swap as cw, validateAssetAnimations as cx, watch as cy, type TraitScope as cz, type TraitEventListener as d, type TraitConfig as e, type EntityField as f, type EntityPersistence as g, type EntityRow as h, type TraitRef as i, type TraitReference as j, type AnimationDef as k, type AnimationDefInput as l, AnimationDefSchema as m, type ArrayEntityField as n, type AssetMap as o, type AssetMapInput as p, AssetMapSchema as q, type AssetMapping as r, type AssetMappingInput as s, AssetMappingSchema as t, type AtomicEffect as u, type CallServiceEffect as v, type CheckpointLoadEffect as w, type CheckpointSaveEffect as x, type ConfigFieldDeclaration as y, ConfigFieldDeclarationSchema as z };
6130
+ export { type EnumEntityField as $, type AgentEffect as A, DeclaredTraitConfigSchema as B, type CallServiceConfig as C, type DeclaredTraitConfig as D, type Effect as E, type DerefEffect as F, type DespawnEffect as G, type DoEffect as H, ENTITY_ROLES as I, type EffectInput as J, EffectSchema as K, type EmitConfig as L, type EmitEffect as M, type EntityData as N, type EntityFieldContract as O, EntityFieldContractSchema as P, type EntityFieldInput as Q, type RenderBinding as R, type State as S, type Trait as T, type UISlot as U, EntityFieldSchema as V, EntityPersistenceSchema as W, type EntityRole as X, EntityRoleSchema as Y, EntitySchema as Z, type EntityWith as _, type RenderUIEffect as a, type RestServiceDef as a$, type EvaluateConfig as a0, type EvaluateEffect as a1, type Event as a2, type EventInput as a3, type EventPayloadField as a4, EventPayloadFieldSchema as a5, EventSchema as a6, type EventScope as a7, EventScopeSchema as a8, type FetchEffect as a9, type OrbitalEntity as aA, type OrbitalEntityInput as aB, OrbitalEntitySchema as aC, type OrbitalTraitRef as aD, OrbitalTraitRefSchema as aE, type OsEffect as aF, type PayloadField as aG, PayloadFieldSchema as aH, type PersistData as aI, type PersistEffect as aJ, type PersistEmitConfig as aK, type PresentationType as aL, type RefEffect as aM, type RelationConfig as aN, RelationConfigSchema as aO, type RelationEntityField as aP, type RenderItemLambda as aQ, type RenderUIConfig as aR, type RenderUINode as aS, type RequiredField as aT, RequiredFieldSchema as aU, type ResolvedAsset as aV, type ResolvedAssetInput as aW, ResolvedAssetSchema as aX, type ResolvedPatternProps as aY, type RestAuthConfig as aZ, RestAuthConfigSchema as a_, type FetchOptions as aa, type FetchResult as ab, type Field as ac, type FieldFormat as ad, FieldFormatSchema as ae, FieldSchema as af, type FieldType as ag, FieldTypeSchema as ah, type FieldValue as ai, type ForwardConfig as aj, type ForwardEffect as ak, GAME_TYPES as al, type GameType as am, GameTypeSchema as an, type Guard as ao, type GuardInput as ap, GuardSchema as aq, type ListenSource as ar, ListenSourceSchema as as, type LogEffect as at, type McpServiceDef as au, McpServiceDefSchema as av, type NavigateEffect as aw, type NnConfig as ax, type NnLayer as ay, type NotifyEffect as az, type TraitEventContract as b, callService as b$, RestServiceDefSchema as b0, SERVICE_TYPES as b1, type ScalarEntityField as b2, type SemanticAssetRef as b3, type SemanticAssetRefInput as b4, SemanticAssetRefSchema as b5, type ServiceDefinition as b6, ServiceDefinitionSchema as b7, type ServiceParams as b8, type ServiceParamsValue as b9, TraitConfigValueSchema as bA, type TraitDataEntity as bB, TraitDataEntitySchema as bC, type TraitEntityField as bD, TraitEntityFieldSchema as bE, TraitEventContractSchema as bF, TraitEventListenerSchema as bG, type TraitInput as bH, TraitRefSchema as bI, type TraitReferenceInput as bJ, TraitReferenceSchema as bK, TraitSchema as bL, type TraitTick as bM, TraitTickSchema as bN, type TraitUIBinding as bO, type Transition as bP, type TransitionInput as bQ, TransitionSchema as bR, type TypedEffect as bS, UISlotSchema as bT, UI_SLOTS as bU, VISUAL_STYLES as bV, type VisualStyle as bW, VisualStyleSchema as bX, type WatchEffect as bY, type WatchOptions as bZ, atomic as b_, type ServiceRef as ba, type ServiceRefObject as bb, ServiceRefObjectSchema as bc, ServiceRefSchema as bd, ServiceRefStringSchema as be, type ServiceType as bf, ServiceTypeSchema as bg, type SetEffect as bh, type SocketEvents as bi, SocketEventsSchema as bj, type SocketServiceDef as bk, SocketServiceDefSchema as bl, type SpawnEffect as bm, type StateInput as bn, type StateMachine as bo, type StateMachineInput as bp, StateMachineSchema as bq, StateSchema as br, type SwapEffect as bs, type TrainConfig as bt, type TrainEffect as bu, type TraitCategory as bv, TraitCategorySchema as bw, type TraitConfigObject as bx, TraitConfigSchema as by, type TraitConfigValue as bz, type Entity as c, createAssetKey as c0, deref as c1, deriveCollection as c2, despawn as c3, doEffects as c4, emit as c5, findService as c6, getDefaultAnimationsForRole as c7, getServiceNames as c8, getTraitConfig as c9, type TraitScope as cA, getTraitName as ca, hasService as cb, isCircuitEvent as cc, isEffect as cd, isInlineTrait as ce, isMcpService as cf, isRestService as cg, isRuntimeEntity as ch, isSExprEffect as ci, isServiceReference as cj, isServiceReferenceObject as ck, isSingletonEntity as cl, isSocketService as cm, navigate as cn, normalizeTraitRef as co, notify as cp, parseAssetKey as cq, parseServiceRef as cr, persist as cs, ref as ct, renderUI as cu, set as cv, spawn as cw, swap as cx, validateAssetAnimations as cy, watch as cz, type TraitEventListener as d, type TraitConfig as e, type EntityField as f, type EntityPersistence as g, type EntityRow as h, type TraitRef as i, type TraitReference as j, type AnimationDef as k, type AnimationDefInput as l, AnimationDefSchema as m, type ArrayEntityField as n, type AssetMap as o, type AssetMapInput as p, AssetMapSchema as q, type AssetMapping as r, type AssetMappingInput as s, AssetMappingSchema as t, type AtomicEffect as u, type CallServiceEffect as v, type CheckpointLoadEffect as w, type CheckpointSaveEffect as x, type ConfigFieldDeclaration as y, ConfigFieldDeclarationSchema as z };
@@ -1,14 +1,14 @@
1
- import { a as OrbitalSchema, a7 as Orbital, b as Page, L as DomainContext, O as OrbitalDefinition, b0 as PageTraitRef } from '../schema-CMrW_N4k.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, 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, 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, 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, P as PageRef, c as PageRefObject, aY as PageRefObjectSchema, aZ as PageRefSchema, a_ as PageRefStringSchema, a$ as PageSchema, 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-CMrW_N4k.js';
3
- import { b7 as ServiceParams, T as Trait, c as Entity, h as EntityRow, ah as FieldValue, D as DeclaredTraitConfig, e as TraitConfig, E as Effect, y as ConfigFieldDeclaration, S as State, bO as Transition, f as EntityField, a1 as Event, by as TraitConfigValue, g as EntityPersistence, bu as TraitCategory, cz as TraitScope } from '../trait-C61Wxi3a.js';
4
- export { A as AgentEffect, k as AnimationDef, l as AnimationDefInput, m as AnimationDefSchema, n as ArrayEntityField, o as AssetMap, p as AssetMapInput, q as AssetMapSchema, r as AssetMapping, s as AssetMappingInput, t as AssetMappingSchema, u as AtomicEffect, C as CallServiceConfig, v as CallServiceEffect, w as CheckpointLoadEffect, x as CheckpointSaveEffect, z as ConfigFieldDeclarationSchema, B as DeclaredTraitConfigSchema, F as DerefEffect, G as DespawnEffect, H as DoEffect, I as ENTITY_ROLES, J as EffectInput, K as EffectSchema, L as EmitConfig, M as EmitEffect, N as EntityData, O as EntityFieldContract, P as EntityFieldContractSchema, Q as EntityFieldInput, V as EntityFieldSchema, W as EntityPersistenceSchema, X as EntityRole, Y as EntityRoleSchema, Z as EntitySchema, _ as EnumEntityField, $ as EvaluateConfig, a0 as EvaluateEffect, a2 as EventInput, a3 as EventPayloadField, a4 as EventPayloadFieldSchema, a5 as EventSchema, a6 as EventScope, a7 as EventScopeSchema, a8 as FetchEffect, a9 as FetchOptions, aa as FetchResult, ab as Field, ac as FieldFormat, ad as FieldFormatSchema, ae as FieldSchema, af as FieldType, ag as FieldTypeSchema, ai as ForwardConfig, aj as ForwardEffect, ak as GAME_TYPES, al as GameType, am as GameTypeSchema, an as Guard, ao as GuardInput, ap as GuardSchema, aq as ListenSource, ar as ListenSourceSchema, as as LogEffect, at as McpServiceDef, au as McpServiceDefSchema, av as NavigateEffect, aw as NnConfig, ax as NnLayer, ay as NotifyEffect, az as OrbitalEntity, aA as OrbitalEntityInput, aB as OrbitalEntitySchema, aC as OrbitalTraitRef, aD as OrbitalTraitRefSchema, aE as OsEffect, aF as PayloadField, aG as PayloadFieldSchema, aH as PersistData, aI as PersistEffect, aJ as PersistEmitConfig, aK as PresentationType, aL as RefEffect, aM as RelationConfig, aN as RelationConfigSchema, aO as RelationEntityField, R as RenderBinding, aP as RenderItemLambda, aQ as RenderUIConfig, a as RenderUIEffect, aR as RenderUINode, aS as RequiredField, aT as RequiredFieldSchema, aU as ResolvedAsset, aV as ResolvedAssetInput, aW as ResolvedAssetSchema, aX as ResolvedPatternProps, aY as RestAuthConfig, aZ as RestAuthConfigSchema, a_ as RestServiceDef, a$ as RestServiceDefSchema, b0 as SERVICE_TYPES, b1 as ScalarEntityField, b2 as SemanticAssetRef, b3 as SemanticAssetRefInput, b4 as SemanticAssetRefSchema, b5 as ServiceDefinition, b6 as ServiceDefinitionSchema, b8 as ServiceParamsValue, b9 as ServiceRef, ba as ServiceRefObject, bb as ServiceRefObjectSchema, bc as ServiceRefSchema, bd as ServiceRefStringSchema, be as ServiceType, bf as ServiceTypeSchema, bg as SetEffect, bh as SocketEvents, bi as SocketEventsSchema, bj as SocketServiceDef, bk as SocketServiceDefSchema, bl as SpawnEffect, bm as StateInput, bn as StateMachine, bo as StateMachineInput, bp as StateMachineSchema, bq as StateSchema, br as SwapEffect, bs as TrainConfig, bt as TrainEffect, bv as TraitCategorySchema, bw as TraitConfigObject, bx as TraitConfigSchema, bz as TraitConfigValueSchema, bA as TraitDataEntity, bB as TraitDataEntitySchema, bC as TraitEntityField, bD as TraitEntityFieldSchema, b as TraitEventContract, bE as TraitEventContractSchema, d as TraitEventListener, bF as TraitEventListenerSchema, bG as TraitInput, i as TraitRef, bH as TraitRefSchema, j as TraitReference, bI as TraitReferenceInput, bJ as TraitReferenceSchema, bK as TraitSchema, bL as TraitTick, bM as TraitTickSchema, bN as TraitUIBinding, bP as TransitionInput, bQ as TransitionSchema, bR as TypedEffect, U as UISlot, bS as UISlotSchema, bT as UI_SLOTS, bU as VISUAL_STYLES, bV as VisualStyle, bW as VisualStyleSchema, bX as WatchEffect, bY as WatchOptions, bZ as atomic, b_ as callService, b$ as createAssetKey, c0 as deref, c1 as deriveCollection, c2 as despawn, c3 as doEffects, c4 as emit, c5 as findService, c6 as getDefaultAnimationsForRole, c7 as getServiceNames, c8 as getTraitConfig, c9 as getTraitName, ca as hasService, cb as isCircuitEvent, cc as isEffect, cd as isInlineTrait, ce as isMcpService, cf as isRestService, cg as isRuntimeEntity, ch as isSExprEffect, ci as isServiceReference, cj as isServiceReferenceObject, ck as isSingletonEntity, cl as isSocketService, cm as navigate, cn as normalizeTraitRef, co as notify, cp as parseAssetKey, cq as parseServiceRef, cr as persist, cs as ref, ct as renderUI, cu as set, cv as spawn, cw as swap, cx as validateAssetAnimations, cy as watch } from '../trait-C61Wxi3a.js';
1
+ import { a as OrbitalSchema, a7 as Orbital, b as Page, L as DomainContext, O as OrbitalDefinition, b0 as PageTraitRef } from '../schema-BetbBFJb.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, 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, 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, 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, P as PageRef, c as PageRefObject, aY as PageRefObjectSchema, aZ as PageRefSchema, a_ as PageRefStringSchema, a$ as PageSchema, 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-BetbBFJb.js';
3
+ import { b8 as ServiceParams, T as Trait, c as Entity, h as EntityRow, ai as FieldValue, D as DeclaredTraitConfig, e as TraitConfig, E as Effect, y as ConfigFieldDeclaration, S as State, bP as Transition, f as EntityField, a2 as Event, bz as TraitConfigValue, g as EntityPersistence, bv as TraitCategory, cA as TraitScope } from '../trait-CjyEE6Di.js';
4
+ export { A as AgentEffect, k as AnimationDef, l as AnimationDefInput, m as AnimationDefSchema, n as ArrayEntityField, o as AssetMap, p as AssetMapInput, q as AssetMapSchema, r as AssetMapping, s as AssetMappingInput, t as AssetMappingSchema, u as AtomicEffect, C as CallServiceConfig, v as CallServiceEffect, w as CheckpointLoadEffect, x as CheckpointSaveEffect, z as ConfigFieldDeclarationSchema, B as DeclaredTraitConfigSchema, F as DerefEffect, G as DespawnEffect, H as DoEffect, I as ENTITY_ROLES, J as EffectInput, K as EffectSchema, L as EmitConfig, M as EmitEffect, N as EntityData, O as EntityFieldContract, P as EntityFieldContractSchema, Q as EntityFieldInput, V as EntityFieldSchema, W as EntityPersistenceSchema, X as EntityRole, Y as EntityRoleSchema, Z as EntitySchema, _ as EntityWith, $ as EnumEntityField, a0 as EvaluateConfig, a1 as EvaluateEffect, a3 as EventInput, a4 as EventPayloadField, a5 as EventPayloadFieldSchema, a6 as EventSchema, a7 as EventScope, a8 as EventScopeSchema, a9 as FetchEffect, aa as FetchOptions, ab as FetchResult, ac as Field, ad as FieldFormat, ae as FieldFormatSchema, af as FieldSchema, ag as FieldType, ah as FieldTypeSchema, aj as ForwardConfig, ak as ForwardEffect, al as GAME_TYPES, am as GameType, an as GameTypeSchema, ao as Guard, ap as GuardInput, aq as GuardSchema, ar as ListenSource, as as ListenSourceSchema, at as LogEffect, au as McpServiceDef, av as McpServiceDefSchema, aw as NavigateEffect, ax as NnConfig, ay as NnLayer, az as NotifyEffect, aA as OrbitalEntity, aB as OrbitalEntityInput, aC as OrbitalEntitySchema, aD as OrbitalTraitRef, aE as OrbitalTraitRefSchema, aF as OsEffect, aG as PayloadField, aH as PayloadFieldSchema, aI as PersistData, aJ as PersistEffect, aK as PersistEmitConfig, aL as PresentationType, aM as RefEffect, aN as RelationConfig, aO as RelationConfigSchema, aP as RelationEntityField, R as RenderBinding, aQ as RenderItemLambda, aR as RenderUIConfig, a as RenderUIEffect, aS as RenderUINode, aT as RequiredField, aU as RequiredFieldSchema, aV as ResolvedAsset, aW as ResolvedAssetInput, aX as ResolvedAssetSchema, aY as ResolvedPatternProps, aZ as RestAuthConfig, a_ as RestAuthConfigSchema, a$ as RestServiceDef, b0 as RestServiceDefSchema, b1 as SERVICE_TYPES, b2 as ScalarEntityField, b3 as SemanticAssetRef, b4 as SemanticAssetRefInput, b5 as SemanticAssetRefSchema, b6 as ServiceDefinition, b7 as ServiceDefinitionSchema, b9 as ServiceParamsValue, ba as ServiceRef, bb as ServiceRefObject, bc as ServiceRefObjectSchema, bd as ServiceRefSchema, be as ServiceRefStringSchema, bf as ServiceType, bg as ServiceTypeSchema, bh as SetEffect, bi as SocketEvents, bj as SocketEventsSchema, bk as SocketServiceDef, bl as SocketServiceDefSchema, bm as SpawnEffect, bn as StateInput, bo as StateMachine, bp as StateMachineInput, bq as StateMachineSchema, br as StateSchema, bs as SwapEffect, bt as TrainConfig, bu as TrainEffect, bw as TraitCategorySchema, bx as TraitConfigObject, by as TraitConfigSchema, bA as TraitConfigValueSchema, bB as TraitDataEntity, bC as TraitDataEntitySchema, bD as TraitEntityField, bE as TraitEntityFieldSchema, b as TraitEventContract, bF as TraitEventContractSchema, d as TraitEventListener, bG as TraitEventListenerSchema, bH as TraitInput, i as TraitRef, bI as TraitRefSchema, j as TraitReference, bJ as TraitReferenceInput, bK as TraitReferenceSchema, bL as TraitSchema, bM as TraitTick, bN as TraitTickSchema, bO as TraitUIBinding, bQ as TransitionInput, bR as TransitionSchema, bS as TypedEffect, U as UISlot, bT as UISlotSchema, bU as UI_SLOTS, bV as VISUAL_STYLES, bW as VisualStyle, bX as VisualStyleSchema, bY as WatchEffect, bZ as WatchOptions, b_ as atomic, b$ as callService, c0 as createAssetKey, c1 as deref, c2 as deriveCollection, c3 as despawn, c4 as doEffects, c5 as emit, c6 as findService, c7 as getDefaultAnimationsForRole, c8 as getServiceNames, c9 as getTraitConfig, ca as getTraitName, cb as hasService, cc as isCircuitEvent, cd as isEffect, ce as isInlineTrait, cf as isMcpService, cg as isRestService, ch as isRuntimeEntity, ci as isSExprEffect, cj as isServiceReference, ck as isServiceReferenceObject, cl as isSingletonEntity, cm as isSocketService, cn as navigate, co as normalizeTraitRef, cp as notify, cq as parseAssetKey, cr as parseServiceRef, cs as persist, ct as ref, cu as renderUI, cv as set, cw as spawn, cx as swap, cy as validateAssetAnimations, cz as watch } from '../trait-CjyEE6Di.js';
5
5
  import { c as EventPayloadValue, b as EventPayload, L as LogMeta, S as SExpr, E as EvalContext } from '../expression-BVRFm0sV.js';
6
6
  export { C as CORE_BINDINGS, a as CoreBinding, d as Expression, e as ExpressionInput, f as ExpressionSchema, P as ParsedBinding, 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';
7
7
  import { z } from 'zod';
8
8
  import { AnyPatternConfig } from '@almadar/patterns';
9
9
  export { PATTERN_TYPES, PatternConfig, PatternType, isValidPatternType } from '@almadar/patterns';
10
- import { c as FactoryConfigTier } from '../types-CQF32lJA.js';
11
- export { J as JsonObject, n as JsonValue, T as ToolArgs, t as isJsonArray, u as isJsonObject, v as isJsonPrimitive } from '../types-CQF32lJA.js';
10
+ import { c as FactoryConfigTier } from '../types-KzrHszR_.js';
11
+ export { J as JsonObject, n as JsonValue, T as ToolArgs, t as isJsonArray, u as isJsonObject, v as isJsonPrimitive } from '../types-KzrHszR_.js';
12
12
 
13
13
  /**
14
14
  * S-Expression Bindings
@@ -1262,73 +1262,6 @@ type EventEmit<P> = string & {
1262
1262
  type EventListen<P> = string & {
1263
1263
  readonly __listenPayload?: P;
1264
1264
  };
1265
- /**
1266
- * Phantom-typed brand for a component's data INLET, cardinality-neutral. The
1267
- * shared base of `EntityRecord<T>` / `EntityCollection<T>`: it declares "this
1268
- * prop is the bound-entity inlet" (the role) WITHOUT committing to record vs
1269
- * collection. Structurally `(T | readonly T[])`.
1270
- *
1271
- * Use it on a SHARED base interface (e.g. `EntityDisplayProps<T>.entity`) whose
1272
- * concrete extenders render either one record or a list — each extender narrows
1273
- * to `EntityRecord<T>` / `EntityCollection<T>` in its own Props, and both are
1274
- * assignable back to `EntityInlet<T>` (they intersect it), so the `extends`
1275
- * stays sound. A prop left as `EntityInlet<T>` gets `kind: "entity"` with the
1276
- * cardinality supplied by pattern-sync's base-prop default.
1277
- */
1278
- type EntityInlet<T> = (T | readonly T[]) & {
1279
- readonly __entityInlet?: true;
1280
- };
1281
- /**
1282
- * Phantom-typed brand for a component's data INLET binding a SINGLE entity
1283
- * record. The inlet half of a pattern's circuit, symmetric with the event
1284
- * OUTLET brands above: just as `EventEmit<P>` declares "this prop is a bus
1285
- * outlet" by type identity, `EntityRecord<T>` declares "this prop is the
1286
- * bound-entity inlet, cardinality = one record."
1287
- *
1288
- * Structurally `(T | readonly T[])` — the SAME permissive shape as
1289
- * `EntityCollection<T>` — because record renderers routinely accept an array
1290
- * and collapse to its first element (e.g. DetailPanel's
1291
- * `Array.isArray(entity) ? entity[0] : entity`). The `cardinality: "record"` is
1292
- * therefore a DECLARED intent carried by the brand, not a structural
1293
- * constraint, so annotating an existing `entity: T | readonly T[]` prop is a
1294
- * pure type swap with no body change. The two inlet brands differ ONLY in the
1295
- * declared cardinality — that is the whole point: the shape is declared.
1296
- *
1297
- * Pattern-sync (`tools/almadar-pattern-sync/parser.ts`) detects this brand by
1298
- * type identity — imported from `@almadar/core`, exactly like `EventKey` /
1299
- * `EventEmit<P>` — and writes into the patterns registry:
1300
- * - `kind: "entity"` — the discriminant declaring this prop is the data inlet.
1301
- * - `cardinality: "record"` — one record (vs a collection).
1302
- * - the element's fixed sub-slots (via `items.properties`) when `T` is a
1303
- * concrete interface; a generic `T` stays field-open (the domain entity
1304
- * supplies the fields at compose time).
1305
- *
1306
- * Consumers read the inlet descriptor to bind the domain entity WITHOUT
1307
- * name-matching the prop, closing the pattern's circuit deterministically.
1308
- *
1309
- * // DetailPanel.tsx
1310
- * entity: EntityRecord<T>; // -> kind:"entity", cardinality:"record"
1311
- */
1312
- type EntityRecord<T> = EntityInlet<T> & {
1313
- readonly __entityCardinality?: "record";
1314
- };
1315
- /**
1316
- * Phantom-typed brand for a component's data INLET binding a COLLECTION of
1317
- * entity records. Mirror of `EntityRecord<T>` with `cardinality: "collection"`.
1318
- *
1319
- * The structural type is `T | readonly T[]` — matching the real, permissive
1320
- * contract of collection renderers (they accept a single record and normalize
1321
- * it to a one-element list, e.g. DataGrid's `Array.isArray(entity) ? entity :
1322
- * [entity]`). The `cardinality: "collection"` is therefore a DECLARED intent
1323
- * carried by the brand, not a structural constraint — so annotating an existing
1324
- * `entity: T | readonly T[]` prop is a pure type swap with no body change.
1325
- *
1326
- * // DataGrid.tsx
1327
- * entity: EntityCollection<T>; // -> kind:"entity", cardinality:"collection"
1328
- */
1329
- type EntityCollection<T> = EntityInlet<T> & {
1330
- readonly __entityCardinality?: "collection";
1331
- };
1332
1265
  /**
1333
1266
  * Identifies the origin of a bus event. Used by cross-trait listeners to
1334
1267
  * filter emits from specific orbitals, traits, transitions, or ticks.
@@ -2208,4 +2141,4 @@ interface ParsedDesign {
2208
2141
  };
2209
2142
  }
2210
2143
 
2211
- export { type AgentCodeSearchResult, type AgentCompactResult, type AgentCompactStrategy, type AgentContext, type AgentGenerateOptions, type AgentMemoryCategory, type AgentMemoryRecord, type AnnotationTier, OrbitalSchema as AppSchema, type AppSummary, type AssetLoadStatus, BINDING_CONTEXT_RULES, BINDING_DOCS, BINDING_ROOTS, type BindingContext, type BindingRoot, BindingSchema, type BridgeHealth, type BusEvent, type BusEventListener, type BusEventSource, type CategorizedRemovals, type ChangeAuthor, type ChangeSetDocument, type ChangeSummary, type ChangesetValue, type CheckStatus, ConfigFieldDeclaration, type ContextExtensions, type CreateFlow, DEFAULT_INTERACTION_MODELS, DeclaredTraitConfig, type DeleteFlow, DomainContext, type EdgeType, type EditFlow, Effect, type EffectPayload, type EffectResult, type EffectTrace, Entity, type EntityCollection, EntityField, type EntityInlet, EntityPersistence, type EntityRecord, EntityRow, EvalContext, Event, type EventEmit, type EventKey, type EventListen, type EventLogEntry, EventPayload, EventPayloadValue, type EvolutionDelta, FieldValue, Orbital as FullOrbitalUnit, type GateState, type GitHubLink, type HistoryMeta, type InteractionModel, type InteractionModelInput, InteractionModelSchema, KNOWN_VALIDATION_ERROR_CODES, type KnobPayload, type KnownValidationErrorCode, type LazyService, type LineageEntry, type ListInteraction, type LivingEdge, type LivingEffect, type LivingEntity, type LivingEvent, type LivingField, type LivingOrbital, type LivingOrbitalSchema, type LivingPage, type LivingState, type LivingTrait, type LivingTransition, type LivingValue, type LivingVertex, LogMeta, Orbital, OrbitalDefinition, OrbitalSchema, type OrbitalVerificationAPI, Page, type PageContentReduction, PageTraitRef, type ParsedDesign, type ParsedDomainContext, type ParsedEmitDeclaration, type ParsedEntity, type ParsedEvent, type ParsedListenDeclaration, type ParsedOrbital, type ParsedPage, type ParsedState, type ParsedStateMachine, type ParsedTrait, type ParsedTraitConfig, type ParsedTransition, PatternTypeSchema, type PersistActionName, type Probability, type ResolvedEntity, type ResolvedEntityBinding, type ResolvedField, type ResolvedIR, type ResolvedNavigation, type ResolvedPage, type ResolvedPattern, type ResolvedSection, type ResolvedSectionEvent, type ResolvedTrait, type ResolvedTraitBinding, type ResolvedTraitDataEntity, type ResolvedTraitEvent, type ResolvedTraitGuard, type ResolvedTraitListener, type ResolvedTraitState, type ResolvedTraitTick, type ResolvedTraitTransition, type ResolvedTraitUIBinding, SExpr, type SaveOptions, type SaveResult, type SchemaChange, type SemanticAnnotation, type SemanticChangeKind, type SemanticSchemaChange, type SemanticVector, type ServerResponseTrace, type ServiceAction, type ServiceActionName, type ServiceContract, type ServiceEvents, ServiceParams, type SnapshotDocument, State, type StatsView, type StoreContract, type StoreFilter, type StoreFilterOp, Trait, TraitCategory, TraitConfig, TraitConfigValue, type TraitFieldRef, TraitFieldRefSchema, type TraitStateSnapshot, Transition, type TransitionFrom, type TransitionTrace, type Unsubscribe, OrbitalDefinition as ValidatedOrbital, type ValidationDocument, type ValidationError, type ValidationErrorCode, type ValidationIssue, type ValidationMeta, type ValidationResult, type ValidationResults, type VerificationCheck, type VerificationSnapshot, type VerificationSummary, type VertexId, type VertexPayload, type VertexType, type ViewFlow, createEmptyResolvedPage, createEmptyResolvedTrait, createLazyService, createResolvedField, createTypedEventBus, getAllPatternTypes, getBindingExamples, getInteractionModelForDomain, inferTsType, isKnownValidationErrorCode, isResolvedIR, isTraitFieldRef, toBindingRoot, validateBindingInContext, widenTier };
2144
+ export { type AgentCodeSearchResult, type AgentCompactResult, type AgentCompactStrategy, type AgentContext, type AgentGenerateOptions, type AgentMemoryCategory, type AgentMemoryRecord, type AnnotationTier, OrbitalSchema as AppSchema, type AppSummary, type AssetLoadStatus, BINDING_CONTEXT_RULES, BINDING_DOCS, BINDING_ROOTS, type BindingContext, type BindingRoot, BindingSchema, type BridgeHealth, type BusEvent, type BusEventListener, type BusEventSource, type CategorizedRemovals, type ChangeAuthor, type ChangeSetDocument, type ChangeSummary, type ChangesetValue, type CheckStatus, ConfigFieldDeclaration, type ContextExtensions, type CreateFlow, DEFAULT_INTERACTION_MODELS, DeclaredTraitConfig, type DeleteFlow, DomainContext, type EdgeType, type EditFlow, Effect, type EffectPayload, type EffectResult, type EffectTrace, Entity, EntityField, EntityPersistence, EntityRow, EvalContext, Event, type EventEmit, type EventKey, type EventListen, type EventLogEntry, EventPayload, EventPayloadValue, type EvolutionDelta, FieldValue, Orbital as FullOrbitalUnit, type GateState, type GitHubLink, type HistoryMeta, type InteractionModel, type InteractionModelInput, InteractionModelSchema, KNOWN_VALIDATION_ERROR_CODES, type KnobPayload, type KnownValidationErrorCode, type LazyService, type LineageEntry, type ListInteraction, type LivingEdge, type LivingEffect, type LivingEntity, type LivingEvent, type LivingField, type LivingOrbital, type LivingOrbitalSchema, type LivingPage, type LivingState, type LivingTrait, type LivingTransition, type LivingValue, type LivingVertex, LogMeta, Orbital, OrbitalDefinition, OrbitalSchema, type OrbitalVerificationAPI, Page, type PageContentReduction, PageTraitRef, type ParsedDesign, type ParsedDomainContext, type ParsedEmitDeclaration, type ParsedEntity, type ParsedEvent, type ParsedListenDeclaration, type ParsedOrbital, type ParsedPage, type ParsedState, type ParsedStateMachine, type ParsedTrait, type ParsedTraitConfig, type ParsedTransition, PatternTypeSchema, type PersistActionName, type Probability, type ResolvedEntity, type ResolvedEntityBinding, type ResolvedField, type ResolvedIR, type ResolvedNavigation, type ResolvedPage, type ResolvedPattern, type ResolvedSection, type ResolvedSectionEvent, type ResolvedTrait, type ResolvedTraitBinding, type ResolvedTraitDataEntity, type ResolvedTraitEvent, type ResolvedTraitGuard, type ResolvedTraitListener, type ResolvedTraitState, type ResolvedTraitTick, type ResolvedTraitTransition, type ResolvedTraitUIBinding, SExpr, type SaveOptions, type SaveResult, type SchemaChange, type SemanticAnnotation, type SemanticChangeKind, type SemanticSchemaChange, type SemanticVector, type ServerResponseTrace, type ServiceAction, type ServiceActionName, type ServiceContract, type ServiceEvents, ServiceParams, type SnapshotDocument, State, type StatsView, type StoreContract, type StoreFilter, type StoreFilterOp, Trait, TraitCategory, TraitConfig, TraitConfigValue, type TraitFieldRef, TraitFieldRefSchema, type TraitStateSnapshot, Transition, type TransitionFrom, type TransitionTrace, type Unsubscribe, OrbitalDefinition as ValidatedOrbital, type ValidationDocument, type ValidationError, type ValidationErrorCode, type ValidationIssue, type ValidationMeta, type ValidationResult, type ValidationResults, type VerificationCheck, type VerificationSnapshot, type VerificationSummary, type VertexId, type VertexPayload, type VertexType, type ViewFlow, createEmptyResolvedPage, createEmptyResolvedTrait, createLazyService, createResolvedField, createTypedEventBus, getAllPatternTypes, getBindingExamples, getInteractionModelForDomain, inferTsType, isKnownValidationErrorCode, isResolvedIR, isTraitFieldRef, toBindingRoot, validateBindingInContext, widenTier };