@manifesto-ai/core 5.0.0 → 5.1.1
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 +26 -3
- package/dist/core/action-availability.d.ts +43 -3
- package/dist/errors.d.ts +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +1 -1
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/json-value.d.ts +26 -0
- package/package.json +8 -8
package/README.md
CHANGED
|
@@ -8,6 +8,25 @@
|
|
|
8
8
|
|
|
9
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
|
+
Most app developers should start with `@manifesto-ai/sdk`, not this package.
|
|
12
|
+
The direct Core examples below are for custom runtime authors, test harnesses,
|
|
13
|
+
and developer tooling that needs the pure compute/apply boundary.
|
|
14
|
+
|
|
15
|
+
```typescript
|
|
16
|
+
const app = createManifesto<TodoDomain>(TodoMel, effects).activate();
|
|
17
|
+
await app.action.addTodo.submit("Review docs");
|
|
18
|
+
console.log(app.snapshot().state.todos);
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
If you are deciding where to start:
|
|
22
|
+
|
|
23
|
+
| Goal | Start Here |
|
|
24
|
+
|------|------------|
|
|
25
|
+
| Build a web app, backend route, script, or trusted agent | `@manifesto-ai/sdk` and the main Guide |
|
|
26
|
+
| Fulfill API/database work from MEL effects | SDK effect handlers |
|
|
27
|
+
| Add approval, audit history, or restore | Lineage/Governance after the base runtime works |
|
|
28
|
+
| Test pure domain computation or build runtime tooling | This Core package |
|
|
29
|
+
|
|
11
30
|
In the Manifesto architecture:
|
|
12
31
|
|
|
13
32
|
```
|
|
@@ -37,13 +56,17 @@ Host -> CORE -> ComputeResult
|
|
|
37
56
|
| Execute effects | Host |
|
|
38
57
|
| Perform IO (network, filesystem) | Host |
|
|
39
58
|
| Persist snapshots | Host |
|
|
40
|
-
|
|
|
59
|
+
| Add optional approval/history protocols | `@manifesto-ai/governance` + `@manifesto-ai/lineage` |
|
|
41
60
|
| Handle UI/event bindings | SDK |
|
|
42
61
|
|
|
43
62
|
---
|
|
44
63
|
|
|
45
64
|
## Installation
|
|
46
65
|
|
|
66
|
+
Install Core directly only when you need direct compute fixtures, custom
|
|
67
|
+
runtime internals, or low-level tooling. App code gets Core through
|
|
68
|
+
`@manifesto-ai/sdk`.
|
|
69
|
+
|
|
47
70
|
```bash
|
|
48
71
|
npm install @manifesto-ai/core
|
|
49
72
|
# or
|
|
@@ -52,7 +75,7 @@ pnpm add @manifesto-ai/core
|
|
|
52
75
|
|
|
53
76
|
---
|
|
54
77
|
|
|
55
|
-
##
|
|
78
|
+
## Direct Core Fixture
|
|
56
79
|
|
|
57
80
|
```typescript
|
|
58
81
|
import { createCore, createSnapshot, createIntent } from "@manifesto-ai/core";
|
|
@@ -200,7 +223,7 @@ For typical usage, see [`@manifesto-ai/sdk`](../sdk/) — the recommended entry
|
|
|
200
223
|
|
|
201
224
|
| Document | Purpose |
|
|
202
225
|
|----------|---------|
|
|
203
|
-
| [GUIDE.md](docs/GUIDE.md) |
|
|
226
|
+
| [GUIDE.md](docs/GUIDE.md) | Direct Core fixture guide for tests, custom runtimes, and tooling |
|
|
204
227
|
| [core-SPEC.md](docs/core-SPEC.md) | Current living specification |
|
|
205
228
|
| [VERSION-INDEX.md](docs/VERSION-INDEX.md) | Current and historical document map |
|
|
206
229
|
| [FDR-v1.0.0.md](docs/FDR-v1.0.0.md) | Historical design rationale |
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
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
|
-
type ActionAvailabilityErrorCode = "UNKNOWN_ACTION" | "INTERNAL_ERROR" | "TYPE_MISMATCH";
|
|
5
|
-
type ActionDispatchabilityErrorCode = "UNKNOWN_ACTION" | "INTERNAL_ERROR" | "TYPE_MISMATCH";
|
|
4
|
+
export type ActionAvailabilityErrorCode = "UNKNOWN_ACTION" | "INTERNAL_ERROR" | "TYPE_MISMATCH";
|
|
5
|
+
export type ActionDispatchabilityErrorCode = "UNKNOWN_ACTION" | "INTERNAL_ERROR" | "TYPE_MISMATCH";
|
|
6
6
|
export type ActionAvailabilityEvaluation = {
|
|
7
7
|
kind: "ok";
|
|
8
8
|
available: boolean;
|
|
@@ -28,6 +28,10 @@ export type ActionDispatchabilityEvaluation = {
|
|
|
28
28
|
export declare function evaluateActionAvailability(schema: DomainSchema, snapshot: Snapshot, actionName: string, timestamp?: number): ActionAvailabilityEvaluation;
|
|
29
29
|
/**
|
|
30
30
|
* Check whether an action is available for a new invocation.
|
|
31
|
+
*
|
|
32
|
+
* @deprecated Use {@link evaluateActionAvailability}: this wrapper throws on
|
|
33
|
+
* evaluation errors, violating the errors-are-values contract. It will be
|
|
34
|
+
* removed in the next major release.
|
|
31
35
|
*/
|
|
32
36
|
export declare function isActionAvailable(schema: DomainSchema, snapshot: Snapshot, actionName: string): boolean;
|
|
33
37
|
/**
|
|
@@ -36,10 +40,46 @@ export declare function isActionAvailable(schema: DomainSchema, snapshot: Snapsh
|
|
|
36
40
|
export declare function evaluateIntentDispatchability(schema: DomainSchema, snapshot: Snapshot, intent: Intent, timestamp?: number): ActionDispatchabilityEvaluation;
|
|
37
41
|
/**
|
|
38
42
|
* Check whether a specific bound intent is dispatchable.
|
|
43
|
+
*
|
|
44
|
+
* @deprecated Use {@link evaluateIntentDispatchability}: this wrapper throws
|
|
45
|
+
* on evaluation errors, violating the errors-are-values contract. It will be
|
|
46
|
+
* removed in the next major release.
|
|
39
47
|
*/
|
|
40
48
|
export declare function isIntentDispatchable(schema: DomainSchema, snapshot: Snapshot, intent: Intent): boolean;
|
|
49
|
+
export type AvailableActionError = {
|
|
50
|
+
readonly actionName: string;
|
|
51
|
+
readonly code: ActionAvailabilityErrorCode;
|
|
52
|
+
readonly message: string;
|
|
53
|
+
};
|
|
54
|
+
export type AvailableActionsEvaluation = {
|
|
55
|
+
kind: "ok";
|
|
56
|
+
/** Action names whose availability evaluated to true, in schema key order. */
|
|
57
|
+
actions: readonly string[];
|
|
58
|
+
/**
|
|
59
|
+
* Actions whose availability expression failed to evaluate. They are
|
|
60
|
+
* excluded from `actions` (an action whose legality cannot be evaluated
|
|
61
|
+
* is not available), but the failure stays observable as a value so one
|
|
62
|
+
* broken expression cannot poison the whole legality query.
|
|
63
|
+
*/
|
|
64
|
+
errors: readonly AvailableActionError[];
|
|
65
|
+
} | {
|
|
66
|
+
kind: "error";
|
|
67
|
+
code: "INTERNAL_ERROR";
|
|
68
|
+
message: string;
|
|
69
|
+
};
|
|
70
|
+
/**
|
|
71
|
+
* Evaluate availability for every action without re-entry semantics.
|
|
72
|
+
*
|
|
73
|
+
* Per-action evaluation failures are reported as values alongside the
|
|
74
|
+
* available list; only a snapshot-level preparation failure (computed
|
|
75
|
+
* evaluation) makes the whole query fail.
|
|
76
|
+
*/
|
|
77
|
+
export declare function evaluateAvailableActions(schema: DomainSchema, snapshot: Snapshot): AvailableActionsEvaluation;
|
|
41
78
|
/**
|
|
42
79
|
* Return all currently available actions in schema key order.
|
|
80
|
+
*
|
|
81
|
+
* @deprecated Use {@link evaluateAvailableActions}: this wrapper throws on
|
|
82
|
+
* evaluation errors, violating the errors-are-values contract. It will be
|
|
83
|
+
* removed in the next major release.
|
|
43
84
|
*/
|
|
44
85
|
export declare function getAvailableActions(schema: DomainSchema, snapshot: Snapshot): readonly string[];
|
|
45
|
-
export {};
|
package/dist/errors.d.ts
CHANGED
|
@@ -13,6 +13,7 @@ export declare const CoreErrorCode: z.ZodEnum<{
|
|
|
13
13
|
UNKNOWN_ACTION: "UNKNOWN_ACTION";
|
|
14
14
|
ACTION_UNAVAILABLE: "ACTION_UNAVAILABLE";
|
|
15
15
|
INVALID_INPUT: "INVALID_INPUT";
|
|
16
|
+
INVALID_VALUE: "INVALID_VALUE";
|
|
16
17
|
INVALID_CONTEXT: "INVALID_CONTEXT";
|
|
17
18
|
CYCLIC_DEPENDENCY: "CYCLIC_DEPENDENCY";
|
|
18
19
|
UNKNOWN_FLOW: "UNKNOWN_FLOW";
|
package/dist/index.d.ts
CHANGED
|
@@ -18,6 +18,8 @@ import { validate } from "./core/validate.js";
|
|
|
18
18
|
import { explain } from "./core/explain.js";
|
|
19
19
|
import { validateExternalContext } from "./core/context-validation.js";
|
|
20
20
|
import { getAvailableActions, isActionAvailable, isIntentDispatchable } from "./core/action-availability.js";
|
|
21
|
+
export { evaluateActionAvailability, evaluateAvailableActions, evaluateIntentDispatchability, } from "./core/action-availability.js";
|
|
22
|
+
export type { ActionAvailabilityErrorCode, ActionAvailabilityEvaluation, ActionDispatchabilityErrorCode, ActionDispatchabilityEvaluation, AvailableActionError, AvailableActionsEvaluation, } from "./core/action-availability.js";
|
|
21
23
|
/**
|
|
22
24
|
* ManifestoCore interface
|
|
23
25
|
*/
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
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};
|
|
1
|
+
import{z as sr}from"zod";var Ai=sr.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_VALUE","INVALID_CONTEXT","CYCLIC_DEPENDENCY","UNKNOWN_FLOW","CYCLIC_CALL","UNKNOWN_EFFECT","INTERNAL_ERROR"]);function x(e,t,r,n,o,a){return{code:e,message:t,source:{actionId:r,nodePath:n},timestamp:o,context:a}}function wi(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 Ze(e){if(e==null)return e;if(Array.isArray(e))return e.map(Ze);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]=Ze(o))}return t}return e}function te(e){let t=Ze(e);return JSON.stringify(t)}function Ri(e){return He(e)}function He(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)?lr(e):cr(e);default:return"null"}}function lr(e){return`[${e.map(r=>r===void 0||typeof r=="function"||typeof r=="symbol"?"null":He(r)).join(",")}]`}function cr(e){let t=Object.keys(e).sort(ue),r=[];for(let n of t){let o=e[n];o===void 0||typeof o=="function"||typeof o=="symbol"||r.push(`${JSON.stringify(n)}:${He(o)}`)}return`{${r.join(",")}}`}function ue(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 ji(e){return JSON.parse(e)}function Ci(e,t){return te(e)===te(t)}function mt(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 yt(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 ur=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]),pr=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]);function Z(e,t){return e>>>t|e<<32-t}function fr(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(pr),d=new DataView(a.buffer);for(let y=0;y<a.length;y+=64){let S=new Uint32Array(64);for(let v=0;v<16;v++)S[v]=d.getUint32(y+v*4);for(let v=16;v<64;v++){let Me=Z(S[v-15],7)^Z(S[v-15],18)^S[v-15]>>>3,Le=Z(S[v-2],17)^Z(S[v-2],19)^S[v-2]>>>10;S[v]=S[v-16]+Me+S[v-7]+Le>>>0}let A=c[0],_=c[1],T=c[2],D=c[3],O=c[4],U=c[5],M=c[6],he=c[7];for(let v=0;v<64;v++){let Me=Z(O,6)^Z(O,11)^Z(O,25),Le=O&U^~O&M,dt=he+Me+Le+ur[v]+S[v]>>>0,or=Z(A,2)^Z(A,13)^Z(A,22),ar=A&_^A&T^_&T,ir=or+ar>>>0;he=M,M=U,U=O,O=D+dt>>>0,D=T,T=_,_=A,A=dt+ir>>>0}c[0]=c[0]+A>>>0,c[1]=c[1]+_>>>0,c[2]=c[2]+T>>>0,c[3]=c[3]+D>>>0,c[4]=c[4]+O>>>0,c[5]=c[5]+U>>>0,c[6]=c[6]+M>>>0,c[7]=c[7]+he>>>0}let m=new Uint8Array(32),b=new DataView(m.buffer);for(let y=0;y<c.length;y++)b.setUint32(y*4,c[y]);return m}function we(e){let t=new TextEncoder().encode(e),r=fr(t),n="";for(let o of r)n+=o.toString(16).padStart(2,"0");return n}async function dr(e,t="semantic"){let r=te(mt(e,t));return yt(r)}function We(e,t="semantic"){let r=te(mt(e,t));return we(r)}async function Ii(e){return dr(e,"effective")}function $i(e){return We(e,"effective")}async function Fi(e,t,r,n){let o=`${e}:${t}:${r}:${n}`;return`req-${(await yt(o)).slice(0,16)}`}function xt(e,t,r,n){let o=`${e}:${t}:${r}:${n}`;return`req-${we(o).slice(0,16)}`}function ht(e=0){return`trace-${e}`}var mr=j.enum(["expr","computed","flow","patch","namespaceRead","namespaceDelta","effect","branch","call","halt","error"]),Ee=j.lazy(()=>j.object({id:j.string(),kind:mr,sourcePath:j.string(),inputs:j.record(j.string(),j.unknown()),output:j.unknown(),children:j.array(Ee),timestamp:j.number()})),yr=j.enum(["complete","effect","halt","error"]),Et=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:yr});function oe(e){let t=0;return{timestamp:e,nextId:()=>ht(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 H(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 V(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 gt(e){return e.replaceAll("\\","\\\\").replaceAll(".","\\.")}function Mi(...e){return e.filter(Boolean).map(gt).join(".")}function W(e,t){if(!t)return e;let r=V(t),n=e;for(let o of r){if(n==null)return;if(typeof n=="object")n=n[o];else return}return n}function xr(e,t,r){if(!t)return r;let n=V(t);return kt(e,n,r)}function kt(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]:kt(i,o,r)}}function Li(e,t){if(!t)return;let r=V(t);return bt(e,r)}function bt(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]:bt(a,n)}}function Zi(e,t,r){let n=W(e,t),o=n!==null&&typeof n=="object"?{...n,...r}:r;return xr(e,t,o)}function Hi(e,t){if(!t)return e!==void 0;let r=V(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 Wi(e){let t=V(e);return hr(...t.slice(0,-1))}function Gi(e){let t=V(e);return t[t.length-1]??""}function hr(...e){return e.map(gt).join(".")}var Er=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 St(e){let t=V(e);if(t.length===0)return[{kind:"prop",name:e}];let r=[];for(let n of t){let o=kr(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"||!Er.has(t.name))}function gr(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 be(e,t,r){return Ge(e,t,r)}function Te(e,t){return Ke(e,t)}function Re(e,t,r){let n=gr(e,t),o=Be(n)?{...n,...r}:r;return be(e,t,o)}function Ge(e,t,r){if(t.length===0)return r;let[n,...o]=t;if(n.kind==="prop"){let i=Be(e)?e:{},l=Ge(i[n.name],o,r);return{...i,[n.name]:l}}let a=Array.isArray(e)?[...e]:[];return a[n.index]=Ge(a[n.index],o,r),a}function Ke(e,t){if(t.length===0)return e;let[r,...n]=t;if(r.kind==="prop"){if(!Be(e))return e;if(n.length===0){let{[r.name]:a,...i}=e;return i}return{...e,[r.name]:Ke(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]=Ke(o[r.index],n),o)}function Be(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}function kr(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 pe}from"zod";var Y=pe.string().min(1),Xi=(e,t)=>pe.discriminatedUnion("ok",[pe.object({ok:pe.literal(!0),value:e}),pe.object({ok:pe.literal(!1),error:t})]),u=e=>({ok:!0,value:e}),$=e=>({ok:!1,error:e}),fe=e=>e.ok,G=e=>!e.ok;function br(e){return/^\d+$/.test(e)}function Sr(e,t){let r=K(e,t);return r?r.kind==="primitive"&&r.type==="null"||r.kind==="literal"&&r.value===null:!1}function vt(e,t){let r=K(e,t);if(!r)return null;if(r.kind!=="union")return r;let n=r.types.filter(a=>!Sr(a,t));return n.length!==r.types.length?n.length!==1?null:K(n[0],t):r}function K(e,t,r=[]){if(e.kind!=="ref")return e;if(r.includes(e.name))return null;let n=t[e.name];return n?K(n.definition,t,[...r,e.name]):null}function Nt(e,t,r){return r?wt(e,t,V(r))!==null:!0}function At(e,t,r){return wt(e,t,r)!==null}function wt(e,t,r){let n=e;for(let o of r){if(!n)return null;let a=vt(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(!br(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=vt(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 F(e,t,r,n){if(e===void 0)return n?.allowUndefined?{ok:!0}:{ok:!1,message:"Value is required"};let o=K(t,r);if(!o)return{ok:!1,message:"Unknown type reference"};if(o.kind==="union")return o.types.map(i=>F(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 a of e){let i=F(a,o.element,r,{allowUndefined:!1});if(!i.ok)return i}return{ok:!0};case"object":return e===null||Array.isArray(e)||typeof e!="object"?{ok:!1,message:"Expected object"}:vr(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=K(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=F(i,o.value,r,{allowUndefined:!1});if(!l.ok)return l}return{ok:!0}}case"ref":return{ok:!1,message:"Unresolved type reference"}}}function vr(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=F(e[i],l.type,r,{allowPartial:n,allowUndefined:o});if(!c.ok)return c}return{ok:!0}}var Nr=/^\d+\.\d+\.\d+(?:-[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?(?:\+[0-9A-Za-z-]+(?:\.[0-9A-Za-z-]+)*)?$/,Ar=/^[a-zA-Z][a-zA-Z0-9+.-]*:/,wr=/^[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 Tt(e){return Ar.test(e)||wr.test(e)}function Rt(e){return Nr.test(e)}function L(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 jt(e){let t=[],r=n=>{switch(n.kind){case"seq":n.steps.forEach(r);return;case"if":t.push(...L(n.cond)),r(n.then),n.else&&r(n.else);return;case"patch":for(let o of n.path)o.kind==="expr"&&t.push(...L(o.expr));n.op!=="unset"&&n.value&&t.push(...L(n.value));return;case"causalGuard":r(n.body);return;case"effect":Object.values(n.params).forEach(o=>{t.push(...L(o))});return;case"fail":n.message&&t.push(...L(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=V(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:At(i,r,a)))return!0}return Je({type:"object",required:!0,fields:e.fields},t)}function Se(e,t){return Object.hasOwn(e.fields,t)}function Je(e,t){if(!t)return!0;let r=V(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(!Rr(o))return!1;n=n.items??null;continue}return!1}return!0}function B(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"}:Tr(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=B(o,t.items,{allowUndefined:!1});if(!a.ok)return a}return{ok:!0}}}function Tr(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=B(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 Rr(e){return/^[0-9]+$/.test(e)}function f(e,t){switch(e.kind){case"lit":return u(e.value);case"get":return jr(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 Fr(e.args,t);case"or":return Dr(e.args,t);case"not":return Or(e.arg,t);case"if":return Vr(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 qr(e.left,e.right,t);case"mod":return Ur(e.left,e.right,t);case"min":return _r(e.args,t);case"max":return Mr(e.args,t);case"abs":return Lr(e.arg,t);case"neg":return Zr(e.arg,t);case"floor":return xn(e.arg,t);case"ceil":return hn(e.arg,t);case"round":return En(e.arg,t);case"sqrt":return gn(e.arg,t);case"pow":return kn(e.base,e.exponent,t);case"sumArray":return bn(e.array,t);case"minArray":return Sn(e.array,t);case"maxArray":return vn(e.array,t);case"concat":return Hr(e.args,t);case"substring":return Wr(e,t);case"trim":return Gr(e.str,t);case"toLowerCase":return Nn(e.str,t);case"toUpperCase":return An(e.str,t);case"strLen":return wn(e.str,t);case"startsWith":return Tn(e.str,e.prefix,t);case"endsWith":return Rn(e.str,e.suffix,t);case"strIncludes":return jn(e.str,e.search,t);case"indexOf":return Cn(e.str,e.search,t);case"replace":return zn(e.str,e.search,e.replacement,t);case"split":return Pn(e.str,e.delimiter,t);case"len":return Kr(e.arg,t);case"at":return Br(e.array,e.index,t);case"first":return Jr(e.array,t);case"last":return Yr(e.array,t);case"slice":return Xr(e,t);case"includes":return Qr(e.array,e.item,t);case"filter":return en(e.array,e.predicate,t);case"map":return tn(e.array,e.mapper,t);case"find":return rn(e.array,e.predicate,t);case"every":return nn(e.array,e.predicate,t);case"some":return on(e.array,e.predicate,t);case"append":return an(e.array,e.items,t);case"reverse":return In(e.array,t);case"unique":return $n(e.array,t);case"flat":return Fn(e.array,t);case"object":return sn(e.fields,t);case"field":return ln(e.object,e.property,t);case"keys":return cn(e.obj,t);case"values":return un(e.obj,t);case"entries":return pn(e.obj,t);case"merge":return fn(e.objects,t);case"hasKey":return Dn(e.obj,e.key,t);case"pick":return On(e.obj,e.keys,t);case"omit":return Vn(e.obj,e.keys,t);case"fromEntries":return qn(e.entries,t);case"typeof":return dn(e.arg,t);case"isNull":return mn(e.arg,t);case"coalesce":return yn(e.args,t);case"toString":return Un(e.arg,t);case"toNumber":return _n(e.arg,t);case"toBoolean":return Mn(e.arg,t);default:return $(x("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 jr(e,t){let r=t.expressionPath;t.expressionPath=e;try{return Cr(e,t)}finally{t.expressionPath=r}}function Cr(e,t){if(e.startsWith("$item")){if(t.$item===void 0)return u(null);if(e==="$item")return u(t.$item);let r=e.slice(6);return u(se(W(t.$item,r)))}if(e==="$index")return u(t.$index);if(e==="$array")return u(t.$array);if(e==="$runtime"||e.startsWith("$runtime."))return zr(e,t);if(e==="$context"||e.startsWith("$context."))return Pr(e,t);if(e.startsWith("$"))return $(x("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 $(x("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 u(r?se(W(t.snapshot.input,r)):t.snapshot.input)}return Object.hasOwn(t.schema.computed.fields,e)?u(se(t.snapshot.computed[e])):u(se(W(t.snapshot.state,e)))}function zr(e,t){if(t.phase!=="flow"||!t.context)return $(x("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 u(se(t.intentId));case"$runtime.intent.action":return u(se(t.currentAction));case"$runtime.time.timestamp":return u(t.context.runtime.time.timestamp);case"$runtime.time.iso":return u(Ir(t.context.runtime.time.timestamp));case"$runtime.random.seed":return u(t.context.runtime.random.seed);case"$runtime.random.uuid":return u($r(t));default:return $(x("PATH_NOT_FOUND",`Unknown runtime path: ${e}`,t.currentAction??"",t.nodePath,t.trace.timestamp))}}function Pr(e,t){if(t.phase!=="flow"||!t.context)return $(x("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 $(x("PATH_NOT_FOUND",`Schema does not declare user context path: ${e}`,t.currentAction??"",t.nodePath,t.trace.timestamp));if(e==="$context")return u(t.context.external);let r=e.slice(9);return ne(t.schema.context,r,t.schema.types)?u(se(W(t.context.external,r))):$(x("PATH_NOT_FOUND",`Unknown user context path: ${e}`,t.currentAction??"",t.nodePath,t.trace.timestamp))}function Ir(e){if(!Number.isFinite(e))return null;let t=new Date(e);return Number.isFinite(t.getTime())?t.toISOString():null}function $r(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=we(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?u(n(o.value,a.value)):a}function Fr(e,t){for(let r of e){let n=f(r,t);if(!n.ok)return n;if(!Q(n.value))return u(!1)}return u(!0)}function Dr(e,t){for(let r of e){let n=f(r,t);if(!n.ok)return n;if(Q(n.value))return u(!0)}return u(!1)}function Or(e,t){let r=f(e,t);return r.ok?u(!Q(r.value)):r}function Vr(e,t){let r=f(e.cond,t);return r.ok?f(Q(r.value)?e.then:e.else,t):r}function qr(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?u(null):u(g(n.value)/a)}function Ur(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?u(null):u(g(n.value)%a)}function _r(e,t){if(e.length===0)return u(null);let r=[];for(let n of e){let o=f(n,t);if(!o.ok)return o;r.push(g(o.value))}return u(Math.min(...r))}function Mr(e,t){if(e.length===0)return u(null);let r=[];for(let n of e){let o=f(n,t);if(!o.ok)return o;r.push(g(o.value))}return u(Math.max(...r))}function Lr(e,t){let r=f(e,t);return r.ok?u(Math.abs(g(r.value))):r}function Zr(e,t){let r=f(e,t);return r.ok?u(-g(r.value)):r}function Hr(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 u(a)}let o=r.map(a=>C(a));return u(o.join(""))}function Wr(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?u(o.substring(a,g(i.value))):i}return u(o.substring(a))}function Gr(e,t){let r=f(e,t);return r.ok?u(C(r.value).trim()):r}function Kr(e,t){let r=f(e,t);if(!r.ok)return r;let n=r.value;return Array.isArray(n)?u(n.length):typeof n=="string"?u(n.length):typeof n=="object"&&n!==null?u(Object.keys(n).length):u(0)}function Br(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?u(null):u(a[l])}return typeof a=="object"&&a!==null&&typeof i=="string"?u(a[i]??null):u(null)}function Jr(e,t){let r=f(e,t);if(!r.ok)return r;let n=r.value;return!Array.isArray(n)||n.length===0?u(null):u(n[0])}function Yr(e,t){let r=f(e,t);if(!r.ok)return r;let n=r.value;return!Array.isArray(n)||n.length===0?u(null):u(n[n.length-1])}function Xr(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 u([]);let a=g(n.value);if(e.end){let i=f(e.end,t);return i.ok?u(o.slice(a,g(i.value))):i}return u(o.slice(a))}function Qr(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)?u(a.includes(o.value)):u(!1)}function en(e,t,r){let n=f(e,r);if(!n.ok)return n;let o=n.value;if(!Array.isArray(o))return u([]);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 u(a)}function tn(e,t,r){let n=f(e,r);if(!n.ok)return n;let o=n.value;if(!Array.isArray(o))return u([]);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 u(a)}function rn(e,t,r){let n=f(e,r);if(!n.ok)return n;let o=n.value;if(!Array.isArray(o))return u(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 u(o[a])}return u(null)}function nn(e,t,r){let n=f(e,r);if(!n.ok)return n;let o=n.value;if(!Array.isArray(o))return u(!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 u(!1)}return u(!0)}function on(e,t,r){let n=f(e,r);if(!n.ok)return n;let o=n.value;if(!Array.isArray(o))return u(!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 u(!0)}return u(!1)}function an(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 u(a)}function sn(e,t){let r={};for(let n of Object.keys(e).sort(ue)){let o=e[n],a=f(o,t);if(!a.ok)return a;r[n]=a.value}return u(r)}function ln(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)?u(null):u(o[t]??null)}function cn(e,t){let r=f(e,t);if(!r.ok)return r;let n=r.value;return typeof n!="object"||n===null?u([]):u(Object.keys(n).sort(ue))}function un(e,t){let r=f(e,t);if(!r.ok)return r;let n=r.value;return typeof n!="object"||n===null?u([]):u(Object.keys(n).sort(ue).map(o=>n[o]))}function pn(e,t){let r=f(e,t);if(!r.ok)return r;let n=r.value;return typeof n!="object"||n===null?u([]):u(Object.keys(n).sort(ue).map(o=>[o,n[o]]))}function fn(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 u(r)}function dn(e,t){let r=f(e,t);if(!r.ok)return r;let n=r.value;return n===null?u("null"):Array.isArray(n)?u("array"):u(typeof n)}function mn(e,t){let r=f(e,t);return r.ok?u(r.value===null||r.value===void 0):r}function yn(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 u(null)}function xn(e,t){let r=f(e,t);return r.ok?u(Math.floor(g(r.value))):r}function hn(e,t){let r=f(e,t);return r.ok?u(Math.ceil(g(r.value))):r}function En(e,t){let r=f(e,t);return r.ok?u(Math.round(g(r.value))):r}function gn(e,t){let r=f(e,t);if(!r.ok)return r;let n=g(r.value);return n<0?u(null):u(Math.sqrt(n))}function kn(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)?u(a):u(null)}function bn(e,t){let r=f(e,t);if(!r.ok)return r;let n=r.value;if(!Array.isArray(n))return u(0);let o=0;for(let a of n)o+=g(a);return u(o)}function Sn(e,t){let r=f(e,t);if(!r.ok)return r;let n=r.value;if(!Array.isArray(n)||n.length===0)return u(null);let o=g(n[0]);for(let a=1;a<n.length;a++){let i=g(n[a]);i<o&&(o=i)}return u(o)}function vn(e,t){let r=f(e,t);if(!r.ok)return r;let n=r.value;if(!Array.isArray(n)||n.length===0)return u(null);let o=g(n[0]);for(let a=1;a<n.length;a++){let i=g(n[a]);i>o&&(o=i)}return u(o)}function Nn(e,t){let r=f(e,t);return r.ok?u(C(r.value).toLowerCase()):r}function An(e,t){let r=f(e,t);return r.ok?u(C(r.value).toUpperCase()):r}function wn(e,t){let r=f(e,t);return r.ok?u(C(r.value).length):r}function Tn(e,t,r){let n=f(e,r);if(!n.ok)return n;let o=f(t,r);return o.ok?u(C(n.value).startsWith(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?u(C(n.value).endsWith(C(o.value))):o}function jn(e,t,r){let n=f(e,r);if(!n.ok)return n;let o=f(t,r);return o.ok?u(C(n.value).includes(C(o.value))):o}function Cn(e,t,r){let n=f(e,r);if(!n.ok)return n;let o=f(t,r);return o.ok?u(C(n.value).indexOf(C(o.value))):o}function zn(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?u(C(o.value).replace(C(a.value),C(i.value))):i}function Pn(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 u(a.length===0?[""]:a)}function In(e,t){let r=f(e,t);if(!r.ok)return r;let n=r.value;return Array.isArray(n)?u([...n].reverse()):u([])}function $n(e,t){let r=f(e,t);if(!r.ok)return r;let n=r.value;if(!Array.isArray(n))return u([]);let o=[],a=[];for(let i of n)o.some(l=>l===i)||(o.push(i),a.push(i));return u(a)}function Fn(e,t){let r=f(e,t);if(!r.ok)return r;let n=r.value;if(!Array.isArray(n))return u([]);let o=[];for(let a of n)Array.isArray(a)?o.push(...a):o.push(a);return u(o)}function Dn(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 u(!1);let i=o.value;return typeof i!="string"?u(!1):u(Object.hasOwn(a,i))}function On(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 u({});let i=o.value;if(!Array.isArray(i))return u({});let l={};for(let c of i)typeof c=="string"&&Object.hasOwn(a,c)&&(l[c]=a[c]);return u(l)}function Vn(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 u({});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 u(c)}function qn(e,t){let r=f(e,t);if(!r.ok)return r;let n=r.value;if(!Array.isArray(n))return u({});let o={};for(let a of n)Array.isArray(a)&&a.length===2&&typeof a[0]=="string"&&(o[a[0]]=a[1]);return u(o)}function Un(e,t){let r=f(e,t);return r.ok?u(C(r.value)):r}function _n(e,t){let r=f(e,t);return r.ok?u(g(r.value)):r}function Mn(e,t){let r=f(e,t);return r.ok?u(Q(r.value)):r}var Pe="core",Xe="causalGuards";function zt(e){return{snapshot:e,status:"running",patches:[],namespaceDelta:[],requirements:[],error:null}}function Pt(e,t){let r=e.snapshot.state;switch(t.op){case"set":r=be(r,t.path,t.value);break;case"unset":r=Te(r,t.path);break;case"merge":r=Re(r,t.path,t.value);break}return{...e,snapshot:{...e.snapshot,state:r},patches:[...e.patches,t]}}function Ln(e,t,r,n){return{...e,snapshot:{...e.snapshot,namespaces:{...e.snapshot.namespaces,[t]:r}},namespaceDelta:[...e.namespaceDelta,{namespace:t,patches:[n]}]}}function Zn(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 Hn(e.steps,o,r,n);case"if":return Wn(e,o,r,n);case"patch":return Gn(e,o,r,n);case"causalGuard":return Jn(e,o,r,n);case"effect":return Qn(e,o,r,n);case"call":return ro(e.flow,o,r,n);case"halt":return no(e.reason,o,r,n);case"fail":return oo(e,o,r,n);default:return{state:z(r,x("INTERNAL_ERROR",`Unknown flow kind: ${e.kind}`,o.currentAction??"",n,o.trace.timestamp)),trace:E(o.trace,"error",n,{},null,[])}}}async function bs(e,t,r,n){return le(e,t,r,n)}function Hn(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 Wn(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 Gn(e,t,r,n){let o=ge(t,r.snapshot),a=Kn(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,x("PATH_NOT_FOUND",`Unknown patch path: ${l}`,t.currentAction??"",n,t.trace.timestamp)),trace:E(t.trace,"error",n,{},null,[])};if(e.op==="merge"&&!Bn(r.snapshot.state,i))return{state:z(r,x("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 b;if(e.value){let A=f(e.value,ae(o,`${n}.value`));if(!A.ok)return{state:z(r,A.error),trace:E(t.trace,"error",n,{},null,[])};b=A.value}if(e.op!=="unset"){let A=d?F(b,d,t.schema.types,{allowPartial:e.op==="merge",allowUndefined:!1}):B(b,m,{allowPartial:e.op==="merge",allowUndefined:!1});if(!A.ok)return{state:z(r,x("TYPE_MISMATCH",`Invalid patch value at ${l}: ${A.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:b}:{op:"set",path:i,value:b};return{state:Pt(r,y),trace:E(t.trace,"patch",n,{op:e.op,path:l},b,[])}}function Kn(e,t,r){let n=[];for(let[o,a]of e.entries()){if(a.kind==="prop"||a.kind==="index"){let d=Ye([...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=Ye([...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=Ye([...n,d],t,r,o);if(!m.ok)return m;n.push(d);continue}return{ok:!1,error:x("INVALID_PATCH_PATH",`Invalid dynamic patch path segment at index ${o}: expected non-empty string or non-negative integer, got ${Ct(c)}`,t.currentAction??"",`${r}.path[${o}]`,t.trace.timestamp,{segmentIndex:o,resolvedType:Ct(c)})}}return{ok:!0,path:n}}function Ye(e,t,r,n){return ke(e)?{ok:!0}:{ok:!1,error:x("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 Ct(e){return e===null?"null":Array.isArray(e)?"array":typeof e}function Bn(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 Jn(e,t,r,n){let o=t.intentId;if(!o)return{state:z(r,x("INVALID_INPUT","causalGuard requires a current intent id",t.currentAction??"",n,t.trace.timestamp)),trace:E(t.trace,"error",n,{},null,[])};let a=Yn(r.snapshot,t,n);if(!a.ok)return{state:z(r,a.error),trace:E(t.trace,"error",n,{},null,[])};let i=Xn(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,[Xe]:{...i,[e.guardId]:o}},c={op:"merge",path:[{kind:"prop",name:Xe}],value:{[e.guardId]:o}},d=Ln(r,Pe,l,c),m=E(t.trace,"namespaceDelta",`${n}.namespaceDelta`,{namespace:Pe,patchCount:1},{namespace:Pe,patches:[c]},[]),b=`${n}.body`,y=ae(ge(t,d.snapshot),b),S=le(e.body,y,d,b);return{state:S.state,trace:E(t.trace,"flow",n,{kind:"causalGuard",guardId:e.guardId,skipped:!1},null,[m,S.trace])}}function Yn(e,t,r){let n=e.namespaces[Pe];return n===void 0?{ok:!0,value:{}}:Ie(n)?{ok:!0,value:n}:{ok:!1,error:x("TYPE_MISMATCH","Invalid core namespace root: expected object",t.currentAction??"",r,t.trace.timestamp)}}function Xn(e){let t=e[Xe];return Ie(t)?Object.fromEntries(Object.entries(t).filter(r=>typeof r[1]=="string")):{}}function Qn(e,t,r,n){if(e.type==="array.map"||e.type==="array.filter")return eo(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:xt(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:Zn(r,i),trace:E(t.trace,"effect",n,{type:e.type},o,[])}}function eo(e,t,r,n){let{params:o}=e,a=ge(t,r.snapshot),i=o.source;if(!i)return{state:z(r,x("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,x("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,x("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 b=to(m.value);if(!b)return{state:z(r,x("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,x("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 S=[];for(let T=0;T<c.length;T++){let D=c[T],O=re(a,D,T,c),U=f(y,O);if(!U.ok)return{state:z(r,U.error),trace:E(a.trace,"error",n,{},null,[])};if(e.type==="array.map")S.push(U.value);else{let M=U.value;M!=null&&M!==!1&&S.push(D)}}return{state:Pt(r,{op:"set",path:b,value:S}),trace:E(a.trace,"effect",n,{type:e.type,target:b},{count:S.length},[])}}function to(e){if(typeof e=="string")return St(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 ro(e,t,r,n){let o=t.schema.actions[e];if(!o)return{state:z(r,x("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 no(e,t,r,n){return{state:{...r,status:"halted"},trace:E(t.trace,"halt",n,{reason:e},null,[])}}function oo(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=x("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 $e(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 Fe(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 $({code:"V-002",message:`Cyclic dependency detected in computed fields: ${a.join(", ")}`,path:a[0]})}return u(o)}function It(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 Ns(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=$e(e.computed),o=Fe(n);if(!o.ok)return $(x("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=H(i,e,null,l,void 0,r,{phase:"computed"}),m=f(c.expr,d);if(G(m))return m;a[l]=m.value,i={...i,computed:{...a}}}return u(a)}function Ps(e,t,r){let n=oe(t.meta.timestamp),o=e.computed.fields[r];if(!o)return $(x("PATH_NOT_FOUND",`Computed field not found: ${r}`,"",r,n.timestamp));let a=H(t,e,null,r,void 0,n,{phase:"computed"});return f(o.expr,a)}import{z as P}from"zod";var Qe=P.lazy(()=>P.union([P.null(),P.string(),P.number().finite(),P.boolean(),P.array(Qe),P.record(P.string(),Qe)])),$t=P.object({runtime:P.object({time:P.object({timestamp:P.number().finite()}),random:P.object({seed:P.string()})}),external:P.record(P.string(),Qe)});function De(e,t){let r=de(e,t);return G(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 Oe(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=H(t,e,null,`actions.${r}.available`,void 0,n,{phase:"availability"}),i=f(o.available,a);return G(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 Ve(e,t,r,n=t.meta.timestamp){let o=De(e,t);return o.kind==="error"?o:Oe(e,o.snapshot,r,n)}function Ft(e,t,r){let n=Ve(e,t,r);if(n.kind==="error")throw new Error(n.message);return n.available}function Dt(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=De(e,t);if(a.kind==="error")return a;let i=Oe(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=H({...a.snapshot,input:r.input},e,r.type,`actions.${r.type}.dispatchable`,r.intentId,n,{phase:"dispatchability"}),c=f(o.dispatchable,l);return G(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 Ot(e,t,r){let n=Dt(e,t,r);if(n.kind==="error")throw new Error(n.message);return n.dispatchable}function ao(e,t){let r=De(e,t);if(r.kind==="error")return r;let n=[],o=[];for(let a of Object.keys(e.actions)){let i=Oe(e,r.snapshot,a,t.meta.timestamp);if(i.kind==="error"){o.push({actionName:a,code:i.code,message:i.message});continue}i.available&&n.push(a)}return{kind:"ok",actions:n,errors:o}}function Vt(e,t){let r=De(e,t);if(r.kind==="error")throw new Error(r.message);return Object.keys(e.actions).filter(n=>{let o=Oe(e,r.snapshot,n,t.meta.timestamp);if(o.kind==="error")throw new Error(o.message);return o.available})}import{z as R}from"zod";import{z as w}from"zod";var io=w.discriminatedUnion("kind",[w.object({kind:w.literal("prop"),name:w.string().min(1)}),w.object({kind:w.literal("index"),index:w.number().int().nonnegative()})]),et=w.array(io).min(1),tt=w.discriminatedUnion("op",[w.object({op:w.literal("set"),path:et,value:w.unknown()}),w.object({op:w.literal("unset"),path:et}),w.object({op:w.literal("merge"),path:et,value:w.record(w.string(),w.unknown())})]),Ms=w.object({type:w.string(),input:w.unknown().optional(),intentId:w.string()});function Ls(e){return{kind:"prop",name:e}}function Zs(e){return{kind:"index",index:e}}function Hs(e,t){return{op:"set",path:e,value:t}}function Ws(e){return{op:"unset",path:e}}function Gs(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()}),so=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:so,createdAt:k.number()}),ot=k.object({status:k.enum(["idle","computing","pending","error"]),lastError:rt.nullable(),pendingRequirements:k.array(nt),currentAction:k.string().nullable()}),lo=k.object({version:k.number(),timestamp:k.number(),randomSeed:k.string(),schemaHash:k.string()}),co=k.record(k.string(),k.unknown()),Ys=k.object({state:k.unknown(),computed:k.record(Y,k.unknown()),system:ot,input:k.unknown(),meta:lo,namespaces:co});function qt(){return{status:"idle",lastError:null,pendingRequirements:[],currentAction:null}}function Ut(){return{}}var uo=R.enum(["complete","pending","halted","error"]),po=R.object({status:ot.shape.status.optional(),currentAction:R.string().nullable().optional(),lastError:rt.nullable().optional(),addRequirements:R.array(nt).optional(),removeRequirementIds:R.array(R.string()).optional()}),fo=R.object({namespace:R.string().min(1),patches:R.array(tt)}),ol=R.object({patches:R.array(tt),namespaceDelta:R.array(fo).optional(),systemDelta:po,trace:Et,status:uo}),mo=R.object({code:R.string(),message:R.string(),path:R.string().optional()}),al=R.object({valid:R.boolean(),errors:R.array(mo)}),il=R.object({value:R.unknown(),trace:Ee,deps:R.array(Y)});function ve(){return{valid:!0,errors:[]}}function me(e){return{valid:!1,errors:e}}function qe(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?F(t[i],c,e.types):B(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 Ue(e,t){let r=at(t,"status"),n=at(t,"currentAction"),o=at(t,"lastError"),a=new Set(t.removeRequirementIds??[]),i=t.addRequirements??[],l=yo(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 xo(e.system,c)?{...e,system:c,meta:{...e.meta,version:e.meta.version+1}}:e}function yo(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 xo(e,t){return e.status!==t.status||e.currentAction!==t.currentAction||!Eo(e.lastError,t.lastError)||!ho(e.pendingRequirements,t.pendingRequirements)}function ho(e,t){if(e.length!==t.length)return!1;for(let r=0;r<e.length;r++)if(!go(e[r],t[r]))return!1;return!0}function Eo(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 go(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.hasOwn(e,t)}function it(e,t,r,n){let o=ko(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=qe(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 b=Mt(e,r);if(b)return ce(c,r,"INVALID_INPUT",b,i);let y=c.system.currentAction===r.type;if(m.available&&!y){let v=Ve(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 S={...c,input:r.input,system:{...c.system,status:"computing",currentAction:r.type}},A=H(S,e,r.type,`actions.${r.type}.flow`,r.intentId,i,{context:a,phase:"flow"}),_=zt(S),T=le(m.flow,A,_,`actions.${r.type}.flow`),D=So(T.state.status),O=Ao(c,r,D,T.state.error,T.state.requirements),U=[...T.state.patches],M=[...T.state.namespaceDelta],he={root:T.trace,nodes:No(T.trace),intent:{type:r.type,input:r.input},baseVersion:c.meta.version,resultVersion:Lt(c,U,M,O),duration:0,terminatedBy:vo(T.state.status)};return{patches:U,namespaceDelta:M,systemDelta:O,trace:he,status:D}}async function _t(e,t,r,n){return it(e,t,r,n)}function ko(e){try{let t=$t.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: ${bo(t)}`}}}function bo(e){return e instanceof Error&&e.message.length>0?e.message:"context validation failed"}function Mt(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`:wo(e,r.inputType,r.input,t.input):null}function So(e){switch(e){case"running":case"complete":return"complete";case"pending":return"pending";case"halted":return"halted";case"error":return"error"}}function vo(e){switch(e){case"running":case"complete":return"complete";case"pending":return"effect";case"halted":return"halt";case"error":return"error"}}function No(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=x(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:Lt(e,[],[],i),duration:0,terminatedBy:"error"};return{patches:[],namespaceDelta:[],systemDelta:i,trace:l,status:"error"}}function Ao(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 Lt(e,t,r,n){let o=e.meta.version;return o+=1,r.length>0&&(o+=1),Ue(e,n)!==e&&(o+=1),o}function wo(e,t,r,n){if(t){let o=F(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=To(l,o[i],i);if(c)return c}}return null}function To(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 Ro(e){let t=Object.getPrototypeOf(e);return t===Object.prototype||t===null}function st(e,t,r){if(e===null)return null;switch(typeof e){case"string":case"boolean":return null;case"number":return Number.isFinite(e)?null:{path:t,reason:`non-finite number (${String(e)})`};case"undefined":return{path:t,reason:"undefined is not a JSON value"};case"function":return{path:t,reason:"functions are not JSON values"};case"symbol":return{path:t,reason:"symbols are not JSON values"};case"bigint":return{path:t,reason:"bigints are not JSON values"};case"object":break;default:return{path:t,reason:`unsupported value type (${typeof e})`}}let n=e;if(r.has(n))return{path:t,reason:"circular reference"};r.add(n);try{if(Array.isArray(n)){for(let o=0;o<n.length;o+=1){let a=st(n[o],`${t}[${o}]`,r);if(a)return a}return null}if(!Ro(n)){let o=n.constructor?.name??"unknown";return{path:t,reason:`non-plain object (${o}) is not a JSON value`}}for(let[o,a]of Object.entries(n)){let i=st(a,`${t}.${o}`,r);if(i)return i}return null}finally{r.delete(n)}}function lt(e,t="value"){return st(e,t,new Set)}function Ht(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 S=ie(y.path);if(!ke(y.path)){i.push(x("PATH_NOT_FOUND",`Unsafe patch path: ${S}`,t.system.currentAction??"",S,l,{patch:y}));continue}let A=Ce(e.state,e.types,y.path),_=A?null:ze(c,y.path);if(!A&&!_){i.push(x("PATH_NOT_FOUND",`Unknown patch path: ${S}`,t.system.currentAction??"",S,l,{patch:y}));continue}if(y.op==="merge"&&!Wt(n,y.path)){i.push(x("TYPE_MISMATCH",`Invalid merge target at ${S}: target path must be an object or absent`,t.system.currentAction??"",S,l,{patch:y}));continue}if(y.op!=="unset"){let T=A?F(y.value,A,e.types,{allowPartial:y.op==="merge",allowUndefined:!1}):B(y.value,_,{allowPartial:y.op==="merge",allowUndefined:!1});if(!T.ok){i.push(x("TYPE_MISMATCH",`Invalid patch value at ${S}: ${T.message??"type mismatch"}`,t.system.currentAction??"",S,l,{patch:y}));continue}let D=lt(y.value,S);if(D){i.push(x("INVALID_VALUE",`Non-JSON patch value at ${D.path}: ${D.reason}`,t.system.currentAction??"",S,l,{patch:y}));continue}}n=Gt(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),b=t.computed;if(fe(m))b=m.value;else if(G(m)){let y=m.error;b={},o={...o,status:"error",lastError:y}}return{state:n,computed:b,system:o,input:a,meta:{...t.meta,version:t.meta.version+1},namespaces:t.namespaces}}function ct(e){return e!==null&&!Array.isArray(e)&&typeof e=="object"}function Wt(e,t){let r=e;for(let n of t){if(r===void 0)return!0;if(n.kind==="prop"){if(!ct(r))return!1;r=r[n.name];continue}if(!Array.isArray(r))return!1;r=r[n.index]}return r===void 0?!0:ct(r)}function Gt(e,t){switch(t.op){case"set":return be(e,t.path,t.value);case"unset":return Te(e,t.path);case"merge":return Re(e,t.path,t.value)}}function Kt(e,t){if(t.length===0)return e;let r=Zt(e.namespaces),n=e.system,o=[],a=e.meta.timestamp;for(let i of t){if(i.namespace.length===0){o.push(x("PATH_NOT_FOUND","Invalid namespace: namespace must be non-empty",e.system.currentAction??"","namespaces",a,{delta:i}));continue}let l=Object.hasOwn(r,i.namespace)?r[i.namespace]:void 0;if(l!==void 0&&!ct(l)){o.push(x("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 b=`${i.namespace}.${ie(m.path)}`;if(!ke(m.path)){o.push(x("PATH_NOT_FOUND",`Unsafe namespace patch path: ${b}`,e.system.currentAction??"",b,a,{delta:i,patch:m})),d=!0;break}if(m.op==="merge"&&!Wt(c,m.path)){o.push(x("TYPE_MISMATCH",`Invalid namespace merge target at ${b}: target path must be an object or absent`,e.system.currentAction??"",b,a,{delta:i,patch:m})),d=!0;break}if(m.op!=="unset"){let y=lt(m.value,b);if(y){o.push(x("INVALID_VALUE",`Non-JSON namespace patch value at ${y.path}: ${y.reason}`,e.system.currentAction??"",b,a,{delta:i,patch:m})),d=!0;break}}c=Gt(c,m)}d||(r=Zt(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 Zt(e){return Object.assign(Object.create(null),e)}import{z as q}from"zod";import{z as I}from"zod";import{z as N}from"zod";var J=N.lazy(()=>N.discriminatedUnion("kind",[N.object({kind:N.literal("primitive"),type:N.string()}),N.object({kind:N.literal("array"),element:J}),N.object({kind:N.literal("record"),key:J,value:J}),N.object({kind:N.literal("object"),fields:N.record(N.string(),N.object({type:J,optional:N.boolean()}))}),N.object({kind:N.literal("union"),types:N.array(J).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()})])),Bt=N.object({name:N.string(),definition:J});var jo=I.enum(["string","number","boolean","null","object","array"]),Co=I.object({enum:I.array(I.unknown()).readonly()}),zo=I.union([jo,Co]),Ne=I.lazy(()=>I.object({type:zo,required:I.boolean(),default:I.unknown().optional(),description:I.string().optional(),fields:I.record(I.string(),Ne).optional(),items:Ne.optional()})),ut=I.object({fields:I.record(I.string(),Ne),fieldTypes:I.record(I.string(),J).optional()});import{z as Ae}from"zod";import{z as s}from"zod";var Po=s.object({kind:s.literal("lit"),value:s.unknown()}),Io=s.object({kind:s.literal("get"),path:Y}),$o=s.object({kind:s.literal("eq"),left:s.lazy(()=>p),right:s.lazy(()=>p)}),Fo=s.object({kind:s.literal("neq"),left:s.lazy(()=>p),right:s.lazy(()=>p)}),Do=s.object({kind:s.literal("gt"),left:s.lazy(()=>p),right:s.lazy(()=>p)}),Oo=s.object({kind:s.literal("gte"),left:s.lazy(()=>p),right:s.lazy(()=>p)}),Vo=s.object({kind:s.literal("lt"),left:s.lazy(()=>p),right:s.lazy(()=>p)}),qo=s.object({kind:s.literal("lte"),left:s.lazy(()=>p),right:s.lazy(()=>p)}),Uo=s.object({kind:s.literal("and"),args:s.array(s.lazy(()=>p))}),_o=s.object({kind:s.literal("or"),args:s.array(s.lazy(()=>p))}),Mo=s.object({kind:s.literal("not"),arg:s.lazy(()=>p)}),Lo=s.object({kind:s.literal("if"),cond:s.lazy(()=>p),then:s.lazy(()=>p),else:s.lazy(()=>p)}),Zo=s.object({kind:s.literal("add"),left:s.lazy(()=>p),right:s.lazy(()=>p)}),Ho=s.object({kind:s.literal("sub"),left:s.lazy(()=>p),right:s.lazy(()=>p)}),Wo=s.object({kind:s.literal("mul"),left:s.lazy(()=>p),right:s.lazy(()=>p)}),Go=s.object({kind:s.literal("div"),left:s.lazy(()=>p),right:s.lazy(()=>p)}),Ko=s.object({kind:s.literal("mod"),left:s.lazy(()=>p),right:s.lazy(()=>p)}),Bo=s.object({kind:s.literal("min"),args:s.array(s.lazy(()=>p))}),Jo=s.object({kind:s.literal("max"),args:s.array(s.lazy(()=>p))}),Yo=s.object({kind:s.literal("abs"),arg:s.lazy(()=>p)}),Xo=s.object({kind:s.literal("neg"),arg:s.lazy(()=>p)}),Qo=s.object({kind:s.literal("floor"),arg:s.lazy(()=>p)}),ea=s.object({kind:s.literal("ceil"),arg:s.lazy(()=>p)}),ta=s.object({kind:s.literal("round"),arg:s.lazy(()=>p)}),ra=s.object({kind:s.literal("sqrt"),arg:s.lazy(()=>p)}),na=s.object({kind:s.literal("pow"),base:s.lazy(()=>p),exponent:s.lazy(()=>p)}),oa=s.object({kind:s.literal("sumArray"),array:s.lazy(()=>p)}),aa=s.object({kind:s.literal("minArray"),array:s.lazy(()=>p)}),ia=s.object({kind:s.literal("maxArray"),array:s.lazy(()=>p)}),sa=s.object({kind:s.literal("concat"),args:s.array(s.lazy(()=>p))}),la=s.object({kind:s.literal("substring"),str:s.lazy(()=>p),start:s.lazy(()=>p),end:s.lazy(()=>p).optional()}),ca=s.object({kind:s.literal("trim"),str:s.lazy(()=>p)}),ua=s.object({kind:s.literal("toLowerCase"),str:s.lazy(()=>p)}),pa=s.object({kind:s.literal("toUpperCase"),str:s.lazy(()=>p)}),fa=s.object({kind:s.literal("strLen"),str:s.lazy(()=>p)}),da=s.object({kind:s.literal("startsWith"),str:s.lazy(()=>p),prefix:s.lazy(()=>p)}),ma=s.object({kind:s.literal("endsWith"),str:s.lazy(()=>p),suffix:s.lazy(()=>p)}),ya=s.object({kind:s.literal("strIncludes"),str:s.lazy(()=>p),search:s.lazy(()=>p)}),xa=s.object({kind:s.literal("indexOf"),str:s.lazy(()=>p),search:s.lazy(()=>p)}),ha=s.object({kind:s.literal("replace"),str:s.lazy(()=>p),search:s.lazy(()=>p),replacement:s.lazy(()=>p)}),Ea=s.object({kind:s.literal("split"),str:s.lazy(()=>p),delimiter:s.lazy(()=>p)}),ga=s.object({kind:s.literal("len"),arg:s.lazy(()=>p)}),ka=s.object({kind:s.literal("at"),array:s.lazy(()=>p),index:s.lazy(()=>p)}),ba=s.object({kind:s.literal("first"),array:s.lazy(()=>p)}),Sa=s.object({kind:s.literal("last"),array:s.lazy(()=>p)}),va=s.object({kind:s.literal("slice"),array:s.lazy(()=>p),start:s.lazy(()=>p),end:s.lazy(()=>p).optional()}),Na=s.object({kind:s.literal("includes"),array:s.lazy(()=>p),item:s.lazy(()=>p)}),Aa=s.object({kind:s.literal("filter"),array:s.lazy(()=>p),predicate:s.lazy(()=>p)}),wa=s.object({kind:s.literal("map"),array:s.lazy(()=>p),mapper:s.lazy(()=>p)}),Ta=s.object({kind:s.literal("find"),array:s.lazy(()=>p),predicate:s.lazy(()=>p)}),Ra=s.object({kind:s.literal("every"),array:s.lazy(()=>p),predicate:s.lazy(()=>p)}),ja=s.object({kind:s.literal("some"),array:s.lazy(()=>p),predicate:s.lazy(()=>p)}),Ca=s.object({kind:s.literal("append"),array:s.lazy(()=>p),items:s.array(s.lazy(()=>p))}),za=s.object({kind:s.literal("reverse"),array:s.lazy(()=>p)}),Pa=s.object({kind:s.literal("unique"),array:s.lazy(()=>p)}),Ia=s.object({kind:s.literal("flat"),array:s.lazy(()=>p)}),$a=s.object({kind:s.literal("object"),fields:s.record(s.string(),s.lazy(()=>p))}),Fa=s.object({kind:s.literal("field"),object:s.lazy(()=>p),property:s.string()}),Da=s.object({kind:s.literal("keys"),obj:s.lazy(()=>p)}),Oa=s.object({kind:s.literal("values"),obj:s.lazy(()=>p)}),Va=s.object({kind:s.literal("entries"),obj:s.lazy(()=>p)}),qa=s.object({kind:s.literal("merge"),objects:s.array(s.lazy(()=>p))}),Ua=s.object({kind:s.literal("hasKey"),obj:s.lazy(()=>p),key:s.lazy(()=>p)}),_a=s.object({kind:s.literal("pick"),obj:s.lazy(()=>p),keys:s.lazy(()=>p)}),Ma=s.object({kind:s.literal("omit"),obj:s.lazy(()=>p),keys:s.lazy(()=>p)}),La=s.object({kind:s.literal("fromEntries"),entries:s.lazy(()=>p)}),Za=s.object({kind:s.literal("typeof"),arg:s.lazy(()=>p)}),Ha=s.object({kind:s.literal("isNull"),arg:s.lazy(()=>p)}),Wa=s.object({kind:s.literal("coalesce"),args:s.array(s.lazy(()=>p))}),Ga=s.object({kind:s.literal("toString"),arg:s.lazy(()=>p)}),Ka=s.object({kind:s.literal("toNumber"),arg:s.lazy(()=>p)}),Ba=s.object({kind:s.literal("toBoolean"),arg:s.lazy(()=>p)}),p=s.union([Po,Io,$o,Fo,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,ua,pa,fa,da,ma,ya,xa,ha,Ea,ga,ka,ba,Sa,va,Na,Aa,wa,Ta,Ra,ja,Ca,za,Pa,Ia,$a,Fa,Da,Oa,Va,qa,Ua,_a,Ma,La,Za,Ha,Wa,Ga,Ka,Ba]),Ul=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 Ja=Ae.object({deps:Ae.array(Y),expr:p,description:Ae.string().optional()}),Jt=Ae.object({fields:Ae.record(Y,Ja)});import{z as _e}from"zod";import{z as h}from"zod";var Ya=h.enum(["set","unset","merge"]),Xa=h.discriminatedUnion("kind",[h.object({kind:h.literal("prop"),name:h.string().min(1)}),h.object({kind:h.literal("index"),index:h.number().int().nonnegative()}),h.object({kind:h.literal("expr"),expr:p})]),Qa=h.array(Xa).min(1),ei=h.object({kind:h.literal("seq"),steps:h.array(h.lazy(()=>ye))}),ti=h.object({kind:h.literal("if"),cond:p,then:h.lazy(()=>ye),else:h.lazy(()=>ye).optional()}),ri=h.object({kind:h.literal("patch"),op:Ya,path:Qa,value:p.optional()}),ni=h.object({kind:h.literal("causalGuard"),guardId:h.string().min(1),body:h.lazy(()=>ye)}),oi=h.object({kind:h.literal("effect"),type:h.string(),params:h.record(h.string(),p)}),ai=h.object({kind:h.literal("call"),flow:h.string()}),ii=h.object({kind:h.literal("halt"),reason:h.string().optional()}),si=h.object({kind:h.literal("fail"),code:h.string(),message:p.optional()}),ye=h.union([ei,ti,ri,ni,oi,ai,ii,si]),Kl=h.enum(["seq","if","patch","causalGuard","effect","call","halt","fail"]);var Yt=_e.object({flow:ye,input:Ne.optional(),inputType:J.optional(),params:_e.array(_e.string()).readonly().optional(),available:p.optional(),dispatchable:p.optional(),description:_e.string().optional()});var li=ut,ci=q.object({name:q.string().optional(),description:q.string().optional(),authors:q.array(q.string()).optional()}),Xt=q.object({id:q.string(),version:q.string(),hash:q.string(),types:q.record(q.string(),Bt),state:ut,context:li.optional(),computed:Jt,actions:q.record(q.string(),Yt),meta:ci.optional()});function er(e){let t=[],r=Xt.safeParse(e);if(!r.success){let b=r.error.issues.map(y=>({code:"SCHEMA_ERROR",message:y.message,path:y.path.map(String).join(".")}));return me(b)}let n=r.data;Tt(n.id)||t.push({code:"SCHEMA_ERROR",message:"Schema id must be a valid URI or UUID",path:"id"}),Rt(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 b=e,{hash:y,...S}=b,A=We(S);o!==A&&t.push({code:"V-008",message:`Schema hash mismatch: expected ${A}, 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(...ui(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(...di(n)),t.push(...yi(n,"state.fields")),t.push(...xi(n)),t.push(...Ei(n)),t.push(...hi(n)),t.push(...ki(n)),t.push(...bi(n));let a=$e(n.computed),i=Fe(a);G(i)&&t.push(i.error);let l=It(a);if(l)for(let b of l)t.push({code:"V-002",message:`Cyclic dependency: ${b.join(" -> ")}`,path:b[0]});let c=new Set(Object.keys(n.actions)),d=pi(n,c);t.push(...d);let m=fi(n);return t.push(...m),t.length>0?me(t):ve()}function ui(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 pi(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 fi(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 di(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(...Qt(r,n,e.types));continue}t.push(...ee(n.inputType,e.types,`actions.${r}.inputType`)),n.params&&n.params.length>0&&t.push(...Qt(r,n,e.types))}return t}function Qt(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=ft(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 ft(e,t,r=[]){if(e.kind==="ref"){if(r.includes(e.name))return null;let n=t[e.name];return n?ft(n.definition,t,[...r,e.name]):null}if(e.kind==="union"){let n=e.types.filter(o=>!mi(o,t,r));return n.length===1?ft(n[0],t,r):null}return e.kind==="object"?Object.keys(e.fields):null}function mi(e,t,r=[]){let n=K(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||!K(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=K(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 yi(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=F(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=B(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 xi(e){let t=[];for(let[r,n]of Object.entries(e.computed.fields))for(let o of n.deps)Se(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 hi(e){let t=[];for(let[r,n]of Object.entries(e.computed.fields)){let a=L(n.expr).filter(i=>i.startsWith("$")||Se(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 Ei(e){let t=[];for(let[r,n]of Object.entries(e.computed.fields)){let o=L(n.expr);for(let a of o)gi(a)&&t.push({code:"V-012",message:`Computed expression must not read runtime or namespace path: ${a}`,path:`computed.fields.${r}`})}return t}function gi(e){return e==="input"||e.startsWith("input.")||e.startsWith("system.")||e.startsWith("meta.")?!0:e.startsWith("$")?!tr(e):!1}function ki(e){let t=[];for(let[r,n]of Object.entries(e.computed.fields)){let o=L(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:Se(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 bi(e){let t=[];for(let[r,n]of Object.entries(e.actions)){let o=jt(n.flow);for(let a of o)pt(e,r,n,a,"flow",t);if(n.available)for(let a of L(n.available))pt(e,r,n,a,"available",t);if(n.dispatchable)for(let a of L(n.dispatchable))pt(e,r,n,a,"dispatchable",t)}return t}function pt(e,t,r,n,o,a){if(n.startsWith("$")){Si(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);Nt(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);Je(r.input,i)||a.push({code:"V-003",message:`Unknown input path: ${n}`,path:`actions.${t}`})}return}Se(e.computed,n)||ne(e.state,n,e.types)||a.push({code:"V-003",message:`Unknown state path: ${n}`,path:`actions.${t}`})}function tr(e){return e==="$item"||e.startsWith("$item.")||e==="$index"||e==="$array"}function Si(e,t,r,n,o){if(!tr(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 rr(e,t,r){let n=oe(t.meta.timestamp);return nr(e,t,r,n)}function nr(e,t,r,n){if(e.computed.fields[r]!==void 0)return vi(e,t,r,n);if(r.startsWith("system.")){let a=W(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:W(t.input,r.slice(6));return{value:a,trace:E(n,"expr",r,{path:r},a,[]),deps:[]}}let o=W(t.state,r);return{value:o,trace:E(n,"expr",r,{path:r},o,[]),deps:[]}}function vi(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=H(t,e,null,r,void 0,n),i=f(o.expr,a),l=fe(i)?i.value:null,c=o.deps.map(d=>nr(e,t,d,n).trace);return{value:l,trace:E(n,"computed",r,{expr:o.expr},l,c),deps:o.deps}}function Sc(e){let t={};for(let[r,n]of Object.entries(e.fields))n.default!==void 0&&(t[r]=n.default);return t}function Xc(e,t,r){return{state:e,computed:{},system:qt(),input:void 0,meta:{version:0,timestamp:r.runtime.time.timestamp,randomSeed:r.runtime.random.seed,schemaHash:t},namespaces:Ut()}}function Qc(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 lu(){return{compute:_t,computeSync:it,apply:Ht,applyNamespaceDeltas:Kt,applySystemDelta:Ue,validate:er,explain:rr,isActionAvailable:Ft,getAvailableActions:Vt,isIntentDispatchable:Ot,validateExternalContext:qe}}export{Yo as AbsExpr,Yt as ActionSpec,Zo as AddExpr,Uo as AndExpr,Ca as AppendExpr,ka as AtExpr,ai as CallFlow,ni as CausalGuardFlow,ea as CeilExpr,Wa as CoalesceExpr,ol as ComputeResult,uo as ComputeStatus,Ja as ComputedFieldSpec,Jt as ComputedSpec,sa as ConcatExpr,$t as Context,li as ContextSpec,Ai as CoreErrorCode,Go as DivExpr,Xt as DomainSchema,oi as EffectFlow,ma as EndsWithExpr,Va as EntriesExpr,Co as EnumFieldType,$o as EqExpr,rt as ErrorValue,Ra as EveryExpr,il as ExplainResult,Ul as ExprKind,p as ExprNodeSchema,si as FailFlow,Fa as FieldExpr,Ne as FieldSpec,zo as FieldType,Aa as FilterExpr,Ta as FindExpr,ba as FirstExpr,Ia as FlatExpr,Qo as FloorExpr,Kl as FlowKind,ye as FlowNodeSchema,Qa as FlowPatchPath,Xa as FlowPatchSegment,so as FlowPosition,La as FromEntriesExpr,Io as GetExpr,Do as GtExpr,Oo as GteExpr,ii as HaltFlow,Ua as HasKeyExpr,Lo as IfExpr,ti as IfFlow,Na as IncludesExpr,xa as IndexOfExpr,Ms as Intent,Ha as IsNullExpr,Qe as JsonValue,Da as KeysExpr,Sa as LastExpr,ga as LenExpr,Po as LitExpr,Vo as LtExpr,qo as LteExpr,wa as MapExpr,ia as MaxArrayExpr,Jo as MaxExpr,qa as MergeExpr,aa as MinArrayExpr,Bo as MinExpr,Ko as ModExpr,Wo as MulExpr,fo as NamespaceDelta,Xo as NegExpr,Fo as NeqExpr,Mo as NotExpr,$a as ObjectExpr,Ma as OmitExpr,_o as OrExpr,tt as Patch,ri as PatchFlow,Ya as PatchOp,et as PatchPath,io as PatchSegment,_a as PickExpr,na as PowExpr,jo as PrimitiveFieldType,ha as ReplaceExpr,nt as Requirement,Xi as Result,za as ReverseExpr,ta as RoundExpr,ci as SchemaMeta,Y as SemanticPath,ei as SeqFlow,va as SliceExpr,Ys as Snapshot,lo as SnapshotMeta,co as SnapshotNamespaces,ja as SomeExpr,Ea as SplitExpr,ra as SqrtExpr,da as StartsWithExpr,ut as StateSpec,ya as StrIncludesExpr,fa as StrLenExpr,Ho as SubExpr,la as SubstringExpr,oa as SumArrayExpr,po as SystemDelta,ot as SystemState,Ba as ToBooleanExpr,ua as ToLowerCaseExpr,Ka as ToNumberExpr,Ga as ToStringExpr,pa as ToUpperCaseExpr,Et as TraceGraph,Ee as TraceNode,mr as TraceNodeKind,yr as TraceTermination,ca as TrimExpr,J as TypeDefinition,Bt as TypeSpec,Za as TypeofExpr,Pa as UniqueExpr,mo as ValidationError,al as ValidationResult,Oa as ValuesExpr,Ht as apply,Kt as applyNamespaceDeltas,Ue as applySystemDelta,$e as buildDependencyGraph,Ci as canonicalEqual,ue as compareUnicodeCodePoints,_t as compute,it as computeSync,H as createContext,lu as createCore,x as createError,zt as createFlowState,Ut as createInitialNamespaces,qt as createInitialSystemState,Qc as createIntent,Xc as createSnapshot,oe as createTraceContext,E as createTraceNode,It as detectCycles,$ as err,Ve as evaluateActionAvailability,ao as evaluateAvailableActions,de as evaluateComputed,f as evaluateExpr,bs as evaluateFlow,le as evaluateFlowSync,Dt as evaluateIntentDispatchability,Ps as evaluateSingleComputed,rr as explain,Sc as extractDefaults,lt as findJsonValueViolation,ji as fromCanonical,Fi as generateRequirementId,xt as generateRequirementIdSync,ht as generateTraceId,Vt as getAvailableActions,gr as getByPatchPath,W as getByPath,Ns as getTransitiveDeps,Hi as hasPath,dr as hashSchema,Ii as hashSchemaEffective,$i as hashSchemaEffectiveSync,We as hashSchemaSync,Zs as indexSegment,me as invalidResult,Ft as isActionAvailable,G as isErr,wi as isErrorValue,Ot as isIntentDispatchable,fe as isOk,ke as isSafePatchPath,Mi as joinPath,Gi as lastSegment,Re as mergeAtPatchPath,Zi as mergeAtPath,Gs as mergePatch,u as ok,Wi as parentPath,V as parsePath,ie as patchPathToDisplayString,Ls as propSegment,St as semanticPathToPatchPath,be as setByPatchPath,xr as setByPath,Hs as setPatch,yt as sha256,we as sha256Sync,Ze as sortKeys,te as toCanonical,Ri as toJcs,Fe as topologicalSort,Te as unsetByPatchPath,Li as unsetByPath,Ws as unsetPatch,ve as validResult,er as validate,qe as validateExternalContext,Mt as validateIntentInput,re as withCollectionContext,ae as withNodePath,ge as withSnapshot};
|
package/dist/utils/index.d.ts
CHANGED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* JSON value-domain validation for snapshot/patch write boundaries.
|
|
3
|
+
*
|
|
4
|
+
* Manifesto state is required to be JSON-serializable and canonical
|
|
5
|
+
* (constitution §2.6 "Schema-first"). Values that JSON cannot represent
|
|
6
|
+
* must be rejected at the write boundary instead of being silently
|
|
7
|
+
* dropped or coerced later by canonicalization/hashing (#480).
|
|
8
|
+
*
|
|
9
|
+
* Accepted: null, string, boolean, finite number, arrays of accepted
|
|
10
|
+
* values, and plain objects (Object.prototype or null prototype) of
|
|
11
|
+
* accepted values.
|
|
12
|
+
*
|
|
13
|
+
* Notes:
|
|
14
|
+
* - -0 is accepted. JSON canonicalization normalizes it to 0, but
|
|
15
|
+
* rejecting it would fail innocent arithmetic results (e.g. mul(0, -1)).
|
|
16
|
+
* - Shared (non-cyclic) references are accepted; JSON duplicates them.
|
|
17
|
+
*/
|
|
18
|
+
export type JsonValueViolation = {
|
|
19
|
+
readonly path: string;
|
|
20
|
+
readonly reason: string;
|
|
21
|
+
};
|
|
22
|
+
/**
|
|
23
|
+
* Returns the first JSON value-domain violation found in `value`, or null
|
|
24
|
+
* when the value is fully JSON-compatible. Pure and total: never throws.
|
|
25
|
+
*/
|
|
26
|
+
export declare function findJsonValueViolation(value: unknown, basePath?: string): JsonValueViolation | null;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@manifesto-ai/core",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.1.1",
|
|
4
4
|
"description": "Manifesto Core - Pure semantic calculator for deterministic state computation",
|
|
5
5
|
"author": "eggplantiny <eggplantiny@gmail.com>",
|
|
6
6
|
"license": "MIT",
|
|
@@ -38,18 +38,18 @@
|
|
|
38
38
|
"zod": "^4.3.6"
|
|
39
39
|
},
|
|
40
40
|
"devDependencies": {
|
|
41
|
-
"typescript": "^
|
|
42
|
-
"vite": "^8.0.
|
|
43
|
-
"vitest": "^4.1.
|
|
44
|
-
"zod": "^4.3
|
|
41
|
+
"typescript": "^6.0.3",
|
|
42
|
+
"vite": "^8.0.16",
|
|
43
|
+
"vitest": "^4.1.9",
|
|
44
|
+
"zod": "^4.4.3",
|
|
45
45
|
"@manifesto-ai/cts-kit": "5.0.0"
|
|
46
46
|
},
|
|
47
47
|
"scripts": {
|
|
48
48
|
"build": "rm -rf dist && tsup && tsc -p tsconfig.build.json --emitDeclarationOnly --declarationMap false --outDir dist",
|
|
49
49
|
"dev": "tsc --watch",
|
|
50
50
|
"clean": "rm -rf dist",
|
|
51
|
-
"lint": "
|
|
52
|
-
"test": "node ../../
|
|
53
|
-
"test:coverage": "node ../../
|
|
51
|
+
"lint": "node ../../scripts/run-biome.mjs check src",
|
|
52
|
+
"test": "node ../../scripts/run-vitest.mjs run",
|
|
53
|
+
"test:coverage": "node ../../scripts/run-vitest.mjs run --coverage"
|
|
54
54
|
}
|
|
55
55
|
}
|