@manifesto-ai/core 2.13.0 → 5.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -6,14 +6,14 @@
6
6
 
7
7
  ## What is Core?
8
8
 
9
- Core is responsible for evaluating domain semantics. Given a schema, snapshot, and intent, it computes what patches and effects should result—but never executes them.
9
+ Core is responsible for evaluating domain semantics. Given a schema, snapshot, intent, and context, it computes what patches and requirements should result—but never executes them.
10
10
 
11
11
  In the Manifesto architecture:
12
12
 
13
13
  ```
14
14
  Host -> CORE -> ComputeResult
15
15
  |
16
- Computes patches & effects
16
+ Computes patches & requirements
17
17
  (pure, no IO, deterministic)
18
18
  ```
19
19
 
@@ -23,7 +23,7 @@ Host -> CORE -> ComputeResult
23
23
 
24
24
  | Responsibility | Description |
25
25
  |----------------|-------------|
26
- | Compute state transitions | Given (schema, snapshot, intent), produce patches and effects |
26
+ | Compute state transitions | Given (schema, snapshot, intent, context), produce patches and requirements |
27
27
  | Apply patches | Transform snapshots by applying patch operations |
28
28
  | Validate schemas | Check DomainSchema structure for correctness |
29
29
  | Explain values | Trace why a computed value has its current result |
@@ -56,7 +56,7 @@ pnpm add @manifesto-ai/core
56
56
 
57
57
  ```typescript
58
58
  import { createCore, createSnapshot, createIntent } from "@manifesto-ai/core";
59
- import type { DomainSchema } from "@manifesto-ai/core";
59
+ import type { Context, DomainSchema } from "@manifesto-ai/core";
60
60
 
61
61
  // Create core instance
62
62
  const core = createCore();
@@ -85,7 +85,7 @@ const schema: DomainSchema = {
85
85
  flow: {
86
86
  kind: "patch",
87
87
  op: "set",
88
- path: "count",
88
+ path: [{ kind: "prop", name: "count" }],
89
89
  value: {
90
90
  kind: "add",
91
91
  left: { kind: "get", path: "count" },
@@ -96,8 +96,11 @@ const schema: DomainSchema = {
96
96
  },
97
97
  };
98
98
 
99
- // Create host context (deterministic inputs)
100
- const context = { now: 0, randomSeed: "seed" };
99
+ // Create owner-neutral ADR-027 context (deterministic inputs)
100
+ const context: Context = {
101
+ runtime: { time: { timestamp: 0 }, random: { seed: "seed" } },
102
+ external: {},
103
+ };
101
104
 
102
105
  // Create initial snapshot
103
106
  const snapshot = createSnapshot({ count: 0 }, schema.hash, context);
@@ -107,9 +110,12 @@ const intent = createIntent("increment", "intent-1");
107
110
 
108
111
  // Compute result (pure, deterministic)
109
112
  const result = await core.compute(schema, snapshot, intent, context);
113
+ const patched = core.apply(schema, snapshot, result.patches);
114
+ const namespaced = core.applyNamespaceDeltas(patched, result.namespaceDelta ?? []);
115
+ const next = core.applySystemDelta(namespaced, result.systemDelta);
110
116
 
111
117
  console.log(result.status); // -> "complete"
112
- console.log(result.snapshot.data.count); // -> 1
118
+ console.log(next.state.count); // -> 1
113
119
  ```
114
120
 
115
121
  > See [GUIDE.md](docs/GUIDE.md) for the full tutorial.
@@ -127,17 +133,17 @@ function createCore(): ManifestoCore;
127
133
  // Core interface
128
134
  interface ManifestoCore {
129
135
  compute(schema, snapshot, intent, context): Promise<ComputeResult>;
130
- apply(schema, snapshot, patches, context): Snapshot;
136
+ apply(schema, snapshot, patches): Snapshot;
131
137
  validate(schema): ValidationResult;
132
138
  explain(schema, snapshot, path): ExplainResult;
133
139
  }
134
140
 
135
141
  // Key types
136
- type DomainSchema = { id, version, hash, types, state, computed, actions, meta? };
137
- type Snapshot = { data, computed, system, input, meta };
142
+ type DomainSchema = { id, version, hash, types, state, context?, computed, actions, meta? };
143
+ type Snapshot = { state, computed, system, input, meta, namespaces };
138
144
  type Intent = { type, input?, intentId };
139
145
  type Patch = { op: "set" | "unset" | "merge", path, value? };
