@almadar/evaluator 2.33.0 → 2.34.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +1 -3694
- package/dist/index.js.map +1 -1
- package/package.json +4 -4
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../context.ts","../node_modules/.pnpm/@almadar+std@16.142.0/node_modules/@almadar/std/canonical-operators.json","../operator-arity.ts","../operators/arithmetic.ts","../operators/comparison.ts","../operators/logic.ts","../operators/control.ts","../operators/collections.ts","../operators/effects.ts","../std/math.ts","../std/str.ts","../std/array.ts","../std/object.ts","../std/validate.ts","../std/time.ts","../std/format.ts","../std/async.ts","../std/prob.ts","../std/os.ts","../std/llm.ts","../std/substrate-guards.ts","../std/workspace.ts","../std/session.ts","../std/memory.ts","../std/trace.ts","../std/integration.ts","../std/vector.ts","../std/geo.ts","../std/grid.ts","../std/anim.ts","../std/ease.ts","../std/noise.ts","../std/path.ts","../SExpressionEvaluator.ts"],"names":["key","evaluate","toNumber","p","childCtx","deepEqual","z","asVec","num","sector","idx","asCell"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * Evaluation Context\n *\n * Defines the context for evaluating S-expressions at runtime.\n * This context provides access to entity data, payload, state, and effect handlers.\n *\n * @packageDocumentation\n */\n\nimport type { AgentContext, LlmContext, WorkspaceContext, SessionContext, MemoryContext, TraceContext, IntegrationContext, TraitConfig } from '@almadar/core';\n\n/**\n * User context for @user bindings (role-based UI).\n */\nexport interface UserContext {\n /** User's unique ID */\n id: string;\n /** User's email */\n email?: string;\n /** User's display name */\n name?: string;\n /** User's role (for RBAC) */\n role?: string;\n /** User's permissions */\n permissions?: string[];\n /** Additional custom profile fields */\n [key: string]: unknown;\n}\n\n/**\n * Evaluation context for S-expression evaluation.\n * Provides all bindings and effect handlers needed at runtime.\n */\nexport interface EvaluationContext {\n /** Entity data for @entity bindings */\n entity: Record<string, unknown>;\n\n /** Payload data for @payload bindings */\n payload: Record<string, unknown>;\n\n /** Current state for @state binding */\n state: string;\n\n /** Current timestamp for @now binding (defaults to Date.now()) */\n now: number;\n\n /** User data for @user bindings (role-based UI) */\n user?: UserContext;\n\n /** Singleton entities for @EntityName bindings */\n singletons: Map<string, Record<string, unknown>>;\n\n /** Local variables from 'let' bindings */\n locals?: Map<string, unknown>;\n\n /**\n * Call-site trait config for @config bindings. Populated by\n * `OrbitalServerRuntime.executeEffects` from `RegisteredOrbital.configByTrait`.\n * Molecules parameterize imported atoms through `config: { ... }` on the\n * trait ref; the atom's render-ui reads `@config.icon`, `@config.title`, etc.\n */\n config?: TraitConfig;\n\n /**\n * When true, log warnings when bindings resolve to undefined. (RCG-01)\n * Helps detect typos and missing entity fields early.\n */\n strictBindings?: boolean;\n\n /**\n * Set by prob/condition when a predicate fails during inference.\n * Checked by prob/posterior and prob/infer to reject samples.\n */\n _probRejected?: boolean;\n\n /**\n * Seeded PRNG state for deterministic probabilistic sampling.\n * Stored as a mutable object so child contexts share the same state.\n * Set by prob/seed.\n */\n _probSeed?: { state: number };\n\n /** Agent context for agent/* operators (memory, LLM, tools, session) */\n agent?: AgentContext;\n\n /** Substrate contexts for llm/*, workspace/*, session/*, memory/*, trace/*, integration/* operators */\n llm?: LlmContext;\n workspace?: WorkspaceContext;\n session?: SessionContext;\n memory?: MemoryContext;\n trace?: TraceContext;\n integration?: IntegrationContext;\n\n // ============================================================================\n // Effect Handlers (for executing side effects)\n // ============================================================================\n\n /** Mutate entity fields */\n mutateEntity?: (changes: Record<string, unknown>) => void;\n\n /** Emit an event */\n emit?: (event: string, payload?: unknown) => void;\n\n /** Navigate to a route */\n navigate?: (route: string, params?: Record<string, unknown>) => void;\n\n /** Persist data (create/update/delete/batch) */\n persist?: (action: 'create' | 'update' | 'delete' | 'batch', data?: Record<string, unknown>) => Promise<void>;\n\n /** Show a notification */\n notify?: (message: string, type?: 'success' | 'error' | 'warning' | 'info') => void;\n\n /** Spawn a new entity instance */\n spawn?: (entityType: string, props?: Record<string, unknown>) => void;\n\n /** Despawn an entity instance */\n despawn?: (entityId?: string) => void;\n\n /** Call an external service */\n callService?: (service: string, method: string, params?: Record<string, unknown>) => Promise<unknown>;\n\n /** Render UI to a slot */\n renderUI?: (slot: string, pattern: unknown, props?: Record<string, unknown>, priority?: number) => void;\n\n /** Register an OS trigger (server-side only) */\n registerOsTrigger?: (type: string, config: Record<string, unknown>) => void;\n\n // ============================================================================\n // Resource Operators (ref/deref/swap!/watch/atomic)\n // ============================================================================\n\n /** Effect handlers for resource operators (grouped to avoid top-level pollution) */\n effectHandlers?: {\n ref?: (entityType: string, options?: unknown) => unknown;\n deref?: (entityType: string, id?: unknown) => unknown;\n swap?: (entityType: string, id: unknown, transformExpr: unknown, evaluate: unknown, ctx: unknown) => unknown;\n watch?: (entityType: string, effects: unknown[], evaluate: unknown, ctx: unknown) => void;\n atomic?: (effects: unknown[], evaluate: unknown, ctx: unknown) => unknown;\n fetch?: (entityType: string, options?: unknown) => unknown;\n };\n}\n\n/**\n * Create a minimal evaluation context for testing/guards.\n * Only includes bindings, no effect handlers.\n */\nexport function createMinimalContext(\n entity: Record<string, unknown> = {},\n payload: Record<string, unknown> = {},\n state: string = 'initial'\n): EvaluationContext {\n return {\n entity,\n payload,\n state,\n now: Date.now(),\n singletons: new Map(),\n };\n}\n\n/**\n * Create a context with effect handlers.\n * Used for runtime evaluation where effects need to execute.\n */\nexport function createEffectContext(\n base: EvaluationContext,\n handlers: Partial<Pick<EvaluationContext,\n 'mutateEntity' | 'emit' | 'navigate' | 'persist' | 'notify' | 'spawn' | 'despawn' | 'callService' | 'renderUI'\n >>\n): EvaluationContext {\n return {\n ...base,\n ...handlers,\n };\n}\n\n/**\n * Create a child context with additional local bindings.\n * Used for 'let' expressions.\n */\nexport function createChildContext(\n parent: EvaluationContext,\n locals: Map<string, unknown>\n): EvaluationContext {\n // Merge parent locals with new locals\n const mergedLocals = new Map(parent.locals);\n locals.forEach((value, key) => mergedLocals.set(key, value));\n\n return {\n ...parent,\n locals: mergedLocals,\n };\n}\n\n/**\n * Resolve a binding in the context.\n *\n * @param binding - Binding string (e.g., \"@entity.health\", \"@payload.amount\")\n * @param ctx - Evaluation context\n * @returns Resolved value or undefined\n */\n/**\n * Binding roots whose values only exist in client UI state (e.g. `@trait.*`\n * resolves to another trait's current `render-ui` output, which lives in\n * `@almadar/ui`'s slot manager, not on the server). Evaluator returns\n * `undefined` for these without emitting a strict-mode warning — they're\n * expected to round-trip through the server verbatim and be substituted at\n * render time. Mirrors `CLIENT_ONLY_BINDING_ROOTS` in\n * `@almadar/runtime/BindingResolver`.\n */\nconst CLIENT_ONLY_BINDING_ROOTS: ReadonlySet<string> = new Set(['trait']);\n\nexport function resolveBinding(binding: string, ctx: EvaluationContext): unknown {\n if (!binding.startsWith('@')) {\n return undefined;\n }\n\n const withoutPrefix = binding.slice(1);\n // Split on `.` but also expand bracket-index segments into separate\n // path steps. `config.sections[0].bullets` -> ['config', 'sections',\n // '0', 'bullets']. Indices are numeric strings; the navigation loop\n // below handles them transparently against arrays (Array['0'] reads\n // index 0). Lolos use bracket notation to address typed config\n // arrays (e.g. `@config.sections[0].title` on a per-section split-\n // section pattern); without this expansion the segment 'sections[0]'\n // is looked up as a literal property name and resolves to undefined.\n const parts = withoutPrefix.split('.').flatMap((seg) => {\n const m = seg.match(/^([\\w]+)((?:\\[\\d+\\])+)$/);\n if (!m) return [seg];\n const head = m[1];\n const indices = Array.from(m[2].matchAll(/\\[(\\d+)\\]/g)).map((x) => x[1]);\n return [head, ...indices];\n });\n const root = parts[0];\n const path = parts.slice(1);\n\n // Client-only bindings never resolve server-side. Short-circuit so\n // strict-mode warnings don't fire on intentional-unresolved paths.\n if (CLIENT_ONLY_BINDING_ROOTS.has(root)) {\n return undefined;\n }\n\n let value: unknown;\n\n // Check locals first\n if (ctx.locals?.has(root)) {\n value = ctx.locals.get(root);\n } else {\n // Core bindings\n switch (root) {\n case 'entity':\n value = ctx.entity;\n break;\n case 'payload':\n value = ctx.payload;\n break;\n case 'state':\n return ctx.state; // @state has no path\n case 'now':\n return ctx.now; // @now has no path\n case 'user':\n value = ctx.user;\n break;\n case 'config':\n // Call-site trait config injected by OrbitalServerRuntime (see\n // RegisteredOrbital.configByTrait). Molecules parameterize imported\n // atoms through `config: { ... }` on the trait ref; the atom's\n // render-ui reads `@config.icon`, `@config.title`, etc.\n value = ctx.config;\n break;\n default:\n // Singleton entity reference (@EntityName.field)\n value = ctx.singletons.get(root);\n break;\n }\n }\n\n // Navigate path\n for (let i = 0; i < path.length; i++) {\n const segment = path[i];\n if (value === null || value === undefined) {\n if (ctx.strictBindings) {\n const resolvedSoFar = [root, ...path.slice(0, i)].join('.');\n console.warn(\n `[Binding] @${root}.${path.join('.')} resolved to undefined ` +\n `(failed at \"${segment}\" — @${resolvedSoFar} is ${value === null ? 'null' : 'undefined'})`\n );\n }\n return undefined;\n }\n if (typeof value === 'object') {\n value = (value as Record<string, unknown>)[segment];\n } else {\n if (ctx.strictBindings) {\n const resolvedSoFar = [root, ...path.slice(0, i)].join('.');\n console.warn(\n `[Binding] @${root}.${path.join('.')} resolved to undefined ` +\n `(cannot navigate \"${segment}\" on non-object at @${resolvedSoFar})`\n );\n }\n return undefined;\n }\n }\n\n if (value === undefined && path.length > 0 && ctx.strictBindings) {\n console.warn(\n `[Binding] @${root}.${path.join('.')} resolved to undefined`\n );\n }\n\n return value;\n}\n","{\n \"version\": \"2.0.0\",\n \"description\": \"Canonical operator registry for Almadar. Generated from @almadar/std/modules. Consumed by orbital-compiler via include_str!.\",\n \"generated\": \"2026-07-11T04:18:15.730Z\",\n \"categories\": {\n \"arithmetic\": {\n \"description\": \"Numeric operations\",\n \"target\": [\n \"ts\",\n \"rust\"\n ]\n },\n \"comparison\": {\n \"description\": \"Value comparison\",\n \"target\": [\n \"ts\",\n \"rust\"\n ]\n },\n \"logic\": {\n \"description\": \"Boolean logic\",\n \"target\": [\n \"ts\",\n \"rust\"\n ]\n },\n \"control\": {\n \"description\": \"Control flow\",\n \"target\": [\n \"ts\",\n \"rust\"\n ]\n },\n \"effect\": {\n \"description\": \"Side effects (runtime only)\",\n \"target\": [\n \"ts\"\n ]\n },\n \"collection\": {\n \"description\": \"Collection operations\",\n \"target\": [\n \"ts\",\n \"rust\"\n ]\n },\n \"std-math\": {\n \"description\": \"Math utilities\",\n \"target\": [\n \"ts\",\n \"rust\"\n ]\n },\n \"std-str\": {\n \"description\": \"String utilities\",\n \"target\": [\n \"ts\",\n \"rust\"\n ]\n },\n \"std-array\": {\n \"description\": \"Array utilities\",\n \"target\": [\n \"ts\",\n \"rust\"\n ]\n },\n \"std-object\": {\n \"description\": \"Object utilities\",\n \"target\": [\n \"ts\",\n \"rust\"\n ]\n },\n \"std-time\": {\n \"description\": \"Date/time utilities\",\n \"target\": [\n \"ts\",\n \"rust\"\n ]\n },\n \"std-validate\": {\n \"description\": \"Validation utilities\",\n \"target\": [\n \"ts\",\n \"rust\"\n ]\n },\n \"std-format\": {\n \"description\": \"Formatting utilities\",\n \"target\": [\n \"ts\",\n \"rust\"\n ]\n },\n \"std-async\": {\n \"description\": \"Async utilities (runtime only)\",\n \"target\": [\n \"ts\"\n ]\n },\n \"std-prob\": {\n \"description\": \"Probabilistic programming\",\n \"target\": [\n \"ts\"\n ]\n },\n \"std-os\": {\n \"description\": \"OS-level event watchers for system triggers\",\n \"target\": [\n \"ts\"\n ]\n },\n \"std-browser\": {\n \"description\": \"Browser device APIs (file picker, clipboard, geolocation) — client host effects\",\n \"target\": [\n \"ts\"\n ]\n },\n \"std-composition\": {\n \"description\": \"Behavior composition (compile-time)\",\n \"target\": [\n \"ts\",\n \"rust\"\n ]\n },\n \"std-llm\": {\n \"description\": \"LLM interaction substrate (runtime)\",\n \"target\": [\n \"ts\"\n ]\n },\n \"std-workspace\": {\n \"description\": \"Workspace I/O substrate (runtime)\",\n \"target\": [\n \"ts\"\n ]\n },\n \"std-session\": {\n \"description\": \"Session state substrate (runtime)\",\n \"target\": [\n \"ts\"\n ]\n },\n \"std-memory\": {\n \"description\": \"Agent memory substrate (runtime)\",\n \"target\": [\n \"ts\"\n ]\n },\n \"std-trace\": {\n \"description\": \"Execution tracing substrate (runtime)\",\n \"target\": [\n \"ts\"\n ]\n },\n \"std-integration\": {\n \"description\": \"External integration calls (runtime)\",\n \"target\": [\n \"ts\"\n ]\n },\n \"std-behavior\": {\n \"description\": \"Behavior substrate effects (runtime)\",\n \"target\": [\n \"ts\"\n ]\n },\n \"std-vec\": {\n \"description\": \"2D/3D vector math\",\n \"target\": [\n \"ts\",\n \"rust\"\n ]\n },\n \"std-geo\": {\n \"description\": \"2D collision and geometry\",\n \"target\": [\n \"ts\",\n \"rust\"\n ]\n },\n \"std-grid\": {\n \"description\": \"Tile/cell coordinate operations\",\n \"target\": [\n \"ts\",\n \"rust\"\n ]\n },\n \"std-anim\": {\n \"description\": \"Sprite animation helpers\",\n \"target\": [\n \"ts\",\n \"rust\"\n ]\n },\n \"std-ease\": {\n \"description\": \"Easing and interpolation curves\",\n \"target\": [\n \"ts\",\n \"rust\"\n ]\n },\n \"std-noise\": {\n \"description\": \"Coherent noise (procedural gen)\",\n \"target\": [\n \"ts\",\n \"rust\"\n ]\n },\n \"std-path\": {\n \"description\": \"Grid pathfinding\",\n \"target\": [\n \"ts\",\n \"rust\"\n ]\n },\n \"std-nn\": {\n \"description\": \"Neural network layer definitions\",\n \"target\": [\n \"python\"\n ]\n },\n \"std-tensor\": {\n \"description\": \"Tensor operations\",\n \"target\": [\n \"python\"\n ]\n },\n \"std-train\": {\n \"description\": \"Training operations\",\n \"target\": [\n \"python\"\n ]\n },\n \"ml-arch\": {\n \"description\": \"Architecture layer definitions (Python compile target)\",\n \"target\": [\n \"python\"\n ]\n },\n \"ml-effect\": {\n \"description\": \"ML execution effects (Python compile target)\",\n \"target\": [\n \"python\"\n ]\n },\n \"ml-tensor\": {\n \"description\": \"Tensor manipulation (Python compile target)\",\n \"target\": [\n \"python\"\n ]\n },\n \"ml-graph\": {\n \"description\": \"Graph construction (Python compile target)\",\n \"target\": [\n \"python\"\n ]\n },\n \"ml-contract\": {\n \"description\": \"Input/output contract validation (Python compile target)\",\n \"target\": [\n \"python\"\n ]\n },\n \"ml-data\": {\n \"description\": \"Data loading and preprocessing (Python compile target)\",\n \"target\": [\n \"python\"\n ]\n }\n },\n \"operators\": {\n \"!=\": {\n \"category\": \"comparison\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"boolean\",\n \"description\": \"Not equal to\",\n \"module\": \"core\"\n },\n \"%\": {\n \"category\": \"arithmetic\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"number\",\n \"description\": \"Modulo (remainder)\",\n \"module\": \"core\"\n },\n \"*\": {\n \"category\": \"arithmetic\",\n \"minArity\": 2,\n \"maxArity\": null,\n \"returnType\": \"number\",\n \"description\": \"Multiply numbers\",\n \"module\": \"core\"\n },\n \"+\": {\n \"category\": \"arithmetic\",\n \"minArity\": 2,\n \"maxArity\": null,\n \"returnType\": \"number\",\n \"description\": \"Add numbers\",\n \"module\": \"core\"\n },\n \"-\": {\n \"category\": \"arithmetic\",\n \"minArity\": 1,\n \"maxArity\": 2,\n \"returnType\": \"number\",\n \"description\": \"Subtract or negate\",\n \"module\": \"core\"\n },\n \"/\": {\n \"category\": \"arithmetic\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"number\",\n \"description\": \"Divide numbers\",\n \"module\": \"core\"\n },\n \"<\": {\n \"category\": \"comparison\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"boolean\",\n \"description\": \"Less than\",\n \"module\": \"core\"\n },\n \"<=\": {\n \"category\": \"comparison\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"boolean\",\n \"description\": \"Less than or equal\",\n \"module\": \"core\"\n },\n \"=\": {\n \"category\": \"comparison\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"boolean\",\n \"description\": \"Equal to\",\n \"module\": \"core\"\n },\n \">\": {\n \"category\": \"comparison\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"boolean\",\n \"description\": \"Greater than\",\n \"module\": \"core\"\n },\n \">=\": {\n \"category\": \"comparison\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"boolean\",\n \"description\": \"Greater than or equal\",\n \"module\": \"core\"\n },\n \"and\": {\n \"category\": \"logic\",\n \"minArity\": 2,\n \"maxArity\": null,\n \"returnType\": \"boolean\",\n \"description\": \"Logical AND (returns the last truthy value, NOT a boolean — short-circuit)\",\n \"module\": \"core\",\n \"returnSemantics\": \"last-truthy-of-args\"\n },\n \"anim/direction-from-delta\": {\n \"category\": \"std-anim\",\n \"minArity\": 2,\n \"maxArity\": 3,\n \"returnType\": \"string\",\n \"description\": \"Facing direction string from (dx,dy); 4-way (default) or 8-way\",\n \"module\": \"anim\"\n },\n \"anim/frame-at\": {\n \"category\": \"std-anim\",\n \"minArity\": 3,\n \"maxArity\": 4,\n \"returnType\": \"number\",\n \"description\": \"Frame index for elapsed time; loops by default, else clamps to last\",\n \"module\": \"anim\"\n },\n \"anim/sheet-rect\": {\n \"category\": \"std-anim\",\n \"minArity\": 4,\n \"maxArity\": 4,\n \"returnType\": \"object\",\n \"description\": \"Source rect {sx,sy,sw,sh} for a frame index on a sprite sheet\",\n \"module\": \"anim\"\n },\n \"array/append\": {\n \"category\": \"std-array\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"array\",\n \"description\": \"Add item to end (returns new array)\",\n \"module\": \"array\"\n },\n \"array/avg\": {\n \"category\": \"std-array\",\n \"minArity\": 1,\n \"maxArity\": 2,\n \"returnType\": \"number\",\n \"description\": \"Average of values (optionally by field)\",\n \"module\": \"array\"\n },\n \"array/concat\": {\n \"category\": \"std-array\",\n \"minArity\": 2,\n \"maxArity\": null,\n \"returnType\": \"array\",\n \"description\": \"Concatenate arrays\",\n \"module\": \"array\"\n },\n \"array/count\": {\n \"category\": \"std-array\",\n \"minArity\": 1,\n \"maxArity\": 2,\n \"returnType\": \"number\",\n \"description\": \"Count elements (optionally matching predicate)\",\n \"module\": \"array\"\n },\n \"array/drop\": {\n \"category\": \"std-array\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"array\",\n \"description\": \"Skip first n elements\",\n \"module\": \"array\"\n },\n \"array/dropLast\": {\n \"category\": \"std-array\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"array\",\n \"description\": \"Skip last n elements\",\n \"module\": \"array\"\n },\n \"array/empty?\": {\n \"category\": \"std-array\",\n \"minArity\": 1,\n \"maxArity\": 1,\n \"returnType\": \"boolean\",\n \"description\": \"Check if array is empty\",\n \"module\": \"array\"\n },\n \"array/every\": {\n \"category\": \"std-array\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"boolean\",\n \"description\": \"Check if all elements match predicate\",\n \"module\": \"array\"\n },\n \"array/filter\": {\n \"category\": \"std-array\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"array\",\n \"description\": \"Keep elements matching predicate (returns same array element type as input)\",\n \"module\": \"array\",\n \"returnSemantics\": \"identity-of-arg<0>\"\n },\n \"array/find\": {\n \"category\": \"std-array\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"any\",\n \"description\": \"Find first element matching predicate (element type of input array, undefined when no match)\",\n \"module\": \"array\",\n \"returnSemantics\": \"element-of-arg<0>?\"\n },\n \"array/findIndex\": {\n \"category\": \"std-array\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"number\",\n \"description\": \"Find index of first element matching predicate (-1 if none)\",\n \"module\": \"array\"\n },\n \"array/first\": {\n \"category\": \"std-array\",\n \"minArity\": 1,\n \"maxArity\": 1,\n \"returnType\": \"any\",\n \"description\": \"Get first element (element type of input array, may be undefined when empty)\",\n \"module\": \"array\",\n \"returnSemantics\": \"element-of-arg<0>?\"\n },\n \"array/flatten\": {\n \"category\": \"std-array\",\n \"minArity\": 1,\n \"maxArity\": 1,\n \"returnType\": \"array\",\n \"description\": \"Flatten nested arrays one level\",\n \"module\": \"array\"\n },\n \"array/groupBy\": {\n \"category\": \"std-array\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"any\",\n \"description\": \"Group elements by field value\",\n \"module\": \"array\"\n },\n \"array/includes\": {\n \"category\": \"std-array\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"boolean\",\n \"description\": \"Check if array contains item\",\n \"module\": \"array\"\n },\n \"array/indexOf\": {\n \"category\": \"std-array\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"number\",\n \"description\": \"Find index of item (-1 if not found)\",\n \"module\": \"array\"\n },\n \"array/insert\": {\n \"category\": \"std-array\",\n \"minArity\": 3,\n \"maxArity\": 3,\n \"returnType\": \"array\",\n \"description\": \"Insert item at index (returns new array)\",\n \"module\": \"array\"\n },\n \"array/last\": {\n \"category\": \"std-array\",\n \"minArity\": 1,\n \"maxArity\": 1,\n \"returnType\": \"any\",\n \"description\": \"Get last element (element type of input array, may be undefined when empty)\",\n \"module\": \"array\",\n \"returnSemantics\": \"element-of-arg<0>?\"\n },\n \"array/len\": {\n \"category\": \"std-array\",\n \"minArity\": 1,\n \"maxArity\": 1,\n \"returnType\": \"number\",\n \"description\": \"Array length\",\n \"module\": \"array\"\n },\n \"array/map\": {\n \"category\": \"std-array\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"array\",\n \"description\": \"Transform each element (return type wraps the lambda result in an array)\",\n \"module\": \"array\",\n \"returnSemantics\": \"lambda-result\"\n },\n \"array/max\": {\n \"category\": \"std-array\",\n \"minArity\": 1,\n \"maxArity\": 2,\n \"returnType\": \"number\",\n \"description\": \"Maximum value (optionally by field)\",\n \"module\": \"array\"\n },\n \"array/min\": {\n \"category\": \"std-array\",\n \"minArity\": 1,\n \"maxArity\": 2,\n \"returnType\": \"number\",\n \"description\": \"Minimum value (optionally by field)\",\n \"module\": \"array\"\n },\n \"array/nth\": {\n \"category\": \"std-array\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"any\",\n \"description\": \"Get element at index (element type of input array, may be undefined out-of-bounds)\",\n \"module\": \"array\",\n \"returnSemantics\": \"element-of-arg<0>?\"\n },\n \"array/partition\": {\n \"category\": \"std-array\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"array\",\n \"description\": \"Split array by predicate into [matches, nonMatches]\",\n \"module\": \"array\"\n },\n \"array/prepend\": {\n \"category\": \"std-array\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"array\",\n \"description\": \"Add item to start (returns new array)\",\n \"module\": \"array\"\n },\n \"array/range\": {\n \"category\": \"std-array\",\n \"minArity\": 1,\n \"maxArity\": 3,\n \"returnType\": \"array\",\n \"description\": \"Generate numbers: (range n) => [0,n); (range start end) => [start,end); optional step\",\n \"module\": \"array\"\n },\n \"array/reduce\": {\n \"category\": \"std-array\",\n \"minArity\": 3,\n \"maxArity\": 3,\n \"returnType\": \"any\",\n \"description\": \"Reduce array to single value (return type matches the lambda result / init type)\",\n \"module\": \"array\",\n \"returnSemantics\": \"lambda-result\"\n },\n \"array/reject\": {\n \"category\": \"std-array\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"array\",\n \"description\": \"Remove elements matching predicate (returns same array element type as input)\",\n \"module\": \"array\",\n \"returnSemantics\": \"identity-of-arg<0>\"\n },\n \"array/remove\": {\n \"category\": \"std-array\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"array\",\n \"description\": \"Remove item at index (returns new array)\",\n \"module\": \"array\"\n },\n \"array/removeItem\": {\n \"category\": \"std-array\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"array\",\n \"description\": \"Remove first matching item (returns new array)\",\n \"module\": \"array\"\n },\n \"array/reverse\": {\n \"category\": \"std-array\",\n \"minArity\": 1,\n \"maxArity\": 1,\n \"returnType\": \"array\",\n \"description\": \"Reverse array order (returns new array)\",\n \"module\": \"array\"\n },\n \"array/shuffle\": {\n \"category\": \"std-array\",\n \"minArity\": 1,\n \"maxArity\": 1,\n \"returnType\": \"array\",\n \"description\": \"Randomly shuffle array (returns new array)\",\n \"module\": \"array\"\n },\n \"array/slice\": {\n \"category\": \"std-array\",\n \"minArity\": 2,\n \"maxArity\": 3,\n \"returnType\": \"array\",\n \"description\": \"Extract subarray\",\n \"module\": \"array\"\n },\n \"array/some\": {\n \"category\": \"std-array\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"boolean\",\n \"description\": \"Check if any element matches predicate\",\n \"module\": \"array\"\n },\n \"array/sort\": {\n \"category\": \"std-array\",\n \"minArity\": 1,\n \"maxArity\": 3,\n \"returnType\": \"array\",\n \"description\": \"Sort array (returns new array)\",\n \"module\": \"array\"\n },\n \"array/sum\": {\n \"category\": \"std-array\",\n \"minArity\": 1,\n \"maxArity\": 2,\n \"returnType\": \"number\",\n \"description\": \"Sum values (optionally by field)\",\n \"module\": \"array\"\n },\n \"array/take\": {\n \"category\": \"std-array\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"array\",\n \"description\": \"Take first n elements\",\n \"module\": \"array\"\n },\n \"array/takeLast\": {\n \"category\": \"std-array\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"array\",\n \"description\": \"Take last n elements\",\n \"module\": \"array\"\n },\n \"array/unique\": {\n \"category\": \"std-array\",\n \"minArity\": 1,\n \"maxArity\": 1,\n \"returnType\": \"array\",\n \"description\": \"Remove duplicates (returns new array)\",\n \"module\": \"array\"\n },\n \"array/zip\": {\n \"category\": \"std-array\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"array\",\n \"description\": \"Pair elements from two arrays\",\n \"module\": \"array\"\n },\n \"async/all\": {\n \"category\": \"std-async\",\n \"minArity\": 2,\n \"maxArity\": null,\n \"returnType\": \"array\",\n \"description\": \"Execute effects in parallel, wait for all to complete\",\n \"module\": \"async\",\n \"hasSideEffects\": true\n },\n \"async/debounce\": {\n \"category\": \"std-async\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"void\",\n \"description\": \"Debounce an event (wait for pause in events)\",\n \"module\": \"async\",\n \"hasSideEffects\": true\n },\n \"async/delay\": {\n \"category\": \"std-async\",\n \"minArity\": 1,\n \"maxArity\": 2,\n \"returnType\": \"any\",\n \"description\": \"Wait for specified milliseconds, optionally execute an effect after\",\n \"module\": \"async\",\n \"hasSideEffects\": true\n },\n \"async/interval\": {\n \"category\": \"std-async\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"string\",\n \"description\": \"Execute an effect periodically at a fixed interval\",\n \"module\": \"async\",\n \"hasSideEffects\": true\n },\n \"async/race\": {\n \"category\": \"std-async\",\n \"minArity\": 2,\n \"maxArity\": null,\n \"returnType\": \"any\",\n \"description\": \"Execute effects in parallel, return first to complete\",\n \"module\": \"async\",\n \"hasSideEffects\": true\n },\n \"async/retry\": {\n \"category\": \"std-async\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"any\",\n \"description\": \"Retry an effect with configurable backoff\",\n \"module\": \"async\",\n \"hasSideEffects\": true\n },\n \"async/sequence\": {\n \"category\": \"std-async\",\n \"minArity\": 2,\n \"maxArity\": null,\n \"returnType\": \"array\",\n \"description\": \"Execute effects in sequence (one after another)\",\n \"module\": \"async\",\n \"hasSideEffects\": true\n },\n \"async/throttle\": {\n \"category\": \"std-async\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"void\",\n \"description\": \"Throttle an event (emit at most once per interval)\",\n \"module\": \"async\",\n \"hasSideEffects\": true\n },\n \"async/timeout\": {\n \"category\": \"std-async\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"any\",\n \"description\": \"Add timeout to an effect\",\n \"module\": \"async\",\n \"hasSideEffects\": true\n },\n \"behavior/call\": {\n \"category\": \"std-behavior\",\n \"minArity\": 2,\n \"maxArity\": 3,\n \"returnType\": \"ServiceCallResult\",\n \"description\": \"Call a behavior service action. Returns the ServiceCallResult union — resolves to the specific member when the (behavior, action) pair is a literal.\",\n \"module\": \"behavior\",\n \"hasSideEffects\": true\n },\n \"behavior/compose\": {\n \"category\": \"std-composition\",\n \"minArity\": 1,\n \"maxArity\": 1,\n \"returnType\": \"object\",\n \"description\": \"Compose N orbitals into one application schema. Wires events, picks layout, generates pages.\",\n \"module\": \"composition\"\n },\n \"behavior/detect-layout\": {\n \"category\": \"std-composition\",\n \"minArity\": 1,\n \"maxArity\": 2,\n \"returnType\": \"string\",\n \"description\": \"Auto-detect layout from orbital count and wiring topology. Returns single, tabs, sidebar, dashboard, or wizard-flow.\",\n \"module\": \"composition\"\n },\n \"behavior/instantiate\": {\n \"category\": \"std-behavior\",\n \"minArity\": 2,\n \"maxArity\": 3,\n \"returnType\": \"BuilderResult\",\n \"description\": \"Instantiate a behavior from the registry at runtime (meta-programming). Equivalent to compile-time `uses` but dynamic — the behavior name is a runtime value. Applies the same override surface (linkedEntity, events, config, fields).\",\n \"module\": \"behavior\",\n \"hasSideEffects\": true\n },\n \"behavior/pipe\": {\n \"category\": \"std-composition\",\n \"minArity\": 2,\n \"maxArity\": null,\n \"returnType\": \"any\",\n \"description\": \"Left-to-right composition. Each step receives the previous result as its first arg.\",\n \"module\": \"composition\"\n },\n \"behavior/wire\": {\n \"category\": \"std-composition\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"array\",\n \"description\": \"Apply cross-orbital event wiring. Adds external emits/listens to inline traits.\",\n \"module\": \"composition\"\n },\n \"browser/clipboard-read\": {\n \"category\": \"std-browser\",\n \"minArity\": 0,\n \"maxArity\": 0,\n \"returnType\": \"string\",\n \"description\": \"Read text from the system clipboard (navigator.clipboard.readText / host clipboard). Requires a user gesture and clipboard permission. Resolves with the clipboard text via the trailing { emit } envelope.\",\n \"module\": \"browser\",\n \"hasSideEffects\": true,\n \"effect\": {\n \"kind\": \"custom\",\n \"produces\": \"string\"\n }\n },\n \"browser/clipboard-write\": {\n \"category\": \"std-browser\",\n \"minArity\": 1,\n \"maxArity\": 1,\n \"returnType\": \"void\",\n \"description\": \"Write text to the system clipboard (navigator.clipboard.writeText / host clipboard). Requires a user gesture. Emits success/failure via the trailing { emit } envelope.\",\n \"module\": \"browser\",\n \"hasSideEffects\": true,\n \"effect\": {\n \"kind\": \"custom\",\n \"produces\": \"string\"\n }\n },\n \"browser/geolocation-current\": {\n \"category\": \"std-browser\",\n \"minArity\": 0,\n \"maxArity\": 1,\n \"returnType\": \"object\",\n \"description\": \"Read the current device position (navigator.geolocation.getCurrentPosition / host geolocation). Requires location permission. Resolves with { latitude, longitude, accuracy } via the trailing { emit } envelope.\",\n \"module\": \"browser\",\n \"hasSideEffects\": true,\n \"effect\": {\n \"kind\": \"custom\",\n \"produces\": {\n \"kind\": \"object\",\n \"fields\": {\n \"latitude\": \"number\",\n \"longitude\": \"number\",\n \"accuracy\": \"number\"\n }\n }\n }\n },\n \"browser/open-file-picker\": {\n \"category\": \"std-browser\",\n \"minArity\": 0,\n \"maxArity\": 1,\n \"returnType\": \"array\",\n \"description\": \"Open the OS file picker (window.showOpenFilePicker / host dialog). Resolves with the selected file metadata list, or emits failure when the user cancels or the capability is denied. Async; use the trailing { emit } envelope for success/failure events.\",\n \"module\": \"browser\",\n \"hasSideEffects\": true,\n \"effect\": {\n \"kind\": \"custom\",\n \"produces\": {\n \"kind\": \"array\",\n \"of\": {\n \"kind\": \"object\",\n \"fields\": {\n \"name\": \"string\",\n \"size\": \"number\",\n \"type\": \"string\",\n \"lastModified\": \"number\"\n }\n }\n }\n }\n },\n \"call-service\": {\n \"category\": \"effect\",\n \"minArity\": 2,\n \"maxArity\": 4,\n \"returnType\": \"void\",\n \"description\": \"Invoke an external service action. Optional trailing { emit: { success, failure } } options object attaches closed-circuit emit routing (V2 frame contract).\",\n \"module\": \"core\",\n \"hasSideEffects\": true,\n \"effect\": {\n \"kind\": \"call-service\",\n \"produces\": \"any\"\n }\n },\n \"checkpoint/load\": {\n \"category\": \"ml-effect\",\n \"minArity\": 1,\n \"maxArity\": 1,\n \"returnType\": \"object\",\n \"description\": \"Load a model checkpoint (ML effect)\",\n \"module\": \"train\"\n },\n \"checkpoint/save\": {\n \"category\": \"ml-effect\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"void\",\n \"description\": \"Save a model checkpoint (ML effect)\",\n \"module\": \"train\",\n \"hasSideEffects\": true\n },\n \"compose/compose-all\": {\n \"category\": \"std-behavior\",\n \"minArity\": 0,\n \"maxArity\": 0,\n \"returnType\": \"ComposeAllResult\",\n \"description\": \"Compose all orbitals in the workspace into a single schema. Backed by composeBehaviors.\",\n \"module\": \"behavior\",\n \"hasSideEffects\": true\n },\n \"compose/compose-children\": {\n \"category\": \"std-behavior\",\n \"minArity\": 1,\n \"maxArity\": 1,\n \"returnType\": \"ComposeChildrenResult\",\n \"description\": \"Compose child orbitals under a parent for recursive builds.\",\n \"module\": \"behavior\",\n \"hasSideEffects\": true\n },\n \"contract/clamp-output\": {\n \"category\": \"ml-contract\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"tensor\",\n \"description\": \"Clamp output tensor to contract ranges\",\n \"module\": \"contract\"\n },\n \"contract/entity-to-tensor\": {\n \"category\": \"ml-contract\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"tensor\",\n \"description\": \"Convert entity fields to tensor via contract\",\n \"module\": \"contract\"\n },\n \"contract/tensor-to-payload\": {\n \"category\": \"ml-contract\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"object\",\n \"description\": \"Convert output tensor to event payload via contract\",\n \"module\": \"contract\"\n },\n \"contract/validate-input\": {\n \"category\": \"ml-contract\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"boolean\",\n \"description\": \"Validate tensor against input contract\",\n \"module\": \"contract\"\n },\n \"contract/validate-output\": {\n \"category\": \"ml-contract\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"boolean\",\n \"description\": \"Validate tensor against output contract\",\n \"module\": \"contract\"\n },\n \"contract/violations\": {\n \"category\": \"ml-contract\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"array\",\n \"description\": \"List contract violations\",\n \"module\": \"contract\"\n },\n \"data/augment\": {\n \"category\": \"ml-data\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"object\",\n \"description\": \"Apply data augmentation\",\n \"module\": \"data\"\n },\n \"data/dataloader\": {\n \"category\": \"ml-data\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"object\",\n \"description\": \"Create batched dataloader from dataset\",\n \"module\": \"data\"\n },\n \"data/dataset\": {\n \"category\": \"ml-data\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"object\",\n \"description\": \"Create dataset from entity collection and contracts\",\n \"module\": \"data\"\n },\n \"data/normalize\": {\n \"category\": \"ml-data\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"tensor\",\n \"description\": \"Normalize features (mean/std or min/max)\",\n \"module\": \"data\"\n },\n \"data/pad\": {\n \"category\": \"ml-data\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"tensor\",\n \"description\": \"Pad sequences to uniform length\",\n \"module\": \"data\"\n },\n \"data/split\": {\n \"category\": \"ml-data\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"array\",\n \"description\": \"Train/val/test split\",\n \"module\": \"data\"\n },\n \"data/tokenize\": {\n \"category\": \"ml-data\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"tensor\",\n \"description\": \"Tokenize text fields\",\n \"module\": \"data\"\n },\n \"despawn\": {\n \"category\": \"effect\",\n \"minArity\": 0,\n \"maxArity\": 1,\n \"returnType\": \"void\",\n \"description\": \"Despawn an entity instance (games)\",\n \"module\": \"core\",\n \"hasSideEffects\": true,\n \"effect\": {\n \"kind\": \"despawn\"\n }\n },\n \"do\": {\n \"category\": \"control\",\n \"minArity\": 1,\n \"maxArity\": null,\n \"returnType\": \"any\",\n \"description\": \"Sequential execution of multiple effects/expressions\",\n \"module\": \"core\"\n },\n \"ease/apply\": {\n \"category\": \"std-ease\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"number\",\n \"description\": \"Apply an easing curve to t∈[0,1]: linear, in-quad, out-quad, in-out-quad, in-cubic, out-cubic, in-out-cubic, elastic-out, bounce-out (unknown → linear)\",\n \"module\": \"ease\"\n },\n \"ease/smoothstep\": {\n \"category\": \"std-ease\",\n \"minArity\": 3,\n \"maxArity\": 3,\n \"returnType\": \"number\",\n \"description\": \"Smoothstep: clamp((x-edge0)/(edge1-edge0),0,1) then t*t*(3-2*t)\",\n \"module\": \"ease\"\n },\n \"emit\": {\n \"category\": \"effect\",\n \"minArity\": 1,\n \"maxArity\": 2,\n \"returnType\": \"void\",\n \"description\": \"Emit an event onto the bus\",\n \"module\": \"core\",\n \"hasSideEffects\": true,\n \"effect\": {\n \"kind\": \"emit\",\n \"produces\": {\n \"kind\": \"object\",\n \"fields\": {\n \"event\": {\n \"kind\": \"eventKey\"\n },\n \"payload\": \"any\"\n },\n \"open\": true\n }\n }\n },\n \"evaluate\": {\n \"category\": \"ml-effect\",\n \"minArity\": 1,\n \"maxArity\": 2,\n \"returnType\": \"object\",\n \"description\": \"Evaluate a model against test cases (ML effect)\",\n \"module\": \"train\"\n },\n \"fetch\": {\n \"category\": \"effect\",\n \"minArity\": 1,\n \"maxArity\": 2,\n \"returnType\": \"void\",\n \"description\": \"Fetch an entity (by id) or a collection (by filter) from persistence\",\n \"module\": \"core\",\n \"hasSideEffects\": true,\n \"effect\": {\n \"kind\": \"fetch\",\n \"produces\": {\n \"kind\": \"union\",\n \"of\": [\n {\n \"kind\": \"entity\"\n },\n {\n \"kind\": \"array\",\n \"of\": {\n \"kind\": \"entity\"\n }\n }\n ]\n }\n }\n },\n \"fetch-stream\": {\n \"category\": \"effect\",\n \"minArity\": 1,\n \"maxArity\": 2,\n \"returnType\": \"void\",\n \"description\": \"Stream an LLM or HTTP response, emitting on_message per chunk, success on completion, failure on error\",\n \"module\": \"core\",\n \"hasSideEffects\": true,\n \"effect\": {\n \"kind\": \"fetch-stream\",\n \"produces\": {\n \"kind\": \"entity\"\n }\n }\n },\n \"fn\": {\n \"category\": \"control\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"function\",\n \"description\": \"Lambda expression (used for per-item renders and transforms)\",\n \"module\": \"core\"\n },\n \"format/bytes\": {\n \"category\": \"std-format\",\n \"minArity\": 1,\n \"maxArity\": 1,\n \"returnType\": \"string\",\n \"description\": \"Format bytes as human-readable size\",\n \"module\": \"format\"\n },\n \"format/creditCard\": {\n \"category\": \"std-format\",\n \"minArity\": 1,\n \"maxArity\": 1,\n \"returnType\": \"string\",\n \"description\": \"Format credit card with masked digits\",\n \"module\": \"format\"\n },\n \"format/currency\": {\n \"category\": \"std-format\",\n \"minArity\": 2,\n \"maxArity\": 3,\n \"returnType\": \"string\",\n \"description\": \"Format as currency\",\n \"module\": \"format\"\n },\n \"format/list\": {\n \"category\": \"std-format\",\n \"minArity\": 1,\n \"maxArity\": 2,\n \"returnType\": \"string\",\n \"description\": \"Format array as natural language list\",\n \"module\": \"format\"\n },\n \"format/number\": {\n \"category\": \"std-format\",\n \"minArity\": 1,\n \"maxArity\": 2,\n \"returnType\": \"string\",\n \"description\": \"Format number with locale-aware separators\",\n \"module\": \"format\"\n },\n \"format/ordinal\": {\n \"category\": \"std-format\",\n \"minArity\": 1,\n \"maxArity\": 1,\n \"returnType\": \"string\",\n \"description\": \"Format number as ordinal (1st, 2nd, 3rd)\",\n \"module\": \"format\"\n },\n \"format/percent\": {\n \"category\": \"std-format\",\n \"minArity\": 1,\n \"maxArity\": 2,\n \"returnType\": \"string\",\n \"description\": \"Format as percentage\",\n \"module\": \"format\"\n },\n \"format/phone\": {\n \"category\": \"std-format\",\n \"minArity\": 1,\n \"maxArity\": 2,\n \"returnType\": \"string\",\n \"description\": \"Format phone number\",\n \"module\": \"format\"\n },\n \"format/plural\": {\n \"category\": \"std-format\",\n \"minArity\": 3,\n \"maxArity\": 3,\n \"returnType\": \"string\",\n \"description\": \"Format count with singular/plural word\",\n \"module\": \"format\"\n },\n \"forward\": {\n \"category\": \"ml-effect\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"tensor\",\n \"description\": \"Run a forward pass through a model (ML effect)\",\n \"module\": \"nn\"\n },\n \"geo/aabb-overlap\": {\n \"category\": \"std-geo\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"boolean\",\n \"description\": \"Axis-aligned bounding box overlap test\",\n \"module\": \"geo\"\n },\n \"geo/circle-overlap\": {\n \"category\": \"std-geo\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"boolean\",\n \"description\": \"Circle overlap test: distance(centers) <= a.r+b.r\",\n \"module\": \"geo\"\n },\n \"geo/point-in-circle\": {\n \"category\": \"std-geo\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"boolean\",\n \"description\": \"Point containment in circle (inclusive)\",\n \"module\": \"geo\"\n },\n \"geo/point-in-rect\": {\n \"category\": \"std-geo\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"boolean\",\n \"description\": \"Point containment in rect (inclusive bounds)\",\n \"module\": \"geo\"\n },\n \"geo/rect-circle-overlap\": {\n \"category\": \"std-geo\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"boolean\",\n \"description\": \"Rect-circle overlap via closest point on rect to circle center\",\n \"module\": \"geo\"\n },\n \"geo/reflect\": {\n \"category\": \"std-geo\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"vector\",\n \"description\": \"Reflect vector v across normal n (assumed normalized)\",\n \"module\": \"geo\"\n },\n \"geo/segment-intersect\": {\n \"category\": \"std-geo\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"point | null\",\n \"description\": \"Intersection point of two segments, or null when parallel/none\",\n \"module\": \"geo\"\n },\n \"graph/add-self-loops\": {\n \"category\": \"ml-graph\",\n \"minArity\": 1,\n \"maxArity\": 1,\n \"returnType\": \"graph\",\n \"description\": \"Add self-loop edges to graph\",\n \"module\": \"graph\"\n },\n \"graph/batch\": {\n \"category\": \"ml-graph\",\n \"minArity\": 1,\n \"maxArity\": 1,\n \"returnType\": \"graph\",\n \"description\": \"Batch multiple graphs into one\",\n \"module\": \"graph\"\n },\n \"graph/degree\": {\n \"category\": \"ml-graph\",\n \"minArity\": 1,\n \"maxArity\": 1,\n \"returnType\": \"tensor\",\n \"description\": \"Get node degree tensor\",\n \"module\": \"graph\"\n },\n \"graph/edge-features\": {\n \"category\": \"ml-graph\",\n \"minArity\": 1,\n \"maxArity\": 1,\n \"returnType\": \"tensor\",\n \"description\": \"Get edge feature matrix\",\n \"module\": \"graph\"\n },\n \"graph/edge-index\": {\n \"category\": \"ml-graph\",\n \"minArity\": 1,\n \"maxArity\": 1,\n \"returnType\": \"tensor\",\n \"description\": \"Get edge index tensor\",\n \"module\": \"graph\"\n },\n \"graph/from-adjacency\": {\n \"category\": \"ml-graph\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"graph\",\n \"description\": \"Build graph from adjacency matrix and features\",\n \"module\": \"graph\"\n },\n \"graph/from-edge-list\": {\n \"category\": \"ml-graph\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"graph\",\n \"description\": \"Build graph from edge list and features\",\n \"module\": \"graph\"\n },\n \"graph/from-entities\": {\n \"category\": \"ml-graph\",\n \"minArity\": 1,\n \"maxArity\": 1,\n \"returnType\": \"graph\",\n \"description\": \"Build PyG graph from entity collections\",\n \"module\": \"graph\"\n },\n \"graph/k-hop\": {\n \"category\": \"ml-graph\",\n \"minArity\": 3,\n \"maxArity\": 3,\n \"returnType\": \"graph\",\n \"description\": \"K-hop neighborhood subgraph\",\n \"module\": \"graph\"\n },\n \"graph/node-features\": {\n \"category\": \"ml-graph\",\n \"minArity\": 1,\n \"maxArity\": 1,\n \"returnType\": \"tensor\",\n \"description\": \"Get node feature matrix\",\n \"module\": \"graph\"\n },\n \"graph/num-edges\": {\n \"category\": \"ml-graph\",\n \"minArity\": 1,\n \"maxArity\": 1,\n \"returnType\": \"number\",\n \"description\": \"Get edge count\",\n \"module\": \"graph\"\n },\n \"graph/num-nodes\": {\n \"category\": \"ml-graph\",\n \"minArity\": 1,\n \"maxArity\": 1,\n \"returnType\": \"number\",\n \"description\": \"Get node count\",\n \"module\": \"graph\"\n },\n \"graph/subgraph\": {\n \"category\": \"ml-graph\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"graph\",\n \"description\": \"Extract subgraph by node mask\",\n \"module\": \"graph\"\n },\n \"graph/to-undirected\": {\n \"category\": \"ml-graph\",\n \"minArity\": 1,\n \"maxArity\": 1,\n \"returnType\": \"graph\",\n \"description\": \"Convert directed graph to undirected\",\n \"module\": \"graph\"\n },\n \"grid/cells-in-radius\": {\n \"category\": \"std-grid\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"array\",\n \"description\": \"All cells within Euclidean radius r (row-major order)\",\n \"module\": \"grid\"\n },\n \"grid/distance\": {\n \"category\": \"std-grid\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"number\",\n \"description\": \"Chebyshev distance max(|dx|,|dy|)\",\n \"module\": \"grid\"\n },\n \"grid/from-world\": {\n \"category\": \"std-grid\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"cell\",\n \"description\": \"World point to grid cell (floor)\",\n \"module\": \"grid\"\n },\n \"grid/in-bounds\": {\n \"category\": \"std-grid\",\n \"minArity\": 3,\n \"maxArity\": 3,\n \"returnType\": \"boolean\",\n \"description\": \"Whether cell lies within a w×h grid\",\n \"module\": \"grid\"\n },\n \"grid/iso-to-screen\": {\n \"category\": \"std-grid\",\n \"minArity\": 3,\n \"maxArity\": 3,\n \"returnType\": \"point\",\n \"description\": \"Isometric cell to screen point\",\n \"module\": \"grid\"\n },\n \"grid/line\": {\n \"category\": \"std-grid\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"array\",\n \"description\": \"Bresenham line cells from a to b, inclusive, in step order\",\n \"module\": \"grid\"\n },\n \"grid/manhattan-distance\": {\n \"category\": \"std-grid\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"number\",\n \"description\": \"Manhattan distance |dx|+|dy|\",\n \"module\": \"grid\"\n },\n \"grid/neighbors\": {\n \"category\": \"std-grid\",\n \"minArity\": 1,\n \"maxArity\": 2,\n \"returnType\": \"array\",\n \"description\": \"Adjacent cells in order N,E,S,W (+NE,SE,SW,NW if diagonal)\",\n \"module\": \"grid\"\n },\n \"grid/screen-to-iso\": {\n \"category\": \"std-grid\",\n \"minArity\": 3,\n \"maxArity\": 3,\n \"returnType\": \"point\",\n \"description\": \"Screen point to isometric cell coordinates\",\n \"module\": \"grid\"\n },\n \"grid/to-world\": {\n \"category\": \"std-grid\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"point\",\n \"description\": \"Cell to world-space center point\",\n \"module\": \"grid\"\n },\n \"if\": {\n \"category\": \"logic\",\n \"minArity\": 3,\n \"maxArity\": 3,\n \"returnType\": \"any\",\n \"description\": \"Conditional expression (ternary). Return type is union of branch types.\",\n \"module\": \"core\",\n \"returnSemantics\": \"branch-union\"\n },\n \"integration/github-create-issue\": {\n \"category\": \"std-integration\",\n \"minArity\": 3,\n \"maxArity\": 3,\n \"returnType\": \"object\",\n \"description\": \"Create a GitHub issue. Typed wrapper for the GitHub API.\",\n \"module\": \"integration\",\n \"hasSideEffects\": true\n },\n \"integration/github-get-repo\": {\n \"category\": \"std-integration\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"object\",\n \"description\": \"Get a GitHub repository. Typed wrapper for the GitHub API.\",\n \"module\": \"integration\",\n \"hasSideEffects\": true\n },\n \"integration/http\": {\n \"category\": \"std-integration\",\n \"minArity\": 3,\n \"maxArity\": 4,\n \"returnType\": \"object\",\n \"description\": \"HTTP request with caller-declared response schema. Validates the response against the schema before returning.\",\n \"module\": \"integration\",\n \"hasSideEffects\": true\n },\n \"let\": {\n \"category\": \"control\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"any\",\n \"description\": \"Bind local variables for a body expression\",\n \"module\": \"core\"\n },\n \"list\": {\n \"category\": \"control\",\n \"minArity\": 0,\n \"maxArity\": null,\n \"returnType\": \"array\",\n \"description\": \"Literal array constructor — evaluates each argument and returns them as an array. Lowering wraps a literal list bound for a literal-array slot in `list` so it is unambiguously data, never a call (disambiguates a list whose first element collides with an operator name, e.g. [path method …]).\",\n \"module\": \"core\"\n },\n \"llm/call-tools\": {\n \"category\": \"std-llm\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"LlmCallToolsResult\",\n \"description\": \"Call the LLM with tool definitions. Returns the assistant response with optional tool calls and token usage.\",\n \"module\": \"llm\",\n \"hasSideEffects\": true\n },\n \"llm/compact\": {\n \"category\": \"std-llm\",\n \"minArity\": 0,\n \"maxArity\": 1,\n \"returnType\": \"object\",\n \"description\": \"Compact the context window. Returns before/after token counts.\",\n \"module\": \"llm\",\n \"hasSideEffects\": true\n },\n \"llm/embed\": {\n \"category\": \"std-llm\",\n \"minArity\": 1,\n \"maxArity\": 1,\n \"returnType\": \"array\",\n \"description\": \"Generate embeddings for an array of texts. Returns a 2D array of floats.\",\n \"module\": \"llm\",\n \"hasSideEffects\": true\n },\n \"llm/generate\": {\n \"category\": \"std-llm\",\n \"minArity\": 1,\n \"maxArity\": 2,\n \"returnType\": \"string\",\n \"description\": \"Generate text from an LLM. Returns the generated string.\",\n \"module\": \"llm\",\n \"hasSideEffects\": true\n },\n \"llm/switch\": {\n \"category\": \"std-llm\",\n \"minArity\": 1,\n \"maxArity\": 2,\n \"returnType\": \"void\",\n \"description\": \"Switch the active LLM provider and optionally the model.\",\n \"module\": \"llm\",\n \"hasSideEffects\": true\n },\n \"llm/token-count\": {\n \"category\": \"std-llm\",\n \"minArity\": 0,\n \"maxArity\": 0,\n \"returnType\": \"number\",\n \"description\": \"Get the current token count in the context window.\",\n \"module\": \"llm\"\n },\n \"log\": {\n \"category\": \"effect\",\n \"minArity\": 1,\n \"maxArity\": 1,\n \"returnType\": \"void\",\n \"description\": \"Emit a structured info log line (compiled + runtime)\",\n \"module\": \"core\",\n \"hasSideEffects\": true,\n \"effect\": {\n \"kind\": \"log\"\n }\n },\n \"lolo/emit-body\": {\n \"category\": \"std-behavior\",\n \"minArity\": 3,\n \"maxArity\": 3,\n \"returnType\": \"LoloEmitResult\",\n \"description\": \"Emit a .lolo orbital body from the LLM (free-lolo path). Returns the emitted lolo source.\",\n \"module\": \"behavior\",\n \"hasSideEffects\": true\n },\n \"math/abs\": {\n \"category\": \"std-math\",\n \"minArity\": 1,\n \"maxArity\": 1,\n \"returnType\": \"number\",\n \"description\": \"Absolute value\",\n \"module\": \"math\"\n },\n \"math/acos\": {\n \"category\": \"std-math\",\n \"minArity\": 1,\n \"maxArity\": 1,\n \"returnType\": \"number\",\n \"description\": \"Arccosine (inverse cosine) in radians\",\n \"module\": \"math\"\n },\n \"math/approach\": {\n \"category\": \"std-math\",\n \"minArity\": 3,\n \"maxArity\": 3,\n \"returnType\": \"number\",\n \"description\": \"Move cur toward target by at most maxDelta\",\n \"module\": \"math\"\n },\n \"math/asin\": {\n \"category\": \"std-math\",\n \"minArity\": 1,\n \"maxArity\": 1,\n \"returnType\": \"number\",\n \"description\": \"Arcsine (inverse sine) in radians\",\n \"module\": \"math\"\n },\n \"math/atan\": {\n \"category\": \"std-math\",\n \"minArity\": 1,\n \"maxArity\": 1,\n \"returnType\": \"number\",\n \"description\": \"Arctangent (inverse tangent) in radians\",\n \"module\": \"math\"\n },\n \"math/atan2\": {\n \"category\": \"std-math\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"number\",\n \"description\": \"Angle in radians from the positive x-axis to point (x, y)\",\n \"module\": \"math\"\n },\n \"math/ceil\": {\n \"category\": \"std-math\",\n \"minArity\": 1,\n \"maxArity\": 1,\n \"returnType\": \"number\",\n \"description\": \"Round up to integer\",\n \"module\": \"math\"\n },\n \"math/clamp\": {\n \"category\": \"std-math\",\n \"minArity\": 3,\n \"maxArity\": 3,\n \"returnType\": \"number\",\n \"description\": \"Constrain value to range [min, max]\",\n \"module\": \"math\"\n },\n \"math/cos\": {\n \"category\": \"std-math\",\n \"minArity\": 1,\n \"maxArity\": 1,\n \"returnType\": \"number\",\n \"description\": \"Cosine of an angle in radians\",\n \"module\": \"math\"\n },\n \"math/default\": {\n \"category\": \"std-math\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"number\",\n \"description\": \"Return default if value is null, undefined, or NaN\",\n \"module\": \"math\"\n },\n \"math/deg-rad\": {\n \"category\": \"std-math\",\n \"minArity\": 1,\n \"maxArity\": 1,\n \"returnType\": \"number\",\n \"description\": \"Convert degrees to radians\",\n \"module\": \"math\"\n },\n \"math/floor\": {\n \"category\": \"std-math\",\n \"minArity\": 1,\n \"maxArity\": 1,\n \"returnType\": \"number\",\n \"description\": \"Round down to integer\",\n \"module\": \"math\"\n },\n \"math/hypot\": {\n \"category\": \"std-math\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"number\",\n \"description\": \"Euclidean length sqrt(a²+b²)\",\n \"module\": \"math\"\n },\n \"math/lerp\": {\n \"category\": \"std-math\",\n \"minArity\": 3,\n \"maxArity\": 3,\n \"returnType\": \"number\",\n \"description\": \"Linear interpolation between a and b by factor t\",\n \"module\": \"math\"\n },\n \"math/map\": {\n \"category\": \"std-math\",\n \"minArity\": 5,\n \"maxArity\": 5,\n \"returnType\": \"number\",\n \"description\": \"Map value from one range to another\",\n \"module\": \"math\"\n },\n \"math/max\": {\n \"category\": \"std-math\",\n \"minArity\": 2,\n \"maxArity\": null,\n \"returnType\": \"number\",\n \"description\": \"Maximum of values\",\n \"module\": \"math\"\n },\n \"math/min\": {\n \"category\": \"std-math\",\n \"minArity\": 2,\n \"maxArity\": null,\n \"returnType\": \"number\",\n \"description\": \"Minimum of values\",\n \"module\": \"math\"\n },\n \"math/mod\": {\n \"category\": \"std-math\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"number\",\n \"description\": \"Modulo (remainder)\",\n \"module\": \"math\"\n },\n \"math/pow\": {\n \"category\": \"std-math\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"number\",\n \"description\": \"Exponentiation (base^exp)\",\n \"module\": \"math\"\n },\n \"math/rad-deg\": {\n \"category\": \"std-math\",\n \"minArity\": 1,\n \"maxArity\": 1,\n \"returnType\": \"number\",\n \"description\": \"Convert radians to degrees\",\n \"module\": \"math\"\n },\n \"math/random\": {\n \"category\": \"std-math\",\n \"minArity\": 0,\n \"maxArity\": 0,\n \"returnType\": \"number\",\n \"description\": \"Random number between 0 (inclusive) and 1 (exclusive)\",\n \"module\": \"math\"\n },\n \"math/randomInt\": {\n \"category\": \"std-math\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"number\",\n \"description\": \"Random integer in range [min, max] (inclusive)\",\n \"module\": \"math\"\n },\n \"math/round\": {\n \"category\": \"std-math\",\n \"minArity\": 1,\n \"maxArity\": 2,\n \"returnType\": \"number\",\n \"description\": \"Round to nearest integer or specified decimals\",\n \"module\": \"math\"\n },\n \"math/sign\": {\n \"category\": \"std-math\",\n \"minArity\": 1,\n \"maxArity\": 1,\n \"returnType\": \"number\",\n \"description\": \"Returns -1, 0, or 1 indicating sign\",\n \"module\": \"math\"\n },\n \"math/sin\": {\n \"category\": \"std-math\",\n \"minArity\": 1,\n \"maxArity\": 1,\n \"returnType\": \"number\",\n \"description\": \"Sine of an angle in radians\",\n \"module\": \"math\"\n },\n \"math/sqrt\": {\n \"category\": \"std-math\",\n \"minArity\": 1,\n \"maxArity\": 1,\n \"returnType\": \"number\",\n \"description\": \"Square root\",\n \"module\": \"math\"\n },\n \"math/tan\": {\n \"category\": \"std-math\",\n \"minArity\": 1,\n \"maxArity\": 1,\n \"returnType\": \"number\",\n \"description\": \"Tangent of an angle in radians\",\n \"module\": \"math\"\n },\n \"math/wrap\": {\n \"category\": \"std-math\",\n \"minArity\": 3,\n \"maxArity\": 3,\n \"returnType\": \"number\",\n \"description\": \"Wrap a value into the half-open range [min, max)\",\n \"module\": \"math\"\n },\n \"memory/list\": {\n \"category\": \"std-memory\",\n \"minArity\": 0,\n \"maxArity\": 1,\n \"returnType\": \"array\",\n \"description\": \"List all memories, optionally filtered by category.\",\n \"module\": \"memory\"\n },\n \"memory/recall\": {\n \"category\": \"std-memory\",\n \"minArity\": 1,\n \"maxArity\": 2,\n \"returnType\": \"array\",\n \"description\": \"Search memories by semantic query. Returns matching memory records.\",\n \"module\": \"memory\"\n },\n \"memory/store\": {\n \"category\": \"std-memory\",\n \"minArity\": 2,\n \"maxArity\": 3,\n \"returnType\": \"string\",\n \"description\": \"Store a new memory. Returns the new memory ID.\",\n \"module\": \"memory\",\n \"hasSideEffects\": true\n },\n \"navigate\": {\n \"category\": \"effect\",\n \"minArity\": 1,\n \"maxArity\": 2,\n \"returnType\": \"void\",\n \"description\": \"Navigate to a route\",\n \"module\": \"core\",\n \"hasSideEffects\": true,\n \"effect\": {\n \"kind\": \"navigate\"\n }\n },\n \"nn/batchnorm\": {\n \"category\": \"ml-arch\",\n \"minArity\": 1,\n \"maxArity\": 1,\n \"returnType\": \"nn/layer\",\n \"description\": \"Batch normalization layer\",\n \"module\": \"nn\"\n },\n \"nn/clone\": {\n \"category\": \"ml-arch\",\n \"minArity\": 1,\n \"maxArity\": 1,\n \"returnType\": \"nn/module\",\n \"description\": \"Create a deep copy of the network with same weights\",\n \"module\": \"nn\"\n },\n \"nn/dropout\": {\n \"category\": \"ml-arch\",\n \"minArity\": 0,\n \"maxArity\": 1,\n \"returnType\": \"nn/layer\",\n \"description\": \"Dropout layer for regularization (randomly zeros elements during training)\",\n \"module\": \"nn\"\n },\n \"nn/forward\": {\n \"category\": \"ml-effect\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"tensor\",\n \"description\": \"Execute forward pass through network\",\n \"module\": \"nn\"\n },\n \"nn/getWeights\": {\n \"category\": \"ml-arch\",\n \"minArity\": 1,\n \"maxArity\": 1,\n \"returnType\": \"tensor\",\n \"description\": \"Get network weights as a flat tensor\",\n \"module\": \"nn\"\n },\n \"nn/layernorm\": {\n \"category\": \"ml-arch\",\n \"minArity\": 1,\n \"maxArity\": 1,\n \"returnType\": \"nn/layer\",\n \"description\": \"Layer normalization\",\n \"module\": \"nn\"\n },\n \"nn/linear\": {\n \"category\": \"ml-arch\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"nn/layer\",\n \"description\": \"Fully connected linear layer (output = input * weights + bias)\",\n \"module\": \"nn\"\n },\n \"nn/paramCount\": {\n \"category\": \"ml-arch\",\n \"minArity\": 1,\n \"maxArity\": 1,\n \"returnType\": \"number\",\n \"description\": \"Get total number of trainable parameters\",\n \"module\": \"nn\"\n },\n \"nn/relu\": {\n \"category\": \"ml-arch\",\n \"minArity\": 0,\n \"maxArity\": 0,\n \"returnType\": \"nn/layer\",\n \"description\": \"ReLU activation function: max(0, x)\",\n \"module\": \"nn\"\n },\n \"nn/sequential\": {\n \"category\": \"ml-arch\",\n \"minArity\": 1,\n \"maxArity\": null,\n \"returnType\": \"nn/module\",\n \"description\": \"Create a sequential neural network from layers\",\n \"module\": \"nn\"\n },\n \"nn/setWeights\": {\n \"category\": \"ml-arch\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"nn/module\",\n \"description\": \"Set network weights from a flat tensor\",\n \"module\": \"nn\",\n \"hasSideEffects\": true\n },\n \"nn/sigmoid\": {\n \"category\": \"ml-arch\",\n \"minArity\": 0,\n \"maxArity\": 0,\n \"returnType\": \"nn/layer\",\n \"description\": \"Sigmoid activation function: 1 / (1 + e^-x)\",\n \"module\": \"nn\"\n },\n \"nn/softmax\": {\n \"category\": \"ml-arch\",\n \"minArity\": 0,\n \"maxArity\": 1,\n \"returnType\": \"nn/layer\",\n \"description\": \"Softmax activation function (normalizes to probability distribution)\",\n \"module\": \"nn\"\n },\n \"nn/tanh\": {\n \"category\": \"ml-arch\",\n \"minArity\": 0,\n \"maxArity\": 0,\n \"returnType\": \"nn/layer\",\n \"description\": \"Tanh activation function: (e^x - e^-x) / (e^x + e^-x)\",\n \"module\": \"nn\"\n },\n \"noise/fbm\": {\n \"category\": \"std-noise\",\n \"minArity\": 3,\n \"maxArity\": 4,\n \"returnType\": \"number\",\n \"description\": \"Fractal Brownian motion: summed perlin octaves (clamped 1..8); output [-1,1]\",\n \"module\": \"noise\"\n },\n \"noise/perlin\": {\n \"category\": \"std-noise\",\n \"minArity\": 2,\n \"maxArity\": 3,\n \"returnType\": \"number\",\n \"description\": \"2D Perlin noise at (x,y) with optional seed; output [-1,1]\",\n \"module\": \"noise\"\n },\n \"noise/simplex\": {\n \"category\": \"std-noise\",\n \"minArity\": 2,\n \"maxArity\": 3,\n \"returnType\": \"number\",\n \"description\": \"Value-coherent noise (perlin-derived) at (x,y) with optional seed; output [-1,1]\",\n \"module\": \"noise\"\n },\n \"not\": {\n \"category\": \"logic\",\n \"minArity\": 1,\n \"maxArity\": 1,\n \"returnType\": \"boolean\",\n \"description\": \"Logical NOT\",\n \"module\": \"core\"\n },\n \"notify\": {\n \"category\": \"effect\",\n \"minArity\": 1,\n \"maxArity\": 2,\n \"returnType\": \"void\",\n \"description\": \"Show a notification (in-app, email, push, sms)\",\n \"module\": \"core\",\n \"hasSideEffects\": true,\n \"effect\": {\n \"kind\": \"notify\"\n }\n },\n \"object/clone\": {\n \"category\": \"std-object\",\n \"minArity\": 1,\n \"maxArity\": 1,\n \"returnType\": \"any\",\n \"description\": \"Shallow clone object\",\n \"module\": \"object\"\n },\n \"object/deepClone\": {\n \"category\": \"std-object\",\n \"minArity\": 1,\n \"maxArity\": 1,\n \"returnType\": \"any\",\n \"description\": \"Deep clone object\",\n \"module\": \"object\"\n },\n \"object/deepMerge\": {\n \"category\": \"std-object\",\n \"minArity\": 2,\n \"maxArity\": null,\n \"returnType\": \"any\",\n \"description\": \"Deep merge objects (later wins)\",\n \"module\": \"object\"\n },\n \"object/empty?\": {\n \"category\": \"std-object\",\n \"minArity\": 1,\n \"maxArity\": 1,\n \"returnType\": \"boolean\",\n \"description\": \"Check if object has no keys\",\n \"module\": \"object\"\n },\n \"object/entries\": {\n \"category\": \"std-object\",\n \"minArity\": 1,\n \"maxArity\": 1,\n \"returnType\": \"array\",\n \"description\": \"Get [key, value] pairs as array\",\n \"module\": \"object\"\n },\n \"object/equals\": {\n \"category\": \"std-object\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"boolean\",\n \"description\": \"Deep equality check\",\n \"module\": \"object\"\n },\n \"object/filter\": {\n \"category\": \"std-object\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"any\",\n \"description\": \"Filter entries by predicate\",\n \"module\": \"object\"\n },\n \"object/fromEntries\": {\n \"category\": \"std-object\",\n \"minArity\": 1,\n \"maxArity\": 1,\n \"returnType\": \"any\",\n \"description\": \"Create object from [key, value] pairs\",\n \"module\": \"object\"\n },\n \"object/get\": {\n \"category\": \"std-object\",\n \"minArity\": 2,\n \"maxArity\": 3,\n \"returnType\": \"any\",\n \"description\": \"Get nested value by path (return type derived from input object shape and key)\",\n \"module\": \"object\",\n \"returnSemantics\": \"object-key-lookup\"\n },\n \"object/has\": {\n \"category\": \"std-object\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"boolean\",\n \"description\": \"Check if path exists\",\n \"module\": \"object\"\n },\n \"object/keys\": {\n \"category\": \"std-object\",\n \"minArity\": 1,\n \"maxArity\": 1,\n \"returnType\": \"array\",\n \"description\": \"Get object keys as array\",\n \"module\": \"object\"\n },\n \"object/mapKeys\": {\n \"category\": \"std-object\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"any\",\n \"description\": \"Transform all keys\",\n \"module\": \"object\"\n },\n \"object/mapValues\": {\n \"category\": \"std-object\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"any\",\n \"description\": \"Transform all values\",\n \"module\": \"object\"\n },\n \"object/merge\": {\n \"category\": \"std-object\",\n \"minArity\": 2,\n \"maxArity\": null,\n \"returnType\": \"any\",\n \"description\": \"Shallow merge objects (later wins)\",\n \"module\": \"object\"\n },\n \"object/omit\": {\n \"category\": \"std-object\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"any\",\n \"description\": \"Exclude specified keys\",\n \"module\": \"object\"\n },\n \"object/pick\": {\n \"category\": \"std-object\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"any\",\n \"description\": \"Select only specified keys (return type is subset of input object shape)\",\n \"module\": \"object\",\n \"returnSemantics\": \"object-key-lookup\"\n },\n \"object/set\": {\n \"category\": \"std-object\",\n \"minArity\": 3,\n \"maxArity\": 3,\n \"returnType\": \"any\",\n \"description\": \"Set nested value by path (returns new object)\",\n \"module\": \"object\"\n },\n \"object/values\": {\n \"category\": \"std-object\",\n \"minArity\": 1,\n \"maxArity\": 1,\n \"returnType\": \"array\",\n \"description\": \"Get object values as array\",\n \"module\": \"object\"\n },\n \"or\": {\n \"category\": \"logic\",\n \"minArity\": 2,\n \"maxArity\": null,\n \"returnType\": \"boolean\",\n \"description\": \"Logical OR (returns the first truthy value, NOT a boolean — short-circuit)\",\n \"module\": \"core\",\n \"returnSemantics\": \"first-truthy-of-args\"\n },\n \"os/debounce\": {\n \"category\": \"std-os\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"void\",\n \"description\": \"Configure debounce interval for an OS event type. Prevents trigger storms during rapid changes.\",\n \"module\": \"os\",\n \"hasSideEffects\": true\n },\n \"os/watch-cron\": {\n \"category\": \"std-os\",\n \"minArity\": 1,\n \"maxArity\": 1,\n \"returnType\": \"void\",\n \"description\": \"Register cron schedule. Emits OS_CRON_FIRE events with { expression, timestamp } payload.\",\n \"module\": \"os\",\n \"hasSideEffects\": true\n },\n \"os/watch-env\": {\n \"category\": \"std-os\",\n \"minArity\": 1,\n \"maxArity\": 1,\n \"returnType\": \"void\",\n \"description\": \"Register environment variable watcher. Emits OS_ENV_CHANGED events with { variable, oldValue, newValue } payload.\",\n \"module\": \"os\",\n \"hasSideEffects\": true\n },\n \"os/watch-files\": {\n \"category\": \"std-os\",\n \"minArity\": 1,\n \"maxArity\": 2,\n \"returnType\": \"void\",\n \"description\": \"Register file system watcher. Emits OS_FILE_MODIFIED, OS_FILE_CREATED, OS_FILE_DELETED events with { path, name, dir, timestamp } payload.\",\n \"module\": \"os\",\n \"hasSideEffects\": true\n },\n \"os/watch-http\": {\n \"category\": \"std-os\",\n \"minArity\": 1,\n \"maxArity\": 2,\n \"returnType\": \"void\",\n \"description\": \"Register HTTP response interceptor. Emits OS_HTTP_RESPONSE events with { url, method, status, headers, body, duration } payload.\",\n \"module\": \"os\",\n \"hasSideEffects\": true\n },\n \"os/watch-port\": {\n \"category\": \"std-os\",\n \"minArity\": 1,\n \"maxArity\": 2,\n \"returnType\": \"void\",\n \"description\": \"Register port monitor. Emits OS_PORT_OPENED, OS_PORT_CLOSED events with { port, protocol, pid, address } payload.\",\n \"module\": \"os\",\n \"hasSideEffects\": true\n },\n \"os/watch-process\": {\n \"category\": \"std-os\",\n \"minArity\": 1,\n \"maxArity\": 2,\n \"returnType\": \"void\",\n \"description\": \"Register process monitor. Emits OS_PROCESS_EXITED, OS_PROCESS_STARTED events with { pid, name, exitCode, signal, args, duration } payload.\",\n \"module\": \"os\",\n \"hasSideEffects\": true\n },\n \"os/watch-signal\": {\n \"category\": \"std-os\",\n \"minArity\": 1,\n \"maxArity\": 1,\n \"returnType\": \"void\",\n \"description\": \"Register OS signal handler. Emits OS_SIGNAL_USR1, OS_SIGNAL_HUP, etc. with { pid, timestamp } payload.\",\n \"module\": \"os\",\n \"hasSideEffects\": true\n },\n \"path\": {\n \"category\": \"std-object\",\n \"minArity\": 1,\n \"maxArity\": null,\n \"returnType\": \"string\",\n \"description\": \"Build a dot-separated path string from segments. Used with set effect for dynamic field paths.\",\n \"module\": \"object\"\n },\n \"path/astar\": {\n \"category\": \"std-path\",\n \"minArity\": 5,\n \"maxArity\": 6,\n \"returnType\": \"array\",\n \"description\": \"A* shortest path on a w×h grid; returns cells start→goal (incl. both) or [] if none\",\n \"module\": \"path\"\n },\n \"path/reachable\": {\n \"category\": \"std-path\",\n \"minArity\": 5,\n \"maxArity\": 6,\n \"returnType\": \"array\",\n \"description\": \"BFS cells reachable within N moves from start (incl. start); sorted row-major\",\n \"module\": \"path\"\n },\n \"persist\": {\n \"category\": \"effect\",\n \"minArity\": 2,\n \"maxArity\": 4,\n \"returnType\": \"void\",\n \"description\": \"Create, update, delete, clear, or batch entity records. Optional trailing { emit: { success, failure } } options object attaches closed-circuit emit routing.\",\n \"module\": \"core\",\n \"hasSideEffects\": true,\n \"effect\": {\n \"kind\": \"persist\",\n \"produces\": {\n \"kind\": \"union\",\n \"of\": [\n {\n \"kind\": \"entity\"\n },\n {\n \"kind\": \"object\",\n \"fields\": {\n \"id\": \"string\",\n \"deleted\": \"boolean\"\n },\n \"open\": false\n },\n {\n \"kind\": \"object\",\n \"fields\": {\n \"operations\": {\n \"kind\": \"array\",\n \"of\": \"any\"\n },\n \"completedCount\": \"number\",\n \"totalCount\": \"number\"\n },\n \"open\": false\n }\n ]\n }\n }\n },\n \"prob/beta\": {\n \"category\": \"std-prob\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"number\",\n \"description\": \"Sample from a Beta(alpha, beta) distribution\",\n \"module\": \"prob\"\n },\n \"prob/categorical\": {\n \"category\": \"std-prob\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"any\",\n \"description\": \"Weighted random selection from items\",\n \"module\": \"prob\"\n },\n \"prob/condition\": {\n \"category\": \"std-prob\",\n \"minArity\": 1,\n \"maxArity\": 1,\n \"returnType\": \"void\",\n \"description\": \"Mark current sample as rejected if predicate is false\",\n \"module\": \"prob\",\n \"hasSideEffects\": true\n },\n \"prob/credible-interval\": {\n \"category\": \"std-prob\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"array\",\n \"description\": \"Compute symmetric credible interval from samples\",\n \"module\": \"prob\"\n },\n \"prob/expected-value\": {\n \"category\": \"std-prob\",\n \"minArity\": 1,\n \"maxArity\": 1,\n \"returnType\": \"number\",\n \"description\": \"Mean of numeric samples\",\n \"module\": \"prob\"\n },\n \"prob/flip\": {\n \"category\": \"std-prob\",\n \"minArity\": 1,\n \"maxArity\": 1,\n \"returnType\": \"boolean\",\n \"description\": \"Bernoulli trial: returns true with probability p\",\n \"module\": \"prob\"\n },\n \"prob/gaussian\": {\n \"category\": \"std-prob\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"number\",\n \"description\": \"Sample from a Gaussian (normal) distribution\",\n \"module\": \"prob\"\n },\n \"prob/histogram\": {\n \"category\": \"std-prob\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"object\",\n \"description\": \"Bin numeric samples into a histogram\",\n \"module\": \"prob\"\n },\n \"prob/infer\": {\n \"category\": \"std-prob\",\n \"minArity\": 4,\n \"maxArity\": 4,\n \"returnType\": \"object\",\n \"description\": \"Like posterior but returns {mean, variance, samples, acceptRate}\",\n \"module\": \"prob\"\n },\n \"prob/percentile\": {\n \"category\": \"std-prob\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"number\",\n \"description\": \"Get the p-th percentile (0-100) from samples\",\n \"module\": \"prob\"\n },\n \"prob/poisson\": {\n \"category\": \"std-prob\",\n \"minArity\": 1,\n \"maxArity\": 1,\n \"returnType\": \"number\",\n \"description\": \"Sample from a Poisson distribution\",\n \"module\": \"prob\"\n },\n \"prob/posterior\": {\n \"category\": \"std-prob\",\n \"minArity\": 4,\n \"maxArity\": 4,\n \"returnType\": \"array\",\n \"description\": \"Rejection sampling: returns accepted query values\",\n \"module\": \"prob\"\n },\n \"prob/sample\": {\n \"category\": \"std-prob\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"array\",\n \"description\": \"Evaluate an expression n times and collect results\",\n \"module\": \"prob\"\n },\n \"prob/seed\": {\n \"category\": \"std-prob\",\n \"minArity\": 1,\n \"maxArity\": 1,\n \"returnType\": \"void\",\n \"description\": \"Set seeded PRNG for deterministic probabilistic sampling\",\n \"module\": \"prob\",\n \"hasSideEffects\": true\n },\n \"prob/uniform\": {\n \"category\": \"std-prob\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"number\",\n \"description\": \"Sample from a uniform distribution [lo, hi)\",\n \"module\": \"prob\"\n },\n \"prob/variance\": {\n \"category\": \"std-prob\",\n \"minArity\": 1,\n \"maxArity\": 1,\n \"returnType\": \"number\",\n \"description\": \"Population variance of numeric samples\",\n \"module\": \"prob\"\n },\n \"ref\": {\n \"category\": \"effect\",\n \"minArity\": 1,\n \"maxArity\": 2,\n \"returnType\": \"void\",\n \"description\": \"Reactive entity reference (deprecated, use fetch with listens in V2)\",\n \"module\": \"core\",\n \"hasSideEffects\": true,\n \"effect\": {\n \"kind\": \"ref\",\n \"produces\": {\n \"kind\": \"union\",\n \"of\": [\n {\n \"kind\": \"entity\"\n },\n {\n \"kind\": \"array\",\n \"of\": {\n \"kind\": \"entity\"\n }\n }\n ]\n }\n }\n },\n \"render-ui\": {\n \"category\": \"effect\",\n \"minArity\": 2,\n \"maxArity\": 3,\n \"returnType\": \"void\",\n \"description\": \"Render a pattern into a UI slot\",\n \"module\": \"core\",\n \"hasSideEffects\": true,\n \"effect\": {\n \"kind\": \"render-ui\"\n }\n },\n \"send-server\": {\n \"category\": \"effect\",\n \"minArity\": 1,\n \"maxArity\": 2,\n \"returnType\": \"void\",\n \"description\": \"Send an orbital event to the server over WebSocket (client-side; chat/real-time trigger)\",\n \"module\": \"core\",\n \"hasSideEffects\": true,\n \"effect\": {\n \"kind\": \"send-server\"\n }\n },\n \"session/append-history\": {\n \"category\": \"std-session\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"void\",\n \"description\": \"Append an entry to the per-orbital conversation history.\",\n \"module\": \"session\",\n \"hasSideEffects\": true\n },\n \"session/read-analysis\": {\n \"category\": \"std-session\",\n \"minArity\": 0,\n \"maxArity\": 0,\n \"returnType\": \"object\",\n \"description\": \"Read the pre-computed analysis result.\",\n \"module\": \"session\"\n },\n \"session/read-errors\": {\n \"category\": \"std-session\",\n \"minArity\": 1,\n \"maxArity\": 1,\n \"returnType\": \"array\",\n \"description\": \"Read validation errors for an orbital.\",\n \"module\": \"session\"\n },\n \"session/read-history\": {\n \"category\": \"std-session\",\n \"minArity\": 1,\n \"maxArity\": 1,\n \"returnType\": \"array\",\n \"description\": \"Read the per-orbital conversation history.\",\n \"module\": \"session\"\n },\n \"session/read-memory\": {\n \"category\": \"std-session\",\n \"minArity\": 1,\n \"maxArity\": 1,\n \"returnType\": \"object\",\n \"description\": \"Read the per-orbital memory from the session store.\",\n \"module\": \"session\"\n },\n \"session/read-spec\": {\n \"category\": \"std-session\",\n \"minArity\": 1,\n \"maxArity\": 1,\n \"returnType\": \"object\",\n \"description\": \"Read the per-orbital spec.json from the session store.\",\n \"module\": \"session\"\n },\n \"session/write-errors\": {\n \"category\": \"std-session\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"void\",\n \"description\": \"Write validation errors for an orbital.\",\n \"module\": \"session\",\n \"hasSideEffects\": true\n },\n \"session/write-memory\": {\n \"category\": \"std-session\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"void\",\n \"description\": \"Write per-orbital memory to the session store.\",\n \"module\": \"session\",\n \"hasSideEffects\": true\n },\n \"session/write-spec\": {\n \"category\": \"std-session\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"void\",\n \"description\": \"Write the per-orbital spec.json to the session store.\",\n \"module\": \"session\",\n \"hasSideEffects\": true\n },\n \"set\": {\n \"category\": \"effect\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"void\",\n \"description\": \"Set a binding to a value\",\n \"module\": \"core\",\n \"hasSideEffects\": true,\n \"effect\": {\n \"kind\": \"set\",\n \"produces\": \"any\",\n \"config\": {\n \"operation\": {\n \"kind\": \"union\",\n \"of\": [\n {\n \"kind\": \"literal\",\n \"value\": \"increment\"\n },\n {\n \"kind\": \"literal\",\n \"value\": \"decrement\"\n },\n {\n \"kind\": \"literal\",\n \"value\": \"multiply\"\n },\n {\n \"kind\": \"literal\",\n \"value\": \"append\"\n },\n {\n \"kind\": \"literal\",\n \"value\": \"remove\"\n }\n ]\n }\n }\n }\n },\n \"spawn\": {\n \"category\": \"effect\",\n \"minArity\": 1,\n \"maxArity\": 2,\n \"returnType\": \"void\",\n \"description\": \"Spawn a new entity instance (games)\",\n \"module\": \"core\",\n \"hasSideEffects\": true,\n \"effect\": {\n \"kind\": \"spawn\"\n }\n },\n \"str/camelCase\": {\n \"category\": \"std-str\",\n \"minArity\": 1,\n \"maxArity\": 1,\n \"returnType\": \"string\",\n \"description\": \"Convert to camelCase\",\n \"module\": \"str\"\n },\n \"str/capitalize\": {\n \"category\": \"std-str\",\n \"minArity\": 1,\n \"maxArity\": 1,\n \"returnType\": \"string\",\n \"description\": \"Capitalize first character\",\n \"module\": \"str\"\n },\n \"str/concat\": {\n \"category\": \"std-str\",\n \"minArity\": 1,\n \"maxArity\": 99,\n \"returnType\": \"string\",\n \"description\": \"Concatenate strings together\",\n \"module\": \"str\"\n },\n \"str/default\": {\n \"category\": \"std-str\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"string\",\n \"description\": \"Return default if value is null/undefined/empty\",\n \"module\": \"str\"\n },\n \"str/endsWith\": {\n \"category\": \"std-str\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"boolean\",\n \"description\": \"Check if string ends with suffix\",\n \"module\": \"str\"\n },\n \"str/includes\": {\n \"category\": \"std-str\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"boolean\",\n \"description\": \"Check if string contains substring\",\n \"module\": \"str\"\n },\n \"str/join\": {\n \"category\": \"std-str\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"string\",\n \"description\": \"Join array elements into string\",\n \"module\": \"str\"\n },\n \"str/kebabCase\": {\n \"category\": \"std-str\",\n \"minArity\": 1,\n \"maxArity\": 1,\n \"returnType\": \"string\",\n \"description\": \"Convert to kebab-case\",\n \"module\": \"str\"\n },\n \"str/len\": {\n \"category\": \"std-str\",\n \"minArity\": 1,\n \"maxArity\": 1,\n \"returnType\": \"number\",\n \"description\": \"String length\",\n \"module\": \"str\"\n },\n \"str/lower\": {\n \"category\": \"std-str\",\n \"minArity\": 1,\n \"maxArity\": 1,\n \"returnType\": \"string\",\n \"description\": \"Convert to lowercase\",\n \"module\": \"str\"\n },\n \"str/padEnd\": {\n \"category\": \"std-str\",\n \"minArity\": 2,\n \"maxArity\": 3,\n \"returnType\": \"string\",\n \"description\": \"Pad string from end to target length\",\n \"module\": \"str\"\n },\n \"str/padStart\": {\n \"category\": \"std-str\",\n \"minArity\": 2,\n \"maxArity\": 3,\n \"returnType\": \"string\",\n \"description\": \"Pad string from start to target length\",\n \"module\": \"str\"\n },\n \"str/repeat\": {\n \"category\": \"std-str\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"string\",\n \"description\": \"Repeat string n times\",\n \"module\": \"str\"\n },\n \"str/replace\": {\n \"category\": \"std-str\",\n \"minArity\": 3,\n \"maxArity\": 3,\n \"returnType\": \"string\",\n \"description\": \"Replace first occurrence\",\n \"module\": \"str\"\n },\n \"str/replaceAll\": {\n \"category\": \"std-str\",\n \"minArity\": 3,\n \"maxArity\": 3,\n \"returnType\": \"string\",\n \"description\": \"Replace all occurrences\",\n \"module\": \"str\"\n },\n \"str/reverse\": {\n \"category\": \"std-str\",\n \"minArity\": 1,\n \"maxArity\": 1,\n \"returnType\": \"string\",\n \"description\": \"Reverse string\",\n \"module\": \"str\"\n },\n \"str/slice\": {\n \"category\": \"std-str\",\n \"minArity\": 2,\n \"maxArity\": 3,\n \"returnType\": \"string\",\n \"description\": \"Extract substring\",\n \"module\": \"str\"\n },\n \"str/snakeCase\": {\n \"category\": \"std-str\",\n \"minArity\": 1,\n \"maxArity\": 1,\n \"returnType\": \"string\",\n \"description\": \"Convert to snake_case\",\n \"module\": \"str\"\n },\n \"str/split\": {\n \"category\": \"std-str\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"array\",\n \"description\": \"Split string into array by delimiter\",\n \"module\": \"str\"\n },\n \"str/startsWith\": {\n \"category\": \"std-str\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"boolean\",\n \"description\": \"Check if string starts with prefix\",\n \"module\": \"str\"\n },\n \"str/template\": {\n \"category\": \"std-str\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"string\",\n \"description\": \"Variable substitution in template string\",\n \"module\": \"str\"\n },\n \"str/titleCase\": {\n \"category\": \"std-str\",\n \"minArity\": 1,\n \"maxArity\": 1,\n \"returnType\": \"string\",\n \"description\": \"Convert to Title Case\",\n \"module\": \"str\"\n },\n \"str/trim\": {\n \"category\": \"std-str\",\n \"minArity\": 1,\n \"maxArity\": 1,\n \"returnType\": \"string\",\n \"description\": \"Remove leading and trailing whitespace\",\n \"module\": \"str\"\n },\n \"str/trimEnd\": {\n \"category\": \"std-str\",\n \"minArity\": 1,\n \"maxArity\": 1,\n \"returnType\": \"string\",\n \"description\": \"Remove trailing whitespace\",\n \"module\": \"str\"\n },\n \"str/trimStart\": {\n \"category\": \"std-str\",\n \"minArity\": 1,\n \"maxArity\": 1,\n \"returnType\": \"string\",\n \"description\": \"Remove leading whitespace\",\n \"module\": \"str\"\n },\n \"str/truncate\": {\n \"category\": \"std-str\",\n \"minArity\": 2,\n \"maxArity\": 3,\n \"returnType\": \"string\",\n \"description\": \"Truncate string with optional suffix\",\n \"module\": \"str\"\n },\n \"str/upper\": {\n \"category\": \"std-str\",\n \"minArity\": 1,\n \"maxArity\": 1,\n \"returnType\": \"string\",\n \"description\": \"Convert to uppercase\",\n \"module\": \"str\"\n },\n \"tensor/add\": {\n \"category\": \"ml-tensor\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"tensor\",\n \"description\": \"Element-wise addition\",\n \"module\": \"tensor\"\n },\n \"tensor/allInRange\": {\n \"category\": \"ml-tensor\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"boolean\",\n \"description\": \"Check if all elements are within range [min, max]\",\n \"module\": \"tensor\"\n },\n \"tensor/argmax\": {\n \"category\": \"ml-tensor\",\n \"minArity\": 1,\n \"maxArity\": 2,\n \"returnType\": \"number | tensor\",\n \"description\": \"Index of maximum value\",\n \"module\": \"tensor\"\n },\n \"tensor/cat\": {\n \"category\": \"ml-tensor\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"tensor\",\n \"description\": \"Concatenate two tensors along the last dimension\",\n \"module\": \"tensor\"\n },\n \"tensor/clamp\": {\n \"category\": \"ml-tensor\",\n \"minArity\": 3,\n \"maxArity\": 3,\n \"returnType\": \"tensor\",\n \"description\": \"Clamp all elements to range [min, max]\",\n \"module\": \"tensor\"\n },\n \"tensor/clampPerDim\": {\n \"category\": \"ml-tensor\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"tensor\",\n \"description\": \"Clamp each dimension to its specified range\",\n \"module\": \"tensor\"\n },\n \"tensor/div\": {\n \"category\": \"ml-tensor\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"tensor\",\n \"description\": \"Element-wise division\",\n \"module\": \"tensor\"\n },\n \"tensor/dot\": {\n \"category\": \"ml-tensor\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"number\",\n \"description\": \"Dot product of two 1D tensors\",\n \"module\": \"tensor\"\n },\n \"tensor/flatten\": {\n \"category\": \"ml-tensor\",\n \"minArity\": 1,\n \"maxArity\": 1,\n \"returnType\": \"tensor\",\n \"description\": \"Flatten tensor to 1D\",\n \"module\": \"tensor\"\n },\n \"tensor/from\": {\n \"category\": \"ml-tensor\",\n \"minArity\": 1,\n \"maxArity\": 1,\n \"returnType\": \"tensor\",\n \"description\": \"Create tensor from array\",\n \"module\": \"tensor\"\n },\n \"tensor/get\": {\n \"category\": \"ml-tensor\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"number\",\n \"description\": \"Get element at index\",\n \"module\": \"tensor\"\n },\n \"tensor/matmul\": {\n \"category\": \"ml-tensor\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"tensor\",\n \"description\": \"Matrix multiplication\",\n \"module\": \"tensor\"\n },\n \"tensor/max\": {\n \"category\": \"ml-tensor\",\n \"minArity\": 1,\n \"maxArity\": 2,\n \"returnType\": \"number | tensor\",\n \"description\": \"Maximum value in tensor\",\n \"module\": \"tensor\"\n },\n \"tensor/mean\": {\n \"category\": \"ml-tensor\",\n \"minArity\": 1,\n \"maxArity\": 2,\n \"returnType\": \"number | tensor\",\n \"description\": \"Mean of tensor elements\",\n \"module\": \"tensor\"\n },\n \"tensor/min\": {\n \"category\": \"ml-tensor\",\n \"minArity\": 1,\n \"maxArity\": 2,\n \"returnType\": \"number | tensor\",\n \"description\": \"Minimum value in tensor\",\n \"module\": \"tensor\"\n },\n \"tensor/mul\": {\n \"category\": \"ml-tensor\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"tensor\",\n \"description\": \"Element-wise multiplication\",\n \"module\": \"tensor\"\n },\n \"tensor/norm\": {\n \"category\": \"ml-tensor\",\n \"minArity\": 1,\n \"maxArity\": 2,\n \"returnType\": \"number\",\n \"description\": \"L2 norm of tensor\",\n \"module\": \"tensor\"\n },\n \"tensor/ones\": {\n \"category\": \"ml-tensor\",\n \"minArity\": 1,\n \"maxArity\": 1,\n \"returnType\": \"tensor\",\n \"description\": \"Create tensor filled with ones\",\n \"module\": \"tensor\"\n },\n \"tensor/outOfRangeDims\": {\n \"category\": \"ml-tensor\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"array\",\n \"description\": \"Get dimensions that exceed their specified ranges\",\n \"module\": \"tensor\"\n },\n \"tensor/outOfRangeIndices\": {\n \"category\": \"ml-tensor\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"number[]\",\n \"description\": \"Get indices of elements outside range\",\n \"module\": \"tensor\"\n },\n \"tensor/rand\": {\n \"category\": \"ml-tensor\",\n \"minArity\": 1,\n \"maxArity\": 1,\n \"returnType\": \"tensor\",\n \"description\": \"Create tensor with random values in [0, 1)\",\n \"module\": \"tensor\"\n },\n \"tensor/randn\": {\n \"category\": \"ml-tensor\",\n \"minArity\": 1,\n \"maxArity\": 1,\n \"returnType\": \"tensor\",\n \"description\": \"Create tensor with random values from standard normal distribution\",\n \"module\": \"tensor\"\n },\n \"tensor/reshape\": {\n \"category\": \"ml-tensor\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"tensor\",\n \"description\": \"Reshape tensor to new shape (total elements must match)\",\n \"module\": \"tensor\"\n },\n \"tensor/shape\": {\n \"category\": \"ml-tensor\",\n \"minArity\": 1,\n \"maxArity\": 1,\n \"returnType\": \"number[]\",\n \"description\": \"Get tensor shape as array\",\n \"module\": \"tensor\"\n },\n \"tensor/slice\": {\n \"category\": \"ml-tensor\",\n \"minArity\": 3,\n \"maxArity\": 3,\n \"returnType\": \"tensor\",\n \"description\": \"Get slice of tensor\",\n \"module\": \"tensor\"\n },\n \"tensor/squeeze\": {\n \"category\": \"ml-tensor\",\n \"minArity\": 1,\n \"maxArity\": 1,\n \"returnType\": \"tensor\",\n \"description\": \"Remove all dimensions of size one\",\n \"module\": \"tensor\"\n },\n \"tensor/stack\": {\n \"category\": \"ml-tensor\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"tensor\",\n \"description\": \"Stack two tensors along a new leading dimension\",\n \"module\": \"tensor\"\n },\n \"tensor/sub\": {\n \"category\": \"ml-tensor\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"tensor\",\n \"description\": \"Element-wise subtraction\",\n \"module\": \"tensor\"\n },\n \"tensor/sum\": {\n \"category\": \"ml-tensor\",\n \"minArity\": 1,\n \"maxArity\": 2,\n \"returnType\": \"number | tensor\",\n \"description\": \"Sum of tensor elements\",\n \"module\": \"tensor\"\n },\n \"tensor/toArray\": {\n \"category\": \"ml-tensor\",\n \"minArity\": 1,\n \"maxArity\": 1,\n \"returnType\": \"array\",\n \"description\": \"Convert tensor to nested array\",\n \"module\": \"tensor\"\n },\n \"tensor/toList\": {\n \"category\": \"ml-tensor\",\n \"minArity\": 1,\n \"maxArity\": 1,\n \"returnType\": \"number[]\",\n \"description\": \"Convert 1D tensor to flat array\",\n \"module\": \"tensor\"\n },\n \"tensor/transpose\": {\n \"category\": \"ml-tensor\",\n \"minArity\": 1,\n \"maxArity\": 3,\n \"returnType\": \"tensor\",\n \"description\": \"Transpose a tensor (optionally swapping two named dimensions)\",\n \"module\": \"tensor\"\n },\n \"tensor/unsqueeze\": {\n \"category\": \"ml-tensor\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"tensor\",\n \"description\": \"Insert a dimension of size one at the given position\",\n \"module\": \"tensor\"\n },\n \"tensor/zeros\": {\n \"category\": \"ml-tensor\",\n \"minArity\": 1,\n \"maxArity\": 1,\n \"returnType\": \"tensor\",\n \"description\": \"Create tensor filled with zeros\",\n \"module\": \"tensor\"\n },\n \"time/add\": {\n \"category\": \"std-time\",\n \"minArity\": 3,\n \"maxArity\": 3,\n \"returnType\": \"number\",\n \"description\": \"Add time to timestamp\",\n \"module\": \"time\"\n },\n \"time/day\": {\n \"category\": \"std-time\",\n \"minArity\": 1,\n \"maxArity\": 1,\n \"returnType\": \"number\",\n \"description\": \"Get day of month from timestamp (1-31)\",\n \"module\": \"time\"\n },\n \"time/diff\": {\n \"category\": \"std-time\",\n \"minArity\": 2,\n \"maxArity\": 3,\n \"returnType\": \"number\",\n \"description\": \"Difference between timestamps\",\n \"module\": \"time\"\n },\n \"time/duration\": {\n \"category\": \"std-time\",\n \"minArity\": 1,\n \"maxArity\": 1,\n \"returnType\": \"string\",\n \"description\": \"Format milliseconds as duration (\\\"2h 30m\\\")\",\n \"module\": \"time\"\n },\n \"time/endOf\": {\n \"category\": \"std-time\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"number\",\n \"description\": \"Get end of time period\",\n \"module\": \"time\"\n },\n \"time/format\": {\n \"category\": \"std-time\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"string\",\n \"description\": \"Format timestamp to string\",\n \"module\": \"time\"\n },\n \"time/hour\": {\n \"category\": \"std-time\",\n \"minArity\": 1,\n \"maxArity\": 1,\n \"returnType\": \"number\",\n \"description\": \"Get hour from timestamp (0-23)\",\n \"module\": \"time\"\n },\n \"time/isAfter\": {\n \"category\": \"std-time\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"boolean\",\n \"description\": \"Check if a is after b\",\n \"module\": \"time\"\n },\n \"time/isBefore\": {\n \"category\": \"std-time\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"boolean\",\n \"description\": \"Check if a is before b\",\n \"module\": \"time\"\n },\n \"time/isBetween\": {\n \"category\": \"std-time\",\n \"minArity\": 3,\n \"maxArity\": 3,\n \"returnType\": \"boolean\",\n \"description\": \"Check if date is between start and end\",\n \"module\": \"time\"\n },\n \"time/isFuture\": {\n \"category\": \"std-time\",\n \"minArity\": 1,\n \"maxArity\": 1,\n \"returnType\": \"boolean\",\n \"description\": \"Check if timestamp is in the future\",\n \"module\": \"time\"\n },\n \"time/isPast\": {\n \"category\": \"std-time\",\n \"minArity\": 1,\n \"maxArity\": 1,\n \"returnType\": \"boolean\",\n \"description\": \"Check if timestamp is in the past\",\n \"module\": \"time\"\n },\n \"time/isSame\": {\n \"category\": \"std-time\",\n \"minArity\": 2,\n \"maxArity\": 3,\n \"returnType\": \"boolean\",\n \"description\": \"Check if timestamps are same (optionally by unit)\",\n \"module\": \"time\"\n },\n \"time/isToday\": {\n \"category\": \"std-time\",\n \"minArity\": 1,\n \"maxArity\": 1,\n \"returnType\": \"boolean\",\n \"description\": \"Check if timestamp is today\",\n \"module\": \"time\"\n },\n \"time/minute\": {\n \"category\": \"std-time\",\n \"minArity\": 1,\n \"maxArity\": 1,\n \"returnType\": \"number\",\n \"description\": \"Get minute from timestamp (0-59)\",\n \"module\": \"time\"\n },\n \"time/month\": {\n \"category\": \"std-time\",\n \"minArity\": 1,\n \"maxArity\": 1,\n \"returnType\": \"number\",\n \"description\": \"Get month from timestamp (1-12)\",\n \"module\": \"time\"\n },\n \"time/now\": {\n \"category\": \"std-time\",\n \"minArity\": 0,\n \"maxArity\": 0,\n \"returnType\": \"number\",\n \"description\": \"Current timestamp\",\n \"module\": \"time\"\n },\n \"time/parse\": {\n \"category\": \"std-time\",\n \"minArity\": 1,\n \"maxArity\": 2,\n \"returnType\": \"number\",\n \"description\": \"Parse string to timestamp\",\n \"module\": \"time\"\n },\n \"time/relative\": {\n \"category\": \"std-time\",\n \"minArity\": 1,\n \"maxArity\": 1,\n \"returnType\": \"string\",\n \"description\": \"Format as relative time (\\\"2 hours ago\\\", \\\"in 3 days\\\")\",\n \"module\": \"time\"\n },\n \"time/second\": {\n \"category\": \"std-time\",\n \"minArity\": 1,\n \"maxArity\": 1,\n \"returnType\": \"number\",\n \"description\": \"Get second from timestamp (0-59)\",\n \"module\": \"time\"\n },\n \"time/startOf\": {\n \"category\": \"std-time\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"number\",\n \"description\": \"Get start of time period\",\n \"module\": \"time\"\n },\n \"time/subtract\": {\n \"category\": \"std-time\",\n \"minArity\": 3,\n \"maxArity\": 3,\n \"returnType\": \"number\",\n \"description\": \"Subtract time from timestamp\",\n \"module\": \"time\"\n },\n \"time/today\": {\n \"category\": \"std-time\",\n \"minArity\": 0,\n \"maxArity\": 0,\n \"returnType\": \"number\",\n \"description\": \"Today at midnight (local time)\",\n \"module\": \"time\"\n },\n \"time/weekday\": {\n \"category\": \"std-time\",\n \"minArity\": 1,\n \"maxArity\": 1,\n \"returnType\": \"number\",\n \"description\": \"Get day of week (0=Sunday, 6=Saturday)\",\n \"module\": \"time\"\n },\n \"time/year\": {\n \"category\": \"std-time\",\n \"minArity\": 1,\n \"maxArity\": 1,\n \"returnType\": \"number\",\n \"description\": \"Get year from timestamp\",\n \"module\": \"time\"\n },\n \"trace/emit\": {\n \"category\": \"std-trace\",\n \"minArity\": 1,\n \"maxArity\": 2,\n \"returnType\": \"void\",\n \"description\": \"Emit a structured trace event for observability (115 call sites in rabit today).\",\n \"module\": \"trace\",\n \"hasSideEffects\": true\n },\n \"trace/log\": {\n \"category\": \"std-trace\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"void\",\n \"description\": \"Log a message at the given level.\",\n \"module\": \"trace\",\n \"hasSideEffects\": true\n },\n \"train\": {\n \"category\": \"ml-effect\",\n \"minArity\": 1,\n \"maxArity\": 3,\n \"returnType\": \"object\",\n \"description\": \"Train a model over a dataset (ML effect)\",\n \"module\": \"train\",\n \"hasSideEffects\": true\n },\n \"train/adam\": {\n \"category\": \"ml-effect\",\n \"minArity\": 2,\n \"maxArity\": 4,\n \"returnType\": \"void\",\n \"description\": \"Adam optimizer step\",\n \"module\": \"train\",\n \"hasSideEffects\": true\n },\n \"train/checkConstraints\": {\n \"category\": \"ml-effect\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"train/constraintResult\",\n \"description\": \"Check if network weights satisfy all constraints\",\n \"module\": \"train\"\n },\n \"train/checkForbiddenOutputs\": {\n \"category\": \"ml-effect\",\n \"minArity\": 3,\n \"maxArity\": 3,\n \"returnType\": \"train/forbiddenResult\",\n \"description\": \"Check if model produces outputs in forbidden regions\",\n \"module\": \"train\"\n },\n \"train/checkRegression\": {\n \"category\": \"ml-effect\",\n \"minArity\": 3,\n \"maxArity\": 3,\n \"returnType\": \"train/regressionResult\",\n \"description\": \"Check if new model regresses on required invariants\",\n \"module\": \"train\"\n },\n \"train/checkWeightMagnitude\": {\n \"category\": \"ml-effect\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"boolean\",\n \"description\": \"Check if all weights are within magnitude limit\",\n \"module\": \"train\"\n },\n \"train/clipGradients\": {\n \"category\": \"ml-effect\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"number\",\n \"description\": \"Clip gradients to max norm (modifies in place)\",\n \"module\": \"train\",\n \"hasSideEffects\": true\n },\n \"train/clipWeights\": {\n \"category\": \"ml-effect\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"void\",\n \"description\": \"Clip weights to max magnitude (modifies in place)\",\n \"module\": \"train\",\n \"hasSideEffects\": true\n },\n \"train/computeAdvantages\": {\n \"category\": \"ml-effect\",\n \"minArity\": 3,\n \"maxArity\": 3,\n \"returnType\": \"tensor\",\n \"description\": \"Compute GAE advantages for policy gradient\",\n \"module\": \"train\"\n },\n \"train/computeReturns\": {\n \"category\": \"ml-effect\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"tensor\",\n \"description\": \"Compute discounted returns from rewards\",\n \"module\": \"train\"\n },\n \"train/crossEntropy\": {\n \"category\": \"ml-effect\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"number\",\n \"description\": \"Cross-entropy loss for classification\",\n \"module\": \"train\"\n },\n \"train/getGradientNorm\": {\n \"category\": \"ml-effect\",\n \"minArity\": 1,\n \"maxArity\": 1,\n \"returnType\": \"number\",\n \"description\": \"Get current gradient norm\",\n \"module\": \"train\"\n },\n \"train/getMaxWeightMagnitude\": {\n \"category\": \"ml-effect\",\n \"minArity\": 1,\n \"maxArity\": 1,\n \"returnType\": \"number\",\n \"description\": \"Get maximum weight magnitude in network\",\n \"module\": \"train\"\n },\n \"train/huber\": {\n \"category\": \"ml-effect\",\n \"minArity\": 2,\n \"maxArity\": 3,\n \"returnType\": \"number\",\n \"description\": \"Huber loss (smooth L1, robust to outliers)\",\n \"module\": \"train\"\n },\n \"train/loop\": {\n \"category\": \"ml-effect\",\n \"minArity\": 3,\n \"maxArity\": 3,\n \"returnType\": \"train/result\",\n \"description\": \"Execute training loop with constraints\",\n \"module\": \"train\",\n \"hasSideEffects\": true\n },\n \"train/mse\": {\n \"category\": \"ml-effect\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"number\",\n \"description\": \"Mean squared error loss\",\n \"module\": \"train\"\n },\n \"train/sampleBatch\": {\n \"category\": \"ml-effect\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"array\",\n \"description\": \"Sample random batch from experience buffer\",\n \"module\": \"train\"\n },\n \"train/sgd\": {\n \"category\": \"ml-effect\",\n \"minArity\": 2,\n \"maxArity\": 3,\n \"returnType\": \"void\",\n \"description\": \"Stochastic gradient descent optimizer step\",\n \"module\": \"train\",\n \"hasSideEffects\": true\n },\n \"train/step\": {\n \"category\": \"ml-effect\",\n \"minArity\": 4,\n \"maxArity\": 4,\n \"returnType\": \"train/stepResult\",\n \"description\": \"Execute single training step (forward, loss, backward, update)\",\n \"module\": \"train\",\n \"hasSideEffects\": true\n },\n \"train/validate\": {\n \"category\": \"ml-effect\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"train/validationResult\",\n \"description\": \"Validate model on test cases, returns pass/fail metrics\",\n \"module\": \"train\"\n },\n \"validate/array\": {\n \"category\": \"std-validate\",\n \"minArity\": 1,\n \"maxArity\": 1,\n \"returnType\": \"boolean\",\n \"description\": \"Check if value is an array\",\n \"module\": \"validate\"\n },\n \"validate/boolean\": {\n \"category\": \"std-validate\",\n \"minArity\": 1,\n \"maxArity\": 1,\n \"returnType\": \"boolean\",\n \"description\": \"Check if value is a boolean\",\n \"module\": \"validate\"\n },\n \"validate/check\": {\n \"category\": \"std-validate\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"any\",\n \"description\": \"Run multiple validation rules, return { valid, errors }\",\n \"module\": \"validate\"\n },\n \"validate/creditCard\": {\n \"category\": \"std-validate\",\n \"minArity\": 1,\n \"maxArity\": 1,\n \"returnType\": \"boolean\",\n \"description\": \"Check if value is a valid credit card number (Luhn algorithm)\",\n \"module\": \"validate\"\n },\n \"validate/date\": {\n \"category\": \"std-validate\",\n \"minArity\": 1,\n \"maxArity\": 1,\n \"returnType\": \"boolean\",\n \"description\": \"Check if value is a valid date\",\n \"module\": \"validate\"\n },\n \"validate/email\": {\n \"category\": \"std-validate\",\n \"minArity\": 1,\n \"maxArity\": 1,\n \"returnType\": \"boolean\",\n \"description\": \"Check if value is a valid email format\",\n \"module\": \"validate\"\n },\n \"validate/equals\": {\n \"category\": \"std-validate\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"boolean\",\n \"description\": \"Deep equality check\",\n \"module\": \"validate\"\n },\n \"validate/length\": {\n \"category\": \"std-validate\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"boolean\",\n \"description\": \"Check if string/array has exact length\",\n \"module\": \"validate\"\n },\n \"validate/max\": {\n \"category\": \"std-validate\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"boolean\",\n \"description\": \"Check if number is <= maximum\",\n \"module\": \"validate\"\n },\n \"validate/maxLength\": {\n \"category\": \"std-validate\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"boolean\",\n \"description\": \"Check if string/array has maximum length\",\n \"module\": \"validate\"\n },\n \"validate/min\": {\n \"category\": \"std-validate\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"boolean\",\n \"description\": \"Check if number is >= minimum\",\n \"module\": \"validate\"\n },\n \"validate/minLength\": {\n \"category\": \"std-validate\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"boolean\",\n \"description\": \"Check if string/array has minimum length\",\n \"module\": \"validate\"\n },\n \"validate/noneOf\": {\n \"category\": \"std-validate\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"boolean\",\n \"description\": \"Check if value is not in list of disallowed values\",\n \"module\": \"validate\"\n },\n \"validate/number\": {\n \"category\": \"std-validate\",\n \"minArity\": 1,\n \"maxArity\": 1,\n \"returnType\": \"boolean\",\n \"description\": \"Check if value is a number\",\n \"module\": \"validate\"\n },\n \"validate/object\": {\n \"category\": \"std-validate\",\n \"minArity\": 1,\n \"maxArity\": 1,\n \"returnType\": \"boolean\",\n \"description\": \"Check if value is an object\",\n \"module\": \"validate\"\n },\n \"validate/oneOf\": {\n \"category\": \"std-validate\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"boolean\",\n \"description\": \"Check if value is in list of allowed values\",\n \"module\": \"validate\"\n },\n \"validate/pattern\": {\n \"category\": \"std-validate\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"boolean\",\n \"description\": \"Check if string matches regex pattern\",\n \"module\": \"validate\"\n },\n \"validate/phone\": {\n \"category\": \"std-validate\",\n \"minArity\": 1,\n \"maxArity\": 1,\n \"returnType\": \"boolean\",\n \"description\": \"Check if value is a valid phone number\",\n \"module\": \"validate\"\n },\n \"validate/range\": {\n \"category\": \"std-validate\",\n \"minArity\": 3,\n \"maxArity\": 3,\n \"returnType\": \"boolean\",\n \"description\": \"Check if number is within range [min, max]\",\n \"module\": \"validate\"\n },\n \"validate/required\": {\n \"category\": \"std-validate\",\n \"minArity\": 1,\n \"maxArity\": 1,\n \"returnType\": \"boolean\",\n \"description\": \"Check if value is not null, undefined, or empty string\",\n \"module\": \"validate\"\n },\n \"validate/string\": {\n \"category\": \"std-validate\",\n \"minArity\": 1,\n \"maxArity\": 1,\n \"returnType\": \"boolean\",\n \"description\": \"Check if value is a string\",\n \"module\": \"validate\"\n },\n \"validate/url\": {\n \"category\": \"std-validate\",\n \"minArity\": 1,\n \"maxArity\": 1,\n \"returnType\": \"boolean\",\n \"description\": \"Check if value is a valid URL format\",\n \"module\": \"validate\"\n },\n \"validate/uuid\": {\n \"category\": \"std-validate\",\n \"minArity\": 1,\n \"maxArity\": 1,\n \"returnType\": \"boolean\",\n \"description\": \"Check if value is a valid UUID\",\n \"module\": \"validate\"\n },\n \"validate/validate\": {\n \"category\": \"std-behavior\",\n \"minArity\": 1,\n \"maxArity\": 2,\n \"returnType\": \"ValidateResult\",\n \"description\": \"Validate an orbital or the composed schema using orb validate.\",\n \"module\": \"behavior\",\n \"hasSideEffects\": true\n },\n \"vec/add\": {\n \"category\": \"std-vec\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"vector\",\n \"description\": \"Componentwise vector addition a+b\",\n \"module\": \"vec\"\n },\n \"vec/angle\": {\n \"category\": \"std-vec\",\n \"minArity\": 1,\n \"maxArity\": 2,\n \"returnType\": \"number\",\n \"description\": \"Heading atan2(y,x) (1 arg) or angle between two vectors (2 args), radians\",\n \"module\": \"vec\"\n },\n \"vec/clamp-length\": {\n \"category\": \"std-vec\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"vector\",\n \"description\": \"Clamp magnitude to max (preserves direction)\",\n \"module\": \"vec\"\n },\n \"vec/cross\": {\n \"category\": \"std-vec\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"vector | number\",\n \"description\": \"3D cross product → vector; 2D → scalar ax·by-ay·bx\",\n \"module\": \"vec\"\n },\n \"vec/distance\": {\n \"category\": \"std-vec\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"number\",\n \"description\": \"Euclidean distance length(sub(a,b))\",\n \"module\": \"vec\"\n },\n \"vec/distance-sq\": {\n \"category\": \"std-vec\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"number\",\n \"description\": \"Squared distance length-sq(sub(a,b))\",\n \"module\": \"vec\"\n },\n \"vec/dot\": {\n \"category\": \"std-vec\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"number\",\n \"description\": \"Dot product ax·bx+ay·by(+az·bz)\",\n \"module\": \"vec\"\n },\n \"vec/length\": {\n \"category\": \"std-vec\",\n \"minArity\": 1,\n \"maxArity\": 1,\n \"returnType\": \"number\",\n \"description\": \"Vector magnitude sqrt(dot(a,a))\",\n \"module\": \"vec\"\n },\n \"vec/length-sq\": {\n \"category\": \"std-vec\",\n \"minArity\": 1,\n \"maxArity\": 1,\n \"returnType\": \"number\",\n \"description\": \"Squared magnitude dot(a,a)\",\n \"module\": \"vec\"\n },\n \"vec/lerp\": {\n \"category\": \"std-vec\",\n \"minArity\": 3,\n \"maxArity\": 3,\n \"returnType\": \"vector\",\n \"description\": \"Componentwise linear interpolation a+(b-a)*t\",\n \"module\": \"vec\"\n },\n \"vec/normalize\": {\n \"category\": \"std-vec\",\n \"minArity\": 1,\n \"maxArity\": 1,\n \"returnType\": \"vector\",\n \"description\": \"Unit vector a/len; zero-length → zero vector (same dim)\",\n \"module\": \"vec\"\n },\n \"vec/rotate\": {\n \"category\": \"std-vec\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"vector\",\n \"description\": \"2D rotate by rad (z preserved): x'=x·cos-y·sin, y'=x·sin+y·cos\",\n \"module\": \"vec\"\n },\n \"vec/scale\": {\n \"category\": \"std-vec\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"vector\",\n \"description\": \"Componentwise scalar multiply a*k\",\n \"module\": \"vec\"\n },\n \"vec/sub\": {\n \"category\": \"std-vec\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"vector\",\n \"description\": \"Componentwise vector subtraction a-b\",\n \"module\": \"vec\"\n },\n \"when\": {\n \"category\": \"control\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"void\",\n \"description\": \"Conditional effect without an else branch\",\n \"module\": \"core\"\n },\n \"workspace/archive-orbital\": {\n \"category\": \"std-workspace\",\n \"minArity\": 1,\n \"maxArity\": 1,\n \"returnType\": \"void\",\n \"description\": \"Archive (remove from active set) an orbital from the workspace.\",\n \"module\": \"workspace\",\n \"hasSideEffects\": true\n },\n \"workspace/exists\": {\n \"category\": \"std-workspace\",\n \"minArity\": 1,\n \"maxArity\": 1,\n \"returnType\": \"boolean\",\n \"description\": \"Check if a file exists in the workspace.\",\n \"module\": \"workspace\"\n },\n \"workspace/list-orbitals\": {\n \"category\": \"std-workspace\",\n \"minArity\": 0,\n \"maxArity\": 0,\n \"returnType\": \"array\",\n \"description\": \"List all orbital names in the workspace.\",\n \"module\": \"workspace\"\n },\n \"workspace/read-file\": {\n \"category\": \"std-workspace\",\n \"minArity\": 1,\n \"maxArity\": 1,\n \"returnType\": \"string\",\n \"description\": \"Read a file from the workspace.\",\n \"module\": \"workspace\"\n },\n \"workspace/read-orbital\": {\n \"category\": \"std-workspace\",\n \"minArity\": 1,\n \"maxArity\": 1,\n \"returnType\": \"object\",\n \"description\": \"Read an orbital definition from the workspace by name.\",\n \"module\": \"workspace\"\n },\n \"workspace/read-plan\": {\n \"category\": \"std-workspace\",\n \"minArity\": 0,\n \"maxArity\": 0,\n \"returnType\": \"object\",\n \"description\": \"Read the plan snapshot from the workspace.\",\n \"module\": \"workspace\"\n },\n \"workspace/read-schema\": {\n \"category\": \"std-workspace\",\n \"minArity\": 0,\n \"maxArity\": 0,\n \"returnType\": \"object\",\n \"description\": \"Read the composed schema.orb from the workspace.\",\n \"module\": \"workspace\"\n },\n \"workspace/write-file\": {\n \"category\": \"std-workspace\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"void\",\n \"description\": \"Write a file to the workspace.\",\n \"module\": \"workspace\",\n \"hasSideEffects\": true\n },\n \"workspace/write-orbital\": {\n \"category\": \"std-workspace\",\n \"minArity\": 2,\n \"maxArity\": 2,\n \"returnType\": \"void\",\n \"description\": \"Write an orbital definition to the workspace.\",\n \"module\": \"workspace\",\n \"hasSideEffects\": true\n },\n \"workspace/write-plan\": {\n \"category\": \"std-workspace\",\n \"minArity\": 1,\n \"maxArity\": 1,\n \"returnType\": \"void\",\n \"description\": \"Write the plan snapshot to the workspace.\",\n \"module\": \"workspace\",\n \"hasSideEffects\": true\n },\n \"workspace/write-schema\": {\n \"category\": \"std-workspace\",\n \"minArity\": 1,\n \"maxArity\": 1,\n \"returnType\": \"void\",\n \"description\": \"Write the composed schema.orb to the workspace.\",\n \"module\": \"workspace\",\n \"hasSideEffects\": true\n }\n }\n}\n","/**\n * Arity guard for the S-expression interpreter — parity with the compiled\n * path's `resolve_sexpr_call` bounds check (C-EMIT-MAX-ARITY-SILENT-DROP /\n * R-EVALUATOR-NO-ARITY-CHECK). Both paths consult the SAME canonical\n * registry (`@almadar/std/canonical-operators.json`, baked into the compiler\n * as `baked/canonical-operators.json`), so a schema that over-applies a\n * fixed-arity operator fails identically everywhere instead of running\n * silently on the interpreter while `orb validate` rejects it.\n *\n * `maxArity: null` marks a variadic operator (any count ≥ minArity).\n * Operators absent from the registry impose no bounds — the evaluator's\n * data-array fallback handles unregistered heads.\n */\n// The registry JSON is INLINED into the evaluator dist at build time (tsup\n// bundles the import — no runtime resolution). Runtime alternatives both\n// break a consumer class: a live ESM JSON import needs `with {type:'json'}`\n// attributes plain node dists don't carry (playground server crash), and\n// `createRequire('node:module')` doesn't exist in browser bundles (Vite\n// shell-client build failure). Inlining works everywhere.\nimport canonicalOperators from '@almadar/std/canonical-operators.json';\n\ninterface CanonicalOperatorMeta {\n minArity?: number;\n maxArity?: number | null;\n}\n\ninterface CanonicalOperatorsFile {\n operators: Record<string, CanonicalOperatorMeta>;\n}\n\nconst ARITY: ReadonlyMap<string, { min: number; max: number | null }> = new Map(\n Object.entries((canonicalOperators as CanonicalOperatorsFile).operators).map(\n ([name, meta]) => [\n name,\n { min: meta.minArity ?? 0, max: meta.maxArity === undefined ? null : meta.maxArity },\n ],\n ),\n);\n\n/**\n * Throw when `op` is a registered operator applied with an argument count\n * outside its canonical bounds. No-op for unregistered heads.\n */\nexport function assertOperatorArity(op: string, argCount: number): void {\n const bounds = ARITY.get(op);\n if (!bounds) return;\n const { min, max } = bounds;\n if (argCount < min || (max !== null && argCount > max)) {\n const range = max === null ? `at least ${min}` : min === max ? `${min}` : `${min}..${max}`;\n throw new Error(\n `(${op} …): expected ${range} argument(s), got ${argCount} — same bounds the compiled path enforces (canonical-operators.json)`,\n );\n }\n}\n","/**\n * Arithmetic Operator Implementations\n *\n * Implements: +, -, *, /, %, abs, min, max, floor, ceil, round, clamp\n */\n\nimport type { SExpr } from '../types/expression.js';\nimport type { EvaluationContext } from '../context.js';\n\ntype Evaluator = (expr: SExpr, ctx: EvaluationContext) => unknown;\n\n/**\n * Evaluate addition: [\"+\", a, b, ...]\n */\nexport function evalAdd(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): number {\n return args.reduce((sum: number, arg) => sum + toNumber(evaluate(arg, ctx)), 0);\n}\n\n/**\n * Evaluate subtraction: [\"-\", a] (negate) or [\"-\", a, b] (subtract)\n */\nexport function evalSubtract(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): number {\n if (args.length === 1) {\n return -toNumber(evaluate(args[0], ctx));\n }\n return toNumber(evaluate(args[0], ctx)) - toNumber(evaluate(args[1], ctx));\n}\n\n/**\n * Evaluate multiplication: [\"*\", a, b, ...]\n */\nexport function evalMultiply(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): number {\n return args.reduce((product: number, arg) => product * toNumber(evaluate(arg, ctx)), 1);\n}\n\n/**\n * Evaluate division: [\"/\", a, b]\n */\nexport function evalDivide(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): number {\n const dividend = toNumber(evaluate(args[0], ctx));\n const divisor = toNumber(evaluate(args[1], ctx));\n if (divisor === 0) {\n return dividend >= 0 ? Infinity : -Infinity;\n }\n return dividend / divisor;\n}\n\n/**\n * Evaluate modulo: [\"%\", a, b]\n */\nexport function evalModulo(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): number {\n return toNumber(evaluate(args[0], ctx)) % toNumber(evaluate(args[1], ctx));\n}\n\n/**\n * Evaluate absolute value: [\"abs\", a]\n */\nexport function evalAbs(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): number {\n return Math.abs(toNumber(evaluate(args[0], ctx)));\n}\n\n/**\n * Evaluate minimum: [\"min\", a, b, ...]\n */\nexport function evalMin(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): number {\n const values = args.map((arg) => toNumber(evaluate(arg, ctx)));\n return Math.min(...values);\n}\n\n/**\n * Evaluate maximum: [\"max\", a, b, ...]\n */\nexport function evalMax(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): number {\n const values = args.map((arg) => toNumber(evaluate(arg, ctx)));\n return Math.max(...values);\n}\n\n/**\n * Evaluate floor: [\"floor\", a]\n */\nexport function evalFloor(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): number {\n return Math.floor(toNumber(evaluate(args[0], ctx)));\n}\n\n/**\n * Evaluate ceiling: [\"ceil\", a]\n */\nexport function evalCeil(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): number {\n return Math.ceil(toNumber(evaluate(args[0], ctx)));\n}\n\n/**\n * Evaluate round: [\"round\", a]\n */\nexport function evalRound(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): number {\n return Math.round(toNumber(evaluate(args[0], ctx)));\n}\n\n/**\n * Evaluate clamp: [\"clamp\", value, min, max]\n */\nexport function evalClamp(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): number {\n const value = toNumber(evaluate(args[0], ctx));\n const min = toNumber(evaluate(args[1], ctx));\n const max = toNumber(evaluate(args[2], ctx));\n return Math.max(min, Math.min(max, value));\n}\n\n/**\n * Convert a value to a number, defaulting to 0 for non-numbers.\n */\nfunction toNumber(value: unknown): number {\n if (typeof value === 'number') return value;\n if (typeof value === 'string') {\n const parsed = parseFloat(value);\n return isNaN(parsed) ? 0 : parsed;\n }\n if (typeof value === 'boolean') return value ? 1 : 0;\n return 0;\n}\n","/**\n * Comparison Operator Implementations\n *\n * Implements: =, !=, <, >, <=, >=\n */\n\nimport type { SExpr } from '../types/expression.js';\nimport type { EvaluationContext } from '../context.js';\n\ntype Evaluator = (expr: SExpr, ctx: EvaluationContext) => unknown;\n\n/**\n * Evaluate equality: [\"=\", a, b]\n * Uses strict equality (===) for type safety.\n */\nexport function evalEqual(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): boolean {\n const left = evaluate(args[0], ctx);\n const right = evaluate(args[1], ctx);\n return deepEqual(left, right);\n}\n\n/**\n * Evaluate not-equal: [\"!=\", a, b]\n */\nexport function evalNotEqual(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): boolean {\n const left = evaluate(args[0], ctx);\n const right = evaluate(args[1], ctx);\n return !deepEqual(left, right);\n}\n\n/**\n * Evaluate less-than: [\"<\", a, b]\n */\nexport function evalLessThan(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): boolean {\n const left = evaluate(args[0], ctx);\n const right = evaluate(args[1], ctx);\n return toComparable(left) < toComparable(right);\n}\n\n/**\n * Evaluate greater-than: [\">\", a, b]\n */\nexport function evalGreaterThan(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): boolean {\n const left = evaluate(args[0], ctx);\n const right = evaluate(args[1], ctx);\n return toComparable(left) > toComparable(right);\n}\n\n/**\n * Evaluate less-than-or-equal: [\"<=\", a, b]\n */\nexport function evalLessThanOrEqual(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): boolean {\n const left = evaluate(args[0], ctx);\n const right = evaluate(args[1], ctx);\n return toComparable(left) <= toComparable(right);\n}\n\n/**\n * Evaluate greater-than-or-equal: [\">=\", a, b]\n */\nexport function evalGreaterThanOrEqual(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): boolean {\n const left = evaluate(args[0], ctx);\n const right = evaluate(args[1], ctx);\n return toComparable(left) >= toComparable(right);\n}\n\n/**\n * Evaluate regex match: [\"matches\", subject, pattern]\n * Returns true if subject matches the regex pattern.\n */\nexport function evalMatches(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): boolean {\n const subject = evaluate(args[0], ctx);\n const pattern = evaluate(args[1], ctx);\n\n if (typeof subject !== 'string' || typeof pattern !== 'string') {\n return false;\n }\n\n try {\n const regex = new RegExp(pattern);\n return regex.test(subject);\n } catch {\n // Invalid regex pattern\n return false;\n }\n}\n\n/**\n * Deep equality check for objects and arrays.\n */\nfunction deepEqual(a: unknown, b: unknown): boolean {\n // Primitive equality\n if (a === b) return true;\n\n // Null/undefined checks\n if (a === null || b === null) return a === b;\n if (a === undefined || b === undefined) return a === b;\n\n // Type checks\n if (typeof a !== typeof b) return false;\n\n // Array equality\n if (Array.isArray(a) && Array.isArray(b)) {\n if (a.length !== b.length) return false;\n return a.every((val, idx) => deepEqual(val, b[idx]));\n }\n\n // Object equality\n if (typeof a === 'object' && typeof b === 'object') {\n const keysA = Object.keys(a as object);\n const keysB = Object.keys(b as object);\n if (keysA.length !== keysB.length) return false;\n return keysA.every((key) =>\n deepEqual((a as Record<string, unknown>)[key], (b as Record<string, unknown>)[key])\n );\n }\n\n return false;\n}\n\n/**\n * Convert to a comparable value for ordering operations.\n */\nfunction toComparable(value: unknown): number | string {\n if (typeof value === 'number') return value;\n if (typeof value === 'string') return value;\n if (typeof value === 'boolean') return value ? 1 : 0;\n if (value === null || value === undefined) return 0;\n return String(value);\n}\n","/**\n * Logic Operator Implementations\n *\n * Implements: and, or, not, if\n * All logic operators support short-circuit evaluation.\n */\n\nimport type { SExpr } from '../types/expression.js';\nimport type { EvaluationContext } from '../context.js';\n\ntype Evaluator = (expr: SExpr, ctx: EvaluationContext) => unknown;\n\n/**\n * Evaluate logical AND: [\"and\", a, b, ...]\n * Operand semantics (matches JS `&&` and the compiled TS path — Phase 5,\n * R-OR-AND-RETURN-BOOLEAN): returns the first falsy argument's VALUE, or the\n * last argument's value if all are truthy. Short-circuits — does not evaluate\n * past the first falsy. (When every operand is boolean — the case for all\n * shipping behaviors — this is observationally identical to returning a\n * boolean.)\n */\nexport function evalAnd(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): unknown {\n let last: unknown = true;\n for (const arg of args) {\n last = evaluate(arg, ctx);\n if (!toBoolean(last)) {\n return last;\n }\n }\n return last;\n}\n\n/**\n * Evaluate logical OR: [\"or\", a, b, ...]\n * Operand semantics (matches JS `||` and the compiled TS path — Phase 5,\n * R-OR-AND-RETURN-BOOLEAN): returns the first truthy argument's VALUE, or the\n * last argument's value if all are falsy. Short-circuits — does not evaluate\n * past the first truthy.\n */\nexport function evalOr(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): unknown {\n let last: unknown = false;\n for (const arg of args) {\n last = evaluate(arg, ctx);\n if (toBoolean(last)) {\n return last;\n }\n }\n return last;\n}\n\n/**\n * Evaluate logical NOT: [\"not\", a]\n */\nexport function evalNot(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): boolean {\n return !toBoolean(evaluate(args[0], ctx));\n}\n\n/**\n * Evaluate conditional: [\"if\", condition, then, else]\n * Only evaluates the branch that matches the condition.\n */\nexport function evalIf(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): unknown {\n const condition = toBoolean(evaluate(args[0], ctx));\n if (condition) {\n return evaluate(args[1], ctx);\n }\n return evaluate(args[2], ctx);\n}\n\n/**\n * Convert a value to boolean.\n * Follows JavaScript truthy/falsy semantics:\n * - false, 0, '', null, undefined, NaN are falsy\n * - Everything else is truthy\n */\nfunction toBoolean(value: unknown): boolean {\n return Boolean(value);\n}\n","/**\n * Control Operator Implementations\n *\n * Implements: let, do, when, fn\n */\n\nimport type { SExpr } from '../types/expression.js';\nimport type { EvaluationContext } from '../context.js';\nimport { createChildContext } from '../context.js';\n\ntype Evaluator = (expr: SExpr, ctx: EvaluationContext) => unknown;\n\n/**\n * Evaluate let binding.\n * Supports two formats:\n * - Array of pairs: [\"let\", [[\"x\", 10], [\"y\", 20]], body]\n * - Object style: [\"let\", {\"x\": 10, \"y\": 20}, body]\n *\n * Sequential (`let*`) semantics: each binding's value expression can\n * reference any EARLIER binding in the same `let` via `@<name>` — matches\n * `@almadar/runtime`'s `EffectExecutor` `let` case (its own, independent\n * implementation, which already threads bindings this way) and how `.lolo`\n * is authored in practice: multi-step chains where a later step's formula\n * builds on an earlier one (e.g. std-evade-chase's `chase` tick computing\n * `nc2x` from `nc1x`). Evaluating every binding against the original,\n * unmodified `ctx` (the prior behavior here) left every cross-binding\n * reference unresolved (`undefined`), silently corrupting any `let` with\n * dependent bindings.\n */\nexport function evalLet(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): unknown {\n const rawBindings = args[0];\n const body = args[1];\n\n // Build binding pairs from either array-of-pairs or object format\n const bindingPairs: Array<[string, SExpr]> = Array.isArray(rawBindings)\n ? (rawBindings as SExpr[][]).map(b => [b[0] as string, b[1]])\n : Object.entries(rawBindings as Record<string, SExpr>);\n\n // Evaluate each binding against the locals accumulated so far, then fold\n // it in before evaluating the next one.\n const locals = new Map<string, unknown>();\n let childCtx = ctx;\n for (const [name, valueExpr] of bindingPairs) {\n const value = evaluate(valueExpr, childCtx);\n locals.set(name, value);\n childCtx = createChildContext(ctx, locals);\n }\n\n // Evaluate body with the fully-accumulated context (childCtx === ctx,\n // unchanged, when there are no bindings).\n return evaluate(body, childCtx);\n}\n\n/**\n * Evaluate do block: [\"do\", expr1, expr2, ...]\n * Executes expressions in sequence, returns last result.\n */\nexport function evalDo(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): unknown {\n let result: unknown = undefined;\n for (const expr of args) {\n result = evaluate(expr, ctx);\n }\n return result;\n}\n\n/**\n * Evaluate when: [\"when\", condition, effect]\n * Executes effect only when condition is truthy.\n */\nexport function evalWhen(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): void {\n const condition = evaluate(args[0], ctx);\n if (Boolean(condition)) {\n evaluate(args[1], ctx);\n }\n}\n\n/**\n * Evaluate lambda: [\"fn\", varName, body] or [\"fn\", [vars], body]\n * Creates a function that can be passed to collection operators.\n */\nexport function evalFn(\n args: SExpr[],\n _evaluate: Evaluator,\n _ctx: EvaluationContext\n): (item: unknown, evaluate: Evaluator, ctx: EvaluationContext) => unknown {\n const params = args[0];\n const body = args[1];\n\n // Return a closure that can be called with an item\n return (item: unknown, evaluate: Evaluator, ctx: EvaluationContext) => {\n const locals = new Map<string, unknown>();\n\n // Handle single variable or array of variables\n if (typeof params === 'string') {\n locals.set(params, item);\n } else if (Array.isArray(params)) {\n const itemArray = Array.isArray(item) ? item : [item];\n for (let i = 0; i < params.length; i++) {\n locals.set(params[i] as string, itemArray[i]);\n }\n }\n\n const childCtx = createChildContext(ctx, locals);\n return evaluate(body, childCtx);\n };\n}\n","/**\n * Collection Operator Implementations\n *\n * Implements: map, filter, find, count, sum, first, last, nth, concat, includes, empty\n *\n * These short-form operators (map, filter, find) use @item/@index bindings,\n * matching the Rust evaluator's approach.\n */\n\nimport type { SExpr } from '../types/expression.js';\nimport type { EvaluationContext } from '../context.js';\nimport { createChildContext } from '../context.js';\n\ntype Evaluator = (expr: SExpr, ctx: EvaluationContext) => unknown;\n\nfunction withItem(\n expr: SExpr,\n evaluate: Evaluator,\n ctx: EvaluationContext,\n item: unknown,\n index: number\n): unknown {\n const locals = new Map<string, unknown>();\n locals.set('item', item);\n locals.set('index', index);\n return evaluate(expr, createChildContext(ctx, locals));\n}\n\n/**\n * Evaluate map: [\"map\", collection, expr_using_@item]\n */\nexport function evalMap(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): unknown[] {\n const collection = toArray(evaluate(args[0], ctx));\n const mapExpr = args[1];\n return collection.map((item, i) => withItem(mapExpr, evaluate, ctx, item, i));\n}\n\n/**\n * Evaluate filter: [\"filter\", collection, expr_using_@item]\n */\nexport function evalFilter(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): unknown[] {\n const collection = toArray(evaluate(args[0], ctx));\n const predExpr = args[1];\n return collection.filter((item, i) => Boolean(withItem(predExpr, evaluate, ctx, item, i)));\n}\n\n/**\n * Evaluate find: [\"find\", collection, expr_using_@item]\n */\nexport function evalFind(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): unknown {\n const collection = toArray(evaluate(args[0], ctx));\n const predExpr = args[1];\n return collection.find((item, i) => Boolean(withItem(predExpr, evaluate, ctx, item, i)));\n}\n\n/**\n * Evaluate count: [\"count\", collection]\n */\nexport function evalCount(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): number {\n const collection = toArray(evaluate(args[0], ctx));\n return collection.length;\n}\n\n/**\n * Evaluate sum: [\"sum\", collection] or [\"sum\", collection, mapExpr_using_@item]\n */\nexport function evalSum(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): number {\n const collection = toArray(evaluate(args[0], ctx));\n\n if (args.length === 1) {\n return collection.reduce((sum: number, item) => sum + toNumber(item), 0);\n }\n\n const mapExpr = args[1];\n return collection.reduce((sum: number, item, i) => {\n const locals = new Map<string, unknown>();\n locals.set('item', item);\n locals.set('index', i);\n const childCtx = createChildContext(ctx, locals);\n return sum + toNumber(evaluate(mapExpr, childCtx));\n }, 0);\n}\n\n/**\n * Evaluate first: [\"first\", collection]\n */\nexport function evalFirst(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): unknown {\n const collection = toArray(evaluate(args[0], ctx));\n return collection.length > 0 ? collection[0] : undefined;\n}\n\n/**\n * Evaluate last: [\"last\", collection]\n */\nexport function evalLast(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): unknown {\n const collection = toArray(evaluate(args[0], ctx));\n return collection.length > 0 ? collection[collection.length - 1] : undefined;\n}\n\n/**\n * Evaluate nth: [\"nth\", collection, index]\n */\nexport function evalNth(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): unknown {\n const collection = toArray(evaluate(args[0], ctx));\n const index = toNumber(evaluate(args[1], ctx));\n return collection[index];\n}\n\n/**\n * Evaluate concat: [\"concat\", collection1, collection2, ...]\n */\nexport function evalConcat(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): unknown[] {\n const result: unknown[] = [];\n for (const arg of args) {\n const collection = toArray(evaluate(arg, ctx));\n result.push(...collection);\n }\n return result;\n}\n\n/**\n * Evaluate includes: [\"includes\", collection, element]\n */\nexport function evalIncludes(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): boolean {\n const collection = toArray(evaluate(args[0], ctx));\n const element = evaluate(args[1], ctx);\n return collection.includes(element);\n}\n\n/**\n * Evaluate empty: [\"empty\", collection]\n */\nexport function evalEmpty(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): boolean {\n const collection = toArray(evaluate(args[0], ctx));\n return collection.length === 0;\n}\n\n/**\n * `(list a b c …)` — literal array constructor. Evaluates each argument and\n * returns them as a plain array. Lowering wraps a literal list bound for a\n * literal-array slot in `list` so it is unambiguously data, never a call — the\n * deterministic disambiguation for a list whose first element collides with an\n * operator name (e.g. `[path method …]` would otherwise be read as the `path`\n * operator call and collapse to a string).\n */\nexport function evalList(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): unknown[] {\n return args.map((arg) => evaluate(arg, ctx));\n}\n\n/**\n * Convert a value to an array.\n */\nfunction toArray(value: unknown): unknown[] {\n if (Array.isArray(value)) return value;\n if (value === null || value === undefined) return [];\n return [value];\n}\n\n/**\n * Convert a value to a number.\n */\nfunction toNumber(value: unknown): number {\n if (typeof value === 'number') return value;\n if (typeof value === 'string') {\n const parsed = parseFloat(value);\n return isNaN(parsed) ? 0 : parsed;\n }\n return 0;\n}\n","/**\n * Effect Operator Implementations\n *\n * Implements: set, emit, persist, navigate, notify, spawn, despawn, call-service, render-ui\n *\n * Effect operators have side effects and require effect handlers in the context.\n */\n\nimport type { SExpr } from '../types/expression.js';\nimport type { EvaluationContext } from '../context.js';\nimport { resolveBinding } from '../context.js';\n\ntype Evaluator = (expr: SExpr, ctx: EvaluationContext) => unknown;\n\n/**\n * Evaluate set: [\"set\", \"@entity.field\", value] or [\"set\", \"@entity.field\", value, operation]\n */\nexport function evalSet(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): void {\n const binding = args[0] as string;\n const value = evaluate(args[1], ctx);\n const operation = args[2] as string | undefined;\n\n if (!ctx.mutateEntity) {\n console.warn('No mutateEntity handler in context for set effect');\n return;\n }\n\n // Parse the binding to get the field name\n if (!binding.startsWith('@entity.')) {\n console.warn(`set only supports @entity bindings, got: ${binding}`);\n return;\n }\n\n const fieldPath = binding.slice(8); // Remove \"@entity.\"\n\n // Handle different operations\n let finalValue = value;\n if (operation) {\n const currentValue = resolveBinding(binding, ctx);\n switch (operation) {\n case 'increment':\n finalValue = toNumber(currentValue) + toNumber(value);\n break;\n case 'decrement':\n finalValue = toNumber(currentValue) - toNumber(value);\n break;\n case 'multiply':\n finalValue = toNumber(currentValue) * toNumber(value);\n break;\n case 'append':\n finalValue = Array.isArray(currentValue) ? [...currentValue, value] : [value];\n break;\n case 'remove':\n finalValue = Array.isArray(currentValue) ? currentValue.filter((v) => v !== value) : [];\n break;\n default:\n // No operation, use value directly\n break;\n }\n }\n\n ctx.mutateEntity({ [fieldPath]: finalValue });\n}\n\n/**\n * Evaluate emit: [\"emit\", eventKey] or [\"emit\", eventKey, payload]\n */\nexport function evalEmit(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): void {\n const eventKey = args[0] as string;\n const payload = args.length > 1 ? evaluate(args[1], ctx) : undefined;\n\n if (!ctx.emit) {\n console.warn('No emit handler in context for emit effect');\n return;\n }\n\n ctx.emit(eventKey, payload);\n}\n\n/**\n * Evaluate persist:\n * - [\"persist\", action] or [\"persist\", action, data]\n * Actions: \"create\", \"update\", \"delete\"\n * - [\"persist\", \"batch\", [...operations]]\n * Batch action for atomic multi-document writes.\n * Each operation is an S-expression: [\"create\", \"collection\", {...data}],\n * [\"update\", \"collection\", \"id\", {...data}], or [\"delete\", \"collection\", \"id\"].\n */\nexport function evalPersist(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): void {\n const action = args[0] as 'create' | 'update' | 'delete' | 'batch';\n\n if (!ctx.persist) {\n console.warn('No persist handler in context for persist effect');\n return;\n }\n\n if (action === 'batch') {\n // Batch mode: [\"persist\", \"batch\", [...operations]]\n const rawOps = args[1];\n if (!Array.isArray(rawOps)) {\n console.warn('persist batch requires an array of operations as second argument');\n return;\n }\n // Evaluate each operation's data arguments\n const operations = rawOps.map((op) => {\n if (!Array.isArray(op)) return op;\n return (op as SExpr[]).map((item) => evaluate(item, ctx));\n });\n ctx.persist('batch', { operations } as Record<string, unknown>).catch((err) => {\n console.error('Persist batch failed:', err);\n });\n return;\n }\n\n // Single operation mode\n const data = args.length > 1 ? (evaluate(args[1], ctx) as Record<string, unknown>) : ctx.payload;\n\n // Fire and forget (async)\n ctx.persist(action, data as Record<string, unknown>).catch((err) => {\n console.error(`Persist ${action} failed:`, err);\n });\n}\n\n/**\n * Evaluate navigate: [\"navigate\", route] or [\"navigate\", route, params]\n */\nexport function evalNavigate(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): void {\n const route = args[0] as string;\n const params = args.length > 1 ? (evaluate(args[1], ctx) as Record<string, unknown>) : undefined;\n\n if (!ctx.navigate) {\n console.warn('No navigate handler in context for navigate effect');\n return;\n }\n\n ctx.navigate(route, params);\n}\n\n/**\n * Evaluate notify: [\"notify\", message] or [\"notify\", message, type]\n */\nexport function evalNotify(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): void {\n const message = String(evaluate(args[0], ctx));\n const type = (args[1] as 'success' | 'error' | 'warning' | 'info') || 'info';\n\n if (!ctx.notify) {\n console.warn('No notify handler in context for notify effect');\n return;\n }\n\n ctx.notify(message, type);\n}\n\n/**\n * Evaluate spawn: [\"spawn\", entityType] or [\"spawn\", entityType, props]\n */\nexport function evalSpawn(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): void {\n const entityType = args[0] as string;\n const props = args.length > 1 ? (evaluate(args[1], ctx) as Record<string, unknown>) : undefined;\n\n if (!ctx.spawn) {\n console.warn('No spawn handler in context for spawn effect');\n return;\n }\n\n ctx.spawn(entityType, props);\n}\n\n/**\n * Evaluate despawn: [\"despawn\"] or [\"despawn\", entityId]\n */\nexport function evalDespawn(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): void {\n const entityId = args.length > 0 ? String(evaluate(args[0], ctx)) : undefined;\n\n if (!ctx.despawn) {\n console.warn('No despawn handler in context for despawn effect');\n return;\n }\n\n ctx.despawn(entityId);\n}\n\n/**\n * Evaluate call-service: [\"call-service\", service, method] or [\"call-service\", service, method, params]\n */\nexport function evalCallService(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): void {\n const service = args[0] as string;\n const method = args[1] as string;\n const params = args.length > 2 ? (evaluate(args[2], ctx) as Record<string, unknown>) : undefined;\n\n if (!ctx.callService) {\n console.warn('No callService handler in context for call-service effect');\n return;\n }\n\n // Fire and forget (async)\n ctx.callService(service, method, params).catch((err) => {\n console.error(`Service call ${service}.${method} failed:`, err);\n });\n}\n\n/**\n * Recursively evaluate nested s-expressions within an object.\n * This handles computed props like { label: [\"str/concat\", \"Score: \", \"@entity.score\"] }\n */\nfunction evaluateNestedProps(\n obj: Record<string, unknown>,\n evaluate: Evaluator,\n ctx: EvaluationContext\n): Record<string, unknown> {\n const result: Record<string, unknown> = {};\n \n for (const [key, value] of Object.entries(obj)) {\n if (Array.isArray(value) && value.length > 0 && typeof value[0] === 'string') {\n // This looks like an s-expression, evaluate it\n result[key] = evaluate(value as SExpr, ctx);\n } else if (typeof value === 'object' && value !== null && !Array.isArray(value)) {\n // Nested object, recurse\n result[key] = evaluateNestedProps(value as Record<string, unknown>, evaluate, ctx);\n } else {\n // Primitive value or plain array, keep as-is\n result[key] = value;\n }\n }\n \n return result;\n}\n\n/**\n * Evaluate render-ui:\n * - [\"render-ui\", slot, pattern]\n * - [\"render-ui\", slot, pattern, props]\n * - [\"render-ui\", slot, pattern, props, priority]\n * - [\"render-ui\", slot, null] - clears the slot\n */\nexport function evalRenderUI(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): void {\n const slot = args[0] as string;\n const pattern = evaluate(args[1], ctx);\n const rawProps = args.length > 2 ? (args[2] as Record<string, unknown>) : undefined;\n const priority = args.length > 3 ? (evaluate(args[3], ctx) as number) : undefined;\n\n if (!ctx.renderUI) {\n console.warn('No renderUI handler in context for render-ui effect');\n return;\n }\n\n // Handle null pattern as \"clear slot\"\n if (pattern === null || pattern === undefined) {\n ctx.renderUI(slot, { type: 'clear' }, undefined, priority);\n return;\n }\n\n // Recursively evaluate nested s-expressions in props\n const props = rawProps ? evaluateNestedProps(rawProps, evaluate, ctx) : undefined;\n\n ctx.renderUI(slot, pattern, props, priority);\n}\n\n/**\n * Evaluate set-dynamic: [\"set-dynamic\", pathExpr, value]\n * Used for dynamic field paths computed at runtime.\n * The pathExpr should evaluate to a dot-separated path string.\n */\nexport function evalSetDynamic(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): void {\n const pathExpr = evaluate(args[0], ctx) as string;\n const value = evaluate(args[1], ctx);\n\n if (!ctx.mutateEntity) {\n console.warn('No mutateEntity handler in context for set-dynamic effect');\n return;\n }\n\n if (!pathExpr || typeof pathExpr !== 'string') {\n console.warn(`set-dynamic requires a valid path string, got: ${pathExpr}`);\n return;\n }\n\n // pathExpr is already a dot-separated path (e.g., \"formValues.A9\")\n ctx.mutateEntity({ [pathExpr]: value });\n}\n\n/**\n * Evaluate increment: [\"increment\", \"@entity.field\"] or [\"increment\", \"@entity.field\", amount]\n */\nexport function evalIncrement(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): void {\n const binding = args[0] as string;\n const amount = args.length > 1 ? toNumber(evaluate(args[1], ctx)) : 1;\n\n if (!ctx.mutateEntity) {\n console.warn('No mutateEntity handler in context for increment effect');\n return;\n }\n\n if (!binding.startsWith('@entity.')) {\n console.warn(`increment only supports @entity bindings, got: ${binding}`);\n return;\n }\n\n const fieldPath = binding.slice(8); // Remove \"@entity.\"\n const currentValue = resolveBinding(binding, ctx);\n const newValue = toNumber(currentValue) + amount;\n\n ctx.mutateEntity({ [fieldPath]: newValue });\n}\n\n/**\n * Evaluate decrement: [\"decrement\", \"@entity.field\"] or [\"decrement\", \"@entity.field\", amount]\n */\nexport function evalDecrement(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): void {\n const binding = args[0] as string;\n const amount = args.length > 1 ? toNumber(evaluate(args[1], ctx)) : 1;\n\n if (!ctx.mutateEntity) {\n console.warn('No mutateEntity handler in context for decrement effect');\n return;\n }\n\n if (!binding.startsWith('@entity.')) {\n console.warn(`decrement only supports @entity bindings, got: ${binding}`);\n return;\n }\n\n const fieldPath = binding.slice(8); // Remove \"@entity.\"\n const currentValue = resolveBinding(binding, ctx);\n const newValue = toNumber(currentValue) - amount;\n\n ctx.mutateEntity({ [fieldPath]: newValue });\n}\n\n// ── Resource operators (ref/deref/swap!/watch/atomic) ──\n\n/**\n * Evaluate ref: [\"ref\", \"EntityType\"] or [\"ref\", \"EntityType\", { filter, include }]\n * Server-side: queries entity data. Client-side: subscribes to EntityStore.\n */\nexport function evalRef(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): unknown {\n const entityType = args[0] as string;\n if (ctx.effectHandlers?.ref) {\n return ctx.effectHandlers.ref(entityType, args.length > 1 ? evaluate(args[1], ctx) : undefined);\n }\n // Fallback: delegate to fetch handler\n if (ctx.effectHandlers?.fetch) {\n return ctx.effectHandlers.fetch(entityType, args.length > 1 ? evaluate(args[1], ctx) : undefined);\n }\n return undefined;\n}\n\n/**\n * Evaluate deref: [\"deref\", \"EntityType\"] or [\"deref\", \"EntityType\", idExpr]\n * Pure snapshot read. Returns current entity data from store.\n */\nexport function evalDeref(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): unknown {\n const entityType = args[0] as string;\n const id = args.length > 1 ? evaluate(args[1], ctx) : undefined;\n if (ctx.effectHandlers?.deref) {\n return ctx.effectHandlers.deref(entityType, id);\n }\n // Fallback: read from entity context\n if (id && ctx.effectHandlers?.fetch) {\n return ctx.effectHandlers.fetch(entityType, id);\n }\n // Return entity data from context if available\n return (ctx.entity as Record<string, unknown>)?.[entityType] ?? [];\n}\n\n/**\n * Evaluate swap!: [\"swap!\", \"EntityType\", idExpr, transformExpr]\n * Atomic read-modify-write with CAS retry.\n */\nexport function evalSwap(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): unknown {\n const entityType = args[0] as string;\n const id = evaluate(args[1], ctx);\n const transformExpr = args[2];\n if (ctx.effectHandlers?.swap) {\n return ctx.effectHandlers.swap(entityType, id, transformExpr, evaluate, ctx);\n }\n console.warn('No swap handler in context');\n return undefined;\n}\n\n/**\n * Evaluate watch: [\"watch\", \"EntityType\", [effect1, effect2, ...]]\n * Client-only. Registers a callback on the EntityStore.\n */\nexport function evalWatch(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): void {\n const entityType = args[0] as string;\n const effects = args[1] as SExpr[];\n if (ctx.effectHandlers?.watch) {\n ctx.effectHandlers.watch(entityType, effects, evaluate, ctx);\n }\n // Server-side: no-op (watch is client-only)\n}\n\n/**\n * Evaluate atomic: [\"atomic\", [effect1, effect2, ...]]\n * Groups effects into a transaction. All succeed or all roll back.\n */\nexport function evalAtomic(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): unknown {\n const effects = args[0] as SExpr[];\n if (ctx.effectHandlers?.atomic) {\n return ctx.effectHandlers.atomic(effects, evaluate, ctx);\n }\n // Fallback: execute sequentially (no transaction guarantees)\n if (Array.isArray(effects)) {\n for (const eff of effects) {\n evaluate(eff, ctx);\n }\n }\n return undefined;\n}\n\n/**\n * Convert a value to a number.\n */\nfunction toNumber(value: unknown): number {\n if (typeof value === 'number') return value;\n if (typeof value === 'string') {\n const parsed = parseFloat(value);\n return isNaN(parsed) ? 0 : parsed;\n }\n return 0;\n}\n","/**\n * Math Module Runtime Evaluators\n *\n * Runtime implementations for math/* operators.\n *\n * @packageDocumentation\n */\n\nimport type { SExpr } from '../types/expression.js';\nimport type { EvaluationContext } from '../context.js';\n\ntype EvalFn = (expr: SExpr, ctx: EvaluationContext) => unknown;\n\n/**\n * math/abs - Absolute value\n */\nexport function evalMathAbs(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const n = evaluate(args[0], ctx) as number;\n return Math.abs(n);\n}\n\n/**\n * math/min - Minimum of values\n */\nexport function evalMathMin(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const values = args.map((a) => evaluate(a, ctx) as number);\n return Math.min(...values);\n}\n\n/**\n * math/max - Maximum of values\n */\nexport function evalMathMax(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const values = args.map((a) => evaluate(a, ctx) as number);\n return Math.max(...values);\n}\n\n/**\n * math/clamp - Constrain value to range [min, max]\n */\nexport function evalMathClamp(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const n = evaluate(args[0], ctx) as number;\n const min = evaluate(args[1], ctx) as number;\n const max = evaluate(args[2], ctx) as number;\n return Math.min(Math.max(n, min), max);\n}\n\n/**\n * math/floor - Round down to integer\n */\nexport function evalMathFloor(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const n = evaluate(args[0], ctx) as number;\n return Math.floor(n);\n}\n\n/**\n * math/ceil - Round up to integer\n */\nexport function evalMathCeil(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const n = evaluate(args[0], ctx) as number;\n return Math.ceil(n);\n}\n\n/**\n * math/round - Round to nearest integer or specified decimals\n */\nexport function evalMathRound(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const n = evaluate(args[0], ctx) as number;\n const decimals = args.length > 1 ? (evaluate(args[1], ctx) as number) : 0;\n if (decimals === 0) {\n return Math.round(n);\n }\n const factor = Math.pow(10, decimals);\n return Math.round(n * factor) / factor;\n}\n\n/**\n * math/pow - Exponentiation (base^exp)\n */\nexport function evalMathPow(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const base = evaluate(args[0], ctx) as number;\n const exp = evaluate(args[1], ctx) as number;\n return Math.pow(base, exp);\n}\n\n/**\n * math/sqrt - Square root\n */\nexport function evalMathSqrt(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const n = evaluate(args[0], ctx) as number;\n return Math.sqrt(n);\n}\n\n/**\n * math/mod - Modulo (remainder)\n */\nexport function evalMathMod(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const a = evaluate(args[0], ctx) as number;\n const b = evaluate(args[1], ctx) as number;\n return a % b;\n}\n\n/**\n * math/sign - Returns -1, 0, or 1 indicating sign\n */\nexport function evalMathSign(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const n = evaluate(args[0], ctx) as number;\n return Math.sign(n);\n}\n\n/**\n * math/lerp - Linear interpolation between a and b by factor t\n */\nexport function evalMathLerp(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const a = evaluate(args[0], ctx) as number;\n const b = evaluate(args[1], ctx) as number;\n const t = evaluate(args[2], ctx) as number;\n return a + (b - a) * t;\n}\n\n/**\n * math/map - Map value from one range to another\n */\nexport function evalMathMap(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const n = evaluate(args[0], ctx) as number;\n const inMin = evaluate(args[1], ctx) as number;\n const inMax = evaluate(args[2], ctx) as number;\n const outMin = evaluate(args[3], ctx) as number;\n const outMax = evaluate(args[4], ctx) as number;\n return ((n - inMin) / (inMax - inMin)) * (outMax - outMin) + outMin;\n}\n\n/**\n * math/random - Random number between 0 (inclusive) and 1 (exclusive)\n */\nexport function evalMathRandom(): number {\n return Math.random();\n}\n\n/**\n * math/randomInt - Random integer in range [min, max] (inclusive)\n */\nexport function evalMathRandomInt(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const min = evaluate(args[0], ctx) as number;\n const max = evaluate(args[1], ctx) as number;\n return Math.floor(Math.random() * (max - min + 1)) + min;\n}\n\n/**\n * math/default - Return default if value is null, undefined, or NaN\n */\nexport function evalMathDefault(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const n = evaluate(args[0], ctx);\n const defaultValue = evaluate(args[1], ctx) as number;\n if (n === null || n === undefined || (typeof n === 'number' && isNaN(n))) {\n return defaultValue;\n }\n return n as number;\n}\n\n/**\n * math/sin - sine of radians\n */\nexport function evalMathSin(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n return Math.sin(evaluate(args[0], ctx) as number);\n}\n\n/**\n * math/cos - cosine of radians\n */\nexport function evalMathCos(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n return Math.cos(evaluate(args[0], ctx) as number);\n}\n\n/**\n * math/tan - tangent of radians\n */\nexport function evalMathTan(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n return Math.tan(evaluate(args[0], ctx) as number);\n}\n\n/**\n * math/asin - arcsine (inverse sine) in radians\n */\nexport function evalMathAsin(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n return Math.asin(evaluate(args[0], ctx) as number);\n}\n\n/**\n * math/acos - arccosine (inverse cosine) in radians\n */\nexport function evalMathAcos(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n return Math.acos(evaluate(args[0], ctx) as number);\n}\n\n/**\n * math/atan - arctangent (inverse tangent) in radians\n */\nexport function evalMathAtan(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n return Math.atan(evaluate(args[0], ctx) as number);\n}\n\n/**\n * math/atan2 - atan2(y, x) in radians\n */\nexport function evalMathAtan2(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const y = evaluate(args[0], ctx) as number;\n const x = evaluate(args[1], ctx) as number;\n return Math.atan2(y, x);\n}\n\n/**\n * math/hypot - sqrt(a² + b²)\n */\nexport function evalMathHypot(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const a = evaluate(args[0], ctx) as number;\n const b = evaluate(args[1], ctx) as number;\n return Math.hypot(a, b);\n}\n\n/**\n * math/deg-rad - degrees → radians (deg·π/180)\n */\nexport function evalMathDegRad(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n return (evaluate(args[0], ctx) as number) * (Math.PI / 180);\n}\n\n/**\n * math/rad-deg - radians → degrees (rad·180/π)\n */\nexport function evalMathRadDeg(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n return (evaluate(args[0], ctx) as number) * (180 / Math.PI);\n}\n\n/**\n * math/wrap - wrap v into [min, max); r<=0 → min\n */\nexport function evalMathWrap(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const v = evaluate(args[0], ctx) as number;\n const min = evaluate(args[1], ctx) as number;\n const max = evaluate(args[2], ctx) as number;\n const r = max - min;\n if (r <= 0) {\n return min;\n }\n return min + ((((v - min) % r) + r) % r);\n}\n\n/**\n * math/approach - move cur toward target by at most maxD\n */\nexport function evalMathApproach(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const cur = evaluate(args[0], ctx) as number;\n const target = evaluate(args[1], ctx) as number;\n const maxD = evaluate(args[2], ctx) as number;\n if (Math.abs(target - cur) <= maxD) {\n return target;\n }\n return cur + Math.sign(target - cur) * maxD;\n}\n","/**\n * String Module Runtime Evaluators\n *\n * Runtime implementations for str/* operators.\n *\n * @packageDocumentation\n */\n\nimport type { SExpr } from '../types/expression.js';\nimport type { EvaluationContext } from '../context.js';\n\ntype EvalFn = (expr: SExpr, ctx: EvaluationContext) => unknown;\n\n/**\n * str/len - String length\n */\nexport function evalStrLen(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const s = evaluate(args[0], ctx) as string;\n return s?.length ?? 0;\n}\n\n/**\n * str/concat - Concatenate strings together\n */\nexport function evalStrConcat(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): string {\n return args.map(arg => {\n const val = evaluate(arg, ctx);\n return val !== null && val !== undefined ? String(val) : '';\n }).join('');\n}\n\n/**\n * str/upper - Convert to uppercase\n */\nexport function evalStrUpper(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): string {\n const s = evaluate(args[0], ctx) as string;\n return s?.toUpperCase() ?? '';\n}\n\n/**\n * str/lower - Convert to lowercase\n */\nexport function evalStrLower(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): string {\n const s = evaluate(args[0], ctx) as string;\n return s?.toLowerCase() ?? '';\n}\n\n/**\n * str/trim - Remove leading and trailing whitespace\n */\nexport function evalStrTrim(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): string {\n const s = evaluate(args[0], ctx) as string;\n return s?.trim() ?? '';\n}\n\n/**\n * str/trimStart - Remove leading whitespace\n */\nexport function evalStrTrimStart(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): string {\n const s = evaluate(args[0], ctx) as string;\n return s?.trimStart() ?? '';\n}\n\n/**\n * str/trimEnd - Remove trailing whitespace\n */\nexport function evalStrTrimEnd(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): string {\n const s = evaluate(args[0], ctx) as string;\n return s?.trimEnd() ?? '';\n}\n\n/**\n * str/split - Split string into array by delimiter\n */\nexport function evalStrSplit(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): string[] {\n const s = evaluate(args[0], ctx) as string;\n const delim = evaluate(args[1], ctx) as string;\n return s?.split(delim) ?? [];\n}\n\n/**\n * str/join - Join array elements into string\n */\nexport function evalStrJoin(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): string {\n const arr = evaluate(args[0], ctx) as unknown[];\n const delim = evaluate(args[1], ctx) as string;\n return arr?.join(delim) ?? '';\n}\n\n/**\n * str/slice - Extract substring\n */\nexport function evalStrSlice(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): string {\n const s = evaluate(args[0], ctx) as string;\n const start = evaluate(args[1], ctx) as number;\n const end = args.length > 2 ? (evaluate(args[2], ctx) as number) : undefined;\n return s?.slice(start, end) ?? '';\n}\n\n/**\n * str/replace - Replace first occurrence\n */\nexport function evalStrReplace(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): string {\n const s = evaluate(args[0], ctx) as string;\n const find = evaluate(args[1], ctx) as string;\n const replacement = evaluate(args[2], ctx) as string;\n return s?.replace(find, replacement) ?? '';\n}\n\n/**\n * str/replaceAll - Replace all occurrences\n * Uses replace with global regex for ES2020 compatibility\n */\nexport function evalStrReplaceAll(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): string {\n const s = evaluate(args[0], ctx) as string;\n const find = evaluate(args[1], ctx) as string;\n const replacement = evaluate(args[2], ctx) as string;\n if (!s || !find) return s ?? '';\n // Escape special regex characters in the search string\n const escaped = find.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n return s.replace(new RegExp(escaped, 'g'), replacement);\n}\n\n/**\n * str/includes - Check if string contains substring\n */\nexport function evalStrIncludes(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): boolean {\n const s = evaluate(args[0], ctx) as string;\n const search = evaluate(args[1], ctx) as string;\n return s?.includes(search) ?? false;\n}\n\n/**\n * str/startsWith - Check if string starts with prefix\n */\nexport function evalStrStartsWith(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): boolean {\n const s = evaluate(args[0], ctx) as string;\n const prefix = evaluate(args[1], ctx) as string;\n return s?.startsWith(prefix) ?? false;\n}\n\n/**\n * str/endsWith - Check if string ends with suffix\n */\nexport function evalStrEndsWith(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): boolean {\n const s = evaluate(args[0], ctx) as string;\n const suffix = evaluate(args[1], ctx) as string;\n return s?.endsWith(suffix) ?? false;\n}\n\n/**\n * str/padStart - Pad string from start to target length\n */\nexport function evalStrPadStart(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): string {\n const s = evaluate(args[0], ctx) as string;\n const len = evaluate(args[1], ctx) as number;\n const char = args.length > 2 ? (evaluate(args[2], ctx) as string) : ' ';\n return s?.padStart(len, char) ?? '';\n}\n\n/**\n * str/padEnd - Pad string from end to target length\n */\nexport function evalStrPadEnd(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): string {\n const s = evaluate(args[0], ctx) as string;\n const len = evaluate(args[1], ctx) as number;\n const char = args.length > 2 ? (evaluate(args[2], ctx) as string) : ' ';\n return s?.padEnd(len, char) ?? '';\n}\n\n/**\n * str/repeat - Repeat string n times\n */\nexport function evalStrRepeat(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): string {\n const s = evaluate(args[0], ctx) as string;\n const count = evaluate(args[1], ctx) as number;\n return s?.repeat(count) ?? '';\n}\n\n/**\n * str/reverse - Reverse string\n */\nexport function evalStrReverse(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): string {\n const s = evaluate(args[0], ctx) as string;\n return s?.split('').reverse().join('') ?? '';\n}\n\n/**\n * str/capitalize - Capitalize first character\n */\nexport function evalStrCapitalize(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): string {\n const s = evaluate(args[0], ctx) as string;\n if (!s || s.length === 0) return '';\n return s.charAt(0).toUpperCase() + s.slice(1);\n}\n\n/**\n * str/titleCase - Convert to Title Case\n */\nexport function evalStrTitleCase(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): string {\n const s = evaluate(args[0], ctx) as string;\n if (!s) return '';\n return s.replace(/\\w\\S*/g, (txt) => txt.charAt(0).toUpperCase() + txt.substring(1).toLowerCase());\n}\n\n/**\n * str/camelCase - Convert to camelCase\n */\nexport function evalStrCamelCase(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): string {\n const s = evaluate(args[0], ctx) as string;\n if (!s) return '';\n return s\n .replace(/(?:^\\w|[A-Z]|\\b\\w)/g, (word, index) =>\n index === 0 ? word.toLowerCase() : word.toUpperCase()\n )\n .replace(/\\s+/g, '')\n .replace(/[-_]/g, '');\n}\n\n/**\n * str/kebabCase - Convert to kebab-case\n */\nexport function evalStrKebabCase(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): string {\n const s = evaluate(args[0], ctx) as string;\n if (!s) return '';\n return s\n .replace(/([a-z])([A-Z])/g, '$1-$2')\n .replace(/[\\s_]+/g, '-')\n .toLowerCase();\n}\n\n/**\n * str/snakeCase - Convert to snake_case\n */\nexport function evalStrSnakeCase(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): string {\n const s = evaluate(args[0], ctx) as string;\n if (!s) return '';\n return s\n .replace(/([a-z])([A-Z])/g, '$1_$2')\n .replace(/[\\s-]+/g, '_')\n .toLowerCase();\n}\n\n/**\n * str/default - Return default if value is null/undefined/empty\n */\nexport function evalStrDefault(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): string {\n const s = evaluate(args[0], ctx);\n const defaultValue = evaluate(args[1], ctx) as string;\n if (s === null || s === undefined || s === '') {\n return defaultValue;\n }\n return s as string;\n}\n\n/**\n * str/template - Variable substitution in template string\n */\nexport function evalStrTemplate(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): string {\n const template = evaluate(args[0], ctx) as string;\n const vars = evaluate(args[1], ctx) as Record<string, unknown>;\n if (!template) return '';\n return template.replace(/\\{(\\w+)\\}/g, (_, key) => {\n const value = vars?.[key];\n return value !== undefined ? String(value) : '';\n });\n}\n\n/**\n * str/truncate - Truncate string with optional suffix\n */\nexport function evalStrTruncate(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): string {\n const s = evaluate(args[0], ctx) as string;\n const len = evaluate(args[1], ctx) as number;\n const suffix = args.length > 2 ? (evaluate(args[2], ctx) as string) : '...';\n if (!s || s.length <= len) return s ?? '';\n return s.slice(0, len - suffix.length) + suffix;\n}\n","/**\n * Array Module Runtime Evaluators\n *\n * Runtime implementations for array/* operators.\n * Supports lambda expressions for predicates and transformations.\n *\n * @packageDocumentation\n */\n\nimport type { SExpr } from '../types/expression.js';\nimport type { EvaluationContext } from '../context.js';\nimport { createChildContext } from '../context.js';\nimport { isSExpr, getOperator, getArgs } from '../types/expression.js';\n\ntype EvalFn = (expr: SExpr, ctx: EvaluationContext) => unknown;\n\n/**\n * Evaluate an expression with @item and @index bound in context.\n * This matches the Rust evaluator's approach for map/filter/find/some/every.\n *\n * Supports two lambda styles:\n * - Implicit: [\"array/map\", arr, [\"*\", \"@item\", 2]] (uses @item/@index)\n * - Explicit: [\"array/map\", arr, [\"fn\", \"x\", [\"*\", \"@x\", 2]]] (named param)\n *\n * When the expression is [\"fn\", param, body], the param name is bound to the\n * item value and the body is evaluated directly (avoiding dispatch which would\n * return a closure instead of applying it).\n */\nfunction evalWithItem(\n expr: SExpr,\n evaluate: EvalFn,\n ctx: EvaluationContext,\n item: unknown,\n index: number\n): unknown {\n const locals = new Map<string, unknown>();\n locals.set('item', item);\n locals.set('index', index);\n\n // Handle fn/lambda structurally: bind named param(s) to item/index\n if (isSExpr(expr)) {\n const op = getOperator(expr);\n if (op === 'fn' || op === 'lambda') {\n const fnArgs = getArgs(expr);\n const params = fnArgs[0];\n const body = fnArgs[1];\n\n if (typeof params === 'string') {\n const key = params.startsWith('@') ? params.slice(1) : params;\n locals.set(key, item);\n } else if (Array.isArray(params)) {\n const paramNames = params as string[];\n const values = [item, index];\n for (let i = 0; i < paramNames.length; i++) {\n const p = paramNames[i] as string;\n const key = p.startsWith('@') ? p.slice(1) : p;\n locals.set(key, values[i]);\n }\n }\n\n const childCtx = createChildContext(ctx, locals);\n return evaluate(body as SExpr, childCtx);\n }\n }\n\n const childCtx = createChildContext(ctx, locals);\n let result = evaluate(expr, childCtx);\n // Re-evaluate when the immediate result is itself an SExpression. The\n // canonical case is std-stats's per-metric filter: the lolo lambda\n // dereferences `(object/get @metric \"filter\" true)` which returns the\n // stored predicate SExpression as a value. Without this re-eval the\n // predicate would be a literal array (truthy for every row). The\n // re-eval recurses through fn-form via the operator branch above so\n // `[\"fn\", \"row\", body]` predicates bind @row=item correctly.\n if (isSExpr(result)) {\n result = evalWithItem(result as SExpr, evaluate, childCtx, item, index);\n } else if (typeof result === 'function') {\n // The literal-object reduction pass already dispatched the stored\n // `[\"fn\", …]` to an evalFn closure (config literals are evaluated once\n // wholesale), so apply the closure per evalFn's `(item, evaluate, ctx)`\n // contract instead of returning it as a truthy predicate.\n result = (result as (item: unknown, evaluate: EvalFn, ctx: EvaluationContext) => unknown)(item, evaluate, childCtx);\n }\n return result;\n}\n\n/**\n * Evaluate a reducer lambda with named params bound in context.\n * Used by array/reduce: [\"fn\", [\"acc\", \"x\"], body]\n * Binds each named param to the corresponding value.\n */\nfunction evalReduceLambda(\n lambdaExpr: SExpr,\n evaluate: EvalFn,\n ctx: EvaluationContext,\n acc: unknown,\n item: unknown\n): unknown {\n const locals = new Map<string, unknown>();\n\n if (isSExpr(lambdaExpr) && getOperator(lambdaExpr) === 'fn') {\n const fnArgs = getArgs(lambdaExpr);\n const params = fnArgs[0];\n const body = fnArgs[1];\n\n if (Array.isArray(params)) {\n const paramNames = params as string[];\n const values = [acc, item];\n paramNames.forEach((p, i) => {\n const key = (p as string).startsWith('@') ? (p as string).slice(1) : (p as string);\n locals.set(key, values[i]);\n });\n } else if (typeof params === 'string') {\n const key = params.startsWith('@') ? params.slice(1) : params;\n locals.set(key, acc);\n }\n\n const childCtx = createChildContext(ctx, locals);\n return evaluate(body as SExpr, childCtx);\n }\n\n // Fallback: evaluate expression with acc/item bound as @item/@index\n locals.set('acc', acc);\n locals.set('item', item);\n const childCtx = createChildContext(ctx, locals);\n return evaluate(lambdaExpr, childCtx);\n}\n\n/**\n * array/len - Array length\n */\nexport function evalArrayLen(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const arr = evaluate(args[0], ctx) as unknown[];\n return arr?.length ?? 0;\n}\n\n/**\n * array/range - Generate a numeric range. Matches orbital-core ArrayRangeOp:\n * (range n) => [0,n); (range start end) => [start,end); 3rd arg = step (default 1).\n * start inclusive, end exclusive.\n */\nexport function evalArrayRange(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number[] {\n const first = Number(evaluate(args[0], ctx));\n const start = args.length === 1 ? 0 : first;\n const end = args.length === 1 ? first : Number(evaluate(args[1], ctx));\n const step = args.length > 2 ? Number(evaluate(args[2], ctx)) : 1;\n const out: number[] = [];\n if (!Number.isFinite(start) || !Number.isFinite(end) || !Number.isFinite(step) || step === 0) {\n return out;\n }\n if (step > 0) {\n for (let current = start; current < end; current += step) out.push(current);\n } else {\n for (let current = start; current > end; current += step) out.push(current);\n }\n return out;\n}\n\n/**\n * array/empty? - Check if array is empty\n */\nexport function evalArrayEmpty(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): boolean {\n const arr = evaluate(args[0], ctx) as unknown[];\n return !arr || arr.length === 0;\n}\n\n/**\n * array/first - Get first element\n */\nexport function evalArrayFirst(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): unknown {\n const arr = evaluate(args[0], ctx) as unknown[];\n return arr?.[0] ?? null;\n}\n\n/**\n * array/last - Get last element\n */\nexport function evalArrayLast(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): unknown {\n const arr = evaluate(args[0], ctx) as unknown[];\n if (!Array.isArray(arr) || arr.length === 0) return null;\n return arr[arr.length - 1];\n}\n\n/**\n * array/nth - Get element at index\n */\nexport function evalArrayNth(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): unknown {\n const arr = evaluate(args[0], ctx) as unknown[];\n const index = evaluate(args[1], ctx) as number;\n return arr?.[index] ?? null;\n}\n\n/**\n * array/slice - Extract subarray\n */\nexport function evalArraySlice(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): unknown[] {\n const arr = evaluate(args[0], ctx) as unknown[];\n const start = evaluate(args[1], ctx) as number;\n const end = args.length > 2 ? (evaluate(args[2], ctx) as number) : undefined;\n return arr?.slice(start, end) ?? [];\n}\n\n/**\n * array/concat - Concatenate arrays\n */\nexport function evalArrayConcat(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): unknown[] {\n const arrays = args.map((a) => evaluate(a, ctx) as unknown[]);\n return arrays.reduce((acc, arr) => acc.concat(arr ?? []), [] as unknown[]);\n}\n\n/**\n * array/append - Add item to end (returns new array)\n */\nexport function evalArrayAppend(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): unknown[] {\n const arr = evaluate(args[0], ctx) as unknown[];\n const item = evaluate(args[1], ctx);\n return [...(arr ?? []), item];\n}\n\n/**\n * array/prepend - Add item to start (returns new array)\n */\nexport function evalArrayPrepend(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): unknown[] {\n const arr = evaluate(args[0], ctx) as unknown[];\n const item = evaluate(args[1], ctx);\n return [item, ...(arr ?? [])];\n}\n\n/**\n * array/insert - Insert item at index (returns new array)\n */\nexport function evalArrayInsert(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): unknown[] {\n const arr = evaluate(args[0], ctx) as unknown[];\n const index = evaluate(args[1], ctx) as number;\n const item = evaluate(args[2], ctx);\n const result = [...(arr ?? [])];\n result.splice(index, 0, item);\n return result;\n}\n\n/**\n * array/remove - Remove item at index (returns new array)\n */\nexport function evalArrayRemove(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): unknown[] {\n const arr = evaluate(args[0], ctx) as unknown[];\n const index = evaluate(args[1], ctx) as number;\n const result = [...(arr ?? [])];\n result.splice(index, 1);\n return result;\n}\n\n/**\n * array/removeItem - Remove first matching item (returns new array)\n */\nexport function evalArrayRemoveItem(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): unknown[] {\n const arr = evaluate(args[0], ctx) as unknown[];\n const item = evaluate(args[1], ctx);\n const index = arr?.indexOf(item) ?? -1;\n if (index === -1) return arr ?? [];\n const result = [...arr];\n result.splice(index, 1);\n return result;\n}\n\n/**\n * array/reverse - Reverse array order (returns new array)\n */\nexport function evalArrayReverse(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): unknown[] {\n const arr = evaluate(args[0], ctx) as unknown[];\n return [...(arr ?? [])].reverse();\n}\n\n/**\n * array/sort - Sort array (returns new array)\n */\nexport function evalArraySort(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): unknown[] {\n const arr = evaluate(args[0], ctx) as unknown[];\n const key = args.length > 1 ? (evaluate(args[1], ctx) as string) : undefined;\n const dir = args.length > 2 ? (evaluate(args[2], ctx) as string) : 'asc';\n\n const result = [...(arr ?? [])];\n\n if (key) {\n result.sort((a, b) => {\n const aVal = (a as Record<string, unknown>)[key] as string | number;\n const bVal = (b as Record<string, unknown>)[key] as string | number;\n if (aVal < bVal) return dir === 'asc' ? -1 : 1;\n if (aVal > bVal) return dir === 'asc' ? 1 : -1;\n return 0;\n });\n } else {\n result.sort((a, b) => {\n const aVal = a as string | number;\n const bVal = b as string | number;\n if (aVal < bVal) return dir === 'asc' ? -1 : 1;\n if (aVal > bVal) return dir === 'asc' ? 1 : -1;\n return 0;\n });\n }\n\n return result;\n}\n\n/**\n * array/shuffle - Randomly shuffle array (returns new array)\n */\nexport function evalArrayShuffle(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): unknown[] {\n const arr = evaluate(args[0], ctx) as unknown[];\n const result = [...(arr ?? [])];\n for (let i = result.length - 1; i > 0; i--) {\n const j = Math.floor(Math.random() * (i + 1));\n [result[i], result[j]] = [result[j], result[i]];\n }\n return result;\n}\n\n/**\n * array/unique - Remove duplicates (returns new array)\n */\nexport function evalArrayUnique(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): unknown[] {\n const arr = evaluate(args[0], ctx) as unknown[];\n return [...new Set(arr ?? [])];\n}\n\n/**\n * array/flatten - Flatten nested arrays one level\n */\nexport function evalArrayFlatten(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): unknown[] {\n const arr = evaluate(args[0], ctx) as unknown[];\n return (arr ?? []).flat();\n}\n\n/**\n * array/zip - Pair elements from two arrays\n */\nexport function evalArrayZip(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): unknown[][] {\n const arr1 = evaluate(args[0], ctx) as unknown[];\n const arr2 = evaluate(args[1], ctx) as unknown[];\n const len = Math.min(arr1?.length ?? 0, arr2?.length ?? 0);\n const result: unknown[][] = [];\n for (let i = 0; i < len; i++) {\n result.push([arr1[i], arr2[i]]);\n }\n return result;\n}\n\n/**\n * array/includes - Check if array contains item\n */\nexport function evalArrayIncludes(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): boolean {\n const arr = evaluate(args[0], ctx) as unknown[];\n const item = evaluate(args[1], ctx);\n return arr?.includes(item) ?? false;\n}\n\n/**\n * array/indexOf - Find index of item (-1 if not found)\n */\nexport function evalArrayIndexOf(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const arr = evaluate(args[0], ctx) as unknown[];\n const item = evaluate(args[1], ctx);\n return arr?.indexOf(item) ?? -1;\n}\n\n/**\n * array/find - Find first element matching predicate.\n * Predicate is an expression using @item (and optionally @index).\n */\nexport function evalArrayFind(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): unknown {\n const arr = evaluate(args[0], ctx) as unknown[];\n const predExpr = args[1];\n // No-match returns null (not JS `undefined`) to match the Rust FindOp\n // contract and the `(!= (array/find …) null)` checks behaviors rely on.\n return (arr ?? []).find((item, i) => evalWithItem(predExpr, evaluate, ctx, item, i)) ?? null;\n}\n\n/**\n * array/findIndex - Find index of first element matching predicate (-1 if none).\n * Predicate is an expression using @item (and optionally @index).\n */\nexport function evalArrayFindIndex(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const arr = evaluate(args[0], ctx) as unknown[];\n const predExpr = args[1];\n return (arr ?? []).findIndex((item, i) => evalWithItem(predExpr, evaluate, ctx, item, i));\n}\n\n/**\n * array/filter - Keep elements matching predicate.\n * Predicate is an expression using @item (and optionally @index).\n */\nexport function evalArrayFilter(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): unknown[] {\n const arr = evaluate(args[0], ctx) as unknown[];\n const predExpr = args[1];\n return (arr ?? []).filter((item, i) => evalWithItem(predExpr, evaluate, ctx, item, i));\n}\n\n/**\n * array/reject - Remove elements matching predicate.\n * Predicate is an expression using @item (and optionally @index).\n */\nexport function evalArrayReject(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): unknown[] {\n const arr = evaluate(args[0], ctx) as unknown[];\n const predExpr = args[1];\n return (arr ?? []).filter((item, i) => !evalWithItem(predExpr, evaluate, ctx, item, i));\n}\n\n/**\n * array/map - Transform each element.\n * Mapper is an expression using @item (and optionally @index).\n */\nexport function evalArrayMap(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): unknown[] {\n const arr = evaluate(args[0], ctx) as unknown[];\n const mapExpr = args[1];\n return (arr ?? []).map((item, i) => evalWithItem(mapExpr, evaluate, ctx, item, i));\n}\n\n/**\n * array/reduce - Reduce array to single value.\n * Arg order matches Rust evaluator: [array, initialValue, [\"fn\", [\"acc\", \"x\"], body]]\n */\nexport function evalArrayReduce(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): unknown {\n const arr = evaluate(args[0], ctx) as unknown[];\n const init = evaluate(args[1], ctx);\n const reducerExpr = args[2];\n return (arr ?? []).reduce(\n (acc, item) => evalReduceLambda(reducerExpr, evaluate, ctx, acc, item),\n init\n );\n}\n\n/**\n * array/every - Check if all elements match predicate.\n * Predicate is an expression using @item (and optionally @index).\n */\nexport function evalArrayEvery(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): boolean {\n const arr = evaluate(args[0], ctx) as unknown[];\n const predExpr = args[1];\n return (arr ?? []).every((item, i) => Boolean(evalWithItem(predExpr, evaluate, ctx, item, i)));\n}\n\n/**\n * array/some - Check if any element matches predicate.\n * Predicate is an expression using @item (and optionally @index).\n */\nexport function evalArraySome(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): boolean {\n const arr = evaluate(args[0], ctx) as unknown[];\n const predExpr = args[1];\n return (arr ?? []).some((item, i) => Boolean(evalWithItem(predExpr, evaluate, ctx, item, i)));\n}\n\n/**\n * array/count - Count elements (optionally matching predicate).\n * Predicate is an expression using @item (and optionally @index).\n */\nexport function evalArrayCount(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const arr = evaluate(args[0], ctx) as unknown[];\n if (args.length > 1) {\n const predExpr = args[1];\n return (arr ?? []).filter((item, i) => evalWithItem(predExpr, evaluate, ctx, item, i)).length;\n }\n return arr?.length ?? 0;\n}\n\n/**\n * array/sum - Sum values (optionally by field)\n */\nexport function evalArraySum(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const arr = evaluate(args[0], ctx) as unknown[];\n const key = args.length > 1 ? (evaluate(args[1], ctx) as string) : undefined;\n\n return (arr ?? []).reduce((sum: number, item) => {\n const value = key ? (item as Record<string, unknown>)[key] : item;\n return sum + (typeof value === 'number' ? value : 0);\n }, 0);\n}\n\n/**\n * array/avg - Average of values (optionally by field)\n */\nexport function evalArrayAvg(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const arr = evaluate(args[0], ctx) as unknown[];\n if (!arr || arr.length === 0) return 0;\n\n const key = args.length > 1 ? (evaluate(args[1], ctx) as string) : undefined;\n\n const sum = arr.reduce((s: number, item) => {\n const value = key ? (item as Record<string, unknown>)[key] : item;\n return s + (typeof value === 'number' ? value : 0);\n }, 0);\n\n return sum / arr.length;\n}\n\n/**\n * array/min - Minimum value (optionally by field)\n */\nexport function evalArrayMin(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const arr = evaluate(args[0], ctx) as unknown[];\n if (!arr || arr.length === 0) return 0;\n\n const key = args.length > 1 ? (evaluate(args[1], ctx) as string) : undefined;\n\n const values = arr.map((item) => {\n const value = key ? (item as Record<string, unknown>)[key] : item;\n return typeof value === 'number' ? value : Infinity;\n });\n\n return Math.min(...values);\n}\n\n/**\n * array/max - Maximum value (optionally by field)\n */\nexport function evalArrayMax(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const arr = evaluate(args[0], ctx) as unknown[];\n if (!arr || arr.length === 0) return 0;\n\n const key = args.length > 1 ? (evaluate(args[1], ctx) as string) : undefined;\n\n const values = arr.map((item) => {\n const value = key ? (item as Record<string, unknown>)[key] : item;\n return typeof value === 'number' ? value : -Infinity;\n });\n\n return Math.max(...values);\n}\n\n/**\n * array/groupBy - Group elements by field value\n */\nexport function evalArrayGroupBy(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): Record<string, unknown[]> {\n const arr = evaluate(args[0], ctx) as unknown[];\n const key = evaluate(args[1], ctx) as string;\n\n const result: Record<string, unknown[]> = {};\n for (const item of arr ?? []) {\n const groupKey = String((item as Record<string, unknown>)[key] ?? 'undefined');\n if (!result[groupKey]) {\n result[groupKey] = [];\n }\n result[groupKey].push(item);\n }\n return result;\n}\n\n/**\n * array/partition - Split array by predicate into [matches, nonMatches].\n * Predicate is an expression using @item (and optionally @index).\n */\nexport function evalArrayPartition(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): [unknown[], unknown[]] {\n const arr = evaluate(args[0], ctx) as unknown[];\n const predExpr = args[1];\n\n const matches: unknown[] = [];\n const nonMatches: unknown[] = [];\n\n (arr ?? []).forEach((item, i) => {\n if (evalWithItem(predExpr, evaluate, ctx, item, i)) {\n matches.push(item);\n } else {\n nonMatches.push(item);\n }\n });\n\n return [matches, nonMatches];\n}\n\n/**\n * array/take - Take first n elements\n */\nexport function evalArrayTake(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): unknown[] {\n const arr = evaluate(args[0], ctx) as unknown[];\n const n = evaluate(args[1], ctx) as number;\n return (arr ?? []).slice(0, n);\n}\n\n/**\n * array/drop - Skip first n elements\n */\nexport function evalArrayDrop(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): unknown[] {\n const arr = evaluate(args[0], ctx) as unknown[];\n const n = evaluate(args[1], ctx) as number;\n return (arr ?? []).slice(n);\n}\n\n/**\n * array/takeLast - Take last n elements\n */\nexport function evalArrayTakeLast(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): unknown[] {\n const arr = evaluate(args[0], ctx) as unknown[];\n const n = evaluate(args[1], ctx) as number;\n return (arr ?? []).slice(-n);\n}\n\n/**\n * array/dropLast - Skip last n elements\n */\nexport function evalArrayDropLast(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): unknown[] {\n const arr = evaluate(args[0], ctx) as unknown[];\n const n = evaluate(args[1], ctx) as number;\n return (arr ?? []).slice(0, -n);\n}\n","/**\n * Object Module Runtime Evaluators\n *\n * Runtime implementations for object/* operators.\n * All operations are immutable (return new objects).\n *\n * @packageDocumentation\n */\n\nimport type { SExpr } from '../types/expression.js';\nimport type { EvaluationContext } from '../context.js';\nimport { createChildContext } from '../context.js';\nimport { isSExpr, getOperator, getArgs } from '../types/expression.js';\n\ntype EvalFn = (expr: SExpr, ctx: EvaluationContext) => unknown;\n\n/** Keys that must never be written via a path/merge — guards against prototype pollution. */\nconst FORBIDDEN_KEYS = new Set(['__proto__', 'constructor', 'prototype']);\n\n/**\n * Helper to evaluate a lambda expression with bound variable(s).\n */\nfunction evalLambda(\n lambdaExpr: SExpr,\n evaluate: EvalFn,\n ctx: EvaluationContext,\n ...values: unknown[]\n): unknown {\n if (!isSExpr(lambdaExpr) || getOperator(lambdaExpr) !== 'fn') {\n return evaluate(lambdaExpr, ctx);\n }\n\n const args = getArgs(lambdaExpr);\n const params = args[0];\n const body = args[1];\n\n // Create new locals map for the child context\n const newLocals = new Map<string, unknown>();\n\n if (Array.isArray(params)) {\n // Multiple params: [\"fn\", [\"a\", \"b\"], body]\n const paramNames = params as string[];\n values.forEach((v, i) => {\n if (paramNames[i]) {\n const paramName = paramNames[i];\n // Store without @ prefix - resolveBinding strips @ before lookup\n const key = paramName.startsWith('@') ? paramName.slice(1) : paramName;\n newLocals.set(key, v);\n }\n });\n } else if (typeof params === 'string') {\n // Single param: [\"fn\", \"x\", body]\n // Store without @ prefix - resolveBinding strips @ before lookup\n const paramName = params.startsWith('@') ? params.slice(1) : params;\n newLocals.set(paramName, values[0]);\n }\n\n const childCtx = createChildContext(ctx, newLocals);\n\n return evaluate(body, childCtx);\n}\n\n/**\n * object/keys - Get object keys as array\n */\nexport function evalObjectKeys(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): string[] {\n const obj = evaluate(args[0], ctx) as Record<string, unknown>;\n return Object.keys(obj ?? {});\n}\n\n/**\n * object/values - Get object values as array\n */\nexport function evalObjectValues(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): unknown[] {\n const obj = evaluate(args[0], ctx) as Record<string, unknown>;\n return Object.values(obj ?? {});\n}\n\n/**\n * object/entries - Get [key, value] pairs as array\n */\nexport function evalObjectEntries(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): [string, unknown][] {\n const obj = evaluate(args[0], ctx) as Record<string, unknown>;\n return Object.entries(obj ?? {});\n}\n\n/**\n * object/fromEntries - Create object from [key, value] pairs\n */\nexport function evalObjectFromEntries(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): Record<string, unknown> {\n const entries = evaluate(args[0], ctx) as [string, unknown][];\n return Object.fromEntries(entries ?? []);\n}\n\n/**\n * object/get - Get nested value by path\n */\nexport function evalObjectGet(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): unknown {\n const obj = evaluate(args[0], ctx) as Record<string, unknown>;\n const path = evaluate(args[1], ctx) as string;\n const defaultValue = args.length > 2 ? evaluate(args[2], ctx) : undefined;\n\n if (!obj || !path) return defaultValue;\n\n const parts = path.split('.');\n let current: unknown = obj;\n\n for (const part of parts) {\n if (current === null || current === undefined) {\n return defaultValue;\n }\n current = (current as Record<string, unknown>)[part];\n }\n\n return current !== undefined ? current : defaultValue;\n}\n\n/**\n * object/set - Set nested value by path (returns new object)\n */\nexport function evalObjectSet(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): Record<string, unknown> {\n const obj = evaluate(args[0], ctx) as Record<string, unknown>;\n const path = evaluate(args[1], ctx) as string;\n const value = evaluate(args[2], ctx);\n\n if (!path) return obj ?? {};\n\n const result = structuredClone(obj ?? {});\n const parts = path.split('.');\n if (parts.some((p) => FORBIDDEN_KEYS.has(p))) {\n // Refuse __proto__/constructor/prototype segments — prevents prototype pollution.\n return result;\n }\n let current = result;\n\n for (let i = 0; i < parts.length - 1; i++) {\n const part = parts[i];\n if (!current[part] || typeof current[part] !== 'object') {\n current[part] = {};\n }\n current = current[part] as Record<string, unknown>;\n }\n\n current[parts[parts.length - 1]] = value;\n return result;\n}\n\n/**\n * object/has - Check if path exists\n */\nexport function evalObjectHas(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): boolean {\n const obj = evaluate(args[0], ctx) as Record<string, unknown>;\n const path = evaluate(args[1], ctx) as string;\n\n if (!obj || !path) return false;\n\n const parts = path.split('.');\n let current: unknown = obj;\n\n for (const part of parts) {\n if (current === null || current === undefined) {\n return false;\n }\n if (!Object.prototype.hasOwnProperty.call(current, part)) {\n return false;\n }\n current = (current as Record<string, unknown>)[part];\n }\n\n return true;\n}\n\n/**\n * object/merge - Shallow merge objects (later wins)\n */\nexport function evalObjectMerge(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): Record<string, unknown> {\n const objects = args.map((a) => evaluate(a, ctx) as Record<string, unknown>);\n return Object.assign({}, ...objects.map((o) => o ?? {}));\n}\n\n/**\n * object/deepMerge - Deep merge objects (later wins)\n */\nexport function evalObjectDeepMerge(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): Record<string, unknown> {\n const objects = args.map((a) => evaluate(a, ctx) as Record<string, unknown>);\n\n function deepMerge(\n target: Record<string, unknown>,\n source: Record<string, unknown>\n ): Record<string, unknown> {\n const result = { ...target };\n for (const key of Object.keys(source)) {\n if (FORBIDDEN_KEYS.has(key)) continue; // skip prototype-polluting keys\n if (\n source[key] !== null &&\n typeof source[key] === 'object' &&\n !Array.isArray(source[key]) &&\n target[key] !== null &&\n typeof target[key] === 'object' &&\n !Array.isArray(target[key])\n ) {\n result[key] = deepMerge(\n target[key] as Record<string, unknown>,\n source[key] as Record<string, unknown>\n );\n } else {\n result[key] = source[key];\n }\n }\n return result;\n }\n\n return objects.reduce((acc, obj) => deepMerge(acc, obj ?? {}), {} as Record<string, unknown>);\n}\n\n/**\n * object/pick - Select only specified keys\n */\nexport function evalObjectPick(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): Record<string, unknown> {\n const obj = evaluate(args[0], ctx) as Record<string, unknown>;\n const keys = evaluate(args[1], ctx) as string[];\n\n const result: Record<string, unknown> = {};\n for (const key of keys ?? []) {\n if (obj && Object.prototype.hasOwnProperty.call(obj, key)) {\n result[key] = obj[key];\n }\n }\n return result;\n}\n\n/**\n * object/omit - Exclude specified keys\n */\nexport function evalObjectOmit(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): Record<string, unknown> {\n const obj = evaluate(args[0], ctx) as Record<string, unknown>;\n const keys = evaluate(args[1], ctx) as string[];\n\n const keysSet = new Set(keys ?? []);\n const result: Record<string, unknown> = {};\n for (const key of Object.keys(obj ?? {})) {\n if (!keysSet.has(key)) {\n result[key] = obj[key];\n }\n }\n return result;\n}\n\n/**\n * object/mapValues - Transform all values\n */\nexport function evalObjectMapValues(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): Record<string, unknown> {\n const obj = evaluate(args[0], ctx) as Record<string, unknown>;\n const lambda = args[1];\n\n const result: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(obj ?? {})) {\n result[key] = evalLambda(lambda, evaluate, ctx, value);\n }\n return result;\n}\n\n/**\n * object/mapKeys - Transform all keys\n */\nexport function evalObjectMapKeys(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): Record<string, unknown> {\n const obj = evaluate(args[0], ctx) as Record<string, unknown>;\n const lambda = args[1];\n\n const result: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(obj ?? {})) {\n const newKey = String(evalLambda(lambda, evaluate, ctx, key));\n result[newKey] = value;\n }\n return result;\n}\n\n/**\n * object/filter - Filter entries by predicate\n */\nexport function evalObjectFilter(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): Record<string, unknown> {\n const obj = evaluate(args[0], ctx) as Record<string, unknown>;\n const lambda = args[1];\n\n const result: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(obj ?? {})) {\n if (evalLambda(lambda, evaluate, ctx, key, value)) {\n result[key] = value;\n }\n }\n return result;\n}\n\n/**\n * object/empty? - Check if object has no keys\n */\nexport function evalObjectEmpty(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): boolean {\n const obj = evaluate(args[0], ctx) as Record<string, unknown>;\n return !obj || Object.keys(obj).length === 0;\n}\n\n/**\n * object/equals - Deep equality check\n */\nexport function evalObjectEquals(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): boolean {\n const a = evaluate(args[0], ctx);\n const b = evaluate(args[1], ctx);\n\n function deepEqual(x: unknown, y: unknown): boolean {\n if (x === y) return true;\n if (typeof x !== typeof y) return false;\n if (typeof x !== 'object' || x === null || y === null) return false;\n if (Array.isArray(x) !== Array.isArray(y)) return false;\n\n const xKeys = Object.keys(x);\n const yKeys = Object.keys(y as object);\n if (xKeys.length !== yKeys.length) return false;\n\n for (const key of xKeys) {\n if (!deepEqual((x as Record<string, unknown>)[key], (y as Record<string, unknown>)[key])) {\n return false;\n }\n }\n return true;\n }\n\n return deepEqual(a, b);\n}\n\n/**\n * object/clone - Shallow clone object\n */\nexport function evalObjectClone(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): Record<string, unknown> {\n const obj = evaluate(args[0], ctx) as Record<string, unknown>;\n return { ...(obj ?? {}) };\n}\n\n/**\n * object/deepClone - Deep clone object\n */\nexport function evalObjectDeepClone(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): Record<string, unknown> {\n const obj = evaluate(args[0], ctx) as Record<string, unknown>;\n return structuredClone(obj ?? {});\n}\n\n/**\n * path - Build a dot-separated path string from segments\n *\n * Used for dynamic field access in set effects:\n * [\"set\", [\"path\", \"formValues\", \"@payload.fieldId\"], \"@payload.value\"]\n *\n * @example\n * [\"path\", \"formValues\", \"A9\"] => \"formValues.A9\"\n * [\"path\", \"@entity.prefix\", \"field\"] => \"myPrefix.field\" (if @entity.prefix = \"myPrefix\")\n */\nexport function evalPath(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): string {\n if (args.length === 0) {\n throw new Error('path operator requires at least 1 argument');\n }\n\n const segments = args.map((arg) => {\n const evaluated = evaluate(arg, ctx);\n return String(evaluated ?? '');\n });\n\n return segments.join('.');\n}\n","/**\n * Validate Module Runtime Evaluators\n *\n * Runtime implementations for validate/* operators.\n * Provides validation functions for form inputs and data.\n *\n * @packageDocumentation\n */\n\nimport type { SExpr } from '../types/expression.js';\nimport type { EvaluationContext } from '../context.js';\n\ntype EvalFn = (expr: SExpr, ctx: EvaluationContext) => unknown;\n\n/**\n * validate/required - Check if value is not null, undefined, or empty string\n */\nexport function evalValidateRequired(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): boolean {\n const value = evaluate(args[0], ctx);\n return value !== null && value !== undefined && value !== '';\n}\n\n/**\n * validate/string - Check if value is a string\n */\nexport function evalValidateString(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): boolean {\n const value = evaluate(args[0], ctx);\n return typeof value === 'string';\n}\n\n/**\n * validate/number - Check if value is a number\n */\nexport function evalValidateNumber(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): boolean {\n const value = evaluate(args[0], ctx);\n return typeof value === 'number' && !isNaN(value);\n}\n\n/**\n * validate/boolean - Check if value is a boolean\n */\nexport function evalValidateBoolean(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): boolean {\n const value = evaluate(args[0], ctx);\n return typeof value === 'boolean';\n}\n\n/**\n * validate/array - Check if value is an array\n */\nexport function evalValidateArray(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): boolean {\n const value = evaluate(args[0], ctx);\n return Array.isArray(value);\n}\n\n/**\n * validate/object - Check if value is an object\n */\nexport function evalValidateObject(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): boolean {\n const value = evaluate(args[0], ctx);\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n\n/**\n * validate/email - Check if value is a valid email format\n */\nexport function evalValidateEmail(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): boolean {\n const value = evaluate(args[0], ctx);\n if (typeof value !== 'string') return false;\n // Simple email regex - covers most valid cases\n const emailRegex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\n return emailRegex.test(value);\n}\n\n/**\n * validate/url - Check if value is a valid URL format\n */\nexport function evalValidateUrl(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): boolean {\n const value = evaluate(args[0], ctx);\n if (typeof value !== 'string') return false;\n try {\n new URL(value);\n return true;\n } catch {\n return false;\n }\n}\n\n/**\n * validate/uuid - Check if value is a valid UUID\n */\nexport function evalValidateUuid(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): boolean {\n const value = evaluate(args[0], ctx);\n if (typeof value !== 'string') return false;\n const uuidRegex = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;\n return uuidRegex.test(value);\n}\n\n/**\n * validate/phone - Check if value is a valid phone number\n */\nexport function evalValidatePhone(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): boolean {\n const value = evaluate(args[0], ctx);\n if (typeof value !== 'string') return false;\n // Simple phone validation - digits, spaces, dashes, parens, and optional leading +\n const phoneRegex = /^\\+?[\\d\\s\\-().]{10,}$/;\n const digits = value.replace(/\\D/g, '');\n return phoneRegex.test(value) && digits.length >= 10;\n}\n\n/**\n * validate/creditCard - Check if value is a valid credit card number (Luhn algorithm)\n */\nexport function evalValidateCreditCard(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): boolean {\n const value = evaluate(args[0], ctx);\n if (typeof value !== 'string') return false;\n\n const digits = value.replace(/\\D/g, '');\n if (digits.length < 13 || digits.length > 19) return false;\n\n // Luhn algorithm\n let sum = 0;\n let isEven = false;\n\n for (let i = digits.length - 1; i >= 0; i--) {\n let digit = parseInt(digits[i], 10);\n if (isEven) {\n digit *= 2;\n if (digit > 9) digit -= 9;\n }\n sum += digit;\n isEven = !isEven;\n }\n\n return sum % 10 === 0;\n}\n\n/**\n * validate/date - Check if value is a valid date\n */\nexport function evalValidateDate(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): boolean {\n const value = evaluate(args[0], ctx);\n if (value instanceof Date) return !isNaN(value.getTime());\n if (typeof value === 'number') return !isNaN(new Date(value).getTime());\n if (typeof value === 'string') return !isNaN(new Date(value).getTime());\n return false;\n}\n\n/**\n * validate/minLength - Check if string/array has minimum length\n */\nexport function evalValidateMinLength(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): boolean {\n const value = evaluate(args[0], ctx);\n const min = evaluate(args[1], ctx) as number;\n\n if (typeof value === 'string' || Array.isArray(value)) {\n return value.length >= min;\n }\n return false;\n}\n\n/**\n * validate/maxLength - Check if string/array has maximum length\n */\nexport function evalValidateMaxLength(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): boolean {\n const value = evaluate(args[0], ctx);\n const max = evaluate(args[1], ctx) as number;\n\n if (typeof value === 'string' || Array.isArray(value)) {\n return value.length <= max;\n }\n return false;\n}\n\n/**\n * validate/length - Check if string/array has exact length\n */\nexport function evalValidateLength(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): boolean {\n const value = evaluate(args[0], ctx);\n const exact = evaluate(args[1], ctx) as number;\n\n if (typeof value === 'string' || Array.isArray(value)) {\n return value.length === exact;\n }\n return false;\n}\n\n/**\n * validate/min - Check if number is >= minimum\n */\nexport function evalValidateMin(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): boolean {\n const value = evaluate(args[0], ctx) as number;\n const min = evaluate(args[1], ctx) as number;\n return typeof value === 'number' && value >= min;\n}\n\n/**\n * validate/max - Check if number is <= maximum\n */\nexport function evalValidateMax(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): boolean {\n const value = evaluate(args[0], ctx) as number;\n const max = evaluate(args[1], ctx) as number;\n return typeof value === 'number' && value <= max;\n}\n\n/**\n * validate/range - Check if number is within range [min, max]\n */\nexport function evalValidateRange(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): boolean {\n const value = evaluate(args[0], ctx) as number;\n const min = evaluate(args[1], ctx) as number;\n const max = evaluate(args[2], ctx) as number;\n return typeof value === 'number' && value >= min && value <= max;\n}\n\n/**\n * validate/pattern - Check if string matches regex pattern\n */\nexport function evalValidatePattern(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): boolean {\n const value = evaluate(args[0], ctx);\n const pattern = evaluate(args[1], ctx) as string;\n\n if (typeof value !== 'string') return false;\n try {\n const regex = new RegExp(pattern);\n return regex.test(value);\n } catch {\n return false;\n }\n}\n\n/**\n * validate/oneOf - Check if value is in list of allowed values\n */\nexport function evalValidateOneOf(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): boolean {\n const value = evaluate(args[0], ctx);\n const options = evaluate(args[1], ctx) as unknown[];\n return (options ?? []).includes(value);\n}\n\n/**\n * validate/noneOf - Check if value is not in list of disallowed values\n */\nexport function evalValidateNoneOf(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): boolean {\n const value = evaluate(args[0], ctx);\n const options = evaluate(args[1], ctx) as unknown[];\n return !(options ?? []).includes(value);\n}\n\n/**\n * validate/equals - Deep equality check\n */\nexport function evalValidateEquals(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): boolean {\n const a = evaluate(args[0], ctx);\n const b = evaluate(args[1], ctx);\n\n function deepEqual(x: unknown, y: unknown): boolean {\n if (x === y) return true;\n if (typeof x !== typeof y) return false;\n if (typeof x !== 'object' || x === null || y === null) return false;\n if (Array.isArray(x) !== Array.isArray(y)) return false;\n\n const xKeys = Object.keys(x);\n const yKeys = Object.keys(y as object);\n if (xKeys.length !== yKeys.length) return false;\n\n for (const key of xKeys) {\n if (!deepEqual((x as Record<string, unknown>)[key], (y as Record<string, unknown>)[key])) {\n return false;\n }\n }\n return true;\n }\n\n return deepEqual(a, b);\n}\n\n/**\n * validate/check - Run multiple validation rules, return { valid, errors }\n */\nexport function evalValidateCheck(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): { valid: boolean; errors: string[] } {\n const value = evaluate(args[0], ctx) as Record<string, unknown>;\n const rules = evaluate(args[1], ctx) as Record<string, [string, ...unknown[]][]>;\n\n const errors: string[] = [];\n\n for (const [field, fieldRules] of Object.entries(rules ?? {})) {\n const fieldValue = value?.[field];\n\n for (const rule of fieldRules ?? []) {\n const [ruleName, ...ruleArgs] = rule;\n let isValid = true;\n\n switch (ruleName) {\n case 'required':\n isValid = fieldValue !== null && fieldValue !== undefined && fieldValue !== '';\n break;\n case 'string':\n isValid = typeof fieldValue === 'string';\n break;\n case 'number':\n isValid = typeof fieldValue === 'number' && !isNaN(fieldValue);\n break;\n case 'boolean':\n isValid = typeof fieldValue === 'boolean';\n break;\n case 'email': {\n const emailRegex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\n isValid = typeof fieldValue === 'string' && emailRegex.test(fieldValue);\n break;\n }\n case 'minLength':\n isValid =\n (typeof fieldValue === 'string' || Array.isArray(fieldValue)) &&\n fieldValue.length >= (ruleArgs[0] as number);\n break;\n case 'maxLength':\n isValid =\n (typeof fieldValue === 'string' || Array.isArray(fieldValue)) &&\n fieldValue.length <= (ruleArgs[0] as number);\n break;\n case 'min':\n isValid = typeof fieldValue === 'number' && fieldValue >= (ruleArgs[0] as number);\n break;\n case 'max':\n isValid = typeof fieldValue === 'number' && fieldValue <= (ruleArgs[0] as number);\n break;\n case 'range':\n isValid =\n typeof fieldValue === 'number' &&\n fieldValue >= (ruleArgs[0] as number) &&\n fieldValue <= (ruleArgs[1] as number);\n break;\n case 'pattern': {\n const regex = new RegExp(ruleArgs[0] as string);\n isValid = typeof fieldValue === 'string' && regex.test(fieldValue);\n break;\n }\n case 'oneOf':\n isValid = (ruleArgs[0] as unknown[])?.includes(fieldValue);\n break;\n default:\n // Unknown rule, skip\n continue;\n }\n\n if (!isValid) {\n errors.push(`${field}: ${ruleName} validation failed`);\n }\n }\n }\n\n return { valid: errors.length === 0, errors };\n}\n","/**\n * Time Module Runtime Evaluators\n *\n * Runtime implementations for time/* operators.\n * Provides date manipulation, formatting, and comparison functions.\n *\n * @packageDocumentation\n */\n\nimport type { SExpr } from '../types/expression.js';\nimport type { EvaluationContext } from '../context.js';\n\ntype EvalFn = (expr: SExpr, ctx: EvaluationContext) => unknown;\n\ntype TimeUnit = 'year' | 'month' | 'week' | 'day' | 'hour' | 'minute' | 'second' | 'ms';\n\nconst MS_PER_SECOND = 1000;\nconst MS_PER_MINUTE = 60 * MS_PER_SECOND;\nconst MS_PER_HOUR = 60 * MS_PER_MINUTE;\nconst MS_PER_DAY = 24 * MS_PER_HOUR;\nconst MS_PER_WEEK = 7 * MS_PER_DAY;\n\n/**\n * time/now - Current timestamp\n */\nexport function evalTimeNow(): number {\n return Date.now();\n}\n\n/**\n * time/today - Today at midnight (local time)\n */\nexport function evalTimeToday(): number {\n const now = new Date();\n now.setHours(0, 0, 0, 0);\n return now.getTime();\n}\n\n/**\n * time/parse - Parse string to timestamp\n */\nexport function evalTimeParse(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const str = evaluate(args[0], ctx) as string;\n // Note: format param is accepted but we use native Date parsing\n // A full implementation would need a date parsing library\n const date = new Date(str);\n return date.getTime();\n}\n\n/**\n * time/format - Format timestamp to string\n */\nexport function evalTimeFormat(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): string {\n const timestamp = evaluate(args[0], ctx) as number;\n const format = evaluate(args[1], ctx) as string;\n\n const date = new Date(timestamp);\n\n // Simple format token replacement\n const tokens: Record<string, string> = {\n YYYY: String(date.getFullYear()),\n YY: String(date.getFullYear()).slice(-2),\n MM: String(date.getMonth() + 1).padStart(2, '0'),\n M: String(date.getMonth() + 1),\n DD: String(date.getDate()).padStart(2, '0'),\n D: String(date.getDate()),\n HH: String(date.getHours()).padStart(2, '0'),\n H: String(date.getHours()),\n mm: String(date.getMinutes()).padStart(2, '0'),\n m: String(date.getMinutes()),\n ss: String(date.getSeconds()).padStart(2, '0'),\n s: String(date.getSeconds()),\n ddd: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'][date.getDay()],\n dddd: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'][\n date.getDay()\n ],\n MMM: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'][\n date.getMonth()\n ],\n MMMM: [\n 'January',\n 'February',\n 'March',\n 'April',\n 'May',\n 'June',\n 'July',\n 'August',\n 'September',\n 'October',\n 'November',\n 'December',\n ][date.getMonth()],\n };\n\n let result = format;\n for (const [token, value] of Object.entries(tokens)) {\n result = result.replace(new RegExp(token, 'g'), value);\n }\n\n return result;\n}\n\n/**\n * time/year - Get year from timestamp\n */\nexport function evalTimeYear(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const timestamp = evaluate(args[0], ctx) as number;\n return new Date(timestamp).getFullYear();\n}\n\n/**\n * time/month - Get month from timestamp (1-12)\n */\nexport function evalTimeMonth(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const timestamp = evaluate(args[0], ctx) as number;\n return new Date(timestamp).getMonth() + 1;\n}\n\n/**\n * time/day - Get day of month from timestamp (1-31)\n */\nexport function evalTimeDay(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const timestamp = evaluate(args[0], ctx) as number;\n return new Date(timestamp).getDate();\n}\n\n/**\n * time/weekday - Get day of week (0=Sunday, 6=Saturday)\n */\nexport function evalTimeWeekday(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const timestamp = evaluate(args[0], ctx) as number;\n return new Date(timestamp).getDay();\n}\n\n/**\n * time/hour - Get hour from timestamp (0-23)\n */\nexport function evalTimeHour(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const timestamp = evaluate(args[0], ctx) as number;\n return new Date(timestamp).getHours();\n}\n\n/**\n * time/minute - Get minute from timestamp (0-59)\n */\nexport function evalTimeMinute(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const timestamp = evaluate(args[0], ctx) as number;\n return new Date(timestamp).getMinutes();\n}\n\n/**\n * time/second - Get second from timestamp (0-59)\n */\nexport function evalTimeSecond(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const timestamp = evaluate(args[0], ctx) as number;\n return new Date(timestamp).getSeconds();\n}\n\n/**\n * Helper to add time to a date\n */\nfunction addTime(date: Date, amount: number, unit: TimeUnit): Date {\n const result = new Date(date);\n\n switch (unit) {\n case 'year':\n result.setFullYear(result.getFullYear() + amount);\n break;\n case 'month':\n result.setMonth(result.getMonth() + amount);\n break;\n case 'week':\n result.setDate(result.getDate() + amount * 7);\n break;\n case 'day':\n result.setDate(result.getDate() + amount);\n break;\n case 'hour':\n result.setHours(result.getHours() + amount);\n break;\n case 'minute':\n result.setMinutes(result.getMinutes() + amount);\n break;\n case 'second':\n result.setSeconds(result.getSeconds() + amount);\n break;\n case 'ms':\n result.setMilliseconds(result.getMilliseconds() + amount);\n break;\n }\n\n return result;\n}\n\n/**\n * time/add - Add time to timestamp\n */\nexport function evalTimeAdd(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const timestamp = evaluate(args[0], ctx) as number;\n const amount = evaluate(args[1], ctx) as number;\n const unit = evaluate(args[2], ctx) as TimeUnit;\n\n const date = new Date(timestamp);\n return addTime(date, amount, unit).getTime();\n}\n\n/**\n * time/subtract - Subtract time from timestamp\n */\nexport function evalTimeSubtract(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const timestamp = evaluate(args[0], ctx) as number;\n const amount = evaluate(args[1], ctx) as number;\n const unit = evaluate(args[2], ctx) as TimeUnit;\n\n const date = new Date(timestamp);\n return addTime(date, -amount, unit).getTime();\n}\n\n/**\n * time/diff - Difference between timestamps\n */\nexport function evalTimeDiff(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const a = evaluate(args[0], ctx) as number;\n const b = evaluate(args[1], ctx) as number;\n const unit = args.length > 2 ? (evaluate(args[2], ctx) as TimeUnit) : 'ms';\n\n const diffMs = a - b;\n\n switch (unit) {\n case 'year':\n return Math.floor(diffMs / (MS_PER_DAY * 365.25));\n case 'month':\n return Math.floor(diffMs / (MS_PER_DAY * 30.44));\n case 'week':\n return Math.floor(diffMs / MS_PER_WEEK);\n case 'day':\n return Math.floor(diffMs / MS_PER_DAY);\n case 'hour':\n return Math.floor(diffMs / MS_PER_HOUR);\n case 'minute':\n return Math.floor(diffMs / MS_PER_MINUTE);\n case 'second':\n return Math.floor(diffMs / MS_PER_SECOND);\n case 'ms':\n default:\n return diffMs;\n }\n}\n\n/**\n * time/startOf - Get start of time period\n */\nexport function evalTimeStartOf(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const timestamp = evaluate(args[0], ctx) as number;\n const unit = evaluate(args[1], ctx) as TimeUnit;\n\n const date = new Date(timestamp);\n\n switch (unit) {\n case 'year':\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n break;\n case 'month':\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n break;\n case 'week': {\n const day = date.getDay();\n date.setDate(date.getDate() - day);\n date.setHours(0, 0, 0, 0);\n break;\n }\n case 'day':\n date.setHours(0, 0, 0, 0);\n break;\n case 'hour':\n date.setMinutes(0, 0, 0);\n break;\n case 'minute':\n date.setSeconds(0, 0);\n break;\n }\n\n return date.getTime();\n}\n\n/**\n * time/endOf - Get end of time period\n */\nexport function evalTimeEndOf(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const timestamp = evaluate(args[0], ctx) as number;\n const unit = evaluate(args[1], ctx) as TimeUnit;\n\n const date = new Date(timestamp);\n\n switch (unit) {\n case 'year':\n date.setMonth(11, 31);\n date.setHours(23, 59, 59, 999);\n break;\n case 'month':\n date.setMonth(date.getMonth() + 1, 0);\n date.setHours(23, 59, 59, 999);\n break;\n case 'week': {\n const day = date.getDay();\n date.setDate(date.getDate() + (6 - day));\n date.setHours(23, 59, 59, 999);\n break;\n }\n case 'day':\n date.setHours(23, 59, 59, 999);\n break;\n case 'hour':\n date.setMinutes(59, 59, 999);\n break;\n case 'minute':\n date.setSeconds(59, 999);\n break;\n }\n\n return date.getTime();\n}\n\n/**\n * time/isBefore - Check if a is before b\n */\nexport function evalTimeIsBefore(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): boolean {\n const a = evaluate(args[0], ctx) as number;\n const b = evaluate(args[1], ctx) as number;\n return a < b;\n}\n\n/**\n * time/isAfter - Check if a is after b\n */\nexport function evalTimeIsAfter(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): boolean {\n const a = evaluate(args[0], ctx) as number;\n const b = evaluate(args[1], ctx) as number;\n return a > b;\n}\n\n/**\n * time/isBetween - Check if date is between start and end\n */\nexport function evalTimeIsBetween(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): boolean {\n const date = evaluate(args[0], ctx) as number;\n const start = evaluate(args[1], ctx) as number;\n const end = evaluate(args[2], ctx) as number;\n return date >= start && date <= end;\n}\n\n/**\n * time/isSame - Check if timestamps are same (optionally by unit)\n */\nexport function evalTimeIsSame(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): boolean {\n const a = evaluate(args[0], ctx) as number;\n const b = evaluate(args[1], ctx) as number;\n const unit = args.length > 2 ? (evaluate(args[2], ctx) as TimeUnit) : undefined;\n\n if (!unit) {\n return a === b;\n }\n\n const dateA = new Date(a);\n const dateB = new Date(b);\n\n switch (unit) {\n case 'year':\n return dateA.getFullYear() === dateB.getFullYear();\n case 'month':\n return (\n dateA.getFullYear() === dateB.getFullYear() && dateA.getMonth() === dateB.getMonth()\n );\n case 'day':\n return (\n dateA.getFullYear() === dateB.getFullYear() &&\n dateA.getMonth() === dateB.getMonth() &&\n dateA.getDate() === dateB.getDate()\n );\n case 'hour':\n return (\n dateA.getFullYear() === dateB.getFullYear() &&\n dateA.getMonth() === dateB.getMonth() &&\n dateA.getDate() === dateB.getDate() &&\n dateA.getHours() === dateB.getHours()\n );\n case 'minute':\n return Math.floor(a / MS_PER_MINUTE) === Math.floor(b / MS_PER_MINUTE);\n case 'second':\n return Math.floor(a / MS_PER_SECOND) === Math.floor(b / MS_PER_SECOND);\n default:\n return a === b;\n }\n}\n\n/**\n * time/isPast - Check if timestamp is in the past\n */\nexport function evalTimeIsPast(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): boolean {\n const timestamp = evaluate(args[0], ctx) as number;\n return timestamp < Date.now();\n}\n\n/**\n * time/isFuture - Check if timestamp is in the future\n */\nexport function evalTimeIsFuture(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): boolean {\n const timestamp = evaluate(args[0], ctx) as number;\n return timestamp > Date.now();\n}\n\n/**\n * time/isToday - Check if timestamp is today\n */\nexport function evalTimeIsToday(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): boolean {\n const timestamp = evaluate(args[0], ctx) as number;\n const date = new Date(timestamp);\n const today = new Date();\n\n return (\n date.getFullYear() === today.getFullYear() &&\n date.getMonth() === today.getMonth() &&\n date.getDate() === today.getDate()\n );\n}\n\n/**\n * time/relative - Format as relative time (\"2 hours ago\", \"in 3 days\")\n */\nexport function evalTimeRelative(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): string {\n const timestamp = evaluate(args[0], ctx) as number;\n const now = Date.now();\n const diff = timestamp - now;\n const absDiff = Math.abs(diff);\n const isPast = diff < 0;\n\n let value: number;\n let unit: string;\n\n if (absDiff < MS_PER_MINUTE) {\n return 'just now';\n } else if (absDiff < MS_PER_HOUR) {\n value = Math.round(absDiff / MS_PER_MINUTE);\n unit = value === 1 ? 'minute' : 'minutes';\n } else if (absDiff < MS_PER_DAY) {\n value = Math.round(absDiff / MS_PER_HOUR);\n unit = value === 1 ? 'hour' : 'hours';\n } else if (absDiff < MS_PER_WEEK) {\n value = Math.round(absDiff / MS_PER_DAY);\n unit = value === 1 ? 'day' : 'days';\n } else if (absDiff < MS_PER_DAY * 30) {\n value = Math.round(absDiff / MS_PER_WEEK);\n unit = value === 1 ? 'week' : 'weeks';\n } else if (absDiff < MS_PER_DAY * 365) {\n value = Math.round(absDiff / (MS_PER_DAY * 30));\n unit = value === 1 ? 'month' : 'months';\n } else {\n value = Math.round(absDiff / (MS_PER_DAY * 365));\n unit = value === 1 ? 'year' : 'years';\n }\n\n return isPast ? `${value} ${unit} ago` : `in ${value} ${unit}`;\n}\n\n/**\n * time/duration - Format milliseconds as duration (\"2h 30m\")\n */\nexport function evalTimeDuration(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): string {\n let ms = evaluate(args[0], ctx) as number;\n\n if (ms < 0) ms = -ms;\n\n const parts: string[] = [];\n\n if (ms >= MS_PER_DAY) {\n const days = Math.floor(ms / MS_PER_DAY);\n parts.push(`${days}d`);\n ms %= MS_PER_DAY;\n }\n\n if (ms >= MS_PER_HOUR) {\n const hours = Math.floor(ms / MS_PER_HOUR);\n parts.push(`${hours}h`);\n ms %= MS_PER_HOUR;\n }\n\n if (ms >= MS_PER_MINUTE) {\n const minutes = Math.floor(ms / MS_PER_MINUTE);\n parts.push(`${minutes}m`);\n ms %= MS_PER_MINUTE;\n }\n\n if (ms >= MS_PER_SECOND && parts.length < 2) {\n const seconds = Math.floor(ms / MS_PER_SECOND);\n parts.push(`${seconds}s`);\n }\n\n return parts.length > 0 ? parts.join(' ') : '0s';\n}\n","/**\n * Format Module Runtime Evaluators\n *\n * Runtime implementations for format/* operators.\n * Provides formatting functions for numbers, currencies, and display values.\n *\n * @packageDocumentation\n */\n\nimport type { SExpr } from '../types/expression.js';\nimport type { EvaluationContext } from '../context.js';\n\ntype EvalFn = (expr: SExpr, ctx: EvaluationContext) => unknown;\n\n/**\n * format/number - Format number with locale-aware separators\n */\nexport function evalFormatNumber(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): string {\n const n = evaluate(args[0], ctx) as number;\n const opts = args.length > 1 ? (evaluate(args[1], ctx) as { decimals?: number; locale?: string }) : {};\n\n const locale = opts?.locale ?? 'en-US';\n const options: Intl.NumberFormatOptions = {};\n\n if (opts?.decimals !== undefined) {\n options.minimumFractionDigits = opts.decimals;\n options.maximumFractionDigits = opts.decimals;\n }\n\n return new Intl.NumberFormat(locale, options).format(n);\n}\n\n/**\n * format/currency - Format as currency\n */\nexport function evalFormatCurrency(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): string {\n const n = evaluate(args[0], ctx) as number;\n const currency = evaluate(args[1], ctx) as string;\n const locale = args.length > 2 ? (evaluate(args[2], ctx) as string) : 'en-US';\n\n return new Intl.NumberFormat(locale, {\n style: 'currency',\n currency: currency,\n }).format(n);\n}\n\n/**\n * format/percent - Format as percentage\n */\nexport function evalFormatPercent(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): string {\n const n = evaluate(args[0], ctx) as number;\n const decimals = args.length > 1 ? (evaluate(args[1], ctx) as number) : 0;\n\n return new Intl.NumberFormat('en-US', {\n style: 'percent',\n minimumFractionDigits: decimals,\n maximumFractionDigits: decimals,\n }).format(n);\n}\n\n/**\n * format/bytes - Format bytes as human-readable size\n */\nexport function evalFormatBytes(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): string {\n const bytes = evaluate(args[0], ctx) as number;\n\n if (bytes === 0) return '0 B';\n\n const units = ['B', 'KB', 'MB', 'GB', 'TB', 'PB'];\n const k = 1024;\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n\n const value = bytes / Math.pow(k, i);\n // Use different precision rules\n if (i === 0) {\n return `${bytes} B`;\n }\n // Round values >= 10, or use 1 decimal for smaller values\n // Also remove .0 for whole numbers\n let formatted: string;\n if (value >= 10) {\n formatted = String(Math.round(value));\n } else if (Number.isInteger(value)) {\n formatted = String(value);\n } else {\n formatted = value.toFixed(1);\n }\n\n return `${formatted} ${units[i]}`;\n}\n\n/**\n * format/ordinal - Format number as ordinal (1st, 2nd, 3rd)\n */\nexport function evalFormatOrdinal(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): string {\n const n = evaluate(args[0], ctx) as number;\n\n const absN = Math.abs(n);\n const lastDigit = absN % 10;\n const lastTwoDigits = absN % 100;\n\n let suffix: string;\n if (lastTwoDigits >= 11 && lastTwoDigits <= 13) {\n suffix = 'th';\n } else if (lastDigit === 1) {\n suffix = 'st';\n } else if (lastDigit === 2) {\n suffix = 'nd';\n } else if (lastDigit === 3) {\n suffix = 'rd';\n } else {\n suffix = 'th';\n }\n\n return `${n}${suffix}`;\n}\n\n/**\n * format/plural - Format count with singular/plural word\n */\nexport function evalFormatPlural(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): string {\n const n = evaluate(args[0], ctx) as number;\n const singular = evaluate(args[1], ctx) as string;\n const plural = evaluate(args[2], ctx) as string;\n\n return `${n} ${Math.abs(n) === 1 ? singular : plural}`;\n}\n\n/**\n * format/list - Format array as natural language list\n */\nexport function evalFormatList(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): string {\n const arr = evaluate(args[0], ctx) as string[];\n const style = args.length > 1 ? (evaluate(args[1], ctx) as 'and' | 'or') : 'and';\n\n if (!arr || arr.length === 0) return '';\n if (arr.length === 1) return arr[0];\n if (arr.length === 2) return `${arr[0]} ${style} ${arr[1]}`;\n\n const last = arr[arr.length - 1];\n const rest = arr.slice(0, -1);\n return `${rest.join(', ')}, ${style} ${last}`;\n}\n\n/**\n * format/phone - Format phone number\n */\nexport function evalFormatPhone(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): string {\n const str = evaluate(args[0], ctx) as string;\n const format = args.length > 1 ? (evaluate(args[1], ctx) as string) : 'US';\n\n // Extract only digits\n const digits = str?.replace(/\\D/g, '') ?? '';\n\n if (format === 'US' && digits.length === 10) {\n return `(${digits.slice(0, 3)}) ${digits.slice(3, 6)}-${digits.slice(6)}`;\n }\n\n if (format === 'US' && digits.length === 11 && digits[0] === '1') {\n return `+1 (${digits.slice(1, 4)}) ${digits.slice(4, 7)}-${digits.slice(7)}`;\n }\n\n // Default: group into chunks of 3-4\n if (digits.length >= 10) {\n return `${digits.slice(0, 3)}-${digits.slice(3, 6)}-${digits.slice(6)}`;\n }\n\n return str;\n}\n\n/**\n * format/creditCard - Format credit card with masked digits\n */\nexport function evalFormatCreditCard(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): string {\n const str = evaluate(args[0], ctx) as string;\n\n const digits = str?.replace(/\\D/g, '') ?? '';\n\n if (digits.length < 4) return str;\n\n // Show only last 4 digits\n const lastFour = digits.slice(-4);\n const masked = '•'.repeat(digits.length - 4);\n\n // Format in groups of 4\n const combined = masked + lastFour;\n return combined.match(/.{1,4}/g)?.join(' ') ?? combined;\n}\n","/**\n * Async Module Runtime Evaluators\n *\n * Runtime implementations for async/* operators.\n * Provides functions for handling async operations, delays, and timing.\n *\n * @packageDocumentation\n */\n\nimport type { SExpr } from '../types/expression.js';\nimport type { EvaluationContext } from '../context.js';\n\ntype EvalFn = (expr: SExpr, ctx: EvaluationContext) => unknown;\n\n// Debounce timers keyed by event name\nconst debounceTimers = new Map<string, ReturnType<typeof setTimeout>>();\n\n// Throttle timestamps keyed by event name\nconst throttleTimestamps = new Map<string, number>();\n\n// Interval timers keyed by a generated ID\nconst intervalTimers = new Map<string, ReturnType<typeof setInterval>>();\nlet intervalIdCounter = 0;\n\n/**\n * async/delay - Wait for specified milliseconds, optionally execute an effect after\n *\n * 1-arg form: [\"async/delay\", ms] — just wait\n * 2-arg form: [\"async/delay\", ms, effect] — wait, then execute effect\n */\nexport async function evalAsyncDelay(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): Promise<unknown> {\n const ms = evaluate(args[0], ctx) as number;\n await new Promise<void>((resolve) => setTimeout(resolve, ms));\n\n // 2-arg form: execute effect after delay\n if (args.length >= 2 && args[1] !== undefined) {\n return evaluate(args[1], ctx);\n }\n\n return undefined;\n}\n\n/**\n * async/interval - Execute an effect periodically\n *\n * [\"async/interval\", ms, effect] — execute effect every ms milliseconds\n *\n * Returns an interval ID string that can be used with clearIntervalTimers().\n */\nexport function evalAsyncInterval(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): string {\n const ms = evaluate(args[0], ctx) as number;\n const effect = args[1];\n const id = `interval_${++intervalIdCounter}`;\n\n const timer = setInterval(() => {\n try {\n evaluate(effect, ctx);\n } catch {\n // Effect errors in interval should not crash the timer\n }\n }, ms);\n\n intervalTimers.set(id, timer);\n return id;\n}\n\n/**\n * async/timeout - Add timeout to an effect\n */\nexport async function evalAsyncTimeout(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): Promise<unknown> {\n const effect = args[0];\n const ms = evaluate(args[1], ctx) as number;\n\n return Promise.race([\n Promise.resolve().then(() => evaluate(effect, ctx)),\n new Promise<never>((_, reject) =>\n setTimeout(() => reject(new Error('Timeout exceeded')), ms)\n ),\n ]);\n}\n\n/**\n * async/debounce - Debounce an event (wait for pause in events)\n */\nexport function evalAsyncDebounce(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): void {\n const event = evaluate(args[0], ctx) as string;\n const ms = evaluate(args[1], ctx) as number;\n\n // Clear existing timer if any\n const existingTimer = debounceTimers.get(event);\n if (existingTimer) {\n clearTimeout(existingTimer);\n }\n\n // Set new timer\n const timer = setTimeout(() => {\n debounceTimers.delete(event);\n // Emit the event\n ctx.emit?.(event);\n }, ms);\n\n debounceTimers.set(event, timer);\n}\n\n/**\n * async/throttle - Throttle an event (emit at most once per interval)\n */\nexport function evalAsyncThrottle(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): void {\n const event = evaluate(args[0], ctx) as string;\n const ms = evaluate(args[1], ctx) as number;\n\n const now = Date.now();\n const lastTimestamp = throttleTimestamps.get(event) ?? 0;\n\n if (now - lastTimestamp >= ms) {\n throttleTimestamps.set(event, now);\n ctx.emit?.(event);\n }\n}\n\n/**\n * async/retry - Retry an effect with configurable backoff\n */\nexport async function evalAsyncRetry(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): Promise<unknown> {\n const effect = args[0];\n const opts = evaluate(args[1], ctx) as {\n attempts?: number;\n backoff?: 'fixed' | 'linear' | 'exponential';\n baseDelay?: number;\n };\n\n const attempts = opts?.attempts ?? 3;\n const backoff = opts?.backoff ?? 'exponential';\n const baseDelay = opts?.baseDelay ?? 1000;\n\n let lastError: unknown;\n\n for (let i = 0; i < attempts; i++) {\n try {\n return await Promise.resolve().then(() => evaluate(effect, ctx));\n } catch (error) {\n lastError = error;\n\n if (i < attempts - 1) {\n // Calculate delay based on backoff strategy\n let delay: number;\n switch (backoff) {\n case 'fixed':\n delay = baseDelay;\n break;\n case 'linear':\n delay = baseDelay * (i + 1);\n break;\n case 'exponential':\n default:\n delay = baseDelay * Math.pow(2, i);\n break;\n }\n await new Promise((resolve) => setTimeout(resolve, delay));\n }\n }\n }\n\n throw lastError;\n}\n\n/**\n * async/race - Execute effects in parallel, return first to complete\n */\nexport async function evalAsyncRace(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): Promise<unknown> {\n const promises = args.map((effect) =>\n Promise.resolve().then(() => evaluate(effect, ctx))\n );\n return Promise.race(promises);\n}\n\n/**\n * async/all - Execute effects in parallel, wait for all to complete\n */\nexport async function evalAsyncAll(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): Promise<unknown[]> {\n const promises = args.map((effect) =>\n Promise.resolve().then(() => evaluate(effect, ctx))\n );\n return Promise.all(promises);\n}\n\n/**\n * async/sequence - Execute effects in sequence (one after another)\n */\nexport async function evalAsyncSequence(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): Promise<unknown[]> {\n const results: unknown[] = [];\n\n for (const effect of args) {\n const result = await Promise.resolve().then(() => evaluate(effect, ctx));\n results.push(result);\n }\n\n return results;\n}\n\n/**\n * Clear debounce timers (for testing/cleanup)\n */\nexport function clearDebounceTimers(): void {\n for (const timer of debounceTimers.values()) {\n clearTimeout(timer);\n }\n debounceTimers.clear();\n}\n\n/**\n * Clear throttle timestamps (for testing/cleanup)\n */\nexport function clearThrottleTimestamps(): void {\n throttleTimestamps.clear();\n}\n\n/**\n * Clear interval timers (for testing/cleanup)\n */\nexport function clearIntervalTimers(): void {\n for (const timer of intervalTimers.values()) {\n clearInterval(timer);\n }\n intervalTimers.clear();\n}\n","/**\n * Probabilistic Operators Runtime Evaluators\n *\n * Runtime implementations for prob/* operators.\n * Provides distribution sampling, Bayesian inference via rejection sampling,\n * and statistical summary functions.\n *\n * @packageDocumentation\n */\n\nimport type { SExpr } from '../types/expression.js';\nimport type { EvaluationContext } from '../context.js';\n\ntype EvalFn = (expr: SExpr, ctx: EvaluationContext) => unknown;\n\n// ============================================================================\n// Seeded PRNG (Mulberry32)\n// ============================================================================\n\n/**\n * Mulberry32: 32-bit seeded PRNG with good distribution properties.\n * Returns a value in [0, 1).\n */\nfunction mulberry32(seed: { state: number }): number {\n let t = (seed.state += 0x6D2B79F5);\n t = Math.imul(t ^ (t >>> 15), t | 1);\n t ^= t + Math.imul(t ^ (t >>> 7), t | 61);\n return ((t ^ (t >>> 14)) >>> 0) / 4294967296;\n}\n\n/**\n * Get a random number in [0, 1), using seeded PRNG if available.\n */\nfunction getRandom(ctx: EvaluationContext): number {\n if (ctx._probSeed) {\n return mulberry32(ctx._probSeed);\n }\n return Math.random();\n}\n\n// ============================================================================\n// Distribution Helpers\n// ============================================================================\n\n/**\n * Gamma variate using Marsaglia-Tsang method.\n * For shape >= 1. For shape < 1, use the relation:\n * gamma(shape) = gamma(shape+1) * U^(1/shape)\n */\nfunction gammaVariate(shape: number, ctx: EvaluationContext): number {\n if (shape < 1) {\n const u = getRandom(ctx);\n return gammaVariate(shape + 1, ctx) * Math.pow(u, 1 / shape);\n }\n\n const d = shape - 1 / 3;\n const c = 1 / Math.sqrt(9 * d);\n\n for (;;) {\n let x: number;\n let v: number;\n do {\n x = gaussianStandard(ctx);\n v = 1 + c * x;\n } while (v <= 0);\n\n v = v * v * v;\n const u = getRandom(ctx);\n\n if (u < 1 - 0.0331 * (x * x) * (x * x)) {\n return d * v;\n }\n\n if (Math.log(u) < 0.5 * x * x + d * (1 - v + Math.log(v))) {\n return d * v;\n }\n }\n}\n\n/**\n * Standard normal (mean=0, sigma=1) via Box-Muller.\n */\nfunction gaussianStandard(ctx: EvaluationContext): number {\n const u1 = getRandom(ctx);\n const u2 = getRandom(ctx);\n return Math.sqrt(-2 * Math.log(u1)) * Math.cos(2 * Math.PI * u2);\n}\n\n// ============================================================================\n// Distribution Sampling (7 operators)\n// ============================================================================\n\n/**\n * prob/seed - Set seeded PRNG on context for deterministic results.\n */\nexport function evalProbSeed(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): void {\n const n = evaluate(args[0], ctx) as number;\n ctx._probSeed = { state: n | 0 };\n}\n\n/**\n * prob/flip - Bernoulli trial: returns true with probability p.\n */\nexport function evalProbFlip(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): boolean {\n const p = evaluate(args[0], ctx) as number;\n return getRandom(ctx) < p;\n}\n\n/**\n * prob/gaussian - Sample from a Gaussian distribution (Box-Muller transform).\n */\nexport function evalProbGaussian(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const mu = evaluate(args[0], ctx) as number;\n const sigma = evaluate(args[1], ctx) as number;\n return mu + sigma * gaussianStandard(ctx);\n}\n\n/**\n * prob/uniform - Sample from a uniform distribution [lo, hi).\n */\nexport function evalProbUniform(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const lo = evaluate(args[0], ctx) as number;\n const hi = evaluate(args[1], ctx) as number;\n return lo + getRandom(ctx) * (hi - lo);\n}\n\n/**\n * prob/beta - Sample from a Beta(alpha, beta) distribution.\n * Uses gamma variate ratio (Marsaglia-Tsang for gamma).\n */\nexport function evalProbBeta(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const alpha = evaluate(args[0], ctx) as number;\n const beta = evaluate(args[1], ctx) as number;\n const x = gammaVariate(alpha, ctx);\n const y = gammaVariate(beta, ctx);\n return x / (x + y);\n}\n\n/**\n * prob/categorical - Weighted random selection from items.\n */\nexport function evalProbCategorical(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): unknown {\n const items = evaluate(args[0], ctx) as unknown[];\n const weights = evaluate(args[1], ctx) as number[];\n\n const totalWeight = weights.reduce((sum, w) => sum + w, 0);\n let r = getRandom(ctx) * totalWeight;\n\n for (let i = 0; i < items.length; i++) {\n r -= weights[i];\n if (r <= 0) return items[i];\n }\n\n return items[items.length - 1];\n}\n\n/**\n * prob/poisson - Sample from a Poisson distribution (Knuth's algorithm).\n */\nexport function evalProbPoisson(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const lambda = evaluate(args[0], ctx) as number;\n const limit = Math.exp(-lambda);\n let k = 0;\n let p = 1;\n\n do {\n k++;\n p *= getRandom(ctx);\n } while (p > limit);\n\n return k - 1;\n}\n\n// ============================================================================\n// Inference (4 operators)\n// ============================================================================\n\n/**\n * prob/condition - Mark the current sample as rejected if predicate is false.\n * Used inside model expressions evaluated by prob/posterior and prob/infer.\n */\nexport function evalProbCondition(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): void {\n const predicate = evaluate(args[0], ctx);\n if (!predicate) {\n ctx._probRejected = true;\n }\n}\n\n/**\n * prob/sample - Evaluate an expression n times and collect results.\n * args[1] is evaluated lazily (re-evaluated each iteration).\n */\nexport function evalProbSample(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): unknown[] {\n const n = evaluate(args[0], ctx) as number;\n const exprAst = args[1]; // lazy: don't evaluate, re-eval each iteration\n\n const results: unknown[] = [];\n for (let i = 0; i < n; i++) {\n results.push(evaluate(exprAst, ctx));\n }\n return results;\n}\n\n/**\n * prob/posterior - Rejection sampling. Returns accepted query values.\n * args: [model, evidence, query, n] (all lazy except n)\n *\n * For each sample:\n * 1. Create fresh child context with shallow-copied entity\n * 2. Evaluate model (may call prob/flip, prob/gaussian, prob/condition, set, etc.)\n * 3. Check if _probRejected was set by prob/condition\n * 4. If not rejected, evaluate evidence (boolean)\n * 5. If evidence passes, evaluate query and collect result\n */\nexport function evalProbPosterior(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): unknown[] {\n const modelAst = args[0];\n const evidenceAst = args[1];\n const queryAst = args[2];\n const n = evaluate(args[3], ctx) as number;\n\n const results: unknown[] = [];\n\n for (let i = 0; i < n; i++) {\n // Fresh child context per sample (shallow-copy entity for isolation)\n const sampleEntity = { ...ctx.entity };\n const sampleCtx: EvaluationContext = {\n ...ctx,\n entity: sampleEntity,\n _probRejected: false,\n mutateEntity: (changes: Record<string, unknown>) => {\n Object.assign(sampleEntity, changes);\n },\n };\n\n // Run the model\n evaluate(modelAst, sampleCtx);\n\n // Check if prob/condition rejected this sample\n if (sampleCtx._probRejected) continue;\n\n // Evaluate evidence\n const evidenceResult = evaluate(evidenceAst, sampleCtx);\n if (!evidenceResult) continue;\n\n // Collect query value\n results.push(evaluate(queryAst, sampleCtx));\n }\n\n return results;\n}\n\n/**\n * prob/infer - Like posterior but returns summary statistics.\n * Returns { mean, variance, samples, acceptRate }.\n */\nexport function evalProbInfer(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): { mean: number; variance: number; samples: number[]; acceptRate: number } {\n const modelAst = args[0];\n const evidenceAst = args[1];\n const queryAst = args[2];\n const n = evaluate(args[3], ctx) as number;\n\n const accepted: number[] = [];\n\n for (let i = 0; i < n; i++) {\n const sampleEntity = { ...ctx.entity };\n const sampleCtx: EvaluationContext = {\n ...ctx,\n entity: sampleEntity,\n _probRejected: false,\n mutateEntity: (changes: Record<string, unknown>) => {\n Object.assign(sampleEntity, changes);\n },\n };\n\n evaluate(modelAst, sampleCtx);\n\n if (sampleCtx._probRejected) continue;\n\n const evidenceResult = evaluate(evidenceAst, sampleCtx);\n if (!evidenceResult) continue;\n\n const queryVal = evaluate(queryAst, sampleCtx) as number;\n accepted.push(queryVal);\n }\n\n const count = accepted.length;\n if (count === 0) {\n return { mean: 0, variance: 0, samples: [], acceptRate: 0 };\n }\n\n const mean = accepted.reduce((s, v) => s + v, 0) / count;\n const variance = accepted.reduce((s, v) => s + (v - mean) ** 2, 0) / count;\n\n return {\n mean,\n variance,\n samples: accepted,\n acceptRate: count / n,\n };\n}\n\n// ============================================================================\n// Statistics (5 operators)\n// ============================================================================\n\n/**\n * prob/expected-value - Mean of numeric samples.\n */\nexport function evalProbExpectedValue(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const samples = evaluate(args[0], ctx) as number[];\n if (samples.length === 0) return 0;\n return samples.reduce((s, v) => s + v, 0) / samples.length;\n}\n\n/**\n * prob/variance - Population variance of numeric samples.\n */\nexport function evalProbVariance(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const samples = evaluate(args[0], ctx) as number[];\n if (samples.length === 0) return 0;\n const mean = samples.reduce((s, v) => s + v, 0) / samples.length;\n return samples.reduce((s, v) => s + (v - mean) ** 2, 0) / samples.length;\n}\n\n/**\n * prob/histogram - Bin numeric samples into a histogram.\n * Returns { binEdges: number[], counts: number[] }.\n */\nexport function evalProbHistogram(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): { binEdges: number[]; counts: number[] } {\n const samples = evaluate(args[0], ctx) as number[];\n const bins = evaluate(args[1], ctx) as number;\n\n if (samples.length === 0) {\n return { binEdges: [], counts: [] };\n }\n\n const min = Math.min(...samples);\n const max = Math.max(...samples);\n const binWidth = (max - min) / bins || 1;\n\n const binEdges: number[] = [];\n const counts: number[] = new Array(bins).fill(0) as number[];\n\n for (let i = 0; i <= bins; i++) {\n binEdges.push(min + i * binWidth);\n }\n\n for (const s of samples) {\n let idx = Math.floor((s - min) / binWidth);\n if (idx >= bins) idx = bins - 1; // clamp last value into final bin\n counts[idx]++;\n }\n\n return { binEdges, counts };\n}\n\n/**\n * prob/percentile - Get the p-th percentile (0-100) from sorted samples.\n */\nexport function evalProbPercentile(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const samples = evaluate(args[0], ctx) as number[];\n const p = evaluate(args[1], ctx) as number;\n\n if (samples.length === 0) return 0;\n\n const sorted = [...samples].sort((a, b) => a - b);\n const idx = (p / 100) * (sorted.length - 1);\n const lo = Math.floor(idx);\n const hi = Math.ceil(idx);\n\n if (lo === hi) return sorted[lo];\n const frac = idx - lo;\n return sorted[lo] * (1 - frac) + sorted[hi] * frac;\n}\n\n/**\n * prob/credible-interval - Compute symmetric credible interval.\n * alpha=0.05 gives 95% interval. Returns [lo, hi].\n */\nexport function evalProbCredibleInterval(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): [number, number] {\n const samples = evaluate(args[0], ctx) as number[];\n const alpha = evaluate(args[1], ctx) as number;\n\n if (samples.length === 0) return [0, 0];\n\n const sorted = [...samples].sort((a, b) => a - b);\n const loIdx = Math.floor((alpha / 2) * (sorted.length - 1));\n const hiIdx = Math.ceil((1 - alpha / 2) * (sorted.length - 1));\n\n return [sorted[loIdx], sorted[hiIdx]];\n}\n","/**\n * OS Module - Operating System Event Watchers\n *\n * Evaluator implementations for os/* operators.\n * These operators register OS-level watchers via the runtime bridge.\n * Server-side only.\n *\n * @packageDocumentation\n */\n\nimport type { SExpr } from '../types/expression.js';\nimport type { EvaluationContext } from '../context.js';\n\ntype Evaluator = (expr: SExpr, ctx: EvaluationContext) => unknown;\n\nfunction registerTrigger(\n ctx: EvaluationContext,\n type: string,\n config: Record<string, unknown>,\n): void {\n ctx.registerOsTrigger?.(type, config);\n}\n\nexport function evalOsWatchFiles(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): void {\n const glob = evaluate(args[0], ctx) as string;\n const options = args[1] ? (evaluate(args[1], ctx) as Record<string, unknown>) : {};\n registerTrigger(ctx, 'watch-files', { glob, ...options });\n}\n\nexport function evalOsWatchProcess(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): void {\n const name = evaluate(args[0], ctx) as string;\n const subcommand = args[1] ? (evaluate(args[1], ctx) as string) : undefined;\n registerTrigger(ctx, 'watch-process', { name, subcommand });\n}\n\nexport function evalOsWatchPort(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): void {\n const port = evaluate(args[0], ctx) as number;\n const protocol = args[1] ? (evaluate(args[1], ctx) as string) : 'tcp';\n registerTrigger(ctx, 'watch-port', { port, protocol });\n}\n\nexport function evalOsWatchHttp(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): void {\n const urlPattern = evaluate(args[0], ctx) as string;\n const method = args[1] ? (evaluate(args[1], ctx) as string) : undefined;\n registerTrigger(ctx, 'watch-http', { urlPattern, method });\n}\n\nexport function evalOsWatchCron(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): void {\n const expression = evaluate(args[0], ctx) as string;\n registerTrigger(ctx, 'watch-cron', { expression });\n}\n\nexport function evalOsWatchSignal(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): void {\n const signal = evaluate(args[0], ctx) as string;\n registerTrigger(ctx, 'watch-signal', { signal });\n}\n\nexport function evalOsWatchEnv(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): void {\n const variable = evaluate(args[0], ctx) as string;\n registerTrigger(ctx, 'watch-env', { variable });\n}\n\nexport function evalOsDebounce(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): void {\n const ms = evaluate(args[0], ctx) as number;\n const eventType = evaluate(args[1], ctx) as string;\n registerTrigger(ctx, 'debounce', { ms, eventType });\n}\n","/**\n * LLM Module Runtime Evaluators\n *\n * Runtime implementations for llm/* operators.\n * Pure operators return safe defaults when ctx.llm is undefined.\n * Effect operators return null when ctx.llm is undefined.\n *\n * @packageDocumentation\n */\n\nimport type { SExpr } from '../types/expression.js';\nimport type { EvaluationContext } from '../context.js';\nimport type { LlmMessage, LlmToolDef } from '@almadar/core';\n\ntype EvalFn = (expr: SExpr, ctx: EvaluationContext) => unknown;\n\nexport function evalLlmGenerate(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): Promise<string> | null {\n if (!ctx.llm) return null;\n const prompt = evaluate(args[0], ctx) as string;\n const options = args.length > 1 ? (evaluate(args[1], ctx) as { json?: boolean; maxTokens?: number; provider?: string; model?: string }) : undefined;\n return ctx.llm.generate(prompt, options);\n}\n\nexport function evalLlmCallTools(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): Promise<unknown> | null {\n if (!ctx.llm) return null;\n const messages = evaluate(args[0], ctx) as LlmMessage[];\n const tools = evaluate(args[1], ctx) as LlmToolDef[];\n return ctx.llm.callTools(messages, tools);\n}\n\nexport function evalLlmEmbed(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): Promise<number[][]> | null {\n if (!ctx.llm) return null;\n const texts = evaluate(args[0], ctx) as string[];\n return ctx.llm.embed(texts);\n}\n\nexport function evalLlmTokenCount(\n _args: SExpr[],\n _evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n if (!ctx.llm) return 0;\n return ctx.llm.tokenCount();\n}\n\nexport function evalLlmSwitch(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): void {\n if (!ctx.llm) return;\n const provider = evaluate(args[0], ctx) as string;\n const model = args.length > 1 ? (evaluate(args[1], ctx) as string) : undefined;\n ctx.llm.switchProvider(provider, model);\n}\n\nexport function evalLlmCompact(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): Promise<{ before: number; after: number }> | null {\n if (!ctx.llm) return null;\n const strategy = args.length > 0 ? (evaluate(args[0], ctx) as string) : undefined;\n return ctx.llm.compact(strategy);\n}\n","/**\n * Runtime guards for the interpreter → typed-substrate boundary.\n *\n * `isFieldValue`, `isEventPayloadValue`, `isSessionHistoryEntry`, and\n * `isPlanSnapshot` are owned by `@almadar/core` beside their types and\n * re-exported here for the std/* seam modules. `isOrbital` and\n * `isOrbitalSchemaValue` live here: they bridge core's zod schemas to its\n * hand-written interfaces as `unknown`-accepting predicates.\n *\n * @packageDocumentation\n */\n\nimport {\n OrbitalZodSchema,\n safeParseOrbitalSchema,\n type Orbital,\n type OrbitalSchema,\n} from '@almadar/core';\n\nexport {\n isFieldValue,\n isEventPayloadValue,\n isSessionHistoryEntry,\n isPlanSnapshot,\n} from '@almadar/core';\n\n/** Deep zod validation bridging to core's hand-written `Orbital` interface. */\nexport function isOrbital(value: unknown): value is Orbital {\n return OrbitalZodSchema.safeParse(value).success;\n}\n\n/** Deep zod validation bridging to core's hand-written `OrbitalSchema` interface. */\nexport function isOrbitalSchemaValue(value: unknown): value is OrbitalSchema {\n return safeParseOrbitalSchema(value).success;\n}\n","/**\n * Workspace Module Runtime Evaluators\n *\n * Runtime implementations for workspace/* operators.\n * Returns null when ctx.workspace is undefined.\n *\n * @packageDocumentation\n */\n\nimport type { SExpr } from '../types/expression.js';\nimport type { EvaluationContext } from '../context.js';\nimport { isOrbital, isOrbitalSchemaValue, isPlanSnapshot } from './substrate-guards.js';\n\ntype EvalFn = (expr: SExpr, ctx: EvaluationContext) => unknown;\n\nexport function evalWorkspaceReadOrbital(args: SExpr[], evaluate: EvalFn, ctx: EvaluationContext): Promise<unknown> | null {\n if (!ctx.workspace) return null;\n const name = evaluate(args[0], ctx) as string;\n return ctx.workspace.readOrbital(name);\n}\n\nexport function evalWorkspaceWriteOrbital(args: SExpr[], evaluate: EvalFn, ctx: EvaluationContext): Promise<void> | null {\n if (!ctx.workspace) return null;\n const name = evaluate(args[0], ctx) as string;\n const content = evaluate(args[1], ctx);\n if (!isOrbital(content)) {\n throw new Error(`workspace/write-orbital value for \"${name}\" is not a valid orbital definition`);\n }\n return ctx.workspace.writeOrbital(name, content);\n}\n\nexport function evalWorkspaceReadFile(args: SExpr[], evaluate: EvalFn, ctx: EvaluationContext): Promise<string> | null {\n if (!ctx.workspace) return null;\n const path = evaluate(args[0], ctx) as string;\n return ctx.workspace.readFile(path);\n}\n\nexport function evalWorkspaceWriteFile(args: SExpr[], evaluate: EvalFn, ctx: EvaluationContext): Promise<void> | null {\n if (!ctx.workspace) return null;\n const path = evaluate(args[0], ctx) as string;\n const content = evaluate(args[1], ctx) as string;\n return ctx.workspace.writeFile(path, content);\n}\n\nexport function evalWorkspaceExists(args: SExpr[], evaluate: EvalFn, ctx: EvaluationContext): boolean {\n if (!ctx.workspace) return false;\n const path = evaluate(args[0], ctx) as string;\n return ctx.workspace.exists(path);\n}\n\nexport function evalWorkspaceListOrbitals(_args: SExpr[], _evaluate: EvalFn, ctx: EvaluationContext): string[] {\n if (!ctx.workspace) return [];\n return ctx.workspace.listOrbitals();\n}\n\nexport function evalWorkspaceReadSchema(_args: SExpr[], _evaluate: EvalFn, ctx: EvaluationContext): Promise<unknown> | null {\n if (!ctx.workspace) return null;\n return ctx.workspace.readSchema();\n}\n\nexport function evalWorkspaceWriteSchema(args: SExpr[], evaluate: EvalFn, ctx: EvaluationContext): Promise<void> | null {\n if (!ctx.workspace) return null;\n const schema = evaluate(args[0], ctx);\n if (!isOrbitalSchemaValue(schema)) {\n throw new Error('workspace/write-schema value is not a valid orbital schema');\n }\n return ctx.workspace.writeSchema(schema);\n}\n\nexport function evalWorkspaceReadPlan(_args: SExpr[], _evaluate: EvalFn, ctx: EvaluationContext): Promise<unknown> | null {\n if (!ctx.workspace) return null;\n return ctx.workspace.readPlan();\n}\n\nexport function evalWorkspaceWritePlan(args: SExpr[], evaluate: EvalFn, ctx: EvaluationContext): Promise<void> | null {\n if (!ctx.workspace) return null;\n const plan = evaluate(args[0], ctx);\n if (!isPlanSnapshot(plan)) {\n throw new Error('workspace/write-plan value is not a valid plan snapshot (schemaVersion 1 envelope)');\n }\n return ctx.workspace.writePlan(plan);\n}\n\nexport function evalWorkspaceArchiveOrbital(args: SExpr[], evaluate: EvalFn, ctx: EvaluationContext): Promise<void> | null {\n if (!ctx.workspace) return null;\n const name = evaluate(args[0], ctx) as string;\n return ctx.workspace.archiveOrbital(name);\n}\n","/**\n * Session Module Runtime Evaluators\n *\n * Runtime implementations for session/* operators.\n * Returns null (or [] for array returns) when ctx.session is undefined.\n *\n * @packageDocumentation\n */\n\nimport type { SExpr } from '../types/expression.js';\nimport type { EvaluationContext } from '../context.js';\nimport type { AgentMemoryRecord } from '@almadar/core';\nimport { isOrbital, isSessionHistoryEntry } from './substrate-guards.js';\n\ntype EvalFn = (expr: SExpr, ctx: EvaluationContext) => unknown;\n\nexport function evalSessionReadSpec(args: SExpr[], evaluate: EvalFn, ctx: EvaluationContext): Promise<unknown> | null {\n if (!ctx.session) return null;\n const orbitalName = evaluate(args[0], ctx) as string;\n return ctx.session.readSpec(orbitalName);\n}\n\nexport function evalSessionWriteSpec(args: SExpr[], evaluate: EvalFn, ctx: EvaluationContext): Promise<void> | null {\n if (!ctx.session) return null;\n const orbitalName = evaluate(args[0], ctx) as string;\n const spec = evaluate(args[1], ctx);\n if (!isOrbital(spec)) {\n throw new Error(`session/write-spec value for \"${orbitalName}\" is not a valid orbital definition`);\n }\n return ctx.session.writeSpec(orbitalName, spec);\n}\n\nexport function evalSessionReadMemory(args: SExpr[], evaluate: EvalFn, ctx: EvaluationContext): Promise<AgentMemoryRecord[]> | null {\n if (!ctx.session) return null;\n const orbitalName = evaluate(args[0], ctx) as string;\n return ctx.session.readMemory(orbitalName);\n}\n\nexport function evalSessionWriteMemory(args: SExpr[], evaluate: EvalFn, ctx: EvaluationContext): Promise<void> | null {\n if (!ctx.session) return null;\n const orbitalName = evaluate(args[0], ctx) as string;\n const memory = evaluate(args[1], ctx) as AgentMemoryRecord[];\n return ctx.session.writeMemory(orbitalName, memory);\n}\n\nexport function evalSessionReadHistory(args: SExpr[], evaluate: EvalFn, ctx: EvaluationContext): Promise<unknown[]> | null {\n if (!ctx.session) return null;\n const orbitalName = evaluate(args[0], ctx) as string;\n return ctx.session.readHistory(orbitalName);\n}\n\nexport function evalSessionAppendHistory(args: SExpr[], evaluate: EvalFn, ctx: EvaluationContext): Promise<void> | null {\n if (!ctx.session) return null;\n const orbitalName = evaluate(args[0], ctx) as string;\n const entry = evaluate(args[1], ctx);\n if (!isSessionHistoryEntry(entry)) {\n throw new Error(`session/append-history entry for \"${orbitalName}\" must have role/content/timestamp`);\n }\n return ctx.session.appendHistory(orbitalName, entry);\n}\n\nexport function evalSessionReadErrors(args: SExpr[], evaluate: EvalFn, ctx: EvaluationContext): Promise<string[]> | null {\n if (!ctx.session) return null;\n const orbitalName = evaluate(args[0], ctx) as string;\n return ctx.session.readErrors(orbitalName);\n}\n\nexport function evalSessionWriteErrors(args: SExpr[], evaluate: EvalFn, ctx: EvaluationContext): Promise<void> | null {\n if (!ctx.session) return null;\n const orbitalName = evaluate(args[0], ctx) as string;\n const errors = evaluate(args[1], ctx) as string[];\n return ctx.session.writeErrors(orbitalName, errors);\n}\n\nexport function evalSessionReadAnalysis(args: SExpr[], evaluate: EvalFn, ctx: EvaluationContext): Promise<unknown> | null {\n if (!ctx.session) return null;\n const orbitalName = evaluate(args[0], ctx) as string;\n return ctx.session.readAnalysis(orbitalName);\n}\n","/**\n * Memory Module Runtime Evaluators\n *\n * Runtime implementations for memory/* operators.\n * Pure operators return safe defaults when ctx.memory is undefined.\n *\n * @packageDocumentation\n */\n\nimport type { SExpr } from '../types/expression.js';\nimport type { EvaluationContext } from '../context.js';\nimport type { AgentMemoryRecord } from '@almadar/core';\n\ntype EvalFn = (expr: SExpr, ctx: EvaluationContext) => unknown;\n\nexport function evalMemoryRecall(args: SExpr[], evaluate: EvalFn, ctx: EvaluationContext): AgentMemoryRecord[] {\n if (!ctx.memory) return [];\n const query = evaluate(args[0], ctx) as string;\n const limit = args.length > 1 ? (evaluate(args[1], ctx) as number) : undefined;\n return ctx.memory.recall(query, limit);\n}\n\nexport function evalMemoryStore(args: SExpr[], evaluate: EvalFn, ctx: EvaluationContext): Promise<string> | null {\n if (!ctx.memory) return null;\n const content = evaluate(args[0], ctx) as string;\n const category = args.length > 1 ? (evaluate(args[1], ctx) as string) : undefined;\n const strength = args.length > 2 ? (evaluate(args[2], ctx) as number) : undefined;\n return ctx.memory.store(content, category, strength);\n}\n\nexport function evalMemoryList(args: SExpr[], evaluate: EvalFn, ctx: EvaluationContext): AgentMemoryRecord[] {\n if (!ctx.memory) return [];\n const category = args.length > 0 ? (evaluate(args[0], ctx) as string) : undefined;\n return ctx.memory.list(category);\n}\n","/**\n * Trace Module Runtime Evaluators\n *\n * Runtime implementations for trace/* operators.\n * No-op when ctx.trace is undefined.\n *\n * @packageDocumentation\n */\n\nimport type { SExpr } from '../types/expression.js';\nimport type { EvaluationContext } from '../context.js';\nimport { isEventPayloadValue } from './substrate-guards.js';\n\ntype EvalFn = (expr: SExpr, ctx: EvaluationContext) => unknown;\n\nexport function evalTraceEmit(args: SExpr[], evaluate: EvalFn, ctx: EvaluationContext): void {\n if (!ctx.trace) return;\n const event = evaluate(args[0], ctx) as string;\n const payload = args.length > 1 ? evaluate(args[1], ctx) : undefined;\n if (!isEventPayloadValue(payload)) {\n throw new Error(`trace/emit payload for \"${event}\" is not an event-payload value (JSON-like)`);\n }\n ctx.trace.emit(event, payload);\n}\n\nexport function evalTraceLog(args: SExpr[], evaluate: EvalFn, ctx: EvaluationContext): void {\n if (!ctx.trace) return;\n const message = evaluate(args[0], ctx) as string;\n const level = args.length > 1 ? (evaluate(args[1], ctx) as 'log' | 'warn' | 'error') : undefined;\n const data = args.length > 2 ? evaluate(args[2], ctx) : undefined;\n if (!isEventPayloadValue(data)) {\n throw new Error('trace/log data is not an event-payload value (JSON-like)');\n }\n ctx.trace.log(message, level, data);\n}\n","/**\n * Integration Module Runtime Evaluators\n *\n * Runtime implementations for integration/* operators.\n * Returns null when ctx.integration is undefined.\n *\n * @packageDocumentation\n */\n\nimport type { SExpr } from '../types/expression.js';\nimport type { EvaluationContext } from '../context.js';\nimport { isFieldValue } from './substrate-guards.js';\n\ntype EvalFn = (expr: SExpr, ctx: EvaluationContext) => unknown;\n\nexport function evalIntegrationHttp(args: SExpr[], evaluate: EvalFn, ctx: EvaluationContext): Promise<unknown> | null {\n if (!ctx.integration) return null;\n const method = evaluate(args[0], ctx) as string;\n const url = evaluate(args[1], ctx) as string;\n const body = args.length > 2 ? evaluate(args[2], ctx) : undefined;\n if (body !== undefined && !isFieldValue(body)) {\n throw new Error(`integration/http body for ${method} ${url} is not a field value (JSON-like)`);\n }\n const headers = args.length > 3 ? (evaluate(args[3], ctx) as Record<string, string>) : undefined;\n return ctx.integration.http(method, url, body, headers);\n}\n\nexport function evalIntegrationGithubGetRepo(args: SExpr[], evaluate: EvalFn, ctx: EvaluationContext): Promise<unknown> | null {\n if (!ctx.integration) return null;\n const owner = evaluate(args[0], ctx) as string;\n const repo = evaluate(args[1], ctx) as string;\n return ctx.integration.githubGetRepo(owner, repo);\n}\n\nexport function evalIntegrationGithubCreateIssue(args: SExpr[], evaluate: EvalFn, ctx: EvaluationContext): Promise<unknown> | null {\n if (!ctx.integration) return null;\n const owner = evaluate(args[0], ctx) as string;\n const repo = evaluate(args[1], ctx) as string;\n const title = evaluate(args[2], ctx) as string;\n const body = args.length > 3 ? (evaluate(args[3], ctx) as string) : undefined;\n return ctx.integration.githubCreateIssue(owner, repo, title, body);\n}\n","/**\n * Vector Module Runtime Evaluators\n *\n * Runtime implementations for vec/* operators.\n * Vectors are plain objects {x,y} or {x,y,z}. Dimensionality of a vector\n * result follows the FIRST vector argument (z included only if first arg had z).\n *\n * @packageDocumentation\n */\n\nimport type { SExpr } from '../types/expression.js';\nimport type { EvaluationContext } from '../context.js';\n\ntype EvalFn = (expr: SExpr, ctx: EvaluationContext) => unknown;\n\ninterface Vec {\n x: number;\n y: number;\n z?: number;\n}\n\nfunction asVec(v: unknown): Vec {\n const o = (v ?? {}) as Record<string, unknown>;\n const x = typeof o.x === 'number' ? o.x : 0;\n const y = typeof o.y === 'number' ? o.y : 0;\n const z = typeof o.z === 'number' ? o.z : undefined;\n return z === undefined ? { x, y } : { x, y, z };\n}\n\nfunction has3(v: Vec): boolean {\n return v.z !== undefined;\n}\n\nfunction z(v: Vec): number {\n return v.z ?? 0;\n}\n\nfunction make(x: number, y: number, zVal: number, is3d: boolean): Vec {\n return is3d ? { x, y, z: zVal } : { x, y };\n}\n\n/**\n * vec/add - componentwise a + b (dim follows a)\n */\nexport function evalVecAdd(args: SExpr[], evaluate: EvalFn, ctx: EvaluationContext): Vec {\n const a = asVec(evaluate(args[0], ctx));\n const b = asVec(evaluate(args[1], ctx));\n return make(a.x + b.x, a.y + b.y, z(a) + z(b), has3(a));\n}\n\n/**\n * vec/sub - componentwise a - b (dim follows a)\n */\nexport function evalVecSub(args: SExpr[], evaluate: EvalFn, ctx: EvaluationContext): Vec {\n const a = asVec(evaluate(args[0], ctx));\n const b = asVec(evaluate(args[1], ctx));\n return make(a.x - b.x, a.y - b.y, z(a) - z(b), has3(a));\n}\n\n/**\n * vec/scale - componentwise a * k (dim follows a)\n */\nexport function evalVecScale(args: SExpr[], evaluate: EvalFn, ctx: EvaluationContext): Vec {\n const a = asVec(evaluate(args[0], ctx));\n const k = evaluate(args[1], ctx) as number;\n return make(a.x * k, a.y * k, z(a) * k, has3(a));\n}\n\n/**\n * vec/dot - dot product → number\n */\nexport function evalVecDot(args: SExpr[], evaluate: EvalFn, ctx: EvaluationContext): number {\n const a = asVec(evaluate(args[0], ctx));\n const b = asVec(evaluate(args[1], ctx));\n return a.x * b.x + a.y * b.y + z(a) * z(b);\n}\n\n/**\n * vec/cross - 3D → {x,y,z} cross; 2D → number (ax·by - ay·bx)\n */\nexport function evalVecCross(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): Vec | number {\n const a = asVec(evaluate(args[0], ctx));\n const b = asVec(evaluate(args[1], ctx));\n if (has3(a)) {\n const ax = a.x,\n ay = a.y,\n az = z(a);\n const bx = b.x,\n by = b.y,\n bz = z(b);\n return { x: ay * bz - az * by, y: az * bx - ax * bz, z: ax * by - ay * bx };\n }\n return a.x * b.y - a.y * b.x;\n}\n\n/**\n * vec/length - magnitude\n */\nexport function evalVecLength(args: SExpr[], evaluate: EvalFn, ctx: EvaluationContext): number {\n const a = asVec(evaluate(args[0], ctx));\n return Math.sqrt(a.x * a.x + a.y * a.y + z(a) * z(a));\n}\n\n/**\n * vec/length-sq - squared magnitude\n */\nexport function evalVecLengthSq(args: SExpr[], evaluate: EvalFn, ctx: EvaluationContext): number {\n const a = asVec(evaluate(args[0], ctx));\n return a.x * a.x + a.y * a.y + z(a) * z(a);\n}\n\n/**\n * vec/normalize - unit vector; zero-length → zero vector (same dim)\n */\nexport function evalVecNormalize(args: SExpr[], evaluate: EvalFn, ctx: EvaluationContext): Vec {\n const a = asVec(evaluate(args[0], ctx));\n const len = Math.sqrt(a.x * a.x + a.y * a.y + z(a) * z(a));\n if (len === 0) {\n return make(0, 0, 0, has3(a));\n }\n return make(a.x / len, a.y / len, z(a) / len, has3(a));\n}\n\n/**\n * vec/distance - length(sub(a,b))\n */\nexport function evalVecDistance(args: SExpr[], evaluate: EvalFn, ctx: EvaluationContext): number {\n const a = asVec(evaluate(args[0], ctx));\n const b = asVec(evaluate(args[1], ctx));\n const dx = a.x - b.x,\n dy = a.y - b.y,\n dz = z(a) - z(b);\n return Math.sqrt(dx * dx + dy * dy + dz * dz);\n}\n\n/**\n * vec/distance-sq - length-sq(sub(a,b))\n */\nexport function evalVecDistanceSq(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const a = asVec(evaluate(args[0], ctx));\n const b = asVec(evaluate(args[1], ctx));\n const dx = a.x - b.x,\n dy = a.y - b.y,\n dz = z(a) - z(b);\n return dx * dx + dy * dy + dz * dz;\n}\n\n/**\n * vec/lerp - componentwise a + (b - a) * t (dim follows a)\n */\nexport function evalVecLerp(args: SExpr[], evaluate: EvalFn, ctx: EvaluationContext): Vec {\n const a = asVec(evaluate(args[0], ctx));\n const b = asVec(evaluate(args[1], ctx));\n const t = evaluate(args[2], ctx) as number;\n return make(\n a.x + (b.x - a.x) * t,\n a.y + (b.y - a.y) * t,\n z(a) + (z(b) - z(a)) * t,\n has3(a)\n );\n}\n\n/**\n * vec/angle - 1 arg: atan2(a.y,a.x); 2 args: angle between vectors\n */\nexport function evalVecAngle(args: SExpr[], evaluate: EvalFn, ctx: EvaluationContext): number {\n const a = asVec(evaluate(args[0], ctx));\n if (args.length < 2) {\n return Math.atan2(a.y, a.x);\n }\n const b = asVec(evaluate(args[1], ctx));\n const la = Math.sqrt(a.x * a.x + a.y * a.y + z(a) * z(a));\n const lb = Math.sqrt(b.x * b.x + b.y * b.y + z(b) * z(b));\n if (la === 0 || lb === 0) {\n return 0;\n }\n const d = (a.x * b.x + a.y * b.y + z(a) * z(b)) / (la * lb);\n const clamped = Math.min(Math.max(d, -1), 1);\n return Math.acos(clamped);\n}\n\n/**\n * vec/rotate - 2D rotate x,y by rad; z preserved\n */\nexport function evalVecRotate(args: SExpr[], evaluate: EvalFn, ctx: EvaluationContext): Vec {\n const a = asVec(evaluate(args[0], ctx));\n const rad = evaluate(args[1], ctx) as number;\n const c = Math.cos(rad),\n s = Math.sin(rad);\n return make(a.x * c - a.y * s, a.x * s + a.y * c, z(a), has3(a));\n}\n\n/**\n * vec/clamp-length - if length > max → scale(normalize(a),max) else a\n */\nexport function evalVecClampLength(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): Vec {\n const a = asVec(evaluate(args[0], ctx));\n const max = evaluate(args[1], ctx) as number;\n const len = Math.sqrt(a.x * a.x + a.y * a.y + z(a) * z(a));\n if (len > max) {\n if (len === 0) {\n return make(0, 0, 0, has3(a));\n }\n const k = max / len;\n return make(a.x * k, a.y * k, z(a) * k, has3(a));\n }\n return make(a.x, a.y, z(a), has3(a));\n}\n","/**\n * Geometry Module Runtime Evaluators\n *\n * Runtime implementations for geo/* operators.\n * Rect = {x,y,w,h} (top-left origin). Circle = {x,y,r}. Point = {x,y}.\n * Segment = {x1,y1,x2,y2}. Vectors are {x,y[,z]}.\n *\n * @packageDocumentation\n */\n\nimport type { SExpr } from '../types/expression.js';\nimport type { EvaluationContext } from '../context.js';\n\ntype EvalFn = (expr: SExpr, ctx: EvaluationContext) => unknown;\n\ninterface Vec {\n x: number;\n y: number;\n z?: number;\n}\ninterface Rect {\n x: number;\n y: number;\n w: number;\n h: number;\n}\ninterface Circle {\n x: number;\n y: number;\n r: number;\n}\ninterface Segment {\n x1: number;\n y1: number;\n x2: number;\n y2: number;\n}\n\nfunction num(o: Record<string, unknown>, k: string): number {\n return typeof o[k] === 'number' ? (o[k] as number) : 0;\n}\n\nfunction asVec(v: unknown): Vec {\n const o = (v ?? {}) as Record<string, unknown>;\n const z = typeof o.z === 'number' ? (o.z as number) : undefined;\n return z === undefined\n ? { x: num(o, 'x'), y: num(o, 'y') }\n : { x: num(o, 'x'), y: num(o, 'y'), z };\n}\n\nfunction asRect(v: unknown): Rect {\n const o = (v ?? {}) as Record<string, unknown>;\n return { x: num(o, 'x'), y: num(o, 'y'), w: num(o, 'w'), h: num(o, 'h') };\n}\n\nfunction asCircle(v: unknown): Circle {\n const o = (v ?? {}) as Record<string, unknown>;\n return { x: num(o, 'x'), y: num(o, 'y'), r: num(o, 'r') };\n}\n\nfunction asSegment(v: unknown): Segment {\n const o = (v ?? {}) as Record<string, unknown>;\n return { x1: num(o, 'x1'), y1: num(o, 'y1'), x2: num(o, 'x2'), y2: num(o, 'y2') };\n}\n\nfunction clamp(n: number, lo: number, hi: number): number {\n return Math.min(Math.max(n, lo), hi);\n}\n\n/**\n * geo/aabb-overlap - axis-aligned bounding box overlap → bool\n */\nexport function evalGeoAabbOverlap(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): boolean {\n const a = asRect(evaluate(args[0], ctx));\n const b = asRect(evaluate(args[1], ctx));\n return a.x < b.x + b.w && a.x + a.w > b.x && a.y < b.y + b.h && a.y + a.h > b.y;\n}\n\n/**\n * geo/circle-overlap - distance(centers) <= a.r + b.r → bool\n */\nexport function evalGeoCircleOverlap(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): boolean {\n const a = asCircle(evaluate(args[0], ctx));\n const b = asCircle(evaluate(args[1], ctx));\n const dx = a.x - b.x,\n dy = a.y - b.y;\n return Math.sqrt(dx * dx + dy * dy) <= a.r + b.r;\n}\n\n/**\n * geo/rect-circle-overlap - closest point on rect to circle center → bool\n */\nexport function evalGeoRectCircleOverlap(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): boolean {\n const r = asRect(evaluate(args[0], ctx));\n const c = asCircle(evaluate(args[1], ctx));\n const cx = clamp(c.x, r.x, r.x + r.w);\n const cy = clamp(c.y, r.y, r.y + r.h);\n const dx = c.x - cx,\n dy = c.y - cy;\n return dx * dx + dy * dy <= c.r * c.r;\n}\n\n/**\n * geo/point-in-rect - point inside rect (inclusive edges) → bool\n */\nexport function evalGeoPointInRect(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): boolean {\n const p = asVec(evaluate(args[0], ctx));\n const r = asRect(evaluate(args[1], ctx));\n return p.x >= r.x && p.x <= r.x + r.w && p.y >= r.y && p.y <= r.y + r.h;\n}\n\n/**\n * geo/point-in-circle - point inside circle (inclusive) → bool\n */\nexport function evalGeoPointInCircle(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): boolean {\n const p = asVec(evaluate(args[0], ctx));\n const c = asCircle(evaluate(args[1], ctx));\n const dx = p.x - c.x,\n dy = p.y - c.y;\n return dx * dx + dy * dy <= c.r * c.r;\n}\n\n/**\n * geo/reflect - reflect v about normal n (n assumed normalized) → vector\n */\nexport function evalGeoReflect(args: SExpr[], evaluate: EvalFn, ctx: EvaluationContext): Vec {\n const v = asVec(evaluate(args[0], ctx));\n const n = asVec(evaluate(args[1], ctx));\n const is3d = v.z !== undefined;\n const vz = v.z ?? 0,\n nz = n.z ?? 0;\n const d = v.x * n.x + v.y * n.y + vz * nz;\n const rx = v.x - n.x * 2 * d;\n const ry = v.y - n.y * 2 * d;\n const rz = vz - nz * 2 * d;\n return is3d ? { x: rx, y: ry, z: rz } : { x: rx, y: ry };\n}\n\n/**\n * geo/segment-intersect - 2-segment intersection → {x,y} point or null\n */\nexport function evalGeoSegmentIntersect(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): Vec | null {\n const s1 = asSegment(evaluate(args[0], ctx));\n const s2 = asSegment(evaluate(args[1], ctx));\n const r_x = s1.x2 - s1.x1,\n r_y = s1.y2 - s1.y1;\n const s_x = s2.x2 - s2.x1,\n s_y = s2.y2 - s2.y1;\n const denom = r_x * s_y - r_y * s_x;\n if (denom === 0) {\n return null; // parallel / collinear\n }\n const qpx = s2.x1 - s1.x1,\n qpy = s2.y1 - s1.y1;\n const t = (qpx * s_y - qpy * s_x) / denom;\n const u = (qpx * r_y - qpy * r_x) / denom;\n if (t < 0 || t > 1 || u < 0 || u > 1) {\n return null;\n }\n return { x: s1.x1 + t * r_x, y: s1.y1 + t * r_y };\n}\n","/**\n * Grid Module Runtime Evaluators\n *\n * Runtime implementations for grid/* operators.\n * Cell = {x,y} integers. Point = {x,y}. Cell arrays are emitted in the\n * exact deterministic order specified (parity depends on it).\n *\n * @packageDocumentation\n */\n\nimport type { SExpr } from '../types/expression.js';\nimport type { EvaluationContext } from '../context.js';\n\ntype EvalFn = (expr: SExpr, ctx: EvaluationContext) => unknown;\n\ninterface Cell {\n x: number;\n y: number;\n}\n\nfunction num(o: Record<string, unknown>, k: string): number {\n return typeof o[k] === 'number' ? (o[k] as number) : 0;\n}\n\nfunction asCell(v: unknown): Cell {\n const o = (v ?? {}) as Record<string, unknown>;\n return { x: num(o, 'x'), y: num(o, 'y') };\n}\n\n/**\n * grid/to-world - cell center: {x:(cell.x+0.5)*cellSize, y:(cell.y+0.5)*cellSize}\n */\nexport function evalGridToWorld(args: SExpr[], evaluate: EvalFn, ctx: EvaluationContext): Cell {\n const cell = asCell(evaluate(args[0], ctx));\n const cellSize = evaluate(args[1], ctx) as number;\n return { x: (cell.x + 0.5) * cellSize, y: (cell.y + 0.5) * cellSize };\n}\n\n/**\n * grid/from-world - {x:floor(point.x/cellSize), y:floor(point.y/cellSize)}\n */\nexport function evalGridFromWorld(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): Cell {\n const point = asCell(evaluate(args[0], ctx));\n const cellSize = evaluate(args[1], ctx) as number;\n return { x: Math.floor(point.x / cellSize), y: Math.floor(point.y / cellSize) };\n}\n\n/**\n * grid/iso-to-screen - {x:(cell.x-cell.y)*tileW/2, y:(cell.x+cell.y)*tileH/2}\n */\nexport function evalGridIsoToScreen(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): Cell {\n const cell = asCell(evaluate(args[0], ctx));\n const tileW = evaluate(args[1], ctx) as number;\n const tileH = evaluate(args[2], ctx) as number;\n return { x: ((cell.x - cell.y) * tileW) / 2, y: ((cell.x + cell.y) * tileH) / 2 };\n}\n\n/**\n * grid/screen-to-iso - inverse iso projection\n */\nexport function evalGridScreenToIso(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): Cell {\n const point = asCell(evaluate(args[0], ctx));\n const tileW = evaluate(args[1], ctx) as number;\n const tileH = evaluate(args[2], ctx) as number;\n const halfW = tileW / 2;\n const halfH = tileH / 2;\n return {\n x: (point.x / halfW + point.y / halfH) / 2,\n y: (point.y / halfH - point.x / halfW) / 2,\n };\n}\n\n/**\n * grid/distance - Chebyshev: max(|dx|,|dy|)\n */\nexport function evalGridDistance(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const a = asCell(evaluate(args[0], ctx));\n const b = asCell(evaluate(args[1], ctx));\n return Math.max(Math.abs(a.x - b.x), Math.abs(a.y - b.y));\n}\n\n/**\n * grid/manhattan-distance - |dx| + |dy|\n */\nexport function evalGridManhattanDistance(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const a = asCell(evaluate(args[0], ctx));\n const b = asCell(evaluate(args[1], ctx));\n return Math.abs(a.x - b.x) + Math.abs(a.y - b.y);\n}\n\n/**\n * grid/neighbors - 4-neighborhood N,E,S,W; if diagonal append NE,SE,SW,NW\n */\nexport function evalGridNeighbors(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): Cell[] {\n const cell = asCell(evaluate(args[0], ctx));\n const diagonal = args.length > 1 ? Boolean(evaluate(args[1], ctx)) : false;\n const result: Cell[] = [\n { x: cell.x, y: cell.y - 1 }, // N\n { x: cell.x + 1, y: cell.y }, // E\n { x: cell.x, y: cell.y + 1 }, // S\n { x: cell.x - 1, y: cell.y }, // W\n ];\n if (diagonal) {\n result.push(\n { x: cell.x + 1, y: cell.y - 1 }, // NE\n { x: cell.x + 1, y: cell.y + 1 }, // SE\n { x: cell.x - 1, y: cell.y + 1 }, // SW\n { x: cell.x - 1, y: cell.y - 1 } // NW\n );\n }\n return result;\n}\n\n/**\n * grid/cells-in-radius - all cells with dx²+dy² <= r², row-major (y outer, x inner)\n */\nexport function evalGridCellsInRadius(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): Cell[] {\n const cell = asCell(evaluate(args[0], ctx));\n const r = evaluate(args[1], ctx) as number;\n const rf = Math.floor(r);\n const r2 = r * r;\n const result: Cell[] = [];\n for (let dy = -rf; dy <= rf; dy++) {\n for (let dx = -rf; dx <= rf; dx++) {\n if (dx * dx + dy * dy <= r2) {\n result.push({ x: cell.x + dx, y: cell.y + dy });\n }\n }\n }\n return result;\n}\n\n/**\n * grid/line - Bresenham, inclusive a..b, in step order → array of {x,y}\n */\nexport function evalGridLine(args: SExpr[], evaluate: EvalFn, ctx: EvaluationContext): Cell[] {\n const a = asCell(evaluate(args[0], ctx));\n const b = asCell(evaluate(args[1], ctx));\n let x0 = a.x,\n y0 = a.y;\n const x1 = b.x,\n y1 = b.y;\n const dx = Math.abs(x1 - x0);\n const dy = Math.abs(y1 - y0);\n const sx = x0 < x1 ? 1 : -1;\n const sy = y0 < y1 ? 1 : -1;\n let err = dx - dy;\n const result: Cell[] = [];\n for (;;) {\n result.push({ x: x0, y: y0 });\n if (x0 === x1 && y0 === y1) {\n break;\n }\n const e2 = 2 * err;\n if (e2 > -dy) {\n err -= dy;\n x0 += sx;\n }\n if (e2 < dx) {\n err += dx;\n y0 += sy;\n }\n }\n return result;\n}\n\n/**\n * grid/in-bounds - cell.x>=0 && cell.x<w && cell.y>=0 && cell.y<h → bool\n */\nexport function evalGridInBounds(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): boolean {\n const cell = asCell(evaluate(args[0], ctx));\n const w = evaluate(args[1], ctx) as number;\n const h = evaluate(args[2], ctx) as number;\n return cell.x >= 0 && cell.x < w && cell.y >= 0 && cell.y < h;\n}\n","/**\n * Animation Module Runtime Evaluators\n *\n * Runtime implementations for anim/* operators.\n *\n * @packageDocumentation\n */\n\nimport type { SExpr } from '../types/expression.js';\nimport type { EvaluationContext } from '../context.js';\n\ntype EvalFn = (expr: SExpr, ctx: EvaluationContext) => unknown;\n\n/**\n * anim/frame-at - select frame index for elapsed time\n * i = floor(elapsed/frameDur); loop default true → i % frameCount;\n * else min(i, frameCount-1)\n */\nexport function evalAnimFrameAt(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const elapsed = evaluate(args[0], ctx) as number;\n const frameDur = evaluate(args[1], ctx) as number;\n const frameCount = evaluate(args[2], ctx) as number;\n const loop = args.length > 3 ? Boolean(evaluate(args[3], ctx)) : true;\n if (frameCount <= 0) {\n return 0;\n }\n const i = Math.floor(elapsed / frameDur);\n if (loop) {\n return ((i % frameCount) + frameCount) % frameCount;\n }\n return Math.min(i, frameCount - 1);\n}\n\n/**\n * anim/sheet-rect - sprite-sheet source rect for a frame index\n * {sx:(frameIndex%cols)*frameW, sy:floor(frameIndex/cols)*frameH, sw:frameW, sh:frameH}\n */\nexport function evalAnimSheetRect(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): { sx: number; sy: number; sw: number; sh: number } {\n const frameIndex = evaluate(args[0], ctx) as number;\n const cols = evaluate(args[1], ctx) as number;\n const frameW = evaluate(args[2], ctx) as number;\n const frameH = evaluate(args[3], ctx) as number;\n return {\n sx: (frameIndex % cols) * frameW,\n sy: Math.floor(frameIndex / cols) * frameH,\n sw: frameW,\n sh: frameH,\n };\n}\n\n/**\n * anim/direction-from-delta - cardinal/diagonal facing from a movement delta.\n * ways default 4. angle = atan2(dy,dx) in (-PI,PI]. Buckets are chosen by the\n * nearest 1/ways slice of the circle (sector width = 2PI/ways), centered on the\n * axis directions, so the result is symmetric and identical across languages.\n * Screen coords (y grows downward): +dy → \"down\", -dy → \"up\".\n */\nexport function evalAnimDirectionFromDelta(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): string {\n const dx = evaluate(args[0], ctx) as number;\n const dy = evaluate(args[1], ctx) as number;\n const ways = args.length > 2 ? (evaluate(args[2], ctx) as number) : 4;\n const angle = Math.atan2(dy, dx); // (-PI, PI]\n const twoPi = Math.PI * 2;\n if (ways === 8) {\n // 8 sectors of PI/4; sector 0 centered on +x (\"right\"), increasing CCW\n // in math but +y is screen-down so we keep atan2(dy,dx) directly.\n const sector = Math.round(angle / (Math.PI / 4));\n const idx = ((sector % 8) + 8) % 8;\n const dirs8 = [\n 'right',\n 'down-right',\n 'down',\n 'down-left',\n 'left',\n 'up-left',\n 'up',\n 'up-right',\n ];\n return dirs8[idx];\n }\n // 4-way: nearest axis, sectors of PI/2 centered on right/down/left/up\n const sector = Math.round(angle / (Math.PI / 2));\n const idx = ((sector % 4) + 4) % 4;\n const dirs4 = ['right', 'down', 'left', 'up'];\n return dirs4[idx];\n}\n","/**\n * Easing Module Runtime Evaluators\n *\n * Runtime implementations for ease/* operators.\n * All formulas are pinned (standard Penner) and must match the Rust impl\n * byte-for-byte. Unknown curve → linear.\n *\n * @packageDocumentation\n */\n\nimport type { SExpr } from '../types/expression.js';\nimport type { EvaluationContext } from '../context.js';\n\ntype EvalFn = (expr: SExpr, ctx: EvaluationContext) => unknown;\n\nfunction clamp01(t: number): number {\n return Math.min(Math.max(t, 0), 1);\n}\n\nfunction applyCurve(curve: string, tRaw: number): number {\n const t = clamp01(tRaw);\n switch (curve) {\n case 'in-quad':\n return t * t;\n case 'out-quad':\n return t * (2 - t);\n case 'in-out-quad':\n return t < 0.5 ? 2 * t * t : -1 + (4 - 2 * t) * t;\n case 'in-cubic':\n return t * t * t;\n case 'out-cubic': {\n const u = t - 1;\n return u * u * u + 1;\n }\n case 'in-out-cubic':\n return t < 0.5\n ? 4 * t * t * t\n : (t - 1) * (2 * t - 2) * (2 * t - 2) + 1;\n case 'elastic-out': {\n if (t === 0) {\n return 0;\n }\n if (t === 1) {\n return 1;\n }\n const c4 = (2 * Math.PI) / 3;\n return Math.pow(2, -10 * t) * Math.sin((t * 10 - 0.75) * c4) + 1;\n }\n case 'bounce-out': {\n const n1 = 7.5625;\n const d1 = 2.75;\n let u = t;\n if (u < 1 / d1) {\n return n1 * u * u;\n } else if (u < 2 / d1) {\n u -= 1.5 / d1;\n return n1 * u * u + 0.75;\n } else if (u < 2.5 / d1) {\n u -= 2.25 / d1;\n return n1 * u * u + 0.9375;\n } else {\n u -= 2.625 / d1;\n return n1 * u * u + 0.984375;\n }\n }\n case 'linear':\n default:\n return t;\n }\n}\n\n/**\n * ease/apply - apply a named easing curve to t∈[0,1] (clamped)\n */\nexport function evalEaseApply(args: SExpr[], evaluate: EvalFn, ctx: EvaluationContext): number {\n const curve = evaluate(args[0], ctx) as string;\n const t = evaluate(args[1], ctx) as number;\n return applyCurve(curve, t);\n}\n\n/**\n * ease/smoothstep - t=clamp((x-edge0)/(edge1-edge0),0,1); t*t*(3-2*t)\n */\nexport function evalEaseSmoothstep(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const edge0 = evaluate(args[0], ctx) as number;\n const edge1 = evaluate(args[1], ctx) as number;\n const x = evaluate(args[2], ctx) as number;\n if (edge0 === edge1) {\n return 0;\n }\n const t = clamp01((x - edge0) / (edge1 - edge0));\n return t * t * (3 - 2 * t);\n}\n","/**\n * Noise Module Runtime Evaluators\n *\n * Runtime implementations for noise/* operators (perlin, simplex, fbm).\n * Output range [-1, 1]. Pure + deterministic; byte-identical with the Rust impl.\n *\n * @packageDocumentation\n */\n\nimport type { SExpr } from '../types/expression.js';\nimport type { EvaluationContext } from '../context.js';\n\ntype EvalFn = (expr: SExpr, ctx: EvaluationContext) => unknown;\n\n// Permutation table — copied VERBATIM and shared with the Rust impl for parity.\nconst PERM: number[] = [\n 151, 160, 137, 91, 90, 15, 131, 13, 201, 95, 96, 53, 194, 233, 7, 225, 140, 36,\n 103, 30, 69, 142, 8, 99, 37, 240, 21, 10, 23, 190, 6, 148, 247, 120, 234, 75, 0,\n 26, 197, 62, 94, 252, 219, 203, 117, 35, 11, 32, 57, 177, 33, 88, 237, 149, 56,\n 87, 174, 20, 125, 136, 171, 168, 68, 175, 74, 165, 71, 134, 139, 48, 27, 166, 77,\n 146, 158, 231, 83, 111, 229, 122, 60, 211, 133, 230, 220, 105, 92, 41, 55, 46,\n 245, 40, 244, 102, 143, 54, 65, 25, 63, 161, 1, 216, 80, 73, 209, 76, 132, 187,\n 208, 89, 18, 169, 200, 196, 135, 130, 116, 188, 159, 86, 164, 100, 109, 198, 173,\n 186, 3, 64, 52, 217, 226, 250, 124, 123, 5, 202, 38, 147, 118, 126, 255, 82, 85,\n 212, 207, 206, 59, 227, 47, 16, 58, 17, 182, 189, 28, 42, 223, 183, 170, 213, 119,\n 248, 152, 2, 44, 154, 163, 70, 221, 153, 101, 155, 167, 43, 172, 9, 129, 22, 39,\n 253, 19, 98, 108, 110, 79, 113, 224, 232, 178, 185, 112, 104, 218, 246, 97, 228,\n 251, 34, 242, 193, 238, 210, 144, 12, 191, 179, 162, 241, 81, 51, 145, 235, 249,\n 14, 239, 107, 49, 192, 214, 31, 181, 199, 106, 157, 184, 84, 204, 176, 115, 121,\n 50, 45, 127, 4, 150, 254, 138, 236, 205, 93, 222, 114, 67, 29, 24, 72, 243, 141,\n 128, 195, 78, 66, 215, 61, 156, 180,\n];\n\nfunction p(i: number): number {\n return PERM[i & 255];\n}\n\nfunction fade(t: number): number {\n return t * t * t * (t * (t * 6.0 - 15.0) + 10.0);\n}\n\nfunction lerp(a: number, b: number, t: number): number {\n return a + t * (b - a);\n}\n\nfunction grad2(hash: number, x: number, y: number): number {\n const h = hash & 7;\n const u = h < 4 ? x : y;\n const v = h < 4 ? y : x;\n return ((h & 1) === 0 ? u : -u) + ((h & 2) === 0 ? v : -v);\n}\n\nfunction perlin(x: number, y: number, seed: number): number {\n const s = Math.floor(seed) & 255;\n const X = (Math.floor(x) + s) & 255;\n const Y = (Math.floor(y) + s) & 255;\n const xf = x - Math.floor(x);\n const yf = y - Math.floor(y);\n const u = fade(xf);\n const v = fade(yf);\n const aa = p(p(X) + Y);\n const ab = p(p(X) + Y + 1);\n const ba = p(p(X + 1) + Y);\n const bb = p(p(X + 1) + Y + 1);\n const x1 = lerp(grad2(aa, xf, yf), grad2(ba, xf - 1.0, yf), u);\n const x2 = lerp(grad2(ab, xf, yf - 1.0), grad2(bb, xf - 1.0, yf - 1.0), u);\n return lerp(x1, x2, v);\n}\n\nfunction simplex(x: number, y: number, seed: number): number {\n return (\n (perlin(x, y, seed) +\n perlin(x * 2 + 5.2, y * 2 + 1.3, seed) * 0.5 +\n perlin(x * 4 + 9.1, y * 4 + 7.7, seed) * 0.25) /\n 1.75\n );\n}\n\nfunction fbm(x: number, y: number, octaves: number, seed: number): number {\n let n = Math.floor(octaves);\n if (n < 1) n = 1;\n if (n > 8) n = 8;\n let total = 0;\n let freq = 1;\n let amp = 1;\n let max = 0;\n for (let i = 0; i < n; i++) {\n total += perlin(x * freq, y * freq, seed) * amp;\n max += amp;\n freq *= 2.0;\n amp *= 0.5;\n }\n return total / max;\n}\n\n/**\n * noise/perlin - 2D Perlin noise (x, y?, seed?) → number [-1,1]\n */\nexport function evalNoisePerlin(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const x = evaluate(args[0], ctx) as number;\n const y = args.length > 1 ? (evaluate(args[1], ctx) as number) : 0;\n const seed = args.length > 2 ? (evaluate(args[2], ctx) as number) : 0;\n return perlin(x, y, seed);\n}\n\n/**\n * noise/simplex - value-coherent noise (perlin-derived) (x, y, seed?) → number [-1,1]\n */\nexport function evalNoiseSimplex(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const x = evaluate(args[0], ctx) as number;\n const y = evaluate(args[1], ctx) as number;\n const seed = args.length > 2 ? (evaluate(args[2], ctx) as number) : 0;\n return simplex(x, y, seed);\n}\n\n/**\n * noise/fbm - fractal Brownian motion (x, y, octaves, seed?) → number [-1,1]\n */\nexport function evalNoiseFbm(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const x = evaluate(args[0], ctx) as number;\n const y = evaluate(args[1], ctx) as number;\n const octaves = evaluate(args[2], ctx) as number;\n const seed = args.length > 3 ? (evaluate(args[3], ctx) as number) : 0;\n return fbm(x, y, octaves, seed);\n}\n","/**\n * Path Module Runtime Evaluators\n *\n * Runtime implementations for path/* operators (astar, reachable).\n * Grid cells are plain {x,y} integer objects. Deterministic tie-break for parity.\n *\n * @packageDocumentation\n */\n\nimport type { SExpr } from '../types/expression.js';\nimport type { EvaluationContext } from '../context.js';\n\ntype EvalFn = (expr: SExpr, ctx: EvaluationContext) => unknown;\n\ninterface Cell {\n x: number;\n y: number;\n}\n\nfunction asCell(v: unknown): Cell {\n const o = (v ?? {}) as Record<string, unknown>;\n const x = typeof o.x === 'number' ? o.x : 0;\n const y = typeof o.y === 'number' ? o.y : 0;\n return { x, y };\n}\n\nfunction key(x: number, y: number): string {\n return `${x},${y}`;\n}\n\n// 4-dir N,E,S,W; diagonal appends NE,SE,SW,NW.\nconst DIRS4: ReadonlyArray<readonly [number, number]> = [\n [0, -1],\n [1, 0],\n [0, 1],\n [-1, 0],\n];\nconst DIRS_DIAG: ReadonlyArray<readonly [number, number]> = [\n [1, -1],\n [1, 1],\n [-1, 1],\n [-1, -1],\n];\n\nfunction neighbors(diagonal: boolean): ReadonlyArray<readonly [number, number]> {\n return diagonal ? [...DIRS4, ...DIRS_DIAG] : DIRS4;\n}\n\nfunction blockedSet(blocked: unknown[]): Set<string> {\n const set = new Set<string>();\n for (const b of blocked) {\n const c = asCell(b);\n set.add(key(c.x, c.y));\n }\n return set;\n}\n\n/**\n * path/astar - A* shortest path (start, goal, blocked, w, h, diagonal?) → [{x,y}] | []\n */\nexport function evalPathAstar(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): Cell[] {\n const start = asCell(evaluate(args[0], ctx));\n const goal = asCell(evaluate(args[1], ctx));\n const blockedArr = (evaluate(args[2], ctx) as unknown[]) ?? [];\n const w = evaluate(args[3], ctx) as number;\n const h = evaluate(args[4], ctx) as number;\n const diagonal = args.length > 5 ? Boolean(evaluate(args[5], ctx)) : false;\n\n const blocked = blockedSet(blockedArr);\n const dirs = neighbors(diagonal);\n\n const heuristic = (x: number, y: number): number => {\n const dx = Math.abs(x - goal.x);\n const dy = Math.abs(y - goal.y);\n return diagonal ? Math.max(dx, dy) : dx + dy;\n };\n\n const startKey = key(start.x, start.y);\n const goalKey = key(goal.x, goal.y);\n\n if (\n start.x < 0 ||\n start.x >= w ||\n start.y < 0 ||\n start.y >= h ||\n goal.x < 0 ||\n goal.x >= w ||\n goal.y < 0 ||\n goal.y >= h ||\n blocked.has(startKey) ||\n blocked.has(goalKey)\n ) {\n return [];\n }\n\n interface OpenNode {\n x: number;\n y: number;\n g: number;\n h: number;\n f: number;\n order: number;\n }\n\n const open: OpenNode[] = [];\n const gScore = new Map<string, number>();\n const cameFrom = new Map<string, string>();\n let counter = 0;\n\n gScore.set(startKey, 0);\n open.push({\n x: start.x,\n y: start.y,\n g: 0,\n h: heuristic(start.x, start.y),\n f: heuristic(start.x, start.y),\n order: counter++,\n });\n\n while (open.length > 0) {\n // Linear scan for min: lower f, then lower h, then earliest insertion order.\n let bestIdx = 0;\n for (let i = 1; i < open.length; i++) {\n const a = open[i];\n const b = open[bestIdx];\n if (\n a.f < b.f ||\n (a.f === b.f && a.h < b.h) ||\n (a.f === b.f && a.h === b.h && a.order < b.order)\n ) {\n bestIdx = i;\n }\n }\n const current = open[bestIdx];\n open.splice(bestIdx, 1);\n\n const curKey = key(current.x, current.y);\n\n if (curKey === goalKey) {\n const path: Cell[] = [];\n let k: string | undefined = curKey;\n while (k !== undefined) {\n const parts = k.split(',');\n path.push({ x: Number(parts[0]), y: Number(parts[1]) });\n k = cameFrom.get(k);\n }\n path.reverse();\n return path;\n }\n\n // Stale entry: a better g was already finalized.\n const recordedG = gScore.get(curKey);\n if (recordedG !== undefined && current.g > recordedG) {\n continue;\n }\n\n for (const [dx, dy] of dirs) {\n const nx = current.x + dx;\n const ny = current.y + dy;\n if (nx < 0 || nx >= w || ny < 0 || ny >= h) {\n continue;\n }\n const nKey = key(nx, ny);\n if (blocked.has(nKey)) {\n continue;\n }\n const tentativeG = current.g + 1;\n const existingG = gScore.get(nKey);\n if (existingG === undefined || tentativeG < existingG) {\n gScore.set(nKey, tentativeG);\n cameFrom.set(nKey, curKey);\n const nh = heuristic(nx, ny);\n open.push({\n x: nx,\n y: ny,\n g: tentativeG,\n h: nh,\n f: tentativeG + nh,\n order: counter++,\n });\n }\n }\n }\n\n return [];\n}\n\n/**\n * path/reachable - cells reachable within steps moves (BFS), row-major sorted\n * (start, steps, blocked, w, h, diagonal?) → [{x,y}]\n */\nexport function evalPathReachable(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): Cell[] {\n const start = asCell(evaluate(args[0], ctx));\n const steps = Math.floor(evaluate(args[1], ctx) as number);\n const blockedArr = (evaluate(args[2], ctx) as unknown[]) ?? [];\n const w = evaluate(args[3], ctx) as number;\n const h = evaluate(args[4], ctx) as number;\n const diagonal = args.length > 5 ? Boolean(evaluate(args[5], ctx)) : false;\n\n const blocked = blockedSet(blockedArr);\n const dirs = neighbors(diagonal);\n\n const startKey = key(start.x, start.y);\n const visited = new Set<string>();\n\n if (\n start.x < 0 ||\n start.x >= w ||\n start.y < 0 ||\n start.y >= h ||\n blocked.has(startKey)\n ) {\n return [];\n }\n\n visited.add(startKey);\n let frontier: Cell[] = [{ x: start.x, y: start.y }];\n for (let depth = 0; depth < steps; depth++) {\n const next: Cell[] = [];\n for (const cell of frontier) {\n for (const [dx, dy] of dirs) {\n const nx = cell.x + dx;\n const ny = cell.y + dy;\n if (nx < 0 || nx >= w || ny < 0 || ny >= h) {\n continue;\n }\n const nKey = key(nx, ny);\n if (blocked.has(nKey) || visited.has(nKey)) {\n continue;\n }\n visited.add(nKey);\n next.push({ x: nx, y: ny });\n }\n }\n frontier = next;\n }\n\n const result: Cell[] = [];\n for (const k of visited) {\n const parts = k.split(',');\n result.push({ x: Number(parts[0]), y: Number(parts[1]) });\n }\n result.sort((a, b) => (a.y !== b.y ? a.y - b.y : a.x - b.x));\n return result;\n}\n","/**\n * S-Expression Evaluator\n *\n * Runtime interpreter for S-expressions.\n * Used for evaluating guards and executing effects in the preview system.\n *\n * @packageDocumentation\n */\n\nimport type { SExpr } from './types/expression.js';\nimport { assertOperatorArity } from './operator-arity.js';\nimport { isSExpr, isBinding, getOperator, getArgs } from './types/expression.js';\nimport type { EvaluationContext } from './context.js';\nimport { resolveBinding } from './context.js';\n\n// Import operators\nimport {\n evalAdd,\n evalSubtract,\n evalMultiply,\n evalDivide,\n evalModulo,\n evalAbs,\n evalMin,\n evalMax,\n evalFloor,\n evalCeil,\n evalRound,\n evalClamp,\n evalEqual,\n evalNotEqual,\n evalLessThan,\n evalGreaterThan,\n evalLessThanOrEqual,\n evalGreaterThanOrEqual,\n evalMatches,\n evalAnd,\n evalOr,\n evalNot,\n evalIf,\n evalLet,\n evalDo,\n evalWhen,\n evalFn,\n evalMap,\n evalFilter,\n evalFind,\n evalCount,\n evalSum,\n evalFirst,\n evalLast,\n evalNth,\n evalConcat,\n evalIncludes,\n evalEmpty,\n evalList,\n evalSet,\n evalSetDynamic,\n evalIncrement,\n evalDecrement,\n evalEmit,\n evalPersist,\n evalNavigate,\n evalNotify,\n evalSpawn,\n evalDespawn,\n evalCallService,\n evalRenderUI,\n evalRef,\n evalDeref,\n evalSwap,\n evalWatch,\n evalAtomic,\n} from './operators/index.js';\n\n// Import std library evaluators\nimport * as stdMath from './std/math.js';\nimport * as stdStr from './std/str.js';\nimport * as stdArray from './std/array.js';\nimport * as stdObject from './std/object.js';\nimport * as stdValidate from './std/validate.js';\nimport * as stdTime from './std/time.js';\nimport * as stdFormat from './std/format.js';\nimport * as stdAsync from './std/async.js';\nimport * as stdProb from './std/prob.js';\nimport * as stdOs from './std/os.js';\nimport * as stdLlm from './std/llm.js';\nimport * as stdWorkspace from './std/workspace.js';\nimport * as stdSession from './std/session.js';\nimport * as stdMemory from './std/memory.js';\nimport * as stdTrace from './std/trace.js';\nimport * as stdIntegration from './std/integration.js';\nimport * as stdVec from './std/vector.js';\nimport * as stdGeo from './std/geo.js';\nimport * as stdGrid from './std/grid.js';\nimport * as stdAnim from './std/anim.js';\nimport * as stdEase from './std/ease.js';\nimport * as stdNoise from './std/noise.js';\nimport * as stdPath from './std/path.js';\n\n/**\n * JIT compilation cache for hot paths.\n * Maps S-expression JSON to compiled function.\n */\nconst jitCache = new Map<string, (ctx: EvaluationContext) => unknown>();\n\n/**\n * Maximum JIT cache size to prevent memory issues.\n */\nconst MAX_JIT_CACHE_SIZE = 1000;\n\n/**\n * Sentinel returned by dispatchOperator when the head is not a registered\n * operator — the caller then treats the array as literal data.\n */\nconst UNKNOWN_OPERATOR = Symbol('unknown-operator');\n\n/**\n * S-Expression Evaluator class.\n *\n * Provides runtime interpretation of S-expressions for guards, effects, and computed values.\n */\nexport class SExpressionEvaluator {\n /**\n * Evaluate an S-expression in the given context.\n *\n * @param expr - S-expression to evaluate\n * @param ctx - Evaluation context with bindings and effect handlers\n * @returns Result of evaluation\n */\n evaluate(expr: SExpr, ctx: EvaluationContext): unknown {\n // Atom: literal value\n if (!isSExpr(expr)) {\n // Check if it's a binding\n if (isBinding(expr)) {\n return resolveBinding(expr, ctx);\n }\n // Plain object literal — recursively evaluate each property so that\n // SExpression values inside `{ key: (op ...), ... }` get reduced to\n // their concrete results. This is the canonical lambda-body shape\n // for `array/map` returning records (e.g. std-stats's metric→card\n // lambda whose body is `{ label: (object/get ...), value: (if ...) }`).\n // Without this, the evaluator returns the raw SExpression and the\n // UI renders the lolo source as text.\n if (this.isPlainObject(expr)) {\n const out: Record<string, unknown> = {};\n for (const [k, v] of Object.entries(expr as Record<string, unknown>)) {\n out[k] = this.evaluate(v as SExpr, ctx);\n }\n return out;\n }\n // Literal array (non-call — first element is not a string operator):\n // evaluate each element so SExpressions nested inside `[ {…}, … ]`\n // reduce to concrete values. Parity with orbital-core `eval_expr`\n // (\"Literal array - evaluate all elements\"); without it, values\n // fetched later via `object/get` out of a concatenated literal row\n // surface as raw lolo source (e.g. a unit's position/asset reaching\n // the canvas as unevaluated expressions).\n if (Array.isArray(expr)) {\n return expr.map((item) => this.evaluate(item as SExpr, ctx));\n }\n // Return literal value\n return expr;\n }\n\n // S-expression call\n const op = getOperator(expr)!;\n const args = getArgs(expr);\n\n // Dispatch to operator implementation. An unregistered head means the\n // array is DATA, not a call form (e.g. `animations: [\"static\"]` inlined\n // from an asset manifest): reduce its elements verbatim instead of\n // warning \"Unknown operator\" per evaluation (~17k/s on large grids) and\n // dropping the array from the evaluated copy.\n const result = this.dispatchOperator(op, args, ctx);\n if (result === UNKNOWN_OPERATOR) {\n return expr.map((item) => this.evaluate(item as SExpr, ctx));\n }\n return result;\n }\n\n private isPlainObject(value: unknown): value is Record<string, unknown> {\n return (\n typeof value === 'object' &&\n value !== null &&\n !Array.isArray(value) &&\n !(value instanceof Date) &&\n Object.getPrototypeOf(value) === Object.prototype\n );\n }\n\n /**\n * Evaluate an S-expression as a guard (returns boolean).\n *\n * @param expr - S-expression guard\n * @param ctx - Evaluation context\n * @returns true if guard passes, false otherwise\n */\n evaluateGuard(expr: SExpr, ctx: EvaluationContext): boolean {\n const result = this.evaluate(expr, ctx);\n return Boolean(result);\n }\n\n /**\n * Execute an effect S-expression.\n *\n * @param expr - Effect S-expression (e.g., [\"set\", \"@entity.x\", 10])\n * @param ctx - Evaluation context with effect handlers\n */\n executeEffect(expr: SExpr, ctx: EvaluationContext): void {\n this.evaluate(expr, ctx);\n }\n\n /**\n * Execute multiple effects in sequence.\n *\n * @param effects - Array of effect S-expressions\n * @param ctx - Evaluation context with effect handlers\n */\n executeEffects(effects: SExpr[], ctx: EvaluationContext): void {\n for (const effect of effects) {\n this.executeEffect(effect, ctx);\n }\n }\n\n /**\n * Compile an S-expression to a function for faster repeated evaluation.\n * Uses a cache to avoid recompilation.\n *\n * @param expr - S-expression to compile\n * @returns Function that evaluates the expression given a context\n */\n compile(expr: SExpr): (ctx: EvaluationContext) => unknown {\n const key = JSON.stringify(expr);\n\n // Check cache\n const cached = jitCache.get(key);\n if (cached) {\n return cached;\n }\n\n // Compile to function\n const fn = (ctx: EvaluationContext) => this.evaluate(expr, ctx);\n\n // Add to cache (with size limit)\n if (jitCache.size >= MAX_JIT_CACHE_SIZE) {\n // Remove oldest entry (first key)\n const firstKey = jitCache.keys().next().value;\n if (firstKey) {\n jitCache.delete(firstKey);\n }\n }\n jitCache.set(key, fn);\n\n return fn;\n }\n\n /**\n * Clear the JIT compilation cache.\n */\n clearCache(): void {\n jitCache.clear();\n }\n\n /**\n * Dispatch to the appropriate operator implementation.\n */\n private dispatchOperator(op: string, args: SExpr[], ctx: EvaluationContext): unknown {\n // Parity with the compiled path's `resolve_sexpr_call`: a registered\n // operator applied outside its canonical arity bounds throws instead of\n // silently truncating/wrapping (R-EVALUATOR-NO-ARITY-CHECK). Unregistered\n // heads fall through to the data-array handling unchanged.\n assertOperatorArity(op, args.length);\n\n // Bind evaluate method for passing to operator implementations\n const evaluate = (expr: SExpr, c: EvaluationContext) => this.evaluate(expr, c);\n\n switch (op) {\n // Arithmetic\n case '+':\n return evalAdd(args, evaluate, ctx);\n case '-':\n return evalSubtract(args, evaluate, ctx);\n case '*':\n return evalMultiply(args, evaluate, ctx);\n case '/':\n return evalDivide(args, evaluate, ctx);\n case '%':\n return evalModulo(args, evaluate, ctx);\n case 'abs':\n return evalAbs(args, evaluate, ctx);\n case 'min':\n return evalMin(args, evaluate, ctx);\n case 'max':\n return evalMax(args, evaluate, ctx);\n case 'floor':\n return evalFloor(args, evaluate, ctx);\n case 'ceil':\n return evalCeil(args, evaluate, ctx);\n case 'round':\n return evalRound(args, evaluate, ctx);\n case 'clamp':\n return evalClamp(args, evaluate, ctx);\n\n // Comparison\n case '=':\n case '==':\n return evalEqual(args, evaluate, ctx);\n case '!=':\n return evalNotEqual(args, evaluate, ctx);\n case '<':\n return evalLessThan(args, evaluate, ctx);\n case '>':\n return evalGreaterThan(args, evaluate, ctx);\n case '<=':\n return evalLessThanOrEqual(args, evaluate, ctx);\n case '>=':\n return evalGreaterThanOrEqual(args, evaluate, ctx);\n case 'matches':\n return evalMatches(args, evaluate, ctx);\n\n // Logic\n case 'and':\n return evalAnd(args, evaluate, ctx);\n case 'or':\n return evalOr(args, evaluate, ctx);\n case 'not':\n return evalNot(args, evaluate, ctx);\n case 'if':\n return evalIf(args, evaluate, ctx);\n\n // Control\n case 'let':\n return evalLet(args, evaluate, ctx);\n case 'do':\n return evalDo(args, evaluate, ctx);\n case 'when':\n return evalWhen(args, evaluate, ctx);\n case 'fn':\n case 'lambda':\n return evalFn(args, evaluate, ctx);\n\n // Collections\n case 'map':\n return evalMap(args, evaluate, ctx);\n case 'filter':\n return evalFilter(args, evaluate, ctx);\n case 'find':\n return evalFind(args, evaluate, ctx);\n case 'count':\n return evalCount(args, evaluate, ctx);\n case 'sum':\n return evalSum(args, evaluate, ctx);\n case 'first':\n return evalFirst(args, evaluate, ctx);\n case 'last':\n return evalLast(args, evaluate, ctx);\n case 'nth':\n return evalNth(args, evaluate, ctx);\n case 'concat':\n return evalConcat(args, evaluate, ctx);\n case 'includes':\n return evalIncludes(args, evaluate, ctx);\n case 'empty':\n return evalEmpty(args, evaluate, ctx);\n case 'list':\n return evalList(args, evaluate, ctx);\n\n // Effects\n case 'set':\n evalSet(args, evaluate, ctx);\n return undefined;\n case 'set-dynamic':\n evalSetDynamic(args, evaluate, ctx);\n return undefined;\n case 'increment':\n evalIncrement(args, evaluate, ctx);\n return undefined;\n case 'decrement':\n evalDecrement(args, evaluate, ctx);\n return undefined;\n case 'emit':\n evalEmit(args, evaluate, ctx);\n return undefined;\n case 'persist':\n evalPersist(args, evaluate, ctx);\n return undefined;\n case 'navigate':\n evalNavigate(args, evaluate, ctx);\n return undefined;\n case 'notify':\n evalNotify(args, evaluate, ctx);\n return undefined;\n case 'spawn':\n evalSpawn(args, evaluate, ctx);\n return undefined;\n case 'despawn':\n evalDespawn(args, evaluate, ctx);\n return undefined;\n case 'call-service':\n evalCallService(args, evaluate, ctx);\n return undefined;\n case 'render-ui':\n evalRenderUI(args, evaluate, ctx);\n return undefined;\n\n // Resource operators\n case 'ref':\n return evalRef(args, evaluate, ctx);\n case 'deref':\n return evalDeref(args, evaluate, ctx);\n case 'swap!':\n return evalSwap(args, evaluate, ctx);\n case 'watch':\n evalWatch(args, evaluate, ctx);\n return undefined;\n case 'atomic':\n return evalAtomic(args, evaluate, ctx);\n\n // ===============================\n // Standard Library: math/*\n // ===============================\n case 'math/abs':\n return stdMath.evalMathAbs(args, evaluate, ctx);\n case 'math/min':\n return stdMath.evalMathMin(args, evaluate, ctx);\n case 'math/max':\n return stdMath.evalMathMax(args, evaluate, ctx);\n case 'math/clamp':\n return stdMath.evalMathClamp(args, evaluate, ctx);\n case 'math/floor':\n return stdMath.evalMathFloor(args, evaluate, ctx);\n case 'math/ceil':\n return stdMath.evalMathCeil(args, evaluate, ctx);\n case 'math/round':\n return stdMath.evalMathRound(args, evaluate, ctx);\n case 'math/pow':\n return stdMath.evalMathPow(args, evaluate, ctx);\n case 'math/sqrt':\n return stdMath.evalMathSqrt(args, evaluate, ctx);\n case 'math/mod':\n return stdMath.evalMathMod(args, evaluate, ctx);\n case 'math/sign':\n return stdMath.evalMathSign(args, evaluate, ctx);\n case 'math/lerp':\n return stdMath.evalMathLerp(args, evaluate, ctx);\n case 'math/map':\n return stdMath.evalMathMap(args, evaluate, ctx);\n case 'math/random':\n return stdMath.evalMathRandom();\n case 'math/randomInt':\n return stdMath.evalMathRandomInt(args, evaluate, ctx);\n case 'math/default':\n return stdMath.evalMathDefault(args, evaluate, ctx);\n case 'math/sin':\n return stdMath.evalMathSin(args, evaluate, ctx);\n case 'math/cos':\n return stdMath.evalMathCos(args, evaluate, ctx);\n case 'math/tan':\n return stdMath.evalMathTan(args, evaluate, ctx);\n case 'math/atan2':\n return stdMath.evalMathAtan2(args, evaluate, ctx);\n case 'math/asin':\n return stdMath.evalMathAsin(args, evaluate, ctx);\n case 'math/acos':\n return stdMath.evalMathAcos(args, evaluate, ctx);\n case 'math/atan':\n return stdMath.evalMathAtan(args, evaluate, ctx);\n case 'math/hypot':\n return stdMath.evalMathHypot(args, evaluate, ctx);\n case 'math/deg-rad':\n return stdMath.evalMathDegRad(args, evaluate, ctx);\n case 'math/rad-deg':\n return stdMath.evalMathRadDeg(args, evaluate, ctx);\n case 'math/wrap':\n return stdMath.evalMathWrap(args, evaluate, ctx);\n case 'math/approach':\n return stdMath.evalMathApproach(args, evaluate, ctx);\n\n // ===============================\n // Standard Library: vec/*\n // ===============================\n case 'vec/add':\n return stdVec.evalVecAdd(args, evaluate, ctx);\n case 'vec/sub':\n return stdVec.evalVecSub(args, evaluate, ctx);\n case 'vec/scale':\n return stdVec.evalVecScale(args, evaluate, ctx);\n case 'vec/dot':\n return stdVec.evalVecDot(args, evaluate, ctx);\n case 'vec/cross':\n return stdVec.evalVecCross(args, evaluate, ctx);\n case 'vec/length':\n return stdVec.evalVecLength(args, evaluate, ctx);\n case 'vec/length-sq':\n return stdVec.evalVecLengthSq(args, evaluate, ctx);\n case 'vec/normalize':\n return stdVec.evalVecNormalize(args, evaluate, ctx);\n case 'vec/distance':\n return stdVec.evalVecDistance(args, evaluate, ctx);\n case 'vec/distance-sq':\n return stdVec.evalVecDistanceSq(args, evaluate, ctx);\n case 'vec/lerp':\n return stdVec.evalVecLerp(args, evaluate, ctx);\n case 'vec/angle':\n return stdVec.evalVecAngle(args, evaluate, ctx);\n case 'vec/rotate':\n return stdVec.evalVecRotate(args, evaluate, ctx);\n case 'vec/clamp-length':\n return stdVec.evalVecClampLength(args, evaluate, ctx);\n\n // ===============================\n // Standard Library: geo/*\n // ===============================\n case 'geo/aabb-overlap':\n return stdGeo.evalGeoAabbOverlap(args, evaluate, ctx);\n case 'geo/circle-overlap':\n return stdGeo.evalGeoCircleOverlap(args, evaluate, ctx);\n case 'geo/rect-circle-overlap':\n return stdGeo.evalGeoRectCircleOverlap(args, evaluate, ctx);\n case 'geo/point-in-rect':\n return stdGeo.evalGeoPointInRect(args, evaluate, ctx);\n case 'geo/point-in-circle':\n return stdGeo.evalGeoPointInCircle(args, evaluate, ctx);\n case 'geo/reflect':\n return stdGeo.evalGeoReflect(args, evaluate, ctx);\n case 'geo/segment-intersect':\n return stdGeo.evalGeoSegmentIntersect(args, evaluate, ctx);\n\n // ===============================\n // Standard Library: grid/*\n // ===============================\n case 'grid/to-world':\n return stdGrid.evalGridToWorld(args, evaluate, ctx);\n case 'grid/from-world':\n return stdGrid.evalGridFromWorld(args, evaluate, ctx);\n case 'grid/iso-to-screen':\n return stdGrid.evalGridIsoToScreen(args, evaluate, ctx);\n case 'grid/screen-to-iso':\n return stdGrid.evalGridScreenToIso(args, evaluate, ctx);\n case 'grid/distance':\n return stdGrid.evalGridDistance(args, evaluate, ctx);\n case 'grid/manhattan-distance':\n return stdGrid.evalGridManhattanDistance(args, evaluate, ctx);\n case 'grid/neighbors':\n return stdGrid.evalGridNeighbors(args, evaluate, ctx);\n case 'grid/cells-in-radius':\n return stdGrid.evalGridCellsInRadius(args, evaluate, ctx);\n case 'grid/line':\n return stdGrid.evalGridLine(args, evaluate, ctx);\n case 'grid/in-bounds':\n return stdGrid.evalGridInBounds(args, evaluate, ctx);\n\n // ===============================\n // Standard Library: anim/*\n // ===============================\n case 'anim/frame-at':\n return stdAnim.evalAnimFrameAt(args, evaluate, ctx);\n case 'anim/sheet-rect':\n return stdAnim.evalAnimSheetRect(args, evaluate, ctx);\n case 'anim/direction-from-delta':\n return stdAnim.evalAnimDirectionFromDelta(args, evaluate, ctx);\n\n // ===============================\n // Standard Library: ease/*\n // ===============================\n case 'ease/apply':\n return stdEase.evalEaseApply(args, evaluate, ctx);\n case 'ease/smoothstep':\n return stdEase.evalEaseSmoothstep(args, evaluate, ctx);\n\n // ===============================\n // Standard Library: noise/*\n // ===============================\n case 'noise/perlin':\n return stdNoise.evalNoisePerlin(args, evaluate, ctx);\n case 'noise/simplex':\n return stdNoise.evalNoiseSimplex(args, evaluate, ctx);\n case 'noise/fbm':\n return stdNoise.evalNoiseFbm(args, evaluate, ctx);\n\n // ===============================\n // Standard Library: path/*\n // ===============================\n case 'path/astar':\n return stdPath.evalPathAstar(args, evaluate, ctx);\n case 'path/reachable':\n return stdPath.evalPathReachable(args, evaluate, ctx);\n\n // ===============================\n // Standard Library: str/*\n // ===============================\n case 'str/len':\n return stdStr.evalStrLen(args, evaluate, ctx);\n case 'str/concat':\n return stdStr.evalStrConcat(args, evaluate, ctx);\n case 'str/upper':\n return stdStr.evalStrUpper(args, evaluate, ctx);\n case 'str/lower':\n return stdStr.evalStrLower(args, evaluate, ctx);\n case 'str/trim':\n return stdStr.evalStrTrim(args, evaluate, ctx);\n case 'str/trimStart':\n return stdStr.evalStrTrimStart(args, evaluate, ctx);\n case 'str/trimEnd':\n return stdStr.evalStrTrimEnd(args, evaluate, ctx);\n case 'str/split':\n return stdStr.evalStrSplit(args, evaluate, ctx);\n case 'str/join':\n return stdStr.evalStrJoin(args, evaluate, ctx);\n case 'str/slice':\n return stdStr.evalStrSlice(args, evaluate, ctx);\n case 'str/replace':\n return stdStr.evalStrReplace(args, evaluate, ctx);\n case 'str/replaceAll':\n return stdStr.evalStrReplaceAll(args, evaluate, ctx);\n case 'str/includes':\n return stdStr.evalStrIncludes(args, evaluate, ctx);\n case 'str/startsWith':\n return stdStr.evalStrStartsWith(args, evaluate, ctx);\n case 'str/endsWith':\n return stdStr.evalStrEndsWith(args, evaluate, ctx);\n case 'str/padStart':\n return stdStr.evalStrPadStart(args, evaluate, ctx);\n case 'str/padEnd':\n return stdStr.evalStrPadEnd(args, evaluate, ctx);\n case 'str/repeat':\n return stdStr.evalStrRepeat(args, evaluate, ctx);\n case 'str/reverse':\n return stdStr.evalStrReverse(args, evaluate, ctx);\n case 'str/capitalize':\n return stdStr.evalStrCapitalize(args, evaluate, ctx);\n case 'str/titleCase':\n return stdStr.evalStrTitleCase(args, evaluate, ctx);\n case 'str/camelCase':\n return stdStr.evalStrCamelCase(args, evaluate, ctx);\n case 'str/kebabCase':\n return stdStr.evalStrKebabCase(args, evaluate, ctx);\n case 'str/snakeCase':\n return stdStr.evalStrSnakeCase(args, evaluate, ctx);\n case 'str/default':\n return stdStr.evalStrDefault(args, evaluate, ctx);\n case 'str/template':\n return stdStr.evalStrTemplate(args, evaluate, ctx);\n case 'str/truncate':\n return stdStr.evalStrTruncate(args, evaluate, ctx);\n case 'to-string':\n return String(evaluate(args[0], ctx));\n\n // ===============================\n // Standard Library: array/*\n // ===============================\n case 'array/len':\n return stdArray.evalArrayLen(args, evaluate, ctx);\n case 'array/range':\n return stdArray.evalArrayRange(args, evaluate, ctx);\n case 'array/empty?':\n return stdArray.evalArrayEmpty(args, evaluate, ctx);\n case 'array/first':\n return stdArray.evalArrayFirst(args, evaluate, ctx);\n case 'array/last':\n return stdArray.evalArrayLast(args, evaluate, ctx);\n case 'array/nth':\n return stdArray.evalArrayNth(args, evaluate, ctx);\n case 'array/slice':\n return stdArray.evalArraySlice(args, evaluate, ctx);\n case 'array/concat':\n return stdArray.evalArrayConcat(args, evaluate, ctx);\n case 'array/append':\n return stdArray.evalArrayAppend(args, evaluate, ctx);\n case 'array/prepend':\n return stdArray.evalArrayPrepend(args, evaluate, ctx);\n case 'array/insert':\n return stdArray.evalArrayInsert(args, evaluate, ctx);\n case 'array/remove':\n return stdArray.evalArrayRemove(args, evaluate, ctx);\n case 'array/removeItem':\n return stdArray.evalArrayRemoveItem(args, evaluate, ctx);\n case 'array/reverse':\n return stdArray.evalArrayReverse(args, evaluate, ctx);\n case 'array/sort':\n return stdArray.evalArraySort(args, evaluate, ctx);\n case 'array/shuffle':\n return stdArray.evalArrayShuffle(args, evaluate, ctx);\n case 'array/unique':\n return stdArray.evalArrayUnique(args, evaluate, ctx);\n case 'array/flatten':\n return stdArray.evalArrayFlatten(args, evaluate, ctx);\n case 'array/zip':\n return stdArray.evalArrayZip(args, evaluate, ctx);\n case 'array/includes':\n return stdArray.evalArrayIncludes(args, evaluate, ctx);\n case 'array/indexOf':\n return stdArray.evalArrayIndexOf(args, evaluate, ctx);\n case 'array/find':\n return stdArray.evalArrayFind(args, evaluate, ctx);\n case 'array/findIndex':\n return stdArray.evalArrayFindIndex(args, evaluate, ctx);\n case 'array/filter':\n return stdArray.evalArrayFilter(args, evaluate, ctx);\n case 'array/reject':\n return stdArray.evalArrayReject(args, evaluate, ctx);\n case 'array/map':\n return stdArray.evalArrayMap(args, evaluate, ctx);\n case 'array/reduce':\n return stdArray.evalArrayReduce(args, evaluate, ctx);\n case 'array/every':\n return stdArray.evalArrayEvery(args, evaluate, ctx);\n case 'array/some':\n return stdArray.evalArraySome(args, evaluate, ctx);\n case 'array/count':\n return stdArray.evalArrayCount(args, evaluate, ctx);\n case 'array/sum':\n return stdArray.evalArraySum(args, evaluate, ctx);\n case 'array/avg':\n return stdArray.evalArrayAvg(args, evaluate, ctx);\n case 'array/min':\n return stdArray.evalArrayMin(args, evaluate, ctx);\n case 'array/max':\n return stdArray.evalArrayMax(args, evaluate, ctx);\n case 'array/groupBy':\n return stdArray.evalArrayGroupBy(args, evaluate, ctx);\n case 'array/partition':\n return stdArray.evalArrayPartition(args, evaluate, ctx);\n case 'array/take':\n return stdArray.evalArrayTake(args, evaluate, ctx);\n case 'array/drop':\n return stdArray.evalArrayDrop(args, evaluate, ctx);\n case 'array/takeLast':\n return stdArray.evalArrayTakeLast(args, evaluate, ctx);\n case 'array/dropLast':\n return stdArray.evalArrayDropLast(args, evaluate, ctx);\n\n // ===============================\n // Standard Library: object/*\n // ===============================\n case 'object/keys':\n return stdObject.evalObjectKeys(args, evaluate, ctx);\n case 'object/values':\n return stdObject.evalObjectValues(args, evaluate, ctx);\n case 'object/entries':\n return stdObject.evalObjectEntries(args, evaluate, ctx);\n case 'object/fromEntries':\n return stdObject.evalObjectFromEntries(args, evaluate, ctx);\n case 'object/get':\n return stdObject.evalObjectGet(args, evaluate, ctx);\n case 'object/set':\n return stdObject.evalObjectSet(args, evaluate, ctx);\n case 'object/has':\n return stdObject.evalObjectHas(args, evaluate, ctx);\n case 'object/merge':\n return stdObject.evalObjectMerge(args, evaluate, ctx);\n case 'object/deepMerge':\n return stdObject.evalObjectDeepMerge(args, evaluate, ctx);\n case 'object/pick':\n return stdObject.evalObjectPick(args, evaluate, ctx);\n case 'object/omit':\n return stdObject.evalObjectOmit(args, evaluate, ctx);\n case 'object/mapValues':\n return stdObject.evalObjectMapValues(args, evaluate, ctx);\n case 'object/mapKeys':\n return stdObject.evalObjectMapKeys(args, evaluate, ctx);\n case 'object/filter':\n return stdObject.evalObjectFilter(args, evaluate, ctx);\n case 'object/empty?':\n return stdObject.evalObjectEmpty(args, evaluate, ctx);\n case 'object/equals':\n return stdObject.evalObjectEquals(args, evaluate, ctx);\n case 'object/clone':\n return stdObject.evalObjectClone(args, evaluate, ctx);\n case 'object/deepClone':\n return stdObject.evalObjectDeepClone(args, evaluate, ctx);\n\n // Path operator (for dynamic field access)\n case 'path':\n return stdObject.evalPath(args, evaluate, ctx);\n\n // ===============================\n // Standard Library: validate/*\n // ===============================\n case 'validate/required':\n return stdValidate.evalValidateRequired(args, evaluate, ctx);\n case 'validate/string':\n return stdValidate.evalValidateString(args, evaluate, ctx);\n case 'validate/number':\n return stdValidate.evalValidateNumber(args, evaluate, ctx);\n case 'validate/boolean':\n return stdValidate.evalValidateBoolean(args, evaluate, ctx);\n case 'validate/array':\n return stdValidate.evalValidateArray(args, evaluate, ctx);\n case 'validate/object':\n return stdValidate.evalValidateObject(args, evaluate, ctx);\n case 'validate/email':\n return stdValidate.evalValidateEmail(args, evaluate, ctx);\n case 'validate/url':\n return stdValidate.evalValidateUrl(args, evaluate, ctx);\n case 'validate/uuid':\n return stdValidate.evalValidateUuid(args, evaluate, ctx);\n case 'validate/phone':\n return stdValidate.evalValidatePhone(args, evaluate, ctx);\n case 'validate/creditCard':\n return stdValidate.evalValidateCreditCard(args, evaluate, ctx);\n case 'validate/date':\n return stdValidate.evalValidateDate(args, evaluate, ctx);\n case 'validate/minLength':\n return stdValidate.evalValidateMinLength(args, evaluate, ctx);\n case 'validate/maxLength':\n return stdValidate.evalValidateMaxLength(args, evaluate, ctx);\n case 'validate/length':\n return stdValidate.evalValidateLength(args, evaluate, ctx);\n case 'validate/min':\n return stdValidate.evalValidateMin(args, evaluate, ctx);\n case 'validate/max':\n return stdValidate.evalValidateMax(args, evaluate, ctx);\n case 'validate/range':\n return stdValidate.evalValidateRange(args, evaluate, ctx);\n case 'validate/pattern':\n return stdValidate.evalValidatePattern(args, evaluate, ctx);\n case 'validate/oneOf':\n return stdValidate.evalValidateOneOf(args, evaluate, ctx);\n case 'validate/noneOf':\n return stdValidate.evalValidateNoneOf(args, evaluate, ctx);\n case 'validate/equals':\n return stdValidate.evalValidateEquals(args, evaluate, ctx);\n case 'validate/check':\n return stdValidate.evalValidateCheck(args, evaluate, ctx);\n\n // ===============================\n // Standard Library: time/*\n // ===============================\n case 'time/now':\n return stdTime.evalTimeNow();\n case 'time/today':\n return stdTime.evalTimeToday();\n case 'time/parse':\n return stdTime.evalTimeParse(args, evaluate, ctx);\n case 'time/format':\n return stdTime.evalTimeFormat(args, evaluate, ctx);\n case 'time/year':\n return stdTime.evalTimeYear(args, evaluate, ctx);\n case 'time/month':\n return stdTime.evalTimeMonth(args, evaluate, ctx);\n case 'time/day':\n return stdTime.evalTimeDay(args, evaluate, ctx);\n case 'time/weekday':\n return stdTime.evalTimeWeekday(args, evaluate, ctx);\n case 'time/hour':\n return stdTime.evalTimeHour(args, evaluate, ctx);\n case 'time/minute':\n return stdTime.evalTimeMinute(args, evaluate, ctx);\n case 'time/second':\n return stdTime.evalTimeSecond(args, evaluate, ctx);\n case 'time/add':\n return stdTime.evalTimeAdd(args, evaluate, ctx);\n case 'time/subtract':\n return stdTime.evalTimeSubtract(args, evaluate, ctx);\n case 'time/diff':\n return stdTime.evalTimeDiff(args, evaluate, ctx);\n case 'time/startOf':\n return stdTime.evalTimeStartOf(args, evaluate, ctx);\n case 'time/endOf':\n return stdTime.evalTimeEndOf(args, evaluate, ctx);\n case 'time/isBefore':\n return stdTime.evalTimeIsBefore(args, evaluate, ctx);\n case 'time/isAfter':\n return stdTime.evalTimeIsAfter(args, evaluate, ctx);\n case 'time/isBetween':\n return stdTime.evalTimeIsBetween(args, evaluate, ctx);\n case 'time/isSame':\n return stdTime.evalTimeIsSame(args, evaluate, ctx);\n case 'time/isPast':\n return stdTime.evalTimeIsPast(args, evaluate, ctx);\n case 'time/isFuture':\n return stdTime.evalTimeIsFuture(args, evaluate, ctx);\n case 'time/isToday':\n return stdTime.evalTimeIsToday(args, evaluate, ctx);\n case 'time/relative':\n return stdTime.evalTimeRelative(args, evaluate, ctx);\n case 'time/duration':\n return stdTime.evalTimeDuration(args, evaluate, ctx);\n\n // ===============================\n // Standard Library: format/*\n // ===============================\n case 'format/number':\n return stdFormat.evalFormatNumber(args, evaluate, ctx);\n case 'format/currency':\n return stdFormat.evalFormatCurrency(args, evaluate, ctx);\n case 'format/percent':\n return stdFormat.evalFormatPercent(args, evaluate, ctx);\n case 'format/bytes':\n return stdFormat.evalFormatBytes(args, evaluate, ctx);\n case 'format/ordinal':\n return stdFormat.evalFormatOrdinal(args, evaluate, ctx);\n case 'format/plural':\n return stdFormat.evalFormatPlural(args, evaluate, ctx);\n case 'format/list':\n return stdFormat.evalFormatList(args, evaluate, ctx);\n case 'format/phone':\n return stdFormat.evalFormatPhone(args, evaluate, ctx);\n case 'format/creditCard':\n return stdFormat.evalFormatCreditCard(args, evaluate, ctx);\n\n // ===============================\n // Standard Library: async/*\n // ===============================\n case 'async/delay':\n return stdAsync.evalAsyncDelay(args, evaluate, ctx);\n case 'async/interval':\n return stdAsync.evalAsyncInterval(args, evaluate, ctx);\n case 'async/timeout':\n return stdAsync.evalAsyncTimeout(args, evaluate, ctx);\n case 'async/debounce':\n stdAsync.evalAsyncDebounce(args, evaluate, ctx);\n return undefined;\n case 'async/throttle':\n stdAsync.evalAsyncThrottle(args, evaluate, ctx);\n return undefined;\n case 'async/retry':\n return stdAsync.evalAsyncRetry(args, evaluate, ctx);\n case 'async/race':\n return stdAsync.evalAsyncRace(args, evaluate, ctx);\n case 'async/all':\n return stdAsync.evalAsyncAll(args, evaluate, ctx);\n case 'async/sequence':\n return stdAsync.evalAsyncSequence(args, evaluate, ctx);\n\n // ===============================\n // Standard Library: prob/*\n // ===============================\n case 'prob/seed':\n stdProb.evalProbSeed(args, evaluate, ctx);\n return undefined;\n case 'prob/flip':\n return stdProb.evalProbFlip(args, evaluate, ctx);\n case 'prob/gaussian':\n return stdProb.evalProbGaussian(args, evaluate, ctx);\n case 'prob/uniform':\n return stdProb.evalProbUniform(args, evaluate, ctx);\n case 'prob/beta':\n return stdProb.evalProbBeta(args, evaluate, ctx);\n case 'prob/categorical':\n return stdProb.evalProbCategorical(args, evaluate, ctx);\n case 'prob/poisson':\n return stdProb.evalProbPoisson(args, evaluate, ctx);\n case 'prob/condition':\n stdProb.evalProbCondition(args, evaluate, ctx);\n return undefined;\n case 'prob/sample':\n return stdProb.evalProbSample(args, evaluate, ctx);\n case 'prob/posterior':\n return stdProb.evalProbPosterior(args, evaluate, ctx);\n case 'prob/infer':\n return stdProb.evalProbInfer(args, evaluate, ctx);\n case 'prob/expected-value':\n return stdProb.evalProbExpectedValue(args, evaluate, ctx);\n case 'prob/variance':\n return stdProb.evalProbVariance(args, evaluate, ctx);\n case 'prob/histogram':\n return stdProb.evalProbHistogram(args, evaluate, ctx);\n case 'prob/percentile':\n return stdProb.evalProbPercentile(args, evaluate, ctx);\n case 'prob/credible-interval':\n return stdProb.evalProbCredibleInterval(args, evaluate, ctx);\n\n // ===============================\n // Standard Library: os/*\n // ===============================\n case 'os/watch-files': stdOs.evalOsWatchFiles(args, evaluate, ctx); return undefined;\n case 'os/watch-process': stdOs.evalOsWatchProcess(args, evaluate, ctx); return undefined;\n case 'os/watch-port': stdOs.evalOsWatchPort(args, evaluate, ctx); return undefined;\n case 'os/watch-http': stdOs.evalOsWatchHttp(args, evaluate, ctx); return undefined;\n case 'os/watch-cron': stdOs.evalOsWatchCron(args, evaluate, ctx); return undefined;\n case 'os/watch-signal': stdOs.evalOsWatchSignal(args, evaluate, ctx); return undefined;\n case 'os/watch-env': stdOs.evalOsWatchEnv(args, evaluate, ctx); return undefined;\n case 'os/debounce': stdOs.evalOsDebounce(args, evaluate, ctx); return undefined;\n\n // ===============================\n // Standard Library: llm/*\n // ===============================\n case 'llm/generate': return stdLlm.evalLlmGenerate(args, evaluate, ctx);\n case 'llm/call-tools': return stdLlm.evalLlmCallTools(args, evaluate, ctx);\n case 'llm/embed': return stdLlm.evalLlmEmbed(args, evaluate, ctx);\n case 'llm/token-count': return stdLlm.evalLlmTokenCount(args, evaluate, ctx);\n case 'llm/switch': return stdLlm.evalLlmSwitch(args, evaluate, ctx);\n case 'llm/compact': return stdLlm.evalLlmCompact(args, evaluate, ctx);\n\n // ===============================\n // Standard Library: workspace/*\n // ===============================\n case 'workspace/read-orbital': return stdWorkspace.evalWorkspaceReadOrbital(args, evaluate, ctx);\n case 'workspace/write-orbital': return stdWorkspace.evalWorkspaceWriteOrbital(args, evaluate, ctx);\n case 'workspace/read-file': return stdWorkspace.evalWorkspaceReadFile(args, evaluate, ctx);\n case 'workspace/write-file': return stdWorkspace.evalWorkspaceWriteFile(args, evaluate, ctx);\n case 'workspace/exists': return stdWorkspace.evalWorkspaceExists(args, evaluate, ctx);\n case 'workspace/list-orbitals': return stdWorkspace.evalWorkspaceListOrbitals(args, evaluate, ctx);\n case 'workspace/read-schema': return stdWorkspace.evalWorkspaceReadSchema(args, evaluate, ctx);\n case 'workspace/write-schema': return stdWorkspace.evalWorkspaceWriteSchema(args, evaluate, ctx);\n case 'workspace/read-plan': return stdWorkspace.evalWorkspaceReadPlan(args, evaluate, ctx);\n case 'workspace/write-plan': return stdWorkspace.evalWorkspaceWritePlan(args, evaluate, ctx);\n case 'workspace/archive-orbital': return stdWorkspace.evalWorkspaceArchiveOrbital(args, evaluate, ctx);\n\n // ===============================\n // Standard Library: session/*\n // ===============================\n case 'session/read-spec': return stdSession.evalSessionReadSpec(args, evaluate, ctx);\n case 'session/write-spec': return stdSession.evalSessionWriteSpec(args, evaluate, ctx);\n case 'session/read-memory': return stdSession.evalSessionReadMemory(args, evaluate, ctx);\n case 'session/write-memory': return stdSession.evalSessionWriteMemory(args, evaluate, ctx);\n case 'session/read-history': return stdSession.evalSessionReadHistory(args, evaluate, ctx);\n case 'session/append-history': return stdSession.evalSessionAppendHistory(args, evaluate, ctx);\n case 'session/read-errors': return stdSession.evalSessionReadErrors(args, evaluate, ctx);\n case 'session/write-errors': return stdSession.evalSessionWriteErrors(args, evaluate, ctx);\n case 'session/read-analysis': return stdSession.evalSessionReadAnalysis(args, evaluate, ctx);\n\n // ===============================\n // Standard Library: memory/*\n // ===============================\n case 'memory/recall': return stdMemory.evalMemoryRecall(args, evaluate, ctx);\n case 'memory/store': return stdMemory.evalMemoryStore(args, evaluate, ctx);\n case 'memory/list': return stdMemory.evalMemoryList(args, evaluate, ctx);\n\n // ===============================\n // Standard Library: trace/*\n // ===============================\n case 'trace/emit': return stdTrace.evalTraceEmit(args, evaluate, ctx);\n case 'trace/log': return stdTrace.evalTraceLog(args, evaluate, ctx);\n\n // ===============================\n // Standard Library: integration/*\n // ===============================\n case 'integration/http': return stdIntegration.evalIntegrationHttp(args, evaluate, ctx);\n case 'integration/github-get-repo': return stdIntegration.evalIntegrationGithubGetRepo(args, evaluate, ctx);\n case 'integration/github-create-issue': return stdIntegration.evalIntegrationGithubCreateIssue(args, evaluate, ctx);\n\n default:\n return UNKNOWN_OPERATOR;\n }\n }\n}\n\n// Export singleton instance for convenience\nexport const evaluator = new SExpressionEvaluator();\n\n// Export convenience functions\nexport function evaluate(expr: SExpr, ctx: EvaluationContext): unknown {\n return evaluator.evaluate(expr, ctx);\n}\n\nexport function evaluateGuard(expr: SExpr, ctx: EvaluationContext): boolean {\n return evaluator.evaluateGuard(expr, ctx);\n}\n\nexport function executeEffect(expr: SExpr, ctx: EvaluationContext): void {\n evaluator.executeEffect(expr, ctx);\n}\n\nexport function executeEffects(effects: SExpr[], ctx: EvaluationContext): void {\n evaluator.executeEffects(effects, ctx);\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../context.ts","../operators/arithmetic.ts","../operators/comparison.ts","../operators/logic.ts","../operators/control.ts","../operators/collections.ts","../operators/effects.ts","../std/math.ts","../std/str.ts","../std/array.ts","../std/object.ts","../std/validate.ts","../std/time.ts","../std/format.ts","../std/async.ts","../std/prob.ts","../std/os.ts","../std/llm.ts","../std/substrate-guards.ts","../std/workspace.ts","../std/session.ts","../std/memory.ts","../std/trace.ts","../std/integration.ts","../std/vector.ts","../std/geo.ts","../std/grid.ts","../std/anim.ts","../std/ease.ts","../std/noise.ts","../std/path.ts","../SExpressionEvaluator.ts"],"names":["key","evaluate","toNumber","p","childCtx","deepEqual","z","asVec","num","sector","idx","asCell"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * Evaluation Context\n *\n * Defines the context for evaluating S-expressions at runtime.\n * This context provides access to entity data, payload, state, and effect handlers.\n *\n * @packageDocumentation\n */\n\nimport type { AgentContext, LlmContext, WorkspaceContext, SessionContext, MemoryContext, TraceContext, IntegrationContext, TraitConfig } from '@almadar/core';\n\n/**\n * User context for @user bindings (role-based UI).\n */\nexport interface UserContext {\n /** User's unique ID */\n id: string;\n /** User's email */\n email?: string;\n /** User's display name */\n name?: string;\n /** User's role (for RBAC) */\n role?: string;\n /** User's permissions */\n permissions?: string[];\n /** Additional custom profile fields */\n [key: string]: unknown;\n}\n\n/**\n * Evaluation context for S-expression evaluation.\n * Provides all bindings and effect handlers needed at runtime.\n */\nexport interface EvaluationContext {\n /** Entity data for @entity bindings */\n entity: Record<string, unknown>;\n\n /** Payload data for @payload bindings */\n payload: Record<string, unknown>;\n\n /** Current state for @state binding */\n state: string;\n\n /** Current timestamp for @now binding (defaults to Date.now()) */\n now: number;\n\n /** User data for @user bindings (role-based UI) */\n user?: UserContext;\n\n /** Singleton entities for @EntityName bindings */\n singletons: Map<string, Record<string, unknown>>;\n\n /** Local variables from 'let' bindings */\n locals?: Map<string, unknown>;\n\n /**\n * Call-site trait config for @config bindings. Populated by\n * `OrbitalServerRuntime.executeEffects` from `RegisteredOrbital.configByTrait`.\n * Molecules parameterize imported atoms through `config: { ... }` on the\n * trait ref; the atom's render-ui reads `@config.icon`, `@config.title`, etc.\n */\n config?: TraitConfig;\n\n /**\n * When true, log warnings when bindings resolve to undefined. (RCG-01)\n * Helps detect typos and missing entity fields early.\n */\n strictBindings?: boolean;\n\n /**\n * Set by prob/condition when a predicate fails during inference.\n * Checked by prob/posterior and prob/infer to reject samples.\n */\n _probRejected?: boolean;\n\n /**\n * Seeded PRNG state for deterministic probabilistic sampling.\n * Stored as a mutable object so child contexts share the same state.\n * Set by prob/seed.\n */\n _probSeed?: { state: number };\n\n /** Agent context for agent/* operators (memory, LLM, tools, session) */\n agent?: AgentContext;\n\n /** Substrate contexts for llm/*, workspace/*, session/*, memory/*, trace/*, integration/* operators */\n llm?: LlmContext;\n workspace?: WorkspaceContext;\n session?: SessionContext;\n memory?: MemoryContext;\n trace?: TraceContext;\n integration?: IntegrationContext;\n\n // ============================================================================\n // Effect Handlers (for executing side effects)\n // ============================================================================\n\n /** Mutate entity fields */\n mutateEntity?: (changes: Record<string, unknown>) => void;\n\n /** Emit an event */\n emit?: (event: string, payload?: unknown) => void;\n\n /** Navigate to a route */\n navigate?: (route: string, params?: Record<string, unknown>) => void;\n\n /** Persist data (create/update/delete/batch) */\n persist?: (action: 'create' | 'update' | 'delete' | 'batch', data?: Record<string, unknown>) => Promise<void>;\n\n /** Show a notification */\n notify?: (message: string, type?: 'success' | 'error' | 'warning' | 'info') => void;\n\n /** Spawn a new entity instance */\n spawn?: (entityType: string, props?: Record<string, unknown>) => void;\n\n /** Despawn an entity instance */\n despawn?: (entityId?: string) => void;\n\n /** Call an external service */\n callService?: (service: string, method: string, params?: Record<string, unknown>) => Promise<unknown>;\n\n /** Render UI to a slot */\n renderUI?: (slot: string, pattern: unknown, props?: Record<string, unknown>, priority?: number) => void;\n\n /** Register an OS trigger (server-side only) */\n registerOsTrigger?: (type: string, config: Record<string, unknown>) => void;\n\n // ============================================================================\n // Resource Operators (ref/deref/swap!/watch/atomic)\n // ============================================================================\n\n /** Effect handlers for resource operators (grouped to avoid top-level pollution) */\n effectHandlers?: {\n ref?: (entityType: string, options?: unknown) => unknown;\n deref?: (entityType: string, id?: unknown) => unknown;\n swap?: (entityType: string, id: unknown, transformExpr: unknown, evaluate: unknown, ctx: unknown) => unknown;\n watch?: (entityType: string, effects: unknown[], evaluate: unknown, ctx: unknown) => void;\n atomic?: (effects: unknown[], evaluate: unknown, ctx: unknown) => unknown;\n fetch?: (entityType: string, options?: unknown) => unknown;\n };\n}\n\n/**\n * Create a minimal evaluation context for testing/guards.\n * Only includes bindings, no effect handlers.\n */\nexport function createMinimalContext(\n entity: Record<string, unknown> = {},\n payload: Record<string, unknown> = {},\n state: string = 'initial'\n): EvaluationContext {\n return {\n entity,\n payload,\n state,\n now: Date.now(),\n singletons: new Map(),\n };\n}\n\n/**\n * Create a context with effect handlers.\n * Used for runtime evaluation where effects need to execute.\n */\nexport function createEffectContext(\n base: EvaluationContext,\n handlers: Partial<Pick<EvaluationContext,\n 'mutateEntity' | 'emit' | 'navigate' | 'persist' | 'notify' | 'spawn' | 'despawn' | 'callService' | 'renderUI'\n >>\n): EvaluationContext {\n return {\n ...base,\n ...handlers,\n };\n}\n\n/**\n * Create a child context with additional local bindings.\n * Used for 'let' expressions.\n */\nexport function createChildContext(\n parent: EvaluationContext,\n locals: Map<string, unknown>\n): EvaluationContext {\n // Merge parent locals with new locals\n const mergedLocals = new Map(parent.locals);\n locals.forEach((value, key) => mergedLocals.set(key, value));\n\n return {\n ...parent,\n locals: mergedLocals,\n };\n}\n\n/**\n * Resolve a binding in the context.\n *\n * @param binding - Binding string (e.g., \"@entity.health\", \"@payload.amount\")\n * @param ctx - Evaluation context\n * @returns Resolved value or undefined\n */\n/**\n * Binding roots whose values only exist in client UI state (e.g. `@trait.*`\n * resolves to another trait's current `render-ui` output, which lives in\n * `@almadar/ui`'s slot manager, not on the server). Evaluator returns\n * `undefined` for these without emitting a strict-mode warning — they're\n * expected to round-trip through the server verbatim and be substituted at\n * render time. Mirrors `CLIENT_ONLY_BINDING_ROOTS` in\n * `@almadar/runtime/BindingResolver`.\n */\nconst CLIENT_ONLY_BINDING_ROOTS: ReadonlySet<string> = new Set(['trait']);\n\nexport function resolveBinding(binding: string, ctx: EvaluationContext): unknown {\n if (!binding.startsWith('@')) {\n return undefined;\n }\n\n const withoutPrefix = binding.slice(1);\n // Split on `.` but also expand bracket-index segments into separate\n // path steps. `config.sections[0].bullets` -> ['config', 'sections',\n // '0', 'bullets']. Indices are numeric strings; the navigation loop\n // below handles them transparently against arrays (Array['0'] reads\n // index 0). Lolos use bracket notation to address typed config\n // arrays (e.g. `@config.sections[0].title` on a per-section split-\n // section pattern); without this expansion the segment 'sections[0]'\n // is looked up as a literal property name and resolves to undefined.\n const parts = withoutPrefix.split('.').flatMap((seg) => {\n const m = seg.match(/^([\\w]+)((?:\\[\\d+\\])+)$/);\n if (!m) return [seg];\n const head = m[1];\n const indices = Array.from(m[2].matchAll(/\\[(\\d+)\\]/g)).map((x) => x[1]);\n return [head, ...indices];\n });\n const root = parts[0];\n const path = parts.slice(1);\n\n // Client-only bindings never resolve server-side. Short-circuit so\n // strict-mode warnings don't fire on intentional-unresolved paths.\n if (CLIENT_ONLY_BINDING_ROOTS.has(root)) {\n return undefined;\n }\n\n let value: unknown;\n\n // Check locals first\n if (ctx.locals?.has(root)) {\n value = ctx.locals.get(root);\n } else {\n // Core bindings\n switch (root) {\n case 'entity':\n value = ctx.entity;\n break;\n case 'payload':\n value = ctx.payload;\n break;\n case 'state':\n return ctx.state; // @state has no path\n case 'now':\n return ctx.now; // @now has no path\n case 'user':\n value = ctx.user;\n break;\n case 'config':\n // Call-site trait config injected by OrbitalServerRuntime (see\n // RegisteredOrbital.configByTrait). Molecules parameterize imported\n // atoms through `config: { ... }` on the trait ref; the atom's\n // render-ui reads `@config.icon`, `@config.title`, etc.\n value = ctx.config;\n break;\n default:\n // Singleton entity reference (@EntityName.field)\n value = ctx.singletons.get(root);\n break;\n }\n }\n\n // Navigate path\n for (let i = 0; i < path.length; i++) {\n const segment = path[i];\n if (value === null || value === undefined) {\n if (ctx.strictBindings) {\n const resolvedSoFar = [root, ...path.slice(0, i)].join('.');\n console.warn(\n `[Binding] @${root}.${path.join('.')} resolved to undefined ` +\n `(failed at \"${segment}\" — @${resolvedSoFar} is ${value === null ? 'null' : 'undefined'})`\n );\n }\n return undefined;\n }\n if (typeof value === 'object') {\n value = (value as Record<string, unknown>)[segment];\n } else {\n if (ctx.strictBindings) {\n const resolvedSoFar = [root, ...path.slice(0, i)].join('.');\n console.warn(\n `[Binding] @${root}.${path.join('.')} resolved to undefined ` +\n `(cannot navigate \"${segment}\" on non-object at @${resolvedSoFar})`\n );\n }\n return undefined;\n }\n }\n\n if (value === undefined && path.length > 0 && ctx.strictBindings) {\n console.warn(\n `[Binding] @${root}.${path.join('.')} resolved to undefined`\n );\n }\n\n return value;\n}\n","/**\n * Arithmetic Operator Implementations\n *\n * Implements: +, -, *, /, %, abs, min, max, floor, ceil, round, clamp\n */\n\nimport type { SExpr } from '../types/expression.js';\nimport type { EvaluationContext } from '../context.js';\n\ntype Evaluator = (expr: SExpr, ctx: EvaluationContext) => unknown;\n\n/**\n * Evaluate addition: [\"+\", a, b, ...]\n */\nexport function evalAdd(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): number {\n return args.reduce((sum: number, arg) => sum + toNumber(evaluate(arg, ctx)), 0);\n}\n\n/**\n * Evaluate subtraction: [\"-\", a] (negate) or [\"-\", a, b] (subtract)\n */\nexport function evalSubtract(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): number {\n if (args.length === 1) {\n return -toNumber(evaluate(args[0], ctx));\n }\n return toNumber(evaluate(args[0], ctx)) - toNumber(evaluate(args[1], ctx));\n}\n\n/**\n * Evaluate multiplication: [\"*\", a, b, ...]\n */\nexport function evalMultiply(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): number {\n return args.reduce((product: number, arg) => product * toNumber(evaluate(arg, ctx)), 1);\n}\n\n/**\n * Evaluate division: [\"/\", a, b]\n */\nexport function evalDivide(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): number {\n const dividend = toNumber(evaluate(args[0], ctx));\n const divisor = toNumber(evaluate(args[1], ctx));\n if (divisor === 0) {\n return dividend >= 0 ? Infinity : -Infinity;\n }\n return dividend / divisor;\n}\n\n/**\n * Evaluate modulo: [\"%\", a, b]\n */\nexport function evalModulo(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): number {\n return toNumber(evaluate(args[0], ctx)) % toNumber(evaluate(args[1], ctx));\n}\n\n/**\n * Evaluate absolute value: [\"abs\", a]\n */\nexport function evalAbs(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): number {\n return Math.abs(toNumber(evaluate(args[0], ctx)));\n}\n\n/**\n * Evaluate minimum: [\"min\", a, b, ...]\n */\nexport function evalMin(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): number {\n const values = args.map((arg) => toNumber(evaluate(arg, ctx)));\n return Math.min(...values);\n}\n\n/**\n * Evaluate maximum: [\"max\", a, b, ...]\n */\nexport function evalMax(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): number {\n const values = args.map((arg) => toNumber(evaluate(arg, ctx)));\n return Math.max(...values);\n}\n\n/**\n * Evaluate floor: [\"floor\", a]\n */\nexport function evalFloor(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): number {\n return Math.floor(toNumber(evaluate(args[0], ctx)));\n}\n\n/**\n * Evaluate ceiling: [\"ceil\", a]\n */\nexport function evalCeil(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): number {\n return Math.ceil(toNumber(evaluate(args[0], ctx)));\n}\n\n/**\n * Evaluate round: [\"round\", a]\n */\nexport function evalRound(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): number {\n return Math.round(toNumber(evaluate(args[0], ctx)));\n}\n\n/**\n * Evaluate clamp: [\"clamp\", value, min, max]\n */\nexport function evalClamp(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): number {\n const value = toNumber(evaluate(args[0], ctx));\n const min = toNumber(evaluate(args[1], ctx));\n const max = toNumber(evaluate(args[2], ctx));\n return Math.max(min, Math.min(max, value));\n}\n\n/**\n * Convert a value to a number, defaulting to 0 for non-numbers.\n */\nfunction toNumber(value: unknown): number {\n if (typeof value === 'number') return value;\n if (typeof value === 'string') {\n const parsed = parseFloat(value);\n return isNaN(parsed) ? 0 : parsed;\n }\n if (typeof value === 'boolean') return value ? 1 : 0;\n return 0;\n}\n","/**\n * Comparison Operator Implementations\n *\n * Implements: =, !=, <, >, <=, >=\n */\n\nimport type { SExpr } from '../types/expression.js';\nimport type { EvaluationContext } from '../context.js';\n\ntype Evaluator = (expr: SExpr, ctx: EvaluationContext) => unknown;\n\n/**\n * Evaluate equality: [\"=\", a, b]\n * Uses strict equality (===) for type safety.\n */\nexport function evalEqual(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): boolean {\n const left = evaluate(args[0], ctx);\n const right = evaluate(args[1], ctx);\n return deepEqual(left, right);\n}\n\n/**\n * Evaluate not-equal: [\"!=\", a, b]\n */\nexport function evalNotEqual(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): boolean {\n const left = evaluate(args[0], ctx);\n const right = evaluate(args[1], ctx);\n return !deepEqual(left, right);\n}\n\n/**\n * Evaluate less-than: [\"<\", a, b]\n */\nexport function evalLessThan(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): boolean {\n const left = evaluate(args[0], ctx);\n const right = evaluate(args[1], ctx);\n return toComparable(left) < toComparable(right);\n}\n\n/**\n * Evaluate greater-than: [\">\", a, b]\n */\nexport function evalGreaterThan(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): boolean {\n const left = evaluate(args[0], ctx);\n const right = evaluate(args[1], ctx);\n return toComparable(left) > toComparable(right);\n}\n\n/**\n * Evaluate less-than-or-equal: [\"<=\", a, b]\n */\nexport function evalLessThanOrEqual(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): boolean {\n const left = evaluate(args[0], ctx);\n const right = evaluate(args[1], ctx);\n return toComparable(left) <= toComparable(right);\n}\n\n/**\n * Evaluate greater-than-or-equal: [\">=\", a, b]\n */\nexport function evalGreaterThanOrEqual(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): boolean {\n const left = evaluate(args[0], ctx);\n const right = evaluate(args[1], ctx);\n return toComparable(left) >= toComparable(right);\n}\n\n/**\n * Evaluate regex match: [\"matches\", subject, pattern]\n * Returns true if subject matches the regex pattern.\n */\nexport function evalMatches(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): boolean {\n const subject = evaluate(args[0], ctx);\n const pattern = evaluate(args[1], ctx);\n\n if (typeof subject !== 'string' || typeof pattern !== 'string') {\n return false;\n }\n\n try {\n const regex = new RegExp(pattern);\n return regex.test(subject);\n } catch {\n // Invalid regex pattern\n return false;\n }\n}\n\n/**\n * Deep equality check for objects and arrays.\n */\nfunction deepEqual(a: unknown, b: unknown): boolean {\n // Primitive equality\n if (a === b) return true;\n\n // Null/undefined checks\n if (a === null || b === null) return a === b;\n if (a === undefined || b === undefined) return a === b;\n\n // Type checks\n if (typeof a !== typeof b) return false;\n\n // Array equality\n if (Array.isArray(a) && Array.isArray(b)) {\n if (a.length !== b.length) return false;\n return a.every((val, idx) => deepEqual(val, b[idx]));\n }\n\n // Object equality\n if (typeof a === 'object' && typeof b === 'object') {\n const keysA = Object.keys(a as object);\n const keysB = Object.keys(b as object);\n if (keysA.length !== keysB.length) return false;\n return keysA.every((key) =>\n deepEqual((a as Record<string, unknown>)[key], (b as Record<string, unknown>)[key])\n );\n }\n\n return false;\n}\n\n/**\n * Convert to a comparable value for ordering operations.\n */\nfunction toComparable(value: unknown): number | string {\n if (typeof value === 'number') return value;\n if (typeof value === 'string') return value;\n if (typeof value === 'boolean') return value ? 1 : 0;\n if (value === null || value === undefined) return 0;\n return String(value);\n}\n","/**\n * Logic Operator Implementations\n *\n * Implements: and, or, not, if\n * All logic operators support short-circuit evaluation.\n */\n\nimport type { SExpr } from '../types/expression.js';\nimport type { EvaluationContext } from '../context.js';\n\ntype Evaluator = (expr: SExpr, ctx: EvaluationContext) => unknown;\n\n/**\n * Evaluate logical AND: [\"and\", a, b, ...]\n * Operand semantics (matches JS `&&` and the compiled TS path — Phase 5,\n * R-OR-AND-RETURN-BOOLEAN): returns the first falsy argument's VALUE, or the\n * last argument's value if all are truthy. Short-circuits — does not evaluate\n * past the first falsy. (When every operand is boolean — the case for all\n * shipping behaviors — this is observationally identical to returning a\n * boolean.)\n */\nexport function evalAnd(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): unknown {\n let last: unknown = true;\n for (const arg of args) {\n last = evaluate(arg, ctx);\n if (!toBoolean(last)) {\n return last;\n }\n }\n return last;\n}\n\n/**\n * Evaluate logical OR: [\"or\", a, b, ...]\n * Operand semantics (matches JS `||` and the compiled TS path — Phase 5,\n * R-OR-AND-RETURN-BOOLEAN): returns the first truthy argument's VALUE, or the\n * last argument's value if all are falsy. Short-circuits — does not evaluate\n * past the first truthy.\n */\nexport function evalOr(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): unknown {\n let last: unknown = false;\n for (const arg of args) {\n last = evaluate(arg, ctx);\n if (toBoolean(last)) {\n return last;\n }\n }\n return last;\n}\n\n/**\n * Evaluate logical NOT: [\"not\", a]\n */\nexport function evalNot(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): boolean {\n return !toBoolean(evaluate(args[0], ctx));\n}\n\n/**\n * Evaluate conditional: [\"if\", condition, then, else]\n * Only evaluates the branch that matches the condition.\n */\nexport function evalIf(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): unknown {\n const condition = toBoolean(evaluate(args[0], ctx));\n if (condition) {\n return evaluate(args[1], ctx);\n }\n return evaluate(args[2], ctx);\n}\n\n/**\n * Convert a value to boolean.\n * Follows JavaScript truthy/falsy semantics:\n * - false, 0, '', null, undefined, NaN are falsy\n * - Everything else is truthy\n */\nfunction toBoolean(value: unknown): boolean {\n return Boolean(value);\n}\n","/**\n * Control Operator Implementations\n *\n * Implements: let, do, when, fn\n */\n\nimport type { SExpr } from '../types/expression.js';\nimport type { EvaluationContext } from '../context.js';\nimport { createChildContext } from '../context.js';\n\ntype Evaluator = (expr: SExpr, ctx: EvaluationContext) => unknown;\n\n/**\n * Evaluate let binding.\n * Supports two formats:\n * - Array of pairs: [\"let\", [[\"x\", 10], [\"y\", 20]], body]\n * - Object style: [\"let\", {\"x\": 10, \"y\": 20}, body]\n *\n * Sequential (`let*`) semantics: each binding's value expression can\n * reference any EARLIER binding in the same `let` via `@<name>` — matches\n * `@almadar/runtime`'s `EffectExecutor` `let` case (its own, independent\n * implementation, which already threads bindings this way) and how `.lolo`\n * is authored in practice: multi-step chains where a later step's formula\n * builds on an earlier one (e.g. std-evade-chase's `chase` tick computing\n * `nc2x` from `nc1x`). Evaluating every binding against the original,\n * unmodified `ctx` (the prior behavior here) left every cross-binding\n * reference unresolved (`undefined`), silently corrupting any `let` with\n * dependent bindings.\n */\nexport function evalLet(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): unknown {\n const rawBindings = args[0];\n const body = args[1];\n\n // Build binding pairs from either array-of-pairs or object format\n const bindingPairs: Array<[string, SExpr]> = Array.isArray(rawBindings)\n ? (rawBindings as SExpr[][]).map(b => [b[0] as string, b[1]])\n : Object.entries(rawBindings as Record<string, SExpr>);\n\n // Evaluate each binding against the locals accumulated so far, then fold\n // it in before evaluating the next one.\n const locals = new Map<string, unknown>();\n let childCtx = ctx;\n for (const [name, valueExpr] of bindingPairs) {\n const value = evaluate(valueExpr, childCtx);\n locals.set(name, value);\n childCtx = createChildContext(ctx, locals);\n }\n\n // Evaluate body with the fully-accumulated context (childCtx === ctx,\n // unchanged, when there are no bindings).\n return evaluate(body, childCtx);\n}\n\n/**\n * Evaluate do block: [\"do\", expr1, expr2, ...]\n * Executes expressions in sequence, returns last result.\n */\nexport function evalDo(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): unknown {\n let result: unknown = undefined;\n for (const expr of args) {\n result = evaluate(expr, ctx);\n }\n return result;\n}\n\n/**\n * Evaluate when: [\"when\", condition, effect]\n * Executes effect only when condition is truthy.\n */\nexport function evalWhen(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): void {\n const condition = evaluate(args[0], ctx);\n if (Boolean(condition)) {\n evaluate(args[1], ctx);\n }\n}\n\n/**\n * Evaluate lambda: [\"fn\", varName, body] or [\"fn\", [vars], body]\n * Creates a function that can be passed to collection operators.\n */\nexport function evalFn(\n args: SExpr[],\n _evaluate: Evaluator,\n _ctx: EvaluationContext\n): (item: unknown, evaluate: Evaluator, ctx: EvaluationContext) => unknown {\n const params = args[0];\n const body = args[1];\n\n // Return a closure that can be called with an item\n return (item: unknown, evaluate: Evaluator, ctx: EvaluationContext) => {\n const locals = new Map<string, unknown>();\n\n // Handle single variable or array of variables\n if (typeof params === 'string') {\n locals.set(params, item);\n } else if (Array.isArray(params)) {\n const itemArray = Array.isArray(item) ? item : [item];\n for (let i = 0; i < params.length; i++) {\n locals.set(params[i] as string, itemArray[i]);\n }\n }\n\n const childCtx = createChildContext(ctx, locals);\n return evaluate(body, childCtx);\n };\n}\n","/**\n * Collection Operator Implementations\n *\n * Implements: map, filter, find, count, sum, first, last, nth, concat, includes, empty\n *\n * These short-form operators (map, filter, find) use @item/@index bindings,\n * matching the Rust evaluator's approach.\n */\n\nimport type { SExpr } from '../types/expression.js';\nimport type { EvaluationContext } from '../context.js';\nimport { createChildContext } from '../context.js';\n\ntype Evaluator = (expr: SExpr, ctx: EvaluationContext) => unknown;\n\nfunction withItem(\n expr: SExpr,\n evaluate: Evaluator,\n ctx: EvaluationContext,\n item: unknown,\n index: number\n): unknown {\n const locals = new Map<string, unknown>();\n locals.set('item', item);\n locals.set('index', index);\n return evaluate(expr, createChildContext(ctx, locals));\n}\n\n/**\n * Evaluate map: [\"map\", collection, expr_using_@item]\n */\nexport function evalMap(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): unknown[] {\n const collection = toArray(evaluate(args[0], ctx));\n const mapExpr = args[1];\n return collection.map((item, i) => withItem(mapExpr, evaluate, ctx, item, i));\n}\n\n/**\n * Evaluate filter: [\"filter\", collection, expr_using_@item]\n */\nexport function evalFilter(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): unknown[] {\n const collection = toArray(evaluate(args[0], ctx));\n const predExpr = args[1];\n return collection.filter((item, i) => Boolean(withItem(predExpr, evaluate, ctx, item, i)));\n}\n\n/**\n * Evaluate find: [\"find\", collection, expr_using_@item]\n */\nexport function evalFind(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): unknown {\n const collection = toArray(evaluate(args[0], ctx));\n const predExpr = args[1];\n return collection.find((item, i) => Boolean(withItem(predExpr, evaluate, ctx, item, i)));\n}\n\n/**\n * Evaluate count: [\"count\", collection]\n */\nexport function evalCount(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): number {\n const collection = toArray(evaluate(args[0], ctx));\n return collection.length;\n}\n\n/**\n * Evaluate sum: [\"sum\", collection] or [\"sum\", collection, mapExpr_using_@item]\n */\nexport function evalSum(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): number {\n const collection = toArray(evaluate(args[0], ctx));\n\n if (args.length === 1) {\n return collection.reduce((sum: number, item) => sum + toNumber(item), 0);\n }\n\n const mapExpr = args[1];\n return collection.reduce((sum: number, item, i) => {\n const locals = new Map<string, unknown>();\n locals.set('item', item);\n locals.set('index', i);\n const childCtx = createChildContext(ctx, locals);\n return sum + toNumber(evaluate(mapExpr, childCtx));\n }, 0);\n}\n\n/**\n * Evaluate first: [\"first\", collection]\n */\nexport function evalFirst(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): unknown {\n const collection = toArray(evaluate(args[0], ctx));\n return collection.length > 0 ? collection[0] : undefined;\n}\n\n/**\n * Evaluate last: [\"last\", collection]\n */\nexport function evalLast(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): unknown {\n const collection = toArray(evaluate(args[0], ctx));\n return collection.length > 0 ? collection[collection.length - 1] : undefined;\n}\n\n/**\n * Evaluate nth: [\"nth\", collection, index]\n */\nexport function evalNth(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): unknown {\n const collection = toArray(evaluate(args[0], ctx));\n const index = toNumber(evaluate(args[1], ctx));\n return collection[index];\n}\n\n/**\n * Evaluate concat: [\"concat\", collection1, collection2, ...]\n */\nexport function evalConcat(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): unknown[] {\n const result: unknown[] = [];\n for (const arg of args) {\n const collection = toArray(evaluate(arg, ctx));\n result.push(...collection);\n }\n return result;\n}\n\n/**\n * Evaluate includes: [\"includes\", collection, element]\n */\nexport function evalIncludes(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): boolean {\n const collection = toArray(evaluate(args[0], ctx));\n const element = evaluate(args[1], ctx);\n return collection.includes(element);\n}\n\n/**\n * Evaluate empty: [\"empty\", collection]\n */\nexport function evalEmpty(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): boolean {\n const collection = toArray(evaluate(args[0], ctx));\n return collection.length === 0;\n}\n\n/**\n * `(list a b c …)` — literal array constructor. Evaluates each argument and\n * returns them as a plain array. Lowering wraps a literal list bound for a\n * literal-array slot in `list` so it is unambiguously data, never a call — the\n * deterministic disambiguation for a list whose first element collides with an\n * operator name (e.g. `[path method …]` would otherwise be read as the `path`\n * operator call and collapse to a string).\n */\nexport function evalList(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): unknown[] {\n return args.map((arg) => evaluate(arg, ctx));\n}\n\n/**\n * Convert a value to an array.\n */\nfunction toArray(value: unknown): unknown[] {\n if (Array.isArray(value)) return value;\n if (value === null || value === undefined) return [];\n return [value];\n}\n\n/**\n * Convert a value to a number.\n */\nfunction toNumber(value: unknown): number {\n if (typeof value === 'number') return value;\n if (typeof value === 'string') {\n const parsed = parseFloat(value);\n return isNaN(parsed) ? 0 : parsed;\n }\n return 0;\n}\n","/**\n * Effect Operator Implementations\n *\n * Implements: set, emit, persist, navigate, notify, spawn, despawn, call-service, render-ui\n *\n * Effect operators have side effects and require effect handlers in the context.\n */\n\nimport type { SExpr } from '../types/expression.js';\nimport type { EvaluationContext } from '../context.js';\nimport { resolveBinding } from '../context.js';\n\ntype Evaluator = (expr: SExpr, ctx: EvaluationContext) => unknown;\n\n/**\n * Evaluate set: [\"set\", \"@entity.field\", value] or [\"set\", \"@entity.field\", value, operation]\n */\nexport function evalSet(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): void {\n const binding = args[0] as string;\n const value = evaluate(args[1], ctx);\n const operation = args[2] as string | undefined;\n\n if (!ctx.mutateEntity) {\n console.warn('No mutateEntity handler in context for set effect');\n return;\n }\n\n // Parse the binding to get the field name\n if (!binding.startsWith('@entity.')) {\n console.warn(`set only supports @entity bindings, got: ${binding}`);\n return;\n }\n\n const fieldPath = binding.slice(8); // Remove \"@entity.\"\n\n // Handle different operations\n let finalValue = value;\n if (operation) {\n const currentValue = resolveBinding(binding, ctx);\n switch (operation) {\n case 'increment':\n finalValue = toNumber(currentValue) + toNumber(value);\n break;\n case 'decrement':\n finalValue = toNumber(currentValue) - toNumber(value);\n break;\n case 'multiply':\n finalValue = toNumber(currentValue) * toNumber(value);\n break;\n case 'append':\n finalValue = Array.isArray(currentValue) ? [...currentValue, value] : [value];\n break;\n case 'remove':\n finalValue = Array.isArray(currentValue) ? currentValue.filter((v) => v !== value) : [];\n break;\n default:\n // No operation, use value directly\n break;\n }\n }\n\n ctx.mutateEntity({ [fieldPath]: finalValue });\n}\n\n/**\n * Evaluate emit: [\"emit\", eventKey] or [\"emit\", eventKey, payload]\n */\nexport function evalEmit(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): void {\n const eventKey = args[0] as string;\n const payload = args.length > 1 ? evaluate(args[1], ctx) : undefined;\n\n if (!ctx.emit) {\n console.warn('No emit handler in context for emit effect');\n return;\n }\n\n ctx.emit(eventKey, payload);\n}\n\n/**\n * Evaluate persist:\n * - [\"persist\", action] or [\"persist\", action, data]\n * Actions: \"create\", \"update\", \"delete\"\n * - [\"persist\", \"batch\", [...operations]]\n * Batch action for atomic multi-document writes.\n * Each operation is an S-expression: [\"create\", \"collection\", {...data}],\n * [\"update\", \"collection\", \"id\", {...data}], or [\"delete\", \"collection\", \"id\"].\n */\nexport function evalPersist(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): void {\n const action = args[0] as 'create' | 'update' | 'delete' | 'batch';\n\n if (!ctx.persist) {\n console.warn('No persist handler in context for persist effect');\n return;\n }\n\n if (action === 'batch') {\n // Batch mode: [\"persist\", \"batch\", [...operations]]\n const rawOps = args[1];\n if (!Array.isArray(rawOps)) {\n console.warn('persist batch requires an array of operations as second argument');\n return;\n }\n // Evaluate each operation's data arguments\n const operations = rawOps.map((op) => {\n if (!Array.isArray(op)) return op;\n return (op as SExpr[]).map((item) => evaluate(item, ctx));\n });\n ctx.persist('batch', { operations } as Record<string, unknown>).catch((err) => {\n console.error('Persist batch failed:', err);\n });\n return;\n }\n\n // Single operation mode\n const data = args.length > 1 ? (evaluate(args[1], ctx) as Record<string, unknown>) : ctx.payload;\n\n // Fire and forget (async)\n ctx.persist(action, data as Record<string, unknown>).catch((err) => {\n console.error(`Persist ${action} failed:`, err);\n });\n}\n\n/**\n * Evaluate navigate: [\"navigate\", route] or [\"navigate\", route, params]\n */\nexport function evalNavigate(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): void {\n const route = args[0] as string;\n const params = args.length > 1 ? (evaluate(args[1], ctx) as Record<string, unknown>) : undefined;\n\n if (!ctx.navigate) {\n console.warn('No navigate handler in context for navigate effect');\n return;\n }\n\n ctx.navigate(route, params);\n}\n\n/**\n * Evaluate notify: [\"notify\", message] or [\"notify\", message, type]\n */\nexport function evalNotify(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): void {\n const message = String(evaluate(args[0], ctx));\n const type = (args[1] as 'success' | 'error' | 'warning' | 'info') || 'info';\n\n if (!ctx.notify) {\n console.warn('No notify handler in context for notify effect');\n return;\n }\n\n ctx.notify(message, type);\n}\n\n/**\n * Evaluate spawn: [\"spawn\", entityType] or [\"spawn\", entityType, props]\n */\nexport function evalSpawn(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): void {\n const entityType = args[0] as string;\n const props = args.length > 1 ? (evaluate(args[1], ctx) as Record<string, unknown>) : undefined;\n\n if (!ctx.spawn) {\n console.warn('No spawn handler in context for spawn effect');\n return;\n }\n\n ctx.spawn(entityType, props);\n}\n\n/**\n * Evaluate despawn: [\"despawn\"] or [\"despawn\", entityId]\n */\nexport function evalDespawn(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): void {\n const entityId = args.length > 0 ? String(evaluate(args[0], ctx)) : undefined;\n\n if (!ctx.despawn) {\n console.warn('No despawn handler in context for despawn effect');\n return;\n }\n\n ctx.despawn(entityId);\n}\n\n/**\n * Evaluate call-service: [\"call-service\", service, method] or [\"call-service\", service, method, params]\n */\nexport function evalCallService(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): void {\n const service = args[0] as string;\n const method = args[1] as string;\n const params = args.length > 2 ? (evaluate(args[2], ctx) as Record<string, unknown>) : undefined;\n\n if (!ctx.callService) {\n console.warn('No callService handler in context for call-service effect');\n return;\n }\n\n // Fire and forget (async)\n ctx.callService(service, method, params).catch((err) => {\n console.error(`Service call ${service}.${method} failed:`, err);\n });\n}\n\n/**\n * Recursively evaluate nested s-expressions within an object.\n * This handles computed props like { label: [\"str/concat\", \"Score: \", \"@entity.score\"] }\n */\nfunction evaluateNestedProps(\n obj: Record<string, unknown>,\n evaluate: Evaluator,\n ctx: EvaluationContext\n): Record<string, unknown> {\n const result: Record<string, unknown> = {};\n \n for (const [key, value] of Object.entries(obj)) {\n if (Array.isArray(value) && value.length > 0 && typeof value[0] === 'string') {\n // This looks like an s-expression, evaluate it\n result[key] = evaluate(value as SExpr, ctx);\n } else if (typeof value === 'object' && value !== null && !Array.isArray(value)) {\n // Nested object, recurse\n result[key] = evaluateNestedProps(value as Record<string, unknown>, evaluate, ctx);\n } else {\n // Primitive value or plain array, keep as-is\n result[key] = value;\n }\n }\n \n return result;\n}\n\n/**\n * Evaluate render-ui:\n * - [\"render-ui\", slot, pattern]\n * - [\"render-ui\", slot, pattern, props]\n * - [\"render-ui\", slot, pattern, props, priority]\n * - [\"render-ui\", slot, null] - clears the slot\n */\nexport function evalRenderUI(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): void {\n const slot = args[0] as string;\n const pattern = evaluate(args[1], ctx);\n const rawProps = args.length > 2 ? (args[2] as Record<string, unknown>) : undefined;\n const priority = args.length > 3 ? (evaluate(args[3], ctx) as number) : undefined;\n\n if (!ctx.renderUI) {\n console.warn('No renderUI handler in context for render-ui effect');\n return;\n }\n\n // Handle null pattern as \"clear slot\"\n if (pattern === null || pattern === undefined) {\n ctx.renderUI(slot, { type: 'clear' }, undefined, priority);\n return;\n }\n\n // Recursively evaluate nested s-expressions in props\n const props = rawProps ? evaluateNestedProps(rawProps, evaluate, ctx) : undefined;\n\n ctx.renderUI(slot, pattern, props, priority);\n}\n\n/**\n * Evaluate set-dynamic: [\"set-dynamic\", pathExpr, value]\n * Used for dynamic field paths computed at runtime.\n * The pathExpr should evaluate to a dot-separated path string.\n */\nexport function evalSetDynamic(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): void {\n const pathExpr = evaluate(args[0], ctx) as string;\n const value = evaluate(args[1], ctx);\n\n if (!ctx.mutateEntity) {\n console.warn('No mutateEntity handler in context for set-dynamic effect');\n return;\n }\n\n if (!pathExpr || typeof pathExpr !== 'string') {\n console.warn(`set-dynamic requires a valid path string, got: ${pathExpr}`);\n return;\n }\n\n // pathExpr is already a dot-separated path (e.g., \"formValues.A9\")\n ctx.mutateEntity({ [pathExpr]: value });\n}\n\n/**\n * Evaluate increment: [\"increment\", \"@entity.field\"] or [\"increment\", \"@entity.field\", amount]\n */\nexport function evalIncrement(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): void {\n const binding = args[0] as string;\n const amount = args.length > 1 ? toNumber(evaluate(args[1], ctx)) : 1;\n\n if (!ctx.mutateEntity) {\n console.warn('No mutateEntity handler in context for increment effect');\n return;\n }\n\n if (!binding.startsWith('@entity.')) {\n console.warn(`increment only supports @entity bindings, got: ${binding}`);\n return;\n }\n\n const fieldPath = binding.slice(8); // Remove \"@entity.\"\n const currentValue = resolveBinding(binding, ctx);\n const newValue = toNumber(currentValue) + amount;\n\n ctx.mutateEntity({ [fieldPath]: newValue });\n}\n\n/**\n * Evaluate decrement: [\"decrement\", \"@entity.field\"] or [\"decrement\", \"@entity.field\", amount]\n */\nexport function evalDecrement(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): void {\n const binding = args[0] as string;\n const amount = args.length > 1 ? toNumber(evaluate(args[1], ctx)) : 1;\n\n if (!ctx.mutateEntity) {\n console.warn('No mutateEntity handler in context for decrement effect');\n return;\n }\n\n if (!binding.startsWith('@entity.')) {\n console.warn(`decrement only supports @entity bindings, got: ${binding}`);\n return;\n }\n\n const fieldPath = binding.slice(8); // Remove \"@entity.\"\n const currentValue = resolveBinding(binding, ctx);\n const newValue = toNumber(currentValue) - amount;\n\n ctx.mutateEntity({ [fieldPath]: newValue });\n}\n\n// ── Resource operators (ref/deref/swap!/watch/atomic) ──\n\n/**\n * Evaluate ref: [\"ref\", \"EntityType\"] or [\"ref\", \"EntityType\", { filter, include }]\n * Server-side: queries entity data. Client-side: subscribes to EntityStore.\n */\nexport function evalRef(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): unknown {\n const entityType = args[0] as string;\n if (ctx.effectHandlers?.ref) {\n return ctx.effectHandlers.ref(entityType, args.length > 1 ? evaluate(args[1], ctx) : undefined);\n }\n // Fallback: delegate to fetch handler\n if (ctx.effectHandlers?.fetch) {\n return ctx.effectHandlers.fetch(entityType, args.length > 1 ? evaluate(args[1], ctx) : undefined);\n }\n return undefined;\n}\n\n/**\n * Evaluate deref: [\"deref\", \"EntityType\"] or [\"deref\", \"EntityType\", idExpr]\n * Pure snapshot read. Returns current entity data from store.\n */\nexport function evalDeref(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): unknown {\n const entityType = args[0] as string;\n const id = args.length > 1 ? evaluate(args[1], ctx) : undefined;\n if (ctx.effectHandlers?.deref) {\n return ctx.effectHandlers.deref(entityType, id);\n }\n // Fallback: read from entity context\n if (id && ctx.effectHandlers?.fetch) {\n return ctx.effectHandlers.fetch(entityType, id);\n }\n // Return entity data from context if available\n return (ctx.entity as Record<string, unknown>)?.[entityType] ?? [];\n}\n\n/**\n * Evaluate swap!: [\"swap!\", \"EntityType\", idExpr, transformExpr]\n * Atomic read-modify-write with CAS retry.\n */\nexport function evalSwap(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): unknown {\n const entityType = args[0] as string;\n const id = evaluate(args[1], ctx);\n const transformExpr = args[2];\n if (ctx.effectHandlers?.swap) {\n return ctx.effectHandlers.swap(entityType, id, transformExpr, evaluate, ctx);\n }\n console.warn('No swap handler in context');\n return undefined;\n}\n\n/**\n * Evaluate watch: [\"watch\", \"EntityType\", [effect1, effect2, ...]]\n * Client-only. Registers a callback on the EntityStore.\n */\nexport function evalWatch(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): void {\n const entityType = args[0] as string;\n const effects = args[1] as SExpr[];\n if (ctx.effectHandlers?.watch) {\n ctx.effectHandlers.watch(entityType, effects, evaluate, ctx);\n }\n // Server-side: no-op (watch is client-only)\n}\n\n/**\n * Evaluate atomic: [\"atomic\", [effect1, effect2, ...]]\n * Groups effects into a transaction. All succeed or all roll back.\n */\nexport function evalAtomic(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): unknown {\n const effects = args[0] as SExpr[];\n if (ctx.effectHandlers?.atomic) {\n return ctx.effectHandlers.atomic(effects, evaluate, ctx);\n }\n // Fallback: execute sequentially (no transaction guarantees)\n if (Array.isArray(effects)) {\n for (const eff of effects) {\n evaluate(eff, ctx);\n }\n }\n return undefined;\n}\n\n/**\n * Convert a value to a number.\n */\nfunction toNumber(value: unknown): number {\n if (typeof value === 'number') return value;\n if (typeof value === 'string') {\n const parsed = parseFloat(value);\n return isNaN(parsed) ? 0 : parsed;\n }\n return 0;\n}\n","/**\n * Math Module Runtime Evaluators\n *\n * Runtime implementations for math/* operators.\n *\n * @packageDocumentation\n */\n\nimport type { SExpr } from '../types/expression.js';\nimport type { EvaluationContext } from '../context.js';\n\ntype EvalFn = (expr: SExpr, ctx: EvaluationContext) => unknown;\n\n/**\n * math/abs - Absolute value\n */\nexport function evalMathAbs(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const n = evaluate(args[0], ctx) as number;\n return Math.abs(n);\n}\n\n/**\n * math/min - Minimum of values\n */\nexport function evalMathMin(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const values = args.map((a) => evaluate(a, ctx) as number);\n return Math.min(...values);\n}\n\n/**\n * math/max - Maximum of values\n */\nexport function evalMathMax(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const values = args.map((a) => evaluate(a, ctx) as number);\n return Math.max(...values);\n}\n\n/**\n * math/clamp - Constrain value to range [min, max]\n */\nexport function evalMathClamp(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const n = evaluate(args[0], ctx) as number;\n const min = evaluate(args[1], ctx) as number;\n const max = evaluate(args[2], ctx) as number;\n return Math.min(Math.max(n, min), max);\n}\n\n/**\n * math/floor - Round down to integer\n */\nexport function evalMathFloor(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const n = evaluate(args[0], ctx) as number;\n return Math.floor(n);\n}\n\n/**\n * math/ceil - Round up to integer\n */\nexport function evalMathCeil(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const n = evaluate(args[0], ctx) as number;\n return Math.ceil(n);\n}\n\n/**\n * math/round - Round to nearest integer or specified decimals\n */\nexport function evalMathRound(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const n = evaluate(args[0], ctx) as number;\n const decimals = args.length > 1 ? (evaluate(args[1], ctx) as number) : 0;\n if (decimals === 0) {\n return Math.round(n);\n }\n const factor = Math.pow(10, decimals);\n return Math.round(n * factor) / factor;\n}\n\n/**\n * math/pow - Exponentiation (base^exp)\n */\nexport function evalMathPow(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const base = evaluate(args[0], ctx) as number;\n const exp = evaluate(args[1], ctx) as number;\n return Math.pow(base, exp);\n}\n\n/**\n * math/sqrt - Square root\n */\nexport function evalMathSqrt(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const n = evaluate(args[0], ctx) as number;\n return Math.sqrt(n);\n}\n\n/**\n * math/mod - Modulo (remainder)\n */\nexport function evalMathMod(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const a = evaluate(args[0], ctx) as number;\n const b = evaluate(args[1], ctx) as number;\n return a % b;\n}\n\n/**\n * math/sign - Returns -1, 0, or 1 indicating sign\n */\nexport function evalMathSign(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const n = evaluate(args[0], ctx) as number;\n return Math.sign(n);\n}\n\n/**\n * math/lerp - Linear interpolation between a and b by factor t\n */\nexport function evalMathLerp(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const a = evaluate(args[0], ctx) as number;\n const b = evaluate(args[1], ctx) as number;\n const t = evaluate(args[2], ctx) as number;\n return a + (b - a) * t;\n}\n\n/**\n * math/map - Map value from one range to another\n */\nexport function evalMathMap(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const n = evaluate(args[0], ctx) as number;\n const inMin = evaluate(args[1], ctx) as number;\n const inMax = evaluate(args[2], ctx) as number;\n const outMin = evaluate(args[3], ctx) as number;\n const outMax = evaluate(args[4], ctx) as number;\n return ((n - inMin) / (inMax - inMin)) * (outMax - outMin) + outMin;\n}\n\n/**\n * math/random - Random number between 0 (inclusive) and 1 (exclusive)\n */\nexport function evalMathRandom(): number {\n return Math.random();\n}\n\n/**\n * math/randomInt - Random integer in range [min, max] (inclusive)\n */\nexport function evalMathRandomInt(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const min = evaluate(args[0], ctx) as number;\n const max = evaluate(args[1], ctx) as number;\n return Math.floor(Math.random() * (max - min + 1)) + min;\n}\n\n/**\n * math/default - Return default if value is null, undefined, or NaN\n */\nexport function evalMathDefault(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const n = evaluate(args[0], ctx);\n const defaultValue = evaluate(args[1], ctx) as number;\n if (n === null || n === undefined || (typeof n === 'number' && isNaN(n))) {\n return defaultValue;\n }\n return n as number;\n}\n\n/**\n * math/sin - sine of radians\n */\nexport function evalMathSin(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n return Math.sin(evaluate(args[0], ctx) as number);\n}\n\n/**\n * math/cos - cosine of radians\n */\nexport function evalMathCos(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n return Math.cos(evaluate(args[0], ctx) as number);\n}\n\n/**\n * math/tan - tangent of radians\n */\nexport function evalMathTan(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n return Math.tan(evaluate(args[0], ctx) as number);\n}\n\n/**\n * math/asin - arcsine (inverse sine) in radians\n */\nexport function evalMathAsin(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n return Math.asin(evaluate(args[0], ctx) as number);\n}\n\n/**\n * math/acos - arccosine (inverse cosine) in radians\n */\nexport function evalMathAcos(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n return Math.acos(evaluate(args[0], ctx) as number);\n}\n\n/**\n * math/atan - arctangent (inverse tangent) in radians\n */\nexport function evalMathAtan(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n return Math.atan(evaluate(args[0], ctx) as number);\n}\n\n/**\n * math/atan2 - atan2(y, x) in radians\n */\nexport function evalMathAtan2(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const y = evaluate(args[0], ctx) as number;\n const x = evaluate(args[1], ctx) as number;\n return Math.atan2(y, x);\n}\n\n/**\n * math/hypot - sqrt(a² + b²)\n */\nexport function evalMathHypot(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const a = evaluate(args[0], ctx) as number;\n const b = evaluate(args[1], ctx) as number;\n return Math.hypot(a, b);\n}\n\n/**\n * math/deg-rad - degrees → radians (deg·π/180)\n */\nexport function evalMathDegRad(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n return (evaluate(args[0], ctx) as number) * (Math.PI / 180);\n}\n\n/**\n * math/rad-deg - radians → degrees (rad·180/π)\n */\nexport function evalMathRadDeg(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n return (evaluate(args[0], ctx) as number) * (180 / Math.PI);\n}\n\n/**\n * math/wrap - wrap v into [min, max); r<=0 → min\n */\nexport function evalMathWrap(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const v = evaluate(args[0], ctx) as number;\n const min = evaluate(args[1], ctx) as number;\n const max = evaluate(args[2], ctx) as number;\n const r = max - min;\n if (r <= 0) {\n return min;\n }\n return min + ((((v - min) % r) + r) % r);\n}\n\n/**\n * math/approach - move cur toward target by at most maxD\n */\nexport function evalMathApproach(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const cur = evaluate(args[0], ctx) as number;\n const target = evaluate(args[1], ctx) as number;\n const maxD = evaluate(args[2], ctx) as number;\n if (Math.abs(target - cur) <= maxD) {\n return target;\n }\n return cur + Math.sign(target - cur) * maxD;\n}\n","/**\n * String Module Runtime Evaluators\n *\n * Runtime implementations for str/* operators.\n *\n * @packageDocumentation\n */\n\nimport type { SExpr } from '../types/expression.js';\nimport type { EvaluationContext } from '../context.js';\n\ntype EvalFn = (expr: SExpr, ctx: EvaluationContext) => unknown;\n\n/**\n * str/len - String length\n */\nexport function evalStrLen(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const s = evaluate(args[0], ctx) as string;\n return s?.length ?? 0;\n}\n\n/**\n * str/concat - Concatenate strings together\n */\nexport function evalStrConcat(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): string {\n return args.map(arg => {\n const val = evaluate(arg, ctx);\n return val !== null && val !== undefined ? String(val) : '';\n }).join('');\n}\n\n/**\n * str/upper - Convert to uppercase\n */\nexport function evalStrUpper(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): string {\n const s = evaluate(args[0], ctx) as string;\n return s?.toUpperCase() ?? '';\n}\n\n/**\n * str/lower - Convert to lowercase\n */\nexport function evalStrLower(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): string {\n const s = evaluate(args[0], ctx) as string;\n return s?.toLowerCase() ?? '';\n}\n\n/**\n * str/trim - Remove leading and trailing whitespace\n */\nexport function evalStrTrim(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): string {\n const s = evaluate(args[0], ctx) as string;\n return s?.trim() ?? '';\n}\n\n/**\n * str/trimStart - Remove leading whitespace\n */\nexport function evalStrTrimStart(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): string {\n const s = evaluate(args[0], ctx) as string;\n return s?.trimStart() ?? '';\n}\n\n/**\n * str/trimEnd - Remove trailing whitespace\n */\nexport function evalStrTrimEnd(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): string {\n const s = evaluate(args[0], ctx) as string;\n return s?.trimEnd() ?? '';\n}\n\n/**\n * str/split - Split string into array by delimiter\n */\nexport function evalStrSplit(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): string[] {\n const s = evaluate(args[0], ctx) as string;\n const delim = evaluate(args[1], ctx) as string;\n return s?.split(delim) ?? [];\n}\n\n/**\n * str/join - Join array elements into string\n */\nexport function evalStrJoin(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): string {\n const arr = evaluate(args[0], ctx) as unknown[];\n const delim = evaluate(args[1], ctx) as string;\n return arr?.join(delim) ?? '';\n}\n\n/**\n * str/slice - Extract substring\n */\nexport function evalStrSlice(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): string {\n const s = evaluate(args[0], ctx) as string;\n const start = evaluate(args[1], ctx) as number;\n const end = args.length > 2 ? (evaluate(args[2], ctx) as number) : undefined;\n return s?.slice(start, end) ?? '';\n}\n\n/**\n * str/replace - Replace first occurrence\n */\nexport function evalStrReplace(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): string {\n const s = evaluate(args[0], ctx) as string;\n const find = evaluate(args[1], ctx) as string;\n const replacement = evaluate(args[2], ctx) as string;\n return s?.replace(find, replacement) ?? '';\n}\n\n/**\n * str/replaceAll - Replace all occurrences\n * Uses replace with global regex for ES2020 compatibility\n */\nexport function evalStrReplaceAll(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): string {\n const s = evaluate(args[0], ctx) as string;\n const find = evaluate(args[1], ctx) as string;\n const replacement = evaluate(args[2], ctx) as string;\n if (!s || !find) return s ?? '';\n // Escape special regex characters in the search string\n const escaped = find.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n return s.replace(new RegExp(escaped, 'g'), replacement);\n}\n\n/**\n * str/includes - Check if string contains substring\n */\nexport function evalStrIncludes(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): boolean {\n const s = evaluate(args[0], ctx) as string;\n const search = evaluate(args[1], ctx) as string;\n return s?.includes(search) ?? false;\n}\n\n/**\n * str/startsWith - Check if string starts with prefix\n */\nexport function evalStrStartsWith(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): boolean {\n const s = evaluate(args[0], ctx) as string;\n const prefix = evaluate(args[1], ctx) as string;\n return s?.startsWith(prefix) ?? false;\n}\n\n/**\n * str/endsWith - Check if string ends with suffix\n */\nexport function evalStrEndsWith(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): boolean {\n const s = evaluate(args[0], ctx) as string;\n const suffix = evaluate(args[1], ctx) as string;\n return s?.endsWith(suffix) ?? false;\n}\n\n/**\n * str/padStart - Pad string from start to target length\n */\nexport function evalStrPadStart(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): string {\n const s = evaluate(args[0], ctx) as string;\n const len = evaluate(args[1], ctx) as number;\n const char = args.length > 2 ? (evaluate(args[2], ctx) as string) : ' ';\n return s?.padStart(len, char) ?? '';\n}\n\n/**\n * str/padEnd - Pad string from end to target length\n */\nexport function evalStrPadEnd(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): string {\n const s = evaluate(args[0], ctx) as string;\n const len = evaluate(args[1], ctx) as number;\n const char = args.length > 2 ? (evaluate(args[2], ctx) as string) : ' ';\n return s?.padEnd(len, char) ?? '';\n}\n\n/**\n * str/repeat - Repeat string n times\n */\nexport function evalStrRepeat(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): string {\n const s = evaluate(args[0], ctx) as string;\n const count = evaluate(args[1], ctx) as number;\n return s?.repeat(count) ?? '';\n}\n\n/**\n * str/reverse - Reverse string\n */\nexport function evalStrReverse(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): string {\n const s = evaluate(args[0], ctx) as string;\n return s?.split('').reverse().join('') ?? '';\n}\n\n/**\n * str/capitalize - Capitalize first character\n */\nexport function evalStrCapitalize(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): string {\n const s = evaluate(args[0], ctx) as string;\n if (!s || s.length === 0) return '';\n return s.charAt(0).toUpperCase() + s.slice(1);\n}\n\n/**\n * str/titleCase - Convert to Title Case\n */\nexport function evalStrTitleCase(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): string {\n const s = evaluate(args[0], ctx) as string;\n if (!s) return '';\n return s.replace(/\\w\\S*/g, (txt) => txt.charAt(0).toUpperCase() + txt.substring(1).toLowerCase());\n}\n\n/**\n * str/camelCase - Convert to camelCase\n */\nexport function evalStrCamelCase(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): string {\n const s = evaluate(args[0], ctx) as string;\n if (!s) return '';\n return s\n .replace(/(?:^\\w|[A-Z]|\\b\\w)/g, (word, index) =>\n index === 0 ? word.toLowerCase() : word.toUpperCase()\n )\n .replace(/\\s+/g, '')\n .replace(/[-_]/g, '');\n}\n\n/**\n * str/kebabCase - Convert to kebab-case\n */\nexport function evalStrKebabCase(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): string {\n const s = evaluate(args[0], ctx) as string;\n if (!s) return '';\n return s\n .replace(/([a-z])([A-Z])/g, '$1-$2')\n .replace(/[\\s_]+/g, '-')\n .toLowerCase();\n}\n\n/**\n * str/snakeCase - Convert to snake_case\n */\nexport function evalStrSnakeCase(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): string {\n const s = evaluate(args[0], ctx) as string;\n if (!s) return '';\n return s\n .replace(/([a-z])([A-Z])/g, '$1_$2')\n .replace(/[\\s-]+/g, '_')\n .toLowerCase();\n}\n\n/**\n * str/default - Return default if value is null/undefined/empty\n */\nexport function evalStrDefault(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): string {\n const s = evaluate(args[0], ctx);\n const defaultValue = evaluate(args[1], ctx) as string;\n if (s === null || s === undefined || s === '') {\n return defaultValue;\n }\n return s as string;\n}\n\n/**\n * str/template - Variable substitution in template string\n */\nexport function evalStrTemplate(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): string {\n const template = evaluate(args[0], ctx) as string;\n const vars = evaluate(args[1], ctx) as Record<string, unknown>;\n if (!template) return '';\n return template.replace(/\\{(\\w+)\\}/g, (_, key) => {\n const value = vars?.[key];\n return value !== undefined ? String(value) : '';\n });\n}\n\n/**\n * str/truncate - Truncate string with optional suffix\n */\nexport function evalStrTruncate(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): string {\n const s = evaluate(args[0], ctx) as string;\n const len = evaluate(args[1], ctx) as number;\n const suffix = args.length > 2 ? (evaluate(args[2], ctx) as string) : '...';\n if (!s || s.length <= len) return s ?? '';\n return s.slice(0, len - suffix.length) + suffix;\n}\n","/**\n * Array Module Runtime Evaluators\n *\n * Runtime implementations for array/* operators.\n * Supports lambda expressions for predicates and transformations.\n *\n * @packageDocumentation\n */\n\nimport type { SExpr } from '../types/expression.js';\nimport type { EvaluationContext } from '../context.js';\nimport { createChildContext } from '../context.js';\nimport { isSExpr, getOperator, getArgs } from '../types/expression.js';\n\ntype EvalFn = (expr: SExpr, ctx: EvaluationContext) => unknown;\n\n/**\n * Evaluate an expression with @item and @index bound in context.\n * This matches the Rust evaluator's approach for map/filter/find/some/every.\n *\n * Supports two lambda styles:\n * - Implicit: [\"array/map\", arr, [\"*\", \"@item\", 2]] (uses @item/@index)\n * - Explicit: [\"array/map\", arr, [\"fn\", \"x\", [\"*\", \"@x\", 2]]] (named param)\n *\n * When the expression is [\"fn\", param, body], the param name is bound to the\n * item value and the body is evaluated directly (avoiding dispatch which would\n * return a closure instead of applying it).\n */\nfunction evalWithItem(\n expr: SExpr,\n evaluate: EvalFn,\n ctx: EvaluationContext,\n item: unknown,\n index: number\n): unknown {\n const locals = new Map<string, unknown>();\n locals.set('item', item);\n locals.set('index', index);\n\n // Handle fn/lambda structurally: bind named param(s) to item/index\n if (isSExpr(expr)) {\n const op = getOperator(expr);\n if (op === 'fn' || op === 'lambda') {\n const fnArgs = getArgs(expr);\n const params = fnArgs[0];\n const body = fnArgs[1];\n\n if (typeof params === 'string') {\n const key = params.startsWith('@') ? params.slice(1) : params;\n locals.set(key, item);\n } else if (Array.isArray(params)) {\n const paramNames = params as string[];\n const values = [item, index];\n for (let i = 0; i < paramNames.length; i++) {\n const p = paramNames[i] as string;\n const key = p.startsWith('@') ? p.slice(1) : p;\n locals.set(key, values[i]);\n }\n }\n\n const childCtx = createChildContext(ctx, locals);\n return evaluate(body as SExpr, childCtx);\n }\n }\n\n const childCtx = createChildContext(ctx, locals);\n let result = evaluate(expr, childCtx);\n // Re-evaluate when the immediate result is itself an SExpression. The\n // canonical case is std-stats's per-metric filter: the lolo lambda\n // dereferences `(object/get @metric \"filter\" true)` which returns the\n // stored predicate SExpression as a value. Without this re-eval the\n // predicate would be a literal array (truthy for every row). The\n // re-eval recurses through fn-form via the operator branch above so\n // `[\"fn\", \"row\", body]` predicates bind @row=item correctly.\n if (isSExpr(result)) {\n result = evalWithItem(result as SExpr, evaluate, childCtx, item, index);\n } else if (typeof result === 'function') {\n // The literal-object reduction pass already dispatched the stored\n // `[\"fn\", …]` to an evalFn closure (config literals are evaluated once\n // wholesale), so apply the closure per evalFn's `(item, evaluate, ctx)`\n // contract instead of returning it as a truthy predicate.\n result = (result as (item: unknown, evaluate: EvalFn, ctx: EvaluationContext) => unknown)(item, evaluate, childCtx);\n }\n return result;\n}\n\n/**\n * Evaluate a reducer lambda with named params bound in context.\n * Used by array/reduce: [\"fn\", [\"acc\", \"x\"], body]\n * Binds each named param to the corresponding value.\n */\nfunction evalReduceLambda(\n lambdaExpr: SExpr,\n evaluate: EvalFn,\n ctx: EvaluationContext,\n acc: unknown,\n item: unknown\n): unknown {\n const locals = new Map<string, unknown>();\n\n if (isSExpr(lambdaExpr) && getOperator(lambdaExpr) === 'fn') {\n const fnArgs = getArgs(lambdaExpr);\n const params = fnArgs[0];\n const body = fnArgs[1];\n\n if (Array.isArray(params)) {\n const paramNames = params as string[];\n const values = [acc, item];\n paramNames.forEach((p, i) => {\n const key = (p as string).startsWith('@') ? (p as string).slice(1) : (p as string);\n locals.set(key, values[i]);\n });\n } else if (typeof params === 'string') {\n const key = params.startsWith('@') ? params.slice(1) : params;\n locals.set(key, acc);\n }\n\n const childCtx = createChildContext(ctx, locals);\n return evaluate(body as SExpr, childCtx);\n }\n\n // Fallback: evaluate expression with acc/item bound as @item/@index\n locals.set('acc', acc);\n locals.set('item', item);\n const childCtx = createChildContext(ctx, locals);\n return evaluate(lambdaExpr, childCtx);\n}\n\n/**\n * array/len - Array length\n */\nexport function evalArrayLen(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const arr = evaluate(args[0], ctx) as unknown[];\n return arr?.length ?? 0;\n}\n\n/**\n * array/range - Generate a numeric range. Matches orbital-core ArrayRangeOp:\n * (range n) => [0,n); (range start end) => [start,end); 3rd arg = step (default 1).\n * start inclusive, end exclusive.\n */\nexport function evalArrayRange(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number[] {\n const first = Number(evaluate(args[0], ctx));\n const start = args.length === 1 ? 0 : first;\n const end = args.length === 1 ? first : Number(evaluate(args[1], ctx));\n const step = args.length > 2 ? Number(evaluate(args[2], ctx)) : 1;\n const out: number[] = [];\n if (!Number.isFinite(start) || !Number.isFinite(end) || !Number.isFinite(step) || step === 0) {\n return out;\n }\n if (step > 0) {\n for (let current = start; current < end; current += step) out.push(current);\n } else {\n for (let current = start; current > end; current += step) out.push(current);\n }\n return out;\n}\n\n/**\n * array/empty? - Check if array is empty\n */\nexport function evalArrayEmpty(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): boolean {\n const arr = evaluate(args[0], ctx) as unknown[];\n return !arr || arr.length === 0;\n}\n\n/**\n * array/first - Get first element\n */\nexport function evalArrayFirst(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): unknown {\n const arr = evaluate(args[0], ctx) as unknown[];\n return arr?.[0] ?? null;\n}\n\n/**\n * array/last - Get last element\n */\nexport function evalArrayLast(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): unknown {\n const arr = evaluate(args[0], ctx) as unknown[];\n if (!Array.isArray(arr) || arr.length === 0) return null;\n return arr[arr.length - 1];\n}\n\n/**\n * array/nth - Get element at index\n */\nexport function evalArrayNth(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): unknown {\n const arr = evaluate(args[0], ctx) as unknown[];\n const index = evaluate(args[1], ctx) as number;\n return arr?.[index] ?? null;\n}\n\n/**\n * array/slice - Extract subarray\n */\nexport function evalArraySlice(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): unknown[] {\n const arr = evaluate(args[0], ctx) as unknown[];\n const start = evaluate(args[1], ctx) as number;\n const end = args.length > 2 ? (evaluate(args[2], ctx) as number) : undefined;\n return arr?.slice(start, end) ?? [];\n}\n\n/**\n * array/concat - Concatenate arrays\n */\nexport function evalArrayConcat(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): unknown[] {\n const arrays = args.map((a) => evaluate(a, ctx) as unknown[]);\n return arrays.reduce((acc, arr) => acc.concat(arr ?? []), [] as unknown[]);\n}\n\n/**\n * array/append - Add item to end (returns new array)\n */\nexport function evalArrayAppend(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): unknown[] {\n const arr = evaluate(args[0], ctx) as unknown[];\n const item = evaluate(args[1], ctx);\n return [...(arr ?? []), item];\n}\n\n/**\n * array/prepend - Add item to start (returns new array)\n */\nexport function evalArrayPrepend(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): unknown[] {\n const arr = evaluate(args[0], ctx) as unknown[];\n const item = evaluate(args[1], ctx);\n return [item, ...(arr ?? [])];\n}\n\n/**\n * array/insert - Insert item at index (returns new array)\n */\nexport function evalArrayInsert(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): unknown[] {\n const arr = evaluate(args[0], ctx) as unknown[];\n const index = evaluate(args[1], ctx) as number;\n const item = evaluate(args[2], ctx);\n const result = [...(arr ?? [])];\n result.splice(index, 0, item);\n return result;\n}\n\n/**\n * array/remove - Remove item at index (returns new array)\n */\nexport function evalArrayRemove(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): unknown[] {\n const arr = evaluate(args[0], ctx) as unknown[];\n const index = evaluate(args[1], ctx) as number;\n const result = [...(arr ?? [])];\n result.splice(index, 1);\n return result;\n}\n\n/**\n * array/removeItem - Remove first matching item (returns new array)\n */\nexport function evalArrayRemoveItem(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): unknown[] {\n const arr = evaluate(args[0], ctx) as unknown[];\n const item = evaluate(args[1], ctx);\n const index = arr?.indexOf(item) ?? -1;\n if (index === -1) return arr ?? [];\n const result = [...arr];\n result.splice(index, 1);\n return result;\n}\n\n/**\n * array/reverse - Reverse array order (returns new array)\n */\nexport function evalArrayReverse(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): unknown[] {\n const arr = evaluate(args[0], ctx) as unknown[];\n return [...(arr ?? [])].reverse();\n}\n\n/**\n * array/sort - Sort array (returns new array)\n */\nexport function evalArraySort(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): unknown[] {\n const arr = evaluate(args[0], ctx) as unknown[];\n const key = args.length > 1 ? (evaluate(args[1], ctx) as string) : undefined;\n const dir = args.length > 2 ? (evaluate(args[2], ctx) as string) : 'asc';\n\n const result = [...(arr ?? [])];\n\n if (key) {\n result.sort((a, b) => {\n const aVal = (a as Record<string, unknown>)[key] as string | number;\n const bVal = (b as Record<string, unknown>)[key] as string | number;\n if (aVal < bVal) return dir === 'asc' ? -1 : 1;\n if (aVal > bVal) return dir === 'asc' ? 1 : -1;\n return 0;\n });\n } else {\n result.sort((a, b) => {\n const aVal = a as string | number;\n const bVal = b as string | number;\n if (aVal < bVal) return dir === 'asc' ? -1 : 1;\n if (aVal > bVal) return dir === 'asc' ? 1 : -1;\n return 0;\n });\n }\n\n return result;\n}\n\n/**\n * array/shuffle - Randomly shuffle array (returns new array)\n */\nexport function evalArrayShuffle(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): unknown[] {\n const arr = evaluate(args[0], ctx) as unknown[];\n const result = [...(arr ?? [])];\n for (let i = result.length - 1; i > 0; i--) {\n const j = Math.floor(Math.random() * (i + 1));\n [result[i], result[j]] = [result[j], result[i]];\n }\n return result;\n}\n\n/**\n * array/unique - Remove duplicates (returns new array)\n */\nexport function evalArrayUnique(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): unknown[] {\n const arr = evaluate(args[0], ctx) as unknown[];\n return [...new Set(arr ?? [])];\n}\n\n/**\n * array/flatten - Flatten nested arrays one level\n */\nexport function evalArrayFlatten(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): unknown[] {\n const arr = evaluate(args[0], ctx) as unknown[];\n return (arr ?? []).flat();\n}\n\n/**\n * array/zip - Pair elements from two arrays\n */\nexport function evalArrayZip(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): unknown[][] {\n const arr1 = evaluate(args[0], ctx) as unknown[];\n const arr2 = evaluate(args[1], ctx) as unknown[];\n const len = Math.min(arr1?.length ?? 0, arr2?.length ?? 0);\n const result: unknown[][] = [];\n for (let i = 0; i < len; i++) {\n result.push([arr1[i], arr2[i]]);\n }\n return result;\n}\n\n/**\n * array/includes - Check if array contains item\n */\nexport function evalArrayIncludes(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): boolean {\n const arr = evaluate(args[0], ctx) as unknown[];\n const item = evaluate(args[1], ctx);\n return arr?.includes(item) ?? false;\n}\n\n/**\n * array/indexOf - Find index of item (-1 if not found)\n */\nexport function evalArrayIndexOf(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const arr = evaluate(args[0], ctx) as unknown[];\n const item = evaluate(args[1], ctx);\n return arr?.indexOf(item) ?? -1;\n}\n\n/**\n * array/find - Find first element matching predicate.\n * Predicate is an expression using @item (and optionally @index).\n */\nexport function evalArrayFind(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): unknown {\n const arr = evaluate(args[0], ctx) as unknown[];\n const predExpr = args[1];\n // No-match returns null (not JS `undefined`) to match the Rust FindOp\n // contract and the `(!= (array/find …) null)` checks behaviors rely on.\n return (arr ?? []).find((item, i) => evalWithItem(predExpr, evaluate, ctx, item, i)) ?? null;\n}\n\n/**\n * array/findIndex - Find index of first element matching predicate (-1 if none).\n * Predicate is an expression using @item (and optionally @index).\n */\nexport function evalArrayFindIndex(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const arr = evaluate(args[0], ctx) as unknown[];\n const predExpr = args[1];\n return (arr ?? []).findIndex((item, i) => evalWithItem(predExpr, evaluate, ctx, item, i));\n}\n\n/**\n * array/filter - Keep elements matching predicate.\n * Predicate is an expression using @item (and optionally @index).\n */\nexport function evalArrayFilter(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): unknown[] {\n const arr = evaluate(args[0], ctx) as unknown[];\n const predExpr = args[1];\n return (arr ?? []).filter((item, i) => evalWithItem(predExpr, evaluate, ctx, item, i));\n}\n\n/**\n * array/reject - Remove elements matching predicate.\n * Predicate is an expression using @item (and optionally @index).\n */\nexport function evalArrayReject(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): unknown[] {\n const arr = evaluate(args[0], ctx) as unknown[];\n const predExpr = args[1];\n return (arr ?? []).filter((item, i) => !evalWithItem(predExpr, evaluate, ctx, item, i));\n}\n\n/**\n * array/map - Transform each element.\n * Mapper is an expression using @item (and optionally @index).\n */\nexport function evalArrayMap(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): unknown[] {\n const arr = evaluate(args[0], ctx) as unknown[];\n const mapExpr = args[1];\n return (arr ?? []).map((item, i) => evalWithItem(mapExpr, evaluate, ctx, item, i));\n}\n\n/**\n * array/reduce - Reduce array to single value.\n * Arg order matches Rust evaluator: [array, initialValue, [\"fn\", [\"acc\", \"x\"], body]]\n */\nexport function evalArrayReduce(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): unknown {\n const arr = evaluate(args[0], ctx) as unknown[];\n const init = evaluate(args[1], ctx);\n const reducerExpr = args[2];\n return (arr ?? []).reduce(\n (acc, item) => evalReduceLambda(reducerExpr, evaluate, ctx, acc, item),\n init\n );\n}\n\n/**\n * array/every - Check if all elements match predicate.\n * Predicate is an expression using @item (and optionally @index).\n */\nexport function evalArrayEvery(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): boolean {\n const arr = evaluate(args[0], ctx) as unknown[];\n const predExpr = args[1];\n return (arr ?? []).every((item, i) => Boolean(evalWithItem(predExpr, evaluate, ctx, item, i)));\n}\n\n/**\n * array/some - Check if any element matches predicate.\n * Predicate is an expression using @item (and optionally @index).\n */\nexport function evalArraySome(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): boolean {\n const arr = evaluate(args[0], ctx) as unknown[];\n const predExpr = args[1];\n return (arr ?? []).some((item, i) => Boolean(evalWithItem(predExpr, evaluate, ctx, item, i)));\n}\n\n/**\n * array/count - Count elements (optionally matching predicate).\n * Predicate is an expression using @item (and optionally @index).\n */\nexport function evalArrayCount(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const arr = evaluate(args[0], ctx) as unknown[];\n if (args.length > 1) {\n const predExpr = args[1];\n return (arr ?? []).filter((item, i) => evalWithItem(predExpr, evaluate, ctx, item, i)).length;\n }\n return arr?.length ?? 0;\n}\n\n/**\n * array/sum - Sum values (optionally by field)\n */\nexport function evalArraySum(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const arr = evaluate(args[0], ctx) as unknown[];\n const key = args.length > 1 ? (evaluate(args[1], ctx) as string) : undefined;\n\n return (arr ?? []).reduce((sum: number, item) => {\n const value = key ? (item as Record<string, unknown>)[key] : item;\n return sum + (typeof value === 'number' ? value : 0);\n }, 0);\n}\n\n/**\n * array/avg - Average of values (optionally by field)\n */\nexport function evalArrayAvg(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const arr = evaluate(args[0], ctx) as unknown[];\n if (!arr || arr.length === 0) return 0;\n\n const key = args.length > 1 ? (evaluate(args[1], ctx) as string) : undefined;\n\n const sum = arr.reduce((s: number, item) => {\n const value = key ? (item as Record<string, unknown>)[key] : item;\n return s + (typeof value === 'number' ? value : 0);\n }, 0);\n\n return sum / arr.length;\n}\n\n/**\n * array/min - Minimum value (optionally by field)\n */\nexport function evalArrayMin(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const arr = evaluate(args[0], ctx) as unknown[];\n if (!arr || arr.length === 0) return 0;\n\n const key = args.length > 1 ? (evaluate(args[1], ctx) as string) : undefined;\n\n const values = arr.map((item) => {\n const value = key ? (item as Record<string, unknown>)[key] : item;\n return typeof value === 'number' ? value : Infinity;\n });\n\n return Math.min(...values);\n}\n\n/**\n * array/max - Maximum value (optionally by field)\n */\nexport function evalArrayMax(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const arr = evaluate(args[0], ctx) as unknown[];\n if (!arr || arr.length === 0) return 0;\n\n const key = args.length > 1 ? (evaluate(args[1], ctx) as string) : undefined;\n\n const values = arr.map((item) => {\n const value = key ? (item as Record<string, unknown>)[key] : item;\n return typeof value === 'number' ? value : -Infinity;\n });\n\n return Math.max(...values);\n}\n\n/**\n * array/groupBy - Group elements by field value\n */\nexport function evalArrayGroupBy(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): Record<string, unknown[]> {\n const arr = evaluate(args[0], ctx) as unknown[];\n const key = evaluate(args[1], ctx) as string;\n\n const result: Record<string, unknown[]> = {};\n for (const item of arr ?? []) {\n const groupKey = String((item as Record<string, unknown>)[key] ?? 'undefined');\n if (!result[groupKey]) {\n result[groupKey] = [];\n }\n result[groupKey].push(item);\n }\n return result;\n}\n\n/**\n * array/partition - Split array by predicate into [matches, nonMatches].\n * Predicate is an expression using @item (and optionally @index).\n */\nexport function evalArrayPartition(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): [unknown[], unknown[]] {\n const arr = evaluate(args[0], ctx) as unknown[];\n const predExpr = args[1];\n\n const matches: unknown[] = [];\n const nonMatches: unknown[] = [];\n\n (arr ?? []).forEach((item, i) => {\n if (evalWithItem(predExpr, evaluate, ctx, item, i)) {\n matches.push(item);\n } else {\n nonMatches.push(item);\n }\n });\n\n return [matches, nonMatches];\n}\n\n/**\n * array/take - Take first n elements\n */\nexport function evalArrayTake(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): unknown[] {\n const arr = evaluate(args[0], ctx) as unknown[];\n const n = evaluate(args[1], ctx) as number;\n return (arr ?? []).slice(0, n);\n}\n\n/**\n * array/drop - Skip first n elements\n */\nexport function evalArrayDrop(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): unknown[] {\n const arr = evaluate(args[0], ctx) as unknown[];\n const n = evaluate(args[1], ctx) as number;\n return (arr ?? []).slice(n);\n}\n\n/**\n * array/takeLast - Take last n elements\n */\nexport function evalArrayTakeLast(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): unknown[] {\n const arr = evaluate(args[0], ctx) as unknown[];\n const n = evaluate(args[1], ctx) as number;\n return (arr ?? []).slice(-n);\n}\n\n/**\n * array/dropLast - Skip last n elements\n */\nexport function evalArrayDropLast(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): unknown[] {\n const arr = evaluate(args[0], ctx) as unknown[];\n const n = evaluate(args[1], ctx) as number;\n return (arr ?? []).slice(0, -n);\n}\n","/**\n * Object Module Runtime Evaluators\n *\n * Runtime implementations for object/* operators.\n * All operations are immutable (return new objects).\n *\n * @packageDocumentation\n */\n\nimport type { SExpr } from '../types/expression.js';\nimport type { EvaluationContext } from '../context.js';\nimport { createChildContext } from '../context.js';\nimport { isSExpr, getOperator, getArgs } from '../types/expression.js';\n\ntype EvalFn = (expr: SExpr, ctx: EvaluationContext) => unknown;\n\n/** Keys that must never be written via a path/merge — guards against prototype pollution. */\nconst FORBIDDEN_KEYS = new Set(['__proto__', 'constructor', 'prototype']);\n\n/**\n * Helper to evaluate a lambda expression with bound variable(s).\n */\nfunction evalLambda(\n lambdaExpr: SExpr,\n evaluate: EvalFn,\n ctx: EvaluationContext,\n ...values: unknown[]\n): unknown {\n if (!isSExpr(lambdaExpr) || getOperator(lambdaExpr) !== 'fn') {\n return evaluate(lambdaExpr, ctx);\n }\n\n const args = getArgs(lambdaExpr);\n const params = args[0];\n const body = args[1];\n\n // Create new locals map for the child context\n const newLocals = new Map<string, unknown>();\n\n if (Array.isArray(params)) {\n // Multiple params: [\"fn\", [\"a\", \"b\"], body]\n const paramNames = params as string[];\n values.forEach((v, i) => {\n if (paramNames[i]) {\n const paramName = paramNames[i];\n // Store without @ prefix - resolveBinding strips @ before lookup\n const key = paramName.startsWith('@') ? paramName.slice(1) : paramName;\n newLocals.set(key, v);\n }\n });\n } else if (typeof params === 'string') {\n // Single param: [\"fn\", \"x\", body]\n // Store without @ prefix - resolveBinding strips @ before lookup\n const paramName = params.startsWith('@') ? params.slice(1) : params;\n newLocals.set(paramName, values[0]);\n }\n\n const childCtx = createChildContext(ctx, newLocals);\n\n return evaluate(body, childCtx);\n}\n\n/**\n * object/keys - Get object keys as array\n */\nexport function evalObjectKeys(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): string[] {\n const obj = evaluate(args[0], ctx) as Record<string, unknown>;\n return Object.keys(obj ?? {});\n}\n\n/**\n * object/values - Get object values as array\n */\nexport function evalObjectValues(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): unknown[] {\n const obj = evaluate(args[0], ctx) as Record<string, unknown>;\n return Object.values(obj ?? {});\n}\n\n/**\n * object/entries - Get [key, value] pairs as array\n */\nexport function evalObjectEntries(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): [string, unknown][] {\n const obj = evaluate(args[0], ctx) as Record<string, unknown>;\n return Object.entries(obj ?? {});\n}\n\n/**\n * object/fromEntries - Create object from [key, value] pairs\n */\nexport function evalObjectFromEntries(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): Record<string, unknown> {\n const entries = evaluate(args[0], ctx) as [string, unknown][];\n return Object.fromEntries(entries ?? []);\n}\n\n/**\n * object/get - Get nested value by path\n */\nexport function evalObjectGet(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): unknown {\n const obj = evaluate(args[0], ctx) as Record<string, unknown>;\n const path = evaluate(args[1], ctx) as string;\n const defaultValue = args.length > 2 ? evaluate(args[2], ctx) : undefined;\n\n if (!obj || !path) return defaultValue;\n\n const parts = path.split('.');\n let current: unknown = obj;\n\n for (const part of parts) {\n if (current === null || current === undefined) {\n return defaultValue;\n }\n current = (current as Record<string, unknown>)[part];\n }\n\n return current !== undefined ? current : defaultValue;\n}\n\n/**\n * object/set - Set nested value by path (returns new object)\n */\nexport function evalObjectSet(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): Record<string, unknown> {\n const obj = evaluate(args[0], ctx) as Record<string, unknown>;\n const path = evaluate(args[1], ctx) as string;\n const value = evaluate(args[2], ctx);\n\n if (!path) return obj ?? {};\n\n const result = structuredClone(obj ?? {});\n const parts = path.split('.');\n if (parts.some((p) => FORBIDDEN_KEYS.has(p))) {\n // Refuse __proto__/constructor/prototype segments — prevents prototype pollution.\n return result;\n }\n let current = result;\n\n for (let i = 0; i < parts.length - 1; i++) {\n const part = parts[i];\n if (!current[part] || typeof current[part] !== 'object') {\n current[part] = {};\n }\n current = current[part] as Record<string, unknown>;\n }\n\n current[parts[parts.length - 1]] = value;\n return result;\n}\n\n/**\n * object/has - Check if path exists\n */\nexport function evalObjectHas(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): boolean {\n const obj = evaluate(args[0], ctx) as Record<string, unknown>;\n const path = evaluate(args[1], ctx) as string;\n\n if (!obj || !path) return false;\n\n const parts = path.split('.');\n let current: unknown = obj;\n\n for (const part of parts) {\n if (current === null || current === undefined) {\n return false;\n }\n if (!Object.prototype.hasOwnProperty.call(current, part)) {\n return false;\n }\n current = (current as Record<string, unknown>)[part];\n }\n\n return true;\n}\n\n/**\n * object/merge - Shallow merge objects (later wins)\n */\nexport function evalObjectMerge(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): Record<string, unknown> {\n const objects = args.map((a) => evaluate(a, ctx) as Record<string, unknown>);\n return Object.assign({}, ...objects.map((o) => o ?? {}));\n}\n\n/**\n * object/deepMerge - Deep merge objects (later wins)\n */\nexport function evalObjectDeepMerge(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): Record<string, unknown> {\n const objects = args.map((a) => evaluate(a, ctx) as Record<string, unknown>);\n\n function deepMerge(\n target: Record<string, unknown>,\n source: Record<string, unknown>\n ): Record<string, unknown> {\n const result = { ...target };\n for (const key of Object.keys(source)) {\n if (FORBIDDEN_KEYS.has(key)) continue; // skip prototype-polluting keys\n if (\n source[key] !== null &&\n typeof source[key] === 'object' &&\n !Array.isArray(source[key]) &&\n target[key] !== null &&\n typeof target[key] === 'object' &&\n !Array.isArray(target[key])\n ) {\n result[key] = deepMerge(\n target[key] as Record<string, unknown>,\n source[key] as Record<string, unknown>\n );\n } else {\n result[key] = source[key];\n }\n }\n return result;\n }\n\n return objects.reduce((acc, obj) => deepMerge(acc, obj ?? {}), {} as Record<string, unknown>);\n}\n\n/**\n * object/pick - Select only specified keys\n */\nexport function evalObjectPick(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): Record<string, unknown> {\n const obj = evaluate(args[0], ctx) as Record<string, unknown>;\n const keys = evaluate(args[1], ctx) as string[];\n\n const result: Record<string, unknown> = {};\n for (const key of keys ?? []) {\n if (obj && Object.prototype.hasOwnProperty.call(obj, key)) {\n result[key] = obj[key];\n }\n }\n return result;\n}\n\n/**\n * object/omit - Exclude specified keys\n */\nexport function evalObjectOmit(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): Record<string, unknown> {\n const obj = evaluate(args[0], ctx) as Record<string, unknown>;\n const keys = evaluate(args[1], ctx) as string[];\n\n const keysSet = new Set(keys ?? []);\n const result: Record<string, unknown> = {};\n for (const key of Object.keys(obj ?? {})) {\n if (!keysSet.has(key)) {\n result[key] = obj[key];\n }\n }\n return result;\n}\n\n/**\n * object/mapValues - Transform all values\n */\nexport function evalObjectMapValues(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): Record<string, unknown> {\n const obj = evaluate(args[0], ctx) as Record<string, unknown>;\n const lambda = args[1];\n\n const result: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(obj ?? {})) {\n result[key] = evalLambda(lambda, evaluate, ctx, value);\n }\n return result;\n}\n\n/**\n * object/mapKeys - Transform all keys\n */\nexport function evalObjectMapKeys(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): Record<string, unknown> {\n const obj = evaluate(args[0], ctx) as Record<string, unknown>;\n const lambda = args[1];\n\n const result: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(obj ?? {})) {\n const newKey = String(evalLambda(lambda, evaluate, ctx, key));\n result[newKey] = value;\n }\n return result;\n}\n\n/**\n * object/filter - Filter entries by predicate\n */\nexport function evalObjectFilter(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): Record<string, unknown> {\n const obj = evaluate(args[0], ctx) as Record<string, unknown>;\n const lambda = args[1];\n\n const result: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(obj ?? {})) {\n if (evalLambda(lambda, evaluate, ctx, key, value)) {\n result[key] = value;\n }\n }\n return result;\n}\n\n/**\n * object/empty? - Check if object has no keys\n */\nexport function evalObjectEmpty(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): boolean {\n const obj = evaluate(args[0], ctx) as Record<string, unknown>;\n return !obj || Object.keys(obj).length === 0;\n}\n\n/**\n * object/equals - Deep equality check\n */\nexport function evalObjectEquals(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): boolean {\n const a = evaluate(args[0], ctx);\n const b = evaluate(args[1], ctx);\n\n function deepEqual(x: unknown, y: unknown): boolean {\n if (x === y) return true;\n if (typeof x !== typeof y) return false;\n if (typeof x !== 'object' || x === null || y === null) return false;\n if (Array.isArray(x) !== Array.isArray(y)) return false;\n\n const xKeys = Object.keys(x);\n const yKeys = Object.keys(y as object);\n if (xKeys.length !== yKeys.length) return false;\n\n for (const key of xKeys) {\n if (!deepEqual((x as Record<string, unknown>)[key], (y as Record<string, unknown>)[key])) {\n return false;\n }\n }\n return true;\n }\n\n return deepEqual(a, b);\n}\n\n/**\n * object/clone - Shallow clone object\n */\nexport function evalObjectClone(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): Record<string, unknown> {\n const obj = evaluate(args[0], ctx) as Record<string, unknown>;\n return { ...(obj ?? {}) };\n}\n\n/**\n * object/deepClone - Deep clone object\n */\nexport function evalObjectDeepClone(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): Record<string, unknown> {\n const obj = evaluate(args[0], ctx) as Record<string, unknown>;\n return structuredClone(obj ?? {});\n}\n\n/**\n * path - Build a dot-separated path string from segments\n *\n * Used for dynamic field access in set effects:\n * [\"set\", [\"path\", \"formValues\", \"@payload.fieldId\"], \"@payload.value\"]\n *\n * @example\n * [\"path\", \"formValues\", \"A9\"] => \"formValues.A9\"\n * [\"path\", \"@entity.prefix\", \"field\"] => \"myPrefix.field\" (if @entity.prefix = \"myPrefix\")\n */\nexport function evalPath(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): string {\n if (args.length === 0) {\n throw new Error('path operator requires at least 1 argument');\n }\n\n const segments = args.map((arg) => {\n const evaluated = evaluate(arg, ctx);\n return String(evaluated ?? '');\n });\n\n return segments.join('.');\n}\n","/**\n * Validate Module Runtime Evaluators\n *\n * Runtime implementations for validate/* operators.\n * Provides validation functions for form inputs and data.\n *\n * @packageDocumentation\n */\n\nimport type { SExpr } from '../types/expression.js';\nimport type { EvaluationContext } from '../context.js';\n\ntype EvalFn = (expr: SExpr, ctx: EvaluationContext) => unknown;\n\n/**\n * validate/required - Check if value is not null, undefined, or empty string\n */\nexport function evalValidateRequired(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): boolean {\n const value = evaluate(args[0], ctx);\n return value !== null && value !== undefined && value !== '';\n}\n\n/**\n * validate/string - Check if value is a string\n */\nexport function evalValidateString(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): boolean {\n const value = evaluate(args[0], ctx);\n return typeof value === 'string';\n}\n\n/**\n * validate/number - Check if value is a number\n */\nexport function evalValidateNumber(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): boolean {\n const value = evaluate(args[0], ctx);\n return typeof value === 'number' && !isNaN(value);\n}\n\n/**\n * validate/boolean - Check if value is a boolean\n */\nexport function evalValidateBoolean(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): boolean {\n const value = evaluate(args[0], ctx);\n return typeof value === 'boolean';\n}\n\n/**\n * validate/array - Check if value is an array\n */\nexport function evalValidateArray(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): boolean {\n const value = evaluate(args[0], ctx);\n return Array.isArray(value);\n}\n\n/**\n * validate/object - Check if value is an object\n */\nexport function evalValidateObject(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): boolean {\n const value = evaluate(args[0], ctx);\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n\n/**\n * validate/email - Check if value is a valid email format\n */\nexport function evalValidateEmail(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): boolean {\n const value = evaluate(args[0], ctx);\n if (typeof value !== 'string') return false;\n // Simple email regex - covers most valid cases\n const emailRegex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\n return emailRegex.test(value);\n}\n\n/**\n * validate/url - Check if value is a valid URL format\n */\nexport function evalValidateUrl(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): boolean {\n const value = evaluate(args[0], ctx);\n if (typeof value !== 'string') return false;\n try {\n new URL(value);\n return true;\n } catch {\n return false;\n }\n}\n\n/**\n * validate/uuid - Check if value is a valid UUID\n */\nexport function evalValidateUuid(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): boolean {\n const value = evaluate(args[0], ctx);\n if (typeof value !== 'string') return false;\n const uuidRegex = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;\n return uuidRegex.test(value);\n}\n\n/**\n * validate/phone - Check if value is a valid phone number\n */\nexport function evalValidatePhone(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): boolean {\n const value = evaluate(args[0], ctx);\n if (typeof value !== 'string') return false;\n // Simple phone validation - digits, spaces, dashes, parens, and optional leading +\n const phoneRegex = /^\\+?[\\d\\s\\-().]{10,}$/;\n const digits = value.replace(/\\D/g, '');\n return phoneRegex.test(value) && digits.length >= 10;\n}\n\n/**\n * validate/creditCard - Check if value is a valid credit card number (Luhn algorithm)\n */\nexport function evalValidateCreditCard(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): boolean {\n const value = evaluate(args[0], ctx);\n if (typeof value !== 'string') return false;\n\n const digits = value.replace(/\\D/g, '');\n if (digits.length < 13 || digits.length > 19) return false;\n\n // Luhn algorithm\n let sum = 0;\n let isEven = false;\n\n for (let i = digits.length - 1; i >= 0; i--) {\n let digit = parseInt(digits[i], 10);\n if (isEven) {\n digit *= 2;\n if (digit > 9) digit -= 9;\n }\n sum += digit;\n isEven = !isEven;\n }\n\n return sum % 10 === 0;\n}\n\n/**\n * validate/date - Check if value is a valid date\n */\nexport function evalValidateDate(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): boolean {\n const value = evaluate(args[0], ctx);\n if (value instanceof Date) return !isNaN(value.getTime());\n if (typeof value === 'number') return !isNaN(new Date(value).getTime());\n if (typeof value === 'string') return !isNaN(new Date(value).getTime());\n return false;\n}\n\n/**\n * validate/minLength - Check if string/array has minimum length\n */\nexport function evalValidateMinLength(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): boolean {\n const value = evaluate(args[0], ctx);\n const min = evaluate(args[1], ctx) as number;\n\n if (typeof value === 'string' || Array.isArray(value)) {\n return value.length >= min;\n }\n return false;\n}\n\n/**\n * validate/maxLength - Check if string/array has maximum length\n */\nexport function evalValidateMaxLength(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): boolean {\n const value = evaluate(args[0], ctx);\n const max = evaluate(args[1], ctx) as number;\n\n if (typeof value === 'string' || Array.isArray(value)) {\n return value.length <= max;\n }\n return false;\n}\n\n/**\n * validate/length - Check if string/array has exact length\n */\nexport function evalValidateLength(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): boolean {\n const value = evaluate(args[0], ctx);\n const exact = evaluate(args[1], ctx) as number;\n\n if (typeof value === 'string' || Array.isArray(value)) {\n return value.length === exact;\n }\n return false;\n}\n\n/**\n * validate/min - Check if number is >= minimum\n */\nexport function evalValidateMin(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): boolean {\n const value = evaluate(args[0], ctx) as number;\n const min = evaluate(args[1], ctx) as number;\n return typeof value === 'number' && value >= min;\n}\n\n/**\n * validate/max - Check if number is <= maximum\n */\nexport function evalValidateMax(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): boolean {\n const value = evaluate(args[0], ctx) as number;\n const max = evaluate(args[1], ctx) as number;\n return typeof value === 'number' && value <= max;\n}\n\n/**\n * validate/range - Check if number is within range [min, max]\n */\nexport function evalValidateRange(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): boolean {\n const value = evaluate(args[0], ctx) as number;\n const min = evaluate(args[1], ctx) as number;\n const max = evaluate(args[2], ctx) as number;\n return typeof value === 'number' && value >= min && value <= max;\n}\n\n/**\n * validate/pattern - Check if string matches regex pattern\n */\nexport function evalValidatePattern(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): boolean {\n const value = evaluate(args[0], ctx);\n const pattern = evaluate(args[1], ctx) as string;\n\n if (typeof value !== 'string') return false;\n try {\n const regex = new RegExp(pattern);\n return regex.test(value);\n } catch {\n return false;\n }\n}\n\n/**\n * validate/oneOf - Check if value is in list of allowed values\n */\nexport function evalValidateOneOf(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): boolean {\n const value = evaluate(args[0], ctx);\n const options = evaluate(args[1], ctx) as unknown[];\n return (options ?? []).includes(value);\n}\n\n/**\n * validate/noneOf - Check if value is not in list of disallowed values\n */\nexport function evalValidateNoneOf(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): boolean {\n const value = evaluate(args[0], ctx);\n const options = evaluate(args[1], ctx) as unknown[];\n return !(options ?? []).includes(value);\n}\n\n/**\n * validate/equals - Deep equality check\n */\nexport function evalValidateEquals(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): boolean {\n const a = evaluate(args[0], ctx);\n const b = evaluate(args[1], ctx);\n\n function deepEqual(x: unknown, y: unknown): boolean {\n if (x === y) return true;\n if (typeof x !== typeof y) return false;\n if (typeof x !== 'object' || x === null || y === null) return false;\n if (Array.isArray(x) !== Array.isArray(y)) return false;\n\n const xKeys = Object.keys(x);\n const yKeys = Object.keys(y as object);\n if (xKeys.length !== yKeys.length) return false;\n\n for (const key of xKeys) {\n if (!deepEqual((x as Record<string, unknown>)[key], (y as Record<string, unknown>)[key])) {\n return false;\n }\n }\n return true;\n }\n\n return deepEqual(a, b);\n}\n\n/**\n * validate/check - Run multiple validation rules, return { valid, errors }\n */\nexport function evalValidateCheck(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): { valid: boolean; errors: string[] } {\n const value = evaluate(args[0], ctx) as Record<string, unknown>;\n const rules = evaluate(args[1], ctx) as Record<string, [string, ...unknown[]][]>;\n\n const errors: string[] = [];\n\n for (const [field, fieldRules] of Object.entries(rules ?? {})) {\n const fieldValue = value?.[field];\n\n for (const rule of fieldRules ?? []) {\n const [ruleName, ...ruleArgs] = rule;\n let isValid = true;\n\n switch (ruleName) {\n case 'required':\n isValid = fieldValue !== null && fieldValue !== undefined && fieldValue !== '';\n break;\n case 'string':\n isValid = typeof fieldValue === 'string';\n break;\n case 'number':\n isValid = typeof fieldValue === 'number' && !isNaN(fieldValue);\n break;\n case 'boolean':\n isValid = typeof fieldValue === 'boolean';\n break;\n case 'email': {\n const emailRegex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\n isValid = typeof fieldValue === 'string' && emailRegex.test(fieldValue);\n break;\n }\n case 'minLength':\n isValid =\n (typeof fieldValue === 'string' || Array.isArray(fieldValue)) &&\n fieldValue.length >= (ruleArgs[0] as number);\n break;\n case 'maxLength':\n isValid =\n (typeof fieldValue === 'string' || Array.isArray(fieldValue)) &&\n fieldValue.length <= (ruleArgs[0] as number);\n break;\n case 'min':\n isValid = typeof fieldValue === 'number' && fieldValue >= (ruleArgs[0] as number);\n break;\n case 'max':\n isValid = typeof fieldValue === 'number' && fieldValue <= (ruleArgs[0] as number);\n break;\n case 'range':\n isValid =\n typeof fieldValue === 'number' &&\n fieldValue >= (ruleArgs[0] as number) &&\n fieldValue <= (ruleArgs[1] as number);\n break;\n case 'pattern': {\n const regex = new RegExp(ruleArgs[0] as string);\n isValid = typeof fieldValue === 'string' && regex.test(fieldValue);\n break;\n }\n case 'oneOf':\n isValid = (ruleArgs[0] as unknown[])?.includes(fieldValue);\n break;\n default:\n // Unknown rule, skip\n continue;\n }\n\n if (!isValid) {\n errors.push(`${field}: ${ruleName} validation failed`);\n }\n }\n }\n\n return { valid: errors.length === 0, errors };\n}\n","/**\n * Time Module Runtime Evaluators\n *\n * Runtime implementations for time/* operators.\n * Provides date manipulation, formatting, and comparison functions.\n *\n * @packageDocumentation\n */\n\nimport type { SExpr } from '../types/expression.js';\nimport type { EvaluationContext } from '../context.js';\n\ntype EvalFn = (expr: SExpr, ctx: EvaluationContext) => unknown;\n\ntype TimeUnit = 'year' | 'month' | 'week' | 'day' | 'hour' | 'minute' | 'second' | 'ms';\n\nconst MS_PER_SECOND = 1000;\nconst MS_PER_MINUTE = 60 * MS_PER_SECOND;\nconst MS_PER_HOUR = 60 * MS_PER_MINUTE;\nconst MS_PER_DAY = 24 * MS_PER_HOUR;\nconst MS_PER_WEEK = 7 * MS_PER_DAY;\n\n/**\n * time/now - Current timestamp\n */\nexport function evalTimeNow(): number {\n return Date.now();\n}\n\n/**\n * time/today - Today at midnight (local time)\n */\nexport function evalTimeToday(): number {\n const now = new Date();\n now.setHours(0, 0, 0, 0);\n return now.getTime();\n}\n\n/**\n * time/parse - Parse string to timestamp\n */\nexport function evalTimeParse(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const str = evaluate(args[0], ctx) as string;\n // Note: format param is accepted but we use native Date parsing\n // A full implementation would need a date parsing library\n const date = new Date(str);\n return date.getTime();\n}\n\n/**\n * time/format - Format timestamp to string\n */\nexport function evalTimeFormat(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): string {\n const timestamp = evaluate(args[0], ctx) as number;\n const format = evaluate(args[1], ctx) as string;\n\n const date = new Date(timestamp);\n\n // Simple format token replacement\n const tokens: Record<string, string> = {\n YYYY: String(date.getFullYear()),\n YY: String(date.getFullYear()).slice(-2),\n MM: String(date.getMonth() + 1).padStart(2, '0'),\n M: String(date.getMonth() + 1),\n DD: String(date.getDate()).padStart(2, '0'),\n D: String(date.getDate()),\n HH: String(date.getHours()).padStart(2, '0'),\n H: String(date.getHours()),\n mm: String(date.getMinutes()).padStart(2, '0'),\n m: String(date.getMinutes()),\n ss: String(date.getSeconds()).padStart(2, '0'),\n s: String(date.getSeconds()),\n ddd: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'][date.getDay()],\n dddd: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'][\n date.getDay()\n ],\n MMM: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'][\n date.getMonth()\n ],\n MMMM: [\n 'January',\n 'February',\n 'March',\n 'April',\n 'May',\n 'June',\n 'July',\n 'August',\n 'September',\n 'October',\n 'November',\n 'December',\n ][date.getMonth()],\n };\n\n let result = format;\n for (const [token, value] of Object.entries(tokens)) {\n result = result.replace(new RegExp(token, 'g'), value);\n }\n\n return result;\n}\n\n/**\n * time/year - Get year from timestamp\n */\nexport function evalTimeYear(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const timestamp = evaluate(args[0], ctx) as number;\n return new Date(timestamp).getFullYear();\n}\n\n/**\n * time/month - Get month from timestamp (1-12)\n */\nexport function evalTimeMonth(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const timestamp = evaluate(args[0], ctx) as number;\n return new Date(timestamp).getMonth() + 1;\n}\n\n/**\n * time/day - Get day of month from timestamp (1-31)\n */\nexport function evalTimeDay(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const timestamp = evaluate(args[0], ctx) as number;\n return new Date(timestamp).getDate();\n}\n\n/**\n * time/weekday - Get day of week (0=Sunday, 6=Saturday)\n */\nexport function evalTimeWeekday(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const timestamp = evaluate(args[0], ctx) as number;\n return new Date(timestamp).getDay();\n}\n\n/**\n * time/hour - Get hour from timestamp (0-23)\n */\nexport function evalTimeHour(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const timestamp = evaluate(args[0], ctx) as number;\n return new Date(timestamp).getHours();\n}\n\n/**\n * time/minute - Get minute from timestamp (0-59)\n */\nexport function evalTimeMinute(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const timestamp = evaluate(args[0], ctx) as number;\n return new Date(timestamp).getMinutes();\n}\n\n/**\n * time/second - Get second from timestamp (0-59)\n */\nexport function evalTimeSecond(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const timestamp = evaluate(args[0], ctx) as number;\n return new Date(timestamp).getSeconds();\n}\n\n/**\n * Helper to add time to a date\n */\nfunction addTime(date: Date, amount: number, unit: TimeUnit): Date {\n const result = new Date(date);\n\n switch (unit) {\n case 'year':\n result.setFullYear(result.getFullYear() + amount);\n break;\n case 'month':\n result.setMonth(result.getMonth() + amount);\n break;\n case 'week':\n result.setDate(result.getDate() + amount * 7);\n break;\n case 'day':\n result.setDate(result.getDate() + amount);\n break;\n case 'hour':\n result.setHours(result.getHours() + amount);\n break;\n case 'minute':\n result.setMinutes(result.getMinutes() + amount);\n break;\n case 'second':\n result.setSeconds(result.getSeconds() + amount);\n break;\n case 'ms':\n result.setMilliseconds(result.getMilliseconds() + amount);\n break;\n }\n\n return result;\n}\n\n/**\n * time/add - Add time to timestamp\n */\nexport function evalTimeAdd(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const timestamp = evaluate(args[0], ctx) as number;\n const amount = evaluate(args[1], ctx) as number;\n const unit = evaluate(args[2], ctx) as TimeUnit;\n\n const date = new Date(timestamp);\n return addTime(date, amount, unit).getTime();\n}\n\n/**\n * time/subtract - Subtract time from timestamp\n */\nexport function evalTimeSubtract(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const timestamp = evaluate(args[0], ctx) as number;\n const amount = evaluate(args[1], ctx) as number;\n const unit = evaluate(args[2], ctx) as TimeUnit;\n\n const date = new Date(timestamp);\n return addTime(date, -amount, unit).getTime();\n}\n\n/**\n * time/diff - Difference between timestamps\n */\nexport function evalTimeDiff(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const a = evaluate(args[0], ctx) as number;\n const b = evaluate(args[1], ctx) as number;\n const unit = args.length > 2 ? (evaluate(args[2], ctx) as TimeUnit) : 'ms';\n\n const diffMs = a - b;\n\n switch (unit) {\n case 'year':\n return Math.floor(diffMs / (MS_PER_DAY * 365.25));\n case 'month':\n return Math.floor(diffMs / (MS_PER_DAY * 30.44));\n case 'week':\n return Math.floor(diffMs / MS_PER_WEEK);\n case 'day':\n return Math.floor(diffMs / MS_PER_DAY);\n case 'hour':\n return Math.floor(diffMs / MS_PER_HOUR);\n case 'minute':\n return Math.floor(diffMs / MS_PER_MINUTE);\n case 'second':\n return Math.floor(diffMs / MS_PER_SECOND);\n case 'ms':\n default:\n return diffMs;\n }\n}\n\n/**\n * time/startOf - Get start of time period\n */\nexport function evalTimeStartOf(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const timestamp = evaluate(args[0], ctx) as number;\n const unit = evaluate(args[1], ctx) as TimeUnit;\n\n const date = new Date(timestamp);\n\n switch (unit) {\n case 'year':\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n break;\n case 'month':\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n break;\n case 'week': {\n const day = date.getDay();\n date.setDate(date.getDate() - day);\n date.setHours(0, 0, 0, 0);\n break;\n }\n case 'day':\n date.setHours(0, 0, 0, 0);\n break;\n case 'hour':\n date.setMinutes(0, 0, 0);\n break;\n case 'minute':\n date.setSeconds(0, 0);\n break;\n }\n\n return date.getTime();\n}\n\n/**\n * time/endOf - Get end of time period\n */\nexport function evalTimeEndOf(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const timestamp = evaluate(args[0], ctx) as number;\n const unit = evaluate(args[1], ctx) as TimeUnit;\n\n const date = new Date(timestamp);\n\n switch (unit) {\n case 'year':\n date.setMonth(11, 31);\n date.setHours(23, 59, 59, 999);\n break;\n case 'month':\n date.setMonth(date.getMonth() + 1, 0);\n date.setHours(23, 59, 59, 999);\n break;\n case 'week': {\n const day = date.getDay();\n date.setDate(date.getDate() + (6 - day));\n date.setHours(23, 59, 59, 999);\n break;\n }\n case 'day':\n date.setHours(23, 59, 59, 999);\n break;\n case 'hour':\n date.setMinutes(59, 59, 999);\n break;\n case 'minute':\n date.setSeconds(59, 999);\n break;\n }\n\n return date.getTime();\n}\n\n/**\n * time/isBefore - Check if a is before b\n */\nexport function evalTimeIsBefore(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): boolean {\n const a = evaluate(args[0], ctx) as number;\n const b = evaluate(args[1], ctx) as number;\n return a < b;\n}\n\n/**\n * time/isAfter - Check if a is after b\n */\nexport function evalTimeIsAfter(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): boolean {\n const a = evaluate(args[0], ctx) as number;\n const b = evaluate(args[1], ctx) as number;\n return a > b;\n}\n\n/**\n * time/isBetween - Check if date is between start and end\n */\nexport function evalTimeIsBetween(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): boolean {\n const date = evaluate(args[0], ctx) as number;\n const start = evaluate(args[1], ctx) as number;\n const end = evaluate(args[2], ctx) as number;\n return date >= start && date <= end;\n}\n\n/**\n * time/isSame - Check if timestamps are same (optionally by unit)\n */\nexport function evalTimeIsSame(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): boolean {\n const a = evaluate(args[0], ctx) as number;\n const b = evaluate(args[1], ctx) as number;\n const unit = args.length > 2 ? (evaluate(args[2], ctx) as TimeUnit) : undefined;\n\n if (!unit) {\n return a === b;\n }\n\n const dateA = new Date(a);\n const dateB = new Date(b);\n\n switch (unit) {\n case 'year':\n return dateA.getFullYear() === dateB.getFullYear();\n case 'month':\n return (\n dateA.getFullYear() === dateB.getFullYear() && dateA.getMonth() === dateB.getMonth()\n );\n case 'day':\n return (\n dateA.getFullYear() === dateB.getFullYear() &&\n dateA.getMonth() === dateB.getMonth() &&\n dateA.getDate() === dateB.getDate()\n );\n case 'hour':\n return (\n dateA.getFullYear() === dateB.getFullYear() &&\n dateA.getMonth() === dateB.getMonth() &&\n dateA.getDate() === dateB.getDate() &&\n dateA.getHours() === dateB.getHours()\n );\n case 'minute':\n return Math.floor(a / MS_PER_MINUTE) === Math.floor(b / MS_PER_MINUTE);\n case 'second':\n return Math.floor(a / MS_PER_SECOND) === Math.floor(b / MS_PER_SECOND);\n default:\n return a === b;\n }\n}\n\n/**\n * time/isPast - Check if timestamp is in the past\n */\nexport function evalTimeIsPast(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): boolean {\n const timestamp = evaluate(args[0], ctx) as number;\n return timestamp < Date.now();\n}\n\n/**\n * time/isFuture - Check if timestamp is in the future\n */\nexport function evalTimeIsFuture(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): boolean {\n const timestamp = evaluate(args[0], ctx) as number;\n return timestamp > Date.now();\n}\n\n/**\n * time/isToday - Check if timestamp is today\n */\nexport function evalTimeIsToday(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): boolean {\n const timestamp = evaluate(args[0], ctx) as number;\n const date = new Date(timestamp);\n const today = new Date();\n\n return (\n date.getFullYear() === today.getFullYear() &&\n date.getMonth() === today.getMonth() &&\n date.getDate() === today.getDate()\n );\n}\n\n/**\n * time/relative - Format as relative time (\"2 hours ago\", \"in 3 days\")\n */\nexport function evalTimeRelative(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): string {\n const timestamp = evaluate(args[0], ctx) as number;\n const now = Date.now();\n const diff = timestamp - now;\n const absDiff = Math.abs(diff);\n const isPast = diff < 0;\n\n let value: number;\n let unit: string;\n\n if (absDiff < MS_PER_MINUTE) {\n return 'just now';\n } else if (absDiff < MS_PER_HOUR) {\n value = Math.round(absDiff / MS_PER_MINUTE);\n unit = value === 1 ? 'minute' : 'minutes';\n } else if (absDiff < MS_PER_DAY) {\n value = Math.round(absDiff / MS_PER_HOUR);\n unit = value === 1 ? 'hour' : 'hours';\n } else if (absDiff < MS_PER_WEEK) {\n value = Math.round(absDiff / MS_PER_DAY);\n unit = value === 1 ? 'day' : 'days';\n } else if (absDiff < MS_PER_DAY * 30) {\n value = Math.round(absDiff / MS_PER_WEEK);\n unit = value === 1 ? 'week' : 'weeks';\n } else if (absDiff < MS_PER_DAY * 365) {\n value = Math.round(absDiff / (MS_PER_DAY * 30));\n unit = value === 1 ? 'month' : 'months';\n } else {\n value = Math.round(absDiff / (MS_PER_DAY * 365));\n unit = value === 1 ? 'year' : 'years';\n }\n\n return isPast ? `${value} ${unit} ago` : `in ${value} ${unit}`;\n}\n\n/**\n * time/duration - Format milliseconds as duration (\"2h 30m\")\n */\nexport function evalTimeDuration(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): string {\n let ms = evaluate(args[0], ctx) as number;\n\n if (ms < 0) ms = -ms;\n\n const parts: string[] = [];\n\n if (ms >= MS_PER_DAY) {\n const days = Math.floor(ms / MS_PER_DAY);\n parts.push(`${days}d`);\n ms %= MS_PER_DAY;\n }\n\n if (ms >= MS_PER_HOUR) {\n const hours = Math.floor(ms / MS_PER_HOUR);\n parts.push(`${hours}h`);\n ms %= MS_PER_HOUR;\n }\n\n if (ms >= MS_PER_MINUTE) {\n const minutes = Math.floor(ms / MS_PER_MINUTE);\n parts.push(`${minutes}m`);\n ms %= MS_PER_MINUTE;\n }\n\n if (ms >= MS_PER_SECOND && parts.length < 2) {\n const seconds = Math.floor(ms / MS_PER_SECOND);\n parts.push(`${seconds}s`);\n }\n\n return parts.length > 0 ? parts.join(' ') : '0s';\n}\n","/**\n * Format Module Runtime Evaluators\n *\n * Runtime implementations for format/* operators.\n * Provides formatting functions for numbers, currencies, and display values.\n *\n * @packageDocumentation\n */\n\nimport type { SExpr } from '../types/expression.js';\nimport type { EvaluationContext } from '../context.js';\n\ntype EvalFn = (expr: SExpr, ctx: EvaluationContext) => unknown;\n\n/**\n * format/number - Format number with locale-aware separators\n */\nexport function evalFormatNumber(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): string {\n const n = evaluate(args[0], ctx) as number;\n const opts = args.length > 1 ? (evaluate(args[1], ctx) as { decimals?: number; locale?: string }) : {};\n\n const locale = opts?.locale ?? 'en-US';\n const options: Intl.NumberFormatOptions = {};\n\n if (opts?.decimals !== undefined) {\n options.minimumFractionDigits = opts.decimals;\n options.maximumFractionDigits = opts.decimals;\n }\n\n return new Intl.NumberFormat(locale, options).format(n);\n}\n\n/**\n * format/currency - Format as currency\n */\nexport function evalFormatCurrency(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): string {\n const n = evaluate(args[0], ctx) as number;\n const currency = evaluate(args[1], ctx) as string;\n const locale = args.length > 2 ? (evaluate(args[2], ctx) as string) : 'en-US';\n\n return new Intl.NumberFormat(locale, {\n style: 'currency',\n currency: currency,\n }).format(n);\n}\n\n/**\n * format/percent - Format as percentage\n */\nexport function evalFormatPercent(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): string {\n const n = evaluate(args[0], ctx) as number;\n const decimals = args.length > 1 ? (evaluate(args[1], ctx) as number) : 0;\n\n return new Intl.NumberFormat('en-US', {\n style: 'percent',\n minimumFractionDigits: decimals,\n maximumFractionDigits: decimals,\n }).format(n);\n}\n\n/**\n * format/bytes - Format bytes as human-readable size\n */\nexport function evalFormatBytes(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): string {\n const bytes = evaluate(args[0], ctx) as number;\n\n if (bytes === 0) return '0 B';\n\n const units = ['B', 'KB', 'MB', 'GB', 'TB', 'PB'];\n const k = 1024;\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n\n const value = bytes / Math.pow(k, i);\n // Use different precision rules\n if (i === 0) {\n return `${bytes} B`;\n }\n // Round values >= 10, or use 1 decimal for smaller values\n // Also remove .0 for whole numbers\n let formatted: string;\n if (value >= 10) {\n formatted = String(Math.round(value));\n } else if (Number.isInteger(value)) {\n formatted = String(value);\n } else {\n formatted = value.toFixed(1);\n }\n\n return `${formatted} ${units[i]}`;\n}\n\n/**\n * format/ordinal - Format number as ordinal (1st, 2nd, 3rd)\n */\nexport function evalFormatOrdinal(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): string {\n const n = evaluate(args[0], ctx) as number;\n\n const absN = Math.abs(n);\n const lastDigit = absN % 10;\n const lastTwoDigits = absN % 100;\n\n let suffix: string;\n if (lastTwoDigits >= 11 && lastTwoDigits <= 13) {\n suffix = 'th';\n } else if (lastDigit === 1) {\n suffix = 'st';\n } else if (lastDigit === 2) {\n suffix = 'nd';\n } else if (lastDigit === 3) {\n suffix = 'rd';\n } else {\n suffix = 'th';\n }\n\n return `${n}${suffix}`;\n}\n\n/**\n * format/plural - Format count with singular/plural word\n */\nexport function evalFormatPlural(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): string {\n const n = evaluate(args[0], ctx) as number;\n const singular = evaluate(args[1], ctx) as string;\n const plural = evaluate(args[2], ctx) as string;\n\n return `${n} ${Math.abs(n) === 1 ? singular : plural}`;\n}\n\n/**\n * format/list - Format array as natural language list\n */\nexport function evalFormatList(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): string {\n const arr = evaluate(args[0], ctx) as string[];\n const style = args.length > 1 ? (evaluate(args[1], ctx) as 'and' | 'or') : 'and';\n\n if (!arr || arr.length === 0) return '';\n if (arr.length === 1) return arr[0];\n if (arr.length === 2) return `${arr[0]} ${style} ${arr[1]}`;\n\n const last = arr[arr.length - 1];\n const rest = arr.slice(0, -1);\n return `${rest.join(', ')}, ${style} ${last}`;\n}\n\n/**\n * format/phone - Format phone number\n */\nexport function evalFormatPhone(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): string {\n const str = evaluate(args[0], ctx) as string;\n const format = args.length > 1 ? (evaluate(args[1], ctx) as string) : 'US';\n\n // Extract only digits\n const digits = str?.replace(/\\D/g, '') ?? '';\n\n if (format === 'US' && digits.length === 10) {\n return `(${digits.slice(0, 3)}) ${digits.slice(3, 6)}-${digits.slice(6)}`;\n }\n\n if (format === 'US' && digits.length === 11 && digits[0] === '1') {\n return `+1 (${digits.slice(1, 4)}) ${digits.slice(4, 7)}-${digits.slice(7)}`;\n }\n\n // Default: group into chunks of 3-4\n if (digits.length >= 10) {\n return `${digits.slice(0, 3)}-${digits.slice(3, 6)}-${digits.slice(6)}`;\n }\n\n return str;\n}\n\n/**\n * format/creditCard - Format credit card with masked digits\n */\nexport function evalFormatCreditCard(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): string {\n const str = evaluate(args[0], ctx) as string;\n\n const digits = str?.replace(/\\D/g, '') ?? '';\n\n if (digits.length < 4) return str;\n\n // Show only last 4 digits\n const lastFour = digits.slice(-4);\n const masked = '•'.repeat(digits.length - 4);\n\n // Format in groups of 4\n const combined = masked + lastFour;\n return combined.match(/.{1,4}/g)?.join(' ') ?? combined;\n}\n","/**\n * Async Module Runtime Evaluators\n *\n * Runtime implementations for async/* operators.\n * Provides functions for handling async operations, delays, and timing.\n *\n * @packageDocumentation\n */\n\nimport type { SExpr } from '../types/expression.js';\nimport type { EvaluationContext } from '../context.js';\n\ntype EvalFn = (expr: SExpr, ctx: EvaluationContext) => unknown;\n\n// Debounce timers keyed by event name\nconst debounceTimers = new Map<string, ReturnType<typeof setTimeout>>();\n\n// Throttle timestamps keyed by event name\nconst throttleTimestamps = new Map<string, number>();\n\n// Interval timers keyed by a generated ID\nconst intervalTimers = new Map<string, ReturnType<typeof setInterval>>();\nlet intervalIdCounter = 0;\n\n/**\n * async/delay - Wait for specified milliseconds, optionally execute an effect after\n *\n * 1-arg form: [\"async/delay\", ms] — just wait\n * 2-arg form: [\"async/delay\", ms, effect] — wait, then execute effect\n */\nexport async function evalAsyncDelay(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): Promise<unknown> {\n const ms = evaluate(args[0], ctx) as number;\n await new Promise<void>((resolve) => setTimeout(resolve, ms));\n\n // 2-arg form: execute effect after delay\n if (args.length >= 2 && args[1] !== undefined) {\n return evaluate(args[1], ctx);\n }\n\n return undefined;\n}\n\n/**\n * async/interval - Execute an effect periodically\n *\n * [\"async/interval\", ms, effect] — execute effect every ms milliseconds\n *\n * Returns an interval ID string that can be used with clearIntervalTimers().\n */\nexport function evalAsyncInterval(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): string {\n const ms = evaluate(args[0], ctx) as number;\n const effect = args[1];\n const id = `interval_${++intervalIdCounter}`;\n\n const timer = setInterval(() => {\n try {\n evaluate(effect, ctx);\n } catch {\n // Effect errors in interval should not crash the timer\n }\n }, ms);\n\n intervalTimers.set(id, timer);\n return id;\n}\n\n/**\n * async/timeout - Add timeout to an effect\n */\nexport async function evalAsyncTimeout(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): Promise<unknown> {\n const effect = args[0];\n const ms = evaluate(args[1], ctx) as number;\n\n return Promise.race([\n Promise.resolve().then(() => evaluate(effect, ctx)),\n new Promise<never>((_, reject) =>\n setTimeout(() => reject(new Error('Timeout exceeded')), ms)\n ),\n ]);\n}\n\n/**\n * async/debounce - Debounce an event (wait for pause in events)\n */\nexport function evalAsyncDebounce(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): void {\n const event = evaluate(args[0], ctx) as string;\n const ms = evaluate(args[1], ctx) as number;\n\n // Clear existing timer if any\n const existingTimer = debounceTimers.get(event);\n if (existingTimer) {\n clearTimeout(existingTimer);\n }\n\n // Set new timer\n const timer = setTimeout(() => {\n debounceTimers.delete(event);\n // Emit the event\n ctx.emit?.(event);\n }, ms);\n\n debounceTimers.set(event, timer);\n}\n\n/**\n * async/throttle - Throttle an event (emit at most once per interval)\n */\nexport function evalAsyncThrottle(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): void {\n const event = evaluate(args[0], ctx) as string;\n const ms = evaluate(args[1], ctx) as number;\n\n const now = Date.now();\n const lastTimestamp = throttleTimestamps.get(event) ?? 0;\n\n if (now - lastTimestamp >= ms) {\n throttleTimestamps.set(event, now);\n ctx.emit?.(event);\n }\n}\n\n/**\n * async/retry - Retry an effect with configurable backoff\n */\nexport async function evalAsyncRetry(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): Promise<unknown> {\n const effect = args[0];\n const opts = evaluate(args[1], ctx) as {\n attempts?: number;\n backoff?: 'fixed' | 'linear' | 'exponential';\n baseDelay?: number;\n };\n\n const attempts = opts?.attempts ?? 3;\n const backoff = opts?.backoff ?? 'exponential';\n const baseDelay = opts?.baseDelay ?? 1000;\n\n let lastError: unknown;\n\n for (let i = 0; i < attempts; i++) {\n try {\n return await Promise.resolve().then(() => evaluate(effect, ctx));\n } catch (error) {\n lastError = error;\n\n if (i < attempts - 1) {\n // Calculate delay based on backoff strategy\n let delay: number;\n switch (backoff) {\n case 'fixed':\n delay = baseDelay;\n break;\n case 'linear':\n delay = baseDelay * (i + 1);\n break;\n case 'exponential':\n default:\n delay = baseDelay * Math.pow(2, i);\n break;\n }\n await new Promise((resolve) => setTimeout(resolve, delay));\n }\n }\n }\n\n throw lastError;\n}\n\n/**\n * async/race - Execute effects in parallel, return first to complete\n */\nexport async function evalAsyncRace(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): Promise<unknown> {\n const promises = args.map((effect) =>\n Promise.resolve().then(() => evaluate(effect, ctx))\n );\n return Promise.race(promises);\n}\n\n/**\n * async/all - Execute effects in parallel, wait for all to complete\n */\nexport async function evalAsyncAll(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): Promise<unknown[]> {\n const promises = args.map((effect) =>\n Promise.resolve().then(() => evaluate(effect, ctx))\n );\n return Promise.all(promises);\n}\n\n/**\n * async/sequence - Execute effects in sequence (one after another)\n */\nexport async function evalAsyncSequence(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): Promise<unknown[]> {\n const results: unknown[] = [];\n\n for (const effect of args) {\n const result = await Promise.resolve().then(() => evaluate(effect, ctx));\n results.push(result);\n }\n\n return results;\n}\n\n/**\n * Clear debounce timers (for testing/cleanup)\n */\nexport function clearDebounceTimers(): void {\n for (const timer of debounceTimers.values()) {\n clearTimeout(timer);\n }\n debounceTimers.clear();\n}\n\n/**\n * Clear throttle timestamps (for testing/cleanup)\n */\nexport function clearThrottleTimestamps(): void {\n throttleTimestamps.clear();\n}\n\n/**\n * Clear interval timers (for testing/cleanup)\n */\nexport function clearIntervalTimers(): void {\n for (const timer of intervalTimers.values()) {\n clearInterval(timer);\n }\n intervalTimers.clear();\n}\n","/**\n * Probabilistic Operators Runtime Evaluators\n *\n * Runtime implementations for prob/* operators.\n * Provides distribution sampling, Bayesian inference via rejection sampling,\n * and statistical summary functions.\n *\n * @packageDocumentation\n */\n\nimport type { SExpr } from '../types/expression.js';\nimport type { EvaluationContext } from '../context.js';\n\ntype EvalFn = (expr: SExpr, ctx: EvaluationContext) => unknown;\n\n// ============================================================================\n// Seeded PRNG (Mulberry32)\n// ============================================================================\n\n/**\n * Mulberry32: 32-bit seeded PRNG with good distribution properties.\n * Returns a value in [0, 1).\n */\nfunction mulberry32(seed: { state: number }): number {\n let t = (seed.state += 0x6D2B79F5);\n t = Math.imul(t ^ (t >>> 15), t | 1);\n t ^= t + Math.imul(t ^ (t >>> 7), t | 61);\n return ((t ^ (t >>> 14)) >>> 0) / 4294967296;\n}\n\n/**\n * Get a random number in [0, 1), using seeded PRNG if available.\n */\nfunction getRandom(ctx: EvaluationContext): number {\n if (ctx._probSeed) {\n return mulberry32(ctx._probSeed);\n }\n return Math.random();\n}\n\n// ============================================================================\n// Distribution Helpers\n// ============================================================================\n\n/**\n * Gamma variate using Marsaglia-Tsang method.\n * For shape >= 1. For shape < 1, use the relation:\n * gamma(shape) = gamma(shape+1) * U^(1/shape)\n */\nfunction gammaVariate(shape: number, ctx: EvaluationContext): number {\n if (shape < 1) {\n const u = getRandom(ctx);\n return gammaVariate(shape + 1, ctx) * Math.pow(u, 1 / shape);\n }\n\n const d = shape - 1 / 3;\n const c = 1 / Math.sqrt(9 * d);\n\n for (;;) {\n let x: number;\n let v: number;\n do {\n x = gaussianStandard(ctx);\n v = 1 + c * x;\n } while (v <= 0);\n\n v = v * v * v;\n const u = getRandom(ctx);\n\n if (u < 1 - 0.0331 * (x * x) * (x * x)) {\n return d * v;\n }\n\n if (Math.log(u) < 0.5 * x * x + d * (1 - v + Math.log(v))) {\n return d * v;\n }\n }\n}\n\n/**\n * Standard normal (mean=0, sigma=1) via Box-Muller.\n */\nfunction gaussianStandard(ctx: EvaluationContext): number {\n const u1 = getRandom(ctx);\n const u2 = getRandom(ctx);\n return Math.sqrt(-2 * Math.log(u1)) * Math.cos(2 * Math.PI * u2);\n}\n\n// ============================================================================\n// Distribution Sampling (7 operators)\n// ============================================================================\n\n/**\n * prob/seed - Set seeded PRNG on context for deterministic results.\n */\nexport function evalProbSeed(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): void {\n const n = evaluate(args[0], ctx) as number;\n ctx._probSeed = { state: n | 0 };\n}\n\n/**\n * prob/flip - Bernoulli trial: returns true with probability p.\n */\nexport function evalProbFlip(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): boolean {\n const p = evaluate(args[0], ctx) as number;\n return getRandom(ctx) < p;\n}\n\n/**\n * prob/gaussian - Sample from a Gaussian distribution (Box-Muller transform).\n */\nexport function evalProbGaussian(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const mu = evaluate(args[0], ctx) as number;\n const sigma = evaluate(args[1], ctx) as number;\n return mu + sigma * gaussianStandard(ctx);\n}\n\n/**\n * prob/uniform - Sample from a uniform distribution [lo, hi).\n */\nexport function evalProbUniform(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const lo = evaluate(args[0], ctx) as number;\n const hi = evaluate(args[1], ctx) as number;\n return lo + getRandom(ctx) * (hi - lo);\n}\n\n/**\n * prob/beta - Sample from a Beta(alpha, beta) distribution.\n * Uses gamma variate ratio (Marsaglia-Tsang for gamma).\n */\nexport function evalProbBeta(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const alpha = evaluate(args[0], ctx) as number;\n const beta = evaluate(args[1], ctx) as number;\n const x = gammaVariate(alpha, ctx);\n const y = gammaVariate(beta, ctx);\n return x / (x + y);\n}\n\n/**\n * prob/categorical - Weighted random selection from items.\n */\nexport function evalProbCategorical(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): unknown {\n const items = evaluate(args[0], ctx) as unknown[];\n const weights = evaluate(args[1], ctx) as number[];\n\n const totalWeight = weights.reduce((sum, w) => sum + w, 0);\n let r = getRandom(ctx) * totalWeight;\n\n for (let i = 0; i < items.length; i++) {\n r -= weights[i];\n if (r <= 0) return items[i];\n }\n\n return items[items.length - 1];\n}\n\n/**\n * prob/poisson - Sample from a Poisson distribution (Knuth's algorithm).\n */\nexport function evalProbPoisson(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const lambda = evaluate(args[0], ctx) as number;\n const limit = Math.exp(-lambda);\n let k = 0;\n let p = 1;\n\n do {\n k++;\n p *= getRandom(ctx);\n } while (p > limit);\n\n return k - 1;\n}\n\n// ============================================================================\n// Inference (4 operators)\n// ============================================================================\n\n/**\n * prob/condition - Mark the current sample as rejected if predicate is false.\n * Used inside model expressions evaluated by prob/posterior and prob/infer.\n */\nexport function evalProbCondition(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): void {\n const predicate = evaluate(args[0], ctx);\n if (!predicate) {\n ctx._probRejected = true;\n }\n}\n\n/**\n * prob/sample - Evaluate an expression n times and collect results.\n * args[1] is evaluated lazily (re-evaluated each iteration).\n */\nexport function evalProbSample(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): unknown[] {\n const n = evaluate(args[0], ctx) as number;\n const exprAst = args[1]; // lazy: don't evaluate, re-eval each iteration\n\n const results: unknown[] = [];\n for (let i = 0; i < n; i++) {\n results.push(evaluate(exprAst, ctx));\n }\n return results;\n}\n\n/**\n * prob/posterior - Rejection sampling. Returns accepted query values.\n * args: [model, evidence, query, n] (all lazy except n)\n *\n * For each sample:\n * 1. Create fresh child context with shallow-copied entity\n * 2. Evaluate model (may call prob/flip, prob/gaussian, prob/condition, set, etc.)\n * 3. Check if _probRejected was set by prob/condition\n * 4. If not rejected, evaluate evidence (boolean)\n * 5. If evidence passes, evaluate query and collect result\n */\nexport function evalProbPosterior(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): unknown[] {\n const modelAst = args[0];\n const evidenceAst = args[1];\n const queryAst = args[2];\n const n = evaluate(args[3], ctx) as number;\n\n const results: unknown[] = [];\n\n for (let i = 0; i < n; i++) {\n // Fresh child context per sample (shallow-copy entity for isolation)\n const sampleEntity = { ...ctx.entity };\n const sampleCtx: EvaluationContext = {\n ...ctx,\n entity: sampleEntity,\n _probRejected: false,\n mutateEntity: (changes: Record<string, unknown>) => {\n Object.assign(sampleEntity, changes);\n },\n };\n\n // Run the model\n evaluate(modelAst, sampleCtx);\n\n // Check if prob/condition rejected this sample\n if (sampleCtx._probRejected) continue;\n\n // Evaluate evidence\n const evidenceResult = evaluate(evidenceAst, sampleCtx);\n if (!evidenceResult) continue;\n\n // Collect query value\n results.push(evaluate(queryAst, sampleCtx));\n }\n\n return results;\n}\n\n/**\n * prob/infer - Like posterior but returns summary statistics.\n * Returns { mean, variance, samples, acceptRate }.\n */\nexport function evalProbInfer(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): { mean: number; variance: number; samples: number[]; acceptRate: number } {\n const modelAst = args[0];\n const evidenceAst = args[1];\n const queryAst = args[2];\n const n = evaluate(args[3], ctx) as number;\n\n const accepted: number[] = [];\n\n for (let i = 0; i < n; i++) {\n const sampleEntity = { ...ctx.entity };\n const sampleCtx: EvaluationContext = {\n ...ctx,\n entity: sampleEntity,\n _probRejected: false,\n mutateEntity: (changes: Record<string, unknown>) => {\n Object.assign(sampleEntity, changes);\n },\n };\n\n evaluate(modelAst, sampleCtx);\n\n if (sampleCtx._probRejected) continue;\n\n const evidenceResult = evaluate(evidenceAst, sampleCtx);\n if (!evidenceResult) continue;\n\n const queryVal = evaluate(queryAst, sampleCtx) as number;\n accepted.push(queryVal);\n }\n\n const count = accepted.length;\n if (count === 0) {\n return { mean: 0, variance: 0, samples: [], acceptRate: 0 };\n }\n\n const mean = accepted.reduce((s, v) => s + v, 0) / count;\n const variance = accepted.reduce((s, v) => s + (v - mean) ** 2, 0) / count;\n\n return {\n mean,\n variance,\n samples: accepted,\n acceptRate: count / n,\n };\n}\n\n// ============================================================================\n// Statistics (5 operators)\n// ============================================================================\n\n/**\n * prob/expected-value - Mean of numeric samples.\n */\nexport function evalProbExpectedValue(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const samples = evaluate(args[0], ctx) as number[];\n if (samples.length === 0) return 0;\n return samples.reduce((s, v) => s + v, 0) / samples.length;\n}\n\n/**\n * prob/variance - Population variance of numeric samples.\n */\nexport function evalProbVariance(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const samples = evaluate(args[0], ctx) as number[];\n if (samples.length === 0) return 0;\n const mean = samples.reduce((s, v) => s + v, 0) / samples.length;\n return samples.reduce((s, v) => s + (v - mean) ** 2, 0) / samples.length;\n}\n\n/**\n * prob/histogram - Bin numeric samples into a histogram.\n * Returns { binEdges: number[], counts: number[] }.\n */\nexport function evalProbHistogram(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): { binEdges: number[]; counts: number[] } {\n const samples = evaluate(args[0], ctx) as number[];\n const bins = evaluate(args[1], ctx) as number;\n\n if (samples.length === 0) {\n return { binEdges: [], counts: [] };\n }\n\n const min = Math.min(...samples);\n const max = Math.max(...samples);\n const binWidth = (max - min) / bins || 1;\n\n const binEdges: number[] = [];\n const counts: number[] = new Array(bins).fill(0) as number[];\n\n for (let i = 0; i <= bins; i++) {\n binEdges.push(min + i * binWidth);\n }\n\n for (const s of samples) {\n let idx = Math.floor((s - min) / binWidth);\n if (idx >= bins) idx = bins - 1; // clamp last value into final bin\n counts[idx]++;\n }\n\n return { binEdges, counts };\n}\n\n/**\n * prob/percentile - Get the p-th percentile (0-100) from sorted samples.\n */\nexport function evalProbPercentile(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const samples = evaluate(args[0], ctx) as number[];\n const p = evaluate(args[1], ctx) as number;\n\n if (samples.length === 0) return 0;\n\n const sorted = [...samples].sort((a, b) => a - b);\n const idx = (p / 100) * (sorted.length - 1);\n const lo = Math.floor(idx);\n const hi = Math.ceil(idx);\n\n if (lo === hi) return sorted[lo];\n const frac = idx - lo;\n return sorted[lo] * (1 - frac) + sorted[hi] * frac;\n}\n\n/**\n * prob/credible-interval - Compute symmetric credible interval.\n * alpha=0.05 gives 95% interval. Returns [lo, hi].\n */\nexport function evalProbCredibleInterval(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): [number, number] {\n const samples = evaluate(args[0], ctx) as number[];\n const alpha = evaluate(args[1], ctx) as number;\n\n if (samples.length === 0) return [0, 0];\n\n const sorted = [...samples].sort((a, b) => a - b);\n const loIdx = Math.floor((alpha / 2) * (sorted.length - 1));\n const hiIdx = Math.ceil((1 - alpha / 2) * (sorted.length - 1));\n\n return [sorted[loIdx], sorted[hiIdx]];\n}\n","/**\n * OS Module - Operating System Event Watchers\n *\n * Evaluator implementations for os/* operators.\n * These operators register OS-level watchers via the runtime bridge.\n * Server-side only.\n *\n * @packageDocumentation\n */\n\nimport type { SExpr } from '../types/expression.js';\nimport type { EvaluationContext } from '../context.js';\n\ntype Evaluator = (expr: SExpr, ctx: EvaluationContext) => unknown;\n\nfunction registerTrigger(\n ctx: EvaluationContext,\n type: string,\n config: Record<string, unknown>,\n): void {\n ctx.registerOsTrigger?.(type, config);\n}\n\nexport function evalOsWatchFiles(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): void {\n const glob = evaluate(args[0], ctx) as string;\n const options = args[1] ? (evaluate(args[1], ctx) as Record<string, unknown>) : {};\n registerTrigger(ctx, 'watch-files', { glob, ...options });\n}\n\nexport function evalOsWatchProcess(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): void {\n const name = evaluate(args[0], ctx) as string;\n const subcommand = args[1] ? (evaluate(args[1], ctx) as string) : undefined;\n registerTrigger(ctx, 'watch-process', { name, subcommand });\n}\n\nexport function evalOsWatchPort(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): void {\n const port = evaluate(args[0], ctx) as number;\n const protocol = args[1] ? (evaluate(args[1], ctx) as string) : 'tcp';\n registerTrigger(ctx, 'watch-port', { port, protocol });\n}\n\nexport function evalOsWatchHttp(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): void {\n const urlPattern = evaluate(args[0], ctx) as string;\n const method = args[1] ? (evaluate(args[1], ctx) as string) : undefined;\n registerTrigger(ctx, 'watch-http', { urlPattern, method });\n}\n\nexport function evalOsWatchCron(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): void {\n const expression = evaluate(args[0], ctx) as string;\n registerTrigger(ctx, 'watch-cron', { expression });\n}\n\nexport function evalOsWatchSignal(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): void {\n const signal = evaluate(args[0], ctx) as string;\n registerTrigger(ctx, 'watch-signal', { signal });\n}\n\nexport function evalOsWatchEnv(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): void {\n const variable = evaluate(args[0], ctx) as string;\n registerTrigger(ctx, 'watch-env', { variable });\n}\n\nexport function evalOsDebounce(args: SExpr[], evaluate: Evaluator, ctx: EvaluationContext): void {\n const ms = evaluate(args[0], ctx) as number;\n const eventType = evaluate(args[1], ctx) as string;\n registerTrigger(ctx, 'debounce', { ms, eventType });\n}\n","/**\n * LLM Module Runtime Evaluators\n *\n * Runtime implementations for llm/* operators.\n * Pure operators return safe defaults when ctx.llm is undefined.\n * Effect operators return null when ctx.llm is undefined.\n *\n * @packageDocumentation\n */\n\nimport type { SExpr } from '../types/expression.js';\nimport type { EvaluationContext } from '../context.js';\nimport type { LlmMessage, LlmToolDef } from '@almadar/core';\n\ntype EvalFn = (expr: SExpr, ctx: EvaluationContext) => unknown;\n\nexport function evalLlmGenerate(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): Promise<string> | null {\n if (!ctx.llm) return null;\n const prompt = evaluate(args[0], ctx) as string;\n const options = args.length > 1 ? (evaluate(args[1], ctx) as { json?: boolean; maxTokens?: number; provider?: string; model?: string }) : undefined;\n return ctx.llm.generate(prompt, options);\n}\n\nexport function evalLlmCallTools(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): Promise<unknown> | null {\n if (!ctx.llm) return null;\n const messages = evaluate(args[0], ctx) as LlmMessage[];\n const tools = evaluate(args[1], ctx) as LlmToolDef[];\n return ctx.llm.callTools(messages, tools);\n}\n\nexport function evalLlmEmbed(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): Promise<number[][]> | null {\n if (!ctx.llm) return null;\n const texts = evaluate(args[0], ctx) as string[];\n return ctx.llm.embed(texts);\n}\n\nexport function evalLlmTokenCount(\n _args: SExpr[],\n _evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n if (!ctx.llm) return 0;\n return ctx.llm.tokenCount();\n}\n\nexport function evalLlmSwitch(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): void {\n if (!ctx.llm) return;\n const provider = evaluate(args[0], ctx) as string;\n const model = args.length > 1 ? (evaluate(args[1], ctx) as string) : undefined;\n ctx.llm.switchProvider(provider, model);\n}\n\nexport function evalLlmCompact(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): Promise<{ before: number; after: number }> | null {\n if (!ctx.llm) return null;\n const strategy = args.length > 0 ? (evaluate(args[0], ctx) as string) : undefined;\n return ctx.llm.compact(strategy);\n}\n","/**\n * Runtime guards for the interpreter → typed-substrate boundary.\n *\n * `isFieldValue`, `isEventPayloadValue`, `isSessionHistoryEntry`, and\n * `isPlanSnapshot` are owned by `@almadar/core` beside their types and\n * re-exported here for the std/* seam modules. `isOrbital` and\n * `isOrbitalSchemaValue` live here: they bridge core's zod schemas to its\n * hand-written interfaces as `unknown`-accepting predicates.\n *\n * @packageDocumentation\n */\n\nimport {\n OrbitalZodSchema,\n safeParseOrbitalSchema,\n type Orbital,\n type OrbitalSchema,\n} from '@almadar/core';\n\nexport {\n isFieldValue,\n isEventPayloadValue,\n isSessionHistoryEntry,\n isPlanSnapshot,\n} from '@almadar/core';\n\n/** Deep zod validation bridging to core's hand-written `Orbital` interface. */\nexport function isOrbital(value: unknown): value is Orbital {\n return OrbitalZodSchema.safeParse(value).success;\n}\n\n/** Deep zod validation bridging to core's hand-written `OrbitalSchema` interface. */\nexport function isOrbitalSchemaValue(value: unknown): value is OrbitalSchema {\n return safeParseOrbitalSchema(value).success;\n}\n","/**\n * Workspace Module Runtime Evaluators\n *\n * Runtime implementations for workspace/* operators.\n * Returns null when ctx.workspace is undefined.\n *\n * @packageDocumentation\n */\n\nimport type { SExpr } from '../types/expression.js';\nimport type { EvaluationContext } from '../context.js';\nimport { isOrbital, isOrbitalSchemaValue, isPlanSnapshot } from './substrate-guards.js';\n\ntype EvalFn = (expr: SExpr, ctx: EvaluationContext) => unknown;\n\nexport function evalWorkspaceReadOrbital(args: SExpr[], evaluate: EvalFn, ctx: EvaluationContext): Promise<unknown> | null {\n if (!ctx.workspace) return null;\n const name = evaluate(args[0], ctx) as string;\n return ctx.workspace.readOrbital(name);\n}\n\nexport function evalWorkspaceWriteOrbital(args: SExpr[], evaluate: EvalFn, ctx: EvaluationContext): Promise<void> | null {\n if (!ctx.workspace) return null;\n const name = evaluate(args[0], ctx) as string;\n const content = evaluate(args[1], ctx);\n if (!isOrbital(content)) {\n throw new Error(`workspace/write-orbital value for \"${name}\" is not a valid orbital definition`);\n }\n return ctx.workspace.writeOrbital(name, content);\n}\n\nexport function evalWorkspaceReadFile(args: SExpr[], evaluate: EvalFn, ctx: EvaluationContext): Promise<string> | null {\n if (!ctx.workspace) return null;\n const path = evaluate(args[0], ctx) as string;\n return ctx.workspace.readFile(path);\n}\n\nexport function evalWorkspaceWriteFile(args: SExpr[], evaluate: EvalFn, ctx: EvaluationContext): Promise<void> | null {\n if (!ctx.workspace) return null;\n const path = evaluate(args[0], ctx) as string;\n const content = evaluate(args[1], ctx) as string;\n return ctx.workspace.writeFile(path, content);\n}\n\nexport function evalWorkspaceExists(args: SExpr[], evaluate: EvalFn, ctx: EvaluationContext): boolean {\n if (!ctx.workspace) return false;\n const path = evaluate(args[0], ctx) as string;\n return ctx.workspace.exists(path);\n}\n\nexport function evalWorkspaceListOrbitals(_args: SExpr[], _evaluate: EvalFn, ctx: EvaluationContext): string[] {\n if (!ctx.workspace) return [];\n return ctx.workspace.listOrbitals();\n}\n\nexport function evalWorkspaceReadSchema(_args: SExpr[], _evaluate: EvalFn, ctx: EvaluationContext): Promise<unknown> | null {\n if (!ctx.workspace) return null;\n return ctx.workspace.readSchema();\n}\n\nexport function evalWorkspaceWriteSchema(args: SExpr[], evaluate: EvalFn, ctx: EvaluationContext): Promise<void> | null {\n if (!ctx.workspace) return null;\n const schema = evaluate(args[0], ctx);\n if (!isOrbitalSchemaValue(schema)) {\n throw new Error('workspace/write-schema value is not a valid orbital schema');\n }\n return ctx.workspace.writeSchema(schema);\n}\n\nexport function evalWorkspaceReadPlan(_args: SExpr[], _evaluate: EvalFn, ctx: EvaluationContext): Promise<unknown> | null {\n if (!ctx.workspace) return null;\n return ctx.workspace.readPlan();\n}\n\nexport function evalWorkspaceWritePlan(args: SExpr[], evaluate: EvalFn, ctx: EvaluationContext): Promise<void> | null {\n if (!ctx.workspace) return null;\n const plan = evaluate(args[0], ctx);\n if (!isPlanSnapshot(plan)) {\n throw new Error('workspace/write-plan value is not a valid plan snapshot (schemaVersion 1 envelope)');\n }\n return ctx.workspace.writePlan(plan);\n}\n\nexport function evalWorkspaceArchiveOrbital(args: SExpr[], evaluate: EvalFn, ctx: EvaluationContext): Promise<void> | null {\n if (!ctx.workspace) return null;\n const name = evaluate(args[0], ctx) as string;\n return ctx.workspace.archiveOrbital(name);\n}\n","/**\n * Session Module Runtime Evaluators\n *\n * Runtime implementations for session/* operators.\n * Returns null (or [] for array returns) when ctx.session is undefined.\n *\n * @packageDocumentation\n */\n\nimport type { SExpr } from '../types/expression.js';\nimport type { EvaluationContext } from '../context.js';\nimport type { AgentMemoryRecord } from '@almadar/core';\nimport { isOrbital, isSessionHistoryEntry } from './substrate-guards.js';\n\ntype EvalFn = (expr: SExpr, ctx: EvaluationContext) => unknown;\n\nexport function evalSessionReadSpec(args: SExpr[], evaluate: EvalFn, ctx: EvaluationContext): Promise<unknown> | null {\n if (!ctx.session) return null;\n const orbitalName = evaluate(args[0], ctx) as string;\n return ctx.session.readSpec(orbitalName);\n}\n\nexport function evalSessionWriteSpec(args: SExpr[], evaluate: EvalFn, ctx: EvaluationContext): Promise<void> | null {\n if (!ctx.session) return null;\n const orbitalName = evaluate(args[0], ctx) as string;\n const spec = evaluate(args[1], ctx);\n if (!isOrbital(spec)) {\n throw new Error(`session/write-spec value for \"${orbitalName}\" is not a valid orbital definition`);\n }\n return ctx.session.writeSpec(orbitalName, spec);\n}\n\nexport function evalSessionReadMemory(args: SExpr[], evaluate: EvalFn, ctx: EvaluationContext): Promise<AgentMemoryRecord[]> | null {\n if (!ctx.session) return null;\n const orbitalName = evaluate(args[0], ctx) as string;\n return ctx.session.readMemory(orbitalName);\n}\n\nexport function evalSessionWriteMemory(args: SExpr[], evaluate: EvalFn, ctx: EvaluationContext): Promise<void> | null {\n if (!ctx.session) return null;\n const orbitalName = evaluate(args[0], ctx) as string;\n const memory = evaluate(args[1], ctx) as AgentMemoryRecord[];\n return ctx.session.writeMemory(orbitalName, memory);\n}\n\nexport function evalSessionReadHistory(args: SExpr[], evaluate: EvalFn, ctx: EvaluationContext): Promise<unknown[]> | null {\n if (!ctx.session) return null;\n const orbitalName = evaluate(args[0], ctx) as string;\n return ctx.session.readHistory(orbitalName);\n}\n\nexport function evalSessionAppendHistory(args: SExpr[], evaluate: EvalFn, ctx: EvaluationContext): Promise<void> | null {\n if (!ctx.session) return null;\n const orbitalName = evaluate(args[0], ctx) as string;\n const entry = evaluate(args[1], ctx);\n if (!isSessionHistoryEntry(entry)) {\n throw new Error(`session/append-history entry for \"${orbitalName}\" must have role/content/timestamp`);\n }\n return ctx.session.appendHistory(orbitalName, entry);\n}\n\nexport function evalSessionReadErrors(args: SExpr[], evaluate: EvalFn, ctx: EvaluationContext): Promise<string[]> | null {\n if (!ctx.session) return null;\n const orbitalName = evaluate(args[0], ctx) as string;\n return ctx.session.readErrors(orbitalName);\n}\n\nexport function evalSessionWriteErrors(args: SExpr[], evaluate: EvalFn, ctx: EvaluationContext): Promise<void> | null {\n if (!ctx.session) return null;\n const orbitalName = evaluate(args[0], ctx) as string;\n const errors = evaluate(args[1], ctx) as string[];\n return ctx.session.writeErrors(orbitalName, errors);\n}\n\nexport function evalSessionReadAnalysis(args: SExpr[], evaluate: EvalFn, ctx: EvaluationContext): Promise<unknown> | null {\n if (!ctx.session) return null;\n const orbitalName = evaluate(args[0], ctx) as string;\n return ctx.session.readAnalysis(orbitalName);\n}\n","/**\n * Memory Module Runtime Evaluators\n *\n * Runtime implementations for memory/* operators.\n * Pure operators return safe defaults when ctx.memory is undefined.\n *\n * @packageDocumentation\n */\n\nimport type { SExpr } from '../types/expression.js';\nimport type { EvaluationContext } from '../context.js';\nimport type { AgentMemoryRecord } from '@almadar/core';\n\ntype EvalFn = (expr: SExpr, ctx: EvaluationContext) => unknown;\n\nexport function evalMemoryRecall(args: SExpr[], evaluate: EvalFn, ctx: EvaluationContext): AgentMemoryRecord[] {\n if (!ctx.memory) return [];\n const query = evaluate(args[0], ctx) as string;\n const limit = args.length > 1 ? (evaluate(args[1], ctx) as number) : undefined;\n return ctx.memory.recall(query, limit);\n}\n\nexport function evalMemoryStore(args: SExpr[], evaluate: EvalFn, ctx: EvaluationContext): Promise<string> | null {\n if (!ctx.memory) return null;\n const content = evaluate(args[0], ctx) as string;\n const category = args.length > 1 ? (evaluate(args[1], ctx) as string) : undefined;\n const strength = args.length > 2 ? (evaluate(args[2], ctx) as number) : undefined;\n return ctx.memory.store(content, category, strength);\n}\n\nexport function evalMemoryList(args: SExpr[], evaluate: EvalFn, ctx: EvaluationContext): AgentMemoryRecord[] {\n if (!ctx.memory) return [];\n const category = args.length > 0 ? (evaluate(args[0], ctx) as string) : undefined;\n return ctx.memory.list(category);\n}\n","/**\n * Trace Module Runtime Evaluators\n *\n * Runtime implementations for trace/* operators.\n * No-op when ctx.trace is undefined.\n *\n * @packageDocumentation\n */\n\nimport type { SExpr } from '../types/expression.js';\nimport type { EvaluationContext } from '../context.js';\nimport { isEventPayloadValue } from './substrate-guards.js';\n\ntype EvalFn = (expr: SExpr, ctx: EvaluationContext) => unknown;\n\nexport function evalTraceEmit(args: SExpr[], evaluate: EvalFn, ctx: EvaluationContext): void {\n if (!ctx.trace) return;\n const event = evaluate(args[0], ctx) as string;\n const payload = args.length > 1 ? evaluate(args[1], ctx) : undefined;\n if (!isEventPayloadValue(payload)) {\n throw new Error(`trace/emit payload for \"${event}\" is not an event-payload value (JSON-like)`);\n }\n ctx.trace.emit(event, payload);\n}\n\nexport function evalTraceLog(args: SExpr[], evaluate: EvalFn, ctx: EvaluationContext): void {\n if (!ctx.trace) return;\n const message = evaluate(args[0], ctx) as string;\n const level = args.length > 1 ? (evaluate(args[1], ctx) as 'log' | 'warn' | 'error') : undefined;\n const data = args.length > 2 ? evaluate(args[2], ctx) : undefined;\n if (!isEventPayloadValue(data)) {\n throw new Error('trace/log data is not an event-payload value (JSON-like)');\n }\n ctx.trace.log(message, level, data);\n}\n","/**\n * Integration Module Runtime Evaluators\n *\n * Runtime implementations for integration/* operators.\n * Returns null when ctx.integration is undefined.\n *\n * @packageDocumentation\n */\n\nimport type { SExpr } from '../types/expression.js';\nimport type { EvaluationContext } from '../context.js';\nimport { isFieldValue } from './substrate-guards.js';\n\ntype EvalFn = (expr: SExpr, ctx: EvaluationContext) => unknown;\n\nexport function evalIntegrationHttp(args: SExpr[], evaluate: EvalFn, ctx: EvaluationContext): Promise<unknown> | null {\n if (!ctx.integration) return null;\n const method = evaluate(args[0], ctx) as string;\n const url = evaluate(args[1], ctx) as string;\n const body = args.length > 2 ? evaluate(args[2], ctx) : undefined;\n if (body !== undefined && !isFieldValue(body)) {\n throw new Error(`integration/http body for ${method} ${url} is not a field value (JSON-like)`);\n }\n const headers = args.length > 3 ? (evaluate(args[3], ctx) as Record<string, string>) : undefined;\n return ctx.integration.http(method, url, body, headers);\n}\n\nexport function evalIntegrationGithubGetRepo(args: SExpr[], evaluate: EvalFn, ctx: EvaluationContext): Promise<unknown> | null {\n if (!ctx.integration) return null;\n const owner = evaluate(args[0], ctx) as string;\n const repo = evaluate(args[1], ctx) as string;\n return ctx.integration.githubGetRepo(owner, repo);\n}\n\nexport function evalIntegrationGithubCreateIssue(args: SExpr[], evaluate: EvalFn, ctx: EvaluationContext): Promise<unknown> | null {\n if (!ctx.integration) return null;\n const owner = evaluate(args[0], ctx) as string;\n const repo = evaluate(args[1], ctx) as string;\n const title = evaluate(args[2], ctx) as string;\n const body = args.length > 3 ? (evaluate(args[3], ctx) as string) : undefined;\n return ctx.integration.githubCreateIssue(owner, repo, title, body);\n}\n","/**\n * Vector Module Runtime Evaluators\n *\n * Runtime implementations for vec/* operators.\n * Vectors are plain objects {x,y} or {x,y,z}. Dimensionality of a vector\n * result follows the FIRST vector argument (z included only if first arg had z).\n *\n * @packageDocumentation\n */\n\nimport type { SExpr } from '../types/expression.js';\nimport type { EvaluationContext } from '../context.js';\n\ntype EvalFn = (expr: SExpr, ctx: EvaluationContext) => unknown;\n\ninterface Vec {\n x: number;\n y: number;\n z?: number;\n}\n\nfunction asVec(v: unknown): Vec {\n const o = (v ?? {}) as Record<string, unknown>;\n const x = typeof o.x === 'number' ? o.x : 0;\n const y = typeof o.y === 'number' ? o.y : 0;\n const z = typeof o.z === 'number' ? o.z : undefined;\n return z === undefined ? { x, y } : { x, y, z };\n}\n\nfunction has3(v: Vec): boolean {\n return v.z !== undefined;\n}\n\nfunction z(v: Vec): number {\n return v.z ?? 0;\n}\n\nfunction make(x: number, y: number, zVal: number, is3d: boolean): Vec {\n return is3d ? { x, y, z: zVal } : { x, y };\n}\n\n/**\n * vec/add - componentwise a + b (dim follows a)\n */\nexport function evalVecAdd(args: SExpr[], evaluate: EvalFn, ctx: EvaluationContext): Vec {\n const a = asVec(evaluate(args[0], ctx));\n const b = asVec(evaluate(args[1], ctx));\n return make(a.x + b.x, a.y + b.y, z(a) + z(b), has3(a));\n}\n\n/**\n * vec/sub - componentwise a - b (dim follows a)\n */\nexport function evalVecSub(args: SExpr[], evaluate: EvalFn, ctx: EvaluationContext): Vec {\n const a = asVec(evaluate(args[0], ctx));\n const b = asVec(evaluate(args[1], ctx));\n return make(a.x - b.x, a.y - b.y, z(a) - z(b), has3(a));\n}\n\n/**\n * vec/scale - componentwise a * k (dim follows a)\n */\nexport function evalVecScale(args: SExpr[], evaluate: EvalFn, ctx: EvaluationContext): Vec {\n const a = asVec(evaluate(args[0], ctx));\n const k = evaluate(args[1], ctx) as number;\n return make(a.x * k, a.y * k, z(a) * k, has3(a));\n}\n\n/**\n * vec/dot - dot product → number\n */\nexport function evalVecDot(args: SExpr[], evaluate: EvalFn, ctx: EvaluationContext): number {\n const a = asVec(evaluate(args[0], ctx));\n const b = asVec(evaluate(args[1], ctx));\n return a.x * b.x + a.y * b.y + z(a) * z(b);\n}\n\n/**\n * vec/cross - 3D → {x,y,z} cross; 2D → number (ax·by - ay·bx)\n */\nexport function evalVecCross(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): Vec | number {\n const a = asVec(evaluate(args[0], ctx));\n const b = asVec(evaluate(args[1], ctx));\n if (has3(a)) {\n const ax = a.x,\n ay = a.y,\n az = z(a);\n const bx = b.x,\n by = b.y,\n bz = z(b);\n return { x: ay * bz - az * by, y: az * bx - ax * bz, z: ax * by - ay * bx };\n }\n return a.x * b.y - a.y * b.x;\n}\n\n/**\n * vec/length - magnitude\n */\nexport function evalVecLength(args: SExpr[], evaluate: EvalFn, ctx: EvaluationContext): number {\n const a = asVec(evaluate(args[0], ctx));\n return Math.sqrt(a.x * a.x + a.y * a.y + z(a) * z(a));\n}\n\n/**\n * vec/length-sq - squared magnitude\n */\nexport function evalVecLengthSq(args: SExpr[], evaluate: EvalFn, ctx: EvaluationContext): number {\n const a = asVec(evaluate(args[0], ctx));\n return a.x * a.x + a.y * a.y + z(a) * z(a);\n}\n\n/**\n * vec/normalize - unit vector; zero-length → zero vector (same dim)\n */\nexport function evalVecNormalize(args: SExpr[], evaluate: EvalFn, ctx: EvaluationContext): Vec {\n const a = asVec(evaluate(args[0], ctx));\n const len = Math.sqrt(a.x * a.x + a.y * a.y + z(a) * z(a));\n if (len === 0) {\n return make(0, 0, 0, has3(a));\n }\n return make(a.x / len, a.y / len, z(a) / len, has3(a));\n}\n\n/**\n * vec/distance - length(sub(a,b))\n */\nexport function evalVecDistance(args: SExpr[], evaluate: EvalFn, ctx: EvaluationContext): number {\n const a = asVec(evaluate(args[0], ctx));\n const b = asVec(evaluate(args[1], ctx));\n const dx = a.x - b.x,\n dy = a.y - b.y,\n dz = z(a) - z(b);\n return Math.sqrt(dx * dx + dy * dy + dz * dz);\n}\n\n/**\n * vec/distance-sq - length-sq(sub(a,b))\n */\nexport function evalVecDistanceSq(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const a = asVec(evaluate(args[0], ctx));\n const b = asVec(evaluate(args[1], ctx));\n const dx = a.x - b.x,\n dy = a.y - b.y,\n dz = z(a) - z(b);\n return dx * dx + dy * dy + dz * dz;\n}\n\n/**\n * vec/lerp - componentwise a + (b - a) * t (dim follows a)\n */\nexport function evalVecLerp(args: SExpr[], evaluate: EvalFn, ctx: EvaluationContext): Vec {\n const a = asVec(evaluate(args[0], ctx));\n const b = asVec(evaluate(args[1], ctx));\n const t = evaluate(args[2], ctx) as number;\n return make(\n a.x + (b.x - a.x) * t,\n a.y + (b.y - a.y) * t,\n z(a) + (z(b) - z(a)) * t,\n has3(a)\n );\n}\n\n/**\n * vec/angle - 1 arg: atan2(a.y,a.x); 2 args: angle between vectors\n */\nexport function evalVecAngle(args: SExpr[], evaluate: EvalFn, ctx: EvaluationContext): number {\n const a = asVec(evaluate(args[0], ctx));\n if (args.length < 2) {\n return Math.atan2(a.y, a.x);\n }\n const b = asVec(evaluate(args[1], ctx));\n const la = Math.sqrt(a.x * a.x + a.y * a.y + z(a) * z(a));\n const lb = Math.sqrt(b.x * b.x + b.y * b.y + z(b) * z(b));\n if (la === 0 || lb === 0) {\n return 0;\n }\n const d = (a.x * b.x + a.y * b.y + z(a) * z(b)) / (la * lb);\n const clamped = Math.min(Math.max(d, -1), 1);\n return Math.acos(clamped);\n}\n\n/**\n * vec/rotate - 2D rotate x,y by rad; z preserved\n */\nexport function evalVecRotate(args: SExpr[], evaluate: EvalFn, ctx: EvaluationContext): Vec {\n const a = asVec(evaluate(args[0], ctx));\n const rad = evaluate(args[1], ctx) as number;\n const c = Math.cos(rad),\n s = Math.sin(rad);\n return make(a.x * c - a.y * s, a.x * s + a.y * c, z(a), has3(a));\n}\n\n/**\n * vec/clamp-length - if length > max → scale(normalize(a),max) else a\n */\nexport function evalVecClampLength(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): Vec {\n const a = asVec(evaluate(args[0], ctx));\n const max = evaluate(args[1], ctx) as number;\n const len = Math.sqrt(a.x * a.x + a.y * a.y + z(a) * z(a));\n if (len > max) {\n if (len === 0) {\n return make(0, 0, 0, has3(a));\n }\n const k = max / len;\n return make(a.x * k, a.y * k, z(a) * k, has3(a));\n }\n return make(a.x, a.y, z(a), has3(a));\n}\n","/**\n * Geometry Module Runtime Evaluators\n *\n * Runtime implementations for geo/* operators.\n * Rect = {x,y,w,h} (top-left origin). Circle = {x,y,r}. Point = {x,y}.\n * Segment = {x1,y1,x2,y2}. Vectors are {x,y[,z]}.\n *\n * @packageDocumentation\n */\n\nimport type { SExpr } from '../types/expression.js';\nimport type { EvaluationContext } from '../context.js';\n\ntype EvalFn = (expr: SExpr, ctx: EvaluationContext) => unknown;\n\ninterface Vec {\n x: number;\n y: number;\n z?: number;\n}\ninterface Rect {\n x: number;\n y: number;\n w: number;\n h: number;\n}\ninterface Circle {\n x: number;\n y: number;\n r: number;\n}\ninterface Segment {\n x1: number;\n y1: number;\n x2: number;\n y2: number;\n}\n\nfunction num(o: Record<string, unknown>, k: string): number {\n return typeof o[k] === 'number' ? (o[k] as number) : 0;\n}\n\nfunction asVec(v: unknown): Vec {\n const o = (v ?? {}) as Record<string, unknown>;\n const z = typeof o.z === 'number' ? (o.z as number) : undefined;\n return z === undefined\n ? { x: num(o, 'x'), y: num(o, 'y') }\n : { x: num(o, 'x'), y: num(o, 'y'), z };\n}\n\nfunction asRect(v: unknown): Rect {\n const o = (v ?? {}) as Record<string, unknown>;\n return { x: num(o, 'x'), y: num(o, 'y'), w: num(o, 'w'), h: num(o, 'h') };\n}\n\nfunction asCircle(v: unknown): Circle {\n const o = (v ?? {}) as Record<string, unknown>;\n return { x: num(o, 'x'), y: num(o, 'y'), r: num(o, 'r') };\n}\n\nfunction asSegment(v: unknown): Segment {\n const o = (v ?? {}) as Record<string, unknown>;\n return { x1: num(o, 'x1'), y1: num(o, 'y1'), x2: num(o, 'x2'), y2: num(o, 'y2') };\n}\n\nfunction clamp(n: number, lo: number, hi: number): number {\n return Math.min(Math.max(n, lo), hi);\n}\n\n/**\n * geo/aabb-overlap - axis-aligned bounding box overlap → bool\n */\nexport function evalGeoAabbOverlap(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): boolean {\n const a = asRect(evaluate(args[0], ctx));\n const b = asRect(evaluate(args[1], ctx));\n return a.x < b.x + b.w && a.x + a.w > b.x && a.y < b.y + b.h && a.y + a.h > b.y;\n}\n\n/**\n * geo/circle-overlap - distance(centers) <= a.r + b.r → bool\n */\nexport function evalGeoCircleOverlap(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): boolean {\n const a = asCircle(evaluate(args[0], ctx));\n const b = asCircle(evaluate(args[1], ctx));\n const dx = a.x - b.x,\n dy = a.y - b.y;\n return Math.sqrt(dx * dx + dy * dy) <= a.r + b.r;\n}\n\n/**\n * geo/rect-circle-overlap - closest point on rect to circle center → bool\n */\nexport function evalGeoRectCircleOverlap(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): boolean {\n const r = asRect(evaluate(args[0], ctx));\n const c = asCircle(evaluate(args[1], ctx));\n const cx = clamp(c.x, r.x, r.x + r.w);\n const cy = clamp(c.y, r.y, r.y + r.h);\n const dx = c.x - cx,\n dy = c.y - cy;\n return dx * dx + dy * dy <= c.r * c.r;\n}\n\n/**\n * geo/point-in-rect - point inside rect (inclusive edges) → bool\n */\nexport function evalGeoPointInRect(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): boolean {\n const p = asVec(evaluate(args[0], ctx));\n const r = asRect(evaluate(args[1], ctx));\n return p.x >= r.x && p.x <= r.x + r.w && p.y >= r.y && p.y <= r.y + r.h;\n}\n\n/**\n * geo/point-in-circle - point inside circle (inclusive) → bool\n */\nexport function evalGeoPointInCircle(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): boolean {\n const p = asVec(evaluate(args[0], ctx));\n const c = asCircle(evaluate(args[1], ctx));\n const dx = p.x - c.x,\n dy = p.y - c.y;\n return dx * dx + dy * dy <= c.r * c.r;\n}\n\n/**\n * geo/reflect - reflect v about normal n (n assumed normalized) → vector\n */\nexport function evalGeoReflect(args: SExpr[], evaluate: EvalFn, ctx: EvaluationContext): Vec {\n const v = asVec(evaluate(args[0], ctx));\n const n = asVec(evaluate(args[1], ctx));\n const is3d = v.z !== undefined;\n const vz = v.z ?? 0,\n nz = n.z ?? 0;\n const d = v.x * n.x + v.y * n.y + vz * nz;\n const rx = v.x - n.x * 2 * d;\n const ry = v.y - n.y * 2 * d;\n const rz = vz - nz * 2 * d;\n return is3d ? { x: rx, y: ry, z: rz } : { x: rx, y: ry };\n}\n\n/**\n * geo/segment-intersect - 2-segment intersection → {x,y} point or null\n */\nexport function evalGeoSegmentIntersect(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): Vec | null {\n const s1 = asSegment(evaluate(args[0], ctx));\n const s2 = asSegment(evaluate(args[1], ctx));\n const r_x = s1.x2 - s1.x1,\n r_y = s1.y2 - s1.y1;\n const s_x = s2.x2 - s2.x1,\n s_y = s2.y2 - s2.y1;\n const denom = r_x * s_y - r_y * s_x;\n if (denom === 0) {\n return null; // parallel / collinear\n }\n const qpx = s2.x1 - s1.x1,\n qpy = s2.y1 - s1.y1;\n const t = (qpx * s_y - qpy * s_x) / denom;\n const u = (qpx * r_y - qpy * r_x) / denom;\n if (t < 0 || t > 1 || u < 0 || u > 1) {\n return null;\n }\n return { x: s1.x1 + t * r_x, y: s1.y1 + t * r_y };\n}\n","/**\n * Grid Module Runtime Evaluators\n *\n * Runtime implementations for grid/* operators.\n * Cell = {x,y} integers. Point = {x,y}. Cell arrays are emitted in the\n * exact deterministic order specified (parity depends on it).\n *\n * @packageDocumentation\n */\n\nimport type { SExpr } from '../types/expression.js';\nimport type { EvaluationContext } from '../context.js';\n\ntype EvalFn = (expr: SExpr, ctx: EvaluationContext) => unknown;\n\ninterface Cell {\n x: number;\n y: number;\n}\n\nfunction num(o: Record<string, unknown>, k: string): number {\n return typeof o[k] === 'number' ? (o[k] as number) : 0;\n}\n\nfunction asCell(v: unknown): Cell {\n const o = (v ?? {}) as Record<string, unknown>;\n return { x: num(o, 'x'), y: num(o, 'y') };\n}\n\n/**\n * grid/to-world - cell center: {x:(cell.x+0.5)*cellSize, y:(cell.y+0.5)*cellSize}\n */\nexport function evalGridToWorld(args: SExpr[], evaluate: EvalFn, ctx: EvaluationContext): Cell {\n const cell = asCell(evaluate(args[0], ctx));\n const cellSize = evaluate(args[1], ctx) as number;\n return { x: (cell.x + 0.5) * cellSize, y: (cell.y + 0.5) * cellSize };\n}\n\n/**\n * grid/from-world - {x:floor(point.x/cellSize), y:floor(point.y/cellSize)}\n */\nexport function evalGridFromWorld(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): Cell {\n const point = asCell(evaluate(args[0], ctx));\n const cellSize = evaluate(args[1], ctx) as number;\n return { x: Math.floor(point.x / cellSize), y: Math.floor(point.y / cellSize) };\n}\n\n/**\n * grid/iso-to-screen - {x:(cell.x-cell.y)*tileW/2, y:(cell.x+cell.y)*tileH/2}\n */\nexport function evalGridIsoToScreen(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): Cell {\n const cell = asCell(evaluate(args[0], ctx));\n const tileW = evaluate(args[1], ctx) as number;\n const tileH = evaluate(args[2], ctx) as number;\n return { x: ((cell.x - cell.y) * tileW) / 2, y: ((cell.x + cell.y) * tileH) / 2 };\n}\n\n/**\n * grid/screen-to-iso - inverse iso projection\n */\nexport function evalGridScreenToIso(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): Cell {\n const point = asCell(evaluate(args[0], ctx));\n const tileW = evaluate(args[1], ctx) as number;\n const tileH = evaluate(args[2], ctx) as number;\n const halfW = tileW / 2;\n const halfH = tileH / 2;\n return {\n x: (point.x / halfW + point.y / halfH) / 2,\n y: (point.y / halfH - point.x / halfW) / 2,\n };\n}\n\n/**\n * grid/distance - Chebyshev: max(|dx|,|dy|)\n */\nexport function evalGridDistance(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const a = asCell(evaluate(args[0], ctx));\n const b = asCell(evaluate(args[1], ctx));\n return Math.max(Math.abs(a.x - b.x), Math.abs(a.y - b.y));\n}\n\n/**\n * grid/manhattan-distance - |dx| + |dy|\n */\nexport function evalGridManhattanDistance(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const a = asCell(evaluate(args[0], ctx));\n const b = asCell(evaluate(args[1], ctx));\n return Math.abs(a.x - b.x) + Math.abs(a.y - b.y);\n}\n\n/**\n * grid/neighbors - 4-neighborhood N,E,S,W; if diagonal append NE,SE,SW,NW\n */\nexport function evalGridNeighbors(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): Cell[] {\n const cell = asCell(evaluate(args[0], ctx));\n const diagonal = args.length > 1 ? Boolean(evaluate(args[1], ctx)) : false;\n const result: Cell[] = [\n { x: cell.x, y: cell.y - 1 }, // N\n { x: cell.x + 1, y: cell.y }, // E\n { x: cell.x, y: cell.y + 1 }, // S\n { x: cell.x - 1, y: cell.y }, // W\n ];\n if (diagonal) {\n result.push(\n { x: cell.x + 1, y: cell.y - 1 }, // NE\n { x: cell.x + 1, y: cell.y + 1 }, // SE\n { x: cell.x - 1, y: cell.y + 1 }, // SW\n { x: cell.x - 1, y: cell.y - 1 } // NW\n );\n }\n return result;\n}\n\n/**\n * grid/cells-in-radius - all cells with dx²+dy² <= r², row-major (y outer, x inner)\n */\nexport function evalGridCellsInRadius(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): Cell[] {\n const cell = asCell(evaluate(args[0], ctx));\n const r = evaluate(args[1], ctx) as number;\n const rf = Math.floor(r);\n const r2 = r * r;\n const result: Cell[] = [];\n for (let dy = -rf; dy <= rf; dy++) {\n for (let dx = -rf; dx <= rf; dx++) {\n if (dx * dx + dy * dy <= r2) {\n result.push({ x: cell.x + dx, y: cell.y + dy });\n }\n }\n }\n return result;\n}\n\n/**\n * grid/line - Bresenham, inclusive a..b, in step order → array of {x,y}\n */\nexport function evalGridLine(args: SExpr[], evaluate: EvalFn, ctx: EvaluationContext): Cell[] {\n const a = asCell(evaluate(args[0], ctx));\n const b = asCell(evaluate(args[1], ctx));\n let x0 = a.x,\n y0 = a.y;\n const x1 = b.x,\n y1 = b.y;\n const dx = Math.abs(x1 - x0);\n const dy = Math.abs(y1 - y0);\n const sx = x0 < x1 ? 1 : -1;\n const sy = y0 < y1 ? 1 : -1;\n let err = dx - dy;\n const result: Cell[] = [];\n for (;;) {\n result.push({ x: x0, y: y0 });\n if (x0 === x1 && y0 === y1) {\n break;\n }\n const e2 = 2 * err;\n if (e2 > -dy) {\n err -= dy;\n x0 += sx;\n }\n if (e2 < dx) {\n err += dx;\n y0 += sy;\n }\n }\n return result;\n}\n\n/**\n * grid/in-bounds - cell.x>=0 && cell.x<w && cell.y>=0 && cell.y<h → bool\n */\nexport function evalGridInBounds(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): boolean {\n const cell = asCell(evaluate(args[0], ctx));\n const w = evaluate(args[1], ctx) as number;\n const h = evaluate(args[2], ctx) as number;\n return cell.x >= 0 && cell.x < w && cell.y >= 0 && cell.y < h;\n}\n","/**\n * Animation Module Runtime Evaluators\n *\n * Runtime implementations for anim/* operators.\n *\n * @packageDocumentation\n */\n\nimport type { SExpr } from '../types/expression.js';\nimport type { EvaluationContext } from '../context.js';\n\ntype EvalFn = (expr: SExpr, ctx: EvaluationContext) => unknown;\n\n/**\n * anim/frame-at - select frame index for elapsed time\n * i = floor(elapsed/frameDur); loop default true → i % frameCount;\n * else min(i, frameCount-1)\n */\nexport function evalAnimFrameAt(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const elapsed = evaluate(args[0], ctx) as number;\n const frameDur = evaluate(args[1], ctx) as number;\n const frameCount = evaluate(args[2], ctx) as number;\n const loop = args.length > 3 ? Boolean(evaluate(args[3], ctx)) : true;\n if (frameCount <= 0) {\n return 0;\n }\n const i = Math.floor(elapsed / frameDur);\n if (loop) {\n return ((i % frameCount) + frameCount) % frameCount;\n }\n return Math.min(i, frameCount - 1);\n}\n\n/**\n * anim/sheet-rect - sprite-sheet source rect for a frame index\n * {sx:(frameIndex%cols)*frameW, sy:floor(frameIndex/cols)*frameH, sw:frameW, sh:frameH}\n */\nexport function evalAnimSheetRect(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): { sx: number; sy: number; sw: number; sh: number } {\n const frameIndex = evaluate(args[0], ctx) as number;\n const cols = evaluate(args[1], ctx) as number;\n const frameW = evaluate(args[2], ctx) as number;\n const frameH = evaluate(args[3], ctx) as number;\n return {\n sx: (frameIndex % cols) * frameW,\n sy: Math.floor(frameIndex / cols) * frameH,\n sw: frameW,\n sh: frameH,\n };\n}\n\n/**\n * anim/direction-from-delta - cardinal/diagonal facing from a movement delta.\n * ways default 4. angle = atan2(dy,dx) in (-PI,PI]. Buckets are chosen by the\n * nearest 1/ways slice of the circle (sector width = 2PI/ways), centered on the\n * axis directions, so the result is symmetric and identical across languages.\n * Screen coords (y grows downward): +dy → \"down\", -dy → \"up\".\n */\nexport function evalAnimDirectionFromDelta(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): string {\n const dx = evaluate(args[0], ctx) as number;\n const dy = evaluate(args[1], ctx) as number;\n const ways = args.length > 2 ? (evaluate(args[2], ctx) as number) : 4;\n const angle = Math.atan2(dy, dx); // (-PI, PI]\n const twoPi = Math.PI * 2;\n if (ways === 8) {\n // 8 sectors of PI/4; sector 0 centered on +x (\"right\"), increasing CCW\n // in math but +y is screen-down so we keep atan2(dy,dx) directly.\n const sector = Math.round(angle / (Math.PI / 4));\n const idx = ((sector % 8) + 8) % 8;\n const dirs8 = [\n 'right',\n 'down-right',\n 'down',\n 'down-left',\n 'left',\n 'up-left',\n 'up',\n 'up-right',\n ];\n return dirs8[idx];\n }\n // 4-way: nearest axis, sectors of PI/2 centered on right/down/left/up\n const sector = Math.round(angle / (Math.PI / 2));\n const idx = ((sector % 4) + 4) % 4;\n const dirs4 = ['right', 'down', 'left', 'up'];\n return dirs4[idx];\n}\n","/**\n * Easing Module Runtime Evaluators\n *\n * Runtime implementations for ease/* operators.\n * All formulas are pinned (standard Penner) and must match the Rust impl\n * byte-for-byte. Unknown curve → linear.\n *\n * @packageDocumentation\n */\n\nimport type { SExpr } from '../types/expression.js';\nimport type { EvaluationContext } from '../context.js';\n\ntype EvalFn = (expr: SExpr, ctx: EvaluationContext) => unknown;\n\nfunction clamp01(t: number): number {\n return Math.min(Math.max(t, 0), 1);\n}\n\nfunction applyCurve(curve: string, tRaw: number): number {\n const t = clamp01(tRaw);\n switch (curve) {\n case 'in-quad':\n return t * t;\n case 'out-quad':\n return t * (2 - t);\n case 'in-out-quad':\n return t < 0.5 ? 2 * t * t : -1 + (4 - 2 * t) * t;\n case 'in-cubic':\n return t * t * t;\n case 'out-cubic': {\n const u = t - 1;\n return u * u * u + 1;\n }\n case 'in-out-cubic':\n return t < 0.5\n ? 4 * t * t * t\n : (t - 1) * (2 * t - 2) * (2 * t - 2) + 1;\n case 'elastic-out': {\n if (t === 0) {\n return 0;\n }\n if (t === 1) {\n return 1;\n }\n const c4 = (2 * Math.PI) / 3;\n return Math.pow(2, -10 * t) * Math.sin((t * 10 - 0.75) * c4) + 1;\n }\n case 'bounce-out': {\n const n1 = 7.5625;\n const d1 = 2.75;\n let u = t;\n if (u < 1 / d1) {\n return n1 * u * u;\n } else if (u < 2 / d1) {\n u -= 1.5 / d1;\n return n1 * u * u + 0.75;\n } else if (u < 2.5 / d1) {\n u -= 2.25 / d1;\n return n1 * u * u + 0.9375;\n } else {\n u -= 2.625 / d1;\n return n1 * u * u + 0.984375;\n }\n }\n case 'linear':\n default:\n return t;\n }\n}\n\n/**\n * ease/apply - apply a named easing curve to t∈[0,1] (clamped)\n */\nexport function evalEaseApply(args: SExpr[], evaluate: EvalFn, ctx: EvaluationContext): number {\n const curve = evaluate(args[0], ctx) as string;\n const t = evaluate(args[1], ctx) as number;\n return applyCurve(curve, t);\n}\n\n/**\n * ease/smoothstep - t=clamp((x-edge0)/(edge1-edge0),0,1); t*t*(3-2*t)\n */\nexport function evalEaseSmoothstep(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const edge0 = evaluate(args[0], ctx) as number;\n const edge1 = evaluate(args[1], ctx) as number;\n const x = evaluate(args[2], ctx) as number;\n if (edge0 === edge1) {\n return 0;\n }\n const t = clamp01((x - edge0) / (edge1 - edge0));\n return t * t * (3 - 2 * t);\n}\n","/**\n * Noise Module Runtime Evaluators\n *\n * Runtime implementations for noise/* operators (perlin, simplex, fbm).\n * Output range [-1, 1]. Pure + deterministic; byte-identical with the Rust impl.\n *\n * @packageDocumentation\n */\n\nimport type { SExpr } from '../types/expression.js';\nimport type { EvaluationContext } from '../context.js';\n\ntype EvalFn = (expr: SExpr, ctx: EvaluationContext) => unknown;\n\n// Permutation table — copied VERBATIM and shared with the Rust impl for parity.\nconst PERM: number[] = [\n 151, 160, 137, 91, 90, 15, 131, 13, 201, 95, 96, 53, 194, 233, 7, 225, 140, 36,\n 103, 30, 69, 142, 8, 99, 37, 240, 21, 10, 23, 190, 6, 148, 247, 120, 234, 75, 0,\n 26, 197, 62, 94, 252, 219, 203, 117, 35, 11, 32, 57, 177, 33, 88, 237, 149, 56,\n 87, 174, 20, 125, 136, 171, 168, 68, 175, 74, 165, 71, 134, 139, 48, 27, 166, 77,\n 146, 158, 231, 83, 111, 229, 122, 60, 211, 133, 230, 220, 105, 92, 41, 55, 46,\n 245, 40, 244, 102, 143, 54, 65, 25, 63, 161, 1, 216, 80, 73, 209, 76, 132, 187,\n 208, 89, 18, 169, 200, 196, 135, 130, 116, 188, 159, 86, 164, 100, 109, 198, 173,\n 186, 3, 64, 52, 217, 226, 250, 124, 123, 5, 202, 38, 147, 118, 126, 255, 82, 85,\n 212, 207, 206, 59, 227, 47, 16, 58, 17, 182, 189, 28, 42, 223, 183, 170, 213, 119,\n 248, 152, 2, 44, 154, 163, 70, 221, 153, 101, 155, 167, 43, 172, 9, 129, 22, 39,\n 253, 19, 98, 108, 110, 79, 113, 224, 232, 178, 185, 112, 104, 218, 246, 97, 228,\n 251, 34, 242, 193, 238, 210, 144, 12, 191, 179, 162, 241, 81, 51, 145, 235, 249,\n 14, 239, 107, 49, 192, 214, 31, 181, 199, 106, 157, 184, 84, 204, 176, 115, 121,\n 50, 45, 127, 4, 150, 254, 138, 236, 205, 93, 222, 114, 67, 29, 24, 72, 243, 141,\n 128, 195, 78, 66, 215, 61, 156, 180,\n];\n\nfunction p(i: number): number {\n return PERM[i & 255];\n}\n\nfunction fade(t: number): number {\n return t * t * t * (t * (t * 6.0 - 15.0) + 10.0);\n}\n\nfunction lerp(a: number, b: number, t: number): number {\n return a + t * (b - a);\n}\n\nfunction grad2(hash: number, x: number, y: number): number {\n const h = hash & 7;\n const u = h < 4 ? x : y;\n const v = h < 4 ? y : x;\n return ((h & 1) === 0 ? u : -u) + ((h & 2) === 0 ? v : -v);\n}\n\nfunction perlin(x: number, y: number, seed: number): number {\n const s = Math.floor(seed) & 255;\n const X = (Math.floor(x) + s) & 255;\n const Y = (Math.floor(y) + s) & 255;\n const xf = x - Math.floor(x);\n const yf = y - Math.floor(y);\n const u = fade(xf);\n const v = fade(yf);\n const aa = p(p(X) + Y);\n const ab = p(p(X) + Y + 1);\n const ba = p(p(X + 1) + Y);\n const bb = p(p(X + 1) + Y + 1);\n const x1 = lerp(grad2(aa, xf, yf), grad2(ba, xf - 1.0, yf), u);\n const x2 = lerp(grad2(ab, xf, yf - 1.0), grad2(bb, xf - 1.0, yf - 1.0), u);\n return lerp(x1, x2, v);\n}\n\nfunction simplex(x: number, y: number, seed: number): number {\n return (\n (perlin(x, y, seed) +\n perlin(x * 2 + 5.2, y * 2 + 1.3, seed) * 0.5 +\n perlin(x * 4 + 9.1, y * 4 + 7.7, seed) * 0.25) /\n 1.75\n );\n}\n\nfunction fbm(x: number, y: number, octaves: number, seed: number): number {\n let n = Math.floor(octaves);\n if (n < 1) n = 1;\n if (n > 8) n = 8;\n let total = 0;\n let freq = 1;\n let amp = 1;\n let max = 0;\n for (let i = 0; i < n; i++) {\n total += perlin(x * freq, y * freq, seed) * amp;\n max += amp;\n freq *= 2.0;\n amp *= 0.5;\n }\n return total / max;\n}\n\n/**\n * noise/perlin - 2D Perlin noise (x, y?, seed?) → number [-1,1]\n */\nexport function evalNoisePerlin(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const x = evaluate(args[0], ctx) as number;\n const y = args.length > 1 ? (evaluate(args[1], ctx) as number) : 0;\n const seed = args.length > 2 ? (evaluate(args[2], ctx) as number) : 0;\n return perlin(x, y, seed);\n}\n\n/**\n * noise/simplex - value-coherent noise (perlin-derived) (x, y, seed?) → number [-1,1]\n */\nexport function evalNoiseSimplex(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const x = evaluate(args[0], ctx) as number;\n const y = evaluate(args[1], ctx) as number;\n const seed = args.length > 2 ? (evaluate(args[2], ctx) as number) : 0;\n return simplex(x, y, seed);\n}\n\n/**\n * noise/fbm - fractal Brownian motion (x, y, octaves, seed?) → number [-1,1]\n */\nexport function evalNoiseFbm(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): number {\n const x = evaluate(args[0], ctx) as number;\n const y = evaluate(args[1], ctx) as number;\n const octaves = evaluate(args[2], ctx) as number;\n const seed = args.length > 3 ? (evaluate(args[3], ctx) as number) : 0;\n return fbm(x, y, octaves, seed);\n}\n","/**\n * Path Module Runtime Evaluators\n *\n * Runtime implementations for path/* operators (astar, reachable).\n * Grid cells are plain {x,y} integer objects. Deterministic tie-break for parity.\n *\n * @packageDocumentation\n */\n\nimport type { SExpr } from '../types/expression.js';\nimport type { EvaluationContext } from '../context.js';\n\ntype EvalFn = (expr: SExpr, ctx: EvaluationContext) => unknown;\n\ninterface Cell {\n x: number;\n y: number;\n}\n\nfunction asCell(v: unknown): Cell {\n const o = (v ?? {}) as Record<string, unknown>;\n const x = typeof o.x === 'number' ? o.x : 0;\n const y = typeof o.y === 'number' ? o.y : 0;\n return { x, y };\n}\n\nfunction key(x: number, y: number): string {\n return `${x},${y}`;\n}\n\n// 4-dir N,E,S,W; diagonal appends NE,SE,SW,NW.\nconst DIRS4: ReadonlyArray<readonly [number, number]> = [\n [0, -1],\n [1, 0],\n [0, 1],\n [-1, 0],\n];\nconst DIRS_DIAG: ReadonlyArray<readonly [number, number]> = [\n [1, -1],\n [1, 1],\n [-1, 1],\n [-1, -1],\n];\n\nfunction neighbors(diagonal: boolean): ReadonlyArray<readonly [number, number]> {\n return diagonal ? [...DIRS4, ...DIRS_DIAG] : DIRS4;\n}\n\nfunction blockedSet(blocked: unknown[]): Set<string> {\n const set = new Set<string>();\n for (const b of blocked) {\n const c = asCell(b);\n set.add(key(c.x, c.y));\n }\n return set;\n}\n\n/**\n * path/astar - A* shortest path (start, goal, blocked, w, h, diagonal?) → [{x,y}] | []\n */\nexport function evalPathAstar(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): Cell[] {\n const start = asCell(evaluate(args[0], ctx));\n const goal = asCell(evaluate(args[1], ctx));\n const blockedArr = (evaluate(args[2], ctx) as unknown[]) ?? [];\n const w = evaluate(args[3], ctx) as number;\n const h = evaluate(args[4], ctx) as number;\n const diagonal = args.length > 5 ? Boolean(evaluate(args[5], ctx)) : false;\n\n const blocked = blockedSet(blockedArr);\n const dirs = neighbors(diagonal);\n\n const heuristic = (x: number, y: number): number => {\n const dx = Math.abs(x - goal.x);\n const dy = Math.abs(y - goal.y);\n return diagonal ? Math.max(dx, dy) : dx + dy;\n };\n\n const startKey = key(start.x, start.y);\n const goalKey = key(goal.x, goal.y);\n\n if (\n start.x < 0 ||\n start.x >= w ||\n start.y < 0 ||\n start.y >= h ||\n goal.x < 0 ||\n goal.x >= w ||\n goal.y < 0 ||\n goal.y >= h ||\n blocked.has(startKey) ||\n blocked.has(goalKey)\n ) {\n return [];\n }\n\n interface OpenNode {\n x: number;\n y: number;\n g: number;\n h: number;\n f: number;\n order: number;\n }\n\n const open: OpenNode[] = [];\n const gScore = new Map<string, number>();\n const cameFrom = new Map<string, string>();\n let counter = 0;\n\n gScore.set(startKey, 0);\n open.push({\n x: start.x,\n y: start.y,\n g: 0,\n h: heuristic(start.x, start.y),\n f: heuristic(start.x, start.y),\n order: counter++,\n });\n\n while (open.length > 0) {\n // Linear scan for min: lower f, then lower h, then earliest insertion order.\n let bestIdx = 0;\n for (let i = 1; i < open.length; i++) {\n const a = open[i];\n const b = open[bestIdx];\n if (\n a.f < b.f ||\n (a.f === b.f && a.h < b.h) ||\n (a.f === b.f && a.h === b.h && a.order < b.order)\n ) {\n bestIdx = i;\n }\n }\n const current = open[bestIdx];\n open.splice(bestIdx, 1);\n\n const curKey = key(current.x, current.y);\n\n if (curKey === goalKey) {\n const path: Cell[] = [];\n let k: string | undefined = curKey;\n while (k !== undefined) {\n const parts = k.split(',');\n path.push({ x: Number(parts[0]), y: Number(parts[1]) });\n k = cameFrom.get(k);\n }\n path.reverse();\n return path;\n }\n\n // Stale entry: a better g was already finalized.\n const recordedG = gScore.get(curKey);\n if (recordedG !== undefined && current.g > recordedG) {\n continue;\n }\n\n for (const [dx, dy] of dirs) {\n const nx = current.x + dx;\n const ny = current.y + dy;\n if (nx < 0 || nx >= w || ny < 0 || ny >= h) {\n continue;\n }\n const nKey = key(nx, ny);\n if (blocked.has(nKey)) {\n continue;\n }\n const tentativeG = current.g + 1;\n const existingG = gScore.get(nKey);\n if (existingG === undefined || tentativeG < existingG) {\n gScore.set(nKey, tentativeG);\n cameFrom.set(nKey, curKey);\n const nh = heuristic(nx, ny);\n open.push({\n x: nx,\n y: ny,\n g: tentativeG,\n h: nh,\n f: tentativeG + nh,\n order: counter++,\n });\n }\n }\n }\n\n return [];\n}\n\n/**\n * path/reachable - cells reachable within steps moves (BFS), row-major sorted\n * (start, steps, blocked, w, h, diagonal?) → [{x,y}]\n */\nexport function evalPathReachable(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): Cell[] {\n const start = asCell(evaluate(args[0], ctx));\n const steps = Math.floor(evaluate(args[1], ctx) as number);\n const blockedArr = (evaluate(args[2], ctx) as unknown[]) ?? [];\n const w = evaluate(args[3], ctx) as number;\n const h = evaluate(args[4], ctx) as number;\n const diagonal = args.length > 5 ? Boolean(evaluate(args[5], ctx)) : false;\n\n const blocked = blockedSet(blockedArr);\n const dirs = neighbors(diagonal);\n\n const startKey = key(start.x, start.y);\n const visited = new Set<string>();\n\n if (\n start.x < 0 ||\n start.x >= w ||\n start.y < 0 ||\n start.y >= h ||\n blocked.has(startKey)\n ) {\n return [];\n }\n\n visited.add(startKey);\n let frontier: Cell[] = [{ x: start.x, y: start.y }];\n for (let depth = 0; depth < steps; depth++) {\n const next: Cell[] = [];\n for (const cell of frontier) {\n for (const [dx, dy] of dirs) {\n const nx = cell.x + dx;\n const ny = cell.y + dy;\n if (nx < 0 || nx >= w || ny < 0 || ny >= h) {\n continue;\n }\n const nKey = key(nx, ny);\n if (blocked.has(nKey) || visited.has(nKey)) {\n continue;\n }\n visited.add(nKey);\n next.push({ x: nx, y: ny });\n }\n }\n frontier = next;\n }\n\n const result: Cell[] = [];\n for (const k of visited) {\n const parts = k.split(',');\n result.push({ x: Number(parts[0]), y: Number(parts[1]) });\n }\n result.sort((a, b) => (a.y !== b.y ? a.y - b.y : a.x - b.x));\n return result;\n}\n","/**\n * S-Expression Evaluator\n *\n * Runtime interpreter for S-expressions.\n * Used for evaluating guards and executing effects in the preview system.\n *\n * @packageDocumentation\n */\n\nimport type { SExpr } from './types/expression.js';\nimport { assertOperatorArity } from '@almadar/std/registry';\nimport { isSExpr, isBinding, getOperator, getArgs } from './types/expression.js';\nimport type { EvaluationContext } from './context.js';\nimport { resolveBinding } from './context.js';\n\n// Import operators\nimport {\n evalAdd,\n evalSubtract,\n evalMultiply,\n evalDivide,\n evalModulo,\n evalAbs,\n evalMin,\n evalMax,\n evalFloor,\n evalCeil,\n evalRound,\n evalClamp,\n evalEqual,\n evalNotEqual,\n evalLessThan,\n evalGreaterThan,\n evalLessThanOrEqual,\n evalGreaterThanOrEqual,\n evalMatches,\n evalAnd,\n evalOr,\n evalNot,\n evalIf,\n evalLet,\n evalDo,\n evalWhen,\n evalFn,\n evalMap,\n evalFilter,\n evalFind,\n evalCount,\n evalSum,\n evalFirst,\n evalLast,\n evalNth,\n evalConcat,\n evalIncludes,\n evalEmpty,\n evalList,\n evalSet,\n evalSetDynamic,\n evalIncrement,\n evalDecrement,\n evalEmit,\n evalPersist,\n evalNavigate,\n evalNotify,\n evalSpawn,\n evalDespawn,\n evalCallService,\n evalRenderUI,\n evalRef,\n evalDeref,\n evalSwap,\n evalWatch,\n evalAtomic,\n} from './operators/index.js';\n\n// Import std library evaluators\nimport * as stdMath from './std/math.js';\nimport * as stdStr from './std/str.js';\nimport * as stdArray from './std/array.js';\nimport * as stdObject from './std/object.js';\nimport * as stdValidate from './std/validate.js';\nimport * as stdTime from './std/time.js';\nimport * as stdFormat from './std/format.js';\nimport * as stdAsync from './std/async.js';\nimport * as stdProb from './std/prob.js';\nimport * as stdOs from './std/os.js';\nimport * as stdLlm from './std/llm.js';\nimport * as stdWorkspace from './std/workspace.js';\nimport * as stdSession from './std/session.js';\nimport * as stdMemory from './std/memory.js';\nimport * as stdTrace from './std/trace.js';\nimport * as stdIntegration from './std/integration.js';\nimport * as stdVec from './std/vector.js';\nimport * as stdGeo from './std/geo.js';\nimport * as stdGrid from './std/grid.js';\nimport * as stdAnim from './std/anim.js';\nimport * as stdEase from './std/ease.js';\nimport * as stdNoise from './std/noise.js';\nimport * as stdPath from './std/path.js';\n\n/**\n * JIT compilation cache for hot paths.\n * Maps S-expression JSON to compiled function.\n */\nconst jitCache = new Map<string, (ctx: EvaluationContext) => unknown>();\n\n/**\n * Maximum JIT cache size to prevent memory issues.\n */\nconst MAX_JIT_CACHE_SIZE = 1000;\n\n/**\n * Sentinel returned by dispatchOperator when the head is not a registered\n * operator — the caller then treats the array as literal data.\n */\nconst UNKNOWN_OPERATOR = Symbol('unknown-operator');\n\n/**\n * S-Expression Evaluator class.\n *\n * Provides runtime interpretation of S-expressions for guards, effects, and computed values.\n */\nexport class SExpressionEvaluator {\n /**\n * Evaluate an S-expression in the given context.\n *\n * @param expr - S-expression to evaluate\n * @param ctx - Evaluation context with bindings and effect handlers\n * @returns Result of evaluation\n */\n evaluate(expr: SExpr, ctx: EvaluationContext): unknown {\n // Atom: literal value\n if (!isSExpr(expr)) {\n // Check if it's a binding\n if (isBinding(expr)) {\n return resolveBinding(expr, ctx);\n }\n // Plain object literal — recursively evaluate each property so that\n // SExpression values inside `{ key: (op ...), ... }` get reduced to\n // their concrete results. This is the canonical lambda-body shape\n // for `array/map` returning records (e.g. std-stats's metric→card\n // lambda whose body is `{ label: (object/get ...), value: (if ...) }`).\n // Without this, the evaluator returns the raw SExpression and the\n // UI renders the lolo source as text.\n if (this.isPlainObject(expr)) {\n const out: Record<string, unknown> = {};\n for (const [k, v] of Object.entries(expr as Record<string, unknown>)) {\n out[k] = this.evaluate(v as SExpr, ctx);\n }\n return out;\n }\n // Literal array (non-call — first element is not a string operator):\n // evaluate each element so SExpressions nested inside `[ {…}, … ]`\n // reduce to concrete values. Parity with orbital-core `eval_expr`\n // (\"Literal array - evaluate all elements\"); without it, values\n // fetched later via `object/get` out of a concatenated literal row\n // surface as raw lolo source (e.g. a unit's position/asset reaching\n // the canvas as unevaluated expressions).\n if (Array.isArray(expr)) {\n return expr.map((item) => this.evaluate(item as SExpr, ctx));\n }\n // Return literal value\n return expr;\n }\n\n // S-expression call\n const op = getOperator(expr)!;\n const args = getArgs(expr);\n\n // Dispatch to operator implementation. An unregistered head means the\n // array is DATA, not a call form (e.g. `animations: [\"static\"]` inlined\n // from an asset manifest): reduce its elements verbatim instead of\n // warning \"Unknown operator\" per evaluation (~17k/s on large grids) and\n // dropping the array from the evaluated copy.\n const result = this.dispatchOperator(op, args, ctx);\n if (result === UNKNOWN_OPERATOR) {\n return expr.map((item) => this.evaluate(item as SExpr, ctx));\n }\n return result;\n }\n\n private isPlainObject(value: unknown): value is Record<string, unknown> {\n return (\n typeof value === 'object' &&\n value !== null &&\n !Array.isArray(value) &&\n !(value instanceof Date) &&\n Object.getPrototypeOf(value) === Object.prototype\n );\n }\n\n /**\n * Evaluate an S-expression as a guard (returns boolean).\n *\n * @param expr - S-expression guard\n * @param ctx - Evaluation context\n * @returns true if guard passes, false otherwise\n */\n evaluateGuard(expr: SExpr, ctx: EvaluationContext): boolean {\n const result = this.evaluate(expr, ctx);\n return Boolean(result);\n }\n\n /**\n * Execute an effect S-expression.\n *\n * @param expr - Effect S-expression (e.g., [\"set\", \"@entity.x\", 10])\n * @param ctx - Evaluation context with effect handlers\n */\n executeEffect(expr: SExpr, ctx: EvaluationContext): void {\n this.evaluate(expr, ctx);\n }\n\n /**\n * Execute multiple effects in sequence.\n *\n * @param effects - Array of effect S-expressions\n * @param ctx - Evaluation context with effect handlers\n */\n executeEffects(effects: SExpr[], ctx: EvaluationContext): void {\n for (const effect of effects) {\n this.executeEffect(effect, ctx);\n }\n }\n\n /**\n * Compile an S-expression to a function for faster repeated evaluation.\n * Uses a cache to avoid recompilation.\n *\n * @param expr - S-expression to compile\n * @returns Function that evaluates the expression given a context\n */\n compile(expr: SExpr): (ctx: EvaluationContext) => unknown {\n const key = JSON.stringify(expr);\n\n // Check cache\n const cached = jitCache.get(key);\n if (cached) {\n return cached;\n }\n\n // Compile to function\n const fn = (ctx: EvaluationContext) => this.evaluate(expr, ctx);\n\n // Add to cache (with size limit)\n if (jitCache.size >= MAX_JIT_CACHE_SIZE) {\n // Remove oldest entry (first key)\n const firstKey = jitCache.keys().next().value;\n if (firstKey) {\n jitCache.delete(firstKey);\n }\n }\n jitCache.set(key, fn);\n\n return fn;\n }\n\n /**\n * Clear the JIT compilation cache.\n */\n clearCache(): void {\n jitCache.clear();\n }\n\n /**\n * Dispatch to the appropriate operator implementation.\n */\n private dispatchOperator(op: string, args: SExpr[], ctx: EvaluationContext): unknown {\n // Parity with the compiled path's `resolve_sexpr_call`: a registered\n // operator applied outside its canonical arity bounds throws instead of\n // silently truncating/wrapping (R-EVALUATOR-NO-ARITY-CHECK). Unregistered\n // heads fall through to the data-array handling unchanged.\n assertOperatorArity(op, args.length);\n\n // Bind evaluate method for passing to operator implementations\n const evaluate = (expr: SExpr, c: EvaluationContext) => this.evaluate(expr, c);\n\n switch (op) {\n // Arithmetic\n case '+':\n return evalAdd(args, evaluate, ctx);\n case '-':\n return evalSubtract(args, evaluate, ctx);\n case '*':\n return evalMultiply(args, evaluate, ctx);\n case '/':\n return evalDivide(args, evaluate, ctx);\n case '%':\n return evalModulo(args, evaluate, ctx);\n case 'abs':\n return evalAbs(args, evaluate, ctx);\n case 'min':\n return evalMin(args, evaluate, ctx);\n case 'max':\n return evalMax(args, evaluate, ctx);\n case 'floor':\n return evalFloor(args, evaluate, ctx);\n case 'ceil':\n return evalCeil(args, evaluate, ctx);\n case 'round':\n return evalRound(args, evaluate, ctx);\n case 'clamp':\n return evalClamp(args, evaluate, ctx);\n\n // Comparison\n case '=':\n case '==':\n return evalEqual(args, evaluate, ctx);\n case '!=':\n return evalNotEqual(args, evaluate, ctx);\n case '<':\n return evalLessThan(args, evaluate, ctx);\n case '>':\n return evalGreaterThan(args, evaluate, ctx);\n case '<=':\n return evalLessThanOrEqual(args, evaluate, ctx);\n case '>=':\n return evalGreaterThanOrEqual(args, evaluate, ctx);\n case 'matches':\n return evalMatches(args, evaluate, ctx);\n\n // Logic\n case 'and':\n return evalAnd(args, evaluate, ctx);\n case 'or':\n return evalOr(args, evaluate, ctx);\n case 'not':\n return evalNot(args, evaluate, ctx);\n case 'if':\n return evalIf(args, evaluate, ctx);\n\n // Control\n case 'let':\n return evalLet(args, evaluate, ctx);\n case 'do':\n return evalDo(args, evaluate, ctx);\n case 'when':\n return evalWhen(args, evaluate, ctx);\n case 'fn':\n case 'lambda':\n return evalFn(args, evaluate, ctx);\n\n // Collections\n case 'map':\n return evalMap(args, evaluate, ctx);\n case 'filter':\n return evalFilter(args, evaluate, ctx);\n case 'find':\n return evalFind(args, evaluate, ctx);\n case 'count':\n return evalCount(args, evaluate, ctx);\n case 'sum':\n return evalSum(args, evaluate, ctx);\n case 'first':\n return evalFirst(args, evaluate, ctx);\n case 'last':\n return evalLast(args, evaluate, ctx);\n case 'nth':\n return evalNth(args, evaluate, ctx);\n case 'concat':\n return evalConcat(args, evaluate, ctx);\n case 'includes':\n return evalIncludes(args, evaluate, ctx);\n case 'empty':\n return evalEmpty(args, evaluate, ctx);\n case 'list':\n return evalList(args, evaluate, ctx);\n\n // Effects\n case 'set':\n evalSet(args, evaluate, ctx);\n return undefined;\n case 'set-dynamic':\n evalSetDynamic(args, evaluate, ctx);\n return undefined;\n case 'increment':\n evalIncrement(args, evaluate, ctx);\n return undefined;\n case 'decrement':\n evalDecrement(args, evaluate, ctx);\n return undefined;\n case 'emit':\n evalEmit(args, evaluate, ctx);\n return undefined;\n case 'persist':\n evalPersist(args, evaluate, ctx);\n return undefined;\n case 'navigate':\n evalNavigate(args, evaluate, ctx);\n return undefined;\n case 'notify':\n evalNotify(args, evaluate, ctx);\n return undefined;\n case 'spawn':\n evalSpawn(args, evaluate, ctx);\n return undefined;\n case 'despawn':\n evalDespawn(args, evaluate, ctx);\n return undefined;\n case 'call-service':\n evalCallService(args, evaluate, ctx);\n return undefined;\n case 'render-ui':\n evalRenderUI(args, evaluate, ctx);\n return undefined;\n\n // Resource operators\n case 'ref':\n return evalRef(args, evaluate, ctx);\n case 'deref':\n return evalDeref(args, evaluate, ctx);\n case 'swap!':\n return evalSwap(args, evaluate, ctx);\n case 'watch':\n evalWatch(args, evaluate, ctx);\n return undefined;\n case 'atomic':\n return evalAtomic(args, evaluate, ctx);\n\n // ===============================\n // Standard Library: math/*\n // ===============================\n case 'math/abs':\n return stdMath.evalMathAbs(args, evaluate, ctx);\n case 'math/min':\n return stdMath.evalMathMin(args, evaluate, ctx);\n case 'math/max':\n return stdMath.evalMathMax(args, evaluate, ctx);\n case 'math/clamp':\n return stdMath.evalMathClamp(args, evaluate, ctx);\n case 'math/floor':\n return stdMath.evalMathFloor(args, evaluate, ctx);\n case 'math/ceil':\n return stdMath.evalMathCeil(args, evaluate, ctx);\n case 'math/round':\n return stdMath.evalMathRound(args, evaluate, ctx);\n case 'math/pow':\n return stdMath.evalMathPow(args, evaluate, ctx);\n case 'math/sqrt':\n return stdMath.evalMathSqrt(args, evaluate, ctx);\n case 'math/mod':\n return stdMath.evalMathMod(args, evaluate, ctx);\n case 'math/sign':\n return stdMath.evalMathSign(args, evaluate, ctx);\n case 'math/lerp':\n return stdMath.evalMathLerp(args, evaluate, ctx);\n case 'math/map':\n return stdMath.evalMathMap(args, evaluate, ctx);\n case 'math/random':\n return stdMath.evalMathRandom();\n case 'math/randomInt':\n return stdMath.evalMathRandomInt(args, evaluate, ctx);\n case 'math/default':\n return stdMath.evalMathDefault(args, evaluate, ctx);\n case 'math/sin':\n return stdMath.evalMathSin(args, evaluate, ctx);\n case 'math/cos':\n return stdMath.evalMathCos(args, evaluate, ctx);\n case 'math/tan':\n return stdMath.evalMathTan(args, evaluate, ctx);\n case 'math/atan2':\n return stdMath.evalMathAtan2(args, evaluate, ctx);\n case 'math/asin':\n return stdMath.evalMathAsin(args, evaluate, ctx);\n case 'math/acos':\n return stdMath.evalMathAcos(args, evaluate, ctx);\n case 'math/atan':\n return stdMath.evalMathAtan(args, evaluate, ctx);\n case 'math/hypot':\n return stdMath.evalMathHypot(args, evaluate, ctx);\n case 'math/deg-rad':\n return stdMath.evalMathDegRad(args, evaluate, ctx);\n case 'math/rad-deg':\n return stdMath.evalMathRadDeg(args, evaluate, ctx);\n case 'math/wrap':\n return stdMath.evalMathWrap(args, evaluate, ctx);\n case 'math/approach':\n return stdMath.evalMathApproach(args, evaluate, ctx);\n\n // ===============================\n // Standard Library: vec/*\n // ===============================\n case 'vec/add':\n return stdVec.evalVecAdd(args, evaluate, ctx);\n case 'vec/sub':\n return stdVec.evalVecSub(args, evaluate, ctx);\n case 'vec/scale':\n return stdVec.evalVecScale(args, evaluate, ctx);\n case 'vec/dot':\n return stdVec.evalVecDot(args, evaluate, ctx);\n case 'vec/cross':\n return stdVec.evalVecCross(args, evaluate, ctx);\n case 'vec/length':\n return stdVec.evalVecLength(args, evaluate, ctx);\n case 'vec/length-sq':\n return stdVec.evalVecLengthSq(args, evaluate, ctx);\n case 'vec/normalize':\n return stdVec.evalVecNormalize(args, evaluate, ctx);\n case 'vec/distance':\n return stdVec.evalVecDistance(args, evaluate, ctx);\n case 'vec/distance-sq':\n return stdVec.evalVecDistanceSq(args, evaluate, ctx);\n case 'vec/lerp':\n return stdVec.evalVecLerp(args, evaluate, ctx);\n case 'vec/angle':\n return stdVec.evalVecAngle(args, evaluate, ctx);\n case 'vec/rotate':\n return stdVec.evalVecRotate(args, evaluate, ctx);\n case 'vec/clamp-length':\n return stdVec.evalVecClampLength(args, evaluate, ctx);\n\n // ===============================\n // Standard Library: geo/*\n // ===============================\n case 'geo/aabb-overlap':\n return stdGeo.evalGeoAabbOverlap(args, evaluate, ctx);\n case 'geo/circle-overlap':\n return stdGeo.evalGeoCircleOverlap(args, evaluate, ctx);\n case 'geo/rect-circle-overlap':\n return stdGeo.evalGeoRectCircleOverlap(args, evaluate, ctx);\n case 'geo/point-in-rect':\n return stdGeo.evalGeoPointInRect(args, evaluate, ctx);\n case 'geo/point-in-circle':\n return stdGeo.evalGeoPointInCircle(args, evaluate, ctx);\n case 'geo/reflect':\n return stdGeo.evalGeoReflect(args, evaluate, ctx);\n case 'geo/segment-intersect':\n return stdGeo.evalGeoSegmentIntersect(args, evaluate, ctx);\n\n // ===============================\n // Standard Library: grid/*\n // ===============================\n case 'grid/to-world':\n return stdGrid.evalGridToWorld(args, evaluate, ctx);\n case 'grid/from-world':\n return stdGrid.evalGridFromWorld(args, evaluate, ctx);\n case 'grid/iso-to-screen':\n return stdGrid.evalGridIsoToScreen(args, evaluate, ctx);\n case 'grid/screen-to-iso':\n return stdGrid.evalGridScreenToIso(args, evaluate, ctx);\n case 'grid/distance':\n return stdGrid.evalGridDistance(args, evaluate, ctx);\n case 'grid/manhattan-distance':\n return stdGrid.evalGridManhattanDistance(args, evaluate, ctx);\n case 'grid/neighbors':\n return stdGrid.evalGridNeighbors(args, evaluate, ctx);\n case 'grid/cells-in-radius':\n return stdGrid.evalGridCellsInRadius(args, evaluate, ctx);\n case 'grid/line':\n return stdGrid.evalGridLine(args, evaluate, ctx);\n case 'grid/in-bounds':\n return stdGrid.evalGridInBounds(args, evaluate, ctx);\n\n // ===============================\n // Standard Library: anim/*\n // ===============================\n case 'anim/frame-at':\n return stdAnim.evalAnimFrameAt(args, evaluate, ctx);\n case 'anim/sheet-rect':\n return stdAnim.evalAnimSheetRect(args, evaluate, ctx);\n case 'anim/direction-from-delta':\n return stdAnim.evalAnimDirectionFromDelta(args, evaluate, ctx);\n\n // ===============================\n // Standard Library: ease/*\n // ===============================\n case 'ease/apply':\n return stdEase.evalEaseApply(args, evaluate, ctx);\n case 'ease/smoothstep':\n return stdEase.evalEaseSmoothstep(args, evaluate, ctx);\n\n // ===============================\n // Standard Library: noise/*\n // ===============================\n case 'noise/perlin':\n return stdNoise.evalNoisePerlin(args, evaluate, ctx);\n case 'noise/simplex':\n return stdNoise.evalNoiseSimplex(args, evaluate, ctx);\n case 'noise/fbm':\n return stdNoise.evalNoiseFbm(args, evaluate, ctx);\n\n // ===============================\n // Standard Library: path/*\n // ===============================\n case 'path/astar':\n return stdPath.evalPathAstar(args, evaluate, ctx);\n case 'path/reachable':\n return stdPath.evalPathReachable(args, evaluate, ctx);\n\n // ===============================\n // Standard Library: str/*\n // ===============================\n case 'str/len':\n return stdStr.evalStrLen(args, evaluate, ctx);\n case 'str/concat':\n return stdStr.evalStrConcat(args, evaluate, ctx);\n case 'str/upper':\n return stdStr.evalStrUpper(args, evaluate, ctx);\n case 'str/lower':\n return stdStr.evalStrLower(args, evaluate, ctx);\n case 'str/trim':\n return stdStr.evalStrTrim(args, evaluate, ctx);\n case 'str/trimStart':\n return stdStr.evalStrTrimStart(args, evaluate, ctx);\n case 'str/trimEnd':\n return stdStr.evalStrTrimEnd(args, evaluate, ctx);\n case 'str/split':\n return stdStr.evalStrSplit(args, evaluate, ctx);\n case 'str/join':\n return stdStr.evalStrJoin(args, evaluate, ctx);\n case 'str/slice':\n return stdStr.evalStrSlice(args, evaluate, ctx);\n case 'str/replace':\n return stdStr.evalStrReplace(args, evaluate, ctx);\n case 'str/replaceAll':\n return stdStr.evalStrReplaceAll(args, evaluate, ctx);\n case 'str/includes':\n return stdStr.evalStrIncludes(args, evaluate, ctx);\n case 'str/startsWith':\n return stdStr.evalStrStartsWith(args, evaluate, ctx);\n case 'str/endsWith':\n return stdStr.evalStrEndsWith(args, evaluate, ctx);\n case 'str/padStart':\n return stdStr.evalStrPadStart(args, evaluate, ctx);\n case 'str/padEnd':\n return stdStr.evalStrPadEnd(args, evaluate, ctx);\n case 'str/repeat':\n return stdStr.evalStrRepeat(args, evaluate, ctx);\n case 'str/reverse':\n return stdStr.evalStrReverse(args, evaluate, ctx);\n case 'str/capitalize':\n return stdStr.evalStrCapitalize(args, evaluate, ctx);\n case 'str/titleCase':\n return stdStr.evalStrTitleCase(args, evaluate, ctx);\n case 'str/camelCase':\n return stdStr.evalStrCamelCase(args, evaluate, ctx);\n case 'str/kebabCase':\n return stdStr.evalStrKebabCase(args, evaluate, ctx);\n case 'str/snakeCase':\n return stdStr.evalStrSnakeCase(args, evaluate, ctx);\n case 'str/default':\n return stdStr.evalStrDefault(args, evaluate, ctx);\n case 'str/template':\n return stdStr.evalStrTemplate(args, evaluate, ctx);\n case 'str/truncate':\n return stdStr.evalStrTruncate(args, evaluate, ctx);\n case 'to-string':\n return String(evaluate(args[0], ctx));\n\n // ===============================\n // Standard Library: array/*\n // ===============================\n case 'array/len':\n return stdArray.evalArrayLen(args, evaluate, ctx);\n case 'array/range':\n return stdArray.evalArrayRange(args, evaluate, ctx);\n case 'array/empty?':\n return stdArray.evalArrayEmpty(args, evaluate, ctx);\n case 'array/first':\n return stdArray.evalArrayFirst(args, evaluate, ctx);\n case 'array/last':\n return stdArray.evalArrayLast(args, evaluate, ctx);\n case 'array/nth':\n return stdArray.evalArrayNth(args, evaluate, ctx);\n case 'array/slice':\n return stdArray.evalArraySlice(args, evaluate, ctx);\n case 'array/concat':\n return stdArray.evalArrayConcat(args, evaluate, ctx);\n case 'array/append':\n return stdArray.evalArrayAppend(args, evaluate, ctx);\n case 'array/prepend':\n return stdArray.evalArrayPrepend(args, evaluate, ctx);\n case 'array/insert':\n return stdArray.evalArrayInsert(args, evaluate, ctx);\n case 'array/remove':\n return stdArray.evalArrayRemove(args, evaluate, ctx);\n case 'array/removeItem':\n return stdArray.evalArrayRemoveItem(args, evaluate, ctx);\n case 'array/reverse':\n return stdArray.evalArrayReverse(args, evaluate, ctx);\n case 'array/sort':\n return stdArray.evalArraySort(args, evaluate, ctx);\n case 'array/shuffle':\n return stdArray.evalArrayShuffle(args, evaluate, ctx);\n case 'array/unique':\n return stdArray.evalArrayUnique(args, evaluate, ctx);\n case 'array/flatten':\n return stdArray.evalArrayFlatten(args, evaluate, ctx);\n case 'array/zip':\n return stdArray.evalArrayZip(args, evaluate, ctx);\n case 'array/includes':\n return stdArray.evalArrayIncludes(args, evaluate, ctx);\n case 'array/indexOf':\n return stdArray.evalArrayIndexOf(args, evaluate, ctx);\n case 'array/find':\n return stdArray.evalArrayFind(args, evaluate, ctx);\n case 'array/findIndex':\n return stdArray.evalArrayFindIndex(args, evaluate, ctx);\n case 'array/filter':\n return stdArray.evalArrayFilter(args, evaluate, ctx);\n case 'array/reject':\n return stdArray.evalArrayReject(args, evaluate, ctx);\n case 'array/map':\n return stdArray.evalArrayMap(args, evaluate, ctx);\n case 'array/reduce':\n return stdArray.evalArrayReduce(args, evaluate, ctx);\n case 'array/every':\n return stdArray.evalArrayEvery(args, evaluate, ctx);\n case 'array/some':\n return stdArray.evalArraySome(args, evaluate, ctx);\n case 'array/count':\n return stdArray.evalArrayCount(args, evaluate, ctx);\n case 'array/sum':\n return stdArray.evalArraySum(args, evaluate, ctx);\n case 'array/avg':\n return stdArray.evalArrayAvg(args, evaluate, ctx);\n case 'array/min':\n return stdArray.evalArrayMin(args, evaluate, ctx);\n case 'array/max':\n return stdArray.evalArrayMax(args, evaluate, ctx);\n case 'array/groupBy':\n return stdArray.evalArrayGroupBy(args, evaluate, ctx);\n case 'array/partition':\n return stdArray.evalArrayPartition(args, evaluate, ctx);\n case 'array/take':\n return stdArray.evalArrayTake(args, evaluate, ctx);\n case 'array/drop':\n return stdArray.evalArrayDrop(args, evaluate, ctx);\n case 'array/takeLast':\n return stdArray.evalArrayTakeLast(args, evaluate, ctx);\n case 'array/dropLast':\n return stdArray.evalArrayDropLast(args, evaluate, ctx);\n\n // ===============================\n // Standard Library: object/*\n // ===============================\n case 'object/keys':\n return stdObject.evalObjectKeys(args, evaluate, ctx);\n case 'object/values':\n return stdObject.evalObjectValues(args, evaluate, ctx);\n case 'object/entries':\n return stdObject.evalObjectEntries(args, evaluate, ctx);\n case 'object/fromEntries':\n return stdObject.evalObjectFromEntries(args, evaluate, ctx);\n case 'object/get':\n return stdObject.evalObjectGet(args, evaluate, ctx);\n case 'object/set':\n return stdObject.evalObjectSet(args, evaluate, ctx);\n case 'object/has':\n return stdObject.evalObjectHas(args, evaluate, ctx);\n case 'object/merge':\n return stdObject.evalObjectMerge(args, evaluate, ctx);\n case 'object/deepMerge':\n return stdObject.evalObjectDeepMerge(args, evaluate, ctx);\n case 'object/pick':\n return stdObject.evalObjectPick(args, evaluate, ctx);\n case 'object/omit':\n return stdObject.evalObjectOmit(args, evaluate, ctx);\n case 'object/mapValues':\n return stdObject.evalObjectMapValues(args, evaluate, ctx);\n case 'object/mapKeys':\n return stdObject.evalObjectMapKeys(args, evaluate, ctx);\n case 'object/filter':\n return stdObject.evalObjectFilter(args, evaluate, ctx);\n case 'object/empty?':\n return stdObject.evalObjectEmpty(args, evaluate, ctx);\n case 'object/equals':\n return stdObject.evalObjectEquals(args, evaluate, ctx);\n case 'object/clone':\n return stdObject.evalObjectClone(args, evaluate, ctx);\n case 'object/deepClone':\n return stdObject.evalObjectDeepClone(args, evaluate, ctx);\n\n // Path operator (for dynamic field access)\n case 'path':\n return stdObject.evalPath(args, evaluate, ctx);\n\n // ===============================\n // Standard Library: validate/*\n // ===============================\n case 'validate/required':\n return stdValidate.evalValidateRequired(args, evaluate, ctx);\n case 'validate/string':\n return stdValidate.evalValidateString(args, evaluate, ctx);\n case 'validate/number':\n return stdValidate.evalValidateNumber(args, evaluate, ctx);\n case 'validate/boolean':\n return stdValidate.evalValidateBoolean(args, evaluate, ctx);\n case 'validate/array':\n return stdValidate.evalValidateArray(args, evaluate, ctx);\n case 'validate/object':\n return stdValidate.evalValidateObject(args, evaluate, ctx);\n case 'validate/email':\n return stdValidate.evalValidateEmail(args, evaluate, ctx);\n case 'validate/url':\n return stdValidate.evalValidateUrl(args, evaluate, ctx);\n case 'validate/uuid':\n return stdValidate.evalValidateUuid(args, evaluate, ctx);\n case 'validate/phone':\n return stdValidate.evalValidatePhone(args, evaluate, ctx);\n case 'validate/creditCard':\n return stdValidate.evalValidateCreditCard(args, evaluate, ctx);\n case 'validate/date':\n return stdValidate.evalValidateDate(args, evaluate, ctx);\n case 'validate/minLength':\n return stdValidate.evalValidateMinLength(args, evaluate, ctx);\n case 'validate/maxLength':\n return stdValidate.evalValidateMaxLength(args, evaluate, ctx);\n case 'validate/length':\n return stdValidate.evalValidateLength(args, evaluate, ctx);\n case 'validate/min':\n return stdValidate.evalValidateMin(args, evaluate, ctx);\n case 'validate/max':\n return stdValidate.evalValidateMax(args, evaluate, ctx);\n case 'validate/range':\n return stdValidate.evalValidateRange(args, evaluate, ctx);\n case 'validate/pattern':\n return stdValidate.evalValidatePattern(args, evaluate, ctx);\n case 'validate/oneOf':\n return stdValidate.evalValidateOneOf(args, evaluate, ctx);\n case 'validate/noneOf':\n return stdValidate.evalValidateNoneOf(args, evaluate, ctx);\n case 'validate/equals':\n return stdValidate.evalValidateEquals(args, evaluate, ctx);\n case 'validate/check':\n return stdValidate.evalValidateCheck(args, evaluate, ctx);\n\n // ===============================\n // Standard Library: time/*\n // ===============================\n case 'time/now':\n return stdTime.evalTimeNow();\n case 'time/today':\n return stdTime.evalTimeToday();\n case 'time/parse':\n return stdTime.evalTimeParse(args, evaluate, ctx);\n case 'time/format':\n return stdTime.evalTimeFormat(args, evaluate, ctx);\n case 'time/year':\n return stdTime.evalTimeYear(args, evaluate, ctx);\n case 'time/month':\n return stdTime.evalTimeMonth(args, evaluate, ctx);\n case 'time/day':\n return stdTime.evalTimeDay(args, evaluate, ctx);\n case 'time/weekday':\n return stdTime.evalTimeWeekday(args, evaluate, ctx);\n case 'time/hour':\n return stdTime.evalTimeHour(args, evaluate, ctx);\n case 'time/minute':\n return stdTime.evalTimeMinute(args, evaluate, ctx);\n case 'time/second':\n return stdTime.evalTimeSecond(args, evaluate, ctx);\n case 'time/add':\n return stdTime.evalTimeAdd(args, evaluate, ctx);\n case 'time/subtract':\n return stdTime.evalTimeSubtract(args, evaluate, ctx);\n case 'time/diff':\n return stdTime.evalTimeDiff(args, evaluate, ctx);\n case 'time/startOf':\n return stdTime.evalTimeStartOf(args, evaluate, ctx);\n case 'time/endOf':\n return stdTime.evalTimeEndOf(args, evaluate, ctx);\n case 'time/isBefore':\n return stdTime.evalTimeIsBefore(args, evaluate, ctx);\n case 'time/isAfter':\n return stdTime.evalTimeIsAfter(args, evaluate, ctx);\n case 'time/isBetween':\n return stdTime.evalTimeIsBetween(args, evaluate, ctx);\n case 'time/isSame':\n return stdTime.evalTimeIsSame(args, evaluate, ctx);\n case 'time/isPast':\n return stdTime.evalTimeIsPast(args, evaluate, ctx);\n case 'time/isFuture':\n return stdTime.evalTimeIsFuture(args, evaluate, ctx);\n case 'time/isToday':\n return stdTime.evalTimeIsToday(args, evaluate, ctx);\n case 'time/relative':\n return stdTime.evalTimeRelative(args, evaluate, ctx);\n case 'time/duration':\n return stdTime.evalTimeDuration(args, evaluate, ctx);\n\n // ===============================\n // Standard Library: format/*\n // ===============================\n case 'format/number':\n return stdFormat.evalFormatNumber(args, evaluate, ctx);\n case 'format/currency':\n return stdFormat.evalFormatCurrency(args, evaluate, ctx);\n case 'format/percent':\n return stdFormat.evalFormatPercent(args, evaluate, ctx);\n case 'format/bytes':\n return stdFormat.evalFormatBytes(args, evaluate, ctx);\n case 'format/ordinal':\n return stdFormat.evalFormatOrdinal(args, evaluate, ctx);\n case 'format/plural':\n return stdFormat.evalFormatPlural(args, evaluate, ctx);\n case 'format/list':\n return stdFormat.evalFormatList(args, evaluate, ctx);\n case 'format/phone':\n return stdFormat.evalFormatPhone(args, evaluate, ctx);\n case 'format/creditCard':\n return stdFormat.evalFormatCreditCard(args, evaluate, ctx);\n\n // ===============================\n // Standard Library: async/*\n // ===============================\n case 'async/delay':\n return stdAsync.evalAsyncDelay(args, evaluate, ctx);\n case 'async/interval':\n return stdAsync.evalAsyncInterval(args, evaluate, ctx);\n case 'async/timeout':\n return stdAsync.evalAsyncTimeout(args, evaluate, ctx);\n case 'async/debounce':\n stdAsync.evalAsyncDebounce(args, evaluate, ctx);\n return undefined;\n case 'async/throttle':\n stdAsync.evalAsyncThrottle(args, evaluate, ctx);\n return undefined;\n case 'async/retry':\n return stdAsync.evalAsyncRetry(args, evaluate, ctx);\n case 'async/race':\n return stdAsync.evalAsyncRace(args, evaluate, ctx);\n case 'async/all':\n return stdAsync.evalAsyncAll(args, evaluate, ctx);\n case 'async/sequence':\n return stdAsync.evalAsyncSequence(args, evaluate, ctx);\n\n // ===============================\n // Standard Library: prob/*\n // ===============================\n case 'prob/seed':\n stdProb.evalProbSeed(args, evaluate, ctx);\n return undefined;\n case 'prob/flip':\n return stdProb.evalProbFlip(args, evaluate, ctx);\n case 'prob/gaussian':\n return stdProb.evalProbGaussian(args, evaluate, ctx);\n case 'prob/uniform':\n return stdProb.evalProbUniform(args, evaluate, ctx);\n case 'prob/beta':\n return stdProb.evalProbBeta(args, evaluate, ctx);\n case 'prob/categorical':\n return stdProb.evalProbCategorical(args, evaluate, ctx);\n case 'prob/poisson':\n return stdProb.evalProbPoisson(args, evaluate, ctx);\n case 'prob/condition':\n stdProb.evalProbCondition(args, evaluate, ctx);\n return undefined;\n case 'prob/sample':\n return stdProb.evalProbSample(args, evaluate, ctx);\n case 'prob/posterior':\n return stdProb.evalProbPosterior(args, evaluate, ctx);\n case 'prob/infer':\n return stdProb.evalProbInfer(args, evaluate, ctx);\n case 'prob/expected-value':\n return stdProb.evalProbExpectedValue(args, evaluate, ctx);\n case 'prob/variance':\n return stdProb.evalProbVariance(args, evaluate, ctx);\n case 'prob/histogram':\n return stdProb.evalProbHistogram(args, evaluate, ctx);\n case 'prob/percentile':\n return stdProb.evalProbPercentile(args, evaluate, ctx);\n case 'prob/credible-interval':\n return stdProb.evalProbCredibleInterval(args, evaluate, ctx);\n\n // ===============================\n // Standard Library: os/*\n // ===============================\n case 'os/watch-files': stdOs.evalOsWatchFiles(args, evaluate, ctx); return undefined;\n case 'os/watch-process': stdOs.evalOsWatchProcess(args, evaluate, ctx); return undefined;\n case 'os/watch-port': stdOs.evalOsWatchPort(args, evaluate, ctx); return undefined;\n case 'os/watch-http': stdOs.evalOsWatchHttp(args, evaluate, ctx); return undefined;\n case 'os/watch-cron': stdOs.evalOsWatchCron(args, evaluate, ctx); return undefined;\n case 'os/watch-signal': stdOs.evalOsWatchSignal(args, evaluate, ctx); return undefined;\n case 'os/watch-env': stdOs.evalOsWatchEnv(args, evaluate, ctx); return undefined;\n case 'os/debounce': stdOs.evalOsDebounce(args, evaluate, ctx); return undefined;\n\n // ===============================\n // Standard Library: llm/*\n // ===============================\n case 'llm/generate': return stdLlm.evalLlmGenerate(args, evaluate, ctx);\n case 'llm/call-tools': return stdLlm.evalLlmCallTools(args, evaluate, ctx);\n case 'llm/embed': return stdLlm.evalLlmEmbed(args, evaluate, ctx);\n case 'llm/token-count': return stdLlm.evalLlmTokenCount(args, evaluate, ctx);\n case 'llm/switch': return stdLlm.evalLlmSwitch(args, evaluate, ctx);\n case 'llm/compact': return stdLlm.evalLlmCompact(args, evaluate, ctx);\n\n // ===============================\n // Standard Library: workspace/*\n // ===============================\n case 'workspace/read-orbital': return stdWorkspace.evalWorkspaceReadOrbital(args, evaluate, ctx);\n case 'workspace/write-orbital': return stdWorkspace.evalWorkspaceWriteOrbital(args, evaluate, ctx);\n case 'workspace/read-file': return stdWorkspace.evalWorkspaceReadFile(args, evaluate, ctx);\n case 'workspace/write-file': return stdWorkspace.evalWorkspaceWriteFile(args, evaluate, ctx);\n case 'workspace/exists': return stdWorkspace.evalWorkspaceExists(args, evaluate, ctx);\n case 'workspace/list-orbitals': return stdWorkspace.evalWorkspaceListOrbitals(args, evaluate, ctx);\n case 'workspace/read-schema': return stdWorkspace.evalWorkspaceReadSchema(args, evaluate, ctx);\n case 'workspace/write-schema': return stdWorkspace.evalWorkspaceWriteSchema(args, evaluate, ctx);\n case 'workspace/read-plan': return stdWorkspace.evalWorkspaceReadPlan(args, evaluate, ctx);\n case 'workspace/write-plan': return stdWorkspace.evalWorkspaceWritePlan(args, evaluate, ctx);\n case 'workspace/archive-orbital': return stdWorkspace.evalWorkspaceArchiveOrbital(args, evaluate, ctx);\n\n // ===============================\n // Standard Library: session/*\n // ===============================\n case 'session/read-spec': return stdSession.evalSessionReadSpec(args, evaluate, ctx);\n case 'session/write-spec': return stdSession.evalSessionWriteSpec(args, evaluate, ctx);\n case 'session/read-memory': return stdSession.evalSessionReadMemory(args, evaluate, ctx);\n case 'session/write-memory': return stdSession.evalSessionWriteMemory(args, evaluate, ctx);\n case 'session/read-history': return stdSession.evalSessionReadHistory(args, evaluate, ctx);\n case 'session/append-history': return stdSession.evalSessionAppendHistory(args, evaluate, ctx);\n case 'session/read-errors': return stdSession.evalSessionReadErrors(args, evaluate, ctx);\n case 'session/write-errors': return stdSession.evalSessionWriteErrors(args, evaluate, ctx);\n case 'session/read-analysis': return stdSession.evalSessionReadAnalysis(args, evaluate, ctx);\n\n // ===============================\n // Standard Library: memory/*\n // ===============================\n case 'memory/recall': return stdMemory.evalMemoryRecall(args, evaluate, ctx);\n case 'memory/store': return stdMemory.evalMemoryStore(args, evaluate, ctx);\n case 'memory/list': return stdMemory.evalMemoryList(args, evaluate, ctx);\n\n // ===============================\n // Standard Library: trace/*\n // ===============================\n case 'trace/emit': return stdTrace.evalTraceEmit(args, evaluate, ctx);\n case 'trace/log': return stdTrace.evalTraceLog(args, evaluate, ctx);\n\n // ===============================\n // Standard Library: integration/*\n // ===============================\n case 'integration/http': return stdIntegration.evalIntegrationHttp(args, evaluate, ctx);\n case 'integration/github-get-repo': return stdIntegration.evalIntegrationGithubGetRepo(args, evaluate, ctx);\n case 'integration/github-create-issue': return stdIntegration.evalIntegrationGithubCreateIssue(args, evaluate, ctx);\n\n default:\n return UNKNOWN_OPERATOR;\n }\n }\n}\n\n// Export singleton instance for convenience\nexport const evaluator = new SExpressionEvaluator();\n\n// Export convenience functions\nexport function evaluate(expr: SExpr, ctx: EvaluationContext): unknown {\n return evaluator.evaluate(expr, ctx);\n}\n\nexport function evaluateGuard(expr: SExpr, ctx: EvaluationContext): boolean {\n return evaluator.evaluateGuard(expr, ctx);\n}\n\nexport function executeEffect(expr: SExpr, ctx: EvaluationContext): void {\n evaluator.executeEffect(expr, ctx);\n}\n\nexport function executeEffects(effects: SExpr[], ctx: EvaluationContext): void {\n evaluator.executeEffects(effects, ctx);\n}\n"]}
|