@almadar/evaluator 2.37.0 → 2.38.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.map +1 -1
- package/package.json +3 -3
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
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/contract.ts","../std/graph.ts","../std/data.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","../listen-payload.ts"],"names":["key","evaluate","toNumber","p","childCtx","deepEqual","tensorShape","z","asVec","num","sector","idx","asCell"],"mappings":"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A;AAAA,EAAK,EAAA;AAAA,EAAI,EAAA;AAAA,EAAI,EAAA;AAAA,EAAI,GAAA;AAAA,EAAK,EAAA;AAAA,EAAI,GAAA;AAAA,EAAK,EAAA;AAAA,EAAI,EAAA;AAAA,EAAI,EAAA;AAAA,EAAI,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,CAAA;AAAA,EAAG,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,EAAA;AAAA,EAC5E,GAAA;AAAA,EAAK,EAAA;AAAA,EAAI,EAAA;AAAA,EAAI,GAAA;AAAA,EAAK,CAAA;AAAA,EAAG,EAAA;AAAA,EAAI,EAAA;AAAA,EAAI,GAAA;AAAA,EAAK,EAAA;AAAA,EAAI,EAAA;AAAA,EAAI,EAAA;AAAA,EAAI,GAAA;AAAA,EAAK,CAAA;AAAA,EAAG,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,EAAA;AAAA,EAAI,CAAA;AAAA,EAC9E,EAAA;AAAA,EAAI,GAAA;AAAA,EAAK,EAAA;AAAA,EAAI,EAAA;AAAA,EAAI,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,EAAA;AAAA,EAAI,EAAA;AAAA,EAAI,EAAA;AAAA,EAAI,EAAA;AAAA,EAAI,GAAA;AAAA,EAAK,EAAA;AAAA,EAAI,EAAA;AAAA,EAAI,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,EAAA;AAAA,EAC5E,EAAA;AAAA,EAAI,GAAA;AAAA,EAAK,EAAA;AAAA,EAAI,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,EAAA;AAAA,EAAI,GAAA;AAAA,EAAK,EAAA;AAAA,EAAI,GAAA;AAAA,EAAK,EAAA;AAAA,EAAI,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,EAAA;AAAA,EAAI,EAAA;AAAA,EAAI,GAAA;AAAA,EAAK,EAAA;AAAA,EAC9E,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,EAAA;AAAA,EAAI,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,EAAA;AAAA,EAAI,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,EAAA;AAAA,EAAI,EAAA;AAAA,EAAI,EAAA;AAAA,EAAI,EAAA;AAAA,EAC3E,GAAA;AAAA,EAAK,EAAA;AAAA,EAAI,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,EAAA;AAAA,EAAI,EAAA;AAAA,EAAI,EAAA;AAAA,EAAI,EAAA;AAAA,EAAI,GAAA;AAAA,EAAK,CAAA;AAAA,EAAG,GAAA;AAAA,EAAK,EAAA;AAAA,EAAI,EAAA;AAAA,EAAI,GAAA;AAAA,EAAK,EAAA;AAAA,EAAI,GAAA;AAAA,EAAK,GAAA;AAAA,EAC3E,GAAA;AAAA,EAAK,EAAA;AAAA,EAAI,EAAA;AAAA,EAAI,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,EAAA;AAAA,EAAI,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAC7E,GAAA;AAAA,EAAK,CAAA;AAAA,EAAG,EAAA;AAAA,EAAI,EAAA;AAAA,EAAI,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,CAAA;AAAA,EAAG,GAAA;AAAA,EAAK,EAAA;AAAA,EAAI,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,EAAA;AAAA,EAAI,EAAA;AAAA,EAC7E,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,EAAA;AAAA,EAAI,GAAA;AAAA,EAAK,EAAA;AAAA,EAAI,EAAA;AAAA,EAAI,EAAA;AAAA,EAAI,EAAA;AAAA,EAAI,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,EAAA;AAAA,EAAI,EAAA;AAAA,EAAI,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAC9E,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,CAAA;AAAA,EAAG,EAAA;AAAA,EAAI,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,EAAA;AAAA,EAAI,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,EAAA;AAAA,EAAI,GAAA;AAAA,EAAK,CAAA;AAAA,EAAG,GAAA;AAAA,EAAK,EAAA;AAAA,EAAI,EAAA;AAAA,EAC7E,GAAA;AAAA,EAAK,EAAA;AAAA,EAAI,EAAA;AAAA,EAAI,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,EAAA;AAAA,EAAI,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,EAAA;AAAA,EAAI,GAAA;AAAA,EAC5E,GAAA;AAAA,EAAK,EAAA;AAAA,EAAI,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,EAAA;AAAA,EAAI,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,EAAA;AAAA,EAAI,EAAA;AAAA,EAAI,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAC5E,EAAA;AAAA,EAAI,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,EAAA;AAAA,EAAI,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,EAAA;AAAA,EAAI,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,EAAA;AAAA,EAAI,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAC5E,EAAA;AAAA,EAAI,EAAA;AAAA,EAAI,GAAA;AAAA,EAAK,CAAA;AAAA,EAAG,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,EAAA;AAAA,EAAI,GAAA;AAAA,EAAK,GAAA;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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 — owned by `@almadar/core` so the\n * interpreter and the compiled shell resolve the same field names.\n */\nexport type { UserContext } from '@almadar/core';\nimport type { UserContext } from '@almadar/core';\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/**\n * Cosine similarity, agreeing numerically with @almadar/llm's\n * embedding-client.ts `cosineSimilarity` on well-formed input. Diverges on\n * malformed input: length mismatch, an empty vector, or a zero-magnitude\n * vector all throw instead of returning 0 — 0 is a legitimate orthogonal\n * result and must stay distinguishable from a malformed-input failure.\n */\nfunction cosineSimilarity(a: readonly number[], b: readonly number[]): number {\n if (a.length !== b.length) {\n throw new Error(`array/cosine: vector length mismatch (${a.length} vs ${b.length})`);\n }\n if (a.length === 0) {\n throw new Error('array/cosine: empty vector has no defined similarity');\n }\n let dot = 0;\n let normA = 0;\n let normB = 0;\n for (let i = 0; i < a.length; i++) {\n const av = a[i];\n const bv = b[i];\n dot += av * bv;\n normA += av * av;\n normB += bv * bv;\n }\n if (normA === 0 || normB === 0) {\n throw new Error('array/cosine: zero-magnitude vector has no defined direction to compare');\n }\n return dot / (Math.sqrt(normA) * Math.sqrt(normB));\n}\n\n/**\n * array/cosine - Cosine similarity between two numeric arrays. Pure math,\n * no side effects, no ctx.llm dependency — works on arrays the caller\n * already has (e.g. embeddings from llm/embed).\n */\nexport function evalArrayCosine(\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 cosineSimilarity(a, b);\n}\n\n/**\n * array/nearest - Best-matching candidate by cosine similarity, plus the\n * margin (best score minus runner-up score) that gates abstention. With a\n * single candidate there is no runner-up to establish a margin against, so\n * margin is defined as 0 — that forces a margin-gate to abstain rather than\n * fabricate confidence from a comparison that was never actually made.\n */\nexport function evalArrayNearest(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): { index: number; score: number; margin: number } {\n const query = evaluate(args[0], ctx) as number[];\n const candidates = evaluate(args[1], ctx) as number[][];\n if (candidates.length === 0) {\n throw new Error('array/nearest: candidates array is empty, no nearest match exists');\n }\n const scores = candidates.map((c) => cosineSimilarity(query, c));\n\n let bestIdx = 0;\n let bestScore = scores[0];\n for (let i = 1; i < scores.length; i++) {\n if (scores[i] > bestScore) {\n bestScore = scores[i];\n bestIdx = i;\n }\n }\n\n let secondBest = -Infinity;\n for (let i = 0; i < scores.length; i++) {\n if (i === bestIdx) continue;\n if (scores[i] > secondBest) secondBest = scores[i];\n }\n\n const margin = scores.length === 1 ? 0 : bestScore - secondBest;\n return { index: bestIdx, score: bestScore, margin };\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 // One pass, longest token first: replacing in map order lets `MM` consume\n // the head of `MMM` (\"MMM D\" → \"077 5\"), and a multi-pass loop can also\n // re-substitute inside an already-emitted value (\"July\" → \"Ju1y\").\n const pattern = new RegExp(\n Object.keys(tokens)\n .sort((a, b) => b.length - a.length)\n .join('|'),\n 'g',\n );\n\n return format.replace(pattern, (token) => tokens[token]);\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 * Contract Operators Runtime Evaluators\n *\n * Runtime implementations for contract/* operators — tensor <-> entity\n * conversion and input/output contract validation for the R4 (learned rung)\n * inference seam. The pure validation core lives in `@almadar/core`\n * (`ml-contract.ts`) so the compiled TypeScript shell imports the SAME\n * implementation this runtime path uses — the two paths cannot drift.\n * Both mirror `contract_helpers.py`\n * (`orbital-rust/crates/orbital-shell-python/src/backend.rs`, generator\n * `generate_contract_helpers`) semantically so the JS runtime path and the\n * emitted Python target agree on the same contract JSON in / JSON out.\n *\n * @packageDocumentation\n */\n\nimport {\n contractFieldName,\n describeTensorMismatch,\n isTensorValue,\n mapTensorLastDim,\n tensorLastDimSize,\n validateContract,\n} from '@almadar/core';\nimport type {\n ContractSpec,\n ContractValidationResult,\n ContractViolation,\n TensorValue,\n} from '@almadar/core';\nimport type { SExpr } from '../types/expression.js';\nimport type { EvaluationContext } from '../context.js';\n\ntype EvalFn = (expr: SExpr, ctx: EvaluationContext) => unknown;\n\nexport type {\n ContractFieldEntry,\n ContractFieldSpec,\n ContractRange,\n ContractSpec,\n ContractValidationResult,\n ContractViolation,\n TensorValue,\n} from '@almadar/core';\n\nfunction clampContract(tensor: unknown, contract: ContractSpec): TensorValue {\n if (!isTensorValue(tensor)) {\n throw new Error(\n `contract/clamp-output: expected a tensor (a number, or nested arrays of numbers), received ${describeTensorMismatch(tensor)}. Validate with contract/validate-output before clamping.`\n );\n }\n const ranges = contract.ranges ?? {};\n const size = tensorLastDimSize(tensor);\n let result = tensor;\n for (const [dimStr, bounds] of Object.entries(ranges)) {\n const dim = Number(dimStr);\n if (dim >= size) continue;\n const min = bounds.min ?? -Infinity;\n const max = bounds.max ?? Infinity;\n result = mapTensorLastDim(result, dim, (v) => Math.min(Math.max(v, min), max));\n }\n return result;\n}\n\n/**\n * contract/validate-input - Validate a tensor against an input contract.\n * NOTE: the std/contract.ts metadata declares `returnType: 'boolean'`, but\n * contract_validate_input in contract_helpers.py returns `{valid, violations}` —\n * a metadata/implementation divergence. Implemented to match the Python\n * helper (the thing a future golden-vector harness will diff against).\n */\nexport function evalContractValidateInput(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): ContractValidationResult {\n const tensor = evaluate(args[0], ctx);\n const contract = evaluate(args[1], ctx) as ContractSpec;\n return validateContract(tensor, contract);\n}\n\n/** contract/validate-output - contract_validate_output is a pure alias of contract_validate_input in Python. */\nexport function evalContractValidateOutput(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): ContractValidationResult {\n return evalContractValidateInput(args, evaluate, ctx);\n}\n\n/** contract/clamp-output - Clamp each ranged dimension of the tensor into [min, max]. */\nexport function evalContractClampOutput(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): TensorValue {\n const tensor = evaluate(args[0], ctx);\n const contract = evaluate(args[1], ctx) as ContractSpec;\n return clampContract(tensor, contract);\n}\n\n/** contract/violations - The violations list from validateContract, matching contract_violations. */\nexport function evalContractViolations(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): ContractViolation[] {\n const tensor = evaluate(args[0], ctx);\n const contract = evaluate(args[1], ctx) as ContractSpec;\n return validateContract(tensor, contract).violations;\n}\n\n/**\n * contract/entity-to-tensor - Convert entity fields to a flat tensor via\n * `contract.fields`. Non-numeric field values coerce to 0, matching Python's\n * `float(val) if isinstance(val, (int, float)) else 0.0`.\n */\nexport function evalContractEntityToTensor(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): TensorValue {\n const entity = evaluate(args[0], ctx) as Record<string, unknown>;\n const contract = evaluate(args[1], ctx) as ContractSpec;\n const fields = contract.fields ?? [];\n return fields.map((f) => {\n const val = entity[contractFieldName(f)];\n return typeof val === 'number' ? val : 0;\n });\n}\n\n/**\n * contract/tensor-to-payload - Convert a tensor back to a `{fieldName: value}`\n * payload via `contract.fields`, matching Python's index-aligned zip.\n */\nexport function evalContractTensorToPayload(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): Record<string, TensorValue> {\n const tensor = evaluate(args[0], ctx);\n if (!isTensorValue(tensor)) {\n throw new Error(\n `contract/tensor-to-payload: expected a tensor (a number, or nested arrays of numbers), received ${describeTensorMismatch(tensor)}.`\n );\n }\n const contract = evaluate(args[1], ctx) as ContractSpec;\n const fields = contract.fields ?? [];\n const values: TensorValue[] = Array.isArray(tensor) ? tensor : [tensor];\n const result: Record<string, TensorValue> = {};\n fields.forEach((f, i) => {\n if (i < values.length) result[contractFieldName(f)] = values[i];\n });\n return result;\n}\n","/**\n * Graph Operators Runtime Evaluators\n *\n * Runtime implementations for graph/* operators — construction, transforms,\n * accessors and batching for GNN-shaped circuit data. Mirrors\n * `graph_helpers.py` (`orbital-rust/crates/orbital-shell-python/src/backend.rs`,\n * generator `generate_graph_helpers`) semantically. A plain\n * `{ x, edgeIndex, edgeAttr }` object stands in for Python's `GraphData`\n * class; `x` is node features (rows = nodes), `edgeIndex` is `[srcs, dsts]`\n * (mirrors torch's `[2, num_edges]` layout), `edgeAttr` is optional edge\n * features. Tensors are plain JSON (see contract.ts's `TensorValue`).\n *\n * @packageDocumentation\n */\n\nimport type { SExpr } from '../types/expression.js';\nimport type { EvaluationContext } from '../context.js';\nimport type { TensorValue } from './contract.js';\n\ntype EvalFn = (expr: SExpr, ctx: EvaluationContext) => unknown;\n\nexport interface GraphData {\n x: TensorValue[];\n edgeIndex: [number[], number[]];\n edgeAttr?: TensorValue;\n}\n\nfunction tensorShape(t: TensorValue): number[] {\n if (typeof t === 'number') return [];\n if (t.length === 0) return [0];\n const first = t[0];\n if (typeof first === 'number') return [t.length];\n return [t.length, ...tensorShape(first)];\n}\n\nfunction numNodes(g: GraphData): number {\n return g.x.length;\n}\n\nfunction subgraphData(g: GraphData, mask: boolean[]): GraphData {\n const nodeMap: number[] = new Array(numNodes(g)).fill(-1);\n const x: TensorValue[] = [];\n let next = 0;\n for (let i = 0; i < numNodes(g); i++) {\n if (mask[i]) {\n nodeMap[i] = next++;\n x.push(g.x[i]);\n }\n }\n const [srcAll, dstAll] = g.edgeIndex;\n const src: number[] = [];\n const dst: number[] = [];\n for (let k = 0; k < srcAll.length; k++) {\n const s = srcAll[k];\n const d = dstAll[k];\n if (mask[s] && mask[d]) {\n src.push(nodeMap[s]);\n dst.push(nodeMap[d]);\n }\n }\n // edge_attr is dropped, matching graph_subgraph's `GraphData(x=x, edge_index=edge_index)`.\n return { x, edgeIndex: [src, dst] };\n}\n\n// ============================================================================\n// Construction\n// ============================================================================\n\n/**\n * graph/from-entities - Build a graph from an entity array; each entity\n * becomes a node whose feature row is its numeric field values (Python's\n * `isinstance(v, (int, float))` also matches bool, so booleans coerce to\n * 0/1 here too), padded to the longest row. No edges are produced — matches\n * `graph_from_entities` exactly. NOTE: the std/graph.ts metadata declares a\n * single `config` object param (`{nodes, edges, node-features, ...}`), but\n * the Python codegen forwards arg0 straight through to\n * `graph_from_entities(entities: List[Dict])` — a raw entity array, not a\n * config object. Implemented to match what actually runs.\n */\nexport function evalGraphFromEntities(args: SExpr[], evaluate: EvalFn, ctx: EvaluationContext): GraphData {\n const entities = evaluate(args[0], ctx) as Record<string, unknown>[];\n if (entities.length === 0) {\n return { x: [], edgeIndex: [[], []] };\n }\n const features = entities.map((e) => {\n const row = Object.values(e)\n .filter((v): v is number | boolean => typeof v === 'number' || typeof v === 'boolean')\n .map((v) => (typeof v === 'boolean' ? (v ? 1 : 0) : v));\n return row.length > 0 ? row : [0];\n });\n const maxLen = Math.max(...features.map((r) => r.length));\n const x = features.map((r) => [...r, ...new Array(maxLen - r.length).fill(0)]);\n return { x, edgeIndex: [[], []] };\n}\n\n/**\n * graph/from-adjacency - Build a graph from an adjacency matrix (edges via\n * nonzero, row-major torch order) and a node feature matrix, per the\n * std/graph.ts declared param order `(adjacency, features)`. NOTE: the\n * Python codegen forwards args positionally into\n * `graph_from_adjacency(features, adj_matrix)` — the OPPOSITE order — so a\n * `.lolo` call site following the documented `(adjacency, features)`\n * contract binds arg0 to Python's `features` and arg1 to `adj_matrix`,\n * silently swapping the two on the compiled path. Implemented here to match\n * the DECLARED contract (std/graph.ts is the operator's source of truth);\n * this is a real compiler-side divergence, flagged for orbital-rust\n * (ask-first, sacred).\n */\nexport function evalGraphFromAdjacency(args: SExpr[], evaluate: EvalFn, ctx: EvaluationContext): GraphData {\n const adjacency = evaluate(args[0], ctx) as number[][];\n const features = evaluate(args[1], ctx) as TensorValue[];\n const src: number[] = [];\n const dst: number[] = [];\n for (let i = 0; i < adjacency.length; i++) {\n const row = adjacency[i];\n for (let j = 0; j < row.length; j++) {\n if (row[j] !== 0) {\n src.push(i);\n dst.push(j);\n }\n }\n }\n return { x: features, edgeIndex: [src, dst] };\n}\n\n/**\n * graph/from-edge-list - Build a graph from an edge list and a node feature\n * matrix, per the std/graph.ts declared param order `(edges, features)`.\n * Accepts edges either as `[E, 2]` (row-per-edge `[src, dst]` pairs,\n * transposed to `[2, E]`) or already `[2, E]`, matching\n * `graph_from_edge_list`'s `edges.size(1) == 2` shape check. Same\n * declared-vs-codegen param-order divergence as graph/from-adjacency above.\n */\nexport function evalGraphFromEdgeList(args: SExpr[], evaluate: EvalFn, ctx: EvaluationContext): GraphData {\n const edges = evaluate(args[0], ctx) as TensorValue;\n const features = evaluate(args[1], ctx) as TensorValue[];\n const shape = tensorShape(edges);\n let edgeIndex: [number[], number[]];\n if (shape.length === 2 && shape[1] === 2) {\n const rows = edges as number[][];\n edgeIndex = [rows.map((r) => r[0]), rows.map((r) => r[1])];\n } else {\n const pair = edges as number[][];\n edgeIndex = [pair[0] ?? [], pair[1] ?? []];\n }\n return { x: features, edgeIndex };\n}\n\n// ============================================================================\n// Transforms\n// ============================================================================\n\n/** graph/add-self-loops - Append a self-loop edge for every node. */\nexport function evalGraphAddSelfLoops(args: SExpr[], evaluate: EvalFn, ctx: EvaluationContext): GraphData {\n const g = evaluate(args[0], ctx) as GraphData;\n const n = numNodes(g);\n const loop = Array.from({ length: n }, (_, i) => i);\n const [src, dst] = g.edgeIndex;\n return { x: g.x, edgeIndex: [[...src, ...loop], [...dst, ...loop]], edgeAttr: g.edgeAttr };\n}\n\n/** graph/to-undirected - Add the reverse of every edge. */\nexport function evalGraphToUndirected(args: SExpr[], evaluate: EvalFn, ctx: EvaluationContext): GraphData {\n const g = evaluate(args[0], ctx) as GraphData;\n const [src, dst] = g.edgeIndex;\n return { x: g.x, edgeIndex: [[...src, ...dst], [...dst, ...src]], edgeAttr: g.edgeAttr };\n}\n\n/** graph/subgraph - Extract the subgraph induced by a boolean node mask. */\nexport function evalGraphSubgraph(args: SExpr[], evaluate: EvalFn, ctx: EvaluationContext): GraphData {\n const g = evaluate(args[0], ctx) as GraphData;\n const mask = evaluate(args[1], ctx) as boolean[];\n return subgraphData(g, mask);\n}\n\n/**\n * graph/k-hop - BFS out to k hops from a node (edges treated as undirected\n * for reachability, matching `graph_k_hop`'s `s==n or d==n` check), then\n * subgraph on the visited-node mask.\n */\nexport function evalGraphKHop(args: SExpr[], evaluate: EvalFn, ctx: EvaluationContext): GraphData {\n const g = evaluate(args[0], ctx) as GraphData;\n const node = evaluate(args[1], ctx) as number;\n const k = evaluate(args[2], ctx) as number;\n const [src, dst] = g.edgeIndex;\n\n const visited = new Set<number>([node]);\n let frontier = new Set<number>([node]);\n for (let hop = 0; hop < k; hop++) {\n const next = new Set<number>();\n for (const n of frontier) {\n for (let e = 0; e < src.length; e++) {\n if (src[e] === n && !visited.has(dst[e])) next.add(dst[e]);\n if (dst[e] === n && !visited.has(src[e])) next.add(src[e]);\n }\n }\n for (const v of next) visited.add(v);\n frontier = next;\n }\n\n const mask = new Array(numNodes(g)).fill(false);\n for (const n of visited) mask[n] = true;\n return subgraphData(g, mask);\n}\n\n// ============================================================================\n// Accessors\n// ============================================================================\n\nexport function evalGraphNodeFeatures(args: SExpr[], evaluate: EvalFn, ctx: EvaluationContext): TensorValue[] {\n return (evaluate(args[0], ctx) as GraphData).x;\n}\n\nexport function evalGraphEdgeIndex(args: SExpr[], evaluate: EvalFn, ctx: EvaluationContext): [number[], number[]] {\n return (evaluate(args[0], ctx) as GraphData).edgeIndex;\n}\n\nexport function evalGraphEdgeFeatures(args: SExpr[], evaluate: EvalFn, ctx: EvaluationContext): TensorValue | undefined {\n return (evaluate(args[0], ctx) as GraphData).edgeAttr;\n}\n\nexport function evalGraphNumNodes(args: SExpr[], evaluate: EvalFn, ctx: EvaluationContext): number {\n return numNodes(evaluate(args[0], ctx) as GraphData);\n}\n\nexport function evalGraphNumEdges(args: SExpr[], evaluate: EvalFn, ctx: EvaluationContext): number {\n return (evaluate(args[0], ctx) as GraphData).edgeIndex[0].length;\n}\n\n/** graph/degree - Out-degree per node, counted from the source row only, matching `graph_degree`. */\nexport function evalGraphDegree(args: SExpr[], evaluate: EvalFn, ctx: EvaluationContext): number[] {\n const g = evaluate(args[0], ctx) as GraphData;\n const deg = new Array(numNodes(g)).fill(0);\n for (const s of g.edgeIndex[0]) deg[s]++;\n return deg;\n}\n\n// ============================================================================\n// Batching\n// ============================================================================\n\n/** graph/batch - Concatenate node features and edge indices (offset per graph); edge_attr is dropped, matching `graph_batch`. */\nexport function evalGraphBatch(args: SExpr[], evaluate: EvalFn, ctx: EvaluationContext): GraphData {\n const graphs = evaluate(args[0], ctx) as GraphData[];\n if (graphs.length === 0) return { x: [], edgeIndex: [[], []] };\n const x: TensorValue[] = [];\n const src: number[] = [];\n const dst: number[] = [];\n let offset = 0;\n for (const g of graphs) {\n x.push(...g.x);\n src.push(...g.edgeIndex[0].map((s) => s + offset));\n dst.push(...g.edgeIndex[1].map((d) => d + offset));\n offset += numNodes(g);\n }\n return { x, edgeIndex: [src, dst] };\n}\n","/**\n * Data Operators Runtime Evaluators\n *\n * Runtime implementations for data/* operators — dataset/dataloader\n * creation, splitting, normalization, augmentation, tokenization and\n * padding. Mirrors `data_helpers.py`\n * (`orbital-rust/crates/orbital-shell-python/src/backend.rs`, generator\n * `generate_data_helpers`) semantically. Tensors are plain JSON (see\n * contract.ts's `TensorValue`); a \"dataset\" is `{ data, config }` standing\n * in for Python's `OrbitalDataset`.\n *\n * @packageDocumentation\n */\n\nimport type { SExpr } from '../types/expression.js';\nimport type { EvaluationContext } from '../context.js';\nimport type { TensorValue } from './contract.js';\n\ntype EvalFn = (expr: SExpr, ctx: EvaluationContext) => unknown;\n\nexport interface DatasetValue {\n data: unknown[];\n config: Record<string, unknown>;\n}\n\nexport interface DataBatch {\n x: TensorValue[];\n y: TensorValue[];\n}\n\nexport interface DataLoaderValue {\n batches: DataBatch[];\n batchSize: number;\n numBatches: number;\n}\n\nfunction isPlainRecord(v: unknown): v is Record<string, unknown> {\n return typeof v === 'object' && v !== null && !Array.isArray(v);\n}\n\n/** Mirrors OrbitalDataset.__getitem__: dict -> (input/observation, target/output); list/tuple -> (item, item); else -> (item, item) verbatim. */\nfunction datasetGetItem(dataset: DatasetValue, idx: number): [TensorValue, TensorValue] {\n const item = dataset.data[idx];\n if (isPlainRecord(item)) {\n const x = (item.input ?? item.observation ?? []) as TensorValue;\n const y = (item.target ?? item.output ?? []) as TensorValue;\n return [x, y];\n }\n if (Array.isArray(item)) {\n return [item as TensorValue, item as TensorValue];\n }\n return [item as TensorValue, item as TensorValue];\n}\n\n/**\n * Minimal local mirror of prob.ts's seeded Mulberry32 PRNG (that module's\n * helpers are private/unexported, and this file must not touch prob.ts).\n * Reuses `ctx._probSeed` so `prob/seed` also makes data/* shuffling and\n * data/augment's noise deterministic.\n */\nfunction seededRandom(ctx: EvaluationContext): number {\n if (ctx._probSeed) {\n const seed = ctx._probSeed;\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 return Math.random();\n}\n\nfunction seededGaussian(ctx: EvaluationContext): number {\n const u1 = seededRandom(ctx);\n const u2 = seededRandom(ctx);\n return Math.sqrt(-2 * Math.log(u1)) * Math.cos(2 * Math.PI * u2);\n}\n\nfunction shuffleInPlace(arr: number[], ctx: EvaluationContext): void {\n for (let i = arr.length - 1; i > 0; i--) {\n const j = Math.floor(seededRandom(ctx) * (i + 1));\n const tmp = arr[i];\n arr[i] = arr[j];\n arr[j] = tmp;\n }\n}\n\nfunction tensorShape(t: TensorValue): number[] {\n if (typeof t === 'number') return [];\n if (t.length === 0) return [0];\n const first = t[0];\n if (typeof first === 'number') return [t.length];\n return [t.length, ...tensorShape(first)];\n}\n\nfunction rank(t: TensorValue): number {\n return tensorShape(t).length;\n}\n\nfunction sampleMean(vals: number[]): number {\n return vals.reduce((s, v) => s + v, 0) / vals.length;\n}\n\n/** Sample (n-1 denominator) standard deviation, matching torch's default `unbiased=True`. */\nfunction sampleStd(vals: number[], mean: number): number {\n if (vals.length <= 1) return 0;\n const variance = vals.reduce((s, v) => s + (v - mean) ** 2, 0) / (vals.length - 1);\n return Math.sqrt(variance);\n}\n\nfunction normalizeZScore(t: TensorValue): TensorValue {\n if (rank(t) <= 1) {\n const vals = t as number[];\n const mean = sampleMean(vals);\n const std = Math.max(sampleStd(vals, mean), 1e-8);\n return vals.map((v) => (v - mean) / std);\n }\n const rows = t as number[][];\n const cols = rows[0].length;\n const means: number[] = [];\n const stds: number[] = [];\n for (let c = 0; c < cols; c++) {\n const col = rows.map((r) => r[c]);\n const m = sampleMean(col);\n means.push(m);\n stds.push(Math.max(sampleStd(col, m), 1e-8));\n }\n return rows.map((r) => r.map((v, c) => (v - means[c]) / stds[c]));\n}\n\nfunction normalizeMinMax(t: TensorValue): TensorValue {\n if (rank(t) <= 1) {\n const vals = t as number[];\n const mn = Math.min(...vals);\n const mx = Math.max(...vals);\n const denom = Math.max(mx - mn, 1e-8);\n return vals.map((v) => (v - mn) / denom);\n }\n const rows = t as number[][];\n const cols = rows[0].length;\n const mins: number[] = [];\n const maxs: number[] = [];\n for (let c = 0; c < cols; c++) {\n const col = rows.map((r) => r[c]);\n mins.push(Math.min(...col));\n maxs.push(Math.max(...col));\n }\n return rows.map((r) => r.map((v, c) => (v - mins[c]) / Math.max(maxs[c] - mins[c], 1e-8)));\n}\n\nfunction mapTensor(t: TensorValue, fn: (v: number) => number): TensorValue {\n if (typeof t === 'number') return fn(t);\n return t.map((sub) => mapTensor(sub, fn));\n}\n\nfunction padOrTruncateLastDim(t: TensorValue, targetLen: number, padValue: number): TensorValue {\n if (typeof t === 'number') return t;\n if (t.length === 0 || typeof t[0] === 'number') {\n const row = t as number[];\n if (row.length < targetLen) {\n return [...row, ...new Array(targetLen - row.length).fill(padValue)];\n }\n return row.slice(0, targetLen);\n }\n return t.map((sub) => padOrTruncateLastDim(sub, targetLen, padValue));\n}\n\n// ============================================================================\n// Dataset Creation\n// ============================================================================\n\n/** data/dataset - Wrap a raw entity array with a preprocessing config, matching `data_dataset`. */\nexport function evalDataDataset(args: SExpr[], evaluate: EvalFn, ctx: EvaluationContext): DatasetValue {\n const data = evaluate(args[0], ctx);\n const config = evaluate(args[1], ctx) as Record<string, unknown>;\n return { data: Array.isArray(data) ? data : [], config };\n}\n\n/**\n * data/dataloader - Materialize batches of `(x, y)` item pairs. `shuffle`\n * defaults true; `batchSize`/`batch_size` defaults 32, matching\n * `data_dataloader`'s `DataLoader` construction. There is no dependency-free\n * JS equivalent of a *lazy* torch DataLoader iterator, so batches are\n * eagerly materialized here — the deterministic, dependency-free stand-in.\n */\nexport function evalDataDataloader(args: SExpr[], evaluate: EvalFn, ctx: EvaluationContext): DataLoaderValue {\n const dataset = evaluate(args[0], ctx) as DatasetValue;\n const config = evaluate(args[1], ctx) as Record<string, unknown>;\n const batchSize = (config.batchSize ?? config.batch_size ?? 32) as number;\n const shuffle = (config.shuffle ?? true) as boolean;\n\n const indices = Array.from({ length: dataset.data.length }, (_, i) => i);\n if (shuffle) shuffleInPlace(indices, ctx);\n\n const batches: DataBatch[] = [];\n for (let i = 0; i < indices.length; i += batchSize) {\n const chunk = indices.slice(i, i + batchSize);\n const x: TensorValue[] = [];\n const y: TensorValue[] = [];\n for (const idx of chunk) {\n const [xi, yi] = datasetGetItem(dataset, idx);\n x.push(xi);\n y.push(yi);\n }\n batches.push({ x, y });\n }\n return { batches, batchSize, numBatches: batches.length };\n}\n\n/** data/split - Random train/test split via `trainRatio`/`train_ratio` (default 0.8), matching `data_split`. */\nexport function evalDataSplit(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): [DatasetValue, DatasetValue] {\n const dataset = evaluate(args[0], ctx) as DatasetValue;\n const config = evaluate(args[1], ctx) as Record<string, unknown>;\n const ratio = (config.trainRatio ?? config.train_ratio ?? 0.8) as number;\n\n const trainSize = Math.trunc(dataset.data.length * ratio);\n const indices = Array.from({ length: dataset.data.length }, (_, i) => i);\n shuffleInPlace(indices, ctx);\n const trainIdx = indices.slice(0, trainSize);\n const testIdx = indices.slice(trainSize);\n\n return [\n { data: trainIdx.map((i) => dataset.data[i]), config: dataset.config },\n { data: testIdx.map((i) => dataset.data[i]), config: dataset.config },\n ];\n}\n\n// ============================================================================\n// Preprocessing\n// ============================================================================\n\n/**\n * data/normalize - `method: \"zscore\"` (default) or `\"minmax\"`, per-column\n * over a `[N, D]` matrix or globally over a flat `[D]` vector — matches\n * `data_normalize`'s `dim=0` reduction. An unrecognized method returns the\n * tensor unchanged, matching Python's fallthrough `return t`.\n */\nexport function evalDataNormalize(args: SExpr[], evaluate: EvalFn, ctx: EvaluationContext): TensorValue {\n const data = evaluate(args[0], ctx) as TensorValue;\n const config = evaluate(args[1], ctx) as Record<string, unknown>;\n const method = (config.method as string | undefined) ?? 'zscore';\n if (method === 'zscore') return normalizeZScore(data);\n if (method === 'minmax') return normalizeMinMax(data);\n return data;\n}\n\n/**\n * data/augment - Gaussian noise injection, `noiseScale`/`noise_scale`\n * default 0.01, matching `data_augment`. NOTE: the std/data.ts metadata\n * example (`{ \"flip\": true, \"rotate\": 15 }`) implies image-style\n * augmentation, but `data_augment` only ever reads `noiseScale`/`noise_scale`\n * — flip/rotate are undocumented no-ops on the Python path. Implemented to\n * match what `data_augment` actually does.\n */\nexport function evalDataAugment(args: SExpr[], evaluate: EvalFn, ctx: EvaluationContext): TensorValue {\n const data = evaluate(args[0], ctx) as TensorValue;\n const config = evaluate(args[1], ctx) as Record<string, unknown>;\n const noiseScale = (config.noiseScale ?? config.noise_scale ?? 0.01) as number;\n return mapTensor(data, (v) => v + seededGaussian(ctx) * noiseScale);\n}\n\n// ============================================================================\n// Tokenization & Padding\n// ============================================================================\n\n/**\n * data/tokenize - `config.mode` `\"char\"` (default, per-codepoint `ord`) or\n * `\"word\"` (whitespace split, `config.vocab` lookup, OOV -> 0), matching\n * `data_tokenize`. NOTE: the std/data.ts metadata calls the knob \"method\"\n * with a \"bpe\" example and a \"max-length\" cap — `data_tokenize` reads\n * `mode` (not \"method\") and has no BPE or length-capping support at all.\n * Implemented to match `data_tokenize`'s actual `mode` key and char/word\n * behavior, per this task's brief.\n */\nexport function evalDataTokenize(args: SExpr[], evaluate: EvalFn, ctx: EvaluationContext): number[] {\n const text = evaluate(args[0], ctx);\n const config = evaluate(args[1], ctx) as Record<string, unknown>;\n const mode = (config.mode as string | undefined) ?? 'char';\n const textStr = String(text);\n\n if (mode === 'word') {\n const vocab = (config.vocab as Record<string, number> | undefined) ?? {};\n return textStr\n .split(/\\s+/)\n .filter((w) => w.length > 0)\n .map((w) => vocab[w] ?? 0);\n }\n return Array.from(textStr).map((c) => c.codePointAt(0) ?? 0);\n}\n\n/** data/pad - Pad (with `padValue`/`pad_value`, default 0) or truncate the last axis to `length`/`targetLength`, matching `data_pad`. */\nexport function evalDataPad(args: SExpr[], evaluate: EvalFn, ctx: EvaluationContext): TensorValue {\n const data = evaluate(args[0], ctx) as TensorValue;\n const config = evaluate(args[1], ctx) as Record<string, unknown>;\n const currentLen = (() => {\n const shape = tensorShape(data);\n return shape.length === 0 ? 0 : shape[shape.length - 1];\n })();\n const targetLen = (config.length ?? config.targetLength ?? currentLen) as number;\n const padValue = (config.padValue ?? config.pad_value ?? 0) as number;\n return padOrTruncateLastDim(data, targetLen, padValue);\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 stdContract from './std/contract.js';\nimport * as stdGraph from './std/graph.js';\nimport * as stdData from './std/data.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 case 'array/cosine':\n return stdArray.evalArrayCosine(args, evaluate, ctx);\n case 'array/nearest':\n return stdArray.evalArrayNearest(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 // ===============================\n // Standard Library: contract/*\n // ===============================\n case 'contract/validate-input': return stdContract.evalContractValidateInput(args, evaluate, ctx);\n case 'contract/validate-output': return stdContract.evalContractValidateOutput(args, evaluate, ctx);\n case 'contract/clamp-output': return stdContract.evalContractClampOutput(args, evaluate, ctx);\n case 'contract/violations': return stdContract.evalContractViolations(args, evaluate, ctx);\n case 'contract/entity-to-tensor': return stdContract.evalContractEntityToTensor(args, evaluate, ctx);\n case 'contract/tensor-to-payload': return stdContract.evalContractTensorToPayload(args, evaluate, ctx);\n\n // ===============================\n // Standard Library: graph/*\n // ===============================\n case 'graph/from-entities': return stdGraph.evalGraphFromEntities(args, evaluate, ctx);\n case 'graph/from-adjacency': return stdGraph.evalGraphFromAdjacency(args, evaluate, ctx);\n case 'graph/from-edge-list': return stdGraph.evalGraphFromEdgeList(args, evaluate, ctx);\n case 'graph/add-self-loops': return stdGraph.evalGraphAddSelfLoops(args, evaluate, ctx);\n case 'graph/to-undirected': return stdGraph.evalGraphToUndirected(args, evaluate, ctx);\n case 'graph/subgraph': return stdGraph.evalGraphSubgraph(args, evaluate, ctx);\n case 'graph/k-hop': return stdGraph.evalGraphKHop(args, evaluate, ctx);\n case 'graph/node-features': return stdGraph.evalGraphNodeFeatures(args, evaluate, ctx);\n case 'graph/edge-index': return stdGraph.evalGraphEdgeIndex(args, evaluate, ctx);\n case 'graph/edge-features': return stdGraph.evalGraphEdgeFeatures(args, evaluate, ctx);\n case 'graph/num-nodes': return stdGraph.evalGraphNumNodes(args, evaluate, ctx);\n case 'graph/num-edges': return stdGraph.evalGraphNumEdges(args, evaluate, ctx);\n case 'graph/degree': return stdGraph.evalGraphDegree(args, evaluate, ctx);\n case 'graph/batch': return stdGraph.evalGraphBatch(args, evaluate, ctx);\n\n // ===============================\n // Standard Library: data/*\n // ===============================\n case 'data/dataset': return stdData.evalDataDataset(args, evaluate, ctx);\n case 'data/dataloader': return stdData.evalDataDataloader(args, evaluate, ctx);\n case 'data/split': return stdData.evalDataSplit(args, evaluate, ctx);\n case 'data/normalize': return stdData.evalDataNormalize(args, evaluate, ctx);\n case 'data/augment': return stdData.evalDataAugment(args, evaluate, ctx);\n case 'data/tokenize': return stdData.evalDataTokenize(args, evaluate, ctx);\n case 'data/pad': return stdData.evalDataPad(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","/**\n * The canonical evaluator for `listens { … with { field: <expr> } }` mapping\n * values.\n *\n * `@almadar/core` owns the mapping contract (`applyListenPayloadMapping`) but\n * sits upstream of this package and cannot evaluate. Every delivery path — the\n * server runtime and the client cross-trait wiring — passes THIS function, so\n * the two paths cannot drift into different `with{}` semantics.\n *\n * The binding context is payload-only, matching `orbital-core`'s listener\n * fan-out (`runtime/listener.rs:107-109`, `runtime/kernel.rs:687-689`), which\n * builds `BindingContextBuilder::new().payload(…).build()`. Binding `@entity`\n * or `@config` here would let a mapping resolve on the JS path and silently\n * yield nothing on the compiled one.\n *\n * @packageDocumentation\n */\n\nimport type { ListenPayloadEvaluator } from '@almadar/core';\nimport { createMinimalContext } from './context.js';\nimport { evaluate } from './SExpressionEvaluator.js';\n\nexport const evaluateListenPayloadExpr: ListenPayloadEvaluator = (expr, payload) =>\n evaluate(expr, createMinimalContext({}, payload));\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/contract.ts","../std/graph.ts","../std/data.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","../listen-payload.ts"],"names":["key","evaluate","toNumber","p","childCtx","deepEqual","tensorShape","z","asVec","num","sector","idx","asCell"],"mappings":"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AAA;AAAA,EAAK,EAAA;AAAA,EAAI,EAAA;AAAA,EAAI,EAAA;AAAA,EAAI,GAAA;AAAA,EAAK,EAAA;AAAA,EAAI,GAAA;AAAA,EAAK,EAAA;AAAA,EAAI,EAAA;AAAA,EAAI,EAAA;AAAA,EAAI,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,CAAA;AAAA,EAAG,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,EAAA;AAAA,EAC5E,GAAA;AAAA,EAAK,EAAA;AAAA,EAAI,EAAA;AAAA,EAAI,GAAA;AAAA,EAAK,CAAA;AAAA,EAAG,EAAA;AAAA,EAAI,EAAA;AAAA,EAAI,GAAA;AAAA,EAAK,EAAA;AAAA,EAAI,EAAA;AAAA,EAAI,EAAA;AAAA,EAAI,GAAA;AAAA,EAAK,CAAA;AAAA,EAAG,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,EAAA;AAAA,EAAI,CAAA;AAAA,EAC9E,EAAA;AAAA,EAAI,GAAA;AAAA,EAAK,EAAA;AAAA,EAAI,EAAA;AAAA,EAAI,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,EAAA;AAAA,EAAI,EAAA;AAAA,EAAI,EAAA;AAAA,EAAI,EAAA;AAAA,EAAI,GAAA;AAAA,EAAK,EAAA;AAAA,EAAI,EAAA;AAAA,EAAI,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,EAAA;AAAA,EAC5E,EAAA;AAAA,EAAI,GAAA;AAAA,EAAK,EAAA;AAAA,EAAI,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,EAAA;AAAA,EAAI,GAAA;AAAA,EAAK,EAAA;AAAA,EAAI,GAAA;AAAA,EAAK,EAAA;AAAA,EAAI,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,EAAA;AAAA,EAAI,EAAA;AAAA,EAAI,GAAA;AAAA,EAAK,EAAA;AAAA,EAC9E,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,EAAA;AAAA,EAAI,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,EAAA;AAAA,EAAI,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,EAAA;AAAA,EAAI,EAAA;AAAA,EAAI,EAAA;AAAA,EAAI,EAAA;AAAA,EAC3E,GAAA;AAAA,EAAK,EAAA;AAAA,EAAI,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,EAAA;AAAA,EAAI,EAAA;AAAA,EAAI,EAAA;AAAA,EAAI,EAAA;AAAA,EAAI,GAAA;AAAA,EAAK,CAAA;AAAA,EAAG,GAAA;AAAA,EAAK,EAAA;AAAA,EAAI,EAAA;AAAA,EAAI,GAAA;AAAA,EAAK,EAAA;AAAA,EAAI,GAAA;AAAA,EAAK,GAAA;AAAA,EAC3E,GAAA;AAAA,EAAK,EAAA;AAAA,EAAI,EAAA;AAAA,EAAI,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,EAAA;AAAA,EAAI,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAC7E,GAAA;AAAA,EAAK,CAAA;AAAA,EAAG,EAAA;AAAA,EAAI,EAAA;AAAA,EAAI,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,CAAA;AAAA,EAAG,GAAA;AAAA,EAAK,EAAA;AAAA,EAAI,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,EAAA;AAAA,EAAI,EAAA;AAAA,EAC7E,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,EAAA;AAAA,EAAI,GAAA;AAAA,EAAK,EAAA;AAAA,EAAI,EAAA;AAAA,EAAI,EAAA;AAAA,EAAI,EAAA;AAAA,EAAI,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,EAAA;AAAA,EAAI,EAAA;AAAA,EAAI,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAC9E,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,CAAA;AAAA,EAAG,EAAA;AAAA,EAAI,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,EAAA;AAAA,EAAI,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,EAAA;AAAA,EAAI,GAAA;AAAA,EAAK,CAAA;AAAA,EAAG,GAAA;AAAA,EAAK,EAAA;AAAA,EAAI,EAAA;AAAA,EAC7E,GAAA;AAAA,EAAK,EAAA;AAAA,EAAI,EAAA;AAAA,EAAI,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,EAAA;AAAA,EAAI,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,EAAA;AAAA,EAAI,GAAA;AAAA,EAC5E,GAAA;AAAA,EAAK,EAAA;AAAA,EAAI,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,EAAA;AAAA,EAAI,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,EAAA;AAAA,EAAI,EAAA;AAAA,EAAI,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAC5E,EAAA;AAAA,EAAI,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,EAAA;AAAA,EAAI,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,EAAA;AAAA,EAAI,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,EAAA;AAAA,EAAI,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAC5E,EAAA;AAAA,EAAI,EAAA;AAAA,EAAI,GAAA;AAAA,EAAK,CAAA;AAAA,EAAG,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,GAAA;AAAA,EAAK,EAAA;AAAA,EAAI,GAAA;AAAA,EAAK,GAA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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 — owned by `@almadar/core` so the\n * interpreter and the compiled shell resolve the same field names.\n */\nexport type { UserContext } from '@almadar/core';\nimport type { UserContext } from '@almadar/core';\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';\nimport type { RuntimeValue } from '@almadar/core';\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) as RuntimeValue;\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) as RuntimeValue;\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) => RuntimeValue)(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/**\n * Cosine similarity, agreeing numerically with @almadar/llm's\n * embedding-client.ts `cosineSimilarity` on well-formed input. Diverges on\n * malformed input: length mismatch, an empty vector, or a zero-magnitude\n * vector all throw instead of returning 0 — 0 is a legitimate orthogonal\n * result and must stay distinguishable from a malformed-input failure.\n */\nfunction cosineSimilarity(a: readonly number[], b: readonly number[]): number {\n if (a.length !== b.length) {\n throw new Error(`array/cosine: vector length mismatch (${a.length} vs ${b.length})`);\n }\n if (a.length === 0) {\n throw new Error('array/cosine: empty vector has no defined similarity');\n }\n let dot = 0;\n let normA = 0;\n let normB = 0;\n for (let i = 0; i < a.length; i++) {\n const av = a[i];\n const bv = b[i];\n dot += av * bv;\n normA += av * av;\n normB += bv * bv;\n }\n if (normA === 0 || normB === 0) {\n throw new Error('array/cosine: zero-magnitude vector has no defined direction to compare');\n }\n return dot / (Math.sqrt(normA) * Math.sqrt(normB));\n}\n\n/**\n * array/cosine - Cosine similarity between two numeric arrays. Pure math,\n * no side effects, no ctx.llm dependency — works on arrays the caller\n * already has (e.g. embeddings from llm/embed).\n */\nexport function evalArrayCosine(\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 cosineSimilarity(a, b);\n}\n\n/**\n * array/nearest - Best-matching candidate by cosine similarity, plus the\n * margin (best score minus runner-up score) that gates abstention. With a\n * single candidate there is no runner-up to establish a margin against, so\n * margin is defined as 0 — that forces a margin-gate to abstain rather than\n * fabricate confidence from a comparison that was never actually made.\n */\nexport function evalArrayNearest(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): { index: number; score: number; margin: number } {\n const query = evaluate(args[0], ctx) as number[];\n const candidates = evaluate(args[1], ctx) as number[][];\n if (candidates.length === 0) {\n throw new Error('array/nearest: candidates array is empty, no nearest match exists');\n }\n const scores = candidates.map((c) => cosineSimilarity(query, c));\n\n let bestIdx = 0;\n let bestScore = scores[0];\n for (let i = 1; i < scores.length; i++) {\n if (scores[i] > bestScore) {\n bestScore = scores[i];\n bestIdx = i;\n }\n }\n\n let secondBest = -Infinity;\n for (let i = 0; i < scores.length; i++) {\n if (i === bestIdx) continue;\n if (scores[i] > secondBest) secondBest = scores[i];\n }\n\n const margin = scores.length === 1 ? 0 : bestScore - secondBest;\n return { index: bestIdx, score: bestScore, margin };\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 // One pass, longest token first: replacing in map order lets `MM` consume\n // the head of `MMM` (\"MMM D\" → \"077 5\"), and a multi-pass loop can also\n // re-substitute inside an already-emitted value (\"July\" → \"Ju1y\").\n const pattern = new RegExp(\n Object.keys(tokens)\n .sort((a, b) => b.length - a.length)\n .join('|'),\n 'g',\n );\n\n return format.replace(pattern, (token) => tokens[token]);\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 * Contract Operators Runtime Evaluators\n *\n * Runtime implementations for contract/* operators — tensor <-> entity\n * conversion and input/output contract validation for the R4 (learned rung)\n * inference seam. The pure validation core lives in `@almadar/core`\n * (`ml-contract.ts`) so the compiled TypeScript shell imports the SAME\n * implementation this runtime path uses — the two paths cannot drift.\n * Both mirror `contract_helpers.py`\n * (`orbital-rust/crates/orbital-shell-python/src/backend.rs`, generator\n * `generate_contract_helpers`) semantically so the JS runtime path and the\n * emitted Python target agree on the same contract JSON in / JSON out.\n *\n * @packageDocumentation\n */\n\nimport {\n contractFieldName,\n describeTensorMismatch,\n isTensorValue,\n mapTensorLastDim,\n tensorLastDimSize,\n validateContract,\n} from '@almadar/core';\nimport type {\n ContractSpec,\n ContractValidationResult,\n ContractViolation,\n TensorValue,\n} from '@almadar/core';\nimport type { SExpr } from '../types/expression.js';\nimport type { EvaluationContext } from '../context.js';\n\ntype EvalFn = (expr: SExpr, ctx: EvaluationContext) => unknown;\n\nexport type {\n ContractFieldEntry,\n ContractFieldSpec,\n ContractRange,\n ContractSpec,\n ContractValidationResult,\n ContractViolation,\n TensorValue,\n} from '@almadar/core';\n\nfunction clampContract(tensor: unknown, contract: ContractSpec): TensorValue {\n if (!isTensorValue(tensor)) {\n throw new Error(\n `contract/clamp-output: expected a tensor (a number, or nested arrays of numbers), received ${describeTensorMismatch(tensor)}. Validate with contract/validate-output before clamping.`\n );\n }\n const ranges = contract.ranges ?? {};\n const size = tensorLastDimSize(tensor);\n let result = tensor;\n for (const [dimStr, bounds] of Object.entries(ranges)) {\n const dim = Number(dimStr);\n if (dim >= size) continue;\n const min = bounds.min ?? -Infinity;\n const max = bounds.max ?? Infinity;\n result = mapTensorLastDim(result, dim, (v) => Math.min(Math.max(v, min), max));\n }\n return result;\n}\n\n/**\n * contract/validate-input - Validate a tensor against an input contract.\n * NOTE: the std/contract.ts metadata declares `returnType: 'boolean'`, but\n * contract_validate_input in contract_helpers.py returns `{valid, violations}` —\n * a metadata/implementation divergence. Implemented to match the Python\n * helper (the thing a future golden-vector harness will diff against).\n */\nexport function evalContractValidateInput(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): ContractValidationResult {\n const tensor = evaluate(args[0], ctx);\n const contract = evaluate(args[1], ctx) as ContractSpec;\n return validateContract(tensor, contract);\n}\n\n/** contract/validate-output - contract_validate_output is a pure alias of contract_validate_input in Python. */\nexport function evalContractValidateOutput(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): ContractValidationResult {\n return evalContractValidateInput(args, evaluate, ctx);\n}\n\n/** contract/clamp-output - Clamp each ranged dimension of the tensor into [min, max]. */\nexport function evalContractClampOutput(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): TensorValue {\n const tensor = evaluate(args[0], ctx);\n const contract = evaluate(args[1], ctx) as ContractSpec;\n return clampContract(tensor, contract);\n}\n\n/** contract/violations - The violations list from validateContract, matching contract_violations. */\nexport function evalContractViolations(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): ContractViolation[] {\n const tensor = evaluate(args[0], ctx);\n const contract = evaluate(args[1], ctx) as ContractSpec;\n return validateContract(tensor, contract).violations;\n}\n\n/**\n * contract/entity-to-tensor - Convert entity fields to a flat tensor via\n * `contract.fields`. Non-numeric field values coerce to 0, matching Python's\n * `float(val) if isinstance(val, (int, float)) else 0.0`.\n */\nexport function evalContractEntityToTensor(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): TensorValue {\n const entity = evaluate(args[0], ctx) as Record<string, unknown>;\n const contract = evaluate(args[1], ctx) as ContractSpec;\n const fields = contract.fields ?? [];\n return fields.map((f) => {\n const val = entity[contractFieldName(f)];\n return typeof val === 'number' ? val : 0;\n });\n}\n\n/**\n * contract/tensor-to-payload - Convert a tensor back to a `{fieldName: value}`\n * payload via `contract.fields`, matching Python's index-aligned zip.\n */\nexport function evalContractTensorToPayload(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): Record<string, TensorValue> {\n const tensor = evaluate(args[0], ctx);\n if (!isTensorValue(tensor)) {\n throw new Error(\n `contract/tensor-to-payload: expected a tensor (a number, or nested arrays of numbers), received ${describeTensorMismatch(tensor)}.`\n );\n }\n const contract = evaluate(args[1], ctx) as ContractSpec;\n const fields = contract.fields ?? [];\n const values: TensorValue[] = Array.isArray(tensor) ? tensor : [tensor];\n const result: Record<string, TensorValue> = {};\n fields.forEach((f, i) => {\n if (i < values.length) result[contractFieldName(f)] = values[i];\n });\n return result;\n}\n","/**\n * Graph Operators Runtime Evaluators\n *\n * Runtime implementations for graph/* operators — construction, transforms,\n * accessors and batching for GNN-shaped circuit data. Mirrors\n * `graph_helpers.py` (`orbital-rust/crates/orbital-shell-python/src/backend.rs`,\n * generator `generate_graph_helpers`) semantically. A plain\n * `{ x, edgeIndex, edgeAttr }` object stands in for Python's `GraphData`\n * class; `x` is node features (rows = nodes), `edgeIndex` is `[srcs, dsts]`\n * (mirrors torch's `[2, num_edges]` layout), `edgeAttr` is optional edge\n * features. Tensors are plain JSON (see contract.ts's `TensorValue`).\n *\n * @packageDocumentation\n */\n\nimport type { SExpr } from '../types/expression.js';\nimport type { EvaluationContext } from '../context.js';\nimport type { TensorValue } from './contract.js';\n\ntype EvalFn = (expr: SExpr, ctx: EvaluationContext) => unknown;\n\nexport interface GraphData {\n x: TensorValue[];\n edgeIndex: [number[], number[]];\n edgeAttr?: TensorValue;\n}\n\nfunction tensorShape(t: TensorValue): number[] {\n if (typeof t === 'number') return [];\n if (t.length === 0) return [0];\n const first = t[0];\n if (typeof first === 'number') return [t.length];\n return [t.length, ...tensorShape(first)];\n}\n\nfunction numNodes(g: GraphData): number {\n return g.x.length;\n}\n\nfunction subgraphData(g: GraphData, mask: boolean[]): GraphData {\n const nodeMap: number[] = new Array(numNodes(g)).fill(-1);\n const x: TensorValue[] = [];\n let next = 0;\n for (let i = 0; i < numNodes(g); i++) {\n if (mask[i]) {\n nodeMap[i] = next++;\n x.push(g.x[i]);\n }\n }\n const [srcAll, dstAll] = g.edgeIndex;\n const src: number[] = [];\n const dst: number[] = [];\n for (let k = 0; k < srcAll.length; k++) {\n const s = srcAll[k];\n const d = dstAll[k];\n if (mask[s] && mask[d]) {\n src.push(nodeMap[s]);\n dst.push(nodeMap[d]);\n }\n }\n // edge_attr is dropped, matching graph_subgraph's `GraphData(x=x, edge_index=edge_index)`.\n return { x, edgeIndex: [src, dst] };\n}\n\n// ============================================================================\n// Construction\n// ============================================================================\n\n/**\n * graph/from-entities - Build a graph from an entity array; each entity\n * becomes a node whose feature row is its numeric field values (Python's\n * `isinstance(v, (int, float))` also matches bool, so booleans coerce to\n * 0/1 here too), padded to the longest row. No edges are produced — matches\n * `graph_from_entities` exactly. NOTE: the std/graph.ts metadata declares a\n * single `config` object param (`{nodes, edges, node-features, ...}`), but\n * the Python codegen forwards arg0 straight through to\n * `graph_from_entities(entities: List[Dict])` — a raw entity array, not a\n * config object. Implemented to match what actually runs.\n */\nexport function evalGraphFromEntities(args: SExpr[], evaluate: EvalFn, ctx: EvaluationContext): GraphData {\n const entities = evaluate(args[0], ctx) as Record<string, unknown>[];\n if (entities.length === 0) {\n return { x: [], edgeIndex: [[], []] };\n }\n const features = entities.map((e) => {\n const row = Object.values(e)\n .filter((v): v is number | boolean => typeof v === 'number' || typeof v === 'boolean')\n .map((v) => (typeof v === 'boolean' ? (v ? 1 : 0) : v));\n return row.length > 0 ? row : [0];\n });\n const maxLen = Math.max(...features.map((r) => r.length));\n const x = features.map((r) => [...r, ...new Array(maxLen - r.length).fill(0)]);\n return { x, edgeIndex: [[], []] };\n}\n\n/**\n * graph/from-adjacency - Build a graph from an adjacency matrix (edges via\n * nonzero, row-major torch order) and a node feature matrix, per the\n * std/graph.ts declared param order `(adjacency, features)`. NOTE: the\n * Python codegen forwards args positionally into\n * `graph_from_adjacency(features, adj_matrix)` — the OPPOSITE order — so a\n * `.lolo` call site following the documented `(adjacency, features)`\n * contract binds arg0 to Python's `features` and arg1 to `adj_matrix`,\n * silently swapping the two on the compiled path. Implemented here to match\n * the DECLARED contract (std/graph.ts is the operator's source of truth);\n * this is a real compiler-side divergence, flagged for orbital-rust\n * (ask-first, sacred).\n */\nexport function evalGraphFromAdjacency(args: SExpr[], evaluate: EvalFn, ctx: EvaluationContext): GraphData {\n const adjacency = evaluate(args[0], ctx) as number[][];\n const features = evaluate(args[1], ctx) as TensorValue[];\n const src: number[] = [];\n const dst: number[] = [];\n for (let i = 0; i < adjacency.length; i++) {\n const row = adjacency[i];\n for (let j = 0; j < row.length; j++) {\n if (row[j] !== 0) {\n src.push(i);\n dst.push(j);\n }\n }\n }\n return { x: features, edgeIndex: [src, dst] };\n}\n\n/**\n * graph/from-edge-list - Build a graph from an edge list and a node feature\n * matrix, per the std/graph.ts declared param order `(edges, features)`.\n * Accepts edges either as `[E, 2]` (row-per-edge `[src, dst]` pairs,\n * transposed to `[2, E]`) or already `[2, E]`, matching\n * `graph_from_edge_list`'s `edges.size(1) == 2` shape check. Same\n * declared-vs-codegen param-order divergence as graph/from-adjacency above.\n */\nexport function evalGraphFromEdgeList(args: SExpr[], evaluate: EvalFn, ctx: EvaluationContext): GraphData {\n const edges = evaluate(args[0], ctx) as TensorValue;\n const features = evaluate(args[1], ctx) as TensorValue[];\n const shape = tensorShape(edges);\n let edgeIndex: [number[], number[]];\n if (shape.length === 2 && shape[1] === 2) {\n const rows = edges as number[][];\n edgeIndex = [rows.map((r) => r[0]), rows.map((r) => r[1])];\n } else {\n const pair = edges as number[][];\n edgeIndex = [pair[0] ?? [], pair[1] ?? []];\n }\n return { x: features, edgeIndex };\n}\n\n// ============================================================================\n// Transforms\n// ============================================================================\n\n/** graph/add-self-loops - Append a self-loop edge for every node. */\nexport function evalGraphAddSelfLoops(args: SExpr[], evaluate: EvalFn, ctx: EvaluationContext): GraphData {\n const g = evaluate(args[0], ctx) as GraphData;\n const n = numNodes(g);\n const loop = Array.from({ length: n }, (_, i) => i);\n const [src, dst] = g.edgeIndex;\n return { x: g.x, edgeIndex: [[...src, ...loop], [...dst, ...loop]], edgeAttr: g.edgeAttr };\n}\n\n/** graph/to-undirected - Add the reverse of every edge. */\nexport function evalGraphToUndirected(args: SExpr[], evaluate: EvalFn, ctx: EvaluationContext): GraphData {\n const g = evaluate(args[0], ctx) as GraphData;\n const [src, dst] = g.edgeIndex;\n return { x: g.x, edgeIndex: [[...src, ...dst], [...dst, ...src]], edgeAttr: g.edgeAttr };\n}\n\n/** graph/subgraph - Extract the subgraph induced by a boolean node mask. */\nexport function evalGraphSubgraph(args: SExpr[], evaluate: EvalFn, ctx: EvaluationContext): GraphData {\n const g = evaluate(args[0], ctx) as GraphData;\n const mask = evaluate(args[1], ctx) as boolean[];\n return subgraphData(g, mask);\n}\n\n/**\n * graph/k-hop - BFS out to k hops from a node (edges treated as undirected\n * for reachability, matching `graph_k_hop`'s `s==n or d==n` check), then\n * subgraph on the visited-node mask.\n */\nexport function evalGraphKHop(args: SExpr[], evaluate: EvalFn, ctx: EvaluationContext): GraphData {\n const g = evaluate(args[0], ctx) as GraphData;\n const node = evaluate(args[1], ctx) as number;\n const k = evaluate(args[2], ctx) as number;\n const [src, dst] = g.edgeIndex;\n\n const visited = new Set<number>([node]);\n let frontier = new Set<number>([node]);\n for (let hop = 0; hop < k; hop++) {\n const next = new Set<number>();\n for (const n of frontier) {\n for (let e = 0; e < src.length; e++) {\n if (src[e] === n && !visited.has(dst[e])) next.add(dst[e]);\n if (dst[e] === n && !visited.has(src[e])) next.add(src[e]);\n }\n }\n for (const v of next) visited.add(v);\n frontier = next;\n }\n\n const mask = new Array(numNodes(g)).fill(false);\n for (const n of visited) mask[n] = true;\n return subgraphData(g, mask);\n}\n\n// ============================================================================\n// Accessors\n// ============================================================================\n\nexport function evalGraphNodeFeatures(args: SExpr[], evaluate: EvalFn, ctx: EvaluationContext): TensorValue[] {\n return (evaluate(args[0], ctx) as GraphData).x;\n}\n\nexport function evalGraphEdgeIndex(args: SExpr[], evaluate: EvalFn, ctx: EvaluationContext): [number[], number[]] {\n return (evaluate(args[0], ctx) as GraphData).edgeIndex;\n}\n\nexport function evalGraphEdgeFeatures(args: SExpr[], evaluate: EvalFn, ctx: EvaluationContext): TensorValue | undefined {\n return (evaluate(args[0], ctx) as GraphData).edgeAttr;\n}\n\nexport function evalGraphNumNodes(args: SExpr[], evaluate: EvalFn, ctx: EvaluationContext): number {\n return numNodes(evaluate(args[0], ctx) as GraphData);\n}\n\nexport function evalGraphNumEdges(args: SExpr[], evaluate: EvalFn, ctx: EvaluationContext): number {\n return (evaluate(args[0], ctx) as GraphData).edgeIndex[0].length;\n}\n\n/** graph/degree - Out-degree per node, counted from the source row only, matching `graph_degree`. */\nexport function evalGraphDegree(args: SExpr[], evaluate: EvalFn, ctx: EvaluationContext): number[] {\n const g = evaluate(args[0], ctx) as GraphData;\n const deg = new Array(numNodes(g)).fill(0);\n for (const s of g.edgeIndex[0]) deg[s]++;\n return deg;\n}\n\n// ============================================================================\n// Batching\n// ============================================================================\n\n/** graph/batch - Concatenate node features and edge indices (offset per graph); edge_attr is dropped, matching `graph_batch`. */\nexport function evalGraphBatch(args: SExpr[], evaluate: EvalFn, ctx: EvaluationContext): GraphData {\n const graphs = evaluate(args[0], ctx) as GraphData[];\n if (graphs.length === 0) return { x: [], edgeIndex: [[], []] };\n const x: TensorValue[] = [];\n const src: number[] = [];\n const dst: number[] = [];\n let offset = 0;\n for (const g of graphs) {\n x.push(...g.x);\n src.push(...g.edgeIndex[0].map((s) => s + offset));\n dst.push(...g.edgeIndex[1].map((d) => d + offset));\n offset += numNodes(g);\n }\n return { x, edgeIndex: [src, dst] };\n}\n","/**\n * Data Operators Runtime Evaluators\n *\n * Runtime implementations for data/* operators — dataset/dataloader\n * creation, splitting, normalization, augmentation, tokenization and\n * padding. Mirrors `data_helpers.py`\n * (`orbital-rust/crates/orbital-shell-python/src/backend.rs`, generator\n * `generate_data_helpers`) semantically. Tensors are plain JSON (see\n * contract.ts's `TensorValue`); a \"dataset\" is `{ data, config }` standing\n * in for Python's `OrbitalDataset`.\n *\n * @packageDocumentation\n */\n\nimport type { SExpr } from '../types/expression.js';\nimport type { EvaluationContext } from '../context.js';\nimport type { TensorValue } from './contract.js';\n\ntype EvalFn = (expr: SExpr, ctx: EvaluationContext) => unknown;\n\nexport interface DatasetValue {\n data: unknown[];\n config: Record<string, unknown>;\n}\n\nexport interface DataBatch {\n x: TensorValue[];\n y: TensorValue[];\n}\n\nexport interface DataLoaderValue {\n batches: DataBatch[];\n batchSize: number;\n numBatches: number;\n}\n\nfunction isPlainRecord(v: unknown): v is Record<string, unknown> {\n return typeof v === 'object' && v !== null && !Array.isArray(v);\n}\n\n/** Mirrors OrbitalDataset.__getitem__: dict -> (input/observation, target/output); list/tuple -> (item, item); else -> (item, item) verbatim. */\nfunction datasetGetItem(dataset: DatasetValue, idx: number): [TensorValue, TensorValue] {\n const item = dataset.data[idx];\n if (isPlainRecord(item)) {\n const x = (item.input ?? item.observation ?? []) as TensorValue;\n const y = (item.target ?? item.output ?? []) as TensorValue;\n return [x, y];\n }\n if (Array.isArray(item)) {\n return [item as TensorValue, item as TensorValue];\n }\n return [item as TensorValue, item as TensorValue];\n}\n\n/**\n * Minimal local mirror of prob.ts's seeded Mulberry32 PRNG (that module's\n * helpers are private/unexported, and this file must not touch prob.ts).\n * Reuses `ctx._probSeed` so `prob/seed` also makes data/* shuffling and\n * data/augment's noise deterministic.\n */\nfunction seededRandom(ctx: EvaluationContext): number {\n if (ctx._probSeed) {\n const seed = ctx._probSeed;\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 return Math.random();\n}\n\nfunction seededGaussian(ctx: EvaluationContext): number {\n const u1 = seededRandom(ctx);\n const u2 = seededRandom(ctx);\n return Math.sqrt(-2 * Math.log(u1)) * Math.cos(2 * Math.PI * u2);\n}\n\nfunction shuffleInPlace(arr: number[], ctx: EvaluationContext): void {\n for (let i = arr.length - 1; i > 0; i--) {\n const j = Math.floor(seededRandom(ctx) * (i + 1));\n const tmp = arr[i];\n arr[i] = arr[j];\n arr[j] = tmp;\n }\n}\n\nfunction tensorShape(t: TensorValue): number[] {\n if (typeof t === 'number') return [];\n if (t.length === 0) return [0];\n const first = t[0];\n if (typeof first === 'number') return [t.length];\n return [t.length, ...tensorShape(first)];\n}\n\nfunction rank(t: TensorValue): number {\n return tensorShape(t).length;\n}\n\nfunction sampleMean(vals: number[]): number {\n return vals.reduce((s, v) => s + v, 0) / vals.length;\n}\n\n/** Sample (n-1 denominator) standard deviation, matching torch's default `unbiased=True`. */\nfunction sampleStd(vals: number[], mean: number): number {\n if (vals.length <= 1) return 0;\n const variance = vals.reduce((s, v) => s + (v - mean) ** 2, 0) / (vals.length - 1);\n return Math.sqrt(variance);\n}\n\nfunction normalizeZScore(t: TensorValue): TensorValue {\n if (rank(t) <= 1) {\n const vals = t as number[];\n const mean = sampleMean(vals);\n const std = Math.max(sampleStd(vals, mean), 1e-8);\n return vals.map((v) => (v - mean) / std);\n }\n const rows = t as number[][];\n const cols = rows[0].length;\n const means: number[] = [];\n const stds: number[] = [];\n for (let c = 0; c < cols; c++) {\n const col = rows.map((r) => r[c]);\n const m = sampleMean(col);\n means.push(m);\n stds.push(Math.max(sampleStd(col, m), 1e-8));\n }\n return rows.map((r) => r.map((v, c) => (v - means[c]) / stds[c]));\n}\n\nfunction normalizeMinMax(t: TensorValue): TensorValue {\n if (rank(t) <= 1) {\n const vals = t as number[];\n const mn = Math.min(...vals);\n const mx = Math.max(...vals);\n const denom = Math.max(mx - mn, 1e-8);\n return vals.map((v) => (v - mn) / denom);\n }\n const rows = t as number[][];\n const cols = rows[0].length;\n const mins: number[] = [];\n const maxs: number[] = [];\n for (let c = 0; c < cols; c++) {\n const col = rows.map((r) => r[c]);\n mins.push(Math.min(...col));\n maxs.push(Math.max(...col));\n }\n return rows.map((r) => r.map((v, c) => (v - mins[c]) / Math.max(maxs[c] - mins[c], 1e-8)));\n}\n\nfunction mapTensor(t: TensorValue, fn: (v: number) => number): TensorValue {\n if (typeof t === 'number') return fn(t);\n return t.map((sub) => mapTensor(sub, fn));\n}\n\nfunction padOrTruncateLastDim(t: TensorValue, targetLen: number, padValue: number): TensorValue {\n if (typeof t === 'number') return t;\n if (t.length === 0 || typeof t[0] === 'number') {\n const row = t as number[];\n if (row.length < targetLen) {\n return [...row, ...new Array(targetLen - row.length).fill(padValue)];\n }\n return row.slice(0, targetLen);\n }\n return t.map((sub) => padOrTruncateLastDim(sub, targetLen, padValue));\n}\n\n// ============================================================================\n// Dataset Creation\n// ============================================================================\n\n/** data/dataset - Wrap a raw entity array with a preprocessing config, matching `data_dataset`. */\nexport function evalDataDataset(args: SExpr[], evaluate: EvalFn, ctx: EvaluationContext): DatasetValue {\n const data = evaluate(args[0], ctx);\n const config = evaluate(args[1], ctx) as Record<string, unknown>;\n return { data: Array.isArray(data) ? data : [], config };\n}\n\n/**\n * data/dataloader - Materialize batches of `(x, y)` item pairs. `shuffle`\n * defaults true; `batchSize`/`batch_size` defaults 32, matching\n * `data_dataloader`'s `DataLoader` construction. There is no dependency-free\n * JS equivalent of a *lazy* torch DataLoader iterator, so batches are\n * eagerly materialized here — the deterministic, dependency-free stand-in.\n */\nexport function evalDataDataloader(args: SExpr[], evaluate: EvalFn, ctx: EvaluationContext): DataLoaderValue {\n const dataset = evaluate(args[0], ctx) as DatasetValue;\n const config = evaluate(args[1], ctx) as Record<string, unknown>;\n const batchSize = (config.batchSize ?? config.batch_size ?? 32) as number;\n const shuffle = (config.shuffle ?? true) as boolean;\n\n const indices = Array.from({ length: dataset.data.length }, (_, i) => i);\n if (shuffle) shuffleInPlace(indices, ctx);\n\n const batches: DataBatch[] = [];\n for (let i = 0; i < indices.length; i += batchSize) {\n const chunk = indices.slice(i, i + batchSize);\n const x: TensorValue[] = [];\n const y: TensorValue[] = [];\n for (const idx of chunk) {\n const [xi, yi] = datasetGetItem(dataset, idx);\n x.push(xi);\n y.push(yi);\n }\n batches.push({ x, y });\n }\n return { batches, batchSize, numBatches: batches.length };\n}\n\n/** data/split - Random train/test split via `trainRatio`/`train_ratio` (default 0.8), matching `data_split`. */\nexport function evalDataSplit(\n args: SExpr[],\n evaluate: EvalFn,\n ctx: EvaluationContext\n): [DatasetValue, DatasetValue] {\n const dataset = evaluate(args[0], ctx) as DatasetValue;\n const config = evaluate(args[1], ctx) as Record<string, unknown>;\n const ratio = (config.trainRatio ?? config.train_ratio ?? 0.8) as number;\n\n const trainSize = Math.trunc(dataset.data.length * ratio);\n const indices = Array.from({ length: dataset.data.length }, (_, i) => i);\n shuffleInPlace(indices, ctx);\n const trainIdx = indices.slice(0, trainSize);\n const testIdx = indices.slice(trainSize);\n\n return [\n { data: trainIdx.map((i) => dataset.data[i]), config: dataset.config },\n { data: testIdx.map((i) => dataset.data[i]), config: dataset.config },\n ];\n}\n\n// ============================================================================\n// Preprocessing\n// ============================================================================\n\n/**\n * data/normalize - `method: \"zscore\"` (default) or `\"minmax\"`, per-column\n * over a `[N, D]` matrix or globally over a flat `[D]` vector — matches\n * `data_normalize`'s `dim=0` reduction. An unrecognized method returns the\n * tensor unchanged, matching Python's fallthrough `return t`.\n */\nexport function evalDataNormalize(args: SExpr[], evaluate: EvalFn, ctx: EvaluationContext): TensorValue {\n const data = evaluate(args[0], ctx) as TensorValue;\n const config = evaluate(args[1], ctx) as Record<string, unknown>;\n const method = (config.method as string | undefined) ?? 'zscore';\n if (method === 'zscore') return normalizeZScore(data);\n if (method === 'minmax') return normalizeMinMax(data);\n return data;\n}\n\n/**\n * data/augment - Gaussian noise injection, `noiseScale`/`noise_scale`\n * default 0.01, matching `data_augment`. NOTE: the std/data.ts metadata\n * example (`{ \"flip\": true, \"rotate\": 15 }`) implies image-style\n * augmentation, but `data_augment` only ever reads `noiseScale`/`noise_scale`\n * — flip/rotate are undocumented no-ops on the Python path. Implemented to\n * match what `data_augment` actually does.\n */\nexport function evalDataAugment(args: SExpr[], evaluate: EvalFn, ctx: EvaluationContext): TensorValue {\n const data = evaluate(args[0], ctx) as TensorValue;\n const config = evaluate(args[1], ctx) as Record<string, unknown>;\n const noiseScale = (config.noiseScale ?? config.noise_scale ?? 0.01) as number;\n return mapTensor(data, (v) => v + seededGaussian(ctx) * noiseScale);\n}\n\n// ============================================================================\n// Tokenization & Padding\n// ============================================================================\n\n/**\n * data/tokenize - `config.mode` `\"char\"` (default, per-codepoint `ord`) or\n * `\"word\"` (whitespace split, `config.vocab` lookup, OOV -> 0), matching\n * `data_tokenize`. NOTE: the std/data.ts metadata calls the knob \"method\"\n * with a \"bpe\" example and a \"max-length\" cap — `data_tokenize` reads\n * `mode` (not \"method\") and has no BPE or length-capping support at all.\n * Implemented to match `data_tokenize`'s actual `mode` key and char/word\n * behavior, per this task's brief.\n */\nexport function evalDataTokenize(args: SExpr[], evaluate: EvalFn, ctx: EvaluationContext): number[] {\n const text = evaluate(args[0], ctx);\n const config = evaluate(args[1], ctx) as Record<string, unknown>;\n const mode = (config.mode as string | undefined) ?? 'char';\n const textStr = String(text);\n\n if (mode === 'word') {\n const vocab = (config.vocab as Record<string, number> | undefined) ?? {};\n return textStr\n .split(/\\s+/)\n .filter((w) => w.length > 0)\n .map((w) => vocab[w] ?? 0);\n }\n return Array.from(textStr).map((c) => c.codePointAt(0) ?? 0);\n}\n\n/** data/pad - Pad (with `padValue`/`pad_value`, default 0) or truncate the last axis to `length`/`targetLength`, matching `data_pad`. */\nexport function evalDataPad(args: SExpr[], evaluate: EvalFn, ctx: EvaluationContext): TensorValue {\n const data = evaluate(args[0], ctx) as TensorValue;\n const config = evaluate(args[1], ctx) as Record<string, unknown>;\n const currentLen = (() => {\n const shape = tensorShape(data);\n return shape.length === 0 ? 0 : shape[shape.length - 1];\n })();\n const targetLen = (config.length ?? config.targetLength ?? currentLen) as number;\n const padValue = (config.padValue ?? config.pad_value ?? 0) as number;\n return padOrTruncateLastDim(data, targetLen, padValue);\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 type RuntimeValue,\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: RuntimeValue): 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: RuntimeValue): 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';\nimport type { RuntimeValue } from '@almadar/core';\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) as RuntimeValue;\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) as RuntimeValue;\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) as RuntimeValue;\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, RuntimeValue } 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) as RuntimeValue;\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) as RuntimeValue;\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';\nimport type { RuntimeValue } from '@almadar/core';\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) as RuntimeValue : 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) as RuntimeValue : 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 stdContract from './std/contract.js';\nimport * as stdGraph from './std/graph.js';\nimport * as stdData from './std/data.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 case 'array/cosine':\n return stdArray.evalArrayCosine(args, evaluate, ctx);\n case 'array/nearest':\n return stdArray.evalArrayNearest(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 // ===============================\n // Standard Library: contract/*\n // ===============================\n case 'contract/validate-input': return stdContract.evalContractValidateInput(args, evaluate, ctx);\n case 'contract/validate-output': return stdContract.evalContractValidateOutput(args, evaluate, ctx);\n case 'contract/clamp-output': return stdContract.evalContractClampOutput(args, evaluate, ctx);\n case 'contract/violations': return stdContract.evalContractViolations(args, evaluate, ctx);\n case 'contract/entity-to-tensor': return stdContract.evalContractEntityToTensor(args, evaluate, ctx);\n case 'contract/tensor-to-payload': return stdContract.evalContractTensorToPayload(args, evaluate, ctx);\n\n // ===============================\n // Standard Library: graph/*\n // ===============================\n case 'graph/from-entities': return stdGraph.evalGraphFromEntities(args, evaluate, ctx);\n case 'graph/from-adjacency': return stdGraph.evalGraphFromAdjacency(args, evaluate, ctx);\n case 'graph/from-edge-list': return stdGraph.evalGraphFromEdgeList(args, evaluate, ctx);\n case 'graph/add-self-loops': return stdGraph.evalGraphAddSelfLoops(args, evaluate, ctx);\n case 'graph/to-undirected': return stdGraph.evalGraphToUndirected(args, evaluate, ctx);\n case 'graph/subgraph': return stdGraph.evalGraphSubgraph(args, evaluate, ctx);\n case 'graph/k-hop': return stdGraph.evalGraphKHop(args, evaluate, ctx);\n case 'graph/node-features': return stdGraph.evalGraphNodeFeatures(args, evaluate, ctx);\n case 'graph/edge-index': return stdGraph.evalGraphEdgeIndex(args, evaluate, ctx);\n case 'graph/edge-features': return stdGraph.evalGraphEdgeFeatures(args, evaluate, ctx);\n case 'graph/num-nodes': return stdGraph.evalGraphNumNodes(args, evaluate, ctx);\n case 'graph/num-edges': return stdGraph.evalGraphNumEdges(args, evaluate, ctx);\n case 'graph/degree': return stdGraph.evalGraphDegree(args, evaluate, ctx);\n case 'graph/batch': return stdGraph.evalGraphBatch(args, evaluate, ctx);\n\n // ===============================\n // Standard Library: data/*\n // ===============================\n case 'data/dataset': return stdData.evalDataDataset(args, evaluate, ctx);\n case 'data/dataloader': return stdData.evalDataDataloader(args, evaluate, ctx);\n case 'data/split': return stdData.evalDataSplit(args, evaluate, ctx);\n case 'data/normalize': return stdData.evalDataNormalize(args, evaluate, ctx);\n case 'data/augment': return stdData.evalDataAugment(args, evaluate, ctx);\n case 'data/tokenize': return stdData.evalDataTokenize(args, evaluate, ctx);\n case 'data/pad': return stdData.evalDataPad(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","/**\n * The canonical evaluator for `listens { … with { field: <expr> } }` mapping\n * values.\n *\n * `@almadar/core` owns the mapping contract (`applyListenPayloadMapping`) but\n * sits upstream of this package and cannot evaluate. Every delivery path — the\n * server runtime and the client cross-trait wiring — passes THIS function, so\n * the two paths cannot drift into different `with{}` semantics.\n *\n * The binding context is payload-only, matching `orbital-core`'s listener\n * fan-out (`runtime/listener.rs:107-109`, `runtime/kernel.rs:687-689`), which\n * builds `BindingContextBuilder::new().payload(…).build()`. Binding `@entity`\n * or `@config` here would let a mapping resolve on the JS path and silently\n * yield nothing on the compiled one.\n *\n * @packageDocumentation\n */\n\nimport type { ListenPayloadEvaluator, RuntimeValue } from '@almadar/core';\nimport { createMinimalContext } from './context.js';\nimport { evaluate } from './SExpressionEvaluator.js';\n\nexport const evaluateListenPayloadExpr: ListenPayloadEvaluator = (expr, payload) =>\n evaluate(expr, createMinimalContext({}, payload)) as RuntimeValue;\n"]}
|