140
- type ComputeResult = { status, snapshot, requirements, trace };
146
+ type ComputeResult = { status, patches, namespaceDelta?, systemDelta, trace };
141
147
  ```
142
148
 
143
149
  > See [core-SPEC.md](docs/core-SPEC.md) for the current living specification.
@@ -152,7 +158,7 @@ All communication between Core and Host happens through Snapshot. There is no hi
152
158
 
153
159
  ### Deterministic Computation
154
160
 
155
- Given the same (schema, snapshot, intent), Core always produces the same result. This enables:
161
+ Given the same (schema, snapshot, intent, context), Core always produces the same result. This enables:
156
162
  - Reliable testing without mocks
157
163
  - Time-travel debugging
158
164
  - Reproducible bug reports
@@ -1,11 +1,17 @@
1
1
  import type { DomainSchema } from "../schema/domain.js";
2
2
  import type { Snapshot } from "../schema/snapshot.js";
3
3
  import type { Patch } from "../schema/patch.js";
4
- import type { HostContext } from "../schema/host-context.js";
4
+ import type { NamespaceDelta } from "../schema/result.js";
5
5
  /**
6
- * Apply patches to snapshot.data and recompute computed values.
6
+ * Apply domain patches to snapshot.state and recompute computed values.
7
7
  *
8
- * Patch targets are rooted at snapshot.data only.
8
+ * Patch targets are rooted at snapshot.state only.
9
9
  * System transitions are handled by applySystemDelta().
10
10
  */
11
- export declare function apply(schema: DomainSchema, snapshot: Snapshot, patches: readonly Patch[], context: HostContext): Snapshot;
11
+ export declare function apply(schema: DomainSchema, snapshot: Snapshot, patches: readonly Patch[]): Snapshot;
12
+ /**
13
+ * Apply namespace transitions to snapshot.namespaces.
14
+ *
15
+ * Patch targets are rooted at snapshot.namespaces[namespace].
16
+ */
17
+ export declare function applyNamespaceDeltas(snapshot: Snapshot, deltas: readonly NamespaceDelta[]): Snapshot;
@@ -2,18 +2,18 @@ import type { DomainSchema } from "../schema/domain.js";
2
2
  import type { Snapshot } from "../schema/snapshot.js";
3
3
  import type { Intent } from "../schema/patch.js";
4
4
  import type { ComputeResult } from "../schema/result.js";
5
- import type { HostContext } from "../schema/host-context.js";
5
+ import { type Context as CoreContext } from "../schema/context.js";
6
6
  /**
7
7
  * Compute the result of dispatching an intent (synchronous).
8
8
  *
9
9
  * This is the canonical computation path. Each call is independent -
10
10
  * there is no suspended context.
11
11
  */
12
- export declare function computeSync(schema: DomainSchema, snapshot: Snapshot, intent: Intent, context: HostContext): ComputeResult;
12
+ export declare function computeSync(schema: DomainSchema, snapshot: Snapshot, intent: Intent, context: CoreContext): ComputeResult;
13
13
  /**
14
14
  * Compute the result of dispatching an intent (async wrapper).
15
15
  */
16
- export declare function compute(schema: DomainSchema, snapshot: Snapshot, intent: Intent, context: HostContext): Promise<ComputeResult>;
16
+ export declare function compute(schema: DomainSchema, snapshot: Snapshot, intent: Intent, context: CoreContext): Promise<ComputeResult>;
17
17
  /**
18
18
  * Validate only the caller-provided input portion of an intent.
19
19
  * Returns an error message when the intent is malformed, or null when valid.
@@ -0,0 +1,11 @@
1
+ import type { DomainSchema } from "../schema/domain.js";
2
+ import type { ValidationResult } from "../schema/result.js";
3
+ import type { JsonValue } from "../schema/context.js";
4
+ /**
5
+ * Validate a materialized ADR-027 external context value against a schema.
6
+ *
7
+ * This helper validates only the user-owned `Context.external` partition.
8
+ * Manifesto-owned `Context.runtime` is validated by the canonical `Context`
9
+ * schema at the compute boundary.
10
+ */
11
+ export declare function validateExternalContext(schema: DomainSchema, external: Record<string, JsonValue>): ValidationResult;
@@ -1,4 +1,5 @@
1
1
  export { validate } from "./validate.js";
2
- export { apply } from "./apply.js";
2
+ export { validateExternalContext } from "./context-validation.js";
3
+ export { apply, applyNamespaceDeltas } from "./apply.js";
3
4
  export { compute, computeSync } from "./compute.js";
4
5
  export { explain } from "./explain.js";
package/dist/errors.d.ts CHANGED
@@ -5,6 +5,7 @@ import type { ErrorValue } from "./schema/snapshot.js";
5
5
  */
6
6
  export declare const CoreErrorCode: z.ZodEnum<{
7
7
  VALIDATION_ERROR: "VALIDATION_ERROR";
8
+ INVALID_PATCH_PATH: "INVALID_PATCH_PATH";
8
9
  PATH_NOT_FOUND: "PATH_NOT_FOUND";
9
10
  TYPE_MISMATCH: "TYPE_MISMATCH";
10
11
  DIVISION_BY_ZERO: "DIVISION_BY_ZERO";
@@ -12,6 +13,7 @@ export declare const CoreErrorCode: z.ZodEnum<{
12
13
  UNKNOWN_ACTION: "UNKNOWN_ACTION";
13
14
  ACTION_UNAVAILABLE: "ACTION_UNAVAILABLE";
14
15
  INVALID_INPUT: "INVALID_INPUT";
16
+ INVALID_CONTEXT: "INVALID_CONTEXT";
15
17
  CYCLIC_DEPENDENCY: "CYCLIC_DEPENDENCY";
16
18
  UNKNOWN_FLOW: "UNKNOWN_FLOW";
17
19
  CYCLIC_CALL: "CYCLIC_CALL";
@@ -1,6 +1,11 @@
1
1
  import type { Snapshot } from "../schema/snapshot.js";
2
2
  import type { DomainSchema } from "../schema/domain.js";
3
+ import type { Context } from "../schema/context.js";
3
4
  import { type TraceContext } from "../schema/trace.js";
5
+ export type EvalPhase = "flow" | "computed" | "availability" | "dispatchability" | "snapshot";
6
+ type RuntimeAllocationState = {
7
+ ordinal: number;
8
+ };
4
9
  /**
5
10
  * Evaluation context for expressions and flows
6
11
  */
@@ -26,9 +31,25 @@ export type EvalContext = {
26
31
  */
27
32
  readonly intentId?: string;
28
33
  /**
29
- * UUID generator counter (for deterministic UUID generation)
34
+ * Runtime context for bound action flow evaluation.
35
+ */
36
+ readonly context?: Context;
37
+ /**
38
+ * Current evaluation phase. Runtime/context reads are legal only in flow.
39
+ */
40
+ readonly phase: EvalPhase;
41
+ /**
42
+ * Context-local occurrence ordinal for deterministic runtime allocation.
43
+ */
44
+ runtimeOrdinal?: number;
45
+ /**
46
+ * Shared deterministic runtime allocator for cloned nested evaluation contexts.
47
+ */
48
+ runtimeAllocator?: RuntimeAllocationState;
49
+ /**
50
+ * Current expression allocation path for deterministic runtime values.
30
51
  */
31
- uuidCounter?: number;
52
+ expressionPath?: string;
32
53
  /**
33
54
  * Trace context for deterministic trace ID generation
34
55
  */
@@ -39,14 +60,17 @@ export type EvalContext = {
39
60
  readonly $item?: unknown;
40
61
  readonly $index?: number;
41
62
  readonly $array?: unknown[];
63
+ readonly collectionStack?: readonly number[];
42
64
  };
43
65
  /**
44
66
  * Create a new evaluation context
45
67
  *
46
68
  * @param timestampOrTrace - Required timestamp or TraceContext for deterministic tracing.
47
- * MUST be provided by Host via HostContext.now to ensure determinism.
48
69
  */
49
- export declare function createContext(snapshot: Snapshot, schema: DomainSchema, currentAction: string | null, nodePath: string, intentId: string | undefined, timestampOrTrace: number | TraceContext): EvalContext;
70
+ export declare function createContext(snapshot: Snapshot, schema: DomainSchema, currentAction: string | null, nodePath: string, intentId: string | undefined, timestampOrTrace: number | TraceContext, options?: {
71
+ readonly context?: Context;
72
+ readonly phase?: EvalPhase;
73
+ }): EvalContext;
50
74
  /**
51
75
  * Create context with collection variables for filter/map/find/etc.
52
76
  */
@@ -59,3 +83,4 @@ export declare function withSnapshot(ctx: EvalContext, snapshot: Snapshot): Eval
59
83
  * Update context with new node path
60
84
  */
61
85
  export declare function withNodePath(ctx: EvalContext, nodePath: string): EvalContext;
86
+ export {};
@@ -1,6 +1,7 @@
1
1
  import type { FlowNode } from "../schema/flow.js";
2
2
  import type { Snapshot, Requirement, ErrorValue } from "../schema/snapshot.js";
3
3
  import type { Patch } from "../schema/patch.js";
4
+ import type { NamespaceDelta } from "../schema/result.js";
4
5
  import type { TraceNode } from "../schema/trace.js";
5
6
  import { type EvalContext } from "./context.js";
6
7
  /**
@@ -14,6 +15,7 @@ export type FlowState = {
14
15
  readonly snapshot: Snapshot;
15
16
  readonly status: FlowStatus;
16
17
  readonly patches: readonly Patch[];
18
+ readonly namespaceDelta: readonly NamespaceDelta[];
17
19
  readonly requirements: readonly Requirement[];
18
20
  readonly error: ErrorValue | null;
19
21
  };
@@ -1,14 +1,14 @@
1
1
  import type { Snapshot } from "./schema/snapshot.js";
2
2
  import type { Intent } from "./schema/patch.js";
3
- import type { HostContext } from "./schema/host-context.js";
3
+ import type { Context } from "./schema/context.js";
4
4
  /**
5
- * Create a new snapshot with initial data
5
+ * Create a new snapshot with initial state
6
6
  *
7
- * @param data - Initial domain data
7
+ * @param state - Initial domain state
8
8
  * @param schemaHash - Hash of the schema this snapshot conforms to
9
9
  * @returns New snapshot
10
10
  */
11
- export declare function createSnapshot<T>(data: T, schemaHash: string, context: HostContext): Snapshot;
11
+ export declare function createSnapshot<T>(state: T, schemaHash: string, context: Context): Snapshot;
12
12
  /**
13
13
  * Create an intent
14
14
  *
package/dist/index.d.ts CHANGED
@@ -9,13 +9,14 @@ import type { DomainSchema } from "./schema/domain.js";
9
9
  import type { Snapshot } from "./schema/snapshot.js";
10
10
  import type { Intent, Patch } from "./schema/patch.js";
11
11
  import type { SemanticPath } from "./schema/common.js";
12
- import type { ComputeResult, ValidationResult, ExplainResult, SystemDelta } from "./schema/result.js";
13
- import type { HostContext } from "./schema/host-context.js";
12
+ import type { ComputeResult, ValidationResult, ExplainResult, NamespaceDelta, SystemDelta } from "./schema/result.js";
13
+ import type { Context, JsonValue } from "./schema/context.js";
14
14
  import { compute, computeSync, validateIntentInput } from "./core/compute.js";
15
- import { apply } from "./core/apply.js";
15
+ import { apply, applyNamespaceDeltas } from "./core/apply.js";
16
16
  import { applySystemDelta } from "./core/system-delta.js";
17
17
  import { validate } from "./core/validate.js";
18
18
  import { explain } from "./core/explain.js";
19
+ import { validateExternalContext } from "./core/context-validation.js";
19
20
  import { getAvailableActions, isActionAvailable, isIntentDispatchable } from "./core/action-availability.js";
20
21
  /**
21
22
  * ManifestoCore interface
@@ -27,16 +28,20 @@ export interface ManifestoCore {
27
28
  * This is the ONLY entry point for computation.
28
29
  * Each call is independent - there is no suspended context.
29
30
  */
30
- compute(schema: DomainSchema, snapshot: Snapshot, intent: Intent, context: HostContext): Promise<ComputeResult>;
31
+ compute(schema: DomainSchema, snapshot: Snapshot, intent: Intent, context: Context): Promise<ComputeResult>;
31
32
  /**
32
33
  * Compute the result of dispatching an intent (synchronous).
33
34
  */
34
- computeSync(schema: DomainSchema, snapshot: Snapshot, intent: Intent, context: HostContext): ComputeResult;
35
+ computeSync(schema: DomainSchema, snapshot: Snapshot, intent: Intent, context: Context): ComputeResult;
35
36
  /**
36
37
  * Apply patches to a snapshot.
37
38
  * Returns new snapshot with recomputed values.
38
39
  */
39
- apply(schema: DomainSchema, snapshot: Snapshot, patches: readonly Patch[], context: HostContext): Snapshot;
40
+ apply(schema: DomainSchema, snapshot: Snapshot, patches: readonly Patch[]): Snapshot;
41
+ /**
42
+ * Apply namespace transitions to a snapshot.
43
+ */
44
+ applyNamespaceDeltas(snapshot: Snapshot, deltas: readonly NamespaceDelta[]): Snapshot;
40
45
  /**
41
46
  * Apply a system transition emitted by compute().
42
47
  */
@@ -61,6 +66,10 @@ export interface ManifestoCore {
61
66
  * Check whether a specific bound intent is dispatchable against the current snapshot.
62
67
  */
63
68
  isIntentDispatchable(schema: DomainSchema, snapshot: Snapshot, intent: Intent): boolean;
69
+ /**
70
+ * Validate a materialized ADR-027 external context value against the schema.
71
+ */
72
+ validateExternalContext(schema: DomainSchema, external: Record<string, JsonValue>): ValidationResult;
64
73
  }
65
74
  /**
66
75
  * Create a ManifestoCore instance
@@ -71,4 +80,4 @@ export * from "./utils/index.js";
71
80
  export * from "./evaluator/index.js";
72
81
  export * from "./errors.js";
73
82
  export * from "./factories.js";
74
- export { compute, computeSync, validateIntentInput, apply, applySystemDelta, validate, explain, isActionAvailable, getAvailableActions, isIntentDispatchable, };
83
+ export { compute, computeSync, validateIntentInput, apply, applyNamespaceDeltas, applySystemDelta, validate, validateExternalContext, explain, isActionAvailable, getAvailableActions, isIntentDispatchable, };
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- import{z as Ht}from"zod";var Za=Ht.enum(["VALIDATION_ERROR","PATH_NOT_FOUND","TYPE_MISMATCH","DIVISION_BY_ZERO","INDEX_OUT_OF_BOUNDS","UNKNOWN_ACTION","ACTION_UNAVAILABLE","INVALID_INPUT","CYCLIC_DEPENDENCY","UNKNOWN_FLOW","CYCLIC_CALL","UNKNOWN_EFFECT","INTERNAL_ERROR"]);function v(e,r,t,n,o,a){return{code:e,message:r,source:{actionId:t,nodePath:n},timestamp:o,context:a}}function La(e){if(typeof e!="object"||e===null)return!1;let r=e;return typeof r.code=="string"&&typeof r.message=="string"&&typeof r.source=="object"&&r.source!==null&&typeof r.source.actionId=="string"&&typeof r.source.nodePath=="string"&&typeof r.timestamp=="number"}import{z as w}from"zod";function Ie(e){if(e==null)return e;if(Array.isArray(e))return e.map(Ie);if(typeof e=="object"){let r={},t=Object.keys(e).sort();for(let n of t){let o=e[n];o!==void 0&&(r[n]=Ie(o))}return r}return e}function le(e){let r=Ie(e);return JSON.stringify(r)}function Ha(e){return De(e)}function De(e){if(e===null)return"null";switch(typeof e){case"string":return JSON.stringify(e);case"number":return Number.isFinite(e)?JSON.stringify(e):"null";case"boolean":return e?"true":"false";case"undefined":return"null";case"object":return Array.isArray(e)?Wt(e):Bt(e);default:return"null"}}function Wt(e){return`[${e.map(t=>t===void 0||typeof t=="function"||typeof t=="symbol"?"null":De(t)).join(",")}]`}function Bt(e){let r=Object.keys(e).sort(oe),t=[];for(let n of r){let o=e[n];o===void 0||typeof o=="function"||typeof o=="symbol"||t.push(`${JSON.stringify(n)}:${De(o)}`)}return`{${t.join(",")}}`}function oe(e,r){let t=Array.from(e),n=Array.from(r),o=Math.min(t.length,n.length);for(let a=0;a<o;a++){let s=t[a].codePointAt(0)??0,p=n[a].codePointAt(0)??0;if(s!==p)return s-p}return t.length-n.length}function Wa(e){return JSON.parse(e)}function Ba(e,r){return le(e)===le(r)}function Qe(e,r){if(r==="effective")return e;let t=e.state?.fields??{},n=Object.entries(t).filter(([o])=>!o.startsWith("$"));return n.length===Object.keys(t).length?e:{...e,state:{...e.state,fields:Object.fromEntries(n)}}}async function et(e){let r=new TextEncoder().encode(e),t=await crypto.subtle.digest("SHA-256",r);return Array.from(new Uint8Array(t)).map(o=>o.toString(16).padStart(2,"0")).join("")}var Kt=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),Gt=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]);function M(e,r){return e>>>r|e<<32-r}function Yt(e){let r=e.length*8,t=e.length+1,n=t%64<=56?56-t%64:120-t%64,o=t+n+8,a=new Uint8Array(o);a.set(e),a[e.length]=128;let s=Math.floor(r/4294967296),p=r>>>0;a[o-8]=s>>>24&255,a[o-7]=s>>>16&255,a[o-6]=s>>>8&255,a[o-5]=s&255,a[o-4]=p>>>24&255,a[o-3]=p>>>16&255,a[o-2]=p>>>8&255,a[o-1]=p&255;let u=new Uint32Array(Gt),d=new DataView(a.buffer);for(let m=0;m<a.length;m+=64){let E=new Uint32Array(64);for(let R=0;R<16;R++)E[R]=d.getUint32(m+R*4);for(let R=16;R<64;R++){let Pe=M(E[R-15],7)^M(E[R-15],18)^E[R-15]>>>3,Fe=M(E[R-2],17)^M(E[R-2],19)^E[R-2]>>>10;E[R]=E[R-16]+Pe+E[R-7]+Fe>>>0}let C=u[0],I=u[1],F=u[2],A=u[3],q=u[4],H=u[5],J=u[6],Ce=u[7];for(let R=0;R<64;R++){let Pe=M(q,6)^M(q,11)^M(q,25),Fe=q&H^~q&J,Xe=Ce+Pe+Fe+Kt[R]+E[R]>>>0,Zt=M(C,2)^M(C,13)^M(C,22),Lt=C&I^C&F^I&F,_t=Zt+Lt>>>0;Ce=J,J=H,H=q,q=A+Xe>>>0,A=F,F=I,I=C,C=Xe+_t>>>0}u[0]=u[0]+C>>>0,u[1]=u[1]+I>>>0,u[2]=u[2]+F>>>0,u[3]=u[3]+A>>>0,u[4]=u[4]+q>>>0,u[5]=u[5]+H>>>0,u[6]=u[6]+J>>>0,u[7]=u[7]+Ce>>>0}let h=new Uint8Array(32),b=new DataView(h.buffer);for(let m=0;m<u.length;m++)b.setUint32(m*4,u[m]);return h}function tt(e){let r=new TextEncoder().encode(e),t=Yt(r),n="";for(let o of t)n+=o.toString(16).padStart(2,"0");return n}async function Jt(e,r="semantic"){let t=le(Qe(e,r));return et(t)}function Oe(e,r="semantic"){let t=le(Qe(e,r));return tt(t)}async function Ya(e){return Jt(e,"effective")}function Ja(e){return Oe(e,"effective")}async function Xa(e,r,t,n){let o=`${e}:${r}:${t}:${n}`;return`req-${(await et(o)).slice(0,16)}`}function rt(e,r,t,n){let o=`${e}:${r}:${t}:${n}`;return`req-${tt(o).slice(0,16)}`}function nt(e=0){return`trace-${e}`}var Xt=w.enum(["expr","computed","flow","patch","effect","branch","call","halt","error"]),ue=w.lazy(()=>w.object({id:w.string(),kind:Xt,sourcePath:w.string(),inputs:w.record(w.string(),w.unknown()),output:w.unknown(),children:w.array(ue),timestamp:w.number()})),Qt=w.enum(["complete","effect","halt","error"]),ot=w.object({root:ue,nodes:w.record(w.string(),ue),intent:w.object({type:w.string(),input:w.unknown()}),baseVersion:w.number(),resultVersion:w.number(),duration:w.number(),terminatedBy:Qt});function te(e){let r=0;return{timestamp:e,nextId:()=>nt(r++)}}function g(e,r,t,n,o,a=[]){return{id:e.nextId(),kind:r,sourcePath:t,inputs:n,output:o,children:a,timestamp:e.timestamp}}function U(e,r,t,n,o,a){return{snapshot:e,schema:r,currentAction:t,nodePath:n,intentId:o,uuidCounter:0,trace:typeof a=="object"?a:te(a)}}function X(e,r,t,n){return{...e,$item:r,$index:t,$array:n}}function $e(e,r){return{...e,snapshot:r}}function ge(e,r){return{...e,nodePath:r}}function D(e){if(!e)return[];let r=[],t="",n=!1;for(let o of e){if(n){o==="."||o==="\\"?t+=o:t+=`\\${o}`,n=!1;continue}if(o==="\\"){n=!0;continue}if(o==="."){r.push(t),t="";continue}t+=o}return n&&(t+="\\"),r.push(t),r}function at(e){return e.replaceAll("\\","\\\\").replaceAll(".","\\.")}function ai(...e){return e.filter(Boolean).map(at).join(".")}function V(e,r){if(!r)return e;let t=D(r),n=e;for(let o of t){if(n==null)return;if(typeof n=="object")n=n[o];else return}return n}function er(e,r,t){if(!r)return t;let n=D(r);return it(e,n,t)}function it(e,r,t){if(r.length===0)return t;let[n,...o]=r,a=e!==null&&typeof e=="object"?e:{};if(o.length===0)return{...a,[n]:t};let s=a[n];return{...a,[n]:it(s,o,t)}}function ii(e,r){if(!r)return;let t=D(r);return st(e,t)}function st(e,r){if(r.length===0||e===null||typeof e!="object")return e;let[t,...n]=r,o=e;if(n.length===0){let{[t]:s,...p}=o;return p}let a=o[t];return{...o,[t]:st(a,n)}}function si(e,r,t){let n=V(e,r),o=n!==null&&typeof n=="object"?{...n,...t}:t;return er(e,r,o)}function pi(e,r){if(!r)return e!==void 0;let t=D(r),n=e;for(let o of t){if(n==null||typeof n!="object"||!(o in n))return!1;n=n[o]}return!0}function li(e){let r=D(e);return tr(...r.slice(0,-1))}function ui(e){let r=D(e);return r[r.length-1]??""}function tr(...e){return e.map(at).join(".")}var rr=new Set(["__proto__","constructor","prototype"]);function ke(e){let r="";for(let t=0;t<e.length;t++){let n=e[t];if(n.kind==="prop"){r+=t===0?n.name:`.${n.name}`;continue}r+=`[${n.index}]`}return r}function pt(e){let r=D(e);if(r.length===0)return[{kind:"prop",name:e}];let t=[];for(let n of r){let o=or(n);if(o){t.push(...o);continue}t.push({kind:"prop",name:n})}return t.length>0?t:[{kind:"prop",name:e}]}function lt(e){return e.every(r=>r.kind!=="prop"||!rr.has(r.name))}function nr(e,r){let t=e;for(let n of r){if(n.kind==="prop"){if(t===null||typeof t!="object"||Array.isArray(t))return;t=t[n.name];continue}if(!Array.isArray(t))return;t=t[n.index]}return t}function ce(e,r,t){return Ve(e,r,t)}function Se(e,r){return qe(e,r)}function be(e,r,t){let n=nr(e,r),o=Me(n)?{...n,...t}:t;return ce(e,r,o)}function Ve(e,r,t){if(r.length===0)return t;let[n,...o]=r;if(n.kind==="prop"){let s=Me(e)?e:{},p=Ve(s[n.name],o,t);return{...s,[n.name]:p}}let a=Array.isArray(e)?[...e]:[];return a[n.index]=Ve(a[n.index],o,t),a}function qe(e,r){if(r.length===0)return e;let[t,...n]=r;if(t.kind==="prop"){if(!Me(e))return e;if(n.length===0){let{[t.name]:a,...s}=e;return s}return{...e,[t.name]:qe(e[t.name],n)}}if(!Array.isArray(e))return e;let o=[...e];return n.length===0?(t.index>=0&&t.index<o.length&&delete o[t.index],o):(o[t.index]=qe(o[t.index],n),o)}function Me(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function or(e){if(!e.includes("[")||e.includes("\\[")||e.includes("\\]"))return null;let r=[],t=0,n=!1;for(;t<e.length;){let o=e.indexOf("[",t);if(o===-1){let u=e.slice(t);if(u.length===0)break;if(n)return null;r.push({kind:"prop",name:u});break}let a=e.slice(t,o);if(a.length>0){if(n)return null;r.push({kind:"prop",name:a})}let s=e.indexOf("]",o+1);if(s===-1)return null;let p=e.slice(o+1,s);if(!/^[0-9]+$/.test(p))return null;r.push({kind:"index",index:Number(p)}),n=!0,t=s+1}return r.length>0?r:null}import{z as ae}from"zod";var W=ae.string().min(1),yi=(e,r)=>ae.discriminatedUnion("ok",[ae.object({ok:ae.literal(!0),value:e}),ae.object({ok:ae.literal(!1),error:r})]),l=e=>({ok:!0,value:e}),re=e=>({ok:!1,error:e}),ie=e=>e.ok,Z=e=>!e.ok;function f(e,r){switch(e.kind){case"lit":return l(e.value);case"get":return ir(e.path,r);case"eq":return B(e.left,e.right,r,(t,n)=>t===n);case"neq":return B(e.left,e.right,r,(t,n)=>t!==n);case"gt":return B(e.left,e.right,r,(t,n)=>y(t)>y(n));case"gte":return B(e.left,e.right,r,(t,n)=>y(t)>=y(n));case"lt":return B(e.left,e.right,r,(t,n)=>y(t)<y(n));case"lte":return B(e.left,e.right,r,(t,n)=>y(t)<=y(n));case"and":return sr(e.args,r);case"or":return pr(e.args,r);case"not":return lr(e.arg,r);case"if":return ur(e,r);case"add":return B(e.left,e.right,r,(t,n)=>y(t)+y(n));case"sub":return B(e.left,e.right,r,(t,n)=>y(t)-y(n));case"mul":return B(e.left,e.right,r,(t,n)=>y(t)*y(n));case"div":return cr(e.left,e.right,r);case"mod":return fr(e.left,e.right,r);case"min":return dr(e.args,r);case"max":return mr(e.args,r);case"abs":return yr(e.arg,r);case"neg":return xr(e.arg,r);case"floor":return Ur(e.arg,r);case"ceil":return Zr(e.arg,r);case"round":return Lr(e.arg,r);case"sqrt":return _r(e.arg,r);case"pow":return Hr(e.base,e.exponent,r);case"sumArray":return Wr(e.array,r);case"minArray":return Br(e.array,r);case"maxArray":return Kr(e.array,r);case"concat":return hr(e.args,r);case"substring":return Er(e,r);case"trim":return gr(e.str,r);case"toLowerCase":return Gr(e.str,r);case"toUpperCase":return Yr(e.str,r);case"strLen":return Jr(e.str,r);case"startsWith":return Xr(e.str,e.prefix,r);case"endsWith":return Qr(e.str,e.suffix,r);case"strIncludes":return en(e.str,e.search,r);case"indexOf":return tn(e.str,e.search,r);case"replace":return rn(e.str,e.search,e.replacement,r);case"split":return nn(e.str,e.delimiter,r);case"len":return kr(e.arg,r);case"at":return Sr(e.array,e.index,r);case"first":return br(e.array,r);case"last":return vr(e.array,r);case"slice":return Nr(e,r);case"includes":return Rr(e.array,e.item,r);case"filter":return wr(e.array,e.predicate,r);case"map":return Tr(e.array,e.mapper,r);case"find":return jr(e.array,e.predicate,r);case"every":return Ar(e.array,e.predicate,r);case"some":return zr(e.array,e.predicate,r);case"append":return Cr(e.array,e.items,r);case"reverse":return on(e.array,r);case"unique":return an(e.array,r);case"flat":return sn(e.array,r);case"object":return Pr(e.fields,r);case"field":return Fr(e.object,e.property,r);case"keys":return Ir(e.obj,r);case"values":return Dr(e.obj,r);case"entries":return Or(e.obj,r);case"merge":return $r(e.objects,r);case"hasKey":return pn(e.obj,e.key,r);case"pick":return ln(e.obj,e.keys,r);case"omit":return un(e.obj,e.keys,r);case"fromEntries":return cn(e.entries,r);case"typeof":return Vr(e.arg,r);case"isNull":return qr(e.arg,r);case"coalesce":return Mr(e.args,r);case"toString":return fn(e.arg,r);case"toNumber":return dn(e.arg,r);case"toBoolean":return mn(e.arg,r);default:return re(v("INTERNAL_ERROR",`Unknown expression kind: ${e.kind}`,r.currentAction??"",r.nodePath,r.trace.timestamp))}}function y(e){return typeof e=="number"?e:typeof e=="string"?parseFloat(e)||0:typeof e=="boolean"&&e?1:0}function K(e){return e==null?!1:typeof e=="boolean"?e:typeof e=="number"?e!==0:typeof e=="string"?e.length>0:!0}function T(e){return e==null?"":typeof e=="string"?e:String(e)}function ar(e,r){let t=`${e}-${r}`,n=0;for(let d=0;d<t.length;d++){let h=t.charCodeAt(d);n=(n<<5)-n+h,n=n&n}let o=Math.abs(n).toString(16).padStart(8,"0"),a=Math.abs(n*31).toString(16).padStart(4,"0"),s=Math.abs(n*37).toString(16).padStart(4,"0"),p=Math.abs(n*41).toString(16).padStart(4,"0"),u=Math.abs(n*43).toString(16).padStart(12,"0");return`${o.slice(0,8)}-${a.slice(0,4)}-4${s.slice(1,4)}-${p.slice(0,4)}-${u.slice(0,12)}`}function ir(e,r){if(e.startsWith("$item")){if(r.$item===void 0)return l(null);if(e==="$item")return l(r.$item);let t=e.slice(6);return l(Q(V(r.$item,t)))}if(e==="$index")return l(r.$index);if(e==="$array")return l(r.$array);if(e.startsWith("$system.")){let t=e.slice(8);if(t==="uuid"){let n=r.intentId??"no-intent",o=r.uuidCounter??0;return r.uuidCounter!==void 0&&(r.uuidCounter=o+1),l(ar(n,o))}return t==="timestamp"?l(new Date(r.snapshot.meta.timestamp).toISOString()):l(null)}if(e.startsWith("meta.")){let t=e.slice(5);return t==="intentId"?l(Q(r.intentId)):t==="actionName"?l(Q(r.currentAction)):l(Q(V(r.snapshot.meta,t)))}if(e.startsWith("input.")||e==="input"){let t=e==="input"?"":e.slice(6);return l(t?Q(V(r.snapshot.input,t)):r.snapshot.input)}if(Object.prototype.hasOwnProperty.call(r.schema.computed.fields,e))return l(Q(r.snapshot.computed[e]));if(e.startsWith("system.")){let t=e.slice(7);return l(Q(V(r.snapshot.system,t)))}return l(Q(V(r.snapshot.data,e)))}function Q(e){return e===void 0?null:e}function B(e,r,t,n){let o=f(e,t);if(!o.ok)return o;let a=f(r,t);return a.ok?l(n(o.value,a.value)):a}function sr(e,r){for(let t of e){let n=f(t,r);if(!n.ok)return n;if(!K(n.value))return l(!1)}return l(!0)}function pr(e,r){for(let t of e){let n=f(t,r);if(!n.ok)return n;if(K(n.value))return l(!0)}return l(!1)}function lr(e,r){let t=f(e,r);return t.ok?l(!K(t.value)):t}function ur(e,r){let t=f(e.cond,r);return t.ok?f(K(t.value)?e.then:e.else,r):t}function cr(e,r,t){let n=f(e,t);if(!n.ok)return n;let o=f(r,t);if(!o.ok)return o;let a=y(o.value);return a===0?l(null):l(y(n.value)/a)}function fr(e,r,t){let n=f(e,t);if(!n.ok)return n;let o=f(r,t);if(!o.ok)return o;let a=y(o.value);return a===0?l(null):l(y(n.value)%a)}function dr(e,r){if(e.length===0)return l(null);let t=[];for(let n of e){let o=f(n,r);if(!o.ok)return o;t.push(y(o.value))}return l(Math.min(...t))}function mr(e,r){if(e.length===0)return l(null);let t=[];for(let n of e){let o=f(n,r);if(!o.ok)return o;t.push(y(o.value))}return l(Math.max(...t))}function yr(e,r){let t=f(e,r);return t.ok?l(Math.abs(y(t.value))):t}function xr(e,r){let t=f(e,r);return t.ok?l(-y(t.value)):t}function hr(e,r){let t=[];for(let a of e){let s=f(a,r);if(!s.ok)return s;t.push(s.value)}if(t.some(a=>Array.isArray(a))){let a=[];for(let s of t)Array.isArray(s)?a.push(...s):s!=null&&a.push(s);return l(a)}let o=t.map(a=>T(a));return l(o.join(""))}function Er(e,r){let t=f(e.str,r);if(!t.ok)return t;let n=f(e.start,r);if(!n.ok)return n;let o=T(t.value),a=y(n.value);if(e.end){let s=f(e.end,r);return s.ok?l(o.substring(a,y(s.value))):s}return l(o.substring(a))}function gr(e,r){let t=f(e,r);return t.ok?l(T(t.value).trim()):t}function kr(e,r){let t=f(e,r);if(!t.ok)return t;let n=t.value;return Array.isArray(n)?l(n.length):typeof n=="string"?l(n.length):typeof n=="object"&&n!==null?l(Object.keys(n).length):l(0)}function Sr(e,r,t){let n=f(e,t);if(!n.ok)return n;let o=f(r,t);if(!o.ok)return o;let a=n.value,s=o.value;if(Array.isArray(a)){let p=y(s);return p<0||p>=a.length?l(null):l(a[p])}return typeof a=="object"&&a!==null&&typeof s=="string"?l(a[s]??null):l(null)}function br(e,r){let t=f(e,r);if(!t.ok)return t;let n=t.value;return!Array.isArray(n)||n.length===0?l(null):l(n[0])}function vr(e,r){let t=f(e,r);if(!t.ok)return t;let n=t.value;return!Array.isArray(n)||n.length===0?l(null):l(n[n.length-1])}function Nr(e,r){let t=f(e.array,r);if(!t.ok)return t;let n=f(e.start,r);if(!n.ok)return n;let o=t.value;if(!Array.isArray(o))return l([]);let a=y(n.value);if(e.end){let s=f(e.end,r);return s.ok?l(o.slice(a,y(s.value))):s}return l(o.slice(a))}function Rr(e,r,t){let n=f(e,t);if(!n.ok)return n;let o=f(r,t);if(!o.ok)return o;let a=n.value;return Array.isArray(a)?l(a.includes(o.value)):l(!1)}function wr(e,r,t){let n=f(e,t);if(!n.ok)return n;let o=n.value;if(!Array.isArray(o))return l([]);let a=[];for(let s=0;s<o.length;s++){let p=X(t,o[s],s,o),u=f(r,p);if(!u.ok)return u;K(u.value)&&a.push(o[s])}return l(a)}function Tr(e,r,t){let n=f(e,t);if(!n.ok)return n;let o=n.value;if(!Array.isArray(o))return l([]);let a=[];for(let s=0;s<o.length;s++){let p=X(t,o[s],s,o),u=f(r,p);if(!u.ok)return u;a.push(u.value)}return l(a)}function jr(e,r,t){let n=f(e,t);if(!n.ok)return n;let o=n.value;if(!Array.isArray(o))return l(null);for(let a=0;a<o.length;a++){let s=X(t,o[a],a,o),p=f(r,s);if(!p.ok)return p;if(K(p.value))return l(o[a])}return l(null)}function Ar(e,r,t){let n=f(e,t);if(!n.ok)return n;let o=n.value;if(!Array.isArray(o))return l(!0);for(let a=0;a<o.length;a++){let s=X(t,o[a],a,o),p=f(r,s);if(!p.ok)return p;if(!K(p.value))return l(!1)}return l(!0)}function zr(e,r,t){let n=f(e,t);if(!n.ok)return n;let o=n.value;if(!Array.isArray(o))return l(!1);for(let a=0;a<o.length;a++){let s=X(t,o[a],a,o),p=f(r,s);if(!p.ok)return p;if(K(p.value))return l(!0)}return l(!1)}function Cr(e,r,t){let n=f(e,t);if(!n.ok)return n;let o=n.value,a=Array.isArray(o)?[...o]:[];for(let s of r){let p=f(s,t);if(!p.ok)return p;a.push(p.value)}return l(a)}function Pr(e,r){let t={};for(let n of Object.keys(e).sort(oe)){let o=e[n],a=f(o,r);if(!a.ok)return a;t[n]=a.value}return l(t)}function Fr(e,r,t){let n=f(e,t);if(!n.ok)return n;let o=n.value;return typeof o!="object"||o===null||Array.isArray(o)?l(null):l(o[r]??null)}function Ir(e,r){let t=f(e,r);if(!t.ok)return t;let n=t.value;return typeof n!="object"||n===null?l([]):l(Object.keys(n).sort(oe))}function Dr(e,r){let t=f(e,r);if(!t.ok)return t;let n=t.value;return typeof n!="object"||n===null?l([]):l(Object.keys(n).sort(oe).map(o=>n[o]))}function Or(e,r){let t=f(e,r);if(!t.ok)return t;let n=t.value;return typeof n!="object"||n===null?l([]):l(Object.keys(n).sort(oe).map(o=>[o,n[o]]))}function $r(e,r){let t={};for(let n of e){let o=f(n,r);if(!o.ok)return o;let a=o.value;typeof a=="object"&&a!==null&&!Array.isArray(a)&&Object.assign(t,a)}return l(t)}function Vr(e,r){let t=f(e,r);if(!t.ok)return t;let n=t.value;return n===null?l("null"):Array.isArray(n)?l("array"):l(typeof n)}function qr(e,r){let t=f(e,r);return t.ok?l(t.value===null||t.value===void 0):t}function Mr(e,r){for(let t of e){let n=f(t,r);if(!n.ok||n.value!==null&&n.value!==void 0)return n}return l(null)}function Ur(e,r){let t=f(e,r);return t.ok?l(Math.floor(y(t.value))):t}function Zr(e,r){let t=f(e,r);return t.ok?l(Math.ceil(y(t.value))):t}function Lr(e,r){let t=f(e,r);return t.ok?l(Math.round(y(t.value))):t}function _r(e,r){let t=f(e,r);if(!t.ok)return t;let n=y(t.value);return n<0?l(null):l(Math.sqrt(n))}function Hr(e,r,t){let n=f(e,t);if(!n.ok)return n;let o=f(r,t);if(!o.ok)return o;let a=Math.pow(y(n.value),y(o.value));return Number.isFinite(a)?l(a):l(null)}function Wr(e,r){let t=f(e,r);if(!t.ok)return t;let n=t.value;if(!Array.isArray(n))return l(0);let o=0;for(let a of n)o+=y(a);return l(o)}function Br(e,r){let t=f(e,r);if(!t.ok)return t;let n=t.value;if(!Array.isArray(n)||n.length===0)return l(null);let o=y(n[0]);for(let a=1;a<n.length;a++){let s=y(n[a]);s<o&&(o=s)}return l(o)}function Kr(e,r){let t=f(e,r);if(!t.ok)return t;let n=t.value;if(!Array.isArray(n)||n.length===0)return l(null);let o=y(n[0]);for(let a=1;a<n.length;a++){let s=y(n[a]);s>o&&(o=s)}return l(o)}function Gr(e,r){let t=f(e,r);return t.ok?l(T(t.value).toLowerCase()):t}function Yr(e,r){let t=f(e,r);return t.ok?l(T(t.value).toUpperCase()):t}function Jr(e,r){let t=f(e,r);return t.ok?l(T(t.value).length):t}function Xr(e,r,t){let n=f(e,t);if(!n.ok)return n;let o=f(r,t);return o.ok?l(T(n.value).startsWith(T(o.value))):o}function Qr(e,r,t){let n=f(e,t);if(!n.ok)return n;let o=f(r,t);return o.ok?l(T(n.value).endsWith(T(o.value))):o}function en(e,r,t){let n=f(e,t);if(!n.ok)return n;let o=f(r,t);return o.ok?l(T(n.value).includes(T(o.value))):o}function tn(e,r,t){let n=f(e,t);if(!n.ok)return n;let o=f(r,t);return o.ok?l(T(n.value).indexOf(T(o.value))):o}function rn(e,r,t,n){let o=f(e,n);if(!o.ok)return o;let a=f(r,n);if(!a.ok)return a;let s=f(t,n);return s.ok?l(T(o.value).replace(T(a.value),T(s.value))):s}function nn(e,r,t){let n=f(e,t);if(!n.ok)return n;let o=f(r,t);if(!o.ok)return o;let a=T(n.value).split(T(o.value));return l(a.length===0?[""]:a)}function on(e,r){let t=f(e,r);if(!t.ok)return t;let n=t.value;return Array.isArray(n)?l([...n].reverse()):l([])}function an(e,r){let t=f(e,r);if(!t.ok)return t;let n=t.value;if(!Array.isArray(n))return l([]);let o=[],a=[];for(let s of n)o.some(p=>p===s)||(o.push(s),a.push(s));return l(a)}function sn(e,r){let t=f(e,r);if(!t.ok)return t;let n=t.value;if(!Array.isArray(n))return l([]);let o=[];for(let a of n)Array.isArray(a)?o.push(...a):o.push(a);return l(o)}function pn(e,r,t){let n=f(e,t);if(!n.ok)return n;let o=f(r,t);if(!o.ok)return o;let a=n.value;if(typeof a!="object"||a===null||Array.isArray(a))return l(!1);let s=o.value;return typeof s!="string"?l(!1):l(Object.prototype.hasOwnProperty.call(a,s))}function ln(e,r,t){let n=f(e,t);if(!n.ok)return n;let o=f(r,t);if(!o.ok)return o;let a=n.value;if(typeof a!="object"||a===null||Array.isArray(a))return l({});let s=o.value;if(!Array.isArray(s))return l({});let p={};for(let u of s)typeof u=="string"&&Object.prototype.hasOwnProperty.call(a,u)&&(p[u]=a[u]);return l(p)}function un(e,r,t){let n=f(e,t);if(!n.ok)return n;let o=f(r,t);if(!o.ok)return o;let a=n.value;if(typeof a!="object"||a===null||Array.isArray(a))return l({});let s=o.value,p=new Set;if(Array.isArray(s))for(let d of s)typeof d=="string"&&p.add(d);let u={};for(let[d,h]of Object.entries(a))p.has(d)||(u[d]=h);return l(u)}function cn(e,r){let t=f(e,r);if(!t.ok)return t;let n=t.value;if(!Array.isArray(n))return l({});let o={};for(let a of n)Array.isArray(a)&&a.length===2&&typeof a[0]=="string"&&(o[a[0]]=a[1]);return l(o)}function fn(e,r){let t=f(e,r);return t.ok?l(T(t.value)):t}function dn(e,r){let t=f(e,r);return t.ok?l(y(t.value)):t}function mn(e,r){let t=f(e,r);return t.ok?l(K(t.value)):t}function yn(e){return/^\d+$/.test(e)}function xn(e,r){let t=L(e,r);return t?t.kind==="primitive"&&t.type==="null"||t.kind==="literal"&&t.value===null:!1}function ut(e,r){let t=L(e,r);if(!t)return null;if(t.kind!=="union")return t;let n=t.types.filter(a=>!xn(a,r));return n.length!==t.types.length?n.length!==1?null:L(n[0],r):t}function L(e,r,t=[]){if(e.kind!=="ref")return e;if(t.includes(e.name))return null;let n=r[e.name];return n?L(n.definition,r,[...t,e.name]):null}function ct(e,r,t){return t?dt(e,r,D(t))!==null:!0}function ft(e,r,t){return dt(e,r,t)!==null}function dt(e,r,t){let n=e;for(let o of t){if(!n)return null;let a=ut(n,r);if(!a)return null;switch(a.kind){case"object":n=a.fields[o]?.type??null;break;case"record":n=a.value;break;case"array":if(!yn(o))return null;n=a.element;break;case"primitive":return null;default:return null}}return n}function ve(e,r,t){let n=e;for(let o of t){if(!n)return null;let a=ut(n,r);if(!a)return null;switch(a.kind){case"object":if(o.kind!=="prop")return null;n=a.fields[o.name]?.type??null;break;case"record":if(o.kind!=="prop")return null;n=a.value;break;case"array":if(o.kind!=="index")return null;n=a.element;break;case"primitive":return null;default:return null}}return n}function Ne(e,r,t){if(!e.fieldTypes||t.length===0)return null;let[n,...o]=t;if(!n||n.kind!=="prop"||!(n.name in e.fields))return null;let a=e.fieldTypes[n.name];return a?o.length===0?a:ve(a,r,o):null}function $(e,r,t,n){if(e===void 0)return n?.allowUndefined?{ok:!0}:{ok:!1,message:"Value is required"};let o=L(r,t);if(!o)return{ok:!1,message:"Unknown type reference"};if(o.kind==="union")return o.types.map(s=>$(e,s,t,n)).find(s=>s.ok)??{ok:!1,message:"Value does not match any union branch"};switch(o.kind){case"primitive":switch(o.type){case"null":return e===null?{ok:!0}:{ok:!1,message:"Expected null"};case"string":return typeof e=="string"?{ok:!0}:{ok:!1,message:"Expected string"};case"number":return typeof e=="number"&&Number.isFinite(e)?{ok:!0}:{ok:!1,message:"Expected number"};case"boolean":return typeof e=="boolean"?{ok:!0}:{ok:!1,message:"Expected boolean"};case"object":return e!==null&&!Array.isArray(e)&&typeof e=="object"?{ok:!0}:{ok:!1,message:"Expected object"};case"array":return Array.isArray(e)?{ok:!0}:{ok:!1,message:"Expected array"};default:return{ok:!1,message:`Unsupported primitive type: ${o.type}`}}case"literal":return Object.is(e,o.value)?{ok:!0}:{ok:!1,message:`Expected literal ${JSON.stringify(o.value)}`};case"array":if(!Array.isArray(e))return{ok:!1,message:"Expected array"};for(let s of e){let p=$(s,o.element,t,{allowUndefined:!1});if(!p.ok)return p}return{ok:!0};case"object":return e===null||Array.isArray(e)||typeof e!="object"?{ok:!1,message:"Expected object"}:hn(e,o.fields,t,n?.allowPartial??!1,n?.allowUndefined??!1);case"record":if(e===null||Array.isArray(e)||typeof e!="object")return{ok:!1,message:"Expected object"};let a=L(o.key,t);if(!a||a.kind!=="primitive"||a.type!=="string")return{ok:!1,message:"Record keys must be strings"};for(let s of Object.values(e)){let p=$(s,o.value,t,{allowUndefined:!1});if(!p.ok)return p}return{ok:!0};case"ref":return{ok:!1,message:"Unresolved type reference"}}}function hn(e,r,t,n,o){let a=new Set(Object.keys(r));for(let s of Object.keys(e))if(!a.has(s))return{ok:!1,message:`Unknown field: ${s}`};for(let[s,p]of Object.entries(r)){if(!(s in e)){if(!n&&!p.optional)return{ok:!1,message:`Missing required field: ${s}`};continue}let u=$(e[s],p.type,t,{allowPartial:n,allowUndefined:o});if(!u.ok)return u}return{ok:!0}}var En=/^\d+\.\d+\.\d+(?:-[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?(?:\+[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?$/,gn=/^[a-zA-Z][a-zA-Z0-9+.-]*:/,kn=/^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;function mt(e){return gn.test(e)||kn.test(e)}function yt(e){return En.test(e)}function G(e){let r=[],t=n=>{switch(n.kind){case"lit":return;case"get":r.push(n.path);return;case"eq":case"neq":case"gt":case"gte":case"lt":case"lte":case"add":case"sub":case"mul":case"div":case"mod":t(n.left),t(n.right);return;case"pow":t(n.base),t(n.exponent);return;case"and":case"or":case"concat":case"coalesce":case"min":case"max":n.args.forEach(t);return;case"not":case"typeof":case"isNull":case"len":case"abs":case"neg":case"floor":case"ceil":case"round":case"sqrt":case"toString":case"toNumber":case"toBoolean":t(n.arg);return;case"first":case"last":case"reverse":case"unique":case"flat":case"sumArray":case"minArray":case"maxArray":t(n.array);return;case"if":t(n.cond),t(n.then),t(n.else);return;case"substring":t(n.str),t(n.start),n.end&&t(n.end);return;case"trim":case"toLowerCase":case"toUpperCase":case"strLen":t(n.str);return;case"startsWith":t(n.str),t(n.prefix);return;case"endsWith":t(n.str),t(n.suffix);return;case"strIncludes":case"indexOf":t(n.str),t(n.search);return;case"replace":t(n.str),t(n.search),t(n.replacement);return;case"split":t(n.str),t(n.delimiter);return;case"at":t(n.array),t(n.index);return;case"slice":t(n.array),t(n.start),n.end&&t(n.end);return;case"includes":t(n.array),t(n.item);return;case"filter":case"find":case"every":case"some":t(n.array),t(n.predicate);return;case"map":t(n.array),t(n.mapper);return;case"append":t(n.array),n.items.forEach(t);return;case"object":Object.values(n.fields).forEach(t);return;case"field":t(n.object);return;case"keys":case"values":case"entries":t(n.obj);return;case"merge":n.objects.forEach(t);return;case"hasKey":t(n.obj),t(n.key);return;case"pick":case"omit":t(n.obj),t(n.keys);return;case"fromEntries":t(n.entries);return}};return t(e),r}function xt(e){let r=[],t=n=>{switch(n.kind){case"seq":n.steps.forEach(t);return;case"if":r.push(...G(n.cond)),t(n.then),n.else&&t(n.else);return;case"patch":n.op!=="unset"&&n.value&&r.push(...G(n.value));return;case"effect":Object.values(n.params).forEach(o=>{r.push(...G(o))});return;case"fail":n.message&&r.push(...G(n.message));return;case"call":case"halt":return}};return t(e),r}function fe(e,r,t={}){if(e.fieldTypes){if(!r)return!0;let n=D(r),[o,...a]=n;if(!o)return!0;if(!(o in e.fields))return!1;let s=e.fieldTypes[o];if(s&&(a.length===0?!0:ft(s,t,a)))return!0}return Ue({type:"object",required:!0,fields:e.fields},r)}function de(e,r){return Object.prototype.hasOwnProperty.call(e.fields,r)}function Ue(e,r){if(!r)return!0;let t=D(r);if(t.length===0)return!0;let n=e;for(let o of t){if(!n)return!1;let a=n.type;if(a==="object"){if(!n.fields)return!0;if(!(o in n.fields))return!1;n=n.fields[o];continue}if(a==="array"){if(!bn(o))return!1;n=n.items??null;continue}return!1}return!0}function Y(e,r,t){if(e===void 0)return t?.allowUndefined&&r.required===!1?{ok:!0}:{ok:!1,message:"Value is required"};if(e===null)return{ok:!0};let n=r.type;if(typeof n=="object"&&"enum"in n)return n.enum.some(o=>Object.is(o,e))?{ok:!0}:{ok:!1,message:"Value is not in enum"};switch(n){case"null":return e===null?{ok:!0}:{ok:!1,message:"Expected null"};case"string":return typeof e=="string"?{ok:!0}:{ok:!1,message:"Expected string"};case"number":return typeof e=="number"&&Number.isFinite(e)?{ok:!0}:{ok:!1,message:"Expected number"};case"boolean":return typeof e=="boolean"?{ok:!0}:{ok:!1,message:"Expected boolean"};case"object":return e===null||Array.isArray(e)||typeof e!="object"?{ok:!1,message:"Expected object"}:Sn(e,r,t?.allowPartial??!1,t?.allowUndefined??!1);case"array":if(!Array.isArray(e))return{ok:!1,message:"Expected array"};if(!r.items)return{ok:!0};for(let o of e){let a=Y(o,r.items,{allowUndefined:!1});if(!a.ok)return a}return{ok:!0}}}function Sn(e,r,t,n){if(!r.fields)return{ok:!0};let o=Object.entries(r.fields),a=new Set(o.map(([s])=>s));for(let s of Object.keys(e)){if(!a.has(s))return{ok:!1,message:`Unknown field: ${s}`};let p=r.fields[s],u=Y(e[s],p,{allowPartial:t,allowUndefined:n});if(!u.ok)return u}if(!t){for(let[s,p]of o)if(p.required&&!(s in e))return{ok:!1,message:`Missing required field: ${s}`}}return{ok:!0}}function Re(e,r){if(r.length===0)return e;let t=e;for(let n of r){if(!t)return null;let o=t.type;if(o==="object"){if(n.kind!=="prop"||!t.fields||!(n.name in t.fields))return null;t=t.fields[n.name];continue}if(o==="array"){if(n.kind!=="index")return null;t=t.items??null;continue}return null}return t}function bn(e){return/^[0-9]+$/.test(e)}function ht(e){return{snapshot:e,status:"running",patches:[],requirements:[],error:null}}function Et(e,r){let t=e.snapshot.data;switch(r.op){case"set":t=ce(t,r.path,r.value);break;case"unset":t=Se(t,r.path);break;case"merge":t=be(t,r.path,r.value);break}return{...e,snapshot:{...e.snapshot,data:t},patches:[...e.patches,r]}}function vn(e,r){return{...e,status:"pending",requirements:[...e.requirements,r]}}function P(e,r){return{...e,status:"error",error:r}}function se(e,r,t,n){if(t.status!=="running")return{state:t,trace:g(r.trace,"flow",n,{},null,[])};switch(e.kind){case"seq":return Nn(e.steps,r,t,n);case"if":return Rn(e,r,t,n);case"patch":return wn(e,r,t,n);case"effect":return Tn(e,r,t,n);case"call":return zn(e.flow,r,t,n);case"halt":return Cn(e.reason,r,t,n);case"fail":return Pn(e,r,t,n);default:return{state:P(t,v("INTERNAL_ERROR",`Unknown flow kind: ${e.kind}`,r.currentAction??"",n,r.trace.timestamp)),trace:g(r.trace,"error",n,{},null,[])}}}async function $i(e,r,t,n){return se(e,r,t,n)}function Nn(e,r,t,n){let o=t,a=[];for(let s=0;s<e.length;s++){let p=`${n}.steps[${s}]`,u=ge($e(r,o.snapshot),p),d=se(e[s],u,o,p);if(a.push(d.trace),o=d.state,o.status!=="running")break}return{state:o,trace:g(r.trace,"flow",n,{kind:"seq"},null,a)}}function Rn(e,r,t,n){let o=f(e.cond,r);if(!o.ok)return{state:P(t,o.error),trace:g(r.trace,"branch",n,{cond:!1},null,[])};let a=o.value,s=a!=null&&a!==!1,p=s?`${n}.then`:`${n}.else`,u=s?e.then:e.else;if(!u)return{state:t,trace:g(r.trace,"branch",n,{cond:s},null,[])};let d=ge(r,p),h=se(u,d,t,p);return{state:h.state,trace:g(r.trace,"branch",n,{cond:s},null,[h.trace])}}function wn(e,r,t,n){let o;if(e.op!=="unset"&&e.value){let b=f(e.value,r);if(!b.ok)return{state:P(t,b.error),trace:g(r.trace,"error",n,{},null,[])};o=b.value}let a={type:"object",required:!0,fields:r.schema.state.fields},s=Ne(r.schema.state,r.schema.types,e.path),p=s?null:Re(a,e.path),u=ke(e.path);if(!s&&!p)return{state:P(t,v("PATH_NOT_FOUND",`Unknown patch path: ${u}`,r.currentAction??"",n,r.trace.timestamp)),trace:g(r.trace,"error",n,{},null,[])};if(e.op!=="unset"){let b=s?$(o,s,r.schema.types,{allowPartial:e.op==="merge",allowUndefined:!1}):Y(o,p,{allowPartial:e.op==="merge",allowUndefined:!1});if(!b.ok)return{state:P(t,v("TYPE_MISMATCH",`Invalid patch value at ${u}: ${b.message??"type mismatch"}`,r.currentAction??"",n,r.trace.timestamp)),trace:g(r.trace,"error",n,{},null,[])}}let d=e.op==="unset"?{op:"unset",path:e.path}:e.op==="merge"?{op:"merge",path:e.path,value:o}:{op:"set",path:e.path,value:o};return{state:Et(t,d),trace:g(r.trace,"patch",n,{op:e.op,path:u},o,[])}}function Tn(e,r,t,n){if(e.type==="array.map"||e.type==="array.filter")return jn(e,r,t,n);let o={};for(let[u,d]of Object.entries(e.params)){let h=f(d,r);if(!h.ok)return{state:P(t,h.error),trace:g(r.trace,"error",n,{},null,[])};o[u]=h.value}let s={id:rt(r.snapshot.meta.schemaHash,r.intentId??"",r.currentAction??"",n),type:e.type,params:o,actionId:r.currentAction??"",flowPosition:{nodePath:n,snapshotVersion:r.snapshot.meta.version},createdAt:r.trace.timestamp};return{state:vn(t,s),trace:g(r.trace,"effect",n,{type:e.type},o,[])}}function jn(e,r,t,n){let{params:o}=e,a=$e(r,t.snapshot),s=o.source;if(!s)return{state:P(t,v("INVALID_INPUT",`${e.type} requires 'source' parameter`,r.currentAction??"",n,r.trace.timestamp)),trace:g(a.trace,"error",n,{},null,[])};let p=f(s,a);if(!p.ok)return{state:P(t,p.error),trace:g(a.trace,"error",n,{},null,[])};let u=p.value;if(!Array.isArray(u))return{state:P(t,v("TYPE_MISMATCH",`${e.type} source must be an array`,a.currentAction??"",n,a.trace.timestamp)),trace:g(a.trace,"error",n,{},null,[])};let d=o.into;if(!d)return{state:P(t,v("INVALID_INPUT",`${e.type} requires 'into' parameter`,a.currentAction??"",n,a.trace.timestamp)),trace:g(a.trace,"error",n,{},null,[])};let h=f(d,a);if(!h.ok)return{state:P(t,h.error),trace:g(a.trace,"error",n,{},null,[])};let b=An(h.value);if(!b)return{state:P(t,v("INVALID_INPUT",`${e.type} into must resolve to PatchPath segments or semantic string path`,a.currentAction??"",n,a.trace.timestamp)),trace:g(a.trace,"error",n,{},null,[])};let m=e.type==="array.map"?o.select:o.where;if(!m)return{state:P(t,v("INVALID_INPUT",`${e.type} requires '${e.type==="array.map"?"select":"where"}' parameter`,a.currentAction??"",n,a.trace.timestamp)),trace:g(a.trace,"error",n,{},null,[])};let E=[];for(let F=0;F<u.length;F++){let A=u[F],q=X(a,A,F,u),H=f(m,q);if(!H.ok)return{state:P(t,H.error),trace:g(a.trace,"error",n,{},null,[])};if(e.type==="array.map")E.push(H.value);else{let J=H.value;J!=null&&J!==!1&&E.push(A)}}return{state:Et(t,{op:"set",path:b,value:E}),trace:g(a.trace,"effect",n,{type:e.type,target:b},{count:E.length},[])}}function An(e){if(typeof e=="string")return pt(e);if(!Array.isArray(e))return null;let r=[];for(let t of e){if(!t||typeof t!="object")return null;let n=t.kind;if(n==="prop"){let o=t.name;if(typeof o!="string"||o.length===0)return null;r.push({kind:"prop",name:o});continue}if(n==="index"){let o=t.index;if(!Number.isInteger(o)||o<0)return null;r.push({kind:"index",index:o});continue}return null}return r.length>0?r:null}function zn(e,r,t,n){let o=r.schema.actions[e];if(!o)return{state:P(t,v("UNKNOWN_FLOW",`Unknown flow: ${e}`,r.currentAction??"",n,r.trace.timestamp)),trace:g(r.trace,"error",n,{},null,[])};let a=`${n}.call(${e})`,s=ge(r,a),p=se(o.flow,s,t,a);return{state:p.state,trace:g(r.trace,"call",n,{flow:e},null,[p.trace])}}function Cn(e,r,t,n){return{state:{...t,status:"halted"},trace:g(r.trace,"halt",n,{reason:e},null,[])}}function Pn(e,r,t,n){let o=e.code;if(e.message){let s=f(e.message,r);s.ok&&(o=String(s.value))}let a=v("VALIDATION_ERROR",o,r.currentAction??"",n,r.trace.timestamp,{code:e.code});return{state:P(t,a),trace:g(r.trace,"error",n,{code:e.code},o,[])}}function we(e){let r=Object.keys(e.fields),t=new Map;for(let[n,o]of Object.entries(e.fields)){let a=o.deps.filter(s=>s in e.fields);t.set(n,a)}return{nodes:r,edges:t}}function Te(e){let r=new Map,t=new Map;for(let a of e.nodes)r.set(a,0),t.set(a,[]);for(let[a,s]of e.edges)for(let p of s)t.has(p)&&t.get(p).push(a),r.set(a,(r.get(a)??0)+1);let n=[];for(let[a,s]of r)s===0&&n.push(a);let o=[];for(;n.length>0;){let a=n.shift();o.push(a);for(let s of t.get(a)??[]){let p=(r.get(s)??1)-1;r.set(s,p),p===0&&n.push(s)}}if(o.length!==e.nodes.length){let a=e.nodes.filter(s=>!o.includes(s));return re({code:"V-002",message:`Cyclic dependency detected in computed fields: ${a.join(", ")}`,path:a[0]})}return l(o)}function gt(e){let r=new Set,t=new Set,n=[];function o(a,s){r.add(a),t.add(a);let p=e.edges.get(a)??[];for(let u of p)if(r.has(u)){if(t.has(u)){let d=s.indexOf(u);d!==-1?n.push([...s.slice(d),u]):n.push([...s,u])}}else if(o(u,[...s,u]))return!0;return t.delete(a),!1}for(let a of e.nodes)r.has(a)||o(a,[a]);return n.length>0?n:null}function Mi(e,r){let t=new Set,n=[...e.edges.get(r)??[]];for(;n.length>0;){let o=n.shift();t.has(o)||(t.add(o),n.push(...e.edges.get(o)??[]))}return t}function pe(e,r){let t=te(r.meta.timestamp),n=we(e.computed),o=Te(n);if(!o.ok)return re(v("CYCLIC_DEPENDENCY",o.error.message,"",o.error.path??"",t.timestamp));let a={},s={...r,computed:a};for(let p of o.value){let u=e.computed.fields[p];if(!u)continue;let d=U(s,e,null,p,void 0,t),h=f(u.expr,d);if(Z(h))return h;a[p]=h.value,s={...s,computed:{...a}}}return l(a)}function Ki(e,r,t){let n=te(r.meta.timestamp),o=e.computed.fields[t];if(!o)return re(v("PATH_NOT_FOUND",`Computed field not found: ${t}`,"",t,n.timestamp));let a=U(r,e,null,t,void 0,n);return f(o.expr,a)}function Ze(e,r){let t=pe(e,r);return Z(t)?{kind:"error",code:"INTERNAL_ERROR",message:`Error evaluating computed values for legality query: ${t.error.message}`}:{kind:"ok",snapshot:{...r,computed:t.value}}}function Le(e,r,t,n){let o=e.actions[t];if(!o)return{kind:"error",code:"UNKNOWN_ACTION",message:`Unknown action: ${t}`};if(!o.available)return{kind:"ok",available:!0};let a=U(r,e,null,`actions.${t}.available`,void 0,n),s=f(o.available,a);return Z(s)?{kind:"error",code:"INTERNAL_ERROR",message:`Error evaluating availability: ${s.error.message}`}:typeof s.value!="boolean"?{kind:"error",code:"TYPE_MISMATCH",message:`Availability condition must return boolean, got ${typeof s.value}`}:{kind:"ok",available:s.value}}function _e(e,r,t,n=r.meta.timestamp){let o=Ze(e,r);return o.kind==="error"?o:Le(e,o.snapshot,t,n)}function kt(e,r,t){let n=_e(e,r,t);if(n.kind==="error")throw new Error(n.message);return n.available}function Fn(e,r,t,n=r.meta.timestamp){let o=e.actions[t.type];if(!o)return{kind:"error",code:"UNKNOWN_ACTION",message:`Unknown action: ${t.type}`};let a=Ze(e,r);if(a.kind==="error")return a;let s=Le(e,a.snapshot,t.type,n);if(s.kind==="error")return s;if(!s.available)return{kind:"ok",dispatchable:!1};if(!o.dispatchable)return{kind:"ok",dispatchable:!0};let p=U({...a.snapshot,input:t.input},e,t.type,`actions.${t.type}.dispatchable`,t.intentId,n),u=f(o.dispatchable,p);return Z(u)?{kind:"error",code:"INTERNAL_ERROR",message:`Error evaluating dispatchability: ${u.error.message}`}:typeof u.value!="boolean"?{kind:"error",code:"TYPE_MISMATCH",message:`Dispatchability condition must return boolean, got ${typeof u.value}`}:{kind:"ok",dispatchable:u.value}}function St(e,r,t){let n=Fn(e,r,t);if(n.kind==="error")throw new Error(n.message);return n.dispatchable}function bt(e,r){let t=Ze(e,r);if(t.kind==="error")throw new Error(t.message);return Object.keys(e.actions).filter(n=>{let o=Le(e,t.snapshot,n,r.meta.timestamp);if(o.kind==="error")throw new Error(o.message);return o.available})}function je(e,r){let t=He(r,"status"),n=He(r,"currentAction"),o=He(r,"lastError"),a=new Set(r.removeRequirementIds??[]),s=r.addRequirements??[],p=In(e.system.pendingRequirements,a,s),u={...e.system,status:t?r.status:e.system.status,currentAction:n?r.currentAction??null:e.system.currentAction,lastError:o?r.lastError??null:e.system.lastError,pendingRequirements:p};return Dn(e.system,u)?{...e,system:u,meta:{...e.meta,version:e.meta.version+1}}:e}function In(e,r,t){let n=new Set(t.map(a=>a.id));return[...e.filter(a=>!r.has(a.id)&&!n.has(a.id)),...t]}function Dn(e,r){return e.status!==r.status||e.currentAction!==r.currentAction||!$n(e.lastError,r.lastError)||!On(e.pendingRequirements,r.pendingRequirements)}function On(e,r){if(e.length!==r.length)return!1;for(let t=0;t<e.length;t++)if(!Vn(e[t],r[t]))return!1;return!0}function $n(e,r){if(e===r)return!0;if(e===null||r===null||e.code!==r.code||e.message!==r.message||e.timestamp!==r.timestamp||e.source.actionId!==r.source.actionId||e.source.nodePath!==r.source.nodePath)return!1;let t=e.context??{},n=r.context??{};return JSON.stringify(t)===JSON.stringify(n)}function Vn(e,r){return e.id===r.id&&e.type===r.type&&e.actionId===r.actionId&&e.createdAt===r.createdAt&&e.flowPosition.nodePath===r.flowPosition.nodePath&&e.flowPosition.snapshotVersion===r.flowPosition.snapshotVersion&&JSON.stringify(e.params)===JSON.stringify(r.params)}function He(e,r){return Object.prototype.hasOwnProperty.call(e,r)}function We(e,r,t,n){let o=r,a=pe(e,r);ie(a)&&(o={...r,computed:a.value});let s=e.actions[t.type];if(!s)return Ae(o,t,"UNKNOWN_ACTION",`Unknown action: ${t.type}`,n);let p=Nt(e,t);if(p)return Ae(o,t,"INVALID_INPUT",p,n);let u=o.system.currentAction===t.type;if(s.available&&!u){let A=_e(e,o,t.type,n.now);if(A.kind==="error")return Ae(o,t,A.code,A.message,n);if(!A.available)return Ae(o,t,"ACTION_UNAVAILABLE",`Action "${t.type}" is not available`,n)}let d={...o,input:t.input,system:{...o.system,status:"computing",currentAction:t.type}},h=U(d,e,t.type,`actions.${t.type}.flow`,t.intentId,n.now),b=ht(d),m=se(s.flow,h,b,`actions.${t.type}.flow`),E=qn(m.state.status),C=Zn(o,t,E,m.state.error,m.state.requirements),I=[...m.state.patches],F={root:m.trace,nodes:Un(m.trace),intent:{type:t.type,input:t.input},baseVersion:o.meta.version,resultVersion:Rt(o,I,C),duration:n.durationMs??0,terminatedBy:Mn(m.state.status)};return{patches:I,systemDelta:C,trace:F,status:E}}async function vt(e,r,t,n){return We(e,r,t,n)}function Nt(e,r){if(!r.intentId||r.intentId==="")return"Intent must have a non-empty intentId";let t=e.actions[r.type];return!t||!t.input&&!t.inputType?null:Ln(e,t.inputType,t.input,r.input)}function qn(e){switch(e){case"running":case"complete":return"complete";case"pending":return"pending";case"halted":return"halted";case"error":return"error"}}function Mn(e){switch(e){case"running":case"complete":return"complete";case"pending":return"effect";case"halted":return"halt";case"error":return"error"}}function Un(e){let r={};function t(n){r[n.id]=n;for(let o of n.children)t(o)}return t(e),r}function Ae(e,r,t,n,o){let a=v(t,n,r.type,"",o.now),s={status:"error",currentAction:null,lastError:a,addRequirements:[],removeRequirementIds:[]},p={root:{id:`trace-error-${r.intentId}`,kind:"error",sourcePath:"",inputs:{},output:a,children:[],timestamp:o.now},nodes:{},intent:{type:r.type,input:r.input},baseVersion:e.meta.version,resultVersion:Rt(e,[],s),duration:o.durationMs??0,terminatedBy:"error"};return{patches:[],systemDelta:s,trace:p,status:"error"}}function Zn(e,r,t,n,o){let a=t==="error";return{status:t==="pending"?"pending":t==="error"?"error":"idle",currentAction:t==="pending"?r.type:null,lastError:n,addRequirements:[...o],removeRequirementIds:e.system.pendingRequirements.map(p=>p.id)}}function Rt(e,r,t){let n=e.meta.version;return n+=1,je(e,t)!==e&&(n+=1),n}function Ln(e,r,t,n){if(r){let o=$(n,r,e.types);return o.ok?null:o.message??"Invalid input"}if(!t)return null;if(t.type==="object"){if(typeof n!="object"||n===null||Array.isArray(n))return`Expected object input, got ${typeof n}`;let o=n,a=t.fields??{};for(let[s,p]of Object.entries(a))if(p.required&&!(s in o))return`Missing required field: ${s}`;for(let s of Object.keys(o))if(!(s in a))return`Unknown field: ${s}`;for(let[s,p]of Object.entries(a))if(s in o){let u=_n(p,o[s],s);if(u)return u}}return null}function _n(e,r,t){if(r==null)return e.required?`Missing required field: ${t}`:null;switch(e.type){case"string":if(typeof r!="string")return`Expected string for ${t}, got ${typeof r}`;break;case"number":if(typeof r!="number")return`Expected number for ${t}, got ${typeof r}`;break;case"boolean":if(typeof r!="boolean")return`Expected boolean for ${t}, got ${typeof r}`;break;case"array":if(!Array.isArray(r))return`Expected array for ${t}, got ${typeof r}`;break;case"object":if(typeof r!="object"||Array.isArray(r))return`Expected object for ${t}, got ${typeof r}`;break}return null}var Hn={type:"object",required:!1};function At(e,r,t,n){let o=r.data,a=r.system,s=r.input,p=[],u={type:"object",required:!0,fields:e.state.fields};for(let m of t){let E=ke(m.path);if(!lt(m.path)){p.push(v("PATH_NOT_FOUND",`Unsafe patch path: ${E}`,r.system.currentAction??"",E,n.now,{patch:m}));continue}if(Wn(m.path)){if(m.op!=="unset"){if(m.path.length===1){let A=Y(m.value,Hn,{allowPartial:m.op==="merge",allowUndefined:!1});if(!A.ok){p.push(v("TYPE_MISMATCH",`Invalid patch value at ${E}: ${A.message??"type mismatch"}`,r.system.currentAction??"",E,n.now,{patch:m}));continue}}if(m.op==="merge"&&!Tt(o,m.path)){p.push(v("TYPE_MISMATCH",`Invalid merge target at ${E}: target path must be an object or absent`,r.system.currentAction??"",E,n.now,{patch:m}));continue}}o=jt(o,m);continue}let I=Ne(e.state,e.types,m.path),F=I?null:Re(u,m.path);if(!I&&!F){p.push(v("PATH_NOT_FOUND",`Unknown patch path: ${E}`,r.system.currentAction??"",E,n.now,{patch:m}));continue}if(m.op==="merge"&&!Tt(o,m.path)){p.push(v("TYPE_MISMATCH",`Invalid merge target at ${E}: target path must be an object or absent`,r.system.currentAction??"",E,n.now,{patch:m}));continue}if(m.op!=="unset"){let A=I?$(m.value,I,e.types,{allowPartial:m.op==="merge",allowUndefined:!1}):Y(m.value,F,{allowPartial:m.op==="merge",allowUndefined:!1});if(!A.ok){p.push(v("TYPE_MISMATCH",`Invalid patch value at ${E}: ${A.message??"type mismatch"}`,r.system.currentAction??"",E,n.now,{patch:m}));continue}}o=jt(o,m)}if(p.length>0){let m=p[p.length-1];a={...a,status:"error",lastError:m}}let d={...r,data:o,system:a,input:s},h=pe(e,d),b=r.computed;if(ie(h))b=h.value;else if(Z(h)){let m=h.error;b={},a={...a,status:"error",lastError:m}}return{data:o,computed:b,system:a,input:s,meta:{...r.meta,version:r.meta.version+1,timestamp:n.now,randomSeed:n.randomSeed}}}function Wn(e){let r=e[0];return r.kind!=="prop"?null:r.name.startsWith("$")?r.name:null}function wt(e){return e!==null&&!Array.isArray(e)&&typeof e=="object"}function Tt(e,r){let t=e;for(let n of r){if(t===void 0)return!0;if(n.kind==="prop"){if(!wt(t))return!1;t=t[n.name];continue}if(!Array.isArray(t))return!1;t=t[n.index]}return t===void 0?!0:wt(t)}function jt(e,r){switch(r.op){case"set":return ce(e,r.path,r.value);case"unset":return Se(e,r.path);case"merge":return be(e,r.path,r.value)}}import{z as O}from"zod";import{z}from"zod";import{z as k}from"zod";var _=k.lazy(()=>k.discriminatedUnion("kind",[k.object({kind:k.literal("primitive"),type:k.string()}),k.object({kind:k.literal("array"),element:_}),k.object({kind:k.literal("record"),key:_,value:_}),k.object({kind:k.literal("object"),fields:k.record(k.string(),k.object({type:_,optional:k.boolean()}))}),k.object({kind:k.literal("union"),types:k.array(_).min(1)}),k.object({kind:k.literal("literal"),value:k.union([k.string(),k.number(),k.boolean(),k.null()])}),k.object({kind:k.literal("ref"),name:k.string()})])),zt=k.object({name:k.string(),definition:_});var Bn=z.enum(["string","number","boolean","null","object","array"]),Kn=z.object({enum:z.array(z.unknown()).readonly()}),Gn=z.union([Bn,Kn]),me=z.lazy(()=>z.object({type:Gn,required:z.boolean(),default:z.unknown().optional(),description:z.string().optional(),fields:z.record(z.string(),me).optional(),items:me.optional()})),Ct=z.object({fields:z.record(z.string(),me),fieldTypes:z.record(z.string(),_).optional()});import{z as ye}from"zod";import{z as i}from"zod";var Yn=i.object({kind:i.literal("lit"),value:i.unknown()}),Jn=i.object({kind:i.literal("get"),path:W}),Xn=i.object({kind:i.literal("eq"),left:i.lazy(()=>c),right:i.lazy(()=>c)}),Qn=i.object({kind:i.literal("neq"),left:i.lazy(()=>c),right:i.lazy(()=>c)}),eo=i.object({kind:i.literal("gt"),left:i.lazy(()=>c),right:i.lazy(()=>c)}),to=i.object({kind:i.literal("gte"),left:i.lazy(()=>c),right:i.lazy(()=>c)}),ro=i.object({kind:i.literal("lt"),left:i.lazy(()=>c),right:i.lazy(()=>c)}),no=i.object({kind:i.literal("lte"),left:i.lazy(()=>c),right:i.lazy(()=>c)}),oo=i.object({kind:i.literal("and"),args:i.array(i.lazy(()=>c))}),ao=i.object({kind:i.literal("or"),args:i.array(i.lazy(()=>c))}),io=i.object({kind:i.literal("not"),arg:i.lazy(()=>c)}),so=i.object({kind:i.literal("if"),cond:i.lazy(()=>c),then:i.lazy(()=>c),else:i.lazy(()=>c)}),po=i.object({kind:i.literal("add"),left:i.lazy(()=>c),right:i.lazy(()=>c)}),lo=i.object({kind:i.literal("sub"),left:i.lazy(()=>c),right:i.lazy(()=>c)}),uo=i.object({kind:i.literal("mul"),left:i.lazy(()=>c),right:i.lazy(()=>c)}),co=i.object({kind:i.literal("div"),left:i.lazy(()=>c),right:i.lazy(()=>c)}),fo=i.object({kind:i.literal("mod"),left:i.lazy(()=>c),right:i.lazy(()=>c)}),mo=i.object({kind:i.literal("min"),args:i.array(i.lazy(()=>c))}),yo=i.object({kind:i.literal("max"),args:i.array(i.lazy(()=>c))}),xo=i.object({kind:i.literal("abs"),arg:i.lazy(()=>c)}),ho=i.object({kind:i.literal("neg"),arg:i.lazy(()=>c)}),Eo=i.object({kind:i.literal("floor"),arg:i.lazy(()=>c)}),go=i.object({kind:i.literal("ceil"),arg:i.lazy(()=>c)}),ko=i.object({kind:i.literal("round"),arg:i.lazy(()=>c)}),So=i.object({kind:i.literal("sqrt"),arg:i.lazy(()=>c)}),bo=i.object({kind:i.literal("pow"),base:i.lazy(()=>c),exponent:i.lazy(()=>c)}),vo=i.object({kind:i.literal("sumArray"),array:i.lazy(()=>c)}),No=i.object({kind:i.literal("minArray"),array:i.lazy(()=>c)}),Ro=i.object({kind:i.literal("maxArray"),array:i.lazy(()=>c)}),wo=i.object({kind:i.literal("concat"),args:i.array(i.lazy(()=>c))}),To=i.object({kind:i.literal("substring"),str:i.lazy(()=>c),start:i.lazy(()=>c),end:i.lazy(()=>c).optional()}),jo=i.object({kind:i.literal("trim"),str:i.lazy(()=>c)}),Ao=i.object({kind:i.literal("toLowerCase"),str:i.lazy(()=>c)}),zo=i.object({kind:i.literal("toUpperCase"),str:i.lazy(()=>c)}),Co=i.object({kind:i.literal("strLen"),str:i.lazy(()=>c)}),Po=i.object({kind:i.literal("startsWith"),str:i.lazy(()=>c),prefix:i.lazy(()=>c)}),Fo=i.object({kind:i.literal("endsWith"),str:i.lazy(()=>c),suffix:i.lazy(()=>c)}),Io=i.object({kind:i.literal("strIncludes"),str:i.lazy(()=>c),search:i.lazy(()=>c)}),Do=i.object({kind:i.literal("indexOf"),str:i.lazy(()=>c),search:i.lazy(()=>c)}),Oo=i.object({kind:i.literal("replace"),str:i.lazy(()=>c),search:i.lazy(()=>c),replacement:i.lazy(()=>c)}),$o=i.object({kind:i.literal("split"),str:i.lazy(()=>c),delimiter:i.lazy(()=>c)}),Vo=i.object({kind:i.literal("len"),arg:i.lazy(()=>c)}),qo=i.object({kind:i.literal("at"),array:i.lazy(()=>c),index:i.lazy(()=>c)}),Mo=i.object({kind:i.literal("first"),array:i.lazy(()=>c)}),Uo=i.object({kind:i.literal("last"),array:i.lazy(()=>c)}),Zo=i.object({kind:i.literal("slice"),array:i.lazy(()=>c),start:i.lazy(()=>c),end:i.lazy(()=>c).optional()}),Lo=i.object({kind:i.literal("includes"),array:i.lazy(()=>c),item:i.lazy(()=>c)}),_o=i.object({kind:i.literal("filter"),array:i.lazy(()=>c),predicate:i.lazy(()=>c)}),Ho=i.object({kind:i.literal("map"),array:i.lazy(()=>c),mapper:i.lazy(()=>c)}),Wo=i.object({kind:i.literal("find"),array:i.lazy(()=>c),predicate:i.lazy(()=>c)}),Bo=i.object({kind:i.literal("every"),array:i.lazy(()=>c),predicate:i.lazy(()=>c)}),Ko=i.object({kind:i.literal("some"),array:i.lazy(()=>c),predicate:i.lazy(()=>c)}),Go=i.object({kind:i.literal("append"),array:i.lazy(()=>c),items:i.array(i.lazy(()=>c))}),Yo=i.object({kind:i.literal("reverse"),array:i.lazy(()=>c)}),Jo=i.object({kind:i.literal("unique"),array:i.lazy(()=>c)}),Xo=i.object({kind:i.literal("flat"),array:i.lazy(()=>c)}),Qo=i.object({kind:i.literal("object"),fields:i.record(i.string(),i.lazy(()=>c))}),ea=i.object({kind:i.literal("field"),object:i.lazy(()=>c),property:i.string()}),ta=i.object({kind:i.literal("keys"),obj:i.lazy(()=>c)}),ra=i.object({kind:i.literal("values"),obj:i.lazy(()=>c)}),na=i.object({kind:i.literal("entries"),obj:i.lazy(()=>c)}),oa=i.object({kind:i.literal("merge"),objects:i.array(i.lazy(()=>c))}),aa=i.object({kind:i.literal("hasKey"),obj:i.lazy(()=>c),key:i.lazy(()=>c)}),ia=i.object({kind:i.literal("pick"),obj:i.lazy(()=>c),keys:i.lazy(()=>c)}),sa=i.object({kind:i.literal("omit"),obj:i.lazy(()=>c),keys:i.lazy(()=>c)}),pa=i.object({kind:i.literal("fromEntries"),entries:i.lazy(()=>c)}),la=i.object({kind:i.literal("typeof"),arg:i.lazy(()=>c)}),ua=i.object({kind:i.literal("isNull"),arg:i.lazy(()=>c)}),ca=i.object({kind:i.literal("coalesce"),args:i.array(i.lazy(()=>c))}),fa=i.object({kind:i.literal("toString"),arg:i.lazy(()=>c)}),da=i.object({kind:i.literal("toNumber"),arg:i.lazy(()=>c)}),ma=i.object({kind:i.literal("toBoolean"),arg:i.lazy(()=>c)}),c=i.union([Yn,Jn,Xn,Qn,eo,to,ro,no,oo,ao,io,so,po,lo,uo,co,fo,mo,yo,xo,ho,Eo,go,ko,So,bo,vo,No,Ro,wo,To,jo,Ao,zo,Co,Po,Fo,Io,Do,Oo,$o,Vo,qo,Mo,Uo,Zo,Lo,_o,Ho,Wo,Bo,Ko,Go,Yo,Jo,Xo,Qo,ea,ta,ra,na,oa,aa,ia,sa,pa,la,ua,ca,fa,da,ma]),Rs=i.enum(["lit","get","eq","neq","gt","gte","lt","lte","and","or","not","if","add","sub","mul","div","mod","min","max","abs","neg","floor","ceil","round","sqrt","pow","sumArray","minArray","maxArray","concat","substring","trim","toLowerCase","toUpperCase","strLen","startsWith","endsWith","strIncludes","indexOf","replace","split","len","at","first","last","slice","includes","filter","map","find","every","some","append","reverse","unique","flat","object","field","keys","values","entries","merge","hasKey","pick","omit","fromEntries","typeof","isNull","coalesce","toString","toNumber","toBoolean"]);var ya=ye.object({deps:ye.array(W),expr:c,description:ye.string().optional()}),Pt=ye.object({fields:ye.record(W,ya)});import{z as ze}from"zod";import{z as S}from"zod";import{z as N}from"zod";var xa=N.discriminatedUnion("kind",[N.object({kind:N.literal("prop"),name:N.string().min(1)}),N.object({kind:N.literal("index"),index:N.number().int().nonnegative()})]),xe=N.array(xa).min(1),Ft=N.discriminatedUnion("op",[N.object({op:N.literal("set"),path:xe,value:N.unknown()}),N.object({op:N.literal("unset"),path:xe}),N.object({op:N.literal("merge"),path:xe,value:N.record(N.string(),N.unknown())})]),Ps=N.object({type:N.string(),input:N.unknown().optional(),intentId:N.string()});function Fs(e){return{kind:"prop",name:e}}function Is(e){return{kind:"index",index:e}}function Ds(e,r){return{op:"set",path:e,value:r}}function Os(e){return{op:"unset",path:e}}function $s(e,r){return{op:"merge",path:e,value:r}}var ha=S.enum(["set","unset","merge"]),Ea=S.object({kind:S.literal("seq"),steps:S.array(S.lazy(()=>he))}),ga=S.object({kind:S.literal("if"),cond:c,then:S.lazy(()=>he),else:S.lazy(()=>he).optional()}),ka=S.object({kind:S.literal("patch"),op:ha,path:xe,value:c.optional()}),Sa=S.object({kind:S.literal("effect"),type:S.string(),params:S.record(S.string(),c)}),ba=S.object({kind:S.literal("call"),flow:S.string()}),va=S.object({kind:S.literal("halt"),reason:S.string().optional()}),Na=S.object({kind:S.literal("fail"),code:S.string(),message:c.optional()}),he=S.union([Ea,ga,ka,Sa,ba,va,Na]),Zs=S.enum(["seq","if","patch","effect","call","halt","fail"]);var It=ze.object({flow:he,input:me.optional(),inputType:_.optional(),params:ze.array(ze.string()).readonly().optional(),available:c.optional(),dispatchable:c.optional(),description:ze.string().optional()});var Ra=O.object({name:O.string().optional(),description:O.string().optional(),authors:O.array(O.string()).optional()}),Dt=O.object({id:O.string(),version:O.string(),hash:O.string(),types:O.record(O.string(),zt),state:Ct,computed:Pt,actions:O.record(O.string(),It),meta:Ra.optional()});import{z as j}from"zod";import{z as x}from"zod";var Be=x.object({code:x.string(),message:x.string(),source:x.object({actionId:x.string(),nodePath:x.string()}),timestamp:x.number(),context:x.record(x.string(),x.unknown()).optional()}),wa=x.object({nodePath:x.string(),snapshotVersion:x.number()}),Ke=x.object({id:x.string(),type:x.string(),params:x.record(x.string(),x.unknown()),actionId:x.string(),flowPosition:wa,createdAt:x.number()}),Ge=x.object({status:x.enum(["idle","computing","pending","error"]),lastError:Be.nullable(),pendingRequirements:x.array(Ke),currentAction:x.string().nullable()}),Ta=x.object({version:x.number(),timestamp:x.number(),randomSeed:x.string(),schemaHash:x.string()}),op=x.object({data:x.unknown(),computed:x.record(W,x.unknown()),system:Ge,input:x.unknown(),meta:Ta});function Ot(){return{status:"idle",lastError:null,pendingRequirements:[],currentAction:null}}var ja=j.enum(["complete","pending","halted","error"]),Aa=j.object({status:Ge.shape.status.optional(),currentAction:j.string().nullable().optional(),lastError:Be.nullable().optional(),addRequirements:j.array(Ke),removeRequirementIds:j.array(j.string())}),cp=j.object({patches:j.array(Ft),systemDelta:Aa,trace:ot,status:ja}),za=j.object({code:j.string(),message:j.string(),path:j.string().optional()}),fp=j.object({valid:j.boolean(),errors:j.array(za)}),dp=j.object({value:j.unknown(),trace:ue,deps:j.array(W)});function $t(){return{valid:!0,errors:[]}}function Ye(e){return{valid:!1,errors:e}}function qt(e){let r=[],t=Dt.safeParse(e);if(!t.success){let b=t.error.issues.map(m=>({code:"SCHEMA_ERROR",message:m.message,path:m.path.map(String).join(".")}));return Ye(b)}let n=t.data;mt(n.id)||r.push({code:"SCHEMA_ERROR",message:"Schema id must be a valid URI or UUID",path:"id"}),yt(n.version)||r.push({code:"SCHEMA_ERROR",message:"Schema version must follow Semantic Versioning 2.0",path:"version"});let o=n.hash;if(!o)r.push({code:"SCHEMA_ERROR",message:"Schema hash is required",path:"hash"});else{let b=e,{hash:m,...E}=b,C=Oe(E);o!==C&&r.push({code:"V-008",message:`Schema hash mismatch: expected ${C}, got ${o}`,path:"hash"})}Object.keys(n.state.fields).length===0&&r.push({code:"SCHEMA_ERROR",message:"StateSpec.fields must not be empty",path:"state.fields"}),Object.keys(n.computed.fields).length===0&&r.push({code:"SCHEMA_ERROR",message:"ComputedSpec.fields must not be empty",path:"computed.fields"}),Object.keys(n.actions).length===0&&r.push({code:"SCHEMA_ERROR",message:"actions must not be empty",path:"actions"}),r.push(...Fa(n)),r.push(...Da(n,"state.fields")),r.push(...Oa(n)),r.push(...$a(n)),r.push(...Va(n)),r.push(...qa(n));let a=we(n.computed),s=Te(a);Z(s)&&r.push(s.error);let p=gt(a);if(p)for(let b of p)r.push({code:"V-002",message:`Cyclic dependency: ${b.join(" -> ")}`,path:b[0]});let u=new Set(Object.keys(n.actions)),d=Ca(n,u);r.push(...d);let h=Pa(n);return r.push(...h),r.length>0?Ye(r):$t()}function Ca(e,r){let t=[];for(let[n,o]of Object.entries(e.actions)){let a=Ee(o.flow);for(let s of a)r.has(s)||t.push({code:"V-004",message:`Unknown flow reference: "${s}" in action "${n}"`,path:`actions.${n}`})}return t}function Ee(e){let r=[];switch(e.kind){case"call":r.push(e.flow);break;case"seq":for(let t of e.steps)r.push(...Ee(t));break;case"if":r.push(...Ee(e.then)),e.else&&r.push(...Ee(e.else));break}return r}function Pa(e){let r=[],t=new Map;for(let[s,p]of Object.entries(e.actions))t.set(s,Ee(p.flow));let n=new Set,o=new Set;function a(s,p){n.add(s),o.add(s);let u=t.get(s)??[];for(let d of u)if(n.has(d)){if(o.has(d))return r.push({code:"V-005",message:`Cyclic call detected: ${[...p,d].join(" -> ")}`,path:`actions.${s}`}),!0}else if(a(d,[...p,d]))return!0;return o.delete(s),!1}for(let s of t.keys())n.has(s)||a(s,[s]);return r}function Fa(e){let r=[];if(e.state.fieldTypes)for(let t of Object.keys(e.state.fieldTypes))t in e.state.fields||r.push({code:"V-010",message:`state.fieldTypes.${t} has no matching state.fields entry`,path:`state.fieldTypes.${t}`}),r.push(...ee(e.state.fieldTypes[t],e.types,`state.fieldTypes.${t}`));for(let[t,n]of Object.entries(e.actions)){if(!n.inputType){n.params&&n.params.length>0&&r.push(...Vt(t,n,e.types));continue}r.push(...ee(n.inputType,e.types,`actions.${t}.inputType`)),n.params&&n.params.length>0&&r.push(...Vt(t,n,e.types))}return r}function Vt(e,r,t){let n=r.params??[];if(n.length===0)return[];let o=[],a=new Set;for(let[u,d]of n.entries()){if(a.has(d)){o.push({code:"V-010",message:`Duplicate parameter name "${d}" is not allowed`,path:`actions.${e}.params.${u}`});continue}a.add(d)}let s=null;if(r.inputType?s=Je(r.inputType,t):r.input?.type==="object"&&r.input.fields&&(s=Object.keys(r.input.fields)),!s)return[...o,{code:"V-010",message:`actions.${e}.params requires an object-shaped input carrier`,path:`actions.${e}.params`}];let p=new Set(s);return[...o,...n.flatMap((u,d)=>p.has(u)?[]:[{code:"V-010",message:`Parameter "${u}" has no matching input field`,path:`actions.${e}.params.${d}`}])]}function Je(e,r,t=[]){if(e.kind==="ref"){if(t.includes(e.name))return null;let n=r[e.name];return n?Je(n.definition,r,[...t,e.name]):null}if(e.kind==="union"){let n=e.types.filter(o=>!Ia(o,r,t));return n.length===1?Je(n[0],r,t):null}return e.kind==="object"?Object.keys(e.fields):null}function Ia(e,r,t=[]){let n=L(e,r,t);return n?n.kind==="primitive"&&n.type==="null"||n.kind==="literal"&&n.value===null:!1}function ee(e,r,t,n=[]){let o=[];if(e.kind==="ref"){if(n.includes(e.name))return o.push({code:"V-010",message:`Cyclic type reference "${e.name}" in typing seam`,path:t}),o;let a=r[e.name];return!a||!L(e,r)?(o.push({code:"V-010",message:`Unknown type reference "${e.name}" in typing seam`,path:t}),o):(o.push(...ee(a.definition,r,t,[...n,e.name])),o)}switch(e.kind){case"array":return ee(e.element,r,`${t}.element`,n);case"record":{let a=[...ee(e.key,r,`${t}.key`,n),...ee(e.value,r,`${t}.value`,n)],s=L(e.key,r);return s&&(s.kind!=="primitive"||s.type!=="string")&&a.push({code:"V-010",message:"Record typing seams require string keys",path:`${t}.key`}),a}case"object":for(let[a,s]of Object.entries(e.fields))o.push(...ee(s.type,r,`${t}.fields.${a}.type`,n));return o;case"union":for(let[a,s]of e.types.entries())o.push(...ee(s,r,`${t}.types.${a}`,n));return o;default:return o}}function Da(e,r){let t=[],n=e.state,o=(a,s,p)=>{if(!a.required&&a.default===void 0&&t.push({code:"SCHEMA_ERROR",message:"Optional fields must define a default value",path:s}),a.default!==void 0){if(p){let u=$(a.default,p,e.types);u.ok||t.push({code:"V-009",message:`Default value type mismatch: ${u.message}`,path:s})}else if(a.default===null&&a.required!==!1)t.push({code:"V-009",message:`Default value 'null' is not compatible with required field type '${typeof a.type=="string"?a.type:"enum"}'`,path:s});else if(a.default!==null){let u=Y(a.default,a);u.ok||t.push({code:"V-009",message:`Default value type mismatch: ${u.message}`,path:s})}}if(a.type==="object"&&a.fields)for(let[u,d]of Object.entries(a.fields)){let h=p?ve(p,e.types,[{kind:"prop",name:u}]):null;o(d,`${s}.${u}`,h??void 0)}if(a.type==="array"&&a.items){let u=p?ve(p,e.types,[{kind:"index",index:0}]):null;o(a.items,`${s}[]`,u??void 0)}};for(let[a,s]of Object.entries(n.fields))o(s,`${r}.${a}`,n.fieldTypes?.[a]);return t}function Oa(e){let r=[];for(let[t,n]of Object.entries(e.computed.fields))for(let o of n.deps)de(e.computed,o)||fe(e.state,o,e.types)||r.push({code:"V-001",message:`Unknown dependency path: ${o}`,path:`computed.fields.${t}`});return r}function $a(e){let r=[];for(let[t,n]of Object.entries(e.computed.fields)){let a=G(n.expr).filter(s=>s.startsWith("$")||de(e.computed,s)?!1:s.startsWith("input.")||s.startsWith("system.")?!0:!fe(e.state,s,e.types));for(let s of a)r.push({code:"V-003",message:`Unknown path in computed expression: ${s}`,path:`computed.fields.${t}`})}return r}function Va(e){let r=[];for(let[t,n]of Object.entries(e.computed.fields)){let o=G(n.expr),a=new Set(n.deps),s=new Set(o.filter(p=>p.startsWith("$")||p==="input"||p.startsWith("input.")||p==="system"||p.startsWith("system.")||p==="meta"||p.startsWith("meta.")?!1:de(e.computed,p)?!0:fe(e.state,p,e.types)));for(let p of s)a.has(p)||r.push({code:"V-001",message:`Missing dependency for computed expression path: ${p}`,path:`computed.fields.${t}`})}return r}function qa(e){let r=[];for(let[t,n]of Object.entries(e.actions)){let o=[...xt(n.flow),...n.available?G(n.available):[],...n.dispatchable?G(n.dispatchable):[]];for(let a of o)if(!a.startsWith("$")){if(a==="input"||a.startsWith("input.")){if(n.inputType){let s=a==="input"?"":a.slice(6);ct(n.inputType,e.types,s)||r.push({code:"V-003",message:`Unknown input path: ${a}`,path:`actions.${t}`})}else if(n.input){let s=a==="input"?"":a.slice(6);Ue(n.input,s)||r.push({code:"V-003",message:`Unknown input path: ${a}`,path:`actions.${t}`})}continue}de(e.computed,a)||a.startsWith("system.")||a==="meta"||a.startsWith("meta.")||fe(e.state,a,e.types)||r.push({code:"V-003",message:`Unknown state path: ${a}`,path:`actions.${t}`})}}return r}function Mt(e,r,t){let n=te(r.meta.timestamp);return Ut(e,r,t,n)}function Ut(e,r,t,n){if(e.computed.fields[t]!==void 0)return Ma(e,r,t,n);if(t.startsWith("system.")){let a=V(r.system,t.slice(7));return{value:a,trace:g(n,"expr",t,{path:t},a,[]),deps:[]}}if(t.startsWith("input.")||t==="input"){let a=t==="input"?r.input:V(r.input,t.slice(6));return{value:a,trace:g(n,"expr",t,{path:t},a,[]),deps:[]}}let o=V(r.data,t);return{value:o,trace:g(n,"expr",t,{path:t},o,[]),deps:[]}}function Ma(e,r,t,n){let o=e.computed.fields[t];if(!o){let d=r.computed[t];return{value:d,trace:g(n,"computed",t,{path:t},d,[]),deps:[]}}let a=U(r,e,null,t,void 0,n),s=f(o.expr,a),p=ie(s)?s.value:null,u=o.deps.map(d=>Ut(e,r,d,n).trace);return{value:p,trace:g(n,"computed",t,{expr:o.expr},p,u),deps:o.deps}}function Ap(e){let r={};for(let[t,n]of Object.entries(e.fields))n.default!==void 0&&(r[t]=n.default);return r}import{z as ne}from"zod";var Pp=ne.object({now:ne.number(),randomSeed:ne.string(),env:ne.record(ne.string(),ne.unknown()).optional(),durationMs:ne.number().optional()});function sl(e,r,t){return{data:e,computed:{},system:Ot(),input:void 0,meta:{version:0,timestamp:t.now,randomSeed:t.randomSeed,schemaHash:r}}}function pl(e,r,t){return t===void 0&&typeof r=="string"?{type:e,input:void 0,intentId:r}:t===void 0?{type:e,input:r,intentId:""}:{type:e,input:r,intentId:t}}function xl(){return{compute:vt,computeSync:We,apply:At,applySystemDelta:je,validate:qt,explain:Mt,isActionAvailable:kt,getAvailableActions:bt,isIntentDispatchable:St}}export{xo as AbsExpr,It as ActionSpec,po as AddExpr,oo as AndExpr,Go as AppendExpr,qo as AtExpr,ba as CallFlow,go as CeilExpr,ca as CoalesceExpr,cp as ComputeResult,ja as ComputeStatus,ya as ComputedFieldSpec,Pt as ComputedSpec,wo as ConcatExpr,Za as CoreErrorCode,co as DivExpr,Dt as DomainSchema,Sa as EffectFlow,Fo as EndsWithExpr,na as EntriesExpr,Kn as EnumFieldType,Xn as EqExpr,Be as ErrorValue,Bo as EveryExpr,dp as ExplainResult,Rs as ExprKind,c as ExprNodeSchema,Na as FailFlow,ea as FieldExpr,me as FieldSpec,Gn as FieldType,_o as FilterExpr,Wo as FindExpr,Mo as FirstExpr,Xo as FlatExpr,Eo as FloorExpr,Zs as FlowKind,he as FlowNodeSchema,wa as FlowPosition,pa as FromEntriesExpr,Jn as GetExpr,eo as GtExpr,to as GteExpr,va as HaltFlow,aa as HasKeyExpr,Pp as HostContext,so as IfExpr,ga as IfFlow,Lo as IncludesExpr,Do as IndexOfExpr,Ps as Intent,ua as IsNullExpr,ta as KeysExpr,Uo as LastExpr,Vo as LenExpr,Yn as LitExpr,ro as LtExpr,no as LteExpr,Ho as MapExpr,Ro as MaxArrayExpr,yo as MaxExpr,oa as MergeExpr,No as MinArrayExpr,mo as MinExpr,fo as ModExpr,uo as MulExpr,ho as NegExpr,Qn as NeqExpr,io as NotExpr,Qo as ObjectExpr,sa as OmitExpr,ao as OrExpr,Ft as Patch,ka as PatchFlow,ha as PatchOp,xe as PatchPath,xa as PatchSegment,ia as PickExpr,bo as PowExpr,Bn as PrimitiveFieldType,Oo as ReplaceExpr,Ke as Requirement,yi as Result,Yo as ReverseExpr,ko as RoundExpr,Ra as SchemaMeta,W as SemanticPath,Ea as SeqFlow,Zo as SliceExpr,op as Snapshot,Ta as SnapshotMeta,Ko as SomeExpr,$o as SplitExpr,So as SqrtExpr,Po as StartsWithExpr,Ct as StateSpec,Io as StrIncludesExpr,Co as StrLenExpr,lo as SubExpr,To as SubstringExpr,vo as SumArrayExpr,Aa as SystemDelta,Ge as SystemState,ma as ToBooleanExpr,Ao as ToLowerCaseExpr,da as ToNumberExpr,fa as ToStringExpr,zo as ToUpperCaseExpr,ot as TraceGraph,ue as TraceNode,Xt as TraceNodeKind,Qt as TraceTermination,jo as TrimExpr,_ as TypeDefinition,zt as TypeSpec,la as TypeofExpr,Jo as UniqueExpr,za as ValidationError,fp as ValidationResult,ra as ValuesExpr,At as apply,je as applySystemDelta,we as buildDependencyGraph,Ba as canonicalEqual,oe as compareUnicodeCodePoints,vt as compute,We as computeSync,U as createContext,xl as createCore,v as createError,ht as createFlowState,Ot as createInitialSystemState,pl as createIntent,sl as createSnapshot,te as createTraceContext,g as createTraceNode,gt as detectCycles,re as err,pe as evaluateComputed,f as evaluateExpr,$i as evaluateFlow,se as evaluateFlowSync,Ki as evaluateSingleComputed,Mt as explain,Ap as extractDefaults,Wa as fromCanonical,Xa as generateRequirementId,rt as generateRequirementIdSync,nt as generateTraceId,bt as getAvailableActions,nr as getByPatchPath,V as getByPath,Mi as getTransitiveDeps,pi as hasPath,Jt as hashSchema,Ya as hashSchemaEffective,Ja as hashSchemaEffectiveSync,Oe as hashSchemaSync,Is as indexSegment,Ye as invalidResult,kt as isActionAvailable,Z as isErr,La as isErrorValue,St as isIntentDispatchable,ie as isOk,lt as isSafePatchPath,ai as joinPath,ui as lastSegment,be as mergeAtPatchPath,si as mergeAtPath,$s as mergePatch,l as ok,li as parentPath,D as parsePath,ke as patchPathToDisplayString,Fs as propSegment,pt as semanticPathToPatchPath,ce as setByPatchPath,er as setByPath,Ds as setPatch,et as sha256,tt as sha256Sync,Ie as sortKeys,le as toCanonical,Ha as toJcs,Te as topologicalSort,Se as unsetByPatchPath,ii as unsetByPath,Os as unsetPatch,$t as validResult,qt as validate,Nt as validateIntentInput,X as withCollectionContext,ge as withNodePath,$e as withSnapshot};
1
+ import{z as or}from"zod";var Si=or.enum(["VALIDATION_ERROR","INVALID_PATCH_PATH","PATH_NOT_FOUND","TYPE_MISMATCH","DIVISION_BY_ZERO","INDEX_OUT_OF_BOUNDS","UNKNOWN_ACTION","ACTION_UNAVAILABLE","INVALID_INPUT","INVALID_CONTEXT","CYCLIC_DEPENDENCY","UNKNOWN_FLOW","CYCLIC_CALL","UNKNOWN_EFFECT","INTERNAL_ERROR"]);function h(e,t,r,n,o,a){return{code:e,message:t,source:{actionId:r,nodePath:n},timestamp:o,context:a}}function bi(e){if(typeof e!="object"||e===null)return!1;let t=e;return typeof t.code=="string"&&typeof t.message=="string"&&typeof t.source=="object"&&t.source!==null&&typeof t.source.actionId=="string"&&typeof t.source.nodePath=="string"&&typeof t.timestamp=="number"}import{z as j}from"zod";function _e(e){if(e==null)return e;if(Array.isArray(e))return e.map(_e);if(typeof e=="object"){let t={},r=Object.keys(e).sort();for(let n of r){let o=e[n];o!==void 0&&(t[n]=_e(o))}return t}return e}function te(e){let t=_e(e);return JSON.stringify(t)}function Ni(e){return Me(e)}function Me(e){if(e===null)return"null";switch(typeof e){case"string":return JSON.stringify(e);case"number":return Number.isFinite(e)?JSON.stringify(e):"null";case"boolean":return e?"true":"false";case"undefined":return"null";case"object":return Array.isArray(e)?ar(e):ir(e);default:return"null"}}function ar(e){return`[${e.map(r=>r===void 0||typeof r=="function"||typeof r=="symbol"?"null":Me(r)).join(",")}]`}function ir(e){let t=Object.keys(e).sort(pe),r=[];for(let n of t){let o=e[n];o===void 0||typeof o=="function"||typeof o=="symbol"||r.push(`${JSON.stringify(n)}:${Me(o)}`)}return`{${r.join(",")}}`}function pe(e,t){let r=Array.from(e),n=Array.from(t),o=Math.min(r.length,n.length);for(let a=0;a<o;a++){let i=r[a].codePointAt(0)??0,l=n[a].codePointAt(0)??0;if(i!==l)return i-l}return r.length-n.length}function wi(e){return JSON.parse(e)}function Ti(e,t){return te(e)===te(t)}function ft(e,t){if(t==="effective")return e;let r=e.state?.fields??{},n=Object.entries(r).filter(([o])=>!o.startsWith("$"));return n.length===Object.keys(r).length?e:{...e,state:{...e.state,fields:Object.fromEntries(n)}}}async function dt(e){let t=new TextEncoder().encode(e),r=await crypto.subtle.digest("SHA-256",t);return Array.from(new Uint8Array(r)).map(o=>o.toString(16).padStart(2,"0")).join("")}var sr=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),lr=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]);function L(e,t){return e>>>t|e<<32-t}function cr(e){let t=e.length*8,r=e.length+1,n=r%64<=56?56-r%64:120-r%64,o=r+n+8,a=new Uint8Array(o);a.set(e),a[e.length]=128;let i=Math.floor(t/4294967296),l=t>>>0;a[o-8]=i>>>24&255,a[o-7]=i>>>16&255,a[o-6]=i>>>8&255,a[o-5]=i&255,a[o-4]=l>>>24&255,a[o-3]=l>>>16&255,a[o-2]=l>>>8&255,a[o-1]=l&255;let c=new Uint32Array(lr),d=new DataView(a.buffer);for(let y=0;y<a.length;y+=64){let b=new Uint32Array(64);for(let v=0;v<16;v++)b[v]=d.getUint32(y+v*4);for(let v=16;v<64;v++){let qe=L(b[v-15],7)^L(b[v-15],18)^b[v-15]>>>3,Ue=L(b[v-2],17)^L(b[v-2],19)^b[v-2]>>>10;b[v]=b[v-16]+qe+b[v-7]+Ue>>>0}let w=c[0],U=c[1],R=c[2],J=c[3],D=c[4],q=c[5],_=c[6],he=c[7];for(let v=0;v<64;v++){let qe=L(D,6)^L(D,11)^L(D,25),Ue=D&q^~D&_,ut=he+qe+Ue+sr[v]+b[v]>>>0,tr=L(w,2)^L(w,13)^L(w,22),rr=w&U^w&R^U&R,nr=tr+rr>>>0;he=_,_=q,q=D,D=J+ut>>>0,J=R,R=U,U=w,w=ut+nr>>>0}c[0]=c[0]+w>>>0,c[1]=c[1]+U>>>0,c[2]=c[2]+R>>>0,c[3]=c[3]+J>>>0,c[4]=c[4]+D>>>0,c[5]=c[5]+q>>>0,c[6]=c[6]+_>>>0,c[7]=c[7]+he>>>0}let m=new Uint8Array(32),S=new DataView(m.buffer);for(let y=0;y<c.length;y++)S.setUint32(y*4,c[y]);return m}function Te(e){let t=new TextEncoder().encode(e),r=cr(t),n="";for(let o of r)n+=o.toString(16).padStart(2,"0");return n}async function pr(e,t="semantic"){let r=te(ft(e,t));return dt(r)}function Le(e,t="semantic"){let r=te(ft(e,t));return Te(r)}async function ji(e){return pr(e,"effective")}function Ci(e){return Le(e,"effective")}async function zi(e,t,r,n){let o=`${e}:${t}:${r}:${n}`;return`req-${(await dt(o)).slice(0,16)}`}function mt(e,t,r,n){let o=`${e}:${t}:${r}:${n}`;return`req-${Te(o).slice(0,16)}`}function yt(e=0){return`trace-${e}`}var ur=j.enum(["expr","computed","flow","patch","namespaceRead","namespaceDelta","effect","branch","call","halt","error"]),Ee=j.lazy(()=>j.object({id:j.string(),kind:ur,sourcePath:j.string(),inputs:j.record(j.string(),j.unknown()),output:j.unknown(),children:j.array(Ee),timestamp:j.number()})),fr=j.enum(["complete","effect","halt","error"]),xt=j.object({root:Ee,nodes:j.record(j.string(),Ee),intent:j.object({type:j.string(),input:j.unknown()}),baseVersion:j.number(),resultVersion:j.number(),duration:j.number(),terminatedBy:fr});function oe(e){let t=0;return{timestamp:e,nextId:()=>yt(t++)}}function E(e,t,r,n,o,a=[]){return{id:e.nextId(),kind:t,sourcePath:r,inputs:n,output:o,children:a,timestamp:e.timestamp}}function Z(e,t,r,n,o,a,i={}){return{snapshot:e,schema:t,currentAction:r,nodePath:n,intentId:o,context:i.context,phase:i.phase??(i.context?"flow":"snapshot"),runtimeOrdinal:0,runtimeAllocator:{ordinal:0},trace:typeof a=="object"?a:oe(a),collectionStack:[]}}function re(e,t,r,n){return{...e,$item:t,$index:r,$array:n,collectionStack:[...e.collectionStack??[],r]}}function ge(e,t){return{...e,snapshot:t}}function ae(e,t){return{...e,nodePath:t}}function O(e){if(!e)return[];let t=[],r="",n=!1;for(let o of e){if(n){o==="."||o==="\\"?r+=o:r+=`\\${o}`,n=!1;continue}if(o==="\\"){n=!0;continue}if(o==="."){t.push(r),r="";continue}r+=o}return n&&(r+="\\"),t.push(r),t}function ht(e){return e.replaceAll("\\","\\\\").replaceAll(".","\\.")}function Vi(...e){return e.filter(Boolean).map(ht).join(".")}function H(e,t){if(!t)return e;let r=O(t),n=e;for(let o of r){if(n==null)return;if(typeof n=="object")n=n[o];else return}return n}function dr(e,t,r){if(!t)return r;let n=O(t);return Et(e,n,r)}function Et(e,t,r){if(t.length===0)return r;let[n,...o]=t,a=e!==null&&typeof e=="object"?e:{};if(o.length===0)return{...a,[n]:r};let i=a[n];return{...a,[n]:Et(i,o,r)}}function qi(e,t){if(!t)return;let r=O(t);return gt(e,r)}function gt(e,t){if(t.length===0||e===null||typeof e!="object")return e;let[r,...n]=t,o=e;if(n.length===0){let{[r]:i,...l}=o;return l}let a=o[r];return{...o,[r]:gt(a,n)}}function Ui(e,t,r){let n=H(e,t),o=n!==null&&typeof n=="object"?{...n,...r}:r;return dr(e,t,o)}function _i(e,t){if(!t)return e!==void 0;let r=O(t),n=e;for(let o of r){if(n==null||typeof n!="object"||!(o in n))return!1;n=n[o]}return!0}function Mi(e){let t=O(e);return mr(...t.slice(0,-1))}function Li(e){let t=O(e);return t[t.length-1]??""}function mr(...e){return e.map(ht).join(".")}var yr=new Set(["__proto__","constructor","prototype"]);function ie(e){let t="";for(let r=0;r<e.length;r++){let n=e[r];if(n.kind==="prop"){t+=r===0?n.name:`.${n.name}`;continue}t+=`[${n.index}]`}return t}function kt(e){let t=O(e);if(t.length===0)return[{kind:"prop",name:e}];let r=[];for(let n of t){let o=hr(n);if(o){r.push(...o);continue}r.push({kind:"prop",name:n})}return r.length>0?r:[{kind:"prop",name:e}]}function ke(e){return e.every(t=>t.kind!=="prop"||!yr.has(t.name))}function xr(e,t){let r=e;for(let n of t){if(n.kind==="prop"){if(r===null||typeof r!="object"||Array.isArray(r))return;r=r[n.name];continue}if(!Array.isArray(r))return;r=r[n.index]}return r}function Se(e,t,r){return Ze(e,t,r)}function Re(e,t){return He(e,t)}function Ae(e,t,r){let n=xr(e,t),o=We(n)?{...n,...r}:r;return Se(e,t,o)}function Ze(e,t,r){if(t.length===0)return r;let[n,...o]=t;if(n.kind==="prop"){let i=We(e)?e:{},l=Ze(i[n.name],o,r);return{...i,[n.name]:l}}let a=Array.isArray(e)?[...e]:[];return a[n.index]=Ze(a[n.index],o,r),a}function He(e,t){if(t.length===0)return e;let[r,...n]=t;if(r.kind==="prop"){if(!We(e))return e;if(n.length===0){let{[r.name]:a,...i}=e;return i}return{...e,[r.name]:He(e[r.name],n)}}if(!Array.isArray(e))return e;let o=[...e];return n.length===0?(r.index>=0&&r.index<o.length&&delete o[r.index],o):(o[r.index]=He(o[r.index],n),o)}function We(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function hr(e){if(!e.includes("[")||e.includes("\\[")||e.includes("\\]"))return null;let t=[],r=0,n=!1;for(;r<e.length;){let o=e.indexOf("[",r);if(o===-1){let c=e.slice(r);if(c.length===0)break;if(n)return null;t.push({kind:"prop",name:c});break}let a=e.slice(r,o);if(a.length>0){if(n)return null;t.push({kind:"prop",name:a})}let i=e.indexOf("]",o+1);if(i===-1)return null;let l=e.slice(o+1,i);if(!/^[0-9]+$/.test(l))return null;t.push({kind:"index",index:Number(l)}),n=!0,r=i+1}return t.length>0?t:null}import{z as ue}from"zod";var Y=ue.string().min(1),Ki=(e,t)=>ue.discriminatedUnion("ok",[ue.object({ok:ue.literal(!0),value:e}),ue.object({ok:ue.literal(!1),error:t})]),p=e=>({ok:!0,value:e}),F=e=>({ok:!1,error:e}),fe=e=>e.ok,W=e=>!e.ok;function Er(e){return/^\d+$/.test(e)}function gr(e,t){let r=G(e,t);return r?r.kind==="primitive"&&r.type==="null"||r.kind==="literal"&&r.value===null:!1}function St(e,t){let r=G(e,t);if(!r)return null;if(r.kind!=="union")return r;let n=r.types.filter(a=>!gr(a,t));return n.length!==r.types.length?n.length!==1?null:G(n[0],t):r}function G(e,t,r=[]){if(e.kind!=="ref")return e;if(r.includes(e.name))return null;let n=t[e.name];return n?G(n.definition,t,[...r,e.name]):null}function bt(e,t,r){return r?Nt(e,t,O(r))!==null:!0}function vt(e,t,r){return Nt(e,t,r)!==null}function Nt(e,t,r){let n=e;for(let o of r){if(!n)return null;let a=St(n,t);if(!a)return null;switch(a.kind){case"object":n=a.fields[o]?.type??null;break;case"record":n=a.value;break;case"array":if(!Er(o))return null;n=a.element;break;case"primitive":return null;default:return null}}return n}function je(e,t,r){let n=e;for(let o of r){if(!n)return null;let a=St(n,t);if(!a)return null;switch(a.kind){case"object":if(o.kind!=="prop")return null;n=a.fields[o.name]?.type??null;break;case"record":if(o.kind!=="prop")return null;n=a.value;break;case"array":if(o.kind!=="index")return null;n=a.element;break;case"primitive":return null;default:return null}}return n}function Ce(e,t,r){if(!e.fieldTypes||r.length===0)return null;let[n,...o]=r;if(!n||n.kind!=="prop"||!(n.name in e.fields))return null;let a=e.fieldTypes[n.name];return a?o.length===0?a:je(a,t,o):null}function $(e,t,r,n){if(e===void 0)return n?.allowUndefined?{ok:!0}:{ok:!1,message:"Value is required"};let o=G(t,r);if(!o)return{ok:!1,message:"Unknown type reference"};if(o.kind==="union")return o.types.map(i=>$(e,i,r,n)).find(i=>i.ok)??{ok:!1,message:"Value does not match any union branch"};switch(o.kind){case"primitive":switch(o.type){case"null":return e===null?{ok:!0}:{ok:!1,message:"Expected null"};case"string":return typeof e=="string"?{ok:!0}:{ok:!1,message:"Expected string"};case"number":return typeof e=="number"&&Number.isFinite(e)?{ok:!0}:{ok:!1,message:"Expected number"};case"boolean":return typeof e=="boolean"?{ok:!0}:{ok:!1,message:"Expected boolean"};case"object":return e!==null&&!Array.isArray(e)&&typeof e=="object"?{ok:!0}:{ok:!1,message:"Expected object"};case"array":return Array.isArray(e)?{ok:!0}:{ok:!1,message:"Expected array"};default:return{ok:!1,message:`Unsupported primitive type: ${o.type}`}}case"literal":return Object.is(e,o.value)?{ok:!0}:{ok:!1,message:`Expected literal ${JSON.stringify(o.value)}`};case"array":if(!Array.isArray(e))return{ok:!1,message:"Expected array"};for(let i of e){let l=$(i,o.element,r,{allowUndefined:!1});if(!l.ok)return l}return{ok:!0};case"object":return e===null||Array.isArray(e)||typeof e!="object"?{ok:!1,message:"Expected object"}:kr(e,o.fields,r,n?.allowPartial??!1,n?.allowUndefined??!1);case"record":if(e===null||Array.isArray(e)||typeof e!="object")return{ok:!1,message:"Expected object"};let a=G(o.key,r);if(!a||a.kind!=="primitive"||a.type!=="string")return{ok:!1,message:"Record keys must be strings"};for(let i of Object.values(e)){let l=$(i,o.value,r,{allowUndefined:!1});if(!l.ok)return l}return{ok:!0};case"ref":return{ok:!1,message:"Unresolved type reference"}}}function kr(e,t,r,n,o){let a=new Set(Object.keys(t));for(let i of Object.keys(e))if(!a.has(i))return{ok:!1,message:`Unknown field: ${i}`};for(let[i,l]of Object.entries(t)){if(!(i in e)){if(!n&&!l.optional)return{ok:!1,message:`Missing required field: ${i}`};continue}let c=$(e[i],l.type,r,{allowPartial:n,allowUndefined:o});if(!c.ok)return c}return{ok:!0}}var Sr=/^\d+\.\d+\.\d+(?:-[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?(?:\+[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?$/,br=/^[a-zA-Z][a-zA-Z0-9+.-]*:/,vr=/^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;function wt(e){return br.test(e)||vr.test(e)}function Tt(e){return Sr.test(e)}function M(e){let t=[],r=n=>{switch(n.kind){case"lit":return;case"get":t.push(n.path);return;case"eq":case"neq":case"gt":case"gte":case"lt":case"lte":case"add":case"sub":case"mul":case"div":case"mod":r(n.left),r(n.right);return;case"pow":r(n.base),r(n.exponent);return;case"and":case"or":case"concat":case"coalesce":case"min":case"max":n.args.forEach(r);return;case"not":case"typeof":case"isNull":case"len":case"abs":case"neg":case"floor":case"ceil":case"round":case"sqrt":case"toString":case"toNumber":case"toBoolean":r(n.arg);return;case"first":case"last":case"reverse":case"unique":case"flat":case"sumArray":case"minArray":case"maxArray":r(n.array);return;case"if":r(n.cond),r(n.then),r(n.else);return;case"substring":r(n.str),r(n.start),n.end&&r(n.end);return;case"trim":case"toLowerCase":case"toUpperCase":case"strLen":r(n.str);return;case"startsWith":r(n.str),r(n.prefix);return;case"endsWith":r(n.str),r(n.suffix);return;case"strIncludes":case"indexOf":r(n.str),r(n.search);return;case"replace":r(n.str),r(n.search),r(n.replacement);return;case"split":r(n.str),r(n.delimiter);return;case"at":r(n.array),r(n.index);return;case"slice":r(n.array),r(n.start),n.end&&r(n.end);return;case"includes":r(n.array),r(n.item);return;case"filter":case"find":case"every":case"some":r(n.array),r(n.predicate);return;case"map":r(n.array),r(n.mapper);return;case"append":r(n.array),n.items.forEach(r);return;case"object":Object.values(n.fields).forEach(r);return;case"field":r(n.object);return;case"keys":case"values":case"entries":r(n.obj);return;case"merge":n.objects.forEach(r);return;case"hasKey":r(n.obj),r(n.key);return;case"pick":case"omit":r(n.obj),r(n.keys);return;case"fromEntries":r(n.entries);return}};return r(e),t}function Rt(e){let t=[],r=n=>{switch(n.kind){case"seq":n.steps.forEach(r);return;case"if":t.push(...M(n.cond)),r(n.then),n.else&&r(n.else);return;case"patch":for(let o of n.path)o.kind==="expr"&&t.push(...M(o.expr));n.op!=="unset"&&n.value&&t.push(...M(n.value));return;case"causalGuard":r(n.body);return;case"effect":Object.values(n.params).forEach(o=>{t.push(...M(o))});return;case"fail":n.message&&t.push(...M(n.message));return;case"call":case"halt":return}};return r(e),t}function ne(e,t,r={}){if(e.fieldTypes){if(!t)return!0;let n=O(t),[o,...a]=n;if(!o)return!0;if(!(o in e.fields))return!1;let i=e.fieldTypes[o];if(i&&(a.length===0?!0:vt(i,r,a)))return!0}return Ge({type:"object",required:!0,fields:e.fields},t)}function be(e,t){return Object.prototype.hasOwnProperty.call(e.fields,t)}function Ge(e,t){if(!t)return!0;let r=O(t);if(r.length===0)return!0;let n=e;for(let o of r){if(!n)return!1;let a=n.type;if(a==="object"){if(!n.fields)return!0;if(!(o in n.fields))return!1;n=n.fields[o];continue}if(a==="array"){if(!wr(o))return!1;n=n.items??null;continue}return!1}return!0}function K(e,t,r){if(e===void 0)return r?.allowUndefined&&t.required===!1?{ok:!0}:{ok:!1,message:"Value is required"};if(e===null)return{ok:!0};let n=t.type;if(typeof n=="object"&&"enum"in n)return n.enum.some(o=>Object.is(o,e))?{ok:!0}:{ok:!1,message:"Value is not in enum"};switch(n){case"null":return e===null?{ok:!0}:{ok:!1,message:"Expected null"};case"string":return typeof e=="string"?{ok:!0}:{ok:!1,message:"Expected string"};case"number":return typeof e=="number"&&Number.isFinite(e)?{ok:!0}:{ok:!1,message:"Expected number"};case"boolean":return typeof e=="boolean"?{ok:!0}:{ok:!1,message:"Expected boolean"};case"object":return e===null||Array.isArray(e)||typeof e!="object"?{ok:!1,message:"Expected object"}:Nr(e,t,r?.allowPartial??!1,r?.allowUndefined??!1);case"array":if(!Array.isArray(e))return{ok:!1,message:"Expected array"};if(!t.items)return{ok:!0};for(let o of e){let a=K(o,t.items,{allowUndefined:!1});if(!a.ok)return a}return{ok:!0}}}function Nr(e,t,r,n){if(!t.fields)return{ok:!0};let o=Object.entries(t.fields),a=new Set(o.map(([i])=>i));for(let i of Object.keys(e)){if(!a.has(i))return{ok:!1,message:`Unknown field: ${i}`};let l=t.fields[i],c=K(e[i],l,{allowPartial:r,allowUndefined:n});if(!c.ok)return c}if(!r){for(let[i,l]of o)if(l.required&&!(i in e))return{ok:!1,message:`Missing required field: ${i}`}}return{ok:!0}}function ze(e,t){if(t.length===0)return e;let r=e;for(let n of t){if(!r)return null;let o=r.type;if(o==="object"){if(n.kind!=="prop"||!r.fields||!(n.name in r.fields))return null;r=r.fields[n.name];continue}if(o==="array"){if(n.kind!=="index")return null;r=r.items??null;continue}return null}return r}function wr(e){return/^[0-9]+$/.test(e)}function f(e,t){switch(e.kind){case"lit":return p(e.value);case"get":return Tr(e.path,t);case"eq":return X(e.left,e.right,t,(r,n)=>r===n);case"neq":return X(e.left,e.right,t,(r,n)=>r!==n);case"gt":return X(e.left,e.right,t,(r,n)=>g(r)>g(n));case"gte":return X(e.left,e.right,t,(r,n)=>g(r)>=g(n));case"lt":return X(e.left,e.right,t,(r,n)=>g(r)<g(n));case"lte":return X(e.left,e.right,t,(r,n)=>g(r)<=g(n));case"and":return Pr(e.args,t);case"or":return Ir(e.args,t);case"not":return Fr(e.arg,t);case"if":return $r(e,t);case"add":return X(e.left,e.right,t,(r,n)=>g(r)+g(n));case"sub":return X(e.left,e.right,t,(r,n)=>g(r)-g(n));case"mul":return X(e.left,e.right,t,(r,n)=>g(r)*g(n));case"div":return Dr(e.left,e.right,t);case"mod":return Or(e.left,e.right,t);case"min":return Vr(e.args,t);case"max":return qr(e.args,t);case"abs":return Ur(e.arg,t);case"neg":return _r(e.arg,t);case"floor":return dn(e.arg,t);case"ceil":return mn(e.arg,t);case"round":return yn(e.arg,t);case"sqrt":return xn(e.arg,t);case"pow":return hn(e.base,e.exponent,t);case"sumArray":return En(e.array,t);case"minArray":return gn(e.array,t);case"maxArray":return kn(e.array,t);case"concat":return Mr(e.args,t);case"substring":return Lr(e,t);case"trim":return Zr(e.str,t);case"toLowerCase":return Sn(e.str,t);case"toUpperCase":return bn(e.str,t);case"strLen":return vn(e.str,t);case"startsWith":return Nn(e.str,e.prefix,t);case"endsWith":return wn(e.str,e.suffix,t);case"strIncludes":return Tn(e.str,e.search,t);case"indexOf":return Rn(e.str,e.search,t);case"replace":return An(e.str,e.search,e.replacement,t);case"split":return jn(e.str,e.delimiter,t);case"len":return Hr(e.arg,t);case"at":return Wr(e.array,e.index,t);case"first":return Gr(e.array,t);case"last":return Kr(e.array,t);case"slice":return Br(e,t);case"includes":return Jr(e.array,e.item,t);case"filter":return Yr(e.array,e.predicate,t);case"map":return Xr(e.array,e.mapper,t);case"find":return Qr(e.array,e.predicate,t);case"every":return en(e.array,e.predicate,t);case"some":return tn(e.array,e.predicate,t);case"append":return rn(e.array,e.items,t);case"reverse":return Cn(e.array,t);case"unique":return zn(e.array,t);case"flat":return Pn(e.array,t);case"object":return nn(e.fields,t);case"field":return on(e.object,e.property,t);case"keys":return an(e.obj,t);case"values":return sn(e.obj,t);case"entries":return ln(e.obj,t);case"merge":return cn(e.objects,t);case"hasKey":return In(e.obj,e.key,t);case"pick":return Fn(e.obj,e.keys,t);case"omit":return $n(e.obj,e.keys,t);case"fromEntries":return Dn(e.entries,t);case"typeof":return pn(e.arg,t);case"isNull":return un(e.arg,t);case"coalesce":return fn(e.args,t);case"toString":return On(e.arg,t);case"toNumber":return Vn(e.arg,t);case"toBoolean":return qn(e.arg,t);default:return F(h("INTERNAL_ERROR",`Unknown expression kind: ${e.kind}`,t.currentAction??"",t.nodePath,t.trace.timestamp))}}function g(e){return typeof e=="number"?e:typeof e=="string"?parseFloat(e)||0:typeof e=="boolean"&&e?1:0}function Q(e){return e==null?!1:typeof e=="boolean"?e:typeof e=="number"?e!==0:typeof e=="string"?e.length>0:!0}function C(e){return e==null?"":typeof e=="string"?e:String(e)}function Tr(e,t){let r=t.expressionPath;t.expressionPath=e;try{return Rr(e,t)}finally{t.expressionPath=r}}function Rr(e,t){if(e.startsWith("$item")){if(t.$item===void 0)return p(null);if(e==="$item")return p(t.$item);let r=e.slice(6);return p(se(H(t.$item,r)))}if(e==="$index")return p(t.$index);if(e==="$array")return p(t.$array);if(e==="$runtime"||e.startsWith("$runtime."))return Ar(e,t);if(e==="$context"||e.startsWith("$context."))return jr(e,t);if(e.startsWith("$"))return F(h("PATH_NOT_FOUND",`Unknown reserved expression path: ${e}`,t.currentAction??"",t.nodePath,t.trace.timestamp));if(e.startsWith("input.")||e==="input"){if(t.phase!=="flow"&&t.phase!=="dispatchability")return F(h("PATH_NOT_FOUND",`Input path is not available during ${t.phase} expression evaluation: ${e}`,t.currentAction??"",t.nodePath,t.trace.timestamp));let r=e==="input"?"":e.slice(6);return p(r?se(H(t.snapshot.input,r)):t.snapshot.input)}return Object.prototype.hasOwnProperty.call(t.schema.computed.fields,e)?p(se(t.snapshot.computed[e])):p(se(H(t.snapshot.state,e)))}function Ar(e,t){if(t.phase!=="flow"||!t.context)return F(h("PATH_NOT_FOUND",`Runtime path is only available during bound action flow evaluation: ${e}`,t.currentAction??"",t.nodePath,t.trace.timestamp));switch(e){case"$runtime.intent.id":return p(se(t.intentId));case"$runtime.intent.action":return p(se(t.currentAction));case"$runtime.time.timestamp":return p(t.context.runtime.time.timestamp);case"$runtime.time.iso":return p(Cr(t.context.runtime.time.timestamp));case"$runtime.random.seed":return p(t.context.runtime.random.seed);case"$runtime.random.uuid":return p(zr(t));default:return F(h("PATH_NOT_FOUND",`Unknown runtime path: ${e}`,t.currentAction??"",t.nodePath,t.trace.timestamp))}}function jr(e,t){if(t.phase!=="flow"||!t.context)return F(h("PATH_NOT_FOUND",`Context path is only available during bound action flow evaluation: ${e}`,t.currentAction??"",t.nodePath,t.trace.timestamp));if(!t.schema.context)return F(h("PATH_NOT_FOUND",`Schema does not declare user context path: ${e}`,t.currentAction??"",t.nodePath,t.trace.timestamp));if(e==="$context")return p(t.context.external);let r=e.slice(9);return ne(t.schema.context,r,t.schema.types)?p(se(H(t.context.external,r))):F(h("PATH_NOT_FOUND",`Unknown user context path: ${e}`,t.currentAction??"",t.nodePath,t.trace.timestamp))}function Cr(e){if(!Number.isFinite(e))return null;let t=new Date(e);return Number.isFinite(t.getTime())?t.toISOString():null}function zr(e){let t=e.runtimeAllocator??{ordinal:e.runtimeOrdinal??0};e.runtimeAllocator=t;let r=t.ordinal;t.ordinal=r+1,e.runtimeOrdinal=t.ordinal;let n=te({nodePath:e.nodePath,expressionPath:e.expressionPath??"$runtime.random.uuid",collectionStack:e.collectionStack??[],ordinal:r}),o=te({runtimeSeed:e.context?.runtime.random.seed??"",intentId:e.intentId??"",allocationSite:n}),a=Te(o).slice(0,32).padEnd(32,"0"),i=(Number.parseInt(a[16]??"0",16)&3|8).toString(16);return[a.slice(0,8),a.slice(8,12),`4${a.slice(13,16)}`,`${i}${a.slice(17,20)}`,a.slice(20,32)].join("-")}function se(e){return e===void 0?null:e}function X(e,t,r,n){let o=f(e,r);if(!o.ok)return o;let a=f(t,r);return a.ok?p(n(o.value,a.value)):a}function Pr(e,t){for(let r of e){let n=f(r,t);if(!n.ok)return n;if(!Q(n.value))return p(!1)}return p(!0)}function Ir(e,t){for(let r of e){let n=f(r,t);if(!n.ok)return n;if(Q(n.value))return p(!0)}return p(!1)}function Fr(e,t){let r=f(e,t);return r.ok?p(!Q(r.value)):r}function $r(e,t){let r=f(e.cond,t);return r.ok?f(Q(r.value)?e.then:e.else,t):r}function Dr(e,t,r){let n=f(e,r);if(!n.ok)return n;let o=f(t,r);if(!o.ok)return o;let a=g(o.value);return a===0?p(null):p(g(n.value)/a)}function Or(e,t,r){let n=f(e,r);if(!n.ok)return n;let o=f(t,r);if(!o.ok)return o;let a=g(o.value);return a===0?p(null):p(g(n.value)%a)}function Vr(e,t){if(e.length===0)return p(null);let r=[];for(let n of e){let o=f(n,t);if(!o.ok)return o;r.push(g(o.value))}return p(Math.min(...r))}function qr(e,t){if(e.length===0)return p(null);let r=[];for(let n of e){let o=f(n,t);if(!o.ok)return o;r.push(g(o.value))}return p(Math.max(...r))}function Ur(e,t){let r=f(e,t);return r.ok?p(Math.abs(g(r.value))):r}function _r(e,t){let r=f(e,t);return r.ok?p(-g(r.value)):r}function Mr(e,t){let r=[];for(let a of e){let i=f(a,t);if(!i.ok)return i;r.push(i.value)}if(r.some(a=>Array.isArray(a))){let a=[];for(let i of r)Array.isArray(i)?a.push(...i):i!=null&&a.push(i);return p(a)}let o=r.map(a=>C(a));return p(o.join(""))}function Lr(e,t){let r=f(e.str,t);if(!r.ok)return r;let n=f(e.start,t);if(!n.ok)return n;let o=C(r.value),a=g(n.value);if(e.end){let i=f(e.end,t);return i.ok?p(o.substring(a,g(i.value))):i}return p(o.substring(a))}function Zr(e,t){let r=f(e,t);return r.ok?p(C(r.value).trim()):r}function Hr(e,t){let r=f(e,t);if(!r.ok)return r;let n=r.value;return Array.isArray(n)?p(n.length):typeof n=="string"?p(n.length):typeof n=="object"&&n!==null?p(Object.keys(n).length):p(0)}function Wr(e,t,r){let n=f(e,r);if(!n.ok)return n;let o=f(t,r);if(!o.ok)return o;let a=n.value,i=o.value;if(Array.isArray(a)){let l=g(i);return l<0||l>=a.length?p(null):p(a[l])}return typeof a=="object"&&a!==null&&typeof i=="string"?p(a[i]??null):p(null)}function Gr(e,t){let r=f(e,t);if(!r.ok)return r;let n=r.value;return!Array.isArray(n)||n.length===0?p(null):p(n[0])}function Kr(e,t){let r=f(e,t);if(!r.ok)return r;let n=r.value;return!Array.isArray(n)||n.length===0?p(null):p(n[n.length-1])}function Br(e,t){let r=f(e.array,t);if(!r.ok)return r;let n=f(e.start,t);if(!n.ok)return n;let o=r.value;if(!Array.isArray(o))return p([]);let a=g(n.value);if(e.end){let i=f(e.end,t);return i.ok?p(o.slice(a,g(i.value))):i}return p(o.slice(a))}function Jr(e,t,r){let n=f(e,r);if(!n.ok)return n;let o=f(t,r);if(!o.ok)return o;let a=n.value;return Array.isArray(a)?p(a.includes(o.value)):p(!1)}function Yr(e,t,r){let n=f(e,r);if(!n.ok)return n;let o=n.value;if(!Array.isArray(o))return p([]);let a=[];for(let i=0;i<o.length;i++){let l=re(r,o[i],i,o),c=f(t,l);if(!c.ok)return c;Q(c.value)&&a.push(o[i])}return p(a)}function Xr(e,t,r){let n=f(e,r);if(!n.ok)return n;let o=n.value;if(!Array.isArray(o))return p([]);let a=[];for(let i=0;i<o.length;i++){let l=re(r,o[i],i,o),c=f(t,l);if(!c.ok)return c;a.push(c.value)}return p(a)}function Qr(e,t,r){let n=f(e,r);if(!n.ok)return n;let o=n.value;if(!Array.isArray(o))return p(null);for(let a=0;a<o.length;a++){let i=re(r,o[a],a,o),l=f(t,i);if(!l.ok)return l;if(Q(l.value))return p(o[a])}return p(null)}function en(e,t,r){let n=f(e,r);if(!n.ok)return n;let o=n.value;if(!Array.isArray(o))return p(!0);for(let a=0;a<o.length;a++){let i=re(r,o[a],a,o),l=f(t,i);if(!l.ok)return l;if(!Q(l.value))return p(!1)}return p(!0)}function tn(e,t,r){let n=f(e,r);if(!n.ok)return n;let o=n.value;if(!Array.isArray(o))return p(!1);for(let a=0;a<o.length;a++){let i=re(r,o[a],a,o),l=f(t,i);if(!l.ok)return l;if(Q(l.value))return p(!0)}return p(!1)}function rn(e,t,r){let n=f(e,r);if(!n.ok)return n;let o=n.value,a=Array.isArray(o)?[...o]:[];for(let i of t){let l=f(i,r);if(!l.ok)return l;a.push(l.value)}return p(a)}function nn(e,t){let r={};for(let n of Object.keys(e).sort(pe)){let o=e[n],a=f(o,t);if(!a.ok)return a;r[n]=a.value}return p(r)}function on(e,t,r){let n=f(e,r);if(!n.ok)return n;let o=n.value;return typeof o!="object"||o===null||Array.isArray(o)?p(null):p(o[t]??null)}function an(e,t){let r=f(e,t);if(!r.ok)return r;let n=r.value;return typeof n!="object"||n===null?p([]):p(Object.keys(n).sort(pe))}function sn(e,t){let r=f(e,t);if(!r.ok)return r;let n=r.value;return typeof n!="object"||n===null?p([]):p(Object.keys(n).sort(pe).map(o=>n[o]))}function ln(e,t){let r=f(e,t);if(!r.ok)return r;let n=r.value;return typeof n!="object"||n===null?p([]):p(Object.keys(n).sort(pe).map(o=>[o,n[o]]))}function cn(e,t){let r={};for(let n of e){let o=f(n,t);if(!o.ok)return o;let a=o.value;typeof a=="object"&&a!==null&&!Array.isArray(a)&&Object.assign(r,a)}return p(r)}function pn(e,t){let r=f(e,t);if(!r.ok)return r;let n=r.value;return n===null?p("null"):Array.isArray(n)?p("array"):p(typeof n)}function un(e,t){let r=f(e,t);return r.ok?p(r.value===null||r.value===void 0):r}function fn(e,t){for(let r of e){let n=f(r,t);if(!n.ok||n.value!==null&&n.value!==void 0)return n}return p(null)}function dn(e,t){let r=f(e,t);return r.ok?p(Math.floor(g(r.value))):r}function mn(e,t){let r=f(e,t);return r.ok?p(Math.ceil(g(r.value))):r}function yn(e,t){let r=f(e,t);return r.ok?p(Math.round(g(r.value))):r}function xn(e,t){let r=f(e,t);if(!r.ok)return r;let n=g(r.value);return n<0?p(null):p(Math.sqrt(n))}function hn(e,t,r){let n=f(e,r);if(!n.ok)return n;let o=f(t,r);if(!o.ok)return o;let a=Math.pow(g(n.value),g(o.value));return Number.isFinite(a)?p(a):p(null)}function En(e,t){let r=f(e,t);if(!r.ok)return r;let n=r.value;if(!Array.isArray(n))return p(0);let o=0;for(let a of n)o+=g(a);return p(o)}function gn(e,t){let r=f(e,t);if(!r.ok)return r;let n=r.value;if(!Array.isArray(n)||n.length===0)return p(null);let o=g(n[0]);for(let a=1;a<n.length;a++){let i=g(n[a]);i<o&&(o=i)}return p(o)}function kn(e,t){let r=f(e,t);if(!r.ok)return r;let n=r.value;if(!Array.isArray(n)||n.length===0)return p(null);let o=g(n[0]);for(let a=1;a<n.length;a++){let i=g(n[a]);i>o&&(o=i)}return p(o)}function Sn(e,t){let r=f(e,t);return r.ok?p(C(r.value).toLowerCase()):r}function bn(e,t){let r=f(e,t);return r.ok?p(C(r.value).toUpperCase()):r}function vn(e,t){let r=f(e,t);return r.ok?p(C(r.value).length):r}function Nn(e,t,r){let n=f(e,r);if(!n.ok)return n;let o=f(t,r);return o.ok?p(C(n.value).startsWith(C(o.value))):o}function wn(e,t,r){let n=f(e,r);if(!n.ok)return n;let o=f(t,r);return o.ok?p(C(n.value).endsWith(C(o.value))):o}function Tn(e,t,r){let n=f(e,r);if(!n.ok)return n;let o=f(t,r);return o.ok?p(C(n.value).includes(C(o.value))):o}function Rn(e,t,r){let n=f(e,r);if(!n.ok)return n;let o=f(t,r);return o.ok?p(C(n.value).indexOf(C(o.value))):o}function An(e,t,r,n){let o=f(e,n);if(!o.ok)return o;let a=f(t,n);if(!a.ok)return a;let i=f(r,n);return i.ok?p(C(o.value).replace(C(a.value),C(i.value))):i}function jn(e,t,r){let n=f(e,r);if(!n.ok)return n;let o=f(t,r);if(!o.ok)return o;let a=C(n.value).split(C(o.value));return p(a.length===0?[""]:a)}function Cn(e,t){let r=f(e,t);if(!r.ok)return r;let n=r.value;return Array.isArray(n)?p([...n].reverse()):p([])}function zn(e,t){let r=f(e,t);if(!r.ok)return r;let n=r.value;if(!Array.isArray(n))return p([]);let o=[],a=[];for(let i of n)o.some(l=>l===i)||(o.push(i),a.push(i));return p(a)}function Pn(e,t){let r=f(e,t);if(!r.ok)return r;let n=r.value;if(!Array.isArray(n))return p([]);let o=[];for(let a of n)Array.isArray(a)?o.push(...a):o.push(a);return p(o)}function In(e,t,r){let n=f(e,r);if(!n.ok)return n;let o=f(t,r);if(!o.ok)return o;let a=n.value;if(typeof a!="object"||a===null||Array.isArray(a))return p(!1);let i=o.value;return typeof i!="string"?p(!1):p(Object.prototype.hasOwnProperty.call(a,i))}function Fn(e,t,r){let n=f(e,r);if(!n.ok)return n;let o=f(t,r);if(!o.ok)return o;let a=n.value;if(typeof a!="object"||a===null||Array.isArray(a))return p({});let i=o.value;if(!Array.isArray(i))return p({});let l={};for(let c of i)typeof c=="string"&&Object.prototype.hasOwnProperty.call(a,c)&&(l[c]=a[c]);return p(l)}function $n(e,t,r){let n=f(e,r);if(!n.ok)return n;let o=f(t,r);if(!o.ok)return o;let a=n.value;if(typeof a!="object"||a===null||Array.isArray(a))return p({});let i=o.value,l=new Set;if(Array.isArray(i))for(let d of i)typeof d=="string"&&l.add(d);let c={};for(let[d,m]of Object.entries(a))l.has(d)||(c[d]=m);return p(c)}function Dn(e,t){let r=f(e,t);if(!r.ok)return r;let n=r.value;if(!Array.isArray(n))return p({});let o={};for(let a of n)Array.isArray(a)&&a.length===2&&typeof a[0]=="string"&&(o[a[0]]=a[1]);return p(o)}function On(e,t){let r=f(e,t);return r.ok?p(C(r.value)):r}function Vn(e,t){let r=f(e,t);return r.ok?p(g(r.value)):r}function qn(e,t){let r=f(e,t);return r.ok?p(Q(r.value)):r}var Pe="core",Be="causalGuards";function jt(e){return{snapshot:e,status:"running",patches:[],namespaceDelta:[],requirements:[],error:null}}function Ct(e,t){let r=e.snapshot.state;switch(t.op){case"set":r=Se(r,t.path,t.value);break;case"unset":r=Re(r,t.path);break;case"merge":r=Ae(r,t.path,t.value);break}return{...e,snapshot:{...e.snapshot,state:r},patches:[...e.patches,t]}}function Un(e,t,r,n){return{...e,snapshot:{...e.snapshot,namespaces:{...e.snapshot.namespaces,[t]:r}},namespaceDelta:[...e.namespaceDelta,{namespace:t,patches:[n]}]}}function _n(e,t){return{...e,status:"pending",requirements:[...e.requirements,t]}}function z(e,t){return{...e,status:"error",error:t}}function le(e,t,r,n){let o=t.phase==="flow"?t:{...t,phase:"flow"};if(r.status!=="running")return{state:r,trace:E(o.trace,"flow",n,{},null,[])};switch(e.kind){case"seq":return Mn(e.steps,o,r,n);case"if":return Ln(e,o,r,n);case"patch":return Zn(e,o,r,n);case"causalGuard":return Gn(e,o,r,n);case"effect":return Jn(e,o,r,n);case"call":return Qn(e.flow,o,r,n);case"halt":return eo(e.reason,o,r,n);case"fail":return to(e,o,r,n);default:return{state:z(r,h("INTERNAL_ERROR",`Unknown flow kind: ${e.kind}`,o.currentAction??"",n,o.trace.timestamp)),trace:E(o.trace,"error",n,{},null,[])}}}async function Es(e,t,r,n){return le(e,t,r,n)}function Mn(e,t,r,n){let o=r,a=[];for(let i=0;i<e.length;i++){let l=`${n}.steps[${i}]`,c=ae(ge(t,o.snapshot),l),d=le(e[i],c,o,l);if(a.push(d.trace),o=d.state,o.status!=="running")break}return{state:o,trace:E(t.trace,"flow",n,{kind:"seq"},null,a)}}function Ln(e,t,r,n){let o=f(e.cond,t);if(!o.ok)return{state:z(r,o.error),trace:E(t.trace,"branch",n,{cond:!1},null,[])};let a=o.value,i=a!=null&&a!==!1,l=i?`${n}.then`:`${n}.else`,c=i?e.then:e.else;if(!c)return{state:r,trace:E(t.trace,"branch",n,{cond:i},null,[])};let d=ae(t,l),m=le(c,d,r,l);return{state:m.state,trace:E(t.trace,"branch",n,{cond:i},null,[m.trace])}}function Zn(e,t,r,n){let o=ge(t,r.snapshot),a=Hn(e.path,o,n);if(!a.ok)return{state:z(r,a.error),trace:E(t.trace,"error",n,{},null,[])};let i=a.path,l=ie(i),c={type:"object",required:!0,fields:t.schema.state.fields},d=Ce(t.schema.state,t.schema.types,i),m=d?null:ze(c,i);if(!d&&!m)return{state:z(r,h("PATH_NOT_FOUND",`Unknown patch path: ${l}`,t.currentAction??"",n,t.trace.timestamp)),trace:E(t.trace,"error",n,{},null,[])};if(e.op==="merge"&&!Wn(r.snapshot.state,i))return{state:z(r,h("TYPE_MISMATCH",`Invalid merge target at ${l}: target path must be an object or absent`,t.currentAction??"",n,t.trace.timestamp)),trace:E(t.trace,"error",n,{},null,[])};let S;if(e.value){let w=f(e.value,ae(o,`${n}.value`));if(!w.ok)return{state:z(r,w.error),trace:E(t.trace,"error",n,{},null,[])};S=w.value}if(e.op!=="unset"){let w=d?$(S,d,t.schema.types,{allowPartial:e.op==="merge",allowUndefined:!1}):K(S,m,{allowPartial:e.op==="merge",allowUndefined:!1});if(!w.ok)return{state:z(r,h("TYPE_MISMATCH",`Invalid patch value at ${l}: ${w.message??"type mismatch"}`,t.currentAction??"",n,t.trace.timestamp)),trace:E(t.trace,"error",n,{},null,[])}}let y=e.op==="unset"?{op:"unset",path:i}:e.op==="merge"?{op:"merge",path:i,value:S}:{op:"set",path:i,value:S};return{state:Ct(r,y),trace:E(t.trace,"patch",n,{op:e.op,path:l},S,[])}}function Hn(e,t,r){let n=[];for(let[o,a]of e.entries()){if(a.kind==="prop"||a.kind==="index"){let d=Ke([...n,a],t,r,o);if(!d.ok)return d;n.push(a);continue}let i=ae(t,`${r}.path[${o}]`),l=f(a.expr,i);if(!l.ok)return l;let c=l.value;if(typeof c=="string"&&c.length>0){let d={kind:"prop",name:c},m=Ke([...n,d],t,r,o);if(!m.ok)return m;n.push(d);continue}if(typeof c=="number"&&Number.isInteger(c)&&c>=0){let d={kind:"index",index:c},m=Ke([...n,d],t,r,o);if(!m.ok)return m;n.push(d);continue}return{ok:!1,error:h("INVALID_PATCH_PATH",`Invalid dynamic patch path segment at index ${o}: expected non-empty string or non-negative integer, got ${At(c)}`,t.currentAction??"",`${r}.path[${o}]`,t.trace.timestamp,{segmentIndex:o,resolvedType:At(c)})}}return{ok:!0,path:n}}function Ke(e,t,r,n){return ke(e)?{ok:!0}:{ok:!1,error:h("INVALID_PATCH_PATH",`Unsafe patch path segment at index ${n}: ${ie(e)}`,t.currentAction??"",`${r}.path[${n}]`,t.trace.timestamp,{segmentIndex:n,path:ie(e)})}}function At(e){return e===null?"null":Array.isArray(e)?"array":typeof e}function Wn(e,t){let r=e;for(let n of t){if(r===void 0)return!0;if(n.kind==="prop"){if(!Ie(r))return!1;r=r[n.name];continue}if(!Array.isArray(r))return!1;r=r[n.index]}return r===void 0?!0:Ie(r)}function Gn(e,t,r,n){let o=t.intentId;if(!o)return{state:z(r,h("INVALID_INPUT","causalGuard requires a current intent id",t.currentAction??"",n,t.trace.timestamp)),trace:E(t.trace,"error",n,{},null,[])};let a=Kn(r.snapshot,t,n);if(!a.ok)return{state:z(r,a.error),trace:E(t.trace,"error",n,{},null,[])};let i=Bn(a.value);if(i[e.guardId]===o)return{state:r,trace:E(t.trace,"flow",n,{kind:"causalGuard",guardId:e.guardId,skipped:!0},null,[])};let l={...a.value,[Be]:{...i,[e.guardId]:o}},c={op:"merge",path:[{kind:"prop",name:Be}],value:{[e.guardId]:o}},d=Un(r,Pe,l,c),m=E(t.trace,"namespaceDelta",`${n}.namespaceDelta`,{namespace:Pe,patchCount:1},{namespace:Pe,patches:[c]},[]),S=`${n}.body`,y=ae(ge(t,d.snapshot),S),b=le(e.body,y,d,S);return{state:b.state,trace:E(t.trace,"flow",n,{kind:"causalGuard",guardId:e.guardId,skipped:!1},null,[m,b.trace])}}function Kn(e,t,r){let n=e.namespaces[Pe];return n===void 0?{ok:!0,value:{}}:Ie(n)?{ok:!0,value:n}:{ok:!1,error:h("TYPE_MISMATCH","Invalid core namespace root: expected object",t.currentAction??"",r,t.trace.timestamp)}}function Bn(e){let t=e[Be];return Ie(t)?Object.fromEntries(Object.entries(t).filter(r=>typeof r[1]=="string")):{}}function Jn(e,t,r,n){if(e.type==="array.map"||e.type==="array.filter")return Yn(e,t,r,n);let o={};for(let[c,d]of Object.entries(e.params)){let m=f(d,t);if(!m.ok)return{state:z(r,m.error),trace:E(t.trace,"error",n,{},null,[])};o[c]=m.value}let i={id:mt(t.snapshot.meta.schemaHash,t.intentId??"",t.currentAction??"",n),type:e.type,params:o,actionId:t.currentAction??"",flowPosition:{nodePath:n,snapshotVersion:t.snapshot.meta.version},createdAt:t.trace.timestamp};return{state:_n(r,i),trace:E(t.trace,"effect",n,{type:e.type},o,[])}}function Yn(e,t,r,n){let{params:o}=e,a=ge(t,r.snapshot),i=o.source;if(!i)return{state:z(r,h("INVALID_INPUT",`${e.type} requires 'source' parameter`,t.currentAction??"",n,t.trace.timestamp)),trace:E(a.trace,"error",n,{},null,[])};let l=f(i,a);if(!l.ok)return{state:z(r,l.error),trace:E(a.trace,"error",n,{},null,[])};let c=l.value;if(!Array.isArray(c))return{state:z(r,h("TYPE_MISMATCH",`${e.type} source must be an array`,a.currentAction??"",n,a.trace.timestamp)),trace:E(a.trace,"error",n,{},null,[])};let d=o.into;if(!d)return{state:z(r,h("INVALID_INPUT",`${e.type} requires 'into' parameter`,a.currentAction??"",n,a.trace.timestamp)),trace:E(a.trace,"error",n,{},null,[])};let m=f(d,a);if(!m.ok)return{state:z(r,m.error),trace:E(a.trace,"error",n,{},null,[])};let S=Xn(m.value);if(!S)return{state:z(r,h("INVALID_INPUT",`${e.type} into must resolve to PatchPath segments or semantic string path`,a.currentAction??"",n,a.trace.timestamp)),trace:E(a.trace,"error",n,{},null,[])};let y=e.type==="array.map"?o.select:o.where;if(!y)return{state:z(r,h("INVALID_INPUT",`${e.type} requires '${e.type==="array.map"?"select":"where"}' parameter`,a.currentAction??"",n,a.trace.timestamp)),trace:E(a.trace,"error",n,{},null,[])};let b=[];for(let R=0;R<c.length;R++){let J=c[R],D=re(a,J,R,c),q=f(y,D);if(!q.ok)return{state:z(r,q.error),trace:E(a.trace,"error",n,{},null,[])};if(e.type==="array.map")b.push(q.value);else{let _=q.value;_!=null&&_!==!1&&b.push(J)}}return{state:Ct(r,{op:"set",path:S,value:b}),trace:E(a.trace,"effect",n,{type:e.type,target:S},{count:b.length},[])}}function Xn(e){if(typeof e=="string")return kt(e);if(!Array.isArray(e))return null;let t=[];for(let r of e){if(!r||typeof r!="object")return null;let n=r.kind;if(n==="prop"){let o=r.name;if(typeof o!="string"||o.length===0)return null;t.push({kind:"prop",name:o});continue}if(n==="index"){let o=r.index;if(!Number.isInteger(o)||o<0)return null;t.push({kind:"index",index:o});continue}return null}return t.length>0?t:null}function Ie(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function Qn(e,t,r,n){let o=t.schema.actions[e];if(!o)return{state:z(r,h("UNKNOWN_FLOW",`Unknown flow: ${e}`,t.currentAction??"",n,t.trace.timestamp)),trace:E(t.trace,"error",n,{},null,[])};let a=`${n}.call(${e})`,i=ae(t,a),l=le(o.flow,i,r,a);return{state:l.state,trace:E(t.trace,"call",n,{flow:e},null,[l.trace])}}function eo(e,t,r,n){return{state:{...r,status:"halted"},trace:E(t.trace,"halt",n,{reason:e},null,[])}}function to(e,t,r,n){let o=e.code;if(e.message){let i=f(e.message,t);i.ok&&(o=String(i.value))}let a=h("VALIDATION_ERROR",o,t.currentAction??"",n,t.trace.timestamp,{code:e.code});return{state:z(r,a),trace:E(t.trace,"error",n,{code:e.code},o,[])}}function Fe(e){let t=Object.keys(e.fields),r=new Map;for(let[n,o]of Object.entries(e.fields)){let a=o.deps.filter(i=>i in e.fields);r.set(n,a)}return{nodes:t,edges:r}}function $e(e){let t=new Map,r=new Map;for(let a of e.nodes)t.set(a,0),r.set(a,[]);for(let[a,i]of e.edges)for(let l of i)r.has(l)&&r.get(l).push(a),t.set(a,(t.get(a)??0)+1);let n=[];for(let[a,i]of t)i===0&&n.push(a);let o=[];for(;n.length>0;){let a=n.shift();o.push(a);for(let i of r.get(a)??[]){let l=(t.get(i)??1)-1;t.set(i,l),l===0&&n.push(i)}}if(o.length!==e.nodes.length){let a=e.nodes.filter(i=>!o.includes(i));return F({code:"V-002",message:`Cyclic dependency detected in computed fields: ${a.join(", ")}`,path:a[0]})}return p(o)}function zt(e){let t=new Set,r=new Set,n=[];function o(a,i){t.add(a),r.add(a);let l=e.edges.get(a)??[];for(let c of l)if(t.has(c)){if(r.has(c)){let d=i.indexOf(c);d!==-1?n.push([...i.slice(d),c]):n.push([...i,c])}}else if(o(c,[...i,c]))return!0;return r.delete(a),!1}for(let a of e.nodes)t.has(a)||o(a,[a]);return n.length>0?n:null}function Ss(e,t){let r=new Set,n=[...e.edges.get(t)??[]];for(;n.length>0;){let o=n.shift();r.has(o)||(r.add(o),n.push(...e.edges.get(o)??[]))}return r}function de(e,t){let r=oe(t.meta.timestamp),n=Fe(e.computed),o=$e(n);if(!o.ok)return F(h("CYCLIC_DEPENDENCY",o.error.message,"",o.error.path??"",r.timestamp));let a={},i={...t,computed:a};for(let l of o.value){let c=e.computed.fields[l];if(!c)continue;let d=Z(i,e,null,l,void 0,r,{phase:"computed"}),m=f(c.expr,d);if(W(m))return m;a[l]=m.value,i={...i,computed:{...a}}}return p(a)}function js(e,t,r){let n=oe(t.meta.timestamp),o=e.computed.fields[r];if(!o)return F(h("PATH_NOT_FOUND",`Computed field not found: ${r}`,"",r,n.timestamp));let a=Z(t,e,null,r,void 0,n,{phase:"computed"});return f(o.expr,a)}import{z as P}from"zod";var Je=P.lazy(()=>P.union([P.null(),P.string(),P.number().finite(),P.boolean(),P.array(Je),P.record(P.string(),Je)])),Pt=P.object({runtime:P.object({time:P.object({timestamp:P.number().finite()}),random:P.object({seed:P.string()})}),external:P.record(P.string(),Je)});function Ye(e,t){let r=de(e,t);return W(r)?{kind:"error",code:"INTERNAL_ERROR",message:`Error evaluating computed values for legality query: ${r.error.message}`}:{kind:"ok",snapshot:{...t,computed:r.value}}}function Xe(e,t,r,n){let o=e.actions[r];if(!o)return{kind:"error",code:"UNKNOWN_ACTION",message:`Unknown action: ${r}`};if(!o.available)return{kind:"ok",available:!0};let a=Z(t,e,null,`actions.${r}.available`,void 0,n,{phase:"availability"}),i=f(o.available,a);return W(i)?{kind:"error",code:"INTERNAL_ERROR",message:`Error evaluating availability: ${i.error.message}`}:typeof i.value!="boolean"?{kind:"error",code:"TYPE_MISMATCH",message:`Availability condition must return boolean, got ${typeof i.value}`}:{kind:"ok",available:i.value}}function Qe(e,t,r,n=t.meta.timestamp){let o=Ye(e,t);return o.kind==="error"?o:Xe(e,o.snapshot,r,n)}function It(e,t,r){let n=Qe(e,t,r);if(n.kind==="error")throw new Error(n.message);return n.available}function ro(e,t,r,n=t.meta.timestamp){let o=e.actions[r.type];if(!o)return{kind:"error",code:"UNKNOWN_ACTION",message:`Unknown action: ${r.type}`};let a=Ye(e,t);if(a.kind==="error")return a;let i=Xe(e,a.snapshot,r.type,n);if(i.kind==="error")return i;if(!i.available)return{kind:"ok",dispatchable:!1};if(!o.dispatchable)return{kind:"ok",dispatchable:!0};let l=Z({...a.snapshot,input:r.input},e,r.type,`actions.${r.type}.dispatchable`,r.intentId,n,{phase:"dispatchability"}),c=f(o.dispatchable,l);return W(c)?{kind:"error",code:"INTERNAL_ERROR",message:`Error evaluating dispatchability: ${c.error.message}`}:typeof c.value!="boolean"?{kind:"error",code:"TYPE_MISMATCH",message:`Dispatchability condition must return boolean, got ${typeof c.value}`}:{kind:"ok",dispatchable:c.value}}function Ft(e,t,r){let n=ro(e,t,r);if(n.kind==="error")throw new Error(n.message);return n.dispatchable}function $t(e,t){let r=Ye(e,t);if(r.kind==="error")throw new Error(r.message);return Object.keys(e.actions).filter(n=>{let o=Xe(e,r.snapshot,n,t.meta.timestamp);if(o.kind==="error")throw new Error(o.message);return o.available})}import{z as A}from"zod";import{z as T}from"zod";var no=T.discriminatedUnion("kind",[T.object({kind:T.literal("prop"),name:T.string().min(1)}),T.object({kind:T.literal("index"),index:T.number().int().nonnegative()})]),et=T.array(no).min(1),tt=T.discriminatedUnion("op",[T.object({op:T.literal("set"),path:et,value:T.unknown()}),T.object({op:T.literal("unset"),path:et}),T.object({op:T.literal("merge"),path:et,value:T.record(T.string(),T.unknown())})]),qs=T.object({type:T.string(),input:T.unknown().optional(),intentId:T.string()});function Us(e){return{kind:"prop",name:e}}function _s(e){return{kind:"index",index:e}}function Ms(e,t){return{op:"set",path:e,value:t}}function Ls(e){return{op:"unset",path:e}}function Zs(e,t){return{op:"merge",path:e,value:t}}import{z as k}from"zod";var rt=k.object({code:k.string(),message:k.string(),source:k.object({actionId:k.string(),nodePath:k.string()}),timestamp:k.number(),context:k.record(k.string(),k.unknown()).optional()}),oo=k.object({nodePath:k.string(),snapshotVersion:k.number()}),nt=k.object({id:k.string(),type:k.string(),params:k.record(k.string(),k.unknown()),actionId:k.string(),flowPosition:oo,createdAt:k.number()}),ot=k.object({status:k.enum(["idle","computing","pending","error"]),lastError:rt.nullable(),pendingRequirements:k.array(nt),currentAction:k.string().nullable()}),ao=k.object({version:k.number(),timestamp:k.number(),randomSeed:k.string(),schemaHash:k.string()}),io=k.record(k.string(),k.unknown()),Ks=k.object({state:k.unknown(),computed:k.record(Y,k.unknown()),system:ot,input:k.unknown(),meta:ao,namespaces:io});function Dt(){return{status:"idle",lastError:null,pendingRequirements:[],currentAction:null}}function Ot(){return{}}var so=A.enum(["complete","pending","halted","error"]),lo=A.object({status:ot.shape.status.optional(),currentAction:A.string().nullable().optional(),lastError:rt.nullable().optional(),addRequirements:A.array(nt).optional(),removeRequirementIds:A.array(A.string()).optional()}),co=A.object({namespace:A.string().min(1),patches:A.array(tt)}),tl=A.object({patches:A.array(tt),namespaceDelta:A.array(co).optional(),systemDelta:lo,trace:xt,status:so}),po=A.object({code:A.string(),message:A.string(),path:A.string().optional()}),rl=A.object({valid:A.boolean(),errors:A.array(po)}),nl=A.object({value:A.unknown(),trace:Ee,deps:A.array(Y)});function ve(){return{valid:!0,errors:[]}}function me(e){return{valid:!1,errors:e}}function De(e,t){let r=[],n=e.context;if(!n)return Object.keys(t).length===0?ve():me(Object.keys(t).map(i=>({code:"INVALID_CONTEXT",message:`Schema does not declare user context field "${i}"`,path:`context.${i}`})));let o=n.fields,a=new Set(Object.keys(o));for(let i of Object.keys(t))a.has(i)||r.push({code:"INVALID_CONTEXT",message:`Unknown context field: ${i}`,path:`context.${i}`});for(let[i,l]of Object.entries(o)){if(!(i in t)){l.required&&r.push({code:"INVALID_CONTEXT",message:`Missing required context field: ${i}`,path:`context.${i}`});continue}let c=n.fieldTypes?.[i],d=c?$(t[i],c,e.types):K(t[i],l);d.ok||r.push({code:"INVALID_CONTEXT",message:d.message??`Invalid context field: ${i}`,path:`context.${i}`})}return r.length===0?ve():me(r)}function Oe(e,t){let r=at(t,"status"),n=at(t,"currentAction"),o=at(t,"lastError"),a=new Set(t.removeRequirementIds??[]),i=t.addRequirements??[],l=uo(e.system.pendingRequirements,a,i),c={...e.system,status:r?t.status:e.system.status,currentAction:n?t.currentAction??null:e.system.currentAction,lastError:o?t.lastError??null:e.system.lastError,pendingRequirements:l};return fo(e.system,c)?{...e,system:c,meta:{...e.meta,version:e.meta.version+1}}:e}function uo(e,t,r){let n=new Set(r.map(a=>a.id));return[...e.filter(a=>!t.has(a.id)&&!n.has(a.id)),...r]}function fo(e,t){return e.status!==t.status||e.currentAction!==t.currentAction||!yo(e.lastError,t.lastError)||!mo(e.pendingRequirements,t.pendingRequirements)}function mo(e,t){if(e.length!==t.length)return!1;for(let r=0;r<e.length;r++)if(!xo(e[r],t[r]))return!1;return!0}function yo(e,t){if(e===t)return!0;if(e===null||t===null||e.code!==t.code||e.message!==t.message||e.timestamp!==t.timestamp||e.source.actionId!==t.source.actionId||e.source.nodePath!==t.source.nodePath)return!1;let r=e.context??{},n=t.context??{};return JSON.stringify(r)===JSON.stringify(n)}function xo(e,t){return e.id===t.id&&e.type===t.type&&e.actionId===t.actionId&&e.createdAt===t.createdAt&&e.flowPosition.nodePath===t.flowPosition.nodePath&&e.flowPosition.snapshotVersion===t.flowPosition.snapshotVersion&&JSON.stringify(e.params)===JSON.stringify(t.params)}function at(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function it(e,t,r,n){let o=ho(n);if(!o.ok)return ce(t,r,"INVALID_INPUT",o.message,t.meta.timestamp);let a=o.value,i=a.runtime.time.timestamp,l=De(e,a.external);if(!l.valid)return ce(t,r,"INVALID_CONTEXT",`Invalid context: ${l.errors.map(v=>v.path?`${v.path}: ${v.message}`:v.message).join("; ")}`,i);let c=t,d=de(e,t);if(fe(d))c={...t,computed:d.value};else return ce(t,r,d.error.code,d.error.message,i);let m=e.actions[r.type];if(!m)return ce(c,r,"UNKNOWN_ACTION",`Unknown action: ${r.type}`,i);let S=qt(e,r);if(S)return ce(c,r,"INVALID_INPUT",S,i);let y=c.system.currentAction===r.type;if(m.available&&!y){let v=Qe(e,c,r.type,i);if(v.kind==="error")return ce(c,r,v.code,v.message,i);if(!v.available)return ce(c,r,"ACTION_UNAVAILABLE",`Action "${r.type}" is not available`,i)}let b={...c,input:r.input,system:{...c.system,status:"computing",currentAction:r.type}},w=Z(b,e,r.type,`actions.${r.type}.flow`,r.intentId,i,{context:a,phase:"flow"}),U=jt(b),R=le(m.flow,w,U,`actions.${r.type}.flow`),J=go(R.state.status),D=bo(c,r,J,R.state.error,R.state.requirements),q=[...R.state.patches],_=[...R.state.namespaceDelta],he={root:R.trace,nodes:So(R.trace),intent:{type:r.type,input:r.input},baseVersion:c.meta.version,resultVersion:Ut(c,q,_,D),duration:0,terminatedBy:ko(R.state.status)};return{patches:q,namespaceDelta:_,systemDelta:D,trace:he,status:J}}async function Vt(e,t,r,n){return it(e,t,r,n)}function ho(e){try{let t=Pt.safeParse(e);return t.success?{ok:!0,value:t.data}:{ok:!1,message:`Invalid context: ${t.error.issues.map(r=>r.message).join("; ")}`}}catch(t){return{ok:!1,message:`Invalid context: ${Eo(t)}`}}}function Eo(e){return e instanceof Error&&e.message.length>0?e.message:"context validation failed"}function qt(e,t){if(!t.intentId||t.intentId==="")return"Intent must have a non-empty intentId";let r=e.actions[t.type];return r?!r.input&&!r.inputType?t.input===void 0?null:`Action "${t.type}" does not accept input`:vo(e,r.inputType,r.input,t.input):null}function go(e){switch(e){case"running":case"complete":return"complete";case"pending":return"pending";case"halted":return"halted";case"error":return"error"}}function ko(e){switch(e){case"running":case"complete":return"complete";case"pending":return"effect";case"halted":return"halt";case"error":return"error"}}function So(e){let t={};function r(n){t[n.id]=n;for(let o of n.children)r(o)}return r(e),t}function ce(e,t,r,n,o){let a=h(r,n,t.type,"",o),i={status:"error",currentAction:null,lastError:a,addRequirements:[],removeRequirementIds:[]},l={root:{id:`trace-error-${t.intentId}`,kind:"error",sourcePath:"",inputs:{},output:a,children:[],timestamp:o},nodes:{},intent:{type:t.type,input:t.input},baseVersion:e.meta.version,resultVersion:Ut(e,[],[],i),duration:0,terminatedBy:"error"};return{patches:[],namespaceDelta:[],systemDelta:i,trace:l,status:"error"}}function bo(e,t,r,n,o){let a=r==="error";return{status:r==="pending"?"pending":r==="error"?"error":"idle",currentAction:r==="pending"?t.type:null,lastError:n,addRequirements:[...o],removeRequirementIds:e.system.pendingRequirements.map(l=>l.id)}}function Ut(e,t,r,n){let o=e.meta.version;return o+=1,r.length>0&&(o+=1),Oe(e,n)!==e&&(o+=1),o}function vo(e,t,r,n){if(t){let o=$(n,t,e.types);return o.ok?null:o.message??"Invalid input"}if(!r)return null;if(r.type==="object"){if(typeof n!="object"||n===null||Array.isArray(n))return`Expected object input, got ${typeof n}`;let o=n,a=r.fields??{};for(let[i,l]of Object.entries(a))if(l.required&&!(i in o))return`Missing required field: ${i}`;for(let i of Object.keys(o))if(!(i in a))return`Unknown field: ${i}`;for(let[i,l]of Object.entries(a))if(i in o){let c=No(l,o[i],i);if(c)return c}}return null}function No(e,t,r){if(t==null)return e.required?`Missing required field: ${r}`:null;switch(e.type){case"string":if(typeof t!="string")return`Expected string for ${r}, got ${typeof t}`;break;case"number":if(typeof t!="number")return`Expected number for ${r}, got ${typeof t}`;break;case"boolean":if(typeof t!="boolean")return`Expected boolean for ${r}, got ${typeof t}`;break;case"array":if(!Array.isArray(t))return`Expected array for ${r}, got ${typeof t}`;break;case"object":if(typeof t!="object"||Array.isArray(t))return`Expected object for ${r}, got ${typeof t}`;break}return null}function Mt(e,t,r){let n=t.state,o=t.system,a=t.input,i=[],l=t.meta.timestamp,c={type:"object",required:!0,fields:e.state.fields};for(let y of r){let b=ie(y.path);if(!ke(y.path)){i.push(h("PATH_NOT_FOUND",`Unsafe patch path: ${b}`,t.system.currentAction??"",b,l,{patch:y}));continue}let w=Ce(e.state,e.types,y.path),U=w?null:ze(c,y.path);if(!w&&!U){i.push(h("PATH_NOT_FOUND",`Unknown patch path: ${b}`,t.system.currentAction??"",b,l,{patch:y}));continue}if(y.op==="merge"&&!Lt(n,y.path)){i.push(h("TYPE_MISMATCH",`Invalid merge target at ${b}: target path must be an object or absent`,t.system.currentAction??"",b,l,{patch:y}));continue}if(y.op!=="unset"){let R=w?$(y.value,w,e.types,{allowPartial:y.op==="merge",allowUndefined:!1}):K(y.value,U,{allowPartial:y.op==="merge",allowUndefined:!1});if(!R.ok){i.push(h("TYPE_MISMATCH",`Invalid patch value at ${b}: ${R.message??"type mismatch"}`,t.system.currentAction??"",b,l,{patch:y}));continue}}n=Zt(n,y)}if(i.length>0){let y=i[i.length-1];o={...o,status:"error",lastError:y}}let d={...t,state:n,system:o,input:a},m=de(e,d),S=t.computed;if(fe(m))S=m.value;else if(W(m)){let y=m.error;S={},o={...o,status:"error",lastError:y}}return{state:n,computed:S,system:o,input:a,meta:{...t.meta,version:t.meta.version+1},namespaces:t.namespaces}}function st(e){return e!==null&&!Array.isArray(e)&&typeof e=="object"}function Lt(e,t){let r=e;for(let n of t){if(r===void 0)return!0;if(n.kind==="prop"){if(!st(r))return!1;r=r[n.name];continue}if(!Array.isArray(r))return!1;r=r[n.index]}return r===void 0?!0:st(r)}function Zt(e,t){switch(t.op){case"set":return Se(e,t.path,t.value);case"unset":return Re(e,t.path);case"merge":return Ae(e,t.path,t.value)}}function Ht(e,t){if(t.length===0)return e;let r=_t(e.namespaces),n=e.system,o=[],a=e.meta.timestamp;for(let i of t){if(i.namespace.length===0){o.push(h("PATH_NOT_FOUND","Invalid namespace: namespace must be non-empty",e.system.currentAction??"","namespaces",a,{delta:i}));continue}let l=Object.prototype.hasOwnProperty.call(r,i.namespace)?r[i.namespace]:void 0;if(l!==void 0&&!st(l)){o.push(h("TYPE_MISMATCH",`Invalid namespace root: ${i.namespace} must be an object`,e.system.currentAction??"",`namespaces.${i.namespace}`,a,{delta:i}));continue}let c=l??{},d=!1;for(let m of i.patches){let S=`${i.namespace}.${ie(m.path)}`;if(!ke(m.path)){o.push(h("PATH_NOT_FOUND",`Unsafe namespace patch path: ${S}`,e.system.currentAction??"",S,a,{delta:i,patch:m})),d=!0;break}if(m.op==="merge"&&!Lt(c,m.path)){o.push(h("TYPE_MISMATCH",`Invalid namespace merge target at ${S}: target path must be an object or absent`,e.system.currentAction??"",S,a,{delta:i,patch:m})),d=!0;break}c=Zt(c,m)}d||(r=_t(r),r[i.namespace]=c)}if(o.length>0){let i=o[o.length-1];n={...n,status:"error",lastError:i}}return{...e,system:n,namespaces:r,meta:{...e.meta,version:e.meta.version+1}}}function _t(e){return Object.assign(Object.create(null),e)}import{z as V}from"zod";import{z as I}from"zod";import{z as N}from"zod";var B=N.lazy(()=>N.discriminatedUnion("kind",[N.object({kind:N.literal("primitive"),type:N.string()}),N.object({kind:N.literal("array"),element:B}),N.object({kind:N.literal("record"),key:B,value:B}),N.object({kind:N.literal("object"),fields:N.record(N.string(),N.object({type:B,optional:N.boolean()}))}),N.object({kind:N.literal("union"),types:N.array(B).min(1)}),N.object({kind:N.literal("literal"),value:N.union([N.string(),N.number(),N.boolean(),N.null()])}),N.object({kind:N.literal("ref"),name:N.string()})])),Wt=N.object({name:N.string(),definition:B});var wo=I.enum(["string","number","boolean","null","object","array"]),To=I.object({enum:I.array(I.unknown()).readonly()}),Ro=I.union([wo,To]),Ne=I.lazy(()=>I.object({type:Ro,required:I.boolean(),default:I.unknown().optional(),description:I.string().optional(),fields:I.record(I.string(),Ne).optional(),items:Ne.optional()})),lt=I.object({fields:I.record(I.string(),Ne),fieldTypes:I.record(I.string(),B).optional()});import{z as we}from"zod";import{z as s}from"zod";var Ao=s.object({kind:s.literal("lit"),value:s.unknown()}),jo=s.object({kind:s.literal("get"),path:Y}),Co=s.object({kind:s.literal("eq"),left:s.lazy(()=>u),right:s.lazy(()=>u)}),zo=s.object({kind:s.literal("neq"),left:s.lazy(()=>u),right:s.lazy(()=>u)}),Po=s.object({kind:s.literal("gt"),left:s.lazy(()=>u),right:s.lazy(()=>u)}),Io=s.object({kind:s.literal("gte"),left:s.lazy(()=>u),right:s.lazy(()=>u)}),Fo=s.object({kind:s.literal("lt"),left:s.lazy(()=>u),right:s.lazy(()=>u)}),$o=s.object({kind:s.literal("lte"),left:s.lazy(()=>u),right:s.lazy(()=>u)}),Do=s.object({kind:s.literal("and"),args:s.array(s.lazy(()=>u))}),Oo=s.object({kind:s.literal("or"),args:s.array(s.lazy(()=>u))}),Vo=s.object({kind:s.literal("not"),arg:s.lazy(()=>u)}),qo=s.object({kind:s.literal("if"),cond:s.lazy(()=>u),then:s.lazy(()=>u),else:s.lazy(()=>u)}),Uo=s.object({kind:s.literal("add"),left:s.lazy(()=>u),right:s.lazy(()=>u)}),_o=s.object({kind:s.literal("sub"),left:s.lazy(()=>u),right:s.lazy(()=>u)}),Mo=s.object({kind:s.literal("mul"),left:s.lazy(()=>u),right:s.lazy(()=>u)}),Lo=s.object({kind:s.literal("div"),left:s.lazy(()=>u),right:s.lazy(()=>u)}),Zo=s.object({kind:s.literal("mod"),left:s.lazy(()=>u),right:s.lazy(()=>u)}),Ho=s.object({kind:s.literal("min"),args:s.array(s.lazy(()=>u))}),Wo=s.object({kind:s.literal("max"),args:s.array(s.lazy(()=>u))}),Go=s.object({kind:s.literal("abs"),arg:s.lazy(()=>u)}),Ko=s.object({kind:s.literal("neg"),arg:s.lazy(()=>u)}),Bo=s.object({kind:s.literal("floor"),arg:s.lazy(()=>u)}),Jo=s.object({kind:s.literal("ceil"),arg:s.lazy(()=>u)}),Yo=s.object({kind:s.literal("round"),arg:s.lazy(()=>u)}),Xo=s.object({kind:s.literal("sqrt"),arg:s.lazy(()=>u)}),Qo=s.object({kind:s.literal("pow"),base:s.lazy(()=>u),exponent:s.lazy(()=>u)}),ea=s.object({kind:s.literal("sumArray"),array:s.lazy(()=>u)}),ta=s.object({kind:s.literal("minArray"),array:s.lazy(()=>u)}),ra=s.object({kind:s.literal("maxArray"),array:s.lazy(()=>u)}),na=s.object({kind:s.literal("concat"),args:s.array(s.lazy(()=>u))}),oa=s.object({kind:s.literal("substring"),str:s.lazy(()=>u),start:s.lazy(()=>u),end:s.lazy(()=>u).optional()}),aa=s.object({kind:s.literal("trim"),str:s.lazy(()=>u)}),ia=s.object({kind:s.literal("toLowerCase"),str:s.lazy(()=>u)}),sa=s.object({kind:s.literal("toUpperCase"),str:s.lazy(()=>u)}),la=s.object({kind:s.literal("strLen"),str:s.lazy(()=>u)}),ca=s.object({kind:s.literal("startsWith"),str:s.lazy(()=>u),prefix:s.lazy(()=>u)}),pa=s.object({kind:s.literal("endsWith"),str:s.lazy(()=>u),suffix:s.lazy(()=>u)}),ua=s.object({kind:s.literal("strIncludes"),str:s.lazy(()=>u),search:s.lazy(()=>u)}),fa=s.object({kind:s.literal("indexOf"),str:s.lazy(()=>u),search:s.lazy(()=>u)}),da=s.object({kind:s.literal("replace"),str:s.lazy(()=>u),search:s.lazy(()=>u),replacement:s.lazy(()=>u)}),ma=s.object({kind:s.literal("split"),str:s.lazy(()=>u),delimiter:s.lazy(()=>u)}),ya=s.object({kind:s.literal("len"),arg:s.lazy(()=>u)}),xa=s.object({kind:s.literal("at"),array:s.lazy(()=>u),index:s.lazy(()=>u)}),ha=s.object({kind:s.literal("first"),array:s.lazy(()=>u)}),Ea=s.object({kind:s.literal("last"),array:s.lazy(()=>u)}),ga=s.object({kind:s.literal("slice"),array:s.lazy(()=>u),start:s.lazy(()=>u),end:s.lazy(()=>u).optional()}),ka=s.object({kind:s.literal("includes"),array:s.lazy(()=>u),item:s.lazy(()=>u)}),Sa=s.object({kind:s.literal("filter"),array:s.lazy(()=>u),predicate:s.lazy(()=>u)}),ba=s.object({kind:s.literal("map"),array:s.lazy(()=>u),mapper:s.lazy(()=>u)}),va=s.object({kind:s.literal("find"),array:s.lazy(()=>u),predicate:s.lazy(()=>u)}),Na=s.object({kind:s.literal("every"),array:s.lazy(()=>u),predicate:s.lazy(()=>u)}),wa=s.object({kind:s.literal("some"),array:s.lazy(()=>u),predicate:s.lazy(()=>u)}),Ta=s.object({kind:s.literal("append"),array:s.lazy(()=>u),items:s.array(s.lazy(()=>u))}),Ra=s.object({kind:s.literal("reverse"),array:s.lazy(()=>u)}),Aa=s.object({kind:s.literal("unique"),array:s.lazy(()=>u)}),ja=s.object({kind:s.literal("flat"),array:s.lazy(()=>u)}),Ca=s.object({kind:s.literal("object"),fields:s.record(s.string(),s.lazy(()=>u))}),za=s.object({kind:s.literal("field"),object:s.lazy(()=>u),property:s.string()}),Pa=s.object({kind:s.literal("keys"),obj:s.lazy(()=>u)}),Ia=s.object({kind:s.literal("values"),obj:s.lazy(()=>u)}),Fa=s.object({kind:s.literal("entries"),obj:s.lazy(()=>u)}),$a=s.object({kind:s.literal("merge"),objects:s.array(s.lazy(()=>u))}),Da=s.object({kind:s.literal("hasKey"),obj:s.lazy(()=>u),key:s.lazy(()=>u)}),Oa=s.object({kind:s.literal("pick"),obj:s.lazy(()=>u),keys:s.lazy(()=>u)}),Va=s.object({kind:s.literal("omit"),obj:s.lazy(()=>u),keys:s.lazy(()=>u)}),qa=s.object({kind:s.literal("fromEntries"),entries:s.lazy(()=>u)}),Ua=s.object({kind:s.literal("typeof"),arg:s.lazy(()=>u)}),_a=s.object({kind:s.literal("isNull"),arg:s.lazy(()=>u)}),Ma=s.object({kind:s.literal("coalesce"),args:s.array(s.lazy(()=>u))}),La=s.object({kind:s.literal("toString"),arg:s.lazy(()=>u)}),Za=s.object({kind:s.literal("toNumber"),arg:s.lazy(()=>u)}),Ha=s.object({kind:s.literal("toBoolean"),arg:s.lazy(()=>u)}),u=s.union([Ao,jo,Co,zo,Po,Io,Fo,$o,Do,Oo,Vo,qo,Uo,_o,Mo,Lo,Zo,Ho,Wo,Go,Ko,Bo,Jo,Yo,Xo,Qo,ea,ta,ra,na,oa,aa,ia,sa,la,ca,pa,ua,fa,da,ma,ya,xa,ha,Ea,ga,ka,Sa,ba,va,Na,wa,Ta,Ra,Aa,ja,Ca,za,Pa,Ia,Fa,$a,Da,Oa,Va,qa,Ua,_a,Ma,La,Za,Ha]),$l=s.enum(["lit","get","eq","neq","gt","gte","lt","lte","and","or","not","if","add","sub","mul","div","mod","min","max","abs","neg","floor","ceil","round","sqrt","pow","sumArray","minArray","maxArray","concat","substring","trim","toLowerCase","toUpperCase","strLen","startsWith","endsWith","strIncludes","indexOf","replace","split","len","at","first","last","slice","includes","filter","map","find","every","some","append","reverse","unique","flat","object","field","keys","values","entries","merge","hasKey","pick","omit","fromEntries","typeof","isNull","coalesce","toString","toNumber","toBoolean"]);var Wa=we.object({deps:we.array(Y),expr:u,description:we.string().optional()}),Gt=we.object({fields:we.record(Y,Wa)});import{z as Ve}from"zod";import{z as x}from"zod";var Ga=x.enum(["set","unset","merge"]),Ka=x.discriminatedUnion("kind",[x.object({kind:x.literal("prop"),name:x.string().min(1)}),x.object({kind:x.literal("index"),index:x.number().int().nonnegative()}),x.object({kind:x.literal("expr"),expr:u})]),Ba=x.array(Ka).min(1),Ja=x.object({kind:x.literal("seq"),steps:x.array(x.lazy(()=>ye))}),Ya=x.object({kind:x.literal("if"),cond:u,then:x.lazy(()=>ye),else:x.lazy(()=>ye).optional()}),Xa=x.object({kind:x.literal("patch"),op:Ga,path:Ba,value:u.optional()}),Qa=x.object({kind:x.literal("causalGuard"),guardId:x.string().min(1),body:x.lazy(()=>ye)}),ei=x.object({kind:x.literal("effect"),type:x.string(),params:x.record(x.string(),u)}),ti=x.object({kind:x.literal("call"),flow:x.string()}),ri=x.object({kind:x.literal("halt"),reason:x.string().optional()}),ni=x.object({kind:x.literal("fail"),code:x.string(),message:u.optional()}),ye=x.union([Ja,Ya,Xa,Qa,ei,ti,ri,ni]),Ll=x.enum(["seq","if","patch","causalGuard","effect","call","halt","fail"]);var Kt=Ve.object({flow:ye,input:Ne.optional(),inputType:B.optional(),params:Ve.array(Ve.string()).readonly().optional(),available:u.optional(),dispatchable:u.optional(),description:Ve.string().optional()});var oi=lt,ai=V.object({name:V.string().optional(),description:V.string().optional(),authors:V.array(V.string()).optional()}),Bt=V.object({id:V.string(),version:V.string(),hash:V.string(),types:V.record(V.string(),Wt),state:lt,context:oi.optional(),computed:Gt,actions:V.record(V.string(),Kt),meta:ai.optional()});function Yt(e){let t=[],r=Bt.safeParse(e);if(!r.success){let S=r.error.issues.map(y=>({code:"SCHEMA_ERROR",message:y.message,path:y.path.map(String).join(".")}));return me(S)}let n=r.data;wt(n.id)||t.push({code:"SCHEMA_ERROR",message:"Schema id must be a valid URI or UUID",path:"id"}),Tt(n.version)||t.push({code:"SCHEMA_ERROR",message:"Schema version must follow Semantic Versioning 2.0",path:"version"});let o=n.hash;if(!o)t.push({code:"SCHEMA_ERROR",message:"Schema hash is required",path:"hash"});else{let S=e,{hash:y,...b}=S,w=Le(b);o!==w&&t.push({code:"V-008",message:`Schema hash mismatch: expected ${w}, got ${o}`,path:"hash"})}Object.keys(n.state.fields).length===0&&t.push({code:"SCHEMA_ERROR",message:"StateSpec.fields must not be empty",path:"state.fields"}),t.push(...ii(n)),Object.keys(n.computed.fields).length===0&&t.push({code:"SCHEMA_ERROR",message:"ComputedSpec.fields must not be empty",path:"computed.fields"}),Object.keys(n.actions).length===0&&t.push({code:"SCHEMA_ERROR",message:"actions must not be empty",path:"actions"}),t.push(...ci(n)),t.push(...ui(n,"state.fields")),t.push(...fi(n)),t.push(...mi(n)),t.push(...di(n)),t.push(...xi(n)),t.push(...hi(n));let a=Fe(n.computed),i=$e(a);W(i)&&t.push(i.error);let l=zt(a);if(l)for(let S of l)t.push({code:"V-002",message:`Cyclic dependency: ${S.join(" -> ")}`,path:S[0]});let c=new Set(Object.keys(n.actions)),d=si(n,c);t.push(...d);let m=li(n);return t.push(...m),t.length>0?me(t):ve()}function ii(e){let t=[],r=(n,o)=>{for(let[a,i]of Object.entries(n)){let l=`${o}.${a}`;a.startsWith("$")&&t.push({code:"SCHEMA_ERROR",message:`State field "${a}" uses reserved namespace prefix "$"`,path:l}),i.type==="object"&&i.fields&&r(i.fields,l)}};if(r(e.state.fields,"state.fields"),e.state.fieldTypes)for(let n of Object.keys(e.state.fieldTypes))n.startsWith("$")&&t.push({code:"SCHEMA_ERROR",message:`state.fieldTypes.${n} uses reserved namespace prefix "$"`,path:`state.fieldTypes.${n}`});return t}function si(e,t){let r=[];for(let[n,o]of Object.entries(e.actions)){let a=xe(o.flow);for(let i of a)t.has(i)||r.push({code:"V-004",message:`Unknown flow reference: "${i}" in action "${n}"`,path:`actions.${n}`})}return r}function xe(e){let t=[];switch(e.kind){case"call":t.push(e.flow);break;case"seq":for(let r of e.steps)t.push(...xe(r));break;case"if":t.push(...xe(e.then)),e.else&&t.push(...xe(e.else));break;case"causalGuard":t.push(...xe(e.body));break}return t}function li(e){let t=[],r=new Map;for(let[i,l]of Object.entries(e.actions))r.set(i,xe(l.flow));let n=new Set,o=new Set;function a(i,l){n.add(i),o.add(i);let c=r.get(i)??[];for(let d of c)if(n.has(d)){if(o.has(d))return t.push({code:"V-005",message:`Cyclic call detected: ${[...l,d].join(" -> ")}`,path:`actions.${i}`}),!0}else if(a(d,[...l,d]))return!0;return o.delete(i),!1}for(let i of r.keys())n.has(i)||a(i,[i]);return t}function ci(e){let t=[];if(e.state.fieldTypes)for(let r of Object.keys(e.state.fieldTypes))r in e.state.fields||t.push({code:"V-010",message:`state.fieldTypes.${r} has no matching state.fields entry`,path:`state.fieldTypes.${r}`}),t.push(...ee(e.state.fieldTypes[r],e.types,`state.fieldTypes.${r}`));if(e.context?.fieldTypes)for(let r of Object.keys(e.context.fieldTypes))r in e.context.fields||t.push({code:"V-010",message:`context.fieldTypes.${r} has no matching context.fields entry`,path:`context.fieldTypes.${r}`}),t.push(...ee(e.context.fieldTypes[r],e.types,`context.fieldTypes.${r}`));for(let[r,n]of Object.entries(e.actions)){if(!n.inputType){n.params&&n.params.length>0&&t.push(...Jt(r,n,e.types));continue}t.push(...ee(n.inputType,e.types,`actions.${r}.inputType`)),n.params&&n.params.length>0&&t.push(...Jt(r,n,e.types))}return t}function Jt(e,t,r){let n=t.params??[];if(n.length===0)return[];let o=[],a=new Set;for(let[c,d]of n.entries()){if(a.has(d)){o.push({code:"V-010",message:`Duplicate parameter name "${d}" is not allowed`,path:`actions.${e}.params.${c}`});continue}a.add(d)}let i=null;if(t.inputType?i=pt(t.inputType,r):t.input?.type==="object"&&t.input.fields&&(i=Object.keys(t.input.fields)),!i)return[...o,{code:"V-010",message:`actions.${e}.params requires an object-shaped input carrier`,path:`actions.${e}.params`}];let l=new Set(i);return[...o,...n.flatMap((c,d)=>l.has(c)?[]:[{code:"V-010",message:`Parameter "${c}" has no matching input field`,path:`actions.${e}.params.${d}`}])]}function pt(e,t,r=[]){if(e.kind==="ref"){if(r.includes(e.name))return null;let n=t[e.name];return n?pt(n.definition,t,[...r,e.name]):null}if(e.kind==="union"){let n=e.types.filter(o=>!pi(o,t,r));return n.length===1?pt(n[0],t,r):null}return e.kind==="object"?Object.keys(e.fields):null}function pi(e,t,r=[]){let n=G(e,t,r);return n?n.kind==="primitive"&&n.type==="null"||n.kind==="literal"&&n.value===null:!1}function ee(e,t,r,n=[]){let o=[];if(e.kind==="ref"){if(n.includes(e.name))return o.push({code:"V-010",message:`Cyclic type reference "${e.name}" in typing seam`,path:r}),o;let a=t[e.name];return!a||!G(e,t)?(o.push({code:"V-010",message:`Unknown type reference "${e.name}" in typing seam`,path:r}),o):(o.push(...ee(a.definition,t,r,[...n,e.name])),o)}switch(e.kind){case"array":return ee(e.element,t,`${r}.element`,n);case"record":{let a=[...ee(e.key,t,`${r}.key`,n),...ee(e.value,t,`${r}.value`,n)],i=G(e.key,t);return i&&(i.kind!=="primitive"||i.type!=="string")&&a.push({code:"V-010",message:"Record typing seams require string keys",path:`${r}.key`}),a}case"object":for(let[a,i]of Object.entries(e.fields))o.push(...ee(i.type,t,`${r}.fields.${a}.type`,n));return o;case"union":for(let[a,i]of e.types.entries())o.push(...ee(i,t,`${r}.types.${a}`,n));return o;default:return o}}function ui(e,t){let r=[],n=e.state,o=(a,i,l)=>{if(!a.required&&a.default===void 0&&r.push({code:"SCHEMA_ERROR",message:"Optional fields must define a default value",path:i}),a.default!==void 0){if(l){let c=$(a.default,l,e.types);c.ok||r.push({code:"V-009",message:`Default value type mismatch: ${c.message}`,path:i})}else if(a.default===null&&a.required!==!1)r.push({code:"V-009",message:`Default value 'null' is not compatible with required field type '${typeof a.type=="string"?a.type:"enum"}'`,path:i});else if(a.default!==null){let c=K(a.default,a);c.ok||r.push({code:"V-009",message:`Default value type mismatch: ${c.message}`,path:i})}}if(a.type==="object"&&a.fields)for(let[c,d]of Object.entries(a.fields)){let m=l?je(l,e.types,[{kind:"prop",name:c}]):null;o(d,`${i}.${c}`,m??void 0)}if(a.type==="array"&&a.items){let c=l?je(l,e.types,[{kind:"index",index:0}]):null;o(a.items,`${i}[]`,c??void 0)}};for(let[a,i]of Object.entries(n.fields))o(i,`${t}.${a}`,n.fieldTypes?.[a]);return r}function fi(e){let t=[];for(let[r,n]of Object.entries(e.computed.fields))for(let o of n.deps)be(e.computed,o)||ne(e.state,o,e.types)||t.push({code:"V-001",message:`Unknown dependency path: ${o}`,path:`computed.fields.${r}`});return t}function di(e){let t=[];for(let[r,n]of Object.entries(e.computed.fields)){let a=M(n.expr).filter(i=>i.startsWith("$")||be(e.computed,i)?!1:i.startsWith("input.")||i.startsWith("system.")?!0:!ne(e.state,i,e.types));for(let i of a)t.push({code:"V-003",message:`Unknown path in computed expression: ${i}`,path:`computed.fields.${r}`})}return t}function mi(e){let t=[];for(let[r,n]of Object.entries(e.computed.fields)){let o=M(n.expr);for(let a of o)yi(a)&&t.push({code:"V-012",message:`Computed expression must not read runtime or namespace path: ${a}`,path:`computed.fields.${r}`})}return t}function yi(e){return e==="input"||e.startsWith("input.")||e.startsWith("system.")||e.startsWith("meta.")?!0:e.startsWith("$")?!Xt(e):!1}function xi(e){let t=[];for(let[r,n]of Object.entries(e.computed.fields)){let o=M(n.expr),a=new Set(n.deps),i=new Set(o.filter(l=>l.startsWith("$")||l==="input"||l.startsWith("input.")||l==="system"||l.startsWith("system.")||l==="meta"||l.startsWith("meta.")?!1:be(e.computed,l)?!0:ne(e.state,l,e.types)));for(let l of i)a.has(l)||t.push({code:"V-001",message:`Missing dependency for computed expression path: ${l}`,path:`computed.fields.${r}`})}return t}function hi(e){let t=[];for(let[r,n]of Object.entries(e.actions)){let o=Rt(n.flow);for(let a of o)ct(e,r,n,a,"flow",t);if(n.available)for(let a of M(n.available))ct(e,r,n,a,"available",t);if(n.dispatchable)for(let a of M(n.dispatchable))ct(e,r,n,a,"dispatchable",t)}return t}function ct(e,t,r,n,o,a){if(n.startsWith("$")){Ei(e,t,n,o,a);return}if(n==="input"||n.startsWith("input.")){if(o!=="flow"&&o!=="dispatchable"){a.push({code:"V-003",message:`Input path is not allowed in ${o} expression: ${n}`,path:`actions.${t}`});return}if(r.inputType){let i=n==="input"?"":n.slice(6);bt(r.inputType,e.types,i)||a.push({code:"V-003",message:`Unknown input path: ${n}`,path:`actions.${t}`})}else if(r.input){let i=n==="input"?"":n.slice(6);Ge(r.input,i)||a.push({code:"V-003",message:`Unknown input path: ${n}`,path:`actions.${t}`})}return}be(e.computed,n)||ne(e.state,n,e.types)||a.push({code:"V-003",message:`Unknown state path: ${n}`,path:`actions.${t}`})}function Xt(e){return e==="$item"||e.startsWith("$item.")||e==="$index"||e==="$array"}function Ei(e,t,r,n,o){if(!Xt(r)){if(r==="$runtime"||r.startsWith("$runtime.")){n!=="flow"&&o.push({code:"V-003",message:`$runtime is not allowed in ${n} expression: ${r}`,path:`actions.${t}`});return}if(r==="$context"||r.startsWith("$context.")){if(n!=="flow"){o.push({code:"V-003",message:`$context is not allowed in ${n} expression: ${r}`,path:`actions.${t}`});return}if(!e.context){o.push({code:"V-003",message:`Schema does not declare user context path: ${r}`,path:`actions.${t}`});return}if(r!=="$context"){let a=r.slice(9);ne(e.context,a,e.types)||o.push({code:"V-003",message:`Unknown user context path: ${r}`,path:`actions.${t}`})}return}o.push({code:"V-003",message:`Namespace or reserved runtime path is not allowed in action expression: ${r}`,path:`actions.${t}`})}}function Qt(e,t,r){let n=oe(t.meta.timestamp);return er(e,t,r,n)}function er(e,t,r,n){if(e.computed.fields[r]!==void 0)return gi(e,t,r,n);if(r.startsWith("system.")){let a=H(t.system,r.slice(7));return{value:a,trace:E(n,"expr",r,{path:r},a,[]),deps:[]}}if(r.startsWith("input.")||r==="input"){let a=r==="input"?t.input:H(t.input,r.slice(6));return{value:a,trace:E(n,"expr",r,{path:r},a,[]),deps:[]}}let o=H(t.state,r);return{value:o,trace:E(n,"expr",r,{path:r},o,[]),deps:[]}}function gi(e,t,r,n){let o=e.computed.fields[r];if(!o){let d=t.computed[r];return{value:d,trace:E(n,"computed",r,{path:r},d,[]),deps:[]}}let a=Z(t,e,null,r,void 0,n),i=f(o.expr,a),l=fe(i)?i.value:null,c=o.deps.map(d=>er(e,t,d,n).trace);return{value:l,trace:E(n,"computed",r,{expr:o.expr},l,c),deps:o.deps}}function hc(e){let t={};for(let[r,n]of Object.entries(e.fields))n.default!==void 0&&(t[r]=n.default);return t}function Wc(e,t,r){return{state:e,computed:{},system:Dt(),input:void 0,meta:{version:0,timestamp:r.runtime.time.timestamp,randomSeed:r.runtime.random.seed,schemaHash:t},namespaces:Ot()}}function Gc(e,t,r){return r===void 0&&typeof t=="string"?{type:e,input:void 0,intentId:t}:r===void 0?{type:e,input:t,intentId:""}:{type:e,input:t,intentId:r}}function rp(){return{compute:Vt,computeSync:it,apply:Mt,applyNamespaceDeltas:Ht,applySystemDelta:Oe,validate:Yt,explain:Qt,isActionAvailable:It,getAvailableActions:$t,isIntentDispatchable:Ft,validateExternalContext:De}}export{Go as AbsExpr,Kt as ActionSpec,Uo as AddExpr,Do as AndExpr,Ta as AppendExpr,xa as AtExpr,ti as CallFlow,Qa as CausalGuardFlow,Jo as CeilExpr,Ma as CoalesceExpr,tl as ComputeResult,so as ComputeStatus,Wa as ComputedFieldSpec,Gt as ComputedSpec,na as ConcatExpr,Pt as Context,oi as ContextSpec,Si as CoreErrorCode,Lo as DivExpr,Bt as DomainSchema,ei as EffectFlow,pa as EndsWithExpr,Fa as EntriesExpr,To as EnumFieldType,Co as EqExpr,rt as ErrorValue,Na as EveryExpr,nl as ExplainResult,$l as ExprKind,u as ExprNodeSchema,ni as FailFlow,za as FieldExpr,Ne as FieldSpec,Ro as FieldType,Sa as FilterExpr,va as FindExpr,ha as FirstExpr,ja as FlatExpr,Bo as FloorExpr,Ll as FlowKind,ye as FlowNodeSchema,Ba as FlowPatchPath,Ka as FlowPatchSegment,oo as FlowPosition,qa as FromEntriesExpr,jo as GetExpr,Po as GtExpr,Io as GteExpr,ri as HaltFlow,Da as HasKeyExpr,qo as IfExpr,Ya as IfFlow,ka as IncludesExpr,fa as IndexOfExpr,qs as Intent,_a as IsNullExpr,Je as JsonValue,Pa as KeysExpr,Ea as LastExpr,ya as LenExpr,Ao as LitExpr,Fo as LtExpr,$o as LteExpr,ba as MapExpr,ra as MaxArrayExpr,Wo as MaxExpr,$a as MergeExpr,ta as MinArrayExpr,Ho as MinExpr,Zo as ModExpr,Mo as MulExpr,co as NamespaceDelta,Ko as NegExpr,zo as NeqExpr,Vo as NotExpr,Ca as ObjectExpr,Va as OmitExpr,Oo as OrExpr,tt as Patch,Xa as PatchFlow,Ga as PatchOp,et as PatchPath,no as PatchSegment,Oa as PickExpr,Qo as PowExpr,wo as PrimitiveFieldType,da as ReplaceExpr,nt as Requirement,Ki as Result,Ra as ReverseExpr,Yo as RoundExpr,ai as SchemaMeta,Y as SemanticPath,Ja as SeqFlow,ga as SliceExpr,Ks as Snapshot,ao as SnapshotMeta,io as SnapshotNamespaces,wa as SomeExpr,ma as SplitExpr,Xo as SqrtExpr,ca as StartsWithExpr,lt as StateSpec,ua as StrIncludesExpr,la as StrLenExpr,_o as SubExpr,oa as SubstringExpr,ea as SumArrayExpr,lo as SystemDelta,ot as SystemState,Ha as ToBooleanExpr,ia as ToLowerCaseExpr,Za as ToNumberExpr,La as ToStringExpr,sa as ToUpperCaseExpr,xt as TraceGraph,Ee as TraceNode,ur as TraceNodeKind,fr as TraceTermination,aa as TrimExpr,B as TypeDefinition,Wt as TypeSpec,Ua as TypeofExpr,Aa as UniqueExpr,po as ValidationError,rl as ValidationResult,Ia as ValuesExpr,Mt as apply,Ht as applyNamespaceDeltas,Oe as applySystemDelta,Fe as buildDependencyGraph,Ti as canonicalEqual,pe as compareUnicodeCodePoints,Vt as compute,it as computeSync,Z as createContext,rp as createCore,h as createError,jt as createFlowState,Ot as createInitialNamespaces,Dt as createInitialSystemState,Gc as createIntent,Wc as createSnapshot,oe as createTraceContext,E as createTraceNode,zt as detectCycles,F as err,de as evaluateComputed,f as evaluateExpr,Es as evaluateFlow,le as evaluateFlowSync,js as evaluateSingleComputed,Qt as explain,hc as extractDefaults,wi as fromCanonical,zi as generateRequirementId,mt as generateRequirementIdSync,yt as generateTraceId,$t as getAvailableActions,xr as getByPatchPath,H as getByPath,Ss as getTransitiveDeps,_i as hasPath,pr as hashSchema,ji as hashSchemaEffective,Ci as hashSchemaEffectiveSync,Le as hashSchemaSync,_s as indexSegment,me as invalidResult,It as isActionAvailable,W as isErr,bi as isErrorValue,Ft as isIntentDispatchable,fe as isOk,ke as isSafePatchPath,Vi as joinPath,Li as lastSegment,Ae as mergeAtPatchPath,Ui as mergeAtPath,Zs as mergePatch,p as ok,Mi as parentPath,O as parsePath,ie as patchPathToDisplayString,Us as propSegment,kt as semanticPathToPatchPath,Se as setByPatchPath,dr as setByPath,Ms as setPatch,dt as sha256,Te as sha256Sync,_e as sortKeys,te as toCanonical,Ni as toJcs,$e as topologicalSort,Re as unsetByPatchPath,qi as unsetByPath,Ls as unsetPatch,ve as validResult,Yt as validate,De as validateExternalContext,qt as validateIntentInput,re as withCollectionContext,ae as withNodePath,ge as withSnapshot};
@@ -0,0 +1,17 @@
1
+ import { z } from "zod";
2
+ export type JsonValue = null | string | number | boolean | readonly JsonValue[] | {
3
+ readonly [key: string]: JsonValue;
4
+ };
5
+ export declare const JsonValue: z.ZodType<JsonValue>;
6
+ export type Context<TExternalContext extends Record<string, JsonValue> = Record<string, JsonValue>> = {
7
+ readonly runtime: {
8
+ readonly time: {
9
+ readonly timestamp: number;
10
+ };
11
+ readonly random: {
12
+ readonly seed: string;
13
+ };
14
+ };
15
+ readonly external: TExternalContext;
16
+ };
17
+ export declare const Context: z.ZodType<Context>;
@@ -1,4 +1,9 @@
1
1
  import { z } from "zod";
2
+ export declare const ContextSpec: z.ZodObject<{
3
+ fields: z.ZodRecord<z.ZodString, z.ZodType<import("./field.js").FieldSpec, unknown, z.core.$ZodTypeInternals<import("./field.js").FieldSpec, unknown>>>;
4
+ fieldTypes: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodType<import("./type-spec.js").TypeDefinition, unknown, z.core.$ZodTypeInternals<import("./type-spec.js").TypeDefinition, unknown>>>>;
5
+ }, z.core.$strip>;
6
+ export type ContextSpec = z.infer<typeof ContextSpec>;
2
7
  /**
3
8
  * Schema metadata
4
9
  */
@@ -28,6 +33,10 @@ export declare const DomainSchema: z.ZodObject<{
28
33
  fields: z.ZodRecord<z.ZodString, z.ZodType<import("./field.js").FieldSpec, unknown, z.core.$ZodTypeInternals<import("./field.js").FieldSpec, unknown>>>;
29
34
  fieldTypes: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodType<import("./type-spec.js").TypeDefinition, unknown, z.core.$ZodTypeInternals<import("./type-spec.js").TypeDefinition, unknown>>>>;
30
35
  }, z.core.$strip>;
36
+ context: z.ZodOptional<z.ZodObject<{
37
+ fields: z.ZodRecord<z.ZodString, z.ZodType<import("./field.js").FieldSpec, unknown, z.core.$ZodTypeInternals<import("./field.js").FieldSpec, unknown>>>;
38
+ fieldTypes: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodType<import("./type-spec.js").TypeDefinition, unknown, z.core.$ZodTypeInternals<import("./type-spec.js").TypeDefinition, unknown>>>>;
39
+ }, z.core.$strip>>;
31
40
  computed: z.ZodObject<{
32
41
  fields: z.ZodRecord<z.ZodString, z.ZodObject<{
33
42
  deps: z.ZodArray<z.ZodString>;
@@ -6,7 +6,7 @@ import { type ExprNode } from "./expr.js";
6
6
  * Flows do NOT return values; they modify Snapshot.
7
7
  * Flows are NOT Turing-complete; they always terminate.
8
8
  */
9
- export type FlowNode = SeqFlow | IfFlow | PatchFlow | EffectFlow | CallFlow | HaltFlow | FailFlow;
9
+ export type FlowNode = SeqFlow | IfFlow | PatchFlow | CausalGuardFlow | EffectFlow | CallFlow | HaltFlow | FailFlow;
10
10
  /**
11
11
  * Patch operations
12
12
  */
@@ -16,6 +16,35 @@ export declare const PatchOp: z.ZodEnum<{
16
16
  merge: "merge";
17
17
  }>;
18
18
  export type PatchOp = z.infer<typeof PatchOp>;
19
+ /**
20
+ * FlowPatchSegment - Patch target segment used inside Flow evaluation.
21
+ *
22
+ * Unlike apply-time PatchPath segments, Flow patch targets may carry expression
23
+ * segments. Core resolves those expressions during compute() before emitting
24
+ * concrete Patch[].
25
+ */
26
+ export declare const FlowPatchSegment: z.ZodDiscriminatedUnion<[z.ZodObject<{
27
+ kind: z.ZodLiteral<"prop">;
28
+ name: z.ZodString;
29
+ }, z.core.$strip>, z.ZodObject<{
30
+ kind: z.ZodLiteral<"index">;
31
+ index: z.ZodNumber;
32
+ }, z.core.$strip>, z.ZodObject<{
33
+ kind: z.ZodLiteral<"expr">;
34
+ expr: z.ZodType<ExprNode, unknown, z.core.$ZodTypeInternals<ExprNode, unknown>>;
35
+ }, z.core.$strip>], "kind">;
36
+ export type FlowPatchSegment = z.infer<typeof FlowPatchSegment>;
37
+ export declare const FlowPatchPath: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
38
+ kind: z.ZodLiteral<"prop">;
39
+ name: z.ZodString;
40
+ }, z.core.$strip>, z.ZodObject<{
41
+ kind: z.ZodLiteral<"index">;
42
+ index: z.ZodNumber;
43
+ }, z.core.$strip>, z.ZodObject<{
44
+ kind: z.ZodLiteral<"expr">;
45
+ expr: z.ZodType<ExprNode, unknown, z.core.$ZodTypeInternals<ExprNode, unknown>>;
46
+ }, z.core.$strip>], "kind">>;
47
+ export type FlowPatchPath = z.infer<typeof FlowPatchPath>;
19
48
  /**
20
49
  * seq - Execute steps in order
21
50
  */
@@ -50,10 +79,25 @@ export declare const PatchFlow: z.ZodObject<{
50
79
  }, z.core.$strip>, z.ZodObject<{
51
80
  kind: z.ZodLiteral<"index">;
52
81
  index: z.ZodNumber;
82
+ }, z.core.$strip>, z.ZodObject<{
83
+ kind: z.ZodLiteral<"expr">;
84
+ expr: z.ZodType<ExprNode, unknown, z.core.$ZodTypeInternals<ExprNode, unknown>>;
53
85
  }, z.core.$strip>], "kind">>;
54
86
  value: z.ZodOptional<z.ZodType<ExprNode, unknown, z.core.$ZodTypeInternals<ExprNode, unknown>>>;
55
87
  }, z.core.$strip>;
56
88
  export type PatchFlow = z.infer<typeof PatchFlow>;
89
+ /**
90
+ * causalGuard - Core-owned per-intent re-entry guard.
91
+ *
92
+ * This is a generic Flow primitive. Frontends may lower their syntax into it,
93
+ * but Core does not know which frontend produced it.
94
+ */
95
+ export declare const CausalGuardFlow: z.ZodType<{
96
+ kind: "causalGuard";
97
+ guardId: string;
98
+ body: FlowNode;
99
+ }>;
100
+ export type CausalGuardFlow = z.infer<typeof CausalGuardFlow>;
57
101
  /**
58
102
  * effect - External operation requirement declaration
59
103
  * Effects are NOT executed by Core. They are declarations recorded in Snapshot.
@@ -104,5 +148,6 @@ export declare const FlowKind: z.ZodEnum<{
104
148
  halt: "halt";
105
149
  fail: "fail";
106
150
  seq: "seq";
151
+ causalGuard: "causalGuard";
107
152
  }>;
108
153
  export type FlowKind = z.infer<typeof FlowKind>;
@@ -6,9 +6,9 @@ export * from "./computed.js";
6
6
  export * from "./action.js";
7
7
  export * from "./domain.js";
8
8
  export * from "./type-spec.js";
9
+ export * from "./context.js";
9
10
  export * from "./snapshot.js";
10
11
  export * from "./defaults.js";
11
12
  export * from "./patch.js";
12
- export * from "./host-context.js";
13
13
  export * from "./trace.js";
14
14
  export * from "./result.js";
@@ -11,7 +11,11 @@ export declare const PatchSegment: z.ZodDiscriminatedUnion<[z.ZodObject<{
11
11
  }, z.core.$strip>], "kind">;
12
12
  export type PatchSegment = z.infer<typeof PatchSegment>;
13
13
  /**
14
- * PatchPath - Path segments rooted at snapshot.data.
14
+ * PatchPath - Root-relative path segments.
15
+ *
16
+ * The transition channel determines the root:
17
+ * - ComputeResult.patches: snapshot.state
18
+ * - NamespaceDelta.patches: snapshot.namespaces[namespace]
15
19
  */
16
20
  export declare const PatchPath: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
17
21
  kind: z.ZodLiteral<"prop">;
@@ -31,7 +31,7 @@ export declare const SystemDelta: z.ZodObject<{
31
31
  timestamp: z.ZodNumber;
32
32
  context: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
33
33
  }, z.core.$strip>>>;
34
- addRequirements: z.ZodArray<z.ZodObject<{
34
+ addRequirements: z.ZodOptional<z.ZodArray<z.ZodObject<{
35
35
  id: z.ZodString;
36
36
  type: z.ZodString;
37
37
  params: z.ZodRecord<z.ZodString, z.ZodUnknown>;
@@ -41,10 +41,49 @@ export declare const SystemDelta: z.ZodObject<{
41
41
  snapshotVersion: z.ZodNumber;
42
42
  }, z.core.$strip>;
43
43
  createdAt: z.ZodNumber;
44
- }, z.core.$strip>>;
45
- removeRequirementIds: z.ZodArray<z.ZodString>;
44
+ }, z.core.$strip>>>;
45
+ removeRequirementIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
46
46
  }, z.core.$strip>;
47
47
  export type SystemDelta = z.infer<typeof SystemDelta>;
48
+ /**
49
+ * NamespaceDelta - Declarative namespace transition.
50
+ *
51
+ * Patch paths are rooted at snapshot.namespaces[namespace].
52
+ */
53
+ export declare const NamespaceDelta: z.ZodObject<{
54
+ namespace: z.ZodString;
55
+ patches: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
56
+ op: z.ZodLiteral<"set">;
57
+ path: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
58
+ kind: z.ZodLiteral<"prop">;
59
+ name: z.ZodString;
60
+ }, z.core.$strip>, z.ZodObject<{
61
+ kind: z.ZodLiteral<"index">;
62
+ index: z.ZodNumber;
63
+ }, z.core.$strip>], "kind">>;
64
+ value: z.ZodUnknown;
65
+ }, z.core.$strip>, z.ZodObject<{
66
+ op: z.ZodLiteral<"unset">;
67
+ path: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
68
+ kind: z.ZodLiteral<"prop">;
69
+ name: z.ZodString;
70
+ }, z.core.$strip>, z.ZodObject<{
71
+ kind: z.ZodLiteral<"index">;
72
+ index: z.ZodNumber;
73
+ }, z.core.$strip>], "kind">>;
74
+ }, z.core.$strip>, z.ZodObject<{
75
+ op: z.ZodLiteral<"merge">;
76
+ path: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
77
+ kind: z.ZodLiteral<"prop">;
78
+ name: z.ZodString;
79
+ }, z.core.$strip>, z.ZodObject<{
80
+ kind: z.ZodLiteral<"index">;
81
+ index: z.ZodNumber;
82
+ }, z.core.$strip>], "kind">>;
83
+ value: z.ZodRecord<z.ZodString, z.ZodUnknown>;
84
+ }, z.core.$strip>], "op">>;
85
+ }, z.core.$strip>;
86
+ export type NamespaceDelta = z.infer<typeof NamespaceDelta>;
48
87
  /**
49
88
  * ComputeResult - Result of compute() call
50
89
  */
@@ -79,6 +118,39 @@ export declare const ComputeResult: z.ZodObject<{
79
118
  }, z.core.$strip>], "kind">>;
80
119
  value: z.ZodRecord<z.ZodString, z.ZodUnknown>;
81
120
  }, z.core.$strip>], "op">>;
121
+ namespaceDelta: z.ZodOptional<z.ZodArray<z.ZodObject<{
122
+ namespace: z.ZodString;
123
+ patches: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
124
+ op: z.ZodLiteral<"set">;
125
+ path: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
126
+ kind: z.ZodLiteral<"prop">;
127
+ name: z.ZodString;
128
+ }, z.core.$strip>, z.ZodObject<{
129
+ kind: z.ZodLiteral<"index">;
130
+ index: z.ZodNumber;
131
+ }, z.core.$strip>], "kind">>;
132
+ value: z.ZodUnknown;
133
+ }, z.core.$strip>, z.ZodObject<{
134
+ op: z.ZodLiteral<"unset">;
135
+ path: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
136
+ kind: z.ZodLiteral<"prop">;
137
+ name: z.ZodString;
138
+ }, z.core.$strip>, z.ZodObject<{
139
+ kind: z.ZodLiteral<"index">;
140
+ index: z.ZodNumber;
141
+ }, z.core.$strip>], "kind">>;
142
+ }, z.core.$strip>, z.ZodObject<{
143
+ op: z.ZodLiteral<"merge">;
144
+ path: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
145
+ kind: z.ZodLiteral<"prop">;
146
+ name: z.ZodString;
147
+ }, z.core.$strip>, z.ZodObject<{
148
+ kind: z.ZodLiteral<"index">;
149
+ index: z.ZodNumber;
150
+ }, z.core.$strip>], "kind">>;
151
+ value: z.ZodRecord<z.ZodString, z.ZodUnknown>;
152
+ }, z.core.$strip>], "op">>;
153
+ }, z.core.$strip>>>;
82
154
  systemDelta: z.ZodObject<{
83
155
  status: z.ZodOptional<z.ZodEnum<{
84
156
  error: "error";
@@ -97,7 +169,7 @@ export declare const ComputeResult: z.ZodObject<{
97
169
  timestamp: z.ZodNumber;
98
170
  context: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
99
171
  }, z.core.$strip>>>;
100
- addRequirements: z.ZodArray<z.ZodObject<{
172
+ addRequirements: z.ZodOptional<z.ZodArray<z.ZodObject<{
101
173
  id: z.ZodString;
102
174
  type: z.ZodString;
103
175
  params: z.ZodRecord<z.ZodString, z.ZodUnknown>;
@@ -107,8 +179,8 @@ export declare const ComputeResult: z.ZodObject<{
107
179
  snapshotVersion: z.ZodNumber;
108
180
  }, z.core.$strip>;
109
181
  createdAt: z.ZodNumber;
110
- }, z.core.$strip>>;
111
- removeRequirementIds: z.ZodArray<z.ZodString>;
182
+ }, z.core.$strip>>>;
183
+ removeRequirementIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
112
184
  }, z.core.$strip>;
113
185
  trace: z.ZodObject<{
114
186
  root: z.ZodType<TraceNode, unknown, z.core.$ZodTypeInternals<TraceNode, unknown>>;
@@ -80,12 +80,20 @@ export declare const SnapshotMeta: z.ZodObject<{
80
80
  schemaHash: z.ZodString;
81
81
  }, z.core.$strip>;
82
82
  export type SnapshotMeta = z.infer<typeof SnapshotMeta>;
83
+ /**
84
+ * SnapshotNamespaces - Opaque platform/runtime/tooling namespaces.
85
+ *
86
+ * Core owns only the container contract. Namespace names and nested shapes are
87
+ * package-owned and must not be encoded in Core's canonical Snapshot type.
88
+ */
89
+ export declare const SnapshotNamespaces: z.ZodRecord<z.ZodString, z.ZodUnknown>;
90
+ export type SnapshotNamespaces = z.infer<typeof SnapshotNamespaces>;
83
91
  /**
84
92
  * Snapshot - Immutable, point-in-time representation of world state.
85
93
  * This is the ONLY medium of communication between Core and Host.
86
94
  */
87
95
  export declare const Snapshot: z.ZodObject<{
88
- data: z.ZodUnknown;
96
+ state: z.ZodUnknown;
89
97
  computed: z.ZodRecord<z.ZodString, z.ZodUnknown>;
90
98
  system: z.ZodObject<{
91
99
  status: z.ZodEnum<{
@@ -124,9 +132,14 @@ export declare const Snapshot: z.ZodObject<{
124
132
  randomSeed: z.ZodString;
125
133
  schemaHash: z.ZodString;
126
134
  }, z.core.$strip>;
135
+ namespaces: z.ZodRecord<z.ZodString, z.ZodUnknown>;
127
136
  }, z.core.$strip>;
128
137
  export type Snapshot = z.infer<typeof Snapshot>;
129
138
  /**
130
139
  * Create initial system state
131
140
  */
132
141
  export declare function createInitialSystemState(): SystemState;
142
+ /**
143
+ * Create initial namespace container.
144
+ */
145
+ export declare function createInitialNamespaces(): SnapshotNamespaces;
@@ -11,6 +11,8 @@ export declare const TraceNodeKind: z.ZodEnum<{
11
11
  call: "call";
12
12
  flow: "flow";
13
13
  halt: "halt";
14
+ namespaceRead: "namespaceRead";
15
+ namespaceDelta: "namespaceDelta";
14
16
  branch: "branch";
15
17
  }>;
16
18
  export type TraceNodeKind = z.infer<typeof TraceNodeKind>;
@@ -6,6 +6,10 @@ export type SchemaHashInput = {
6
6
  state: {
7
7
  fields: Record<string, unknown>;
8
8
  };
9
+ context?: {
10
+ fields: Record<string, unknown>;
11
+ fieldTypes?: Record<string, unknown>;
12
+ };
9
13
  computed: {
10
14
  fields: Record<string, {
11
15
  deps: string[];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@manifesto-ai/core",
3
- "version": "2.13.0",
3
+ "version": "5.0.0",
4
4
  "description": "Manifesto Core - Pure semantic calculator for deterministic state computation",
5
5
  "author": "eggplantiny <eggplantiny@gmail.com>",
6
6
  "license": "MIT",
@@ -41,7 +41,8 @@
41
41
  "typescript": "^5.9.3",
42
42
  "vite": "^8.0.8",
43
43
  "vitest": "^4.1.4",
44
- "zod": "^4.3.6"
44
+ "zod": "^4.3.6",
45
+ "@manifesto-ai/cts-kit": "5.0.0"
45
46
  },
46
47
  "scripts": {
47
48
  "build": "rm -rf dist && tsup && tsc -p tsconfig.build.json --emitDeclarationOnly --declarationMap false --outDir dist",
@@ -1,11 +0,0 @@
1
- import { z } from "zod";
2
- /**
3
- * HostContext - Explicit host-provided inputs for determinism
4
- */
5
- export declare const HostContext: z.ZodObject<{
6
- now: z.ZodNumber;
7
- randomSeed: z.ZodString;
8
- env: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
9
- durationMs: z.ZodOptional<z.ZodNumber>;
10
- }, z.core.$strip>;
11
- export type HostContext = z.infer<typeof HostContext>;