@manifesto-ai/sdk 3.7.0 → 3.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -4,15 +4,7 @@
4
4
 
5
5
  `@manifesto-ai/sdk` is the default package for applications that start with `createManifesto()`.
6
6
 
7
- > **Current Contract Note:** The current SDK contract is the living v3.5.0 activation-first model documented in [docs/sdk-SPEC.md](docs/sdk-SPEC.md). It includes typed `createIntent()` object binding, intent dispatchability queries, `@manifesto-ai/sdk/extensions`, and `createSimulationSession(instance)`.
8
-
9
- ## What This Package Owns
10
-
11
- - `createManifesto()`
12
- - the activation boundary via `activate()`
13
- - the direct-dispatch base runtime returned after activation
14
- - SDK error types
15
- - selected Core pass-through types used by SDK signatures
7
+ > **Current Contract Note:** The current SDK contract is the living v3.6.0 activation-first model documented in [docs/sdk-SPEC.md](docs/sdk-SPEC.md). It includes typed `createIntent()` object binding, intent explanation reads, `@manifesto-ai/sdk/extensions`, and `createSimulationSession(instance)`.
16
8
 
17
9
  ## When to Use It
18
10
 
@@ -20,11 +12,11 @@ Use the SDK when you want:
20
12
 
21
13
  - the shortest path to a running base runtime
22
14
  - typed intent creation through `MEL.actions.*`
23
- - `dispatchAsync`, subscriptions, availability and dispatchability queries, action metadata inspection, static graph inspection, dry-run simulation, and snapshot reads in one package
15
+ - `dispatchAsync`, subscriptions, legality queries, explanation reads, dry-run simulation, and snapshot reads in one package
24
16
  - projected Snapshot reads by default, with canonical inspection available explicitly
25
- - a clear boundary between law composition and runtime execution
17
+ - safe post-activation arbitrary-snapshot tooling through `@manifesto-ai/sdk/extensions`
26
18
 
27
- ## Activation Lifecycle
19
+ ## Smallest Example
28
20
 
29
21
  ```typescript
30
22
  import { createManifesto } from "@manifesto-ai/sdk";
@@ -34,111 +26,16 @@ const instance = manifesto.activate();
34
26
 
35
27
  const intent = instance.createIntent(instance.MEL.actions.increment);
36
28
  await instance.dispatchAsync(intent);
37
-
38
- instance.isActionAvailable("increment");
39
- instance.getAvailableActions();
40
- instance.getSnapshot();
41
- instance.getCanonicalSnapshot();
42
- instance.getSchemaGraph();
43
- instance.simulate(instance.MEL.actions.increment);
29
+ console.log(instance.getSnapshot().data.count);
44
30
  ```
45
31
 
46
- The canonical SDK lifecycle is:
47
-
48
- 1. build a composable manifesto with `createManifesto(schema, effects)`
49
- 2. open it once with `activate()`
50
- 3. create typed intents from `instance.MEL.actions.*`
51
- 4. execute with instance-owned `dispatchAsync()`
52
- 5. observe through `subscribe()` / `on()` and read through `getSnapshot()`
53
-
54
- `getSnapshot()` is the projected application-facing read surface. `getCanonicalSnapshot()` is the explicit escape hatch for full substrate inspection.
55
-
56
- ## Base Runtime Surface
57
-
58
- The activated base runtime exposes:
59
-
60
- - `createIntent`
61
- - `dispatchAsync`
62
- - `subscribe`
63
- - `on`
64
- - `getSnapshot`
65
- - `getCanonicalSnapshot`
66
- - `getAvailableActions`
67
- - `getActionMetadata`
68
- - `isActionAvailable`
69
- - `getSchemaGraph`
70
- - `simulate`
71
- - `MEL`
72
- - `schema`
73
- - `dispose`
74
-
75
- The current post-activation extension seam is `@manifesto-ai/sdk/extensions`, which exposes `getExtensionKernel(instance)` for safe arbitrary-snapshot simulation helpers without exposing the full provider seam.
76
-
77
- `getSchemaGraph()` exposes the projected static dependency graph for the activated schema. `simulate()` is a non-committing dry-run convenience that returns the projected next snapshot, effect requirements, new availability, and sorted `changedPaths`. `changedPaths` is inspection/debug output, not the canonical branching API.
78
-
79
- ## Extension Kernel
80
-
81
- Use `@manifesto-ai/sdk/extensions` when a tool or helper needs to branch from hypothetical canonical snapshots after activation.
82
-
83
- ```typescript
84
- import { getExtensionKernel } from "@manifesto-ai/sdk/extensions";
85
-
86
- const ext = getExtensionKernel(instance);
87
- const root = ext.getCanonicalSnapshot();
88
-
89
- const step1 = ext.simulateSync(
90
- root,
91
- ext.createIntent(ext.MEL.actions.increment),
92
- );
93
-
94
- const branchA = ext.simulateSync(
95
- step1.snapshot,
96
- ext.createIntent(ext.MEL.actions.increment),
97
- );
98
-
99
- const branchB = ext.simulateSync(
100
- step1.snapshot,
101
- ext.createIntent(ext.MEL.actions.add, 5),
102
- );
103
-
104
- const projectedA = ext.projectSnapshot(branchA.snapshot);
105
- const projectedB = ext.projectSnapshot(branchB.snapshot);
106
- ```
107
-
108
- This seam is the intended substrate for simulation-session helpers, branching analysis, and other post-activation hypothetical tooling. It replaces the need for a dedicated outer simulation package at the SDK boundary.
109
-
110
- ## Simulation Session Helper
111
-
112
- `@manifesto-ai/sdk/extensions` also ships a first-party session helper on top of the same substrate:
113
-
114
- ```typescript
115
- import { createSimulationSession } from "@manifesto-ai/sdk/extensions";
116
-
117
- const sim = createSimulationSession(instance);
118
- const step1 = sim.next(instance.MEL.actions.increment);
119
- const branchA = step1.next(instance.MEL.actions.increment);
120
- const branchB = step1.next(instance.MEL.actions.add, 5);
121
- ```
122
-
123
- `createSimulationSession()` is intentionally thin:
124
-
125
- - root session starts from the current canonical snapshot
126
- - `next()` is immutable and returns a new branch
127
- - `snapshot` is projected, `canonicalSnapshot` stays available explicitly
128
- - terminal `pending` / `halted` / `error` sessions cannot advance further
129
-
130
- ## Governed Composition Direction
131
-
132
- SDK no longer re-exports the old World facade or its bootstrap helpers.
133
-
134
- The public direction under ADR-017 is:
135
-
136
- `createManifesto() -> withLineage() -> withGovernance() -> activate()`
32
+ Base runtime reads cover availability, dispatchability, intent explanation, dry-run simulation, subscriptions, events, and both projected and canonical snapshot access.
137
33
 
138
- Those governed runtime contracts land in the owning `@manifesto-ai/lineage` and `@manifesto-ai/governance` packages. Older world-facade docs are historical tombstones rather than current guidance.
34
+ If you need review, approval, or sealed history later, compose `@manifesto-ai/lineage` and `@manifesto-ai/governance` before `activate()`. If you need arbitrary-snapshot tooling after activation, use `@manifesto-ai/sdk/extensions`.
139
35
 
140
36
  ## Docs
141
37
 
38
+ - [Public API Reference](../../docs/api/sdk.md)
142
39
  - [SDK Guide](docs/GUIDE.md)
143
40
  - [SDK Specification](docs/sdk-SPEC.md)
144
41
  - [VERSION-INDEX](docs/VERSION-INDEX.md)
@@ -0,0 +1,2 @@
1
+ var S=class extends Error{code;constructor(n,a,r){super(a,r),this.name="ManifestoError",this.code=n}},X=class extends S{effectType;constructor(n){super("RESERVED_EFFECT",`Effect type "${n}" is reserved and cannot be overridden`),this.name="ReservedEffectError",this.effectType=n}},Y=class extends S{diagnostics;constructor(n,a){super("COMPILE_ERROR",a),this.name="CompileError",this.diagnostics=n}},M=class extends S{constructor(){super("DISPOSED","Cannot use a disposed Manifesto runtime"),this.name="DisposedError"}},O=class extends S{constructor(){super("ALREADY_ACTIVATED","ComposableManifesto.activate() may only be called once"),this.name="AlreadyActivatedError"}};import{apply as ne,applySystemDelta as Fe,computeSync as Ue,getAvailableActions as $e,isActionAvailable as qe,isIntentDispatchable as We,validateIntentInput as Xe}from"@manifesto-ai/core";import{extractSchemaGraph as Ye}from"@manifesto-ai/compiler";import{getHostState as Je}from"@manifesto-ai/host";var Pe=new Set(["$item","$index","$array"]);function st(e){let n=e.computed.fields,a=new Map;function r(l,y){let s=a.get(l);if(s!==void 0)return s;if(y.has(l))return!1;y.add(l);let h=n[l];if(!h)return y.delete(l),a.set(l,!0),!0;for(let u of He(h.expr)){if(_e(u))return y.delete(l),a.set(l,!1),!1;let d=Ge(u,n);if(d!==null&&!r(d,y))return y.delete(l),a.set(l,!1),!1}return y.delete(l),a.set(l,!0),!0}return{visibleComputedKeys:Object.keys(n).filter(l=>r(l,new Set))}}function G(e,n){return{data:Le(e.data),computed:Be(e.computed,n),system:{status:e.system.status,lastError:e.system.lastError},meta:{schemaHash:e.meta.schemaHash}}}function it(e,n){return G(e,n)}function E(e){return ee(structuredClone(e))}function Z(e,n){return ze(e,n)}function Le(e){if(e==null)return e;if(Array.isArray(e)||typeof e!="object")return structuredClone(e);let n={};for(let[a,r]of Object.entries(e))a.startsWith("$")||(n[a]=r);return structuredClone(n)}function Be(e,n){let a={};for(let r of n.visibleComputedKeys)Object.prototype.hasOwnProperty.call(e,r)&&(a[r]=e[r]);return structuredClone(a)}function Ge(e,n){if(Object.prototype.hasOwnProperty.call(n,e))return e;if(!e.startsWith("computed."))return null;let a=e.slice(9);return Object.prototype.hasOwnProperty.call(n,a)?a:null}function Ke(e){return e.startsWith("/")?e.slice(1).replace(/\//g,"."):e}function _e(e){let n=Ke(e),a=n.startsWith("data.")?n.slice(5):n,i=/^([^.[\]]+)/.exec(a)?.[1]??"";return i.startsWith("$")?!Pe.has(i):!1}function He(e){let n=[],a=new WeakSet,r=i=>{if(i==null)return;if(Array.isArray(i)){i.forEach(r);return}if(typeof i!="object")return;let l=i;if(!a.has(l)&&(a.add(l),l.kind!=="lit")){if(l.kind==="get"&&typeof l.path=="string"){n.push(l.path);return}for(let y of Object.values(l))r(y)}};return r(e),n}function ze(e,n){return C(e,n,new WeakMap)}function C(e,n,a){if(Object.is(e,n))return!0;if(typeof e!=typeof n)return!1;if(e===null||n===null)return e===n;if(typeof e!="object"||typeof n!="object")return!1;let r=e,i=n,l=Object.prototype.toString.call(r),y=Object.prototype.toString.call(i);if(l!==y)return!1;let s=a.get(r);if(s?.has(i))return!0;if(s||(s=new WeakSet,a.set(r,s)),s.add(i),Array.isArray(r)&&Array.isArray(i)){if(r.length!==i.length)return!1;for(let d=0;d<r.length;d+=1){let m=Object.prototype.hasOwnProperty.call(r,d),f=Object.prototype.hasOwnProperty.call(i,d);if(m!==f||m&&!C(r[d],i[d],a))return!1}return!0}if(r instanceof Date&&i instanceof Date)return r.getTime()===i.getTime();if(r instanceof RegExp&&i instanceof RegExp)return r.source===i.source&&r.flags===i.flags;if(ArrayBuffer.isView(r)&&ArrayBuffer.isView(i)){if(r.constructor!==i.constructor||r.byteLength!==i.byteLength)return!1;let d=new Uint8Array(r.buffer,r.byteOffset,r.byteLength),m=new Uint8Array(i.buffer,i.byteOffset,i.byteLength);return d.every((f,T)=>f===m[T])}if(r instanceof ArrayBuffer&&i instanceof ArrayBuffer){if(r.byteLength!==i.byteLength)return!1;let d=new Uint8Array(r),m=new Uint8Array(i);return d.every((f,T)=>f===m[T])}if(r instanceof Map&&i instanceof Map){if(r.size!==i.size)return!1;let d=Array.from(r.entries()),m=Array.from(i.entries());return d.every(([f,T],b)=>{let g=m[b];if(!g)return!1;let[x,w]=g;return C(f,x,a)&&C(T,w,a)})}if(r instanceof Set&&i instanceof Set){if(r.size!==i.size)return!1;let d=Array.from(r.values()),m=Array.from(i.values());return d.every((f,T)=>C(f,m[T],a))}let h=J(r),u=J(i);if(h.length!==u.length)return!1;for(let d=0;d<h.length;d+=1){let m=h[d],f=u[d];if(m!==f)return!1;let T=r[m],b=i[f];if(!C(T,b,a))return!1}return!0}function J(e){return Object.keys(e).filter(n=>e[n]!==void 0).sort()}function ee(e,n=new WeakSet){if(e==null||typeof e!="object")return e;if(Q(e))return te(e);let a=e;if(n.has(a)||Object.isFrozen(e))return e;n.add(a);for(let r of Reflect.ownKeys(a)){let i=a[r];if(Q(i)){Ve(a,r,i);continue}ee(i,n)}return Object.freeze(e)}function Q(e){return e instanceof ArrayBuffer||ArrayBuffer.isView(e)}function te(e){return structuredClone(e)}function Ve(e,n,a){let r=Object.getOwnPropertyDescriptor(e,n);!r||!("value"in r)||Object.defineProperty(e,n,{enumerable:r.enumerable??!0,configurable:!1,get(){return te(a)}})}var Qe=Symbol("manifesto-sdk.action-param-names"),yt=Symbol("manifesto-sdk.action-single-param-object-value"),se=Symbol("manifesto-sdk.runtime-kernel-factory"),K=Symbol("manifesto-sdk.activation-state"),k=Symbol("manifesto-sdk.extension-kernel"),Ze=/^(state|computed|action):.+$/;function ie(e){let n=new Set(e.nodes.map(s=>s.id)),a=new Map,r=new Map,i=(s,h,u)=>{let d=s.get(h);if(d){d.add(u);return}s.set(h,new Set([u]))};for(let s of e.edges)i(a,s.from,s.to),i(r,s.to,s.from);let l=s=>{let h=Object.freeze({nodes:Object.freeze(e.nodes.filter(u=>s.has(u.id))),edges:Object.freeze(e.edges.filter(u=>s.has(u.from)&&s.has(u.to)))});return ie(h)},y=(s,h)=>{let u=et(s,n),d=[u],m=new Set([u]),f=h==="incoming"?r:a;for(;d.length>0;){let T=d.shift();if(T)for(let b of f.get(T)??[])m.has(b)||(m.add(b),d.push(b))}return l(m)};return Object.freeze({nodes:e.nodes,edges:e.edges,traceUp(s){return y(s,"incoming")},traceDown(s){return y(s,"outgoing")}})}function et(e,n){if(typeof e=="string"){if(!Ze.test(e))throw new S("SCHEMA_ERROR",'SchemaGraph node id must use "state:<name>", "computed:<name>", or "action:<name>"');if(!n.has(e))throw new S("SCHEMA_ERROR",`Unknown SchemaGraph node id "${e}"`);return e}let a;switch(e.__kind){case"ActionRef":a=`action:${String(e.name)}`;break;case"FieldRef":a=`state:${e.name}`;break;case"ComputedRef":a=`computed:${e.name}`;break;default:throw new S("SCHEMA_ERROR","Unsupported SchemaGraph ref lookup target")}if(!n.has(a))throw new S("SCHEMA_ERROR",`SchemaGraph node "${a}" is not part of the projected graph`);return a}function ae(e,n){let a=new Set,r=new WeakMap,i=(l,y,s)=>{if(Object.is(l,y))return;if(l===null||y===null){a.add(s);return}if(typeof l!="object"||typeof y!="object"){a.add(s);return}let h=l,u=y,d=r.get(h);if(d?.has(u))return;if(d?d.add(u):r.set(h,new WeakSet([u])),Array.isArray(l)||Array.isArray(y)){if(!Array.isArray(l)||!Array.isArray(y)){a.add(s);return}let f=Math.max(l.length,y.length);for(let T=0;T<f;T+=1){let b=Object.prototype.hasOwnProperty.call(l,T),g=Object.prototype.hasOwnProperty.call(y,T),x=`${s}[${T}]`;if(b!==g){a.add(x);continue}!b&&!g||i(l[T],y[T],x)}return}if(!oe(l)||!oe(y)){a.add(s);return}let m=new Set([...Object.keys(l),...Object.keys(y)]);for(let f of[...m].sort()){let T=Object.prototype.hasOwnProperty.call(l,f),b=Object.prototype.hasOwnProperty.call(y,f),g=`${s}.${f}`;if(T!==b){a.add(g);continue}i(l[f],y[f],g)}};return i(e.data,n.data,"data"),i(e.computed,n.computed,"computed"),i(e.system,n.system,"system"),i(e.meta,n.meta,"meta"),Object.freeze([...a].sort())}function oe(e){return Object.prototype.toString.call(e)==="[object Object]"}function ht(e,n,a){Object.defineProperty(e,se,{enumerable:!1,configurable:!1,writable:!1,value:n});let r=a??re(e)??{activated:!1};return re(e)||Object.defineProperty(e,K,{enumerable:!1,configurable:!1,writable:!1,value:r}),e}function mt(e){let a=e[se];if(typeof a!="function")throw new S("SCHEMA_ERROR","ComposableManifesto is missing its runtime kernel factory");return a}function tt(e,n){return Object.defineProperty(e,k,{enumerable:!1,configurable:!1,writable:!1,value:n[k]}),e}function Tt(e){let a=e[k];if(!a)throw new S("SCHEMA_ERROR","Activated runtime is missing its extension kernel");return a}function ce(e){let a=e[K];if(!a)throw new S("SCHEMA_ERROR","ComposableManifesto is missing its activation state");return a}function St(e){if(ce(e).activated)throw new O}function bt(e){let n=ce(e);if(n.activated)throw new O;n.activated=!0}function re(e){return e[K]??null}function nt(e){if(e.params)return e.params;let n=e.input;return!n||n.type!=="object"||!n.fields?[]:Object.keys(n.fields)}function It({schema:e,projectionPlan:n,host:a,hostContextProvider:r,MEL:i,createIntent:l}){let y=a.getSnapshot();if(!y)throw new S("SCHEMA_ERROR","Host failed to initialize its genesis snapshot");function s(t){return E(G(t,n))}let h=structuredClone(y),u=s(h),d=E(h),m=Promise.resolve(),f=!1,T=ie(Ye(e)),b=Object.keys(e.actions),g=Object.freeze(Object.fromEntries(b.map(t=>{let c=e.actions[t],p=i.actions[t]?.[Qe],I=Object.freeze(Array.isArray(p)?[...p]:nt(c));return[t,Object.freeze({name:t,params:I,input:c.input,description:c.description,hasDispatchableGate:c.dispatchable!==void 0})]}))),x=Object.freeze(b.map(t=>g[t])),w=new Set,D=new Map;function le(t,c){if(f)return()=>{};let o,p=!1;try{o=t(u),p=!0}catch{o=void 0,p=!1}let I={selector:t,listener:c,lastValue:o,initialized:p};return w.add(I),()=>{w.delete(I)}}function de(t,c){if(f)return()=>{};let o=D.get(t);return o||(o=new Set,D.set(t,o)),o.add(c),()=>{o?.delete(c)}}function pe(){return u}function _(){return d}function R(t){return Object.freeze([...$e(e,t)])}function ue(){return R(d)}function H(t,c,o){return Object.freeze({layer:t,expression:c,evaluatedResult:!1,...o!==void 0?{description:o}:{}})}let fe=(t=>t!==void 0?g[String(t)]:x);function j(t,c){return qe(e,t,String(c))}function ye(t){return j(d,t)}function N(t,c){return We(e,t,c)}let he=((t,...c)=>N(d,l(t,...c)));function P(t,c){let o=c.type,p=e.actions[o];return p?j(t,o)?N(t,c)?Object.freeze([]):Object.freeze(p.dispatchable?[H("dispatchable",p.dispatchable,p.description)]:[]):Object.freeze(p.available?[H("available",p.available,p.description)]:[]):Object.freeze([])}let me=((t,...c)=>P(d,l(t,...c)));function z(t,c){let o=F(c),p=o.type;if(!j(t,p))return{kind:"unavailable",intent:o,actionName:p};let I=W(t,o);if(I)return{kind:"invalid-input",intent:o,actionName:p,error:I};let A=P(t,o);return A.length>0?{kind:"not-dispatchable",intent:o,actionName:p,blockers:A}:{kind:"admitted",intent:o,actionName:p}}function Te(t,c){let o=z(t,c);if(o.kind==="unavailable")return Object.freeze({kind:"blocked",actionName:o.actionName,available:!1,dispatchable:!1,blockers:P(t,o.intent)});if(o.kind==="invalid-input")throw o.error;if(o.kind==="not-dispatchable")return Object.freeze({kind:"blocked",actionName:o.actionName,available:!0,dispatchable:!1,blockers:o.blockers});let p=L(t,o.intent),I=s(t),A=s(p.snapshot);return Object.freeze({kind:"admitted",actionName:o.actionName,available:!0,dispatchable:!0,status:p.status,requirements:p.requirements,canonicalSnapshot:p.snapshot,snapshot:A,newAvailableActions:R(p.snapshot),changedPaths:ae(I,A)})}function Se(){return T}function be(t,c,o){let I=Je(t.data)?.intentSlots??{},A=c.input===void 0?{type:c.type}:{type:c.type,input:c.input};return ne(e,t,[{op:"merge",path:[{kind:"prop",name:"$host"}],value:{intentSlots:{...I,[c.intentId]:A}}}],o)}function Ie(t){return new S("ACTION_UNAVAILABLE",`Action "${t.type}" is unavailable against the provided canonical snapshot`)}function ge(t){return new S("INTENT_NOT_DISPATCHABLE",`Action "${t.type}" is available, but the bound intent is not dispatchable against the provided canonical snapshot`)}function L(t,c){let o=z(t,c);if(o.kind==="unavailable")throw Ie(o.intent);if(o.kind==="invalid-input")throw o.error;if(o.kind==="not-dispatchable")throw ge(o.intent);let p=o.intent,I=r.createFrozenContext(p.intentId),A=be(structuredClone(t),p,I),v=Ue(e,A,p,I),De=ne(e,A,v.patches,I),Ne=Fe(De,v.systemDelta);return Object.freeze({snapshot:E(Ne),patches:E(v.patches),systemDelta:E(v.systemDelta),status:v.status,requirements:E(v.systemDelta.addRequirements)})}let Ae=((t,...c)=>{let o=L(d,l(t,...c)),p=s(o.snapshot);return Object.freeze({snapshot:p,changedPaths:ae(u,p),newAvailableActions:R(o.snapshot),requirements:o.requirements,status:o.status})});function Ee(){f||(f=!0,w.clear(),D.clear())}function xe(t,c){h=structuredClone(t),a.reset(structuredClone(h)),d=E(h);let o=s(h),p=!Z(o,u);return p&&(u=o),c?.notify!==!1&&p&&Oe(u),u}function we(){a.reset(structuredClone(h))}function V(t,c){let o=D.get(t);if(o)for(let p of o)try{p(c)}catch{}}function ve(t){let c=m.catch(()=>{}).then(t);return m=c.then(()=>{},()=>{}),c}function F(t){return t.intentId&&t.intentId.length>0?t:{...t,intentId:ot()}}async function Ce(t,c){return a.dispatch(t,c)}function U(t){return new S("ACTION_UNAVAILABLE",`Action "${t.type}" is unavailable against the current visible snapshot`)}function $(t){return new S("INTENT_NOT_DISPATCHABLE",`Action "${t.type}" is available, but the bound intent is not dispatchable against the current visible snapshot`)}function q(t){return new S("INVALID_INPUT",t)}function W(t,c){let o=Xe(e,c);return o?q(o):null}function B(t,c){throw V("dispatch:rejected",{intentId:t.intentId??"",intent:t,code:c.code,reason:c.message}),c}function Re(t){return B(t,U(t))}function je(t,c){return B(t,q(c))}function Me(t){return B(t,$(t))}function Oe(t){for(let c of w){let o;try{o=c.selector(t)}catch{continue}if(!(c.initialized&&Object.is(c.lastValue,o))){c.lastValue=o,c.initialized=!0;try{c.listener(o)}catch{}}}}let ke=Object.freeze({MEL:i,schema:e,createIntent:l,getCanonicalSnapshot:_,projectSnapshot:t=>s(t),simulateSync:(t,c)=>{let o=L(t,c);return Object.freeze({snapshot:o.snapshot,patches:o.patches,requirements:o.requirements,status:o.status})},getAvailableActionsFor:R,isActionAvailableFor:j,isIntentDispatchableFor:N,explainIntentFor:Te});return{schema:e,MEL:i,createIntent:l,subscribe:le,on:de,getSnapshot:pe,getAvailableActionsFor:R,getAvailableActions:ue,getIntentBlockersFor:P,getActionMetadata:fe,isActionAvailableFor:j,isActionAvailable:ye,isIntentDispatchableFor:N,isIntentDispatchable:he,getIntentBlockers:me,getSchemaGraph:Se,simulateSync:L,simulate:Ae,dispose:Ee,isDisposed:()=>f,getCanonicalSnapshot:_,getVisibleCoreSnapshot:()=>structuredClone(h),setVisibleSnapshot:xe,restoreVisibleSnapshot:we,emitEvent:V,enqueue:ve,ensureIntentId:F,executeHost:Ce,validateIntentInputFor:W,createUnavailableError:U,createNotDispatchableError:$,rejectInvalidInput:je,rejectUnavailable:Re,rejectNotDispatchable:Me,[k]:ke}}function gt(e){let n=e[k];async function a(s){if(e.isDisposed())throw new M;if(!e.isActionAvailable(s.type))return e.rejectUnavailable(s);let h=e.validateIntentInputFor(e.getCanonicalSnapshot(),s);if(h)return e.rejectInvalidInput(s,h.message);if(!e.isIntentDispatchableFor(e.getCanonicalSnapshot(),s))return e.rejectNotDispatchable(s);let u;try{u=await e.executeHost(s)}catch(m){let f=at(m);throw e.emitEvent("dispatch:failed",{intentId:s.intentId??"",intent:s,error:f}),f}if(u.status==="error"){let m=e.setVisibleSnapshot(u.snapshot),f=u.error??new S("HOST_ERROR","Host dispatch failed");throw e.emitEvent("dispatch:failed",{intentId:s.intentId??"",intent:s,error:f,snapshot:m}),f}let d=e.setVisibleSnapshot(u.snapshot);return e.emitEvent("dispatch:completed",{intentId:s.intentId??"",intent:s,snapshot:d}),d}function r(s){if(e.isDisposed())return Promise.reject(new M);let h=e.ensureIntentId(s);return e.enqueue(()=>a(h))}function i(s){return n.explainIntentFor(e.getCanonicalSnapshot(),s)}function l(s){return i(s)}function y(s){let h=i(s);return h.kind==="blocked"?h.blockers:null}return tt({createIntent:e.createIntent,dispatchAsync:r,subscribe:e.subscribe,on:e.on,getSnapshot:e.getSnapshot,getCanonicalSnapshot:e.getCanonicalSnapshot,getAvailableActions:e.getAvailableActions,isIntentDispatchable:e.isIntentDispatchable,getIntentBlockers:e.getIntentBlockers,explainIntent:i,why:l,whyNot:y,getActionMetadata:e.getActionMetadata,isActionAvailable:e.isActionAvailable,getSchemaGraph:e.getSchemaGraph,simulate:e.simulate,MEL:e.MEL,schema:e.schema,dispose:e.dispose},e)}function at(e){return e instanceof Error?e:new Error(String(e))}function ot(){return typeof crypto<"u"&&typeof crypto.randomUUID=="function"?crypto.randomUUID():"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,e=>{let n=Math.random()*16|0;return(e==="x"?n:n&3|8).toString(16)})}export{S as a,X as b,Y as c,M as d,O as e,st as f,it as g,E as h,Qe as i,yt as j,ht as k,mt as l,tt as m,Tt as n,ce as o,St as p,bt as q,It as r,gt as s};
2
+ //# sourceMappingURL=chunk-WZ4OLF45.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/errors.ts","../src/internal.ts","../src/snapshot-projection.ts"],"sourcesContent":["export class ManifestoError extends Error {\n readonly code: string;\n\n constructor(code: string, message: string, options?: ErrorOptions) {\n super(message, options);\n this.name = \"ManifestoError\";\n this.code = code;\n }\n}\n\nexport class ReservedEffectError extends ManifestoError {\n readonly effectType: string;\n\n constructor(effectType: string) {\n super(\n \"RESERVED_EFFECT\",\n `Effect type \"${effectType}\" is reserved and cannot be overridden`,\n );\n this.name = \"ReservedEffectError\";\n this.effectType = effectType;\n }\n}\n\nexport interface CompileDiagnostic {\n readonly severity: \"error\" | \"warning\" | \"info\";\n readonly code: string;\n readonly message: string;\n readonly location: {\n readonly start: { readonly line: number; readonly column: number; readonly offset: number };\n readonly end: { readonly line: number; readonly column: number; readonly offset: number };\n };\n readonly source?: string;\n readonly suggestion?: string;\n}\n\nexport class CompileError extends ManifestoError {\n readonly diagnostics: readonly CompileDiagnostic[];\n\n constructor(diagnostics: readonly CompileDiagnostic[], formattedMessage: string) {\n super(\"COMPILE_ERROR\", formattedMessage);\n this.name = \"CompileError\";\n this.diagnostics = diagnostics;\n }\n}\n\nexport class DisposedError extends ManifestoError {\n constructor() {\n super(\"DISPOSED\", \"Cannot use a disposed Manifesto runtime\");\n this.name = \"DisposedError\";\n }\n}\n\nexport class AlreadyActivatedError extends ManifestoError {\n constructor() {\n super(\"ALREADY_ACTIVATED\", \"ComposableManifesto.activate() may only be called once\");\n this.name = \"AlreadyActivatedError\";\n }\n}\n","import {\n apply,\n applySystemDelta,\n computeSync,\n getAvailableActions as queryAvailableActions,\n isActionAvailable as queryActionAvailable,\n isIntentDispatchable as queryIntentDispatchable,\n validateIntentInput as queryIntentInputValidation,\n type ComputeStatus,\n type DomainSchema,\n type Patch,\n type Requirement,\n type Snapshot as CoreSnapshot,\n type SystemDelta,\n} from \"@manifesto-ai/core\";\nimport {\n extractSchemaGraph,\n type SchemaGraph as RawSchemaGraph,\n} from \"@manifesto-ai/compiler\";\nimport type {\n HostContextProvider,\n HostResult,\n IntentSlot,\n ManifestoHost,\n} from \"@manifesto-ai/host\";\nimport { getHostState } from \"@manifesto-ai/host\";\n\nimport {\n AlreadyActivatedError,\n DisposedError,\n ManifestoError,\n} from \"./errors.js\";\nimport type {\n BaseLaws,\n CanonicalSnapshot,\n ComposableManifesto,\n DispatchBlocker,\n IntentExplanation,\n ManifestoBaseInstance,\n ManifestoDomainShape,\n ManifestoEvent,\n ManifestoEventMap,\n SchemaGraph,\n SchemaGraphNodeId,\n SchemaGraphNodeRef,\n Selector,\n SimulateResult as ProjectedSimulateResult,\n Snapshot,\n TypedActionMetadata,\n TypedCreateIntent,\n TypedGetActionMetadata,\n TypedGetIntentBlockers,\n TypedIntent,\n TypedIsIntentDispatchable,\n TypedMEL,\n TypedOn,\n TypedSimulate,\n TypedSubscribe,\n Unsubscribe,\n} from \"./types.js\";\nimport {\n cloneAndDeepFreeze,\n projectCanonicalSnapshot,\n projectedSnapshotsEqual,\n type SnapshotProjectionPlan,\n} from \"./snapshot-projection.js\";\nimport type {\n ExtensionKernel,\n ExtensionSimulateResult,\n} from \"./extensions-types.js\";\n\nexport const ACTION_PARAM_NAMES = Symbol(\"manifesto-sdk.action-param-names\");\nexport const ACTION_SINGLE_PARAM_OBJECT_VALUE = Symbol(\"manifesto-sdk.action-single-param-object-value\");\nexport const RUNTIME_KERNEL_FACTORY = Symbol(\"manifesto-sdk.runtime-kernel-factory\");\nexport const ACTIVATION_STATE = Symbol(\"manifesto-sdk.activation-state\");\nexport const EXTENSION_KERNEL = Symbol(\"manifesto-sdk.extension-kernel\");\nconst SCHEMA_GRAPH_NODE_ID_PATTERN = /^(state|computed|action):.+$/;\n\ntype RuntimeActionParamMetadata = readonly string[] | null;\ntype RuntimeActionRef = {\n readonly name: PropertyKey;\n readonly [ACTION_PARAM_NAMES]?: RuntimeActionParamMetadata;\n readonly [ACTION_SINGLE_PARAM_OBJECT_VALUE]?: boolean;\n};\n\nexport type ActivationState = {\n activated: boolean;\n};\n\nexport type HostDispatchOptions = NonNullable<Parameters<ManifestoHost[\"dispatch\"]>[1]>;\n\ninterface Subscriber<TState, R> {\n readonly selector: Selector<TState, R>;\n readonly listener: (value: R) => void;\n lastValue: R | undefined;\n initialized: boolean;\n}\n\nexport type SimulateResult<\n T extends ManifestoDomainShape = ManifestoDomainShape,\n> = {\n readonly snapshot: CanonicalSnapshot<T[\"state\"]>;\n readonly patches: readonly Patch[];\n readonly systemDelta: Readonly<SystemDelta>;\n readonly status: ComputeStatus;\n readonly requirements: readonly Requirement[];\n};\n\nexport interface RuntimeKernel<T extends ManifestoDomainShape> {\n readonly schema: DomainSchema;\n readonly MEL: TypedMEL<T>;\n readonly createIntent: TypedCreateIntent<T>;\n readonly subscribe: TypedSubscribe<T>;\n readonly on: TypedOn<T>;\n readonly getSnapshot: () => Snapshot<T[\"state\"]>;\n readonly getCanonicalSnapshot: () => CanonicalSnapshot<T[\"state\"]>;\n readonly getAvailableActionsFor: (\n snapshot: CanonicalSnapshot<T[\"state\"]>,\n ) => readonly (keyof T[\"actions\"])[];\n readonly getAvailableActions: () => readonly (keyof T[\"actions\"])[];\n readonly getIntentBlockersFor: (\n snapshot: CanonicalSnapshot<T[\"state\"]>,\n intent: TypedIntent<T>,\n ) => readonly DispatchBlocker[];\n readonly getActionMetadata: TypedGetActionMetadata<T>;\n readonly isActionAvailableFor: (\n snapshot: CanonicalSnapshot<T[\"state\"]>,\n name: keyof T[\"actions\"],\n ) => boolean;\n readonly isActionAvailable: (name: keyof T[\"actions\"]) => boolean;\n readonly isIntentDispatchableFor: (\n snapshot: CanonicalSnapshot<T[\"state\"]>,\n intent: TypedIntent<T>,\n ) => boolean;\n readonly isIntentDispatchable: TypedIsIntentDispatchable<T>;\n readonly getIntentBlockers: TypedGetIntentBlockers<T>;\n readonly getSchemaGraph: () => SchemaGraph;\n readonly simulateSync: (\n snapshot: CanonicalSnapshot<T[\"state\"]>,\n intent: TypedIntent<T>,\n ) => SimulateResult<T>;\n readonly simulate: TypedSimulate<T>;\n readonly dispose: () => void;\n readonly isDisposed: () => boolean;\n readonly getVisibleCoreSnapshot: () => CoreSnapshot;\n readonly setVisibleSnapshot: (\n snapshot: CoreSnapshot,\n options?: { readonly notify?: boolean },\n ) => Snapshot<T[\"state\"]>;\n readonly restoreVisibleSnapshot: () => void;\n readonly emitEvent: <K extends ManifestoEvent>(\n event: K,\n payload: ManifestoEventMap<T>[K],\n ) => void;\n readonly enqueue: <R>(task: () => Promise<R>) => Promise<R>;\n readonly ensureIntentId: (intent: TypedIntent<T>) => TypedIntent<T>;\n readonly executeHost: (\n intent: TypedIntent<T>,\n options?: HostDispatchOptions,\n ) => Promise<HostResult>;\n readonly validateIntentInputFor: (\n snapshot: CanonicalSnapshot<T[\"state\"]>,\n intent: TypedIntent<T>,\n ) => ManifestoError | null;\n readonly createUnavailableError: (intent: TypedIntent<T>) => ManifestoError;\n readonly createNotDispatchableError: (intent: TypedIntent<T>) => ManifestoError;\n readonly rejectInvalidInput: (intent: TypedIntent<T>, message: string) => never;\n readonly rejectUnavailable: (intent: TypedIntent<T>) => never;\n readonly rejectNotDispatchable: (intent: TypedIntent<T>) => never;\n readonly [EXTENSION_KERNEL]: ExtensionKernel<T>;\n}\n\nexport type RuntimeKernelFactory<T extends ManifestoDomainShape> = () => RuntimeKernel<T>;\n\nexport type InternalComposableManifesto<\n T extends ManifestoDomainShape,\n Laws extends BaseLaws,\n> = ComposableManifesto<T, Laws> & {\n readonly [RUNTIME_KERNEL_FACTORY]: RuntimeKernelFactory<T>;\n readonly [ACTIVATION_STATE]: ActivationState;\n};\n\ntype ExtensionKernelCarrier<T extends ManifestoDomainShape> = {\n readonly [EXTENSION_KERNEL]: ExtensionKernel<T>;\n};\n\ntype RuntimeKernelOptions<T extends ManifestoDomainShape> = {\n readonly schema: DomainSchema;\n readonly projectionPlan: SnapshotProjectionPlan;\n readonly host: ManifestoHost;\n readonly hostContextProvider: HostContextProvider;\n readonly MEL: TypedMEL<T>;\n readonly createIntent: TypedCreateIntent<T>;\n};\n\nfunction createSdkSchemaGraph(rawGraph: RawSchemaGraph): SchemaGraph {\n const nodeIds = new Set(rawGraph.nodes.map((node) => node.id));\n const outgoing = new Map<SchemaGraphNodeId, Set<SchemaGraphNodeId>>();\n const incoming = new Map<SchemaGraphNodeId, Set<SchemaGraphNodeId>>();\n\n const link = (\n index: Map<SchemaGraphNodeId, Set<SchemaGraphNodeId>>,\n from: SchemaGraphNodeId,\n to: SchemaGraphNodeId,\n ): void => {\n const next = index.get(from);\n if (next) {\n next.add(to);\n return;\n }\n index.set(from, new Set([to]));\n };\n\n for (const edge of rawGraph.edges) {\n link(outgoing, edge.from, edge.to);\n link(incoming, edge.to, edge.from);\n }\n\n const materialize = (included: ReadonlySet<SchemaGraphNodeId>): SchemaGraph => {\n const subgraph: RawSchemaGraph = Object.freeze({\n nodes: Object.freeze(\n rawGraph.nodes.filter((node) => included.has(node.id)),\n ),\n edges: Object.freeze(\n rawGraph.edges.filter(\n (edge) => included.has(edge.from) && included.has(edge.to),\n ),\n ),\n });\n return createSdkSchemaGraph(subgraph);\n };\n\n const trace = (\n target: SchemaGraphNodeRef | SchemaGraphNodeId,\n direction: \"incoming\" | \"outgoing\",\n ): SchemaGraph => {\n const seed = resolveSchemaGraphNodeId(target, nodeIds);\n const frontier: SchemaGraphNodeId[] = [seed];\n const seen = new Set<SchemaGraphNodeId>([seed]);\n const index = direction === \"incoming\" ? incoming : outgoing;\n\n while (frontier.length > 0) {\n const current = frontier.shift();\n if (!current) {\n continue;\n }\n\n for (const next of index.get(current) ?? []) {\n if (seen.has(next)) {\n continue;\n }\n\n seen.add(next);\n frontier.push(next);\n }\n }\n\n return materialize(seen);\n };\n\n return Object.freeze({\n nodes: rawGraph.nodes,\n edges: rawGraph.edges,\n traceUp(target: SchemaGraphNodeRef | SchemaGraphNodeId): SchemaGraph {\n return trace(target, \"incoming\");\n },\n traceDown(target: SchemaGraphNodeRef | SchemaGraphNodeId): SchemaGraph {\n return trace(target, \"outgoing\");\n },\n });\n}\n\nfunction resolveSchemaGraphNodeId(\n target: SchemaGraphNodeRef | SchemaGraphNodeId,\n nodeIds: ReadonlySet<SchemaGraphNodeId>,\n): SchemaGraphNodeId {\n if (typeof target === \"string\") {\n if (!SCHEMA_GRAPH_NODE_ID_PATTERN.test(target)) {\n throw new ManifestoError(\n \"SCHEMA_ERROR\",\n 'SchemaGraph node id must use \"state:<name>\", \"computed:<name>\", or \"action:<name>\"',\n );\n }\n\n if (!nodeIds.has(target as SchemaGraphNodeId)) {\n throw new ManifestoError(\n \"SCHEMA_ERROR\",\n `Unknown SchemaGraph node id \"${target}\"`,\n );\n }\n\n return target as SchemaGraphNodeId;\n }\n\n let nodeId: SchemaGraphNodeId;\n switch (target.__kind) {\n case \"ActionRef\":\n nodeId = `action:${String(target.name)}`;\n break;\n case \"FieldRef\":\n nodeId = `state:${target.name}`;\n break;\n case \"ComputedRef\":\n nodeId = `computed:${target.name}`;\n break;\n default:\n throw new ManifestoError(\n \"SCHEMA_ERROR\",\n \"Unsupported SchemaGraph ref lookup target\",\n );\n }\n\n if (!nodeIds.has(nodeId)) {\n throw new ManifestoError(\n \"SCHEMA_ERROR\",\n `SchemaGraph node \"${nodeId}\" is not part of the projected graph`,\n );\n }\n\n return nodeId;\n}\n\nfunction diffProjectedPaths<T>(\n left: Snapshot<T>,\n right: Snapshot<T>,\n): readonly string[] {\n const paths = new Set<string>();\n const seen = new WeakMap<object, WeakSet<object>>();\n\n const visit = (a: unknown, b: unknown, path: string): void => {\n if (Object.is(a, b)) {\n return;\n }\n\n if (a === null || b === null) {\n paths.add(path);\n return;\n }\n\n if (typeof a !== \"object\" || typeof b !== \"object\") {\n paths.add(path);\n return;\n }\n\n const leftObject = a as object;\n const rightObject = b as object;\n const leftSeen = seen.get(leftObject);\n if (leftSeen?.has(rightObject)) {\n return;\n }\n if (leftSeen) {\n leftSeen.add(rightObject);\n } else {\n seen.set(leftObject, new WeakSet([rightObject]));\n }\n\n if (Array.isArray(a) || Array.isArray(b)) {\n if (!Array.isArray(a) || !Array.isArray(b)) {\n paths.add(path);\n return;\n }\n\n const limit = Math.max(a.length, b.length);\n for (let index = 0; index < limit; index += 1) {\n const leftHas = Object.prototype.hasOwnProperty.call(a, index);\n const rightHas = Object.prototype.hasOwnProperty.call(b, index);\n const childPath = `${path}[${index}]`;\n if (leftHas !== rightHas) {\n paths.add(childPath);\n continue;\n }\n if (!leftHas && !rightHas) {\n continue;\n }\n visit(a[index], b[index], childPath);\n }\n return;\n }\n\n if (!isPlainDiffableObject(a) || !isPlainDiffableObject(b)) {\n paths.add(path);\n return;\n }\n\n const keys = new Set([\n ...Object.keys(a),\n ...Object.keys(b),\n ]);\n for (const key of [...keys].sort()) {\n const leftHas = Object.prototype.hasOwnProperty.call(a, key);\n const rightHas = Object.prototype.hasOwnProperty.call(b, key);\n const childPath = `${path}.${key}`;\n if (leftHas !== rightHas) {\n paths.add(childPath);\n continue;\n }\n visit(\n (a as Record<string, unknown>)[key],\n (b as Record<string, unknown>)[key],\n childPath,\n );\n }\n };\n\n visit(left.data, right.data, \"data\");\n visit(left.computed, right.computed, \"computed\");\n visit(left.system, right.system, \"system\");\n visit(left.meta, right.meta, \"meta\");\n\n return Object.freeze([...paths].sort());\n}\n\nfunction isPlainDiffableObject(value: unknown): value is Record<string, unknown> {\n return Object.prototype.toString.call(value) === \"[object Object]\";\n}\n\nexport function attachRuntimeKernelFactory<\n T extends ManifestoDomainShape,\n Laws extends BaseLaws,\n>(\n manifesto: ComposableManifesto<T, Laws>,\n factory: RuntimeKernelFactory<T>,\n activationState?: ActivationState,\n): InternalComposableManifesto<T, Laws> {\n Object.defineProperty(manifesto, RUNTIME_KERNEL_FACTORY, {\n enumerable: false,\n configurable: false,\n writable: false,\n value: factory,\n });\n\n const state = activationState ?? getExistingActivationState(manifesto) ?? {\n activated: false,\n };\n\n if (!getExistingActivationState(manifesto)) {\n Object.defineProperty(manifesto, ACTIVATION_STATE, {\n enumerable: false,\n configurable: false,\n writable: false,\n value: state,\n });\n }\n\n return manifesto as InternalComposableManifesto<T, Laws>;\n}\n\nexport function getRuntimeKernelFactory<\n T extends ManifestoDomainShape,\n Laws extends BaseLaws,\n>(\n manifesto: ComposableManifesto<T, Laws>,\n): RuntimeKernelFactory<T> {\n const internal = manifesto as Partial<InternalComposableManifesto<T, Laws>>;\n const factory = internal[RUNTIME_KERNEL_FACTORY];\n\n if (typeof factory !== \"function\") {\n throw new ManifestoError(\n \"SCHEMA_ERROR\",\n \"ComposableManifesto is missing its runtime kernel factory\",\n );\n }\n\n return factory;\n}\n\nexport function attachExtensionKernel<\n T extends ManifestoDomainShape,\n TInstance extends object,\n>(\n runtime: TInstance,\n kernel: RuntimeKernel<T>,\n): TInstance {\n Object.defineProperty(runtime, EXTENSION_KERNEL, {\n enumerable: false,\n configurable: false,\n writable: false,\n value: kernel[EXTENSION_KERNEL],\n });\n\n return runtime;\n}\n\nexport function getAttachedExtensionKernel<T extends ManifestoDomainShape>(\n runtime: object,\n): ExtensionKernel<T> {\n const internal = runtime as Partial<ExtensionKernelCarrier<T>>;\n const kernel = internal[EXTENSION_KERNEL];\n\n if (!kernel) {\n throw new ManifestoError(\n \"SCHEMA_ERROR\",\n \"Activated runtime is missing its extension kernel\",\n );\n }\n\n return kernel;\n}\n\nexport function getActivationState<\n T extends ManifestoDomainShape,\n Laws extends BaseLaws,\n>(\n manifesto: ComposableManifesto<T, Laws>,\n): ActivationState {\n const internal = manifesto as Partial<InternalComposableManifesto<T, Laws>>;\n const state = internal[ACTIVATION_STATE];\n\n if (!state) {\n throw new ManifestoError(\n \"SCHEMA_ERROR\",\n \"ComposableManifesto is missing its activation state\",\n );\n }\n\n return state;\n}\n\nexport function assertComposableNotActivated<\n T extends ManifestoDomainShape,\n Laws extends BaseLaws,\n>(\n manifesto: ComposableManifesto<T, Laws>,\n): void {\n if (getActivationState(manifesto).activated) {\n throw new AlreadyActivatedError();\n }\n}\n\nexport function activateComposable<\n T extends ManifestoDomainShape,\n Laws extends BaseLaws,\n>(\n manifesto: ComposableManifesto<T, Laws>,\n): void {\n const state = getActivationState(manifesto);\n if (state.activated) {\n throw new AlreadyActivatedError();\n }\n state.activated = true;\n}\n\nfunction getExistingActivationState<\n T extends ManifestoDomainShape,\n Laws extends BaseLaws,\n>(\n manifesto: ComposableManifesto<T, Laws>,\n): ActivationState | null {\n const internal = manifesto as Partial<InternalComposableManifesto<T, Laws>>;\n return internal[ACTIVATION_STATE] ?? null;\n}\n\nfunction getActionParamNames(\n action: DomainSchema[\"actions\"][string],\n): readonly string[] {\n if (action.params) {\n return action.params;\n }\n\n const input = action.input;\n if (!input || input.type !== \"object\" || !input.fields) {\n return [];\n }\n\n return Object.keys(input.fields);\n}\n\nexport function createRuntimeKernel<T extends ManifestoDomainShape>({\n schema,\n projectionPlan,\n host,\n hostContextProvider,\n MEL,\n createIntent,\n}: RuntimeKernelOptions<T>): RuntimeKernel<T> {\n const initialCanonicalSnapshot = host.getSnapshot();\n if (!initialCanonicalSnapshot) {\n throw new ManifestoError(\"SCHEMA_ERROR\", \"Host failed to initialize its genesis snapshot\");\n }\n\n function projectSnapshotFromCanonical(\n snapshot: CoreSnapshot,\n ): Snapshot<T[\"state\"]> {\n return cloneAndDeepFreeze(\n projectCanonicalSnapshot<T[\"state\"]>(snapshot, projectionPlan),\n );\n }\n\n let visibleCanonicalSnapshot: CoreSnapshot = structuredClone(initialCanonicalSnapshot);\n let visibleProjectedSnapshot = projectSnapshotFromCanonical(\n visibleCanonicalSnapshot,\n );\n let visibleCanonicalReadSnapshot = cloneAndDeepFreeze(\n visibleCanonicalSnapshot as CanonicalSnapshot<T[\"state\"]>,\n );\n let dispatchQueue: Promise<void> = Promise.resolve();\n let disposed = false;\n const schemaGraph = createSdkSchemaGraph(extractSchemaGraph(schema));\n const actionNames = Object.keys(schema.actions) as Array<keyof T[\"actions\"] & string>;\n const actionMetadataByName = Object.freeze(\n Object.fromEntries(\n actionNames.map((name) => {\n const action = schema.actions[name];\n const actionRef = MEL.actions[name] as unknown as RuntimeActionRef | undefined;\n const rawParams = actionRef?.[ACTION_PARAM_NAMES];\n const params = Object.freeze(\n Array.isArray(rawParams) ? [...rawParams] : getActionParamNames(action),\n );\n\n return [name, Object.freeze({\n name,\n params,\n input: action.input,\n description: action.description,\n hasDispatchableGate: action.dispatchable !== undefined,\n })];\n }),\n ),\n ) as Readonly<Record<keyof T[\"actions\"] & string, TypedActionMetadata<T>>>;\n const actionMetadata = Object.freeze(\n actionNames.map((name) => actionMetadataByName[name]),\n ) as readonly TypedActionMetadata<T>[];\n\n const subscribers = new Set<Subscriber<T[\"state\"], unknown>>();\n const eventListeners = new Map<\n ManifestoEvent,\n Set<(payload: ManifestoEventMap<T>[ManifestoEvent]) => void>\n >();\n\n function subscribe<R>(\n selector: Selector<T[\"state\"], R>,\n listener: (value: R) => void,\n ): Unsubscribe {\n if (disposed) {\n return () => {};\n }\n\n let lastValue: R | undefined;\n let initialized = false;\n\n try {\n lastValue = selector(visibleProjectedSnapshot);\n initialized = true;\n } catch {\n lastValue = undefined;\n initialized = false;\n }\n\n const subscriber: Subscriber<T[\"state\"], R> = {\n selector,\n listener,\n lastValue,\n initialized,\n };\n\n subscribers.add(subscriber as Subscriber<T[\"state\"], unknown>);\n return () => {\n subscribers.delete(subscriber as Subscriber<T[\"state\"], unknown>);\n };\n }\n\n function on<K extends ManifestoEvent>(\n event: K,\n handler: (payload: ManifestoEventMap<T>[K]) => void,\n ): Unsubscribe {\n if (disposed) {\n return () => {};\n }\n\n let listeners = eventListeners.get(event);\n if (!listeners) {\n listeners = new Set();\n eventListeners.set(\n event,\n listeners as Set<(payload: ManifestoEventMap<T>[ManifestoEvent]) => void>,\n );\n }\n\n listeners.add(handler as (payload: ManifestoEventMap<T>[ManifestoEvent]) => void);\n return () => {\n listeners?.delete(handler as (payload: ManifestoEventMap<T>[ManifestoEvent]) => void);\n };\n }\n\n function getSnapshot(): Snapshot<T[\"state\"]> {\n return visibleProjectedSnapshot;\n }\n\n function getCanonicalSnapshot(): CanonicalSnapshot<T[\"state\"]> {\n return visibleCanonicalReadSnapshot;\n }\n\n function getAvailableActionsFor(\n snapshot: CanonicalSnapshot<T[\"state\"]>,\n ): readonly (keyof T[\"actions\"])[] {\n return Object.freeze(\n [\n ...queryAvailableActions(schema, snapshot as CoreSnapshot),\n ] as Array<keyof T[\"actions\"]>,\n );\n }\n\n function getAvailableActions(): readonly (keyof T[\"actions\"])[] {\n return getAvailableActionsFor(visibleCanonicalReadSnapshot);\n }\n\n function buildDispatchBlocker(\n layer: DispatchBlocker[\"layer\"],\n expression: DispatchBlocker[\"expression\"],\n description?: string,\n ): DispatchBlocker {\n return Object.freeze({\n layer,\n expression,\n evaluatedResult: false,\n ...(description !== undefined ? { description } : {}),\n }) as DispatchBlocker;\n }\n\n const getActionMetadata: TypedGetActionMetadata<T> = ((name?: keyof T[\"actions\"]) => {\n if (name !== undefined) {\n return actionMetadataByName[String(name) as keyof T[\"actions\"] & string];\n }\n\n return actionMetadata;\n }) as TypedGetActionMetadata<T>;\n\n function isActionAvailableFor(\n snapshot: CanonicalSnapshot<T[\"state\"]>,\n name: keyof T[\"actions\"],\n ): boolean {\n return queryActionAvailable(schema, snapshot as CoreSnapshot, String(name));\n }\n\n function isActionAvailable(name: keyof T[\"actions\"]): boolean {\n return isActionAvailableFor(visibleCanonicalReadSnapshot, name);\n }\n\n function isIntentDispatchableFor(\n snapshot: CanonicalSnapshot<T[\"state\"]>,\n intent: TypedIntent<T>,\n ): boolean {\n return queryIntentDispatchable(schema, snapshot as CoreSnapshot, intent);\n }\n\n const isIntentDispatchable: TypedIsIntentDispatchable<T> = ((\n action,\n ...args\n ) => isIntentDispatchableFor(\n visibleCanonicalReadSnapshot,\n createIntent(action, ...args),\n )) as TypedIsIntentDispatchable<T>;\n\n function getIntentBlockersFor(\n snapshot: CanonicalSnapshot<T[\"state\"]>,\n intent: TypedIntent<T>,\n ): readonly DispatchBlocker[] {\n const actionName = intent.type as keyof T[\"actions\"] & string;\n const action = schema.actions[actionName];\n if (!action) {\n return Object.freeze([]);\n }\n\n if (!isActionAvailableFor(snapshot, actionName)) {\n return Object.freeze(\n action.available\n ? [buildDispatchBlocker(\"available\", action.available, action.description)]\n : [],\n );\n }\n\n if (!isIntentDispatchableFor(snapshot, intent)) {\n return Object.freeze(\n action.dispatchable\n ? [buildDispatchBlocker(\"dispatchable\", action.dispatchable, action.description)]\n : [],\n );\n }\n\n return Object.freeze([]);\n }\n\n const getIntentBlockers: TypedGetIntentBlockers<T> = ((\n action,\n ...args\n ) => getIntentBlockersFor(\n visibleCanonicalReadSnapshot,\n createIntent(action, ...args),\n )) as TypedGetIntentBlockers<T>;\n\n type IntentLegalityEvaluation =\n | {\n readonly kind: \"unavailable\";\n readonly intent: TypedIntent<T>;\n readonly actionName: keyof T[\"actions\"] & string;\n }\n | {\n readonly kind: \"invalid-input\";\n readonly intent: TypedIntent<T>;\n readonly actionName: keyof T[\"actions\"] & string;\n readonly error: ManifestoError;\n }\n | {\n readonly kind: \"not-dispatchable\";\n readonly intent: TypedIntent<T>;\n readonly actionName: keyof T[\"actions\"] & string;\n readonly blockers: readonly DispatchBlocker[];\n }\n | {\n readonly kind: \"admitted\";\n readonly intent: TypedIntent<T>;\n readonly actionName: keyof T[\"actions\"] & string;\n };\n\n function evaluateIntentLegalityFor(\n snapshot: CanonicalSnapshot<T[\"state\"]>,\n intent: TypedIntent<T>,\n ): IntentLegalityEvaluation {\n const enrichedIntent = ensureIntentId(intent);\n const actionName = enrichedIntent.type as keyof T[\"actions\"] & string;\n\n if (!isActionAvailableFor(snapshot, actionName)) {\n return { kind: \"unavailable\", intent: enrichedIntent, actionName };\n }\n\n const invalidInput = validateIntentInputFor(snapshot, enrichedIntent);\n if (invalidInput) {\n return {\n kind: \"invalid-input\",\n intent: enrichedIntent,\n actionName,\n error: invalidInput,\n };\n }\n\n const blockers = getIntentBlockersFor(snapshot, enrichedIntent);\n if (blockers.length > 0) {\n return {\n kind: \"not-dispatchable\",\n intent: enrichedIntent,\n actionName,\n blockers,\n };\n }\n\n return { kind: \"admitted\", intent: enrichedIntent, actionName };\n }\n\n function explainIntentFor(\n snapshot: CanonicalSnapshot<T[\"state\"]>,\n intent: TypedIntent<T>,\n ): IntentExplanation<T> {\n const legality = evaluateIntentLegalityFor(snapshot, intent);\n\n if (legality.kind === \"unavailable\") {\n return Object.freeze({\n kind: \"blocked\",\n actionName: legality.actionName,\n available: false,\n dispatchable: false,\n blockers: getIntentBlockersFor(snapshot, legality.intent),\n }) as IntentExplanation<T>;\n }\n\n if (legality.kind === \"invalid-input\") {\n throw legality.error;\n }\n\n if (legality.kind === \"not-dispatchable\") {\n return Object.freeze({\n kind: \"blocked\",\n actionName: legality.actionName,\n available: true,\n dispatchable: false,\n blockers: legality.blockers,\n }) as IntentExplanation<T>;\n }\n\n const simulated = simulateSync(snapshot, legality.intent);\n const projectedBefore = projectSnapshotFromCanonical(snapshot as CoreSnapshot);\n const projectedAfter = projectSnapshotFromCanonical(simulated.snapshot);\n\n return Object.freeze({\n kind: \"admitted\",\n actionName: legality.actionName,\n available: true,\n dispatchable: true,\n status: simulated.status,\n requirements: simulated.requirements,\n canonicalSnapshot: simulated.snapshot,\n snapshot: projectedAfter,\n newAvailableActions: getAvailableActionsFor(simulated.snapshot),\n changedPaths: diffProjectedPaths(projectedBefore, projectedAfter),\n }) as IntentExplanation<T>;\n }\n\n function getSchemaGraph(): SchemaGraph {\n return schemaGraph;\n }\n\n function withHostIntentSlot(\n snapshot: CoreSnapshot,\n intent: TypedIntent<T>,\n context: ReturnType<HostContextProvider[\"createFrozenContext\"]>,\n ): CoreSnapshot {\n const hostState = getHostState(snapshot.data);\n const intentSlots = hostState?.intentSlots ?? {};\n const intentSlot: IntentSlot = intent.input === undefined\n ? { type: intent.type }\n : { type: intent.type, input: intent.input };\n\n return apply(\n schema,\n snapshot,\n [\n {\n op: \"merge\",\n path: [{ kind: \"prop\", name: \"$host\" }],\n value: {\n intentSlots: {\n ...intentSlots,\n [intent.intentId]: intentSlot,\n },\n },\n },\n ],\n context,\n );\n }\n\n function createSimulationUnavailableError(intent: TypedIntent<T>): ManifestoError {\n return new ManifestoError(\n \"ACTION_UNAVAILABLE\",\n `Action \"${intent.type}\" is unavailable against the provided canonical snapshot`,\n );\n }\n\n function createSimulationNotDispatchableError(intent: TypedIntent<T>): ManifestoError {\n return new ManifestoError(\n \"INTENT_NOT_DISPATCHABLE\",\n `Action \"${intent.type}\" is available, but the bound intent is not dispatchable against the provided canonical snapshot`,\n );\n }\n\n function simulateSync(\n snapshot: CanonicalSnapshot<T[\"state\"]>,\n intent: TypedIntent<T>,\n ): SimulateResult<T> {\n const legality = evaluateIntentLegalityFor(snapshot, intent);\n if (legality.kind === \"unavailable\") {\n throw createSimulationUnavailableError(legality.intent);\n }\n if (legality.kind === \"invalid-input\") {\n throw legality.error;\n }\n if (legality.kind === \"not-dispatchable\") {\n throw createSimulationNotDispatchableError(legality.intent);\n }\n const enrichedIntent = legality.intent;\n\n const context = hostContextProvider.createFrozenContext(enrichedIntent.intentId);\n const baseline = withHostIntentSlot(\n structuredClone(snapshot as CoreSnapshot),\n enrichedIntent,\n context,\n );\n const result = computeSync(schema, baseline, enrichedIntent, context);\n const afterPatches = apply(schema, baseline, result.patches, context);\n const canonicalSimulated = applySystemDelta(afterPatches, result.systemDelta);\n\n return Object.freeze({\n snapshot: cloneAndDeepFreeze(\n canonicalSimulated as CanonicalSnapshot<T[\"state\"]>,\n ),\n patches: cloneAndDeepFreeze(result.patches),\n systemDelta: cloneAndDeepFreeze(result.systemDelta),\n status: result.status,\n requirements: cloneAndDeepFreeze(result.systemDelta.addRequirements),\n }) as SimulateResult<T>;\n }\n\n const simulate: TypedSimulate<T> = ((\n action,\n ...args\n ) => {\n const simulated = simulateSync(\n visibleCanonicalReadSnapshot,\n createIntent(action, ...args),\n );\n const projectedSimulated = projectSnapshotFromCanonical(simulated.snapshot);\n\n return Object.freeze({\n snapshot: projectedSimulated,\n changedPaths: diffProjectedPaths(visibleProjectedSnapshot, projectedSimulated),\n newAvailableActions: getAvailableActionsFor(simulated.snapshot),\n requirements: simulated.requirements,\n status: simulated.status,\n }) as ProjectedSimulateResult<T>;\n }) as TypedSimulate<T>;\n\n function dispose(): void {\n if (disposed) {\n return;\n }\n\n disposed = true;\n subscribers.clear();\n eventListeners.clear();\n }\n\n function setVisibleSnapshot(\n snapshot: CoreSnapshot,\n options?: { readonly notify?: boolean },\n ): Snapshot<T[\"state\"]> {\n visibleCanonicalSnapshot = structuredClone(snapshot);\n host.reset(structuredClone(visibleCanonicalSnapshot));\n visibleCanonicalReadSnapshot = cloneAndDeepFreeze(\n visibleCanonicalSnapshot as CanonicalSnapshot<T[\"state\"]>,\n );\n\n const nextProjectedSnapshot = projectSnapshotFromCanonical(\n visibleCanonicalSnapshot,\n );\n const projectedChanged = !projectedSnapshotsEqual(\n nextProjectedSnapshot,\n visibleProjectedSnapshot,\n );\n\n if (projectedChanged) {\n visibleProjectedSnapshot = nextProjectedSnapshot;\n }\n\n if (options?.notify !== false && projectedChanged) {\n notifySubscribers(visibleProjectedSnapshot);\n }\n return visibleProjectedSnapshot;\n }\n\n function restoreVisibleSnapshot(): void {\n host.reset(structuredClone(visibleCanonicalSnapshot));\n }\n\n function emitEvent<K extends ManifestoEvent>(\n event: K,\n payload: ManifestoEventMap<T>[K],\n ): void {\n const listeners = eventListeners.get(event);\n if (!listeners) {\n return;\n }\n\n for (const handler of listeners) {\n try {\n handler(payload);\n } catch {\n // Event handler failures are isolated from runtime semantics.\n }\n }\n }\n\n function enqueue<R>(task: () => Promise<R>): Promise<R> {\n const result = dispatchQueue\n .catch(() => {})\n .then(task);\n\n dispatchQueue = result.then(() => undefined, () => undefined);\n return result;\n }\n\n function ensureIntentId(intent: TypedIntent<T>): TypedIntent<T> {\n if (intent.intentId && intent.intentId.length > 0) {\n return intent;\n }\n\n return {\n ...intent,\n intentId: generateUUID(),\n } as TypedIntent<T>;\n }\n\n async function executeHost(\n intent: TypedIntent<T>,\n options?: HostDispatchOptions,\n ): Promise<HostResult> {\n return host.dispatch(intent, options);\n }\n\n function createUnavailableError(intent: TypedIntent<T>): ManifestoError {\n return new ManifestoError(\n \"ACTION_UNAVAILABLE\",\n `Action \"${intent.type}\" is unavailable against the current visible snapshot`,\n );\n }\n\n function createNotDispatchableError(intent: TypedIntent<T>): ManifestoError {\n return new ManifestoError(\n \"INTENT_NOT_DISPATCHABLE\",\n `Action \"${intent.type}\" is available, but the bound intent is not dispatchable against the current visible snapshot`,\n );\n }\n\n function createInvalidInputError(message: string): ManifestoError {\n return new ManifestoError(\"INVALID_INPUT\", message);\n }\n\n function validateIntentInputFor(\n snapshot: CanonicalSnapshot<T[\"state\"]>,\n intent: TypedIntent<T>,\n ): ManifestoError | null {\n void snapshot;\n const message = queryIntentInputValidation(schema, intent);\n return message ? createInvalidInputError(message) : null;\n }\n\n function rejectRejectedIntent(intent: TypedIntent<T>, error: ManifestoError): never {\n emitEvent(\"dispatch:rejected\", {\n intentId: intent.intentId ?? \"\",\n intent,\n code: error.code as ManifestoEventMap<T>[\"dispatch:rejected\"][\"code\"],\n reason: error.message,\n });\n throw error;\n }\n\n function rejectUnavailable(intent: TypedIntent<T>): never {\n return rejectRejectedIntent(intent, createUnavailableError(intent));\n }\n\n function rejectInvalidInput(intent: TypedIntent<T>, message: string): never {\n return rejectRejectedIntent(intent, createInvalidInputError(message));\n }\n\n function rejectNotDispatchable(intent: TypedIntent<T>): never {\n return rejectRejectedIntent(intent, createNotDispatchableError(intent));\n }\n\n function notifySubscribers(snapshot: Snapshot<T[\"state\"]>): void {\n for (const subscriber of subscribers) {\n let selected: unknown;\n try {\n selected = subscriber.selector(snapshot);\n } catch {\n continue;\n }\n\n if (subscriber.initialized && Object.is(subscriber.lastValue, selected)) {\n continue;\n }\n\n subscriber.lastValue = selected;\n subscriber.initialized = true;\n\n try {\n subscriber.listener(selected);\n } catch {\n // Listener failures are isolated from runtime semantics.\n }\n }\n }\n\n const extensionKernel = Object.freeze({\n MEL,\n schema,\n createIntent,\n getCanonicalSnapshot,\n projectSnapshot: (\n snapshot: CanonicalSnapshot<T[\"state\"]>,\n ): Snapshot<T[\"state\"]> => projectSnapshotFromCanonical(snapshot),\n simulateSync: (\n snapshot: CanonicalSnapshot<T[\"state\"]>,\n intent: TypedIntent<T>,\n ): ExtensionSimulateResult<T> => {\n const result = simulateSync(snapshot, intent);\n return Object.freeze({\n snapshot: result.snapshot,\n patches: result.patches,\n requirements: result.requirements,\n status: result.status,\n }) as ExtensionSimulateResult<T>;\n },\n getAvailableActionsFor,\n isActionAvailableFor,\n isIntentDispatchableFor,\n explainIntentFor,\n }) as ExtensionKernel<T>;\n\n return {\n schema,\n MEL,\n createIntent,\n subscribe,\n on,\n getSnapshot,\n getAvailableActionsFor,\n getAvailableActions,\n getIntentBlockersFor,\n getActionMetadata,\n isActionAvailableFor,\n isActionAvailable,\n isIntentDispatchableFor,\n isIntentDispatchable,\n getIntentBlockers,\n getSchemaGraph,\n simulateSync,\n simulate,\n dispose,\n isDisposed: () => disposed,\n getCanonicalSnapshot,\n getVisibleCoreSnapshot: () => structuredClone(visibleCanonicalSnapshot),\n setVisibleSnapshot,\n restoreVisibleSnapshot,\n emitEvent,\n enqueue,\n ensureIntentId,\n executeHost,\n validateIntentInputFor,\n createUnavailableError,\n createNotDispatchableError,\n rejectInvalidInput,\n rejectUnavailable,\n rejectNotDispatchable,\n [EXTENSION_KERNEL]: extensionKernel,\n };\n}\n\nexport function createBaseRuntimeInstance<T extends ManifestoDomainShape>(\n kernel: RuntimeKernel<T>,\n): ManifestoBaseInstance<T> {\n const extensionKernel = kernel[EXTENSION_KERNEL];\n\n async function processIntent(intent: TypedIntent<T>): Promise<Snapshot<T[\"state\"]>> {\n if (kernel.isDisposed()) {\n throw new DisposedError();\n }\n\n if (!kernel.isActionAvailable(intent.type as keyof T[\"actions\"])) {\n return kernel.rejectUnavailable(intent);\n }\n const invalidInput = kernel.validateIntentInputFor(kernel.getCanonicalSnapshot(), intent);\n if (invalidInput) {\n return kernel.rejectInvalidInput(intent, invalidInput.message);\n }\n if (!kernel.isIntentDispatchableFor(kernel.getCanonicalSnapshot(), intent)) {\n return kernel.rejectNotDispatchable(intent);\n }\n\n let result: HostResult;\n try {\n result = await kernel.executeHost(intent);\n } catch (error) {\n const failure = toError(error);\n kernel.emitEvent(\"dispatch:failed\", {\n intentId: intent.intentId ?? \"\",\n intent,\n error: failure,\n });\n throw failure;\n }\n\n if (result.status === \"error\") {\n const publishedSnapshot = kernel.setVisibleSnapshot(result.snapshot);\n const failure = result.error ?? new ManifestoError(\"HOST_ERROR\", \"Host dispatch failed\");\n kernel.emitEvent(\"dispatch:failed\", {\n intentId: intent.intentId ?? \"\",\n intent,\n error: failure,\n snapshot: publishedSnapshot,\n });\n throw failure;\n }\n\n const publishedSnapshot = kernel.setVisibleSnapshot(result.snapshot);\n kernel.emitEvent(\"dispatch:completed\", {\n intentId: intent.intentId ?? \"\",\n intent,\n snapshot: publishedSnapshot,\n });\n return publishedSnapshot;\n }\n\n function dispatchAsync(intent: TypedIntent<T>): Promise<Snapshot<T[\"state\"]>> {\n if (kernel.isDisposed()) {\n return Promise.reject(new DisposedError());\n }\n\n const enrichedIntent = kernel.ensureIntentId(intent);\n return kernel.enqueue(() => processIntent(enrichedIntent));\n }\n\n function explainIntent(intent: TypedIntent<T>): IntentExplanation<T> {\n return extensionKernel.explainIntentFor(kernel.getCanonicalSnapshot(), intent);\n }\n\n function why(intent: TypedIntent<T>): IntentExplanation<T> {\n return explainIntent(intent);\n }\n\n function whyNot(intent: TypedIntent<T>): readonly DispatchBlocker[] | null {\n const explanation = explainIntent(intent);\n return explanation.kind === \"blocked\" ? explanation.blockers : null;\n }\n\n return attachExtensionKernel({\n createIntent: kernel.createIntent,\n dispatchAsync,\n subscribe: kernel.subscribe,\n on: kernel.on,\n getSnapshot: kernel.getSnapshot,\n getCanonicalSnapshot: kernel.getCanonicalSnapshot,\n getAvailableActions: kernel.getAvailableActions,\n isIntentDispatchable: kernel.isIntentDispatchable,\n getIntentBlockers: kernel.getIntentBlockers,\n explainIntent,\n why,\n whyNot,\n getActionMetadata: kernel.getActionMetadata,\n isActionAvailable: kernel.isActionAvailable,\n getSchemaGraph: kernel.getSchemaGraph,\n simulate: kernel.simulate,\n MEL: kernel.MEL,\n schema: kernel.schema,\n dispose: kernel.dispose,\n }, kernel);\n}\n\nfunction toError(error: unknown): Error {\n return error instanceof Error\n ? error\n : new Error(String(error));\n}\n\nfunction generateUUID(): string {\n if (typeof crypto !== \"undefined\" && typeof crypto.randomUUID === \"function\") {\n return crypto.randomUUID();\n }\n\n return \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replace(/[xy]/g, (char) => {\n const random = (Math.random() * 16) | 0;\n const value = char === \"x\" ? random : (random & 0x3) | 0x8;\n return value.toString(16);\n });\n}\n","import {\n type DomainSchema,\n type Snapshot as CoreSnapshot,\n} from \"@manifesto-ai/core\";\n\nexport type CanonicalPlatformNamespaces = {\n $host?: Record<string, unknown>;\n $mel?: Record<string, unknown>;\n [k: `$${string}`]: unknown;\n};\n\nexport type Snapshot<T = unknown> = {\n data: T;\n computed: Record<string, unknown>;\n system: Pick<CoreSnapshot[\"system\"], \"status\" | \"lastError\">;\n meta: Pick<CoreSnapshot[\"meta\"], \"schemaHash\">;\n};\n\nexport type CanonicalSnapshot<T = unknown> =\n Omit<CoreSnapshot, \"data\"> & {\n data: T & CanonicalPlatformNamespaces;\n };\n\nexport type SnapshotProjectionPlan = {\n visibleComputedKeys: readonly string[];\n};\n\nconst COLLECTION_CONTEXT_ROOTS = new Set([\"$item\", \"$index\", \"$array\"]);\n\nexport function buildSnapshotProjectionPlan(\n schema: DomainSchema,\n): SnapshotProjectionPlan {\n const computedFields = schema.computed.fields;\n const memo = new Map<string, boolean>();\n\n function isVisibleComputed(\n name: string,\n visiting: Set<string>,\n ): boolean {\n const cached = memo.get(name);\n if (cached !== undefined) {\n return cached;\n }\n\n if (visiting.has(name)) {\n return false;\n }\n\n visiting.add(name);\n\n const field = computedFields[name];\n if (!field) {\n visiting.delete(name);\n memo.set(name, true);\n return true;\n }\n\n for (const path of collectExprGetPaths(field.expr)) {\n if (isPlatformDependency(path)) {\n visiting.delete(name);\n memo.set(name, false);\n return false;\n }\n\n const computedDependency = resolveComputedDependency(path, computedFields);\n if (\n computedDependency !== null\n && !isVisibleComputed(computedDependency, visiting)\n ) {\n visiting.delete(name);\n memo.set(name, false);\n return false;\n }\n }\n\n visiting.delete(name);\n memo.set(name, true);\n return true;\n }\n\n const visibleComputedKeys = Object.keys(computedFields)\n .filter((name) => isVisibleComputed(name, new Set()));\n\n return {\n visibleComputedKeys,\n };\n}\n\nexport function projectCanonicalSnapshot<T = unknown>(\n snapshot: CoreSnapshot,\n plan: SnapshotProjectionPlan,\n): Snapshot<T> {\n return {\n data: projectData<T>(snapshot.data),\n computed: projectComputed(snapshot.computed, plan),\n system: {\n status: snapshot.system.status,\n lastError: snapshot.system.lastError,\n },\n meta: {\n schemaHash: snapshot.meta.schemaHash,\n },\n };\n}\n\nexport function projectEffectContextSnapshot<T = unknown>(\n snapshot: CoreSnapshot,\n plan: SnapshotProjectionPlan,\n): Snapshot<T> {\n return projectCanonicalSnapshot<T>(snapshot, plan);\n}\n\nexport function cloneAndDeepFreeze<T>(value: T): T {\n return deepFreeze(structuredClone(value));\n}\n\nexport function projectedSnapshotsEqual<T>(\n left: Snapshot<T>,\n right: Snapshot<T>,\n): boolean {\n return cycleSafeEqual(left, right);\n}\n\nfunction projectData<T>(data: unknown): T {\n if (data === null || data === undefined) {\n return data as T;\n }\n\n if (Array.isArray(data) || typeof data !== \"object\") {\n return structuredClone(data) as T;\n }\n\n const projected: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(data as Record<string, unknown>)) {\n if (!key.startsWith(\"$\")) {\n projected[key] = value;\n }\n }\n\n return structuredClone(projected) as T;\n}\n\nfunction projectComputed(\n computed: CoreSnapshot[\"computed\"],\n plan: SnapshotProjectionPlan,\n): Snapshot[\"computed\"] {\n const projected: Record<string, unknown> = {};\n\n for (const key of plan.visibleComputedKeys) {\n if (Object.prototype.hasOwnProperty.call(computed, key)) {\n projected[key] = computed[key];\n }\n }\n\n return structuredClone(projected);\n}\n\nfunction resolveComputedDependency(\n dep: string,\n computedFields: DomainSchema[\"computed\"][\"fields\"],\n): string | null {\n if (Object.prototype.hasOwnProperty.call(computedFields, dep)) {\n return dep;\n }\n\n if (!dep.startsWith(\"computed.\")) {\n return null;\n }\n\n const candidate = dep.slice(\"computed.\".length);\n return Object.prototype.hasOwnProperty.call(computedFields, candidate)\n ? candidate\n : null;\n}\n\nfunction normalizeSemanticPath(path: string): string {\n if (path.startsWith(\"/\")) {\n return path.slice(1).replace(/\\//g, \".\");\n }\n\n return path;\n}\n\nfunction isPlatformDependency(dep: string): boolean {\n const normalized = normalizeSemanticPath(dep);\n const withoutDataRoot = normalized.startsWith(\"data.\")\n ? normalized.slice(\"data.\".length)\n : normalized;\n const match = /^([^.[\\]]+)/.exec(withoutDataRoot);\n const root = match?.[1] ?? \"\";\n if (!root.startsWith(\"$\")) {\n return false;\n }\n\n return !COLLECTION_CONTEXT_ROOTS.has(root);\n}\n\nfunction collectExprGetPaths(expr: unknown): string[] {\n const paths: string[] = [];\n const seen = new WeakSet<object>();\n\n const visit = (node: unknown): void => {\n if (node === null || node === undefined) {\n return;\n }\n\n if (Array.isArray(node)) {\n node.forEach(visit);\n return;\n }\n\n if (typeof node !== \"object\") {\n return;\n }\n\n const objectNode = node as Record<string, unknown>;\n if (seen.has(objectNode)) {\n return;\n }\n seen.add(objectNode);\n\n if (objectNode.kind === \"lit\") {\n return;\n }\n\n if (objectNode.kind === \"get\" && typeof objectNode.path === \"string\") {\n paths.push(objectNode.path);\n return;\n }\n\n for (const value of Object.values(objectNode)) {\n visit(value);\n }\n };\n\n visit(expr);\n return paths;\n}\n\nfunction cycleSafeEqual(left: unknown, right: unknown): boolean {\n return cycleSafeEqualInternal(left, right, new WeakMap<object, WeakSet<object>>());\n}\n\nfunction cycleSafeEqualInternal(\n left: unknown,\n right: unknown,\n seen: WeakMap<object, WeakSet<object>>,\n): boolean {\n if (Object.is(left, right)) {\n return true;\n }\n\n if (typeof left !== typeof right) {\n return false;\n }\n\n if (left === null || right === null) {\n return left === right;\n }\n\n if (typeof left !== \"object\" || typeof right !== \"object\") {\n return false;\n }\n\n const leftObject = left as object;\n const rightObject = right as object;\n const leftTag = Object.prototype.toString.call(leftObject);\n const rightTag = Object.prototype.toString.call(rightObject);\n\n if (leftTag !== rightTag) {\n return false;\n }\n\n let seenRight = seen.get(leftObject);\n if (seenRight?.has(rightObject)) {\n return true;\n }\n\n if (!seenRight) {\n seenRight = new WeakSet<object>();\n seen.set(leftObject, seenRight);\n }\n seenRight.add(rightObject);\n\n if (Array.isArray(leftObject) && Array.isArray(rightObject)) {\n if (leftObject.length !== rightObject.length) {\n return false;\n }\n\n for (let index = 0; index < leftObject.length; index += 1) {\n const leftHasValue = Object.prototype.hasOwnProperty.call(leftObject, index);\n const rightHasValue = Object.prototype.hasOwnProperty.call(rightObject, index);\n\n if (leftHasValue !== rightHasValue) {\n return false;\n }\n\n if (\n leftHasValue\n && !cycleSafeEqualInternal(leftObject[index], rightObject[index], seen)\n ) {\n return false;\n }\n }\n\n return true;\n }\n\n if (leftObject instanceof Date && rightObject instanceof Date) {\n return leftObject.getTime() === rightObject.getTime();\n }\n\n if (leftObject instanceof RegExp && rightObject instanceof RegExp) {\n return leftObject.source === rightObject.source\n && leftObject.flags === rightObject.flags;\n }\n\n if (ArrayBuffer.isView(leftObject) && ArrayBuffer.isView(rightObject)) {\n if (leftObject.constructor !== rightObject.constructor) {\n return false;\n }\n\n if (leftObject.byteLength !== rightObject.byteLength) {\n return false;\n }\n\n const leftBytes = new Uint8Array(\n leftObject.buffer,\n leftObject.byteOffset,\n leftObject.byteLength,\n );\n const rightBytes = new Uint8Array(\n rightObject.buffer,\n rightObject.byteOffset,\n rightObject.byteLength,\n );\n\n return leftBytes.every((value, index) => value === rightBytes[index]);\n }\n\n if (leftObject instanceof ArrayBuffer && rightObject instanceof ArrayBuffer) {\n if (leftObject.byteLength !== rightObject.byteLength) {\n return false;\n }\n\n const leftBytes = new Uint8Array(leftObject);\n const rightBytes = new Uint8Array(rightObject);\n return leftBytes.every((value, index) => value === rightBytes[index]);\n }\n\n if (leftObject instanceof Map && rightObject instanceof Map) {\n if (leftObject.size !== rightObject.size) {\n return false;\n }\n\n const leftEntries = Array.from(leftObject.entries());\n const rightEntries = Array.from(rightObject.entries());\n\n return leftEntries.every(([leftKey, leftValue], index) => {\n const rightEntry = rightEntries[index];\n if (!rightEntry) {\n return false;\n }\n\n const [rightKey, rightValue] = rightEntry;\n return cycleSafeEqualInternal(leftKey, rightKey, seen)\n && cycleSafeEqualInternal(leftValue, rightValue, seen);\n });\n }\n\n if (leftObject instanceof Set && rightObject instanceof Set) {\n if (leftObject.size !== rightObject.size) {\n return false;\n }\n\n const leftValues = Array.from(leftObject.values());\n const rightValues = Array.from(rightObject.values());\n\n return leftValues.every((value, index) =>\n cycleSafeEqualInternal(value, rightValues[index], seen));\n }\n\n const leftKeys = getComparableObjectKeys(leftObject);\n const rightKeys = getComparableObjectKeys(rightObject);\n\n if (leftKeys.length !== rightKeys.length) {\n return false;\n }\n\n for (let index = 0; index < leftKeys.length; index += 1) {\n const leftKey = leftKeys[index];\n const rightKey = rightKeys[index];\n if (leftKey !== rightKey) {\n return false;\n }\n\n const leftValue = (leftObject as Record<string, unknown>)[leftKey];\n const rightValue = (rightObject as Record<string, unknown>)[rightKey];\n if (!cycleSafeEqualInternal(leftValue, rightValue, seen)) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction getComparableObjectKeys(value: object): string[] {\n return Object.keys(value as Record<string, unknown>)\n .filter((key) => (value as Record<string, unknown>)[key] !== undefined)\n .sort();\n}\n\nfunction deepFreeze<T>(value: T, seen = new WeakSet<object>()): T {\n if (value === null || value === undefined || typeof value !== \"object\") {\n return value;\n }\n\n if (isBinaryValue(value)) {\n return cloneBinaryValue(value) as T;\n }\n\n const objectValue = value as Record<PropertyKey, unknown>;\n\n if (seen.has(objectValue)) {\n return value;\n }\n\n if (Object.isFrozen(value)) {\n return value;\n }\n\n seen.add(objectValue);\n\n for (const key of Reflect.ownKeys(objectValue)) {\n const child = objectValue[key];\n if (isBinaryValue(child)) {\n defineReadOnlyBinaryProperty(objectValue, key, child);\n continue;\n }\n deepFreeze(child, seen);\n }\n\n return Object.freeze(value);\n}\n\nfunction isBinaryValue(value: unknown): value is ArrayBuffer | ArrayBufferView {\n return value instanceof ArrayBuffer || ArrayBuffer.isView(value);\n}\n\nfunction cloneBinaryValue<T extends ArrayBuffer | ArrayBufferView>(value: T): T {\n return structuredClone(value);\n}\n\nfunction defineReadOnlyBinaryProperty(\n target: Record<PropertyKey, unknown>,\n key: PropertyKey,\n value: ArrayBuffer | ArrayBufferView,\n): void {\n const descriptor = Object.getOwnPropertyDescriptor(target, key);\n if (!descriptor || !(\"value\" in descriptor)) {\n return;\n }\n\n Object.defineProperty(target, key, {\n enumerable: descriptor.enumerable ?? true,\n configurable: false,\n get() {\n return cloneBinaryValue(value);\n },\n });\n}\n"],"mappings":"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","names":["ManifestoError","code","message","options","ReservedEffectError","effectType","CompileError","diagnostics","formattedMessage","DisposedError","AlreadyActivatedError","apply","applySystemDelta","computeSync","queryAvailableActions","queryActionAvailable","queryIntentDispatchable","queryIntentInputValidation","extractSchemaGraph","getHostState","COLLECTION_CONTEXT_ROOTS","buildSnapshotProjectionPlan","schema","computedFields","memo","isVisibleComputed","name","visiting","cached","field","path","collectExprGetPaths","isPlatformDependency","computedDependency","resolveComputedDependency","projectCanonicalSnapshot","snapshot","plan","projectData","projectComputed","projectEffectContextSnapshot","cloneAndDeepFreeze","value","deepFreeze","projectedSnapshotsEqual","left","right","cycleSafeEqual","data","projected","key","computed","dep","candidate","normalizeSemanticPath","normalized","withoutDataRoot","root","expr","paths","seen","visit","node","objectNode","cycleSafeEqualInternal","leftObject","rightObject","leftTag","rightTag","seenRight","index","leftHasValue","rightHasValue","leftBytes","rightBytes","leftEntries","rightEntries","leftKey","leftValue","rightEntry","rightKey","rightValue","leftValues","rightValues","leftKeys","getComparableObjectKeys","rightKeys","isBinaryValue","cloneBinaryValue","objectValue","child","defineReadOnlyBinaryProperty","target","descriptor","ACTION_PARAM_NAMES","ACTION_SINGLE_PARAM_OBJECT_VALUE","RUNTIME_KERNEL_FACTORY","ACTIVATION_STATE","EXTENSION_KERNEL","SCHEMA_GRAPH_NODE_ID_PATTERN","createSdkSchemaGraph","rawGraph","nodeIds","node","outgoing","incoming","link","index","from","to","next","edge","materialize","included","subgraph","trace","target","direction","seed","resolveSchemaGraphNodeId","frontier","seen","current","ManifestoError","nodeId","diffProjectedPaths","left","right","paths","visit","a","b","path","leftObject","rightObject","leftSeen","limit","leftHas","rightHas","childPath","isPlainDiffableObject","keys","key","value","attachRuntimeKernelFactory","manifesto","factory","activationState","state","getExistingActivationState","getRuntimeKernelFactory","attachExtensionKernel","runtime","kernel","getAttachedExtensionKernel","getActivationState","assertComposableNotActivated","AlreadyActivatedError","activateComposable","getActionParamNames","action","input","createRuntimeKernel","schema","projectionPlan","host","hostContextProvider","MEL","createIntent","initialCanonicalSnapshot","projectSnapshotFromCanonical","snapshot","cloneAndDeepFreeze","projectCanonicalSnapshot","visibleCanonicalSnapshot","visibleProjectedSnapshot","visibleCanonicalReadSnapshot","dispatchQueue","disposed","schemaGraph","extractSchemaGraph","actionNames","actionMetadataByName","name","rawParams","params","actionMetadata","subscribers","eventListeners","subscribe","selector","listener","lastValue","initialized","subscriber","on","event","handler","listeners","getSnapshot","getCanonicalSnapshot","getAvailableActionsFor","queryAvailableActions","getAvailableActions","buildDispatchBlocker","layer","expression","description","getActionMetadata","isActionAvailableFor","queryActionAvailable","isActionAvailable","isIntentDispatchableFor","intent","queryIntentDispatchable","isIntentDispatchable","args","getIntentBlockersFor","actionName","getIntentBlockers","evaluateIntentLegalityFor","enrichedIntent","ensureIntentId","invalidInput","validateIntentInputFor","blockers","explainIntentFor","legality","simulated","simulateSync","projectedBefore","projectedAfter","getSchemaGraph","withHostIntentSlot","context","intentSlots","getHostState","intentSlot","apply","createSimulationUnavailableError","createSimulationNotDispatchableError","baseline","result","computeSync","afterPatches","canonicalSimulated","applySystemDelta","simulate","projectedSimulated","dispose","setVisibleSnapshot","options","nextProjectedSnapshot","projectedChanged","projectedSnapshotsEqual","notifySubscribers","restoreVisibleSnapshot","emitEvent","payload","enqueue","task","generateUUID","executeHost","createUnavailableError","createNotDispatchableError","createInvalidInputError","message","queryIntentInputValidation","rejectRejectedIntent","error","rejectUnavailable","rejectInvalidInput","rejectNotDispatchable","selected","extensionKernel","createBaseRuntimeInstance","processIntent","DisposedError","failure","toError","publishedSnapshot","dispatchAsync","explainIntent","why","whyNot","explanation","char","random"]}
@@ -1,5 +1,5 @@
1
1
  import type { ComputeStatus, DomainSchema, Patch, Requirement } from "@manifesto-ai/core";
2
- import type { CanonicalSnapshot, CreateIntentArgs, ManifestoDomainShape, Snapshot, TypedActionRef, TypedCreateIntent, TypedIntent, TypedMEL } from "./types.js";
2
+ import type { CanonicalSnapshot, CreateIntentArgs, IntentExplanation, ManifestoDomainShape, Snapshot, TypedActionRef, TypedCreateIntent, TypedIntent, TypedMEL } from "./types.js";
3
3
  export type ExtensionSimulateResult<T extends ManifestoDomainShape = ManifestoDomainShape> = {
4
4
  readonly snapshot: CanonicalSnapshot<T["state"]>;
5
5
  readonly patches: readonly Patch[];
@@ -16,6 +16,7 @@ export interface ExtensionKernel<T extends ManifestoDomainShape> {
16
16
  readonly getAvailableActionsFor: (snapshot: CanonicalSnapshot<T["state"]>) => readonly (keyof T["actions"])[];
17
17
  readonly isActionAvailableFor: (snapshot: CanonicalSnapshot<T["state"]>, actionName: keyof T["actions"]) => boolean;
18
18
  readonly isIntentDispatchableFor: (snapshot: CanonicalSnapshot<T["state"]>, intent: TypedIntent<T>) => boolean;
19
+ readonly explainIntentFor: (snapshot: CanonicalSnapshot<T["state"]>, intent: TypedIntent<T>) => IntentExplanation<T>;
19
20
  }
20
21
  export type SimulationSessionStatus = ComputeStatus | "idle" | "computing";
21
22
  export type SimulationActionRef<T extends ManifestoDomainShape = ManifestoDomainShape> = TypedActionRef<T, keyof T["actions"]>;
@@ -1,2 +1,2 @@
1
- import{a as S,h as m,n as c}from"./chunk-SDGXZPPJ.js";function p(n){return n==="pending"||n==="halted"||n==="error"}function d(n){return n.__kind==="ActionRef"}function l(n){return Object.freeze([...n])}function u(n,e,t){return Object.freeze(t?[]:n.getAvailableActionsFor(e).map(i=>n.MEL.actions[i]))}function y(n,e,t,i,s){let a=p(s);return Object.freeze({intent:m(n),snapshot:e.projectSnapshot(t),canonicalSnapshot:t,availableActions:u(e,t,a),requirements:l(i),status:s,isTerminal:a})}function T(n,e){return Object.freeze({snapshot:e.snapshot,canonicalSnapshot:e.canonicalSnapshot,depth:e.depth,trajectory:e.trajectory,availableActions:e.availableActions,requirements:e.requirements,status:e.status,isTerminal:e.isTerminal,finish(){return e},next(i,...s){if(e.isTerminal)throw new S("SIMULATION_SESSION_TERMINAL","SimulationSession.next() cannot advance a terminal session");let a=d(i)?n.createIntent(i,...s):i,r=n.simulateSync(e.canonicalSnapshot,a),o=y(a,n,r.snapshot,r.requirements,r.status),f=Object.freeze({snapshot:o.snapshot,canonicalSnapshot:r.snapshot,depth:e.depth+1,trajectory:l([...e.trajectory,o]),availableActions:o.availableActions,requirements:o.requirements,status:o.status,isTerminal:o.isTerminal});return T(n,f)}})}function h(n){let e=c(n),t=e.getCanonicalSnapshot(),i=t.system.status,s=p(i);return T(e,Object.freeze({snapshot:e.projectSnapshot(t),canonicalSnapshot:t,depth:0,trajectory:Object.freeze([]),availableActions:u(e,t,s),requirements:l(t.system.pendingRequirements),status:i,isTerminal:s}))}function v(n){return c(n)}export{h as createSimulationSession,v as getExtensionKernel};
1
+ import{a as S,h as m,n as c}from"./chunk-WZ4OLF45.js";function p(n){return n==="pending"||n==="halted"||n==="error"}function d(n){return n.__kind==="ActionRef"}function l(n){return Object.freeze([...n])}function u(n,e,t){return Object.freeze(t?[]:n.getAvailableActionsFor(e).map(i=>n.MEL.actions[i]))}function y(n,e,t,i,s){let a=p(s);return Object.freeze({intent:m(n),snapshot:e.projectSnapshot(t),canonicalSnapshot:t,availableActions:u(e,t,a),requirements:l(i),status:s,isTerminal:a})}function T(n,e){return Object.freeze({snapshot:e.snapshot,canonicalSnapshot:e.canonicalSnapshot,depth:e.depth,trajectory:e.trajectory,availableActions:e.availableActions,requirements:e.requirements,status:e.status,isTerminal:e.isTerminal,finish(){return e},next(i,...s){if(e.isTerminal)throw new S("SIMULATION_SESSION_TERMINAL","SimulationSession.next() cannot advance a terminal session");let a=d(i)?n.createIntent(i,...s):i,r=n.simulateSync(e.canonicalSnapshot,a),o=y(a,n,r.snapshot,r.requirements,r.status),f=Object.freeze({snapshot:o.snapshot,canonicalSnapshot:r.snapshot,depth:e.depth+1,trajectory:l([...e.trajectory,o]),availableActions:o.availableActions,requirements:o.requirements,status:o.status,isTerminal:o.isTerminal});return T(n,f)}})}function h(n){let e=c(n),t=e.getCanonicalSnapshot(),i=t.system.status,s=p(i);return T(e,Object.freeze({snapshot:e.projectSnapshot(t),canonicalSnapshot:t,depth:0,trajectory:Object.freeze([]),availableActions:u(e,t,s),requirements:l(t.system.pendingRequirements),status:i,isTerminal:s}))}function v(n){return c(n)}export{h as createSimulationSession,v as getExtensionKernel};
2
2
  //# sourceMappingURL=extensions.js.map
package/dist/index.d.ts CHANGED
@@ -9,7 +9,7 @@
9
9
  */
10
10
  export type { SdkManifest } from "./manifest.js";
11
11
  export { createManifesto } from "./create-manifesto.js";
12
- export type { ActivatedInstance, ActionArgs, CreateIntentArgs, ActionObjectBindingArgs, DispatchBlocker, TypedActionMetadata, TypedGetActionMetadata, TypedGetIntentBlockers, TypedIsIntentDispatchable, BaseLaws, BaseComposableLaws, CanonicalPlatformNamespaces, CanonicalSnapshot, ComposableManifesto, ComputedRef, EffectContext, EffectHandler, FieldRef, GovernedComposableLaws, GovernanceLaws, LineageComposableLaws, LineageLaws, ManifestoBaseInstance, ManifestoDecoratedRuntimeByLaws, ManifestoDomainShape, ManifestoEvent, ManifestoEventMap, ManifestoEventPayload, ManifestoRuntimeByLaws, Selector, SimulateResult, SchemaGraph, SchemaGraphEdge, SchemaGraphEdgeRelation, SchemaGraphNode, SchemaGraphNodeId, SchemaGraphNodeKind, SchemaGraphNodeRef, Snapshot, TypedActionRef, TypedCommitAsync, TypedCreateIntent, TypedDispatchAsync, TypedIntent, TypedMEL, TypedOn, TypedSimulate, TypedSubscribe, Unsubscribe, } from "./types.js";
12
+ export type { ActivatedInstance, ActionArgs, CreateIntentArgs, ActionObjectBindingArgs, DispatchBlocker, TypedActionMetadata, TypedGetActionMetadata, TypedGetIntentBlockers, TypedIsIntentDispatchable, BaseLaws, BaseComposableLaws, CanonicalPlatformNamespaces, CanonicalSnapshot, ComposableManifesto, ComputedRef, EffectContext, EffectHandler, FieldRef, GovernedComposableLaws, GovernanceLaws, IntentExplanation, LineageComposableLaws, LineageLaws, ManifestoBaseInstance, ManifestoDecoratedRuntimeByLaws, ManifestoDomainShape, ManifestoEvent, ManifestoEventMap, ManifestoEventPayload, ManifestoRuntimeByLaws, Selector, SimulateResult, SchemaGraph, SchemaGraphEdge, SchemaGraphEdgeRelation, SchemaGraphNode, SchemaGraphNodeId, SchemaGraphNodeKind, SchemaGraphNodeRef, Snapshot, TypedActionRef, TypedCommitAsync, TypedCreateIntent, TypedDispatchAsync, TypedIntent, TypedMEL, TypedOn, TypedSimulate, TypedSubscribe, Unsubscribe, } from "./types.js";
13
13
  export { AlreadyActivatedError, CompileError, DisposedError, ManifestoError, ReservedEffectError, } from "./errors.js";
14
14
  export type { CompileDiagnostic } from "./errors.js";
15
15
  export type { DomainSchema, Intent, Patch, Snapshot as CoreSnapshot, } from "@manifesto-ai/core";
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import{a as d,b as h,c as y,d as H,e as N,f as R,g as M,h as x,i as m,j as b,k as O,q as A,r as g,s as T}from"./chunk-SDGXZPPJ.js";import{createHostContextProvider as G,createHost as z,defaultRuntime as V}from"@manifesto-ai/host";import{createIntent as B,extractDefaults as F,hashSchemaSync as K,semanticPathToPatchPath as U}from"@manifesto-ai/core";import{compileMelDomain as q,parse as W,tokenize as J}from"@manifesto-ai/compiler";var S="system.get",w="system.",X=Object.freeze({__baseLaws:!0});function Y(e,t){if(S in t)throw new h(S);let n=Q(e);te(n.schema);let a={_laws:X,schema:n.schema,activate(){A(a);let o=D(n.schema,n.projectionPlan,t);return T(g({schema:n.schema,projectionPlan:n.projectionPlan,host:o.host,hostContextProvider:o.contextProvider,MEL:k(n.schema,n.actionParamMetadata,n.actionSingleParamObjectValueMetadata),createIntent:C()}))}};return O(a,()=>{let o=D(n.schema,n.projectionPlan,t);return g({schema:n.schema,projectionPlan:n.projectionPlan,host:o.host,hostContextProvider:o.contextProvider,MEL:k(n.schema,n.actionParamMetadata,n.actionSingleParamObjectValueMetadata),createIntent:C()})})}function Q(e){let t=typeof e=="string"?Z(e):{schema:e,actionParamMetadata:I(e),actionSingleParamObjectValueMetadata:_(e)},n=ee(t.schema);return{schema:n,actionParamMetadata:t.actionParamMetadata,actionSingleParamObjectValueMetadata:t.actionSingleParamObjectValueMetadata,projectionPlan:R(n)}}function Z(e){let t=q(e,{mode:"domain"});if(t.errors.length>0){let a=t.errors.map(o=>{let s=o.location;if(!s||s.start.line===0&&s.start.column===0)return`[${o.code}] ${o.message}`;let r=`[${o.code}] ${o.message} (${s.start.line}:${s.start.column})`,i=e.split(`
1
+ import{a as d,b as h,c as y,d as H,e as N,f as R,g as M,h as x,i as m,j as b,k as O,q as A,r as g,s as T}from"./chunk-WZ4OLF45.js";import{createHostContextProvider as G,createHost as z,defaultRuntime as V}from"@manifesto-ai/host";import{createIntent as B,extractDefaults as F,hashSchemaSync as K,semanticPathToPatchPath as U}from"@manifesto-ai/core";import{compileMelDomain as q,parse as W,tokenize as J}from"@manifesto-ai/compiler";var S="system.get",w="system.",X=Object.freeze({__baseLaws:!0});function Y(e,t){if(S in t)throw new h(S);let n=Q(e);te(n.schema);let a={_laws:X,schema:n.schema,activate(){A(a);let o=D(n.schema,n.projectionPlan,t);return T(g({schema:n.schema,projectionPlan:n.projectionPlan,host:o.host,hostContextProvider:o.contextProvider,MEL:k(n.schema,n.actionParamMetadata,n.actionSingleParamObjectValueMetadata),createIntent:C()}))}};return O(a,()=>{let o=D(n.schema,n.projectionPlan,t);return g({schema:n.schema,projectionPlan:n.projectionPlan,host:o.host,hostContextProvider:o.contextProvider,MEL:k(n.schema,n.actionParamMetadata,n.actionSingleParamObjectValueMetadata),createIntent:C()})})}function Q(e){let t=typeof e=="string"?Z(e):{schema:e,actionParamMetadata:I(e),actionSingleParamObjectValueMetadata:_(e)},n=ee(t.schema);return{schema:n,actionParamMetadata:t.actionParamMetadata,actionSingleParamObjectValueMetadata:t.actionSingleParamObjectValueMetadata,projectionPlan:R(n)}}function Z(e){let t=q(e,{mode:"domain"});if(t.errors.length>0){let a=t.errors.map(o=>{let s=o.location;if(!s||s.start.line===0&&s.start.column===0)return`[${o.code}] ${o.message}`;let r=`[${o.code}] ${o.message} (${s.start.line}:${s.start.column})`,i=e.split(`
2
2
  `)[s.start.line-1];if(!i)return r;let l=String(s.start.line).padStart(4," "),c=Math.max(1,s.end.line===s.start.line?Math.min(s.end.column-s.start.column,Math.max(1,i.length-s.start.column+1)):1),u=" ".repeat(l.length+3+s.start.column-1);return`${r}
3
3
  ${l} | ${i}
4
4
  ${u}${"^".repeat(c)}`}).join(`
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/create-manifesto.ts","../src/index.ts"],"sourcesContent":["import {\n type EffectContext as HostEffectContext,\n type EffectHandler as HostEffectHandler,\n type HostContextProvider,\n type ManifestoHost,\n createHostContextProvider,\n createHost,\n defaultRuntime,\n} from \"@manifesto-ai/host\";\nimport {\n createIntent as createCoreIntent,\n extractDefaults,\n hashSchemaSync,\n semanticPathToPatchPath,\n type DomainSchema,\n type Intent,\n type Patch,\n type Snapshot as CoreSnapshot,\n} from \"@manifesto-ai/core\";\nimport {\n compileMelDomain,\n parse as parseMel,\n tokenize as tokenizeMel,\n} from \"@manifesto-ai/compiler\";\n\nimport {\n ACTION_PARAM_NAMES,\n ACTION_SINGLE_PARAM_OBJECT_VALUE,\n activateComposable,\n attachRuntimeKernelFactory,\n createBaseRuntimeInstance,\n createRuntimeKernel,\n} from \"./internal.js\";\nimport {\n type CreateIntentArgs,\n type BaseComposableLaws,\n type ComposableManifesto,\n type EffectHandler,\n type ManifestoDomainShape,\n type TypedActionRef,\n type TypedCreateIntent,\n type TypedIntent,\n type TypedMEL,\n} from \"./types.js\";\nimport {\n buildSnapshotProjectionPlan,\n cloneAndDeepFreeze,\n projectEffectContextSnapshot,\n type SnapshotProjectionPlan,\n} from \"./snapshot-projection.js\";\nimport {\n CompileError,\n ManifestoError,\n ReservedEffectError,\n} from \"./errors.js\";\n\nconst RESERVED_EFFECT_TYPE = \"system.get\";\nconst RESERVED_NAMESPACE_PREFIX = \"system.\";\nconst BASE_LAWS: BaseComposableLaws = Object.freeze({ __baseLaws: true });\n\ntype RuntimeActionRef = TypedActionRef<ManifestoDomainShape> & {\n readonly [ACTION_PARAM_NAMES]: readonly string[] | null;\n readonly [ACTION_SINGLE_PARAM_OBJECT_VALUE]?: boolean;\n};\n\ntype ActionParamMetadata = readonly string[] | null;\ntype ActionSingleParamObjectValueMetadata = boolean;\n\ntype ResolvedSchema = {\n readonly schema: DomainSchema;\n readonly actionParamMetadata: Readonly<Record<string, ActionParamMetadata>>;\n readonly actionSingleParamObjectValueMetadata: Readonly<Record<string, ActionSingleParamObjectValueMetadata>>;\n readonly projectionPlan: SnapshotProjectionPlan;\n};\n\ntype CompiledSchema = Omit<ResolvedSchema, \"projectionPlan\">;\ntype InternalHostBundle = {\n readonly host: ManifestoHost;\n readonly contextProvider: HostContextProvider;\n};\n\nexport function createManifesto<T extends ManifestoDomainShape>(\n schemaInput: DomainSchema | string,\n effects: Record<string, EffectHandler>,\n): ComposableManifesto<T, BaseComposableLaws> {\n if (RESERVED_EFFECT_TYPE in effects) {\n throw new ReservedEffectError(RESERVED_EFFECT_TYPE);\n }\n\n const resolved = resolveSchema(schemaInput);\n validateReservedNamespaces(resolved.schema);\n\n const manifesto = {\n _laws: BASE_LAWS,\n schema: resolved.schema,\n activate() {\n activateComposable(manifesto);\n const internalHost = createInternalHost(\n resolved.schema,\n resolved.projectionPlan,\n effects,\n );\n return createBaseRuntimeInstance(\n createRuntimeKernel<T>({\n schema: resolved.schema,\n projectionPlan: resolved.projectionPlan,\n host: internalHost.host,\n hostContextProvider: internalHost.contextProvider,\n MEL: buildTypedMel<T>(\n resolved.schema,\n resolved.actionParamMetadata,\n resolved.actionSingleParamObjectValueMetadata,\n ),\n createIntent: buildCreateIntent<T>(),\n }),\n );\n },\n };\n\n return attachRuntimeKernelFactory(manifesto, () => {\n const internalHost = createInternalHost(\n resolved.schema,\n resolved.projectionPlan,\n effects,\n );\n return createRuntimeKernel<T>({\n schema: resolved.schema,\n projectionPlan: resolved.projectionPlan,\n host: internalHost.host,\n hostContextProvider: internalHost.contextProvider,\n MEL: buildTypedMel<T>(\n resolved.schema,\n resolved.actionParamMetadata,\n resolved.actionSingleParamObjectValueMetadata,\n ),\n createIntent: buildCreateIntent<T>(),\n });\n });\n}\n\nfunction resolveSchema(schema: DomainSchema | string): ResolvedSchema {\n const resolved: CompiledSchema = typeof schema === \"string\"\n ? compileSchema(schema)\n : {\n schema,\n actionParamMetadata: deriveActionParamMetadata(schema),\n actionSingleParamObjectValueMetadata: deriveSingleParamObjectValueMetadata(schema),\n };\n\n const normalizedSchema = withPlatformNamespaces(resolved.schema);\n return {\n schema: normalizedSchema,\n actionParamMetadata: resolved.actionParamMetadata,\n actionSingleParamObjectValueMetadata: resolved.actionSingleParamObjectValueMetadata,\n projectionPlan: buildSnapshotProjectionPlan(normalizedSchema),\n };\n}\n\nfunction compileSchema(source: string): CompiledSchema {\n const result = compileMelDomain(source, { mode: \"domain\" });\n\n if (result.errors.length > 0) {\n const formatted = result.errors.map((diagnostic) => {\n const loc = diagnostic.location;\n if (!loc || (loc.start.line === 0 && loc.start.column === 0)) {\n return `[${diagnostic.code}] ${diagnostic.message}`;\n }\n\n const header = `[${diagnostic.code}] ${diagnostic.message} (${loc.start.line}:${loc.start.column})`;\n const line = source.split(\"\\n\")[loc.start.line - 1];\n if (!line) {\n return header;\n }\n\n const lineNum = String(loc.start.line).padStart(4, \" \");\n const underlineLen = Math.max(\n 1,\n loc.end.line === loc.start.line\n ? Math.min(loc.end.column - loc.start.column, Math.max(1, line.length - loc.start.column + 1))\n : 1,\n );\n const padding = \" \".repeat(lineNum.length + 3 + loc.start.column - 1);\n return `${header}\\n${lineNum} | ${line}\\n${padding}${\"^\".repeat(underlineLen)}`;\n }).join(\"\\n\\n\");\n\n throw new CompileError(result.errors, `MEL compilation failed:\\n${formatted}`);\n }\n\n if (!result.schema) {\n throw new ManifestoError(\"COMPILE_ERROR\", \"MEL compilation produced no schema\");\n }\n\n const schema = result.schema as DomainSchema;\n return {\n schema,\n actionParamMetadata: deriveActionParamMetadata(\n schema,\n extractActionParamOrderFromMel(source),\n ),\n actionSingleParamObjectValueMetadata: deriveSingleParamObjectValueMetadata(schema),\n };\n}\n\nfunction withPlatformNamespaces(schema: DomainSchema): DomainSchema {\n const fields = { ...schema.state.fields };\n let changed = false;\n\n if (!fields.$host) {\n fields.$host = {\n type: \"object\",\n required: false,\n default: {},\n };\n changed = true;\n } else if (fields.$host.type !== \"object\") {\n throw new ManifestoError(\"SCHEMA_ERROR\", \"Reserved namespace '$host' must be an object field\");\n } else if (fields.$host.default === undefined) {\n fields.$host = { ...fields.$host, default: {} };\n changed = true;\n }\n\n if (!fields.$mel) {\n fields.$mel = {\n type: \"object\",\n required: false,\n default: { guards: { intent: {} } },\n fields: {\n guards: {\n type: \"object\",\n required: false,\n default: { intent: {} },\n fields: {\n intent: {\n type: \"object\",\n required: false,\n default: {},\n },\n },\n },\n },\n };\n changed = true;\n } else if (fields.$mel.type !== \"object\") {\n throw new ManifestoError(\"SCHEMA_ERROR\", \"Reserved namespace '$mel' must be an object field\");\n } else {\n let nextMel = fields.$mel;\n if (nextMel.default === undefined) {\n nextMel = { ...nextMel, default: { guards: { intent: {} } } };\n changed = true;\n }\n\n const melFields = nextMel.fields ?? {};\n const guardsField = melFields.guards;\n\n if (!guardsField) {\n nextMel = {\n ...nextMel,\n fields: {\n ...melFields,\n guards: {\n type: \"object\",\n required: false,\n default: { intent: {} },\n fields: {\n intent: {\n type: \"object\",\n required: false,\n default: {},\n },\n },\n },\n },\n };\n changed = true;\n } else if (guardsField.type !== \"object\") {\n throw new ManifestoError(\"SCHEMA_ERROR\", \"Reserved namespace '$mel.guards' must be an object field\");\n } else {\n let nextGuards = guardsField;\n if (nextGuards.default === undefined) {\n nextGuards = { ...nextGuards, default: { intent: {} } };\n changed = true;\n }\n\n const guardFields = nextGuards.fields ?? {};\n const intentField = guardFields.intent;\n\n if (!intentField) {\n nextGuards = {\n ...nextGuards,\n fields: {\n ...guardFields,\n intent: {\n type: \"object\",\n required: false,\n default: {},\n },\n },\n };\n changed = true;\n } else if (intentField.type !== \"object\") {\n throw new ManifestoError(\"SCHEMA_ERROR\", \"Reserved namespace '$mel.guards.intent' must be an object field\");\n } else if (intentField.default === undefined) {\n nextGuards = {\n ...nextGuards,\n fields: {\n ...guardFields,\n intent: { ...intentField, default: {} },\n },\n };\n changed = true;\n }\n\n if (nextGuards !== guardsField) {\n nextMel = {\n ...nextMel,\n fields: {\n ...melFields,\n guards: nextGuards,\n },\n };\n }\n }\n\n if (nextMel !== fields.$mel) {\n fields.$mel = nextMel;\n }\n }\n\n if (!changed) {\n return schema;\n }\n\n const nextSchema = {\n ...schema,\n state: {\n ...schema.state,\n fields,\n },\n };\n\n const { hash: _hash, ...schemaWithoutHash } = nextSchema;\n return {\n ...nextSchema,\n hash: hashSchemaSync(schemaWithoutHash),\n };\n}\n\nfunction validateReservedNamespaces(schema: DomainSchema): void {\n for (const actionType of Object.keys(schema.actions ?? {})) {\n if (actionType.startsWith(RESERVED_NAMESPACE_PREFIX)) {\n throw new ManifestoError(\n \"RESERVED_NAMESPACE\",\n `Action type \"${actionType}\" uses reserved namespace prefix \"${RESERVED_NAMESPACE_PREFIX}\"`,\n );\n }\n }\n}\n\nfunction buildTypedMel<T extends ManifestoDomainShape>(\n schema: DomainSchema,\n actionParamMetadata: Readonly<Record<string, ActionParamMetadata>>,\n actionSingleParamObjectValueMetadata: Readonly<Record<string, ActionSingleParamObjectValueMetadata>>,\n): TypedMEL<T> {\n const actions = Object.fromEntries(\n Object.keys(schema.actions).map((name) => {\n const ref: Record<PropertyKey, unknown> = {\n __kind: \"ActionRef\",\n name,\n };\n Object.defineProperty(ref, ACTION_PARAM_NAMES, {\n enumerable: false,\n configurable: false,\n writable: false,\n value: Object.hasOwn(actionParamMetadata, name)\n ? actionParamMetadata[name]\n : [],\n });\n Object.defineProperty(ref, ACTION_SINGLE_PARAM_OBJECT_VALUE, {\n enumerable: false,\n configurable: false,\n writable: false,\n value: actionSingleParamObjectValueMetadata[name] ?? false,\n });\n return [name, Object.freeze(ref)];\n }),\n );\n\n const state = Object.fromEntries(\n Object.keys(schema.state.fields)\n .filter((name) => !name.startsWith(\"$\"))\n .map((name) => [name, Object.freeze({\n __kind: \"FieldRef\",\n name,\n })]),\n );\n\n const computed = Object.fromEntries(\n Object.keys(schema.computed.fields)\n .map((name) => [name, Object.freeze({\n __kind: \"ComputedRef\",\n name,\n })]),\n );\n\n return Object.freeze({\n actions: Object.freeze(actions),\n state: Object.freeze(state),\n computed: Object.freeze(computed),\n }) as unknown as TypedMEL<T>;\n}\n\nfunction buildCreateIntent<T extends ManifestoDomainShape>(): TypedCreateIntent<T> {\n return <K extends keyof T[\"actions\"]>(\n action: TypedActionRef<T, K>,\n ...args: CreateIntentArgs<T, K>\n ): TypedIntent<T, K> => {\n const actionRef = action as unknown as RuntimeActionRef;\n const intentId = generateUUID();\n const input = packIntentInput(actionRef, args);\n return createCoreIntent(\n String(action.name),\n input,\n intentId,\n ) as TypedIntent<T, K>;\n };\n}\n\nfunction getActionParamNames(input: DomainSchema[\"actions\"][string][\"input\"]): readonly string[] {\n if (!input || input.type !== \"object\" || !input.fields) {\n return [];\n }\n\n return Object.keys(input.fields);\n}\n\nfunction deriveActionParamMetadata(\n schema: DomainSchema,\n actionParamOrder?: Readonly<Record<string, readonly string[]>>,\n): Readonly<Record<string, ActionParamMetadata>> {\n return Object.freeze(Object.fromEntries(\n (Object.entries(schema.actions) as [string, DomainSchema[\"actions\"][string]][]).map(([name, action]) => {\n const preferredOrder = actionParamOrder?.[name];\n if (preferredOrder && preferredOrder.length > 0) {\n return [name, Object.freeze([...preferredOrder])];\n }\n\n if (action.params && action.params.length > 0) {\n const params = Object.freeze([...action.params]);\n return [name, params];\n }\n\n if (!action.input || action.input.type !== \"object\" || !action.input.fields) {\n return [name, []];\n }\n\n const fieldNames = getActionParamNames(action.input);\n return [name, fieldNames.length <= 1 ? fieldNames : null];\n }),\n ));\n}\n\nfunction deriveSingleParamObjectValueMetadata(\n schema: DomainSchema,\n): Readonly<Record<string, ActionSingleParamObjectValueMetadata>> {\n return Object.freeze(Object.fromEntries(\n (Object.entries(schema.actions) as [string, DomainSchema[\"actions\"][string]][])\n .map(([name, action]) => [name, isSingleParamObjectValued(schema, action)]),\n ));\n}\n\nfunction isSingleParamObjectValued(\n schema: DomainSchema,\n action: DomainSchema[\"actions\"][string],\n): boolean {\n if (action.params?.length === 1 && action.inputType) {\n const fieldType = getObjectFieldTypeDefinition(\n action.inputType,\n action.params[0] ?? \"\",\n schema.types,\n );\n return fieldType ? isPlainObjectLikeTypeDefinition(fieldType, schema.types) : false;\n }\n\n if (\n action.input?.type === \"object\"\n && action.input.fields\n && Object.keys(action.input.fields).length === 1\n ) {\n const [fieldName] = Object.keys(action.input.fields);\n const field = fieldName ? action.input.fields[fieldName] : undefined;\n return field?.type === \"object\";\n }\n\n return false;\n}\n\nfunction getObjectFieldTypeDefinition(\n definition: DomainSchema[\"types\"][string][\"definition\"],\n fieldName: string,\n types: DomainSchema[\"types\"],\n seenRefs: readonly string[] = [],\n): DomainSchema[\"types\"][string][\"definition\"] | null {\n if (definition.kind === \"ref\") {\n if (seenRefs.includes(definition.name)) {\n return null;\n }\n\n const next = types[definition.name];\n return next\n ? getObjectFieldTypeDefinition(next.definition, fieldName, types, [...seenRefs, definition.name])\n : null;\n }\n\n if (definition.kind === \"union\") {\n const nonNullTypes = definition.types.filter((candidate: typeof definition.types[number]) =>\n !isNullLikeTypeDefinition(candidate, types, seenRefs)\n );\n return nonNullTypes.length === 1\n ? getObjectFieldTypeDefinition(nonNullTypes[0], fieldName, types, seenRefs)\n : null;\n }\n\n if (definition.kind !== \"object\") {\n return null;\n }\n\n return definition.fields[fieldName]?.type ?? null;\n}\n\nfunction isPlainObjectLikeTypeDefinition(\n definition: DomainSchema[\"types\"][string][\"definition\"],\n types: DomainSchema[\"types\"],\n seenRefs: readonly string[] = [],\n): boolean {\n if (definition.kind === \"ref\") {\n if (seenRefs.includes(definition.name)) {\n return false;\n }\n\n const next = types[definition.name];\n return next\n ? isPlainObjectLikeTypeDefinition(next.definition, types, [...seenRefs, definition.name])\n : false;\n }\n\n if (definition.kind === \"union\") {\n const nonNullTypes = definition.types.filter((candidate: typeof definition.types[number]) =>\n !isNullLikeTypeDefinition(candidate, types, seenRefs)\n );\n return nonNullTypes.length === 1\n ? isPlainObjectLikeTypeDefinition(nonNullTypes[0], types, seenRefs)\n : false;\n }\n\n return (\n definition.kind === \"object\"\n || definition.kind === \"record\"\n || (definition.kind === \"primitive\" && definition.type === \"object\")\n );\n}\n\nfunction isNullLikeTypeDefinition(\n definition: DomainSchema[\"types\"][string][\"definition\"],\n types: DomainSchema[\"types\"],\n seenRefs: readonly string[] = [],\n): boolean {\n if (definition.kind === \"ref\") {\n if (seenRefs.includes(definition.name)) {\n return false;\n }\n\n const next = types[definition.name];\n return next\n ? isNullLikeTypeDefinition(next.definition, types, [...seenRefs, definition.name])\n : false;\n }\n\n return (\n (definition.kind === \"primitive\" && definition.type === \"null\")\n || (definition.kind === \"literal\" && definition.value === null)\n );\n}\n\nfunction extractActionParamOrderFromMel(\n source: string,\n): Readonly<Record<string, readonly string[]>> | undefined {\n const lexed = tokenizeMel(source);\n if (lexed.diagnostics.some((diagnostic) => diagnostic.severity === \"error\")) {\n return undefined;\n }\n\n const parsed = parseMel(lexed.tokens);\n if (!parsed.program) {\n return undefined;\n }\n\n return Object.freeze(Object.fromEntries(\n parsed.program.domain.members\n .filter((member) => member.kind === \"action\")\n .map((action) => [action.name, Object.freeze(action.params.map((param) => param.name))]),\n ));\n}\n\nfunction packIntentInput(action: RuntimeActionRef, args: readonly unknown[]): unknown {\n const paramNames = Object.hasOwn(action, ACTION_PARAM_NAMES)\n ? action[ACTION_PARAM_NAMES]\n : [];\n if (args.length === 0) {\n return undefined;\n }\n\n if (paramNames === null) {\n if (args.length === 1 && isPlainObject(args[0])) {\n return args[0];\n }\n\n throw new ManifestoError(\n \"INVALID_INTENT_ARGS\",\n `Action \"${String(action.name)}\" requires a single object argument because positional parameter metadata is unavailable`,\n );\n }\n\n if (paramNames.length === 0) {\n if (args.length === 1) {\n return args[0];\n }\n\n throw new ManifestoError(\n \"INVALID_INTENT_ARGS\",\n `Action \"${String(action.name)}\" does not accept multiple positional arguments`,\n );\n }\n\n if (\n paramNames.length === 1 &&\n args.length === 1 &&\n isPlainObject(args[0]) &&\n action[ACTION_SINGLE_PARAM_OBJECT_VALUE]\n ) {\n return { [paramNames[0] ?? \"arg0\"]: args[0] };\n }\n\n if (\n paramNames.length === 1 &&\n args.length === 1 &&\n isNamedSingleParamBinding(args[0], paramNames[0])\n ) {\n return args[0];\n }\n\n if (args.length === 1 && isPlainObject(args[0]) && paramNames.length > 1) {\n return args[0];\n }\n\n return Object.fromEntries(args.map((value, index) => [\n paramNames[index] ?? `arg${index}`,\n value,\n ]));\n}\n\nfunction isPlainObject(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nfunction isNamedSingleParamBinding(\n value: unknown,\n paramName: string | undefined,\n): value is Record<string, unknown> {\n if (!paramName || !isPlainObject(value)) {\n return false;\n }\n\n const keys = Object.keys(value);\n return keys.length === 1 && keys[0] === paramName;\n}\n\nfunction createInternalHost(\n schema: DomainSchema,\n projectionPlan: SnapshotProjectionPlan,\n effects: Record<string, EffectHandler>,\n): InternalHostBundle {\n const runtime = defaultRuntime;\n const host = createHost(schema, {\n initialData: extractDefaults(schema.state),\n runtime,\n });\n const contextProvider = createHostContextProvider(runtime);\n\n host.registerEffect(RESERVED_EFFECT_TYPE, async (\n _type: string,\n params: Record<string, unknown>,\n ctx: HostEffectContext,\n ): Promise<Patch[]> => {\n const { patches } = executeSystemGet(params, ctx.snapshot as CoreSnapshot);\n return patches;\n });\n\n for (const [effectType, appHandler] of Object.entries(effects)) {\n const hostHandler: HostEffectHandler = async (\n _type: string,\n params: Record<string, unknown>,\n ctx: HostEffectContext,\n ): Promise<Patch[]> => {\n const patches = await appHandler(params, {\n snapshot: cloneAndDeepFreeze(\n projectEffectContextSnapshot(ctx.snapshot, projectionPlan),\n ),\n });\n return patches as Patch[];\n };\n\n host.registerEffect(effectType, hostHandler);\n }\n\n return {\n host,\n contextProvider,\n };\n}\n\ninterface SystemGetReadParams {\n path: string;\n target?: string;\n}\n\ninterface SystemGetGenerateParams {\n key: string;\n into: string;\n}\n\nfunction isGenerateParams(params: unknown): params is SystemGetGenerateParams {\n return (\n typeof params === \"object\" &&\n params !== null &&\n \"key\" in params &&\n \"into\" in params\n );\n}\n\nfunction executeSystemGet(\n params: unknown,\n snapshot: CoreSnapshot,\n): { patches: Patch[] } {\n if (isGenerateParams(params)) {\n return {\n patches: [{\n op: \"set\",\n path: normalizeTargetPath(params.into),\n value: generateSystemValue(params.key),\n }],\n };\n }\n\n const { path, target } = params as SystemGetReadParams;\n const result = resolvePathValue(path, snapshot);\n if (!target) {\n return { patches: [] };\n }\n\n return {\n patches: [{\n op: \"set\",\n path: normalizeTargetPath(target),\n value: result.value,\n }],\n };\n}\n\nfunction generateSystemValue(key: string): unknown {\n switch (key) {\n case \"uuid\":\n return generateUUID();\n case \"timestamp\":\n case \"time.now\":\n return Date.now();\n case \"isoTimestamp\":\n return new Date().toISOString();\n default:\n return null;\n }\n}\n\nfunction normalizeTargetPath(path: string): Patch[\"path\"] {\n const normalized = normalizePath(path);\n const withoutDataRoot = normalized.startsWith(\"data.\")\n ? normalized.slice(\"data.\".length)\n : normalized;\n return semanticPathToPatchPath(withoutDataRoot);\n}\n\nfunction normalizePath(path: string): string {\n if (path.startsWith(\"/\")) {\n return path.slice(1).replace(/\\//g, \".\");\n }\n return path;\n}\n\nfunction resolvePathValue(\n path: string,\n snapshot: CoreSnapshot,\n): { value: unknown; found: boolean } {\n const normalized = normalizePath(path);\n const parts = normalized.split(\".\");\n if (parts.length === 0) {\n return { value: undefined, found: false };\n }\n\n const [root, ...rest] = parts;\n let current: unknown;\n\n switch (root) {\n case \"data\":\n current = snapshot.data;\n break;\n case \"computed\":\n current = snapshot.computed;\n break;\n case \"system\":\n current = snapshot.system;\n break;\n case \"meta\":\n current = snapshot.meta;\n break;\n default:\n current = snapshot.data;\n rest.unshift(root);\n break;\n }\n\n for (const part of rest) {\n if (current === null || current === undefined || typeof current !== \"object\") {\n return { value: undefined, found: false };\n }\n current = (current as Record<string, unknown>)[part];\n }\n\n return { value: current, found: current !== undefined };\n}\nfunction generateUUID(): string {\n if (typeof crypto !== \"undefined\" && typeof crypto.randomUUID === \"function\") {\n return crypto.randomUUID();\n }\n\n return \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replace(/[xy]/g, (char) => {\n const random = (Math.random() * 16) | 0;\n const value = char === \"x\" ? random : (random & 0x3) | 0x8;\n return value.toString(16);\n });\n}\n","/**\n * @manifesto-ai/sdk\n *\n * Activation-first SDK package surface.\n *\n * @see sdk-SPEC.md\n * @see ADR-017\n * @packageDocumentation\n */\n\nexport type { SdkManifest } from \"./manifest.js\";\n\nexport { createManifesto } from \"./create-manifesto.js\";\n\nexport type {\n ActivatedInstance,\n ActionArgs,\n CreateIntentArgs,\n ActionObjectBindingArgs,\n DispatchBlocker,\n TypedActionMetadata,\n TypedGetActionMetadata,\n TypedGetIntentBlockers,\n TypedIsIntentDispatchable,\n BaseLaws,\n BaseComposableLaws,\n CanonicalPlatformNamespaces,\n CanonicalSnapshot,\n ComposableManifesto,\n ComputedRef,\n EffectContext,\n EffectHandler,\n FieldRef,\n GovernedComposableLaws,\n GovernanceLaws,\n LineageComposableLaws,\n LineageLaws,\n ManifestoBaseInstance,\n ManifestoDecoratedRuntimeByLaws,\n ManifestoDomainShape,\n ManifestoEvent,\n ManifestoEventMap,\n ManifestoEventPayload,\n ManifestoRuntimeByLaws,\n Selector,\n SimulateResult,\n SchemaGraph,\n SchemaGraphEdge,\n SchemaGraphEdgeRelation,\n SchemaGraphNode,\n SchemaGraphNodeId,\n SchemaGraphNodeKind,\n SchemaGraphNodeRef,\n Snapshot,\n TypedActionRef,\n TypedCommitAsync,\n TypedCreateIntent,\n TypedDispatchAsync,\n TypedIntent,\n TypedMEL,\n TypedOn,\n TypedSimulate,\n TypedSubscribe,\n Unsubscribe,\n} from \"./types.js\";\n\nexport {\n AlreadyActivatedError,\n CompileError,\n DisposedError,\n ManifestoError,\n ReservedEffectError,\n} from \"./errors.js\";\n\nexport type { CompileDiagnostic } from \"./errors.js\";\n\nexport type {\n DomainSchema,\n Intent,\n Patch,\n Snapshot as CoreSnapshot,\n} from \"@manifesto-ai/core\";\n\nexport { createSnapshot } from \"@manifesto-ai/core\";\n"],"mappings":"mIAAA,OAKE,6BAAAA,EACA,cAAAC,EACA,kBAAAC,MACK,qBACP,OACE,gBAAgBC,EAChB,mBAAAC,EACA,kBAAAC,EACA,2BAAAC,MAKK,qBACP,OACE,oBAAAC,EACA,SAASC,EACT,YAAYC,MACP,yBAiCP,IAAMC,EAAuB,aACvBC,EAA4B,UAC5BC,EAAgC,OAAO,OAAO,CAAE,WAAY,EAAK,CAAC,EAuBjE,SAASC,EACdC,EACAC,EAC4C,CAC5C,GAAIL,KAAwBK,EAC1B,MAAM,IAAIC,EAAoBN,CAAoB,EAGpD,IAAMO,EAAWC,EAAcJ,CAAW,EAC1CK,GAA2BF,EAAS,MAAM,EAE1C,IAAMG,EAAY,CAChB,MAAOR,EACP,OAAQK,EAAS,OACjB,UAAW,CACTI,EAAmBD,CAAS,EAC5B,IAAME,EAAeC,EACnBN,EAAS,OACTA,EAAS,eACTF,CACF,EACA,OAAOS,EACLC,EAAuB,CACrB,OAAQR,EAAS,OACjB,eAAgBA,EAAS,eACzB,KAAMK,EAAa,KACnB,oBAAqBA,EAAa,gBAClC,IAAKI,EACHT,EAAS,OACTA,EAAS,oBACTA,EAAS,oCACX,EACA,aAAcU,EAAqB,CACrC,CAAC,CACH,CACF,CACF,EAEA,OAAOC,EAA2BR,EAAW,IAAM,CACjD,IAAME,EAAeC,EACnBN,EAAS,OACTA,EAAS,eACTF,CACF,EACA,OAAOU,EAAuB,CAC5B,OAAQR,EAAS,OACjB,eAAgBA,EAAS,eACzB,KAAMK,EAAa,KACnB,oBAAqBA,EAAa,gBAClC,IAAKI,EACHT,EAAS,OACTA,EAAS,oBACTA,EAAS,oCACX,EACA,aAAcU,EAAqB,CACrC,CAAC,CACH,CAAC,CACH,CAEA,SAAST,EAAcW,EAA+C,CACpE,IAAMZ,EAA2B,OAAOY,GAAW,SAC/CC,EAAcD,CAAM,EACpB,CACA,OAAAA,EACA,oBAAqBE,EAA0BF,CAAM,EACrD,qCAAsCG,EAAqCH,CAAM,CACnF,EAEII,EAAmBC,GAAuBjB,EAAS,MAAM,EAC/D,MAAO,CACL,OAAQgB,EACR,oBAAqBhB,EAAS,oBAC9B,qCAAsCA,EAAS,qCAC/C,eAAgBkB,EAA4BF,CAAgB,CAC9D,CACF,CAEA,SAASH,EAAcM,EAAgC,CACrD,IAAMC,EAASC,EAAiBF,EAAQ,CAAE,KAAM,QAAS,CAAC,EAE1D,GAAIC,EAAO,OAAO,OAAS,EAAG,CAC5B,IAAME,EAAYF,EAAO,OAAO,IAAKG,GAAe,CAClD,IAAMC,EAAMD,EAAW,SACvB,GAAI,CAACC,GAAQA,EAAI,MAAM,OAAS,GAAKA,EAAI,MAAM,SAAW,EACxD,MAAO,IAAID,EAAW,IAAI,KAAKA,EAAW,OAAO,GAGnD,IAAME,EAAS,IAAIF,EAAW,IAAI,KAAKA,EAAW,OAAO,KAAKC,EAAI,MAAM,IAAI,IAAIA,EAAI,MAAM,MAAM,IAC1FE,EAAOP,EAAO,MAAM;AAAA,CAAI,EAAEK,EAAI,MAAM,KAAO,CAAC,EAClD,GAAI,CAACE,EACH,OAAOD,EAGT,IAAME,EAAU,OAAOH,EAAI,MAAM,IAAI,EAAE,SAAS,EAAG,GAAG,EAChDI,EAAe,KAAK,IACxB,EACAJ,EAAI,IAAI,OAASA,EAAI,MAAM,KACvB,KAAK,IAAIA,EAAI,IAAI,OAASA,EAAI,MAAM,OAAQ,KAAK,IAAI,EAAGE,EAAK,OAASF,EAAI,MAAM,OAAS,CAAC,CAAC,EAC3F,CACN,EACMK,EAAU,IAAI,OAAOF,EAAQ,OAAS,EAAIH,EAAI,MAAM,OAAS,CAAC,EACpE,MAAO,GAAGC,CAAM;AAAA,EAAKE,CAAO,MAAMD,CAAI;AAAA,EAAKG,CAAO,GAAG,IAAI,OAAOD,CAAY,CAAC,EAC/E,CAAC,EAAE,KAAK;AAAA;AAAA,CAAM,EAEd,MAAM,IAAIE,EAAaV,EAAO,OAAQ;AAAA,EAA4BE,CAAS,EAAE,CAC/E,CAEA,GAAI,CAACF,EAAO,OACV,MAAM,IAAIW,EAAe,gBAAiB,oCAAoC,EAGhF,IAAMnB,EAASQ,EAAO,OACtB,MAAO,CACL,OAAAR,EACA,oBAAqBE,EACnBF,EACAoB,GAA+Bb,CAAM,CACvC,EACA,qCAAsCJ,EAAqCH,CAAM,CACnF,CACF,CAEA,SAASK,GAAuBL,EAAoC,CAClE,IAAMqB,EAAS,CAAE,GAAGrB,EAAO,MAAM,MAAO,EACpCsB,EAAU,GAEd,GAAI,CAACD,EAAO,MACVA,EAAO,MAAQ,CACb,KAAM,SACN,SAAU,GACV,QAAS,CAAC,CACZ,EACAC,EAAU,OACL,IAAID,EAAO,MAAM,OAAS,SAC/B,MAAM,IAAIF,EAAe,eAAgB,oDAAoD,EACpFE,EAAO,MAAM,UAAY,SAClCA,EAAO,MAAQ,CAAE,GAAGA,EAAO,MAAO,QAAS,CAAC,CAAE,EAC9CC,EAAU,IAGZ,GAAI,CAACD,EAAO,KACVA,EAAO,KAAO,CACZ,KAAM,SACN,SAAU,GACV,QAAS,CAAE,OAAQ,CAAE,OAAQ,CAAC,CAAE,CAAE,EAClC,OAAQ,CACN,OAAQ,CACN,KAAM,SACN,SAAU,GACV,QAAS,CAAE,OAAQ,CAAC,CAAE,EACtB,OAAQ,CACN,OAAQ,CACN,KAAM,SACN,SAAU,GACV,QAAS,CAAC,CACZ,CACF,CACF,CACF,CACF,EACAC,EAAU,OACL,IAAID,EAAO,KAAK,OAAS,SAC9B,MAAM,IAAIF,EAAe,eAAgB,mDAAmD,EACvF,CACL,IAAII,EAAUF,EAAO,KACjBE,EAAQ,UAAY,SACtBA,EAAU,CAAE,GAAGA,EAAS,QAAS,CAAE,OAAQ,CAAE,OAAQ,CAAC,CAAE,CAAE,CAAE,EAC5DD,EAAU,IAGZ,IAAME,EAAYD,EAAQ,QAAU,CAAC,EAC/BE,EAAcD,EAAU,OAE9B,GAAI,CAACC,EACHF,EAAU,CACR,GAAGA,EACH,OAAQ,CACN,GAAGC,EACH,OAAQ,CACN,KAAM,SACN,SAAU,GACV,QAAS,CAAE,OAAQ,CAAC,CAAE,EACtB,OAAQ,CACN,OAAQ,CACN,KAAM,SACN,SAAU,GACV,QAAS,CAAC,CACZ,CACF,CACF,CACF,CACF,EACAF,EAAU,OACL,IAAIG,EAAY,OAAS,SAC9B,MAAM,IAAIN,EAAe,eAAgB,0DAA0D,EAC9F,CACL,IAAIO,EAAaD,EACbC,EAAW,UAAY,SACzBA,EAAa,CAAE,GAAGA,EAAY,QAAS,CAAE,OAAQ,CAAC,CAAE,CAAE,EACtDJ,EAAU,IAGZ,IAAMK,EAAcD,EAAW,QAAU,CAAC,EACpCE,EAAcD,EAAY,OAEhC,GAAI,CAACC,EACHF,EAAa,CACX,GAAGA,EACH,OAAQ,CACN,GAAGC,EACH,OAAQ,CACN,KAAM,SACN,SAAU,GACV,QAAS,CAAC,CACZ,CACF,CACF,EACAL,EAAU,OACL,IAAIM,EAAY,OAAS,SAC9B,MAAM,IAAIT,EAAe,eAAgB,iEAAiE,EACjGS,EAAY,UAAY,SACjCF,EAAa,CACX,GAAGA,EACH,OAAQ,CACN,GAAGC,EACH,OAAQ,CAAE,GAAGC,EAAa,QAAS,CAAC,CAAE,CACxC,CACF,EACAN,EAAU,IAGRI,IAAeD,IACjBF,EAAU,CACR,GAAGA,EACH,OAAQ,CACN,GAAGC,EACH,OAAQE,CACV,CACF,EAEJ,EAEIH,IAAYF,EAAO,OACrBA,EAAO,KAAOE,EAElB,EAEA,GAAI,CAACD,EACH,OAAOtB,EAGT,IAAM6B,EAAa,CACjB,GAAG7B,EACH,MAAO,CACL,GAAGA,EAAO,MACV,OAAAqB,CACF,CACF,EAEM,CAAE,KAAMS,EAAO,GAAGC,CAAkB,EAAIF,EAC9C,MAAO,CACL,GAAGA,EACH,KAAMG,EAAeD,CAAiB,CACxC,CACF,CAEA,SAASzC,GAA2BU,EAA4B,CAC9D,QAAWiC,KAAc,OAAO,KAAKjC,EAAO,SAAW,CAAC,CAAC,EACvD,GAAIiC,EAAW,WAAWnD,CAAyB,EACjD,MAAM,IAAIqC,EACR,qBACA,gBAAgBc,CAAU,qCAAqCnD,CAAyB,GAC1F,CAGN,CAEA,SAASe,EACPG,EACAkC,EACAC,EACa,CACb,IAAMC,EAAU,OAAO,YACrB,OAAO,KAAKpC,EAAO,OAAO,EAAE,IAAKqC,GAAS,CACxC,IAAMC,EAAoC,CACxC,OAAQ,YACR,KAAAD,CACF,EACA,cAAO,eAAeC,EAAKC,EAAoB,CAC7C,WAAY,GACZ,aAAc,GACd,SAAU,GACV,MAAO,OAAO,OAAOL,EAAqBG,CAAI,EAC1CH,EAAoBG,CAAI,EACxB,CAAC,CACP,CAAC,EACD,OAAO,eAAeC,EAAKE,EAAkC,CAC3D,WAAY,GACZ,aAAc,GACd,SAAU,GACV,MAAOL,EAAqCE,CAAI,GAAK,EACvD,CAAC,EACM,CAACA,EAAM,OAAO,OAAOC,CAAG,CAAC,CAClC,CAAC,CACH,EAEMG,EAAQ,OAAO,YACnB,OAAO,KAAKzC,EAAO,MAAM,MAAM,EAC5B,OAAQqC,GAAS,CAACA,EAAK,WAAW,GAAG,CAAC,EACtC,IAAKA,GAAS,CAACA,EAAM,OAAO,OAAO,CAClC,OAAQ,WACR,KAAAA,CACF,CAAC,CAAC,CAAC,CACP,EAEMK,EAAW,OAAO,YACtB,OAAO,KAAK1C,EAAO,SAAS,MAAM,EAC/B,IAAKqC,GAAS,CAACA,EAAM,OAAO,OAAO,CAClC,OAAQ,cACR,KAAAA,CACF,CAAC,CAAC,CAAC,CACP,EAEA,OAAO,OAAO,OAAO,CACnB,QAAS,OAAO,OAAOD,CAAO,EAC9B,MAAO,OAAO,OAAOK,CAAK,EAC1B,SAAU,OAAO,OAAOC,CAAQ,CAClC,CAAC,CACH,CAEA,SAAS5C,GAA0E,CACjF,MAAO,CACL6C,KACGC,IACmB,CACtB,IAAMC,EAAYF,EACZG,EAAWC,EAAa,EACxBC,EAAQC,GAAgBJ,EAAWD,CAAI,EAC7C,OAAOM,EACL,OAAOP,EAAO,IAAI,EAClBK,EACAF,CACF,CACF,CACF,CAEA,SAASK,GAAoBH,EAAoE,CAC/F,MAAI,CAACA,GAASA,EAAM,OAAS,UAAY,CAACA,EAAM,OACvC,CAAC,EAGH,OAAO,KAAKA,EAAM,MAAM,CACjC,CAEA,SAAS9C,EACPF,EACAoD,EAC+C,CAC/C,OAAO,OAAO,OAAO,OAAO,YACzB,OAAO,QAAQpD,EAAO,OAAO,EAAkD,IAAI,CAAC,CAACqC,EAAMM,CAAM,IAAM,CACtG,IAAMU,EAAiBD,IAAmBf,CAAI,EAC9C,GAAIgB,GAAkBA,EAAe,OAAS,EAC5C,MAAO,CAAChB,EAAM,OAAO,OAAO,CAAC,GAAGgB,CAAc,CAAC,CAAC,EAGlD,GAAIV,EAAO,QAAUA,EAAO,OAAO,OAAS,EAAG,CAC7C,IAAMW,EAAS,OAAO,OAAO,CAAC,GAAGX,EAAO,MAAM,CAAC,EAC/C,MAAO,CAACN,EAAMiB,CAAM,CACtB,CAEA,GAAI,CAACX,EAAO,OAASA,EAAO,MAAM,OAAS,UAAY,CAACA,EAAO,MAAM,OACnE,MAAO,CAACN,EAAM,CAAC,CAAC,EAGlB,IAAMkB,EAAaJ,GAAoBR,EAAO,KAAK,EACnD,MAAO,CAACN,EAAMkB,EAAW,QAAU,EAAIA,EAAa,IAAI,CAC1D,CAAC,CACH,CAAC,CACH,CAEA,SAASpD,EACPH,EACgE,CAChE,OAAO,OAAO,OAAO,OAAO,YACzB,OAAO,QAAQA,EAAO,OAAO,EAC3B,IAAI,CAAC,CAACqC,EAAMM,CAAM,IAAM,CAACN,EAAMmB,GAA0BxD,EAAQ2C,CAAM,CAAC,CAAC,CAC9E,CAAC,CACH,CAEA,SAASa,GACPxD,EACA2C,EACS,CACT,GAAIA,EAAO,QAAQ,SAAW,GAAKA,EAAO,UAAW,CACnD,IAAMc,EAAYC,EAChBf,EAAO,UACPA,EAAO,OAAO,CAAC,GAAK,GACpB3C,EAAO,KACT,EACA,OAAOyD,EAAYE,EAAgCF,EAAWzD,EAAO,KAAK,EAAI,EAChF,CAEA,GACE2C,EAAO,OAAO,OAAS,UACpBA,EAAO,MAAM,QACb,OAAO,KAAKA,EAAO,MAAM,MAAM,EAAE,SAAW,EAC/C,CACA,GAAM,CAACiB,CAAS,EAAI,OAAO,KAAKjB,EAAO,MAAM,MAAM,EAEnD,OADciB,EAAYjB,EAAO,MAAM,OAAOiB,CAAS,EAAI,SAC7C,OAAS,QACzB,CAEA,MAAO,EACT,CAEA,SAASF,EACPG,EACAD,EACAE,EACAC,EAA8B,CAAC,EACqB,CACpD,GAAIF,EAAW,OAAS,MAAO,CAC7B,GAAIE,EAAS,SAASF,EAAW,IAAI,EACnC,OAAO,KAGT,IAAMG,EAAOF,EAAMD,EAAW,IAAI,EAClC,OAAOG,EACHN,EAA6BM,EAAK,WAAYJ,EAAWE,EAAO,CAAC,GAAGC,EAAUF,EAAW,IAAI,CAAC,EAC9F,IACN,CAEA,GAAIA,EAAW,OAAS,QAAS,CAC/B,IAAMI,EAAeJ,EAAW,MAAM,OAAQK,GAC5C,CAACC,EAAyBD,EAAWJ,EAAOC,CAAQ,CACtD,EACA,OAAOE,EAAa,SAAW,EAC3BP,EAA6BO,EAAa,CAAC,EAAGL,EAAWE,EAAOC,CAAQ,EACxE,IACN,CAEA,OAAIF,EAAW,OAAS,SACf,KAGFA,EAAW,OAAOD,CAAS,GAAG,MAAQ,IAC/C,CAEA,SAASD,EACPE,EACAC,EACAC,EAA8B,CAAC,EACtB,CACT,GAAIF,EAAW,OAAS,MAAO,CAC7B,GAAIE,EAAS,SAASF,EAAW,IAAI,EACnC,MAAO,GAGT,IAAMG,EAAOF,EAAMD,EAAW,IAAI,EAClC,OAAOG,EACHL,EAAgCK,EAAK,WAAYF,EAAO,CAAC,GAAGC,EAAUF,EAAW,IAAI,CAAC,EACtF,EACN,CAEA,GAAIA,EAAW,OAAS,QAAS,CAC/B,IAAMI,EAAeJ,EAAW,MAAM,OAAQK,GAC5C,CAACC,EAAyBD,EAAWJ,EAAOC,CAAQ,CACtD,EACA,OAAOE,EAAa,SAAW,EAC3BN,EAAgCM,EAAa,CAAC,EAAGH,EAAOC,CAAQ,EAChE,EACN,CAEA,OACEF,EAAW,OAAS,UACjBA,EAAW,OAAS,UACnBA,EAAW,OAAS,aAAeA,EAAW,OAAS,QAE/D,CAEA,SAASM,EACPN,EACAC,EACAC,EAA8B,CAAC,EACtB,CACT,GAAIF,EAAW,OAAS,MAAO,CAC7B,GAAIE,EAAS,SAASF,EAAW,IAAI,EACnC,MAAO,GAGT,IAAMG,EAAOF,EAAMD,EAAW,IAAI,EAClC,OAAOG,EACHG,EAAyBH,EAAK,WAAYF,EAAO,CAAC,GAAGC,EAAUF,EAAW,IAAI,CAAC,EAC/E,EACN,CAEA,OACGA,EAAW,OAAS,aAAeA,EAAW,OAAS,QACpDA,EAAW,OAAS,WAAaA,EAAW,QAAU,IAE9D,CAEA,SAASzC,GACPb,EACyD,CACzD,IAAM6D,EAAQC,EAAY9D,CAAM,EAChC,GAAI6D,EAAM,YAAY,KAAMzD,GAAeA,EAAW,WAAa,OAAO,EACxE,OAGF,IAAM2D,EAASC,EAASH,EAAM,MAAM,EACpC,GAAKE,EAAO,QAIZ,OAAO,OAAO,OAAO,OAAO,YAC1BA,EAAO,QAAQ,OAAO,QACnB,OAAQE,GAAWA,EAAO,OAAS,QAAQ,EAC3C,IAAK7B,GAAW,CAACA,EAAO,KAAM,OAAO,OAAOA,EAAO,OAAO,IAAK8B,GAAUA,EAAM,IAAI,CAAC,CAAC,CAAC,CAC3F,CAAC,CACH,CAEA,SAASxB,GAAgBN,EAA0BC,EAAmC,CACpF,IAAM8B,EAAa,OAAO,OAAO/B,EAAQJ,CAAkB,EACvDI,EAAOJ,CAAkB,EACzB,CAAC,EACL,GAAIK,EAAK,SAAW,EAIpB,IAAI8B,IAAe,KAAM,CACvB,GAAI9B,EAAK,SAAW,GAAK+B,EAAc/B,EAAK,CAAC,CAAC,EAC5C,OAAOA,EAAK,CAAC,EAGf,MAAM,IAAIzB,EACR,sBACA,WAAW,OAAOwB,EAAO,IAAI,CAAC,0FAChC,CACF,CAEA,GAAI+B,EAAW,SAAW,EAAG,CAC3B,GAAI9B,EAAK,SAAW,EAClB,OAAOA,EAAK,CAAC,EAGf,MAAM,IAAIzB,EACR,sBACA,WAAW,OAAOwB,EAAO,IAAI,CAAC,iDAChC,CACF,CAEA,OACE+B,EAAW,SAAW,GACtB9B,EAAK,SAAW,GAChB+B,EAAc/B,EAAK,CAAC,CAAC,GACrBD,EAAOH,CAAgC,EAEhC,CAAE,CAACkC,EAAW,CAAC,GAAK,MAAM,EAAG9B,EAAK,CAAC,CAAE,EAI5C8B,EAAW,SAAW,GACtB9B,EAAK,SAAW,GAChBgC,GAA0BhC,EAAK,CAAC,EAAG8B,EAAW,CAAC,CAAC,GAK9C9B,EAAK,SAAW,GAAK+B,EAAc/B,EAAK,CAAC,CAAC,GAAK8B,EAAW,OAAS,EAC9D9B,EAAK,CAAC,EAGR,OAAO,YAAYA,EAAK,IAAI,CAACiC,EAAOC,IAAU,CACnDJ,EAAWI,CAAK,GAAK,MAAMA,CAAK,GAChCD,CACF,CAAC,CAAC,EACJ,CAEA,SAASF,EAAcE,EAAkD,CACvE,OAAO,OAAOA,GAAU,UAAYA,IAAU,MAAQ,CAAC,MAAM,QAAQA,CAAK,CAC5E,CAEA,SAASD,GACPC,EACAE,EACkC,CAClC,GAAI,CAACA,GAAa,CAACJ,EAAcE,CAAK,EACpC,MAAO,GAGT,IAAMG,EAAO,OAAO,KAAKH,CAAK,EAC9B,OAAOG,EAAK,SAAW,GAAKA,EAAK,CAAC,IAAMD,CAC1C,CAEA,SAASrF,EACPM,EACAiF,EACA/F,EACoB,CACpB,IAAMgG,EAAUC,EACVC,EAAOC,EAAWrF,EAAQ,CAC9B,YAAasF,EAAgBtF,EAAO,KAAK,EACzC,QAAAkF,CACF,CAAC,EACKK,EAAkBC,EAA0BN,CAAO,EAEzDE,EAAK,eAAevG,EAAsB,MACxC4G,EACAnC,EACAoC,IACqB,CACrB,GAAM,CAAE,QAAAC,CAAQ,EAAIC,GAAiBtC,EAAQoC,EAAI,QAAwB,EACzE,OAAOC,CACT,CAAC,EAED,OAAW,CAACE,EAAYC,CAAU,IAAK,OAAO,QAAQ5G,CAAO,EAAG,CAC9D,IAAM6G,EAAiC,MACrCN,EACAnC,EACAoC,IAEgB,MAAMI,EAAWxC,EAAQ,CACvC,SAAU0C,EACRC,EAA6BP,EAAI,SAAUT,CAAc,CAC3D,CACF,CAAC,EAIHG,EAAK,eAAeS,EAAYE,CAAW,CAC7C,CAEA,MAAO,CACL,KAAAX,EACA,gBAAAG,CACF,CACF,CAYA,SAASW,GAAiB5C,EAAoD,CAC5E,OACE,OAAOA,GAAW,UAClBA,IAAW,MACX,QAASA,GACT,SAAUA,CAEd,CAEA,SAASsC,GACPtC,EACA6C,EACsB,CACtB,GAAID,GAAiB5C,CAAM,EACzB,MAAO,CACL,QAAS,CAAC,CACR,GAAI,MACJ,KAAM8C,EAAoB9C,EAAO,IAAI,EACrC,MAAO+C,GAAoB/C,EAAO,GAAG,CACvC,CAAC,CACH,EAGF,GAAM,CAAE,KAAAgD,EAAM,OAAAC,CAAO,EAAIjD,EACnB9C,EAASgG,GAAiBF,EAAMH,CAAQ,EAC9C,OAAKI,EAIE,CACL,QAAS,CAAC,CACR,GAAI,MACJ,KAAMH,EAAoBG,CAAM,EAChC,MAAO/F,EAAO,KAChB,CAAC,CACH,EATS,CAAE,QAAS,CAAC,CAAE,CAUzB,CAEA,SAAS6F,GAAoBI,EAAsB,CACjD,OAAQA,EAAK,CACX,IAAK,OACH,OAAO1D,EAAa,EACtB,IAAK,YACL,IAAK,WACH,OAAO,KAAK,IAAI,EAClB,IAAK,eACH,OAAO,IAAI,KAAK,EAAE,YAAY,EAChC,QACE,OAAO,IACX,CACF,CAEA,SAASqD,EAAoBE,EAA6B,CACxD,IAAMI,EAAaC,EAAcL,CAAI,EAC/BM,EAAkBF,EAAW,WAAW,OAAO,EACjDA,EAAW,MAAM,CAAc,EAC/BA,EACJ,OAAOG,EAAwBD,CAAe,CAChD,CAEA,SAASD,EAAcL,EAAsB,CAC3C,OAAIA,EAAK,WAAW,GAAG,EACdA,EAAK,MAAM,CAAC,EAAE,QAAQ,MAAO,GAAG,EAElCA,CACT,CAEA,SAASE,GACPF,EACAH,EACoC,CAEpC,IAAMW,EADaH,EAAcL,CAAI,EACZ,MAAM,GAAG,EAClC,GAAIQ,EAAM,SAAW,EACnB,MAAO,CAAE,MAAO,OAAW,MAAO,EAAM,EAG1C,GAAM,CAACC,EAAM,GAAGC,CAAI,EAAIF,EACpBG,EAEJ,OAAQF,EAAM,CACZ,IAAK,OACHE,EAAUd,EAAS,KACnB,MACF,IAAK,WACHc,EAAUd,EAAS,SACnB,MACF,IAAK,SACHc,EAAUd,EAAS,OACnB,MACF,IAAK,OACHc,EAAUd,EAAS,KACnB,MACF,QACEc,EAAUd,EAAS,KACnBa,EAAK,QAAQD,CAAI,EACjB,KACJ,CAEA,QAAWG,KAAQF,EAAM,CACvB,GAAIC,GAAY,MAAiC,OAAOA,GAAY,SAClE,MAAO,CAAE,MAAO,OAAW,MAAO,EAAM,EAE1CA,EAAWA,EAAoCC,CAAI,CACrD,CAEA,MAAO,CAAE,MAAOD,EAAS,MAAOA,IAAY,MAAU,CACxD,CACA,SAASlE,GAAuB,CAC9B,OAAI,OAAO,OAAW,KAAe,OAAO,OAAO,YAAe,WACzD,OAAO,WAAW,EAGpB,uCAAuC,QAAQ,QAAUoE,GAAS,CACvE,IAAMC,EAAU,KAAK,OAAO,EAAI,GAAM,EAEtC,OADcD,IAAS,IAAMC,EAAUA,EAAS,EAAO,GAC1C,SAAS,EAAE,CAC1B,CAAC,CACH,CC7vBA,OAAS,kBAAAC,OAAsB","names":["createHostContextProvider","createHost","defaultRuntime","createCoreIntent","extractDefaults","hashSchemaSync","semanticPathToPatchPath","compileMelDomain","parseMel","tokenizeMel","RESERVED_EFFECT_TYPE","RESERVED_NAMESPACE_PREFIX","BASE_LAWS","createManifesto","schemaInput","effects","ReservedEffectError","resolved","resolveSchema","validateReservedNamespaces","manifesto","activateComposable","internalHost","createInternalHost","createBaseRuntimeInstance","createRuntimeKernel","buildTypedMel","buildCreateIntent","attachRuntimeKernelFactory","schema","compileSchema","deriveActionParamMetadata","deriveSingleParamObjectValueMetadata","normalizedSchema","withPlatformNamespaces","buildSnapshotProjectionPlan","source","result","compileMelDomain","formatted","diagnostic","loc","header","line","lineNum","underlineLen","padding","CompileError","ManifestoError","extractActionParamOrderFromMel","fields","changed","nextMel","melFields","guardsField","nextGuards","guardFields","intentField","nextSchema","_hash","schemaWithoutHash","hashSchemaSync","actionType","actionParamMetadata","actionSingleParamObjectValueMetadata","actions","name","ref","ACTION_PARAM_NAMES","ACTION_SINGLE_PARAM_OBJECT_VALUE","state","computed","action","args","actionRef","intentId","generateUUID","input","packIntentInput","createCoreIntent","getActionParamNames","actionParamOrder","preferredOrder","params","fieldNames","isSingleParamObjectValued","fieldType","getObjectFieldTypeDefinition","isPlainObjectLikeTypeDefinition","fieldName","definition","types","seenRefs","next","nonNullTypes","candidate","isNullLikeTypeDefinition","lexed","tokenizeMel","parsed","parseMel","member","param","paramNames","isPlainObject","isNamedSingleParamBinding","value","index","paramName","keys","projectionPlan","runtime","defaultRuntime","host","createHost","extractDefaults","contextProvider","createHostContextProvider","_type","ctx","patches","executeSystemGet","effectType","appHandler","hostHandler","cloneAndDeepFreeze","projectEffectContextSnapshot","isGenerateParams","snapshot","normalizeTargetPath","generateSystemValue","path","target","resolvePathValue","key","normalized","normalizePath","withoutDataRoot","semanticPathToPatchPath","parts","root","rest","current","part","char","random","createSnapshot"]}
1
+ {"version":3,"sources":["../src/create-manifesto.ts","../src/index.ts"],"sourcesContent":["import {\n type EffectContext as HostEffectContext,\n type EffectHandler as HostEffectHandler,\n type HostContextProvider,\n type ManifestoHost,\n createHostContextProvider,\n createHost,\n defaultRuntime,\n} from \"@manifesto-ai/host\";\nimport {\n createIntent as createCoreIntent,\n extractDefaults,\n hashSchemaSync,\n semanticPathToPatchPath,\n type DomainSchema,\n type Intent,\n type Patch,\n type Snapshot as CoreSnapshot,\n} from \"@manifesto-ai/core\";\nimport {\n compileMelDomain,\n parse as parseMel,\n tokenize as tokenizeMel,\n} from \"@manifesto-ai/compiler\";\n\nimport {\n ACTION_PARAM_NAMES,\n ACTION_SINGLE_PARAM_OBJECT_VALUE,\n activateComposable,\n attachRuntimeKernelFactory,\n createBaseRuntimeInstance,\n createRuntimeKernel,\n} from \"./internal.js\";\nimport {\n type CreateIntentArgs,\n type BaseComposableLaws,\n type ComposableManifesto,\n type EffectHandler,\n type ManifestoDomainShape,\n type TypedActionRef,\n type TypedCreateIntent,\n type TypedIntent,\n type TypedMEL,\n} from \"./types.js\";\nimport {\n buildSnapshotProjectionPlan,\n cloneAndDeepFreeze,\n projectEffectContextSnapshot,\n type SnapshotProjectionPlan,\n} from \"./snapshot-projection.js\";\nimport {\n CompileError,\n ManifestoError,\n ReservedEffectError,\n} from \"./errors.js\";\n\nconst RESERVED_EFFECT_TYPE = \"system.get\";\nconst RESERVED_NAMESPACE_PREFIX = \"system.\";\nconst BASE_LAWS: BaseComposableLaws = Object.freeze({ __baseLaws: true });\n\ntype RuntimeActionRef = TypedActionRef<ManifestoDomainShape> & {\n readonly [ACTION_PARAM_NAMES]: readonly string[] | null;\n readonly [ACTION_SINGLE_PARAM_OBJECT_VALUE]?: boolean;\n};\n\ntype ActionParamMetadata = readonly string[] | null;\ntype ActionSingleParamObjectValueMetadata = boolean;\n\ntype ResolvedSchema = {\n readonly schema: DomainSchema;\n readonly actionParamMetadata: Readonly<Record<string, ActionParamMetadata>>;\n readonly actionSingleParamObjectValueMetadata: Readonly<Record<string, ActionSingleParamObjectValueMetadata>>;\n readonly projectionPlan: SnapshotProjectionPlan;\n};\n\ntype CompiledSchema = Omit<ResolvedSchema, \"projectionPlan\">;\ntype InternalHostBundle = {\n readonly host: ManifestoHost;\n readonly contextProvider: HostContextProvider;\n};\n\nexport function createManifesto<T extends ManifestoDomainShape>(\n schemaInput: DomainSchema | string,\n effects: Record<string, EffectHandler>,\n): ComposableManifesto<T, BaseComposableLaws> {\n if (RESERVED_EFFECT_TYPE in effects) {\n throw new ReservedEffectError(RESERVED_EFFECT_TYPE);\n }\n\n const resolved = resolveSchema(schemaInput);\n validateReservedNamespaces(resolved.schema);\n\n const manifesto = {\n _laws: BASE_LAWS,\n schema: resolved.schema,\n activate() {\n activateComposable(manifesto);\n const internalHost = createInternalHost(\n resolved.schema,\n resolved.projectionPlan,\n effects,\n );\n return createBaseRuntimeInstance(\n createRuntimeKernel<T>({\n schema: resolved.schema,\n projectionPlan: resolved.projectionPlan,\n host: internalHost.host,\n hostContextProvider: internalHost.contextProvider,\n MEL: buildTypedMel<T>(\n resolved.schema,\n resolved.actionParamMetadata,\n resolved.actionSingleParamObjectValueMetadata,\n ),\n createIntent: buildCreateIntent<T>(),\n }),\n );\n },\n };\n\n return attachRuntimeKernelFactory(manifesto, () => {\n const internalHost = createInternalHost(\n resolved.schema,\n resolved.projectionPlan,\n effects,\n );\n return createRuntimeKernel<T>({\n schema: resolved.schema,\n projectionPlan: resolved.projectionPlan,\n host: internalHost.host,\n hostContextProvider: internalHost.contextProvider,\n MEL: buildTypedMel<T>(\n resolved.schema,\n resolved.actionParamMetadata,\n resolved.actionSingleParamObjectValueMetadata,\n ),\n createIntent: buildCreateIntent<T>(),\n });\n });\n}\n\nfunction resolveSchema(schema: DomainSchema | string): ResolvedSchema {\n const resolved: CompiledSchema = typeof schema === \"string\"\n ? compileSchema(schema)\n : {\n schema,\n actionParamMetadata: deriveActionParamMetadata(schema),\n actionSingleParamObjectValueMetadata: deriveSingleParamObjectValueMetadata(schema),\n };\n\n const normalizedSchema = withPlatformNamespaces(resolved.schema);\n return {\n schema: normalizedSchema,\n actionParamMetadata: resolved.actionParamMetadata,\n actionSingleParamObjectValueMetadata: resolved.actionSingleParamObjectValueMetadata,\n projectionPlan: buildSnapshotProjectionPlan(normalizedSchema),\n };\n}\n\nfunction compileSchema(source: string): CompiledSchema {\n const result = compileMelDomain(source, { mode: \"domain\" });\n\n if (result.errors.length > 0) {\n const formatted = result.errors.map((diagnostic) => {\n const loc = diagnostic.location;\n if (!loc || (loc.start.line === 0 && loc.start.column === 0)) {\n return `[${diagnostic.code}] ${diagnostic.message}`;\n }\n\n const header = `[${diagnostic.code}] ${diagnostic.message} (${loc.start.line}:${loc.start.column})`;\n const line = source.split(\"\\n\")[loc.start.line - 1];\n if (!line) {\n return header;\n }\n\n const lineNum = String(loc.start.line).padStart(4, \" \");\n const underlineLen = Math.max(\n 1,\n loc.end.line === loc.start.line\n ? Math.min(loc.end.column - loc.start.column, Math.max(1, line.length - loc.start.column + 1))\n : 1,\n );\n const padding = \" \".repeat(lineNum.length + 3 + loc.start.column - 1);\n return `${header}\\n${lineNum} | ${line}\\n${padding}${\"^\".repeat(underlineLen)}`;\n }).join(\"\\n\\n\");\n\n throw new CompileError(result.errors, `MEL compilation failed:\\n${formatted}`);\n }\n\n if (!result.schema) {\n throw new ManifestoError(\"COMPILE_ERROR\", \"MEL compilation produced no schema\");\n }\n\n const schema = result.schema as DomainSchema;\n return {\n schema,\n actionParamMetadata: deriveActionParamMetadata(\n schema,\n extractActionParamOrderFromMel(source),\n ),\n actionSingleParamObjectValueMetadata: deriveSingleParamObjectValueMetadata(schema),\n };\n}\n\nfunction withPlatformNamespaces(schema: DomainSchema): DomainSchema {\n const fields = { ...schema.state.fields };\n let changed = false;\n\n if (!fields.$host) {\n fields.$host = {\n type: \"object\",\n required: false,\n default: {},\n };\n changed = true;\n } else if (fields.$host.type !== \"object\") {\n throw new ManifestoError(\"SCHEMA_ERROR\", \"Reserved namespace '$host' must be an object field\");\n } else if (fields.$host.default === undefined) {\n fields.$host = { ...fields.$host, default: {} };\n changed = true;\n }\n\n if (!fields.$mel) {\n fields.$mel = {\n type: \"object\",\n required: false,\n default: { guards: { intent: {} } },\n fields: {\n guards: {\n type: \"object\",\n required: false,\n default: { intent: {} },\n fields: {\n intent: {\n type: \"object\",\n required: false,\n default: {},\n },\n },\n },\n },\n };\n changed = true;\n } else if (fields.$mel.type !== \"object\") {\n throw new ManifestoError(\"SCHEMA_ERROR\", \"Reserved namespace '$mel' must be an object field\");\n } else {\n let nextMel = fields.$mel;\n if (nextMel.default === undefined) {\n nextMel = { ...nextMel, default: { guards: { intent: {} } } };\n changed = true;\n }\n\n const melFields = nextMel.fields ?? {};\n const guardsField = melFields.guards;\n\n if (!guardsField) {\n nextMel = {\n ...nextMel,\n fields: {\n ...melFields,\n guards: {\n type: \"object\",\n required: false,\n default: { intent: {} },\n fields: {\n intent: {\n type: \"object\",\n required: false,\n default: {},\n },\n },\n },\n },\n };\n changed = true;\n } else if (guardsField.type !== \"object\") {\n throw new ManifestoError(\"SCHEMA_ERROR\", \"Reserved namespace '$mel.guards' must be an object field\");\n } else {\n let nextGuards = guardsField;\n if (nextGuards.default === undefined) {\n nextGuards = { ...nextGuards, default: { intent: {} } };\n changed = true;\n }\n\n const guardFields = nextGuards.fields ?? {};\n const intentField = guardFields.intent;\n\n if (!intentField) {\n nextGuards = {\n ...nextGuards,\n fields: {\n ...guardFields,\n intent: {\n type: \"object\",\n required: false,\n default: {},\n },\n },\n };\n changed = true;\n } else if (intentField.type !== \"object\") {\n throw new ManifestoError(\"SCHEMA_ERROR\", \"Reserved namespace '$mel.guards.intent' must be an object field\");\n } else if (intentField.default === undefined) {\n nextGuards = {\n ...nextGuards,\n fields: {\n ...guardFields,\n intent: { ...intentField, default: {} },\n },\n };\n changed = true;\n }\n\n if (nextGuards !== guardsField) {\n nextMel = {\n ...nextMel,\n fields: {\n ...melFields,\n guards: nextGuards,\n },\n };\n }\n }\n\n if (nextMel !== fields.$mel) {\n fields.$mel = nextMel;\n }\n }\n\n if (!changed) {\n return schema;\n }\n\n const nextSchema = {\n ...schema,\n state: {\n ...schema.state,\n fields,\n },\n };\n\n const { hash: _hash, ...schemaWithoutHash } = nextSchema;\n return {\n ...nextSchema,\n hash: hashSchemaSync(schemaWithoutHash),\n };\n}\n\nfunction validateReservedNamespaces(schema: DomainSchema): void {\n for (const actionType of Object.keys(schema.actions ?? {})) {\n if (actionType.startsWith(RESERVED_NAMESPACE_PREFIX)) {\n throw new ManifestoError(\n \"RESERVED_NAMESPACE\",\n `Action type \"${actionType}\" uses reserved namespace prefix \"${RESERVED_NAMESPACE_PREFIX}\"`,\n );\n }\n }\n}\n\nfunction buildTypedMel<T extends ManifestoDomainShape>(\n schema: DomainSchema,\n actionParamMetadata: Readonly<Record<string, ActionParamMetadata>>,\n actionSingleParamObjectValueMetadata: Readonly<Record<string, ActionSingleParamObjectValueMetadata>>,\n): TypedMEL<T> {\n const actions = Object.fromEntries(\n Object.keys(schema.actions).map((name) => {\n const ref: Record<PropertyKey, unknown> = {\n __kind: \"ActionRef\",\n name,\n };\n Object.defineProperty(ref, ACTION_PARAM_NAMES, {\n enumerable: false,\n configurable: false,\n writable: false,\n value: Object.hasOwn(actionParamMetadata, name)\n ? actionParamMetadata[name]\n : [],\n });\n Object.defineProperty(ref, ACTION_SINGLE_PARAM_OBJECT_VALUE, {\n enumerable: false,\n configurable: false,\n writable: false,\n value: actionSingleParamObjectValueMetadata[name] ?? false,\n });\n return [name, Object.freeze(ref)];\n }),\n );\n\n const state = Object.fromEntries(\n Object.keys(schema.state.fields)\n .filter((name) => !name.startsWith(\"$\"))\n .map((name) => [name, Object.freeze({\n __kind: \"FieldRef\",\n name,\n })]),\n );\n\n const computed = Object.fromEntries(\n Object.keys(schema.computed.fields)\n .map((name) => [name, Object.freeze({\n __kind: \"ComputedRef\",\n name,\n })]),\n );\n\n return Object.freeze({\n actions: Object.freeze(actions),\n state: Object.freeze(state),\n computed: Object.freeze(computed),\n }) as unknown as TypedMEL<T>;\n}\n\nfunction buildCreateIntent<T extends ManifestoDomainShape>(): TypedCreateIntent<T> {\n return <K extends keyof T[\"actions\"]>(\n action: TypedActionRef<T, K>,\n ...args: CreateIntentArgs<T, K>\n ): TypedIntent<T, K> => {\n const actionRef = action as unknown as RuntimeActionRef;\n const intentId = generateUUID();\n const input = packIntentInput(actionRef, args);\n return createCoreIntent(\n String(action.name),\n input,\n intentId,\n ) as TypedIntent<T, K>;\n };\n}\n\nfunction getActionParamNames(input: DomainSchema[\"actions\"][string][\"input\"]): readonly string[] {\n if (!input || input.type !== \"object\" || !input.fields) {\n return [];\n }\n\n return Object.keys(input.fields);\n}\n\nfunction deriveActionParamMetadata(\n schema: DomainSchema,\n actionParamOrder?: Readonly<Record<string, readonly string[]>>,\n): Readonly<Record<string, ActionParamMetadata>> {\n return Object.freeze(Object.fromEntries(\n (Object.entries(schema.actions) as [string, DomainSchema[\"actions\"][string]][]).map(([name, action]) => {\n const preferredOrder = actionParamOrder?.[name];\n if (preferredOrder && preferredOrder.length > 0) {\n return [name, Object.freeze([...preferredOrder])];\n }\n\n if (action.params && action.params.length > 0) {\n const params = Object.freeze([...action.params]);\n return [name, params];\n }\n\n if (!action.input || action.input.type !== \"object\" || !action.input.fields) {\n return [name, []];\n }\n\n const fieldNames = getActionParamNames(action.input);\n return [name, fieldNames.length <= 1 ? fieldNames : null];\n }),\n ));\n}\n\nfunction deriveSingleParamObjectValueMetadata(\n schema: DomainSchema,\n): Readonly<Record<string, ActionSingleParamObjectValueMetadata>> {\n return Object.freeze(Object.fromEntries(\n (Object.entries(schema.actions) as [string, DomainSchema[\"actions\"][string]][])\n .map(([name, action]) => [name, isSingleParamObjectValued(schema, action)]),\n ));\n}\n\nfunction isSingleParamObjectValued(\n schema: DomainSchema,\n action: DomainSchema[\"actions\"][string],\n): boolean {\n if (action.params?.length === 1 && action.inputType) {\n const fieldType = getObjectFieldTypeDefinition(\n action.inputType,\n action.params[0] ?? \"\",\n schema.types,\n );\n return fieldType ? isPlainObjectLikeTypeDefinition(fieldType, schema.types) : false;\n }\n\n if (\n action.input?.type === \"object\"\n && action.input.fields\n && Object.keys(action.input.fields).length === 1\n ) {\n const [fieldName] = Object.keys(action.input.fields);\n const field = fieldName ? action.input.fields[fieldName] : undefined;\n return field?.type === \"object\";\n }\n\n return false;\n}\n\nfunction getObjectFieldTypeDefinition(\n definition: DomainSchema[\"types\"][string][\"definition\"],\n fieldName: string,\n types: DomainSchema[\"types\"],\n seenRefs: readonly string[] = [],\n): DomainSchema[\"types\"][string][\"definition\"] | null {\n if (definition.kind === \"ref\") {\n if (seenRefs.includes(definition.name)) {\n return null;\n }\n\n const next = types[definition.name];\n return next\n ? getObjectFieldTypeDefinition(next.definition, fieldName, types, [...seenRefs, definition.name])\n : null;\n }\n\n if (definition.kind === \"union\") {\n const nonNullTypes = definition.types.filter((candidate: typeof definition.types[number]) =>\n !isNullLikeTypeDefinition(candidate, types, seenRefs)\n );\n return nonNullTypes.length === 1\n ? getObjectFieldTypeDefinition(nonNullTypes[0], fieldName, types, seenRefs)\n : null;\n }\n\n if (definition.kind !== \"object\") {\n return null;\n }\n\n return definition.fields[fieldName]?.type ?? null;\n}\n\nfunction isPlainObjectLikeTypeDefinition(\n definition: DomainSchema[\"types\"][string][\"definition\"],\n types: DomainSchema[\"types\"],\n seenRefs: readonly string[] = [],\n): boolean {\n if (definition.kind === \"ref\") {\n if (seenRefs.includes(definition.name)) {\n return false;\n }\n\n const next = types[definition.name];\n return next\n ? isPlainObjectLikeTypeDefinition(next.definition, types, [...seenRefs, definition.name])\n : false;\n }\n\n if (definition.kind === \"union\") {\n const nonNullTypes = definition.types.filter((candidate: typeof definition.types[number]) =>\n !isNullLikeTypeDefinition(candidate, types, seenRefs)\n );\n return nonNullTypes.length === 1\n ? isPlainObjectLikeTypeDefinition(nonNullTypes[0], types, seenRefs)\n : false;\n }\n\n return (\n definition.kind === \"object\"\n || definition.kind === \"record\"\n || (definition.kind === \"primitive\" && definition.type === \"object\")\n );\n}\n\nfunction isNullLikeTypeDefinition(\n definition: DomainSchema[\"types\"][string][\"definition\"],\n types: DomainSchema[\"types\"],\n seenRefs: readonly string[] = [],\n): boolean {\n if (definition.kind === \"ref\") {\n if (seenRefs.includes(definition.name)) {\n return false;\n }\n\n const next = types[definition.name];\n return next\n ? isNullLikeTypeDefinition(next.definition, types, [...seenRefs, definition.name])\n : false;\n }\n\n return (\n (definition.kind === \"primitive\" && definition.type === \"null\")\n || (definition.kind === \"literal\" && definition.value === null)\n );\n}\n\nfunction extractActionParamOrderFromMel(\n source: string,\n): Readonly<Record<string, readonly string[]>> | undefined {\n const lexed = tokenizeMel(source);\n if (lexed.diagnostics.some((diagnostic) => diagnostic.severity === \"error\")) {\n return undefined;\n }\n\n const parsed = parseMel(lexed.tokens);\n if (!parsed.program) {\n return undefined;\n }\n\n return Object.freeze(Object.fromEntries(\n parsed.program.domain.members\n .filter((member) => member.kind === \"action\")\n .map((action) => [action.name, Object.freeze(action.params.map((param) => param.name))]),\n ));\n}\n\nfunction packIntentInput(action: RuntimeActionRef, args: readonly unknown[]): unknown {\n const paramNames = Object.hasOwn(action, ACTION_PARAM_NAMES)\n ? action[ACTION_PARAM_NAMES]\n : [];\n if (args.length === 0) {\n return undefined;\n }\n\n if (paramNames === null) {\n if (args.length === 1 && isPlainObject(args[0])) {\n return args[0];\n }\n\n throw new ManifestoError(\n \"INVALID_INTENT_ARGS\",\n `Action \"${String(action.name)}\" requires a single object argument because positional parameter metadata is unavailable`,\n );\n }\n\n if (paramNames.length === 0) {\n if (args.length === 1) {\n return args[0];\n }\n\n throw new ManifestoError(\n \"INVALID_INTENT_ARGS\",\n `Action \"${String(action.name)}\" does not accept multiple positional arguments`,\n );\n }\n\n if (\n paramNames.length === 1 &&\n args.length === 1 &&\n isPlainObject(args[0]) &&\n action[ACTION_SINGLE_PARAM_OBJECT_VALUE]\n ) {\n return { [paramNames[0] ?? \"arg0\"]: args[0] };\n }\n\n if (\n paramNames.length === 1 &&\n args.length === 1 &&\n isNamedSingleParamBinding(args[0], paramNames[0])\n ) {\n return args[0];\n }\n\n if (args.length === 1 && isPlainObject(args[0]) && paramNames.length > 1) {\n return args[0];\n }\n\n return Object.fromEntries(args.map((value, index) => [\n paramNames[index] ?? `arg${index}`,\n value,\n ]));\n}\n\nfunction isPlainObject(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nfunction isNamedSingleParamBinding(\n value: unknown,\n paramName: string | undefined,\n): value is Record<string, unknown> {\n if (!paramName || !isPlainObject(value)) {\n return false;\n }\n\n const keys = Object.keys(value);\n return keys.length === 1 && keys[0] === paramName;\n}\n\nfunction createInternalHost(\n schema: DomainSchema,\n projectionPlan: SnapshotProjectionPlan,\n effects: Record<string, EffectHandler>,\n): InternalHostBundle {\n const runtime = defaultRuntime;\n const host = createHost(schema, {\n initialData: extractDefaults(schema.state),\n runtime,\n });\n const contextProvider = createHostContextProvider(runtime);\n\n host.registerEffect(RESERVED_EFFECT_TYPE, async (\n _type: string,\n params: Record<string, unknown>,\n ctx: HostEffectContext,\n ): Promise<Patch[]> => {\n const { patches } = executeSystemGet(params, ctx.snapshot as CoreSnapshot);\n return patches;\n });\n\n for (const [effectType, appHandler] of Object.entries(effects)) {\n const hostHandler: HostEffectHandler = async (\n _type: string,\n params: Record<string, unknown>,\n ctx: HostEffectContext,\n ): Promise<Patch[]> => {\n const patches = await appHandler(params, {\n snapshot: cloneAndDeepFreeze(\n projectEffectContextSnapshot(ctx.snapshot, projectionPlan),\n ),\n });\n return patches as Patch[];\n };\n\n host.registerEffect(effectType, hostHandler);\n }\n\n return {\n host,\n contextProvider,\n };\n}\n\ninterface SystemGetReadParams {\n path: string;\n target?: string;\n}\n\ninterface SystemGetGenerateParams {\n key: string;\n into: string;\n}\n\nfunction isGenerateParams(params: unknown): params is SystemGetGenerateParams {\n return (\n typeof params === \"object\" &&\n params !== null &&\n \"key\" in params &&\n \"into\" in params\n );\n}\n\nfunction executeSystemGet(\n params: unknown,\n snapshot: CoreSnapshot,\n): { patches: Patch[] } {\n if (isGenerateParams(params)) {\n return {\n patches: [{\n op: \"set\",\n path: normalizeTargetPath(params.into),\n value: generateSystemValue(params.key),\n }],\n };\n }\n\n const { path, target } = params as SystemGetReadParams;\n const result = resolvePathValue(path, snapshot);\n if (!target) {\n return { patches: [] };\n }\n\n return {\n patches: [{\n op: \"set\",\n path: normalizeTargetPath(target),\n value: result.value,\n }],\n };\n}\n\nfunction generateSystemValue(key: string): unknown {\n switch (key) {\n case \"uuid\":\n return generateUUID();\n case \"timestamp\":\n case \"time.now\":\n return Date.now();\n case \"isoTimestamp\":\n return new Date().toISOString();\n default:\n return null;\n }\n}\n\nfunction normalizeTargetPath(path: string): Patch[\"path\"] {\n const normalized = normalizePath(path);\n const withoutDataRoot = normalized.startsWith(\"data.\")\n ? normalized.slice(\"data.\".length)\n : normalized;\n return semanticPathToPatchPath(withoutDataRoot);\n}\n\nfunction normalizePath(path: string): string {\n if (path.startsWith(\"/\")) {\n return path.slice(1).replace(/\\//g, \".\");\n }\n return path;\n}\n\nfunction resolvePathValue(\n path: string,\n snapshot: CoreSnapshot,\n): { value: unknown; found: boolean } {\n const normalized = normalizePath(path);\n const parts = normalized.split(\".\");\n if (parts.length === 0) {\n return { value: undefined, found: false };\n }\n\n const [root, ...rest] = parts;\n let current: unknown;\n\n switch (root) {\n case \"data\":\n current = snapshot.data;\n break;\n case \"computed\":\n current = snapshot.computed;\n break;\n case \"system\":\n current = snapshot.system;\n break;\n case \"meta\":\n current = snapshot.meta;\n break;\n default:\n current = snapshot.data;\n rest.unshift(root);\n break;\n }\n\n for (const part of rest) {\n if (current === null || current === undefined || typeof current !== \"object\") {\n return { value: undefined, found: false };\n }\n current = (current as Record<string, unknown>)[part];\n }\n\n return { value: current, found: current !== undefined };\n}\nfunction generateUUID(): string {\n if (typeof crypto !== \"undefined\" && typeof crypto.randomUUID === \"function\") {\n return crypto.randomUUID();\n }\n\n return \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replace(/[xy]/g, (char) => {\n const random = (Math.random() * 16) | 0;\n const value = char === \"x\" ? random : (random & 0x3) | 0x8;\n return value.toString(16);\n });\n}\n","/**\n * @manifesto-ai/sdk\n *\n * Activation-first SDK package surface.\n *\n * @see sdk-SPEC.md\n * @see ADR-017\n * @packageDocumentation\n */\n\nexport type { SdkManifest } from \"./manifest.js\";\n\nexport { createManifesto } from \"./create-manifesto.js\";\n\nexport type {\n ActivatedInstance,\n ActionArgs,\n CreateIntentArgs,\n ActionObjectBindingArgs,\n DispatchBlocker,\n TypedActionMetadata,\n TypedGetActionMetadata,\n TypedGetIntentBlockers,\n TypedIsIntentDispatchable,\n BaseLaws,\n BaseComposableLaws,\n CanonicalPlatformNamespaces,\n CanonicalSnapshot,\n ComposableManifesto,\n ComputedRef,\n EffectContext,\n EffectHandler,\n FieldRef,\n GovernedComposableLaws,\n GovernanceLaws,\n IntentExplanation,\n LineageComposableLaws,\n LineageLaws,\n ManifestoBaseInstance,\n ManifestoDecoratedRuntimeByLaws,\n ManifestoDomainShape,\n ManifestoEvent,\n ManifestoEventMap,\n ManifestoEventPayload,\n ManifestoRuntimeByLaws,\n Selector,\n SimulateResult,\n SchemaGraph,\n SchemaGraphEdge,\n SchemaGraphEdgeRelation,\n SchemaGraphNode,\n SchemaGraphNodeId,\n SchemaGraphNodeKind,\n SchemaGraphNodeRef,\n Snapshot,\n TypedActionRef,\n TypedCommitAsync,\n TypedCreateIntent,\n TypedDispatchAsync,\n TypedIntent,\n TypedMEL,\n TypedOn,\n TypedSimulate,\n TypedSubscribe,\n Unsubscribe,\n} from \"./types.js\";\n\nexport {\n AlreadyActivatedError,\n CompileError,\n DisposedError,\n ManifestoError,\n ReservedEffectError,\n} from \"./errors.js\";\n\nexport type { CompileDiagnostic } from \"./errors.js\";\n\nexport type {\n DomainSchema,\n Intent,\n Patch,\n Snapshot as CoreSnapshot,\n} from \"@manifesto-ai/core\";\n\nexport { createSnapshot } from \"@manifesto-ai/core\";\n"],"mappings":"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","names":["createHostContextProvider","createHost","defaultRuntime","createCoreIntent","extractDefaults","hashSchemaSync","semanticPathToPatchPath","compileMelDomain","parseMel","tokenizeMel","RESERVED_EFFECT_TYPE","RESERVED_NAMESPACE_PREFIX","BASE_LAWS","createManifesto","schemaInput","effects","ReservedEffectError","resolved","resolveSchema","validateReservedNamespaces","manifesto","activateComposable","internalHost","createInternalHost","createBaseRuntimeInstance","createRuntimeKernel","buildTypedMel","buildCreateIntent","attachRuntimeKernelFactory","schema","compileSchema","deriveActionParamMetadata","deriveSingleParamObjectValueMetadata","normalizedSchema","withPlatformNamespaces","buildSnapshotProjectionPlan","source","result","compileMelDomain","formatted","diagnostic","loc","header","line","lineNum","underlineLen","padding","CompileError","ManifestoError","extractActionParamOrderFromMel","fields","changed","nextMel","melFields","guardsField","nextGuards","guardFields","intentField","nextSchema","_hash","schemaWithoutHash","hashSchemaSync","actionType","actionParamMetadata","actionSingleParamObjectValueMetadata","actions","name","ref","ACTION_PARAM_NAMES","ACTION_SINGLE_PARAM_OBJECT_VALUE","state","computed","action","args","actionRef","intentId","generateUUID","input","packIntentInput","createCoreIntent","getActionParamNames","actionParamOrder","preferredOrder","params","fieldNames","isSingleParamObjectValued","fieldType","getObjectFieldTypeDefinition","isPlainObjectLikeTypeDefinition","fieldName","definition","types","seenRefs","next","nonNullTypes","candidate","isNullLikeTypeDefinition","lexed","tokenizeMel","parsed","parseMel","member","param","paramNames","isPlainObject","isNamedSingleParamBinding","value","index","paramName","keys","projectionPlan","runtime","defaultRuntime","host","createHost","extractDefaults","contextProvider","createHostContextProvider","_type","ctx","patches","executeSystemGet","effectType","appHandler","hostHandler","cloneAndDeepFreeze","projectEffectContextSnapshot","isGenerateParams","snapshot","normalizeTargetPath","generateSystemValue","path","target","resolvePathValue","key","normalized","normalizePath","withoutDataRoot","semanticPathToPatchPath","parts","root","rest","current","part","char","random","createSnapshot"]}
package/dist/provider.js CHANGED
@@ -1,2 +1,2 @@
1
- import{k as t,l as e,m as a,o as n,p as o,q as i,r}from"./chunk-SDGXZPPJ.js";export{i as activateComposable,o as assertComposableNotActivated,a as attachExtensionKernel,t as attachRuntimeKernelFactory,r as createRuntimeKernel,n as getActivationState,e as getRuntimeKernelFactory};
1
+ import{k as t,l as e,m as a,o as n,p as o,q as i,r}from"./chunk-WZ4OLF45.js";export{i as activateComposable,o as assertComposableNotActivated,a as attachExtensionKernel,t as attachRuntimeKernelFactory,r as createRuntimeKernel,n as getActivationState,e as getRuntimeKernelFactory};
2
2
  //# sourceMappingURL=provider.js.map
package/dist/types.d.ts CHANGED
@@ -84,6 +84,30 @@ export type SimulateResult<T extends ManifestoDomainShape = ManifestoDomainShape
84
84
  readonly requirements: readonly Requirement[];
85
85
  readonly status: ComputeStatus;
86
86
  };
87
+ export type IntentExplanation<T extends ManifestoDomainShape = ManifestoDomainShape> = {
88
+ readonly kind: "blocked";
89
+ readonly actionName: keyof T["actions"] & string;
90
+ readonly available: false;
91
+ readonly dispatchable: false;
92
+ readonly blockers: readonly DispatchBlocker[];
93
+ } | {
94
+ readonly kind: "blocked";
95
+ readonly actionName: keyof T["actions"] & string;
96
+ readonly available: true;
97
+ readonly dispatchable: false;
98
+ readonly blockers: readonly DispatchBlocker[];
99
+ } | {
100
+ readonly kind: "admitted";
101
+ readonly actionName: keyof T["actions"] & string;
102
+ readonly available: true;
103
+ readonly dispatchable: true;
104
+ readonly status: ComputeStatus;
105
+ readonly requirements: readonly Requirement[];
106
+ readonly canonicalSnapshot: CanonicalSnapshot<T["state"]>;
107
+ readonly snapshot: Snapshot<T["state"]>;
108
+ readonly newAvailableActions: readonly (keyof T["actions"])[];
109
+ readonly changedPaths: readonly string[];
110
+ };
87
111
  export type TypedSimulate<T extends ManifestoDomainShape> = <K extends keyof T["actions"]>(action: TypedActionRef<T, K>, ...args: CreateIntentArgs<T, K>) => SimulateResult<T>;
88
112
  export type TypedSubscribe<T extends ManifestoDomainShape> = <R>(selector: Selector<T["state"], R>, listener: (value: R) => void) => Unsubscribe;
89
113
  export type TypedActionMetadata<T extends ManifestoDomainShape, K extends keyof T["actions"] = keyof T["actions"]> = {
@@ -137,6 +161,9 @@ export type ManifestoBaseInstance<T extends ManifestoDomainShape> = {
137
161
  readonly getAvailableActions: () => readonly (keyof T["actions"])[];
138
162
  readonly isIntentDispatchable: TypedIsIntentDispatchable<T>;
139
163
  readonly getIntentBlockers: TypedGetIntentBlockers<T>;
164
+ readonly explainIntent: (intent: TypedIntent<T>) => IntentExplanation<T>;
165
+ readonly why: (intent: TypedIntent<T>) => IntentExplanation<T>;
166
+ readonly whyNot: (intent: TypedIntent<T>) => readonly DispatchBlocker[] | null;
140
167
  readonly getActionMetadata: TypedGetActionMetadata<T>;
141
168
  readonly isActionAvailable: (name: keyof T["actions"]) => boolean;
142
169
  readonly getSchemaGraph: () => SchemaGraph;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@manifesto-ai/sdk",
3
- "version": "3.7.0",
3
+ "version": "3.8.0",
4
4
  "description": "Manifesto SDK - Activation-first public API for the base runtime",
5
5
  "author": "eggplantiny <eggplantiny@gmail.com>",
6
6
  "license": "MIT",
@@ -44,8 +44,8 @@
44
44
  ],
45
45
  "dependencies": {
46
46
  "@manifesto-ai/compiler": "3.3.0",
47
- "@manifesto-ai/core": "2.11.0",
48
- "@manifesto-ai/host": "2.8.0"
47
+ "@manifesto-ai/host": "2.8.0",
48
+ "@manifesto-ai/core": "2.11.0"
49
49
  },
50
50
  "devDependencies": {
51
51
  "typescript": "^5.9.3",
@@ -1,2 +0,0 @@
1
- var S=class extends Error{code;constructor(n,o,a){super(o,a),this.name="ManifestoError",this.code=n}},W=class extends S{effectType;constructor(n){super("RESERVED_EFFECT",`Effect type "${n}" is reserved and cannot be overridden`),this.name="ReservedEffectError",this.effectType=n}},X=class extends S{diagnostics;constructor(n,o){super("COMPILE_ERROR",o),this.name="CompileError",this.diagnostics=n}},j=class extends S{constructor(){super("DISPOSED","Cannot use a disposed Manifesto runtime"),this.name="DisposedError"}},M=class extends S{constructor(){super("ALREADY_ACTIVATED","ComposableManifesto.activate() may only be called once"),this.name="AlreadyActivatedError"}};import{apply as te,applySystemDelta as He,computeSync as Ve,getAvailableActions as ze,isActionAvailable as Fe,isIntentDispatchable as Ue,validateIntentInput as $e}from"@manifesto-ai/core";import{extractSchemaGraph as qe}from"@manifesto-ai/compiler";import{getHostState as We}from"@manifesto-ai/host";var De=new Set(["$item","$index","$array"]);function ot(e){let n=e.computed.fields,o=new Map;function a(i,u){let l=o.get(i);if(l!==void 0)return l;if(u.has(i))return!1;u.add(i);let d=n[i];if(!d)return u.delete(i),o.set(i,!0),!0;for(let f of Be(d.expr)){if(Ge(f))return u.delete(i),o.set(i,!1),!1;let p=Ne(f,n);if(p!==null&&!a(p,u))return u.delete(i),o.set(i,!1),!1}return u.delete(i),o.set(i,!0),!0}return{visibleComputedKeys:Object.keys(n).filter(i=>a(i,new Set))}}function G(e,n){return{data:Pe(e.data),computed:ke(e.computed,n),system:{status:e.system.status,lastError:e.system.lastError},meta:{schemaHash:e.meta.schemaHash}}}function st(e,n){return G(e,n)}function A(e){return Z(structuredClone(e))}function Q(e,n){return Ke(e,n)}function Pe(e){if(e==null)return e;if(Array.isArray(e)||typeof e!="object")return structuredClone(e);let n={};for(let[o,a]of Object.entries(e))o.startsWith("$")||(n[o]=a);return structuredClone(n)}function ke(e,n){let o={};for(let a of n.visibleComputedKeys)Object.prototype.hasOwnProperty.call(e,a)&&(o[a]=e[a]);return structuredClone(o)}function Ne(e,n){if(Object.prototype.hasOwnProperty.call(n,e))return e;if(!e.startsWith("computed."))return null;let o=e.slice(9);return Object.prototype.hasOwnProperty.call(n,o)?o:null}function Le(e){return e.startsWith("/")?e.slice(1).replace(/\//g,"."):e}function Ge(e){let n=Le(e),o=n.startsWith("data.")?n.slice(5):n,s=/^([^.[\]]+)/.exec(o)?.[1]??"";return s.startsWith("$")?!De.has(s):!1}function Be(e){let n=[],o=new WeakSet,a=s=>{if(s==null)return;if(Array.isArray(s)){s.forEach(a);return}if(typeof s!="object")return;let i=s;if(!o.has(i)&&(o.add(i),i.kind!=="lit")){if(i.kind==="get"&&typeof i.path=="string"){n.push(i.path);return}for(let u of Object.values(i))a(u)}};return a(e),n}function Ke(e,n){return x(e,n,new WeakMap)}function x(e,n,o){if(Object.is(e,n))return!0;if(typeof e!=typeof n)return!1;if(e===null||n===null)return e===n;if(typeof e!="object"||typeof n!="object")return!1;let a=e,s=n,i=Object.prototype.toString.call(a),u=Object.prototype.toString.call(s);if(i!==u)return!1;let l=o.get(a);if(l?.has(s))return!0;if(l||(l=new WeakSet,o.set(a,l)),l.add(s),Array.isArray(a)&&Array.isArray(s)){if(a.length!==s.length)return!1;for(let p=0;p<a.length;p+=1){let T=Object.prototype.hasOwnProperty.call(a,p),h=Object.prototype.hasOwnProperty.call(s,p);if(T!==h||T&&!x(a[p],s[p],o))return!1}return!0}if(a instanceof Date&&s instanceof Date)return a.getTime()===s.getTime();if(a instanceof RegExp&&s instanceof RegExp)return a.source===s.source&&a.flags===s.flags;if(ArrayBuffer.isView(a)&&ArrayBuffer.isView(s)){if(a.constructor!==s.constructor||a.byteLength!==s.byteLength)return!1;let p=new Uint8Array(a.buffer,a.byteOffset,a.byteLength),T=new Uint8Array(s.buffer,s.byteOffset,s.byteLength);return p.every((h,m)=>h===T[m])}if(a instanceof ArrayBuffer&&s instanceof ArrayBuffer){if(a.byteLength!==s.byteLength)return!1;let p=new Uint8Array(a),T=new Uint8Array(s);return p.every((h,m)=>h===T[m])}if(a instanceof Map&&s instanceof Map){if(a.size!==s.size)return!1;let p=Array.from(a.entries()),T=Array.from(s.entries());return p.every(([h,m],b)=>{let g=T[b];if(!g)return!1;let[w,E]=g;return x(h,w,o)&&x(m,E,o)})}if(a instanceof Set&&s instanceof Set){if(a.size!==s.size)return!1;let p=Array.from(a.values()),T=Array.from(s.values());return p.every((h,m)=>x(h,T[m],o))}let d=Y(a),f=Y(s);if(d.length!==f.length)return!1;for(let p=0;p<d.length;p+=1){let T=d[p],h=f[p];if(T!==h)return!1;let m=a[T],b=s[h];if(!x(m,b,o))return!1}return!0}function Y(e){return Object.keys(e).filter(n=>e[n]!==void 0).sort()}function Z(e,n=new WeakSet){if(e==null||typeof e!="object")return e;if(J(e))return ee(e);let o=e;if(n.has(o)||Object.isFrozen(e))return e;n.add(o);for(let a of Reflect.ownKeys(o)){let s=o[a];if(J(s)){_e(o,a,s);continue}Z(s,n)}return Object.freeze(e)}function J(e){return e instanceof ArrayBuffer||ArrayBuffer.isView(e)}function ee(e){return structuredClone(e)}function _e(e,n,o){let a=Object.getOwnPropertyDescriptor(e,n);!a||!("value"in a)||Object.defineProperty(e,n,{enumerable:a.enumerable??!0,configurable:!1,get(){return ee(o)}})}var Xe=Symbol("manifesto-sdk.action-param-names"),dt=Symbol("manifesto-sdk.action-single-param-object-value"),oe=Symbol("manifesto-sdk.runtime-kernel-factory"),B=Symbol("manifesto-sdk.activation-state"),k=Symbol("manifesto-sdk.extension-kernel"),Ye=/^(state|computed|action):.+$/;function se(e){let n=new Set(e.nodes.map(l=>l.id)),o=new Map,a=new Map,s=(l,d,f)=>{let p=l.get(d);if(p){p.add(f);return}l.set(d,new Set([f]))};for(let l of e.edges)s(o,l.from,l.to),s(a,l.to,l.from);let i=l=>{let d=Object.freeze({nodes:Object.freeze(e.nodes.filter(f=>l.has(f.id))),edges:Object.freeze(e.edges.filter(f=>l.has(f.from)&&l.has(f.to)))});return se(d)},u=(l,d)=>{let f=Je(l,n),p=[f],T=new Set([f]),h=d==="incoming"?a:o;for(;p.length>0;){let m=p.shift();if(m)for(let b of h.get(m)??[])T.has(b)||(T.add(b),p.push(b))}return i(T)};return Object.freeze({nodes:e.nodes,edges:e.edges,traceUp(l){return u(l,"incoming")},traceDown(l){return u(l,"outgoing")}})}function Je(e,n){if(typeof e=="string"){if(!Ye.test(e))throw new S("SCHEMA_ERROR",'SchemaGraph node id must use "state:<name>", "computed:<name>", or "action:<name>"');if(!n.has(e))throw new S("SCHEMA_ERROR",`Unknown SchemaGraph node id "${e}"`);return e}let o;switch(e.__kind){case"ActionRef":o=`action:${String(e.name)}`;break;case"FieldRef":o=`state:${e.name}`;break;case"ComputedRef":o=`computed:${e.name}`;break;default:throw new S("SCHEMA_ERROR","Unsupported SchemaGraph ref lookup target")}if(!n.has(o))throw new S("SCHEMA_ERROR",`SchemaGraph node "${o}" is not part of the projected graph`);return o}function Qe(e,n){let o=new Set,a=new WeakMap,s=(i,u,l)=>{if(Object.is(i,u))return;if(i===null||u===null){o.add(l);return}if(typeof i!="object"||typeof u!="object"){o.add(l);return}let d=i,f=u,p=a.get(d);if(p?.has(f))return;if(p?p.add(f):a.set(d,new WeakSet([f])),Array.isArray(i)||Array.isArray(u)){if(!Array.isArray(i)||!Array.isArray(u)){o.add(l);return}let h=Math.max(i.length,u.length);for(let m=0;m<h;m+=1){let b=Object.prototype.hasOwnProperty.call(i,m),g=Object.prototype.hasOwnProperty.call(u,m),w=`${l}[${m}]`;if(b!==g){o.add(w);continue}!b&&!g||s(i[m],u[m],w)}return}if(!ne(i)||!ne(u)){o.add(l);return}let T=new Set([...Object.keys(i),...Object.keys(u)]);for(let h of[...T].sort()){let m=Object.prototype.hasOwnProperty.call(i,h),b=Object.prototype.hasOwnProperty.call(u,h),g=`${l}.${h}`;if(m!==b){o.add(g);continue}s(i[h],u[h],g)}};return s(e.data,n.data,"data"),s(e.computed,n.computed,"computed"),s(e.system,n.system,"system"),s(e.meta,n.meta,"meta"),Object.freeze([...o].sort())}function ne(e){return Object.prototype.toString.call(e)==="[object Object]"}function ft(e,n,o){Object.defineProperty(e,oe,{enumerable:!1,configurable:!1,writable:!1,value:n});let a=o??ae(e)??{activated:!1};return ae(e)||Object.defineProperty(e,B,{enumerable:!1,configurable:!1,writable:!1,value:a}),e}function ht(e){let o=e[oe];if(typeof o!="function")throw new S("SCHEMA_ERROR","ComposableManifesto is missing its runtime kernel factory");return o}function Ze(e,n){return Object.defineProperty(e,k,{enumerable:!1,configurable:!1,writable:!1,value:n[k]}),e}function yt(e){let o=e[k];if(!o)throw new S("SCHEMA_ERROR","Activated runtime is missing its extension kernel");return o}function re(e){let o=e[B];if(!o)throw new S("SCHEMA_ERROR","ComposableManifesto is missing its activation state");return o}function mt(e){if(re(e).activated)throw new M}function Tt(e){let n=re(e);if(n.activated)throw new M;n.activated=!0}function ae(e){return e[B]??null}function et(e){if(e.params)return e.params;let n=e.input;return!n||n.type!=="object"||!n.fields?[]:Object.keys(n.fields)}function St({schema:e,projectionPlan:n,host:o,hostContextProvider:a,MEL:s,createIntent:i}){let u=o.getSnapshot();if(!u)throw new S("SCHEMA_ERROR","Host failed to initialize its genesis snapshot");function l(t){return A(G(t,n))}let d=structuredClone(u),f=l(d),p=A(d),T=Promise.resolve(),h=!1,m=se(qe(e)),b=Object.keys(e.actions),g=Object.freeze(Object.fromEntries(b.map(t=>{let r=e.actions[t],y=s.actions[t]?.[Xe],I=Object.freeze(Array.isArray(y)?[...y]:et(r));return[t,Object.freeze({name:t,params:I,input:r.input,description:r.description,hasDispatchableGate:r.dispatchable!==void 0})]}))),w=Object.freeze(b.map(t=>g[t])),E=new Set,O=new Map;function ie(t,r){if(h)return()=>{};let c,y=!1;try{c=t(f),y=!0}catch{c=void 0,y=!1}let I={selector:t,listener:r,lastValue:c,initialized:y};return E.add(I),()=>{E.delete(I)}}function ce(t,r){if(h)return()=>{};let c=O.get(t);return c||(c=new Set,O.set(t,c)),c.add(r),()=>{c?.delete(r)}}function le(){return f}function K(){return p}function D(t){return Object.freeze([...ze(e,t)])}function pe(){return D(p)}function _(t,r,c){return Object.freeze({layer:t,expression:r,evaluatedResult:!1,...c!==void 0?{description:c}:{}})}let ue=(t=>t!==void 0?g[String(t)]:w);function C(t,r){return Fe(e,t,String(r))}function de(t){return C(p,t)}function v(t,r){return Ue(e,t,r)}let fe=((t,...r)=>v(p,i(t,...r)));function H(t,r){let c=r.type,y=e.actions[c];return y?C(t,c)?v(t,r)?Object.freeze([]):Object.freeze(y.dispatchable?[_("dispatchable",y.dispatchable,y.description)]:[]):Object.freeze(y.available?[_("available",y.available,y.description)]:[]):Object.freeze([])}let he=((t,...r)=>H(p,i(t,...r)));function ye(){return m}function me(t,r,c){let I=We(t.data)?.intentSlots??{},P=r.input===void 0?{type:r.type}:{type:r.type,input:r.input};return te(e,t,[{op:"merge",path:[{kind:"prop",name:"$host"}],value:{intentSlots:{...I,[r.intentId]:P}}}],c)}function Te(t){return new S("ACTION_UNAVAILABLE",`Action "${t.type}" is unavailable against the provided canonical snapshot`)}function Se(t){return new S("INTENT_NOT_DISPATCHABLE",`Action "${t.type}" is available, but the bound intent is not dispatchable against the provided canonical snapshot`)}function N(t,r){let c=z(r);if(!C(t,c.type))throw Te(c);let y=q(t,c);if(y)throw y;if(!v(t,c))throw Se(c);let I=a.createFrozenContext(c.intentId),P=me(structuredClone(t),c,I),R=Ve(e,P,c,I),Me=te(e,P,R.patches,I),Oe=He(Me,R.systemDelta);return Object.freeze({snapshot:A(Oe),patches:A(R.patches),systemDelta:A(R.systemDelta),status:R.status,requirements:A(R.systemDelta.addRequirements)})}let be=((t,...r)=>{let c=N(p,i(t,...r)),y=l(c.snapshot);return Object.freeze({snapshot:y,changedPaths:Qe(f,y),newAvailableActions:D(c.snapshot),requirements:c.requirements,status:c.status})});function ge(){h||(h=!0,E.clear(),O.clear())}function Ie(t,r){d=structuredClone(t),o.reset(structuredClone(d)),p=A(d);let c=l(d),y=!Q(c,f);return y&&(f=c),r?.notify!==!1&&y&&ve(f),f}function Ae(){o.reset(structuredClone(d))}function V(t,r){let c=O.get(t);if(c)for(let y of c)try{y(r)}catch{}}function we(t){let r=T.catch(()=>{}).then(t);return T=r.then(()=>{},()=>{}),r}function z(t){return t.intentId&&t.intentId.length>0?t:{...t,intentId:nt()}}async function Ee(t,r){return o.dispatch(t,r)}function F(t){return new S("ACTION_UNAVAILABLE",`Action "${t.type}" is unavailable against the current visible snapshot`)}function U(t){return new S("INTENT_NOT_DISPATCHABLE",`Action "${t.type}" is available, but the bound intent is not dispatchable against the current visible snapshot`)}function $(t){return new S("INVALID_INPUT",t)}function q(t,r){let c=$e(e,r);return c?$(c):null}function L(t,r){throw V("dispatch:rejected",{intentId:t.intentId??"",intent:t,code:r.code,reason:r.message}),r}function Re(t){return L(t,F(t))}function xe(t,r){return L(t,$(r))}function Ce(t){return L(t,U(t))}function ve(t){for(let r of E){let c;try{c=r.selector(t)}catch{continue}if(!(r.initialized&&Object.is(r.lastValue,c))){r.lastValue=c,r.initialized=!0;try{r.listener(c)}catch{}}}}let je=Object.freeze({MEL:s,schema:e,createIntent:i,getCanonicalSnapshot:K,projectSnapshot:t=>l(t),simulateSync:(t,r)=>{let c=N(t,r);return Object.freeze({snapshot:c.snapshot,patches:c.patches,requirements:c.requirements,status:c.status})},getAvailableActionsFor:D,isActionAvailableFor:C,isIntentDispatchableFor:v});return{schema:e,MEL:s,createIntent:i,subscribe:ie,on:ce,getSnapshot:le,getAvailableActionsFor:D,getAvailableActions:pe,getIntentBlockersFor:H,getActionMetadata:ue,isActionAvailableFor:C,isActionAvailable:de,isIntentDispatchableFor:v,isIntentDispatchable:fe,getIntentBlockers:he,getSchemaGraph:ye,simulateSync:N,simulate:be,dispose:ge,isDisposed:()=>h,getCanonicalSnapshot:K,getVisibleCoreSnapshot:()=>structuredClone(d),setVisibleSnapshot:Ie,restoreVisibleSnapshot:Ae,emitEvent:V,enqueue:we,ensureIntentId:z,executeHost:Ee,validateIntentInputFor:q,createUnavailableError:F,createNotDispatchableError:U,rejectInvalidInput:xe,rejectUnavailable:Re,rejectNotDispatchable:Ce,[k]:je}}function bt(e){async function n(a){if(e.isDisposed())throw new j;if(!e.isActionAvailable(a.type))return e.rejectUnavailable(a);let s=e.validateIntentInputFor(e.getCanonicalSnapshot(),a);if(s)return e.rejectInvalidInput(a,s.message);if(!e.isIntentDispatchableFor(e.getCanonicalSnapshot(),a))return e.rejectNotDispatchable(a);let i;try{i=await e.executeHost(a)}catch(l){let d=tt(l);throw e.emitEvent("dispatch:failed",{intentId:a.intentId??"",intent:a,error:d}),d}if(i.status==="error"){let l=e.setVisibleSnapshot(i.snapshot),d=i.error??new S("HOST_ERROR","Host dispatch failed");throw e.emitEvent("dispatch:failed",{intentId:a.intentId??"",intent:a,error:d,snapshot:l}),d}let u=e.setVisibleSnapshot(i.snapshot);return e.emitEvent("dispatch:completed",{intentId:a.intentId??"",intent:a,snapshot:u}),u}function o(a){if(e.isDisposed())return Promise.reject(new j);let s=e.ensureIntentId(a);return e.enqueue(()=>n(s))}return Ze({createIntent:e.createIntent,dispatchAsync:o,subscribe:e.subscribe,on:e.on,getSnapshot:e.getSnapshot,getCanonicalSnapshot:e.getCanonicalSnapshot,getAvailableActions:e.getAvailableActions,isIntentDispatchable:e.isIntentDispatchable,getIntentBlockers:e.getIntentBlockers,getActionMetadata:e.getActionMetadata,isActionAvailable:e.isActionAvailable,getSchemaGraph:e.getSchemaGraph,simulate:e.simulate,MEL:e.MEL,schema:e.schema,dispose:e.dispose},e)}function tt(e){return e instanceof Error?e:new Error(String(e))}function nt(){return typeof crypto<"u"&&typeof crypto.randomUUID=="function"?crypto.randomUUID():"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,e=>{let n=Math.random()*16|0;return(e==="x"?n:n&3|8).toString(16)})}export{S as a,W as b,X as c,j as d,M as e,ot as f,st as g,A as h,Xe as i,dt as j,ft as k,ht as l,Ze as m,yt as n,re as o,mt as p,Tt as q,St as r,bt as s};
2
- //# sourceMappingURL=chunk-SDGXZPPJ.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/errors.ts","../src/internal.ts","../src/snapshot-projection.ts"],"sourcesContent":["export class ManifestoError extends Error {\n readonly code: string;\n\n constructor(code: string, message: string, options?: ErrorOptions) {\n super(message, options);\n this.name = \"ManifestoError\";\n this.code = code;\n }\n}\n\nexport class ReservedEffectError extends ManifestoError {\n readonly effectType: string;\n\n constructor(effectType: string) {\n super(\n \"RESERVED_EFFECT\",\n `Effect type \"${effectType}\" is reserved and cannot be overridden`,\n );\n this.name = \"ReservedEffectError\";\n this.effectType = effectType;\n }\n}\n\nexport interface CompileDiagnostic {\n readonly severity: \"error\" | \"warning\" | \"info\";\n readonly code: string;\n readonly message: string;\n readonly location: {\n readonly start: { readonly line: number; readonly column: number; readonly offset: number };\n readonly end: { readonly line: number; readonly column: number; readonly offset: number };\n };\n readonly source?: string;\n readonly suggestion?: string;\n}\n\nexport class CompileError extends ManifestoError {\n readonly diagnostics: readonly CompileDiagnostic[];\n\n constructor(diagnostics: readonly CompileDiagnostic[], formattedMessage: string) {\n super(\"COMPILE_ERROR\", formattedMessage);\n this.name = \"CompileError\";\n this.diagnostics = diagnostics;\n }\n}\n\nexport class DisposedError extends ManifestoError {\n constructor() {\n super(\"DISPOSED\", \"Cannot use a disposed Manifesto runtime\");\n this.name = \"DisposedError\";\n }\n}\n\nexport class AlreadyActivatedError extends ManifestoError {\n constructor() {\n super(\"ALREADY_ACTIVATED\", \"ComposableManifesto.activate() may only be called once\");\n this.name = \"AlreadyActivatedError\";\n }\n}\n","import {\n apply,\n applySystemDelta,\n computeSync,\n getAvailableActions as queryAvailableActions,\n isActionAvailable as queryActionAvailable,\n isIntentDispatchable as queryIntentDispatchable,\n validateIntentInput as queryIntentInputValidation,\n type ComputeStatus,\n type DomainSchema,\n type Patch,\n type Requirement,\n type Snapshot as CoreSnapshot,\n type SystemDelta,\n} from \"@manifesto-ai/core\";\nimport {\n extractSchemaGraph,\n type SchemaGraph as RawSchemaGraph,\n} from \"@manifesto-ai/compiler\";\nimport type {\n HostContextProvider,\n HostResult,\n IntentSlot,\n ManifestoHost,\n} from \"@manifesto-ai/host\";\nimport { getHostState } from \"@manifesto-ai/host\";\n\nimport {\n AlreadyActivatedError,\n DisposedError,\n ManifestoError,\n} from \"./errors.js\";\nimport type {\n BaseLaws,\n CanonicalSnapshot,\n ComposableManifesto,\n DispatchBlocker,\n ManifestoBaseInstance,\n ManifestoDomainShape,\n ManifestoEvent,\n ManifestoEventMap,\n SchemaGraph,\n SchemaGraphNodeId,\n SchemaGraphNodeRef,\n Selector,\n SimulateResult as ProjectedSimulateResult,\n Snapshot,\n TypedActionMetadata,\n TypedCreateIntent,\n TypedGetActionMetadata,\n TypedGetIntentBlockers,\n TypedIntent,\n TypedIsIntentDispatchable,\n TypedMEL,\n TypedOn,\n TypedSimulate,\n TypedSubscribe,\n Unsubscribe,\n} from \"./types.js\";\nimport {\n cloneAndDeepFreeze,\n projectCanonicalSnapshot,\n projectedSnapshotsEqual,\n type SnapshotProjectionPlan,\n} from \"./snapshot-projection.js\";\nimport type {\n ExtensionKernel,\n ExtensionSimulateResult,\n} from \"./extensions-types.js\";\n\nexport const ACTION_PARAM_NAMES = Symbol(\"manifesto-sdk.action-param-names\");\nexport const ACTION_SINGLE_PARAM_OBJECT_VALUE = Symbol(\"manifesto-sdk.action-single-param-object-value\");\nexport const RUNTIME_KERNEL_FACTORY = Symbol(\"manifesto-sdk.runtime-kernel-factory\");\nexport const ACTIVATION_STATE = Symbol(\"manifesto-sdk.activation-state\");\nexport const EXTENSION_KERNEL = Symbol(\"manifesto-sdk.extension-kernel\");\nconst SCHEMA_GRAPH_NODE_ID_PATTERN = /^(state|computed|action):.+$/;\n\ntype RuntimeActionParamMetadata = readonly string[] | null;\ntype RuntimeActionRef = {\n readonly name: PropertyKey;\n readonly [ACTION_PARAM_NAMES]?: RuntimeActionParamMetadata;\n readonly [ACTION_SINGLE_PARAM_OBJECT_VALUE]?: boolean;\n};\n\nexport type ActivationState = {\n activated: boolean;\n};\n\nexport type HostDispatchOptions = NonNullable<Parameters<ManifestoHost[\"dispatch\"]>[1]>;\n\ninterface Subscriber<TState, R> {\n readonly selector: Selector<TState, R>;\n readonly listener: (value: R) => void;\n lastValue: R | undefined;\n initialized: boolean;\n}\n\nexport type SimulateResult<\n T extends ManifestoDomainShape = ManifestoDomainShape,\n> = {\n readonly snapshot: CanonicalSnapshot<T[\"state\"]>;\n readonly patches: readonly Patch[];\n readonly systemDelta: Readonly<SystemDelta>;\n readonly status: ComputeStatus;\n readonly requirements: readonly Requirement[];\n};\n\nexport interface RuntimeKernel<T extends ManifestoDomainShape> {\n readonly schema: DomainSchema;\n readonly MEL: TypedMEL<T>;\n readonly createIntent: TypedCreateIntent<T>;\n readonly subscribe: TypedSubscribe<T>;\n readonly on: TypedOn<T>;\n readonly getSnapshot: () => Snapshot<T[\"state\"]>;\n readonly getCanonicalSnapshot: () => CanonicalSnapshot<T[\"state\"]>;\n readonly getAvailableActionsFor: (\n snapshot: CanonicalSnapshot<T[\"state\"]>,\n ) => readonly (keyof T[\"actions\"])[];\n readonly getAvailableActions: () => readonly (keyof T[\"actions\"])[];\n readonly getIntentBlockersFor: (\n snapshot: CanonicalSnapshot<T[\"state\"]>,\n intent: TypedIntent<T>,\n ) => readonly DispatchBlocker[];\n readonly getActionMetadata: TypedGetActionMetadata<T>;\n readonly isActionAvailableFor: (\n snapshot: CanonicalSnapshot<T[\"state\"]>,\n name: keyof T[\"actions\"],\n ) => boolean;\n readonly isActionAvailable: (name: keyof T[\"actions\"]) => boolean;\n readonly isIntentDispatchableFor: (\n snapshot: CanonicalSnapshot<T[\"state\"]>,\n intent: TypedIntent<T>,\n ) => boolean;\n readonly isIntentDispatchable: TypedIsIntentDispatchable<T>;\n readonly getIntentBlockers: TypedGetIntentBlockers<T>;\n readonly getSchemaGraph: () => SchemaGraph;\n readonly simulateSync: (\n snapshot: CanonicalSnapshot<T[\"state\"]>,\n intent: TypedIntent<T>,\n ) => SimulateResult<T>;\n readonly simulate: TypedSimulate<T>;\n readonly dispose: () => void;\n readonly isDisposed: () => boolean;\n readonly getVisibleCoreSnapshot: () => CoreSnapshot;\n readonly setVisibleSnapshot: (\n snapshot: CoreSnapshot,\n options?: { readonly notify?: boolean },\n ) => Snapshot<T[\"state\"]>;\n readonly restoreVisibleSnapshot: () => void;\n readonly emitEvent: <K extends ManifestoEvent>(\n event: K,\n payload: ManifestoEventMap<T>[K],\n ) => void;\n readonly enqueue: <R>(task: () => Promise<R>) => Promise<R>;\n readonly ensureIntentId: (intent: TypedIntent<T>) => TypedIntent<T>;\n readonly executeHost: (\n intent: TypedIntent<T>,\n options?: HostDispatchOptions,\n ) => Promise<HostResult>;\n readonly validateIntentInputFor: (\n snapshot: CanonicalSnapshot<T[\"state\"]>,\n intent: TypedIntent<T>,\n ) => ManifestoError | null;\n readonly createUnavailableError: (intent: TypedIntent<T>) => ManifestoError;\n readonly createNotDispatchableError: (intent: TypedIntent<T>) => ManifestoError;\n readonly rejectInvalidInput: (intent: TypedIntent<T>, message: string) => never;\n readonly rejectUnavailable: (intent: TypedIntent<T>) => never;\n readonly rejectNotDispatchable: (intent: TypedIntent<T>) => never;\n readonly [EXTENSION_KERNEL]: ExtensionKernel<T>;\n}\n\nexport type RuntimeKernelFactory<T extends ManifestoDomainShape> = () => RuntimeKernel<T>;\n\nexport type InternalComposableManifesto<\n T extends ManifestoDomainShape,\n Laws extends BaseLaws,\n> = ComposableManifesto<T, Laws> & {\n readonly [RUNTIME_KERNEL_FACTORY]: RuntimeKernelFactory<T>;\n readonly [ACTIVATION_STATE]: ActivationState;\n};\n\ntype ExtensionKernelCarrier<T extends ManifestoDomainShape> = {\n readonly [EXTENSION_KERNEL]: ExtensionKernel<T>;\n};\n\ntype RuntimeKernelOptions<T extends ManifestoDomainShape> = {\n readonly schema: DomainSchema;\n readonly projectionPlan: SnapshotProjectionPlan;\n readonly host: ManifestoHost;\n readonly hostContextProvider: HostContextProvider;\n readonly MEL: TypedMEL<T>;\n readonly createIntent: TypedCreateIntent<T>;\n};\n\nfunction createSdkSchemaGraph(rawGraph: RawSchemaGraph): SchemaGraph {\n const nodeIds = new Set(rawGraph.nodes.map((node) => node.id));\n const outgoing = new Map<SchemaGraphNodeId, Set<SchemaGraphNodeId>>();\n const incoming = new Map<SchemaGraphNodeId, Set<SchemaGraphNodeId>>();\n\n const link = (\n index: Map<SchemaGraphNodeId, Set<SchemaGraphNodeId>>,\n from: SchemaGraphNodeId,\n to: SchemaGraphNodeId,\n ): void => {\n const next = index.get(from);\n if (next) {\n next.add(to);\n return;\n }\n index.set(from, new Set([to]));\n };\n\n for (const edge of rawGraph.edges) {\n link(outgoing, edge.from, edge.to);\n link(incoming, edge.to, edge.from);\n }\n\n const materialize = (included: ReadonlySet<SchemaGraphNodeId>): SchemaGraph => {\n const subgraph: RawSchemaGraph = Object.freeze({\n nodes: Object.freeze(\n rawGraph.nodes.filter((node) => included.has(node.id)),\n ),\n edges: Object.freeze(\n rawGraph.edges.filter(\n (edge) => included.has(edge.from) && included.has(edge.to),\n ),\n ),\n });\n return createSdkSchemaGraph(subgraph);\n };\n\n const trace = (\n target: SchemaGraphNodeRef | SchemaGraphNodeId,\n direction: \"incoming\" | \"outgoing\",\n ): SchemaGraph => {\n const seed = resolveSchemaGraphNodeId(target, nodeIds);\n const frontier: SchemaGraphNodeId[] = [seed];\n const seen = new Set<SchemaGraphNodeId>([seed]);\n const index = direction === \"incoming\" ? incoming : outgoing;\n\n while (frontier.length > 0) {\n const current = frontier.shift();\n if (!current) {\n continue;\n }\n\n for (const next of index.get(current) ?? []) {\n if (seen.has(next)) {\n continue;\n }\n\n seen.add(next);\n frontier.push(next);\n }\n }\n\n return materialize(seen);\n };\n\n return Object.freeze({\n nodes: rawGraph.nodes,\n edges: rawGraph.edges,\n traceUp(target: SchemaGraphNodeRef | SchemaGraphNodeId): SchemaGraph {\n return trace(target, \"incoming\");\n },\n traceDown(target: SchemaGraphNodeRef | SchemaGraphNodeId): SchemaGraph {\n return trace(target, \"outgoing\");\n },\n });\n}\n\nfunction resolveSchemaGraphNodeId(\n target: SchemaGraphNodeRef | SchemaGraphNodeId,\n nodeIds: ReadonlySet<SchemaGraphNodeId>,\n): SchemaGraphNodeId {\n if (typeof target === \"string\") {\n if (!SCHEMA_GRAPH_NODE_ID_PATTERN.test(target)) {\n throw new ManifestoError(\n \"SCHEMA_ERROR\",\n 'SchemaGraph node id must use \"state:<name>\", \"computed:<name>\", or \"action:<name>\"',\n );\n }\n\n if (!nodeIds.has(target as SchemaGraphNodeId)) {\n throw new ManifestoError(\n \"SCHEMA_ERROR\",\n `Unknown SchemaGraph node id \"${target}\"`,\n );\n }\n\n return target as SchemaGraphNodeId;\n }\n\n let nodeId: SchemaGraphNodeId;\n switch (target.__kind) {\n case \"ActionRef\":\n nodeId = `action:${String(target.name)}`;\n break;\n case \"FieldRef\":\n nodeId = `state:${target.name}`;\n break;\n case \"ComputedRef\":\n nodeId = `computed:${target.name}`;\n break;\n default:\n throw new ManifestoError(\n \"SCHEMA_ERROR\",\n \"Unsupported SchemaGraph ref lookup target\",\n );\n }\n\n if (!nodeIds.has(nodeId)) {\n throw new ManifestoError(\n \"SCHEMA_ERROR\",\n `SchemaGraph node \"${nodeId}\" is not part of the projected graph`,\n );\n }\n\n return nodeId;\n}\n\nfunction diffProjectedPaths<T>(\n left: Snapshot<T>,\n right: Snapshot<T>,\n): readonly string[] {\n const paths = new Set<string>();\n const seen = new WeakMap<object, WeakSet<object>>();\n\n const visit = (a: unknown, b: unknown, path: string): void => {\n if (Object.is(a, b)) {\n return;\n }\n\n if (a === null || b === null) {\n paths.add(path);\n return;\n }\n\n if (typeof a !== \"object\" || typeof b !== \"object\") {\n paths.add(path);\n return;\n }\n\n const leftObject = a as object;\n const rightObject = b as object;\n const leftSeen = seen.get(leftObject);\n if (leftSeen?.has(rightObject)) {\n return;\n }\n if (leftSeen) {\n leftSeen.add(rightObject);\n } else {\n seen.set(leftObject, new WeakSet([rightObject]));\n }\n\n if (Array.isArray(a) || Array.isArray(b)) {\n if (!Array.isArray(a) || !Array.isArray(b)) {\n paths.add(path);\n return;\n }\n\n const limit = Math.max(a.length, b.length);\n for (let index = 0; index < limit; index += 1) {\n const leftHas = Object.prototype.hasOwnProperty.call(a, index);\n const rightHas = Object.prototype.hasOwnProperty.call(b, index);\n const childPath = `${path}[${index}]`;\n if (leftHas !== rightHas) {\n paths.add(childPath);\n continue;\n }\n if (!leftHas && !rightHas) {\n continue;\n }\n visit(a[index], b[index], childPath);\n }\n return;\n }\n\n if (!isPlainDiffableObject(a) || !isPlainDiffableObject(b)) {\n paths.add(path);\n return;\n }\n\n const keys = new Set([\n ...Object.keys(a),\n ...Object.keys(b),\n ]);\n for (const key of [...keys].sort()) {\n const leftHas = Object.prototype.hasOwnProperty.call(a, key);\n const rightHas = Object.prototype.hasOwnProperty.call(b, key);\n const childPath = `${path}.${key}`;\n if (leftHas !== rightHas) {\n paths.add(childPath);\n continue;\n }\n visit(\n (a as Record<string, unknown>)[key],\n (b as Record<string, unknown>)[key],\n childPath,\n );\n }\n };\n\n visit(left.data, right.data, \"data\");\n visit(left.computed, right.computed, \"computed\");\n visit(left.system, right.system, \"system\");\n visit(left.meta, right.meta, \"meta\");\n\n return Object.freeze([...paths].sort());\n}\n\nfunction isPlainDiffableObject(value: unknown): value is Record<string, unknown> {\n return Object.prototype.toString.call(value) === \"[object Object]\";\n}\n\nexport function attachRuntimeKernelFactory<\n T extends ManifestoDomainShape,\n Laws extends BaseLaws,\n>(\n manifesto: ComposableManifesto<T, Laws>,\n factory: RuntimeKernelFactory<T>,\n activationState?: ActivationState,\n): InternalComposableManifesto<T, Laws> {\n Object.defineProperty(manifesto, RUNTIME_KERNEL_FACTORY, {\n enumerable: false,\n configurable: false,\n writable: false,\n value: factory,\n });\n\n const state = activationState ?? getExistingActivationState(manifesto) ?? {\n activated: false,\n };\n\n if (!getExistingActivationState(manifesto)) {\n Object.defineProperty(manifesto, ACTIVATION_STATE, {\n enumerable: false,\n configurable: false,\n writable: false,\n value: state,\n });\n }\n\n return manifesto as InternalComposableManifesto<T, Laws>;\n}\n\nexport function getRuntimeKernelFactory<\n T extends ManifestoDomainShape,\n Laws extends BaseLaws,\n>(\n manifesto: ComposableManifesto<T, Laws>,\n): RuntimeKernelFactory<T> {\n const internal = manifesto as Partial<InternalComposableManifesto<T, Laws>>;\n const factory = internal[RUNTIME_KERNEL_FACTORY];\n\n if (typeof factory !== \"function\") {\n throw new ManifestoError(\n \"SCHEMA_ERROR\",\n \"ComposableManifesto is missing its runtime kernel factory\",\n );\n }\n\n return factory;\n}\n\nexport function attachExtensionKernel<\n T extends ManifestoDomainShape,\n TInstance extends object,\n>(\n runtime: TInstance,\n kernel: RuntimeKernel<T>,\n): TInstance {\n Object.defineProperty(runtime, EXTENSION_KERNEL, {\n enumerable: false,\n configurable: false,\n writable: false,\n value: kernel[EXTENSION_KERNEL],\n });\n\n return runtime;\n}\n\nexport function getAttachedExtensionKernel<T extends ManifestoDomainShape>(\n runtime: object,\n): ExtensionKernel<T> {\n const internal = runtime as Partial<ExtensionKernelCarrier<T>>;\n const kernel = internal[EXTENSION_KERNEL];\n\n if (!kernel) {\n throw new ManifestoError(\n \"SCHEMA_ERROR\",\n \"Activated runtime is missing its extension kernel\",\n );\n }\n\n return kernel;\n}\n\nexport function getActivationState<\n T extends ManifestoDomainShape,\n Laws extends BaseLaws,\n>(\n manifesto: ComposableManifesto<T, Laws>,\n): ActivationState {\n const internal = manifesto as Partial<InternalComposableManifesto<T, Laws>>;\n const state = internal[ACTIVATION_STATE];\n\n if (!state) {\n throw new ManifestoError(\n \"SCHEMA_ERROR\",\n \"ComposableManifesto is missing its activation state\",\n );\n }\n\n return state;\n}\n\nexport function assertComposableNotActivated<\n T extends ManifestoDomainShape,\n Laws extends BaseLaws,\n>(\n manifesto: ComposableManifesto<T, Laws>,\n): void {\n if (getActivationState(manifesto).activated) {\n throw new AlreadyActivatedError();\n }\n}\n\nexport function activateComposable<\n T extends ManifestoDomainShape,\n Laws extends BaseLaws,\n>(\n manifesto: ComposableManifesto<T, Laws>,\n): void {\n const state = getActivationState(manifesto);\n if (state.activated) {\n throw new AlreadyActivatedError();\n }\n state.activated = true;\n}\n\nfunction getExistingActivationState<\n T extends ManifestoDomainShape,\n Laws extends BaseLaws,\n>(\n manifesto: ComposableManifesto<T, Laws>,\n): ActivationState | null {\n const internal = manifesto as Partial<InternalComposableManifesto<T, Laws>>;\n return internal[ACTIVATION_STATE] ?? null;\n}\n\nfunction getActionParamNames(\n action: DomainSchema[\"actions\"][string],\n): readonly string[] {\n if (action.params) {\n return action.params;\n }\n\n const input = action.input;\n if (!input || input.type !== \"object\" || !input.fields) {\n return [];\n }\n\n return Object.keys(input.fields);\n}\n\nexport function createRuntimeKernel<T extends ManifestoDomainShape>({\n schema,\n projectionPlan,\n host,\n hostContextProvider,\n MEL,\n createIntent,\n}: RuntimeKernelOptions<T>): RuntimeKernel<T> {\n const initialCanonicalSnapshot = host.getSnapshot();\n if (!initialCanonicalSnapshot) {\n throw new ManifestoError(\"SCHEMA_ERROR\", \"Host failed to initialize its genesis snapshot\");\n }\n\n function projectSnapshotFromCanonical(\n snapshot: CoreSnapshot,\n ): Snapshot<T[\"state\"]> {\n return cloneAndDeepFreeze(\n projectCanonicalSnapshot<T[\"state\"]>(snapshot, projectionPlan),\n );\n }\n\n let visibleCanonicalSnapshot: CoreSnapshot = structuredClone(initialCanonicalSnapshot);\n let visibleProjectedSnapshot = projectSnapshotFromCanonical(\n visibleCanonicalSnapshot,\n );\n let visibleCanonicalReadSnapshot = cloneAndDeepFreeze(\n visibleCanonicalSnapshot as CanonicalSnapshot<T[\"state\"]>,\n );\n let dispatchQueue: Promise<void> = Promise.resolve();\n let disposed = false;\n const schemaGraph = createSdkSchemaGraph(extractSchemaGraph(schema));\n const actionNames = Object.keys(schema.actions) as Array<keyof T[\"actions\"] & string>;\n const actionMetadataByName = Object.freeze(\n Object.fromEntries(\n actionNames.map((name) => {\n const action = schema.actions[name];\n const actionRef = MEL.actions[name] as unknown as RuntimeActionRef | undefined;\n const rawParams = actionRef?.[ACTION_PARAM_NAMES];\n const params = Object.freeze(\n Array.isArray(rawParams) ? [...rawParams] : getActionParamNames(action),\n );\n\n return [name, Object.freeze({\n name,\n params,\n input: action.input,\n description: action.description,\n hasDispatchableGate: action.dispatchable !== undefined,\n })];\n }),\n ),\n ) as Readonly<Record<keyof T[\"actions\"] & string, TypedActionMetadata<T>>>;\n const actionMetadata = Object.freeze(\n actionNames.map((name) => actionMetadataByName[name]),\n ) as readonly TypedActionMetadata<T>[];\n\n const subscribers = new Set<Subscriber<T[\"state\"], unknown>>();\n const eventListeners = new Map<\n ManifestoEvent,\n Set<(payload: ManifestoEventMap<T>[ManifestoEvent]) => void>\n >();\n\n function subscribe<R>(\n selector: Selector<T[\"state\"], R>,\n listener: (value: R) => void,\n ): Unsubscribe {\n if (disposed) {\n return () => {};\n }\n\n let lastValue: R | undefined;\n let initialized = false;\n\n try {\n lastValue = selector(visibleProjectedSnapshot);\n initialized = true;\n } catch {\n lastValue = undefined;\n initialized = false;\n }\n\n const subscriber: Subscriber<T[\"state\"], R> = {\n selector,\n listener,\n lastValue,\n initialized,\n };\n\n subscribers.add(subscriber as Subscriber<T[\"state\"], unknown>);\n return () => {\n subscribers.delete(subscriber as Subscriber<T[\"state\"], unknown>);\n };\n }\n\n function on<K extends ManifestoEvent>(\n event: K,\n handler: (payload: ManifestoEventMap<T>[K]) => void,\n ): Unsubscribe {\n if (disposed) {\n return () => {};\n }\n\n let listeners = eventListeners.get(event);\n if (!listeners) {\n listeners = new Set();\n eventListeners.set(\n event,\n listeners as Set<(payload: ManifestoEventMap<T>[ManifestoEvent]) => void>,\n );\n }\n\n listeners.add(handler as (payload: ManifestoEventMap<T>[ManifestoEvent]) => void);\n return () => {\n listeners?.delete(handler as (payload: ManifestoEventMap<T>[ManifestoEvent]) => void);\n };\n }\n\n function getSnapshot(): Snapshot<T[\"state\"]> {\n return visibleProjectedSnapshot;\n }\n\n function getCanonicalSnapshot(): CanonicalSnapshot<T[\"state\"]> {\n return visibleCanonicalReadSnapshot;\n }\n\n function getAvailableActionsFor(\n snapshot: CanonicalSnapshot<T[\"state\"]>,\n ): readonly (keyof T[\"actions\"])[] {\n return Object.freeze(\n [\n ...queryAvailableActions(schema, snapshot as CoreSnapshot),\n ] as Array<keyof T[\"actions\"]>,\n );\n }\n\n function getAvailableActions(): readonly (keyof T[\"actions\"])[] {\n return getAvailableActionsFor(visibleCanonicalReadSnapshot);\n }\n\n function buildDispatchBlocker(\n layer: DispatchBlocker[\"layer\"],\n expression: DispatchBlocker[\"expression\"],\n description?: string,\n ): DispatchBlocker {\n return Object.freeze({\n layer,\n expression,\n evaluatedResult: false,\n ...(description !== undefined ? { description } : {}),\n }) as DispatchBlocker;\n }\n\n const getActionMetadata: TypedGetActionMetadata<T> = ((name?: keyof T[\"actions\"]) => {\n if (name !== undefined) {\n return actionMetadataByName[String(name) as keyof T[\"actions\"] & string];\n }\n\n return actionMetadata;\n }) as TypedGetActionMetadata<T>;\n\n function isActionAvailableFor(\n snapshot: CanonicalSnapshot<T[\"state\"]>,\n name: keyof T[\"actions\"],\n ): boolean {\n return queryActionAvailable(schema, snapshot as CoreSnapshot, String(name));\n }\n\n function isActionAvailable(name: keyof T[\"actions\"]): boolean {\n return isActionAvailableFor(visibleCanonicalReadSnapshot, name);\n }\n\n function isIntentDispatchableFor(\n snapshot: CanonicalSnapshot<T[\"state\"]>,\n intent: TypedIntent<T>,\n ): boolean {\n return queryIntentDispatchable(schema, snapshot as CoreSnapshot, intent);\n }\n\n const isIntentDispatchable: TypedIsIntentDispatchable<T> = ((\n action,\n ...args\n ) => isIntentDispatchableFor(\n visibleCanonicalReadSnapshot,\n createIntent(action, ...args),\n )) as TypedIsIntentDispatchable<T>;\n\n function getIntentBlockersFor(\n snapshot: CanonicalSnapshot<T[\"state\"]>,\n intent: TypedIntent<T>,\n ): readonly DispatchBlocker[] {\n const actionName = intent.type as keyof T[\"actions\"] & string;\n const action = schema.actions[actionName];\n if (!action) {\n return Object.freeze([]);\n }\n\n if (!isActionAvailableFor(snapshot, actionName)) {\n return Object.freeze(\n action.available\n ? [buildDispatchBlocker(\"available\", action.available, action.description)]\n : [],\n );\n }\n\n if (!isIntentDispatchableFor(snapshot, intent)) {\n return Object.freeze(\n action.dispatchable\n ? [buildDispatchBlocker(\"dispatchable\", action.dispatchable, action.description)]\n : [],\n );\n }\n\n return Object.freeze([]);\n }\n\n const getIntentBlockers: TypedGetIntentBlockers<T> = ((\n action,\n ...args\n ) => getIntentBlockersFor(\n visibleCanonicalReadSnapshot,\n createIntent(action, ...args),\n )) as TypedGetIntentBlockers<T>;\n\n function getSchemaGraph(): SchemaGraph {\n return schemaGraph;\n }\n\n function withHostIntentSlot(\n snapshot: CoreSnapshot,\n intent: TypedIntent<T>,\n context: ReturnType<HostContextProvider[\"createFrozenContext\"]>,\n ): CoreSnapshot {\n const hostState = getHostState(snapshot.data);\n const intentSlots = hostState?.intentSlots ?? {};\n const intentSlot: IntentSlot = intent.input === undefined\n ? { type: intent.type }\n : { type: intent.type, input: intent.input };\n\n return apply(\n schema,\n snapshot,\n [\n {\n op: \"merge\",\n path: [{ kind: \"prop\", name: \"$host\" }],\n value: {\n intentSlots: {\n ...intentSlots,\n [intent.intentId]: intentSlot,\n },\n },\n },\n ],\n context,\n );\n }\n\n function createSimulationUnavailableError(intent: TypedIntent<T>): ManifestoError {\n return new ManifestoError(\n \"ACTION_UNAVAILABLE\",\n `Action \"${intent.type}\" is unavailable against the provided canonical snapshot`,\n );\n }\n\n function createSimulationNotDispatchableError(intent: TypedIntent<T>): ManifestoError {\n return new ManifestoError(\n \"INTENT_NOT_DISPATCHABLE\",\n `Action \"${intent.type}\" is available, but the bound intent is not dispatchable against the provided canonical snapshot`,\n );\n }\n\n function simulateSync(\n snapshot: CanonicalSnapshot<T[\"state\"]>,\n intent: TypedIntent<T>,\n ): SimulateResult<T> {\n const enrichedIntent = ensureIntentId(intent);\n if (!isActionAvailableFor(snapshot, enrichedIntent.type as keyof T[\"actions\"])) {\n throw createSimulationUnavailableError(enrichedIntent);\n }\n const invalidInput = validateIntentInputFor(snapshot, enrichedIntent);\n if (invalidInput) {\n throw invalidInput;\n }\n if (!isIntentDispatchableFor(snapshot, enrichedIntent)) {\n throw createSimulationNotDispatchableError(enrichedIntent);\n }\n\n const context = hostContextProvider.createFrozenContext(enrichedIntent.intentId);\n const baseline = withHostIntentSlot(\n structuredClone(snapshot as CoreSnapshot),\n enrichedIntent,\n context,\n );\n const result = computeSync(schema, baseline, enrichedIntent, context);\n const afterPatches = apply(schema, baseline, result.patches, context);\n const canonicalSimulated = applySystemDelta(afterPatches, result.systemDelta);\n\n return Object.freeze({\n snapshot: cloneAndDeepFreeze(\n canonicalSimulated as CanonicalSnapshot<T[\"state\"]>,\n ),\n patches: cloneAndDeepFreeze(result.patches),\n systemDelta: cloneAndDeepFreeze(result.systemDelta),\n status: result.status,\n requirements: cloneAndDeepFreeze(result.systemDelta.addRequirements),\n }) as SimulateResult<T>;\n }\n\n const simulate: TypedSimulate<T> = ((\n action,\n ...args\n ) => {\n const simulated = simulateSync(\n visibleCanonicalReadSnapshot,\n createIntent(action, ...args),\n );\n const projectedSimulated = projectSnapshotFromCanonical(simulated.snapshot);\n\n return Object.freeze({\n snapshot: projectedSimulated,\n changedPaths: diffProjectedPaths(visibleProjectedSnapshot, projectedSimulated),\n newAvailableActions: getAvailableActionsFor(simulated.snapshot),\n requirements: simulated.requirements,\n status: simulated.status,\n }) as ProjectedSimulateResult<T>;\n }) as TypedSimulate<T>;\n\n function dispose(): void {\n if (disposed) {\n return;\n }\n\n disposed = true;\n subscribers.clear();\n eventListeners.clear();\n }\n\n function setVisibleSnapshot(\n snapshot: CoreSnapshot,\n options?: { readonly notify?: boolean },\n ): Snapshot<T[\"state\"]> {\n visibleCanonicalSnapshot = structuredClone(snapshot);\n host.reset(structuredClone(visibleCanonicalSnapshot));\n visibleCanonicalReadSnapshot = cloneAndDeepFreeze(\n visibleCanonicalSnapshot as CanonicalSnapshot<T[\"state\"]>,\n );\n\n const nextProjectedSnapshot = projectSnapshotFromCanonical(\n visibleCanonicalSnapshot,\n );\n const projectedChanged = !projectedSnapshotsEqual(\n nextProjectedSnapshot,\n visibleProjectedSnapshot,\n );\n\n if (projectedChanged) {\n visibleProjectedSnapshot = nextProjectedSnapshot;\n }\n\n if (options?.notify !== false && projectedChanged) {\n notifySubscribers(visibleProjectedSnapshot);\n }\n return visibleProjectedSnapshot;\n }\n\n function restoreVisibleSnapshot(): void {\n host.reset(structuredClone(visibleCanonicalSnapshot));\n }\n\n function emitEvent<K extends ManifestoEvent>(\n event: K,\n payload: ManifestoEventMap<T>[K],\n ): void {\n const listeners = eventListeners.get(event);\n if (!listeners) {\n return;\n }\n\n for (const handler of listeners) {\n try {\n handler(payload);\n } catch {\n // Event handler failures are isolated from runtime semantics.\n }\n }\n }\n\n function enqueue<R>(task: () => Promise<R>): Promise<R> {\n const result = dispatchQueue\n .catch(() => {})\n .then(task);\n\n dispatchQueue = result.then(() => undefined, () => undefined);\n return result;\n }\n\n function ensureIntentId(intent: TypedIntent<T>): TypedIntent<T> {\n if (intent.intentId && intent.intentId.length > 0) {\n return intent;\n }\n\n return {\n ...intent,\n intentId: generateUUID(),\n } as TypedIntent<T>;\n }\n\n async function executeHost(\n intent: TypedIntent<T>,\n options?: HostDispatchOptions,\n ): Promise<HostResult> {\n return host.dispatch(intent, options);\n }\n\n function createUnavailableError(intent: TypedIntent<T>): ManifestoError {\n return new ManifestoError(\n \"ACTION_UNAVAILABLE\",\n `Action \"${intent.type}\" is unavailable against the current visible snapshot`,\n );\n }\n\n function createNotDispatchableError(intent: TypedIntent<T>): ManifestoError {\n return new ManifestoError(\n \"INTENT_NOT_DISPATCHABLE\",\n `Action \"${intent.type}\" is available, but the bound intent is not dispatchable against the current visible snapshot`,\n );\n }\n\n function createInvalidInputError(message: string): ManifestoError {\n return new ManifestoError(\"INVALID_INPUT\", message);\n }\n\n function validateIntentInputFor(\n snapshot: CanonicalSnapshot<T[\"state\"]>,\n intent: TypedIntent<T>,\n ): ManifestoError | null {\n void snapshot;\n const message = queryIntentInputValidation(schema, intent);\n return message ? createInvalidInputError(message) : null;\n }\n\n function rejectRejectedIntent(intent: TypedIntent<T>, error: ManifestoError): never {\n emitEvent(\"dispatch:rejected\", {\n intentId: intent.intentId ?? \"\",\n intent,\n code: error.code as ManifestoEventMap<T>[\"dispatch:rejected\"][\"code\"],\n reason: error.message,\n });\n throw error;\n }\n\n function rejectUnavailable(intent: TypedIntent<T>): never {\n return rejectRejectedIntent(intent, createUnavailableError(intent));\n }\n\n function rejectInvalidInput(intent: TypedIntent<T>, message: string): never {\n return rejectRejectedIntent(intent, createInvalidInputError(message));\n }\n\n function rejectNotDispatchable(intent: TypedIntent<T>): never {\n return rejectRejectedIntent(intent, createNotDispatchableError(intent));\n }\n\n function notifySubscribers(snapshot: Snapshot<T[\"state\"]>): void {\n for (const subscriber of subscribers) {\n let selected: unknown;\n try {\n selected = subscriber.selector(snapshot);\n } catch {\n continue;\n }\n\n if (subscriber.initialized && Object.is(subscriber.lastValue, selected)) {\n continue;\n }\n\n subscriber.lastValue = selected;\n subscriber.initialized = true;\n\n try {\n subscriber.listener(selected);\n } catch {\n // Listener failures are isolated from runtime semantics.\n }\n }\n }\n\n const extensionKernel = Object.freeze({\n MEL,\n schema,\n createIntent,\n getCanonicalSnapshot,\n projectSnapshot: (\n snapshot: CanonicalSnapshot<T[\"state\"]>,\n ): Snapshot<T[\"state\"]> => projectSnapshotFromCanonical(snapshot),\n simulateSync: (\n snapshot: CanonicalSnapshot<T[\"state\"]>,\n intent: TypedIntent<T>,\n ): ExtensionSimulateResult<T> => {\n const result = simulateSync(snapshot, intent);\n return Object.freeze({\n snapshot: result.snapshot,\n patches: result.patches,\n requirements: result.requirements,\n status: result.status,\n }) as ExtensionSimulateResult<T>;\n },\n getAvailableActionsFor,\n isActionAvailableFor,\n isIntentDispatchableFor,\n }) as ExtensionKernel<T>;\n\n return {\n schema,\n MEL,\n createIntent,\n subscribe,\n on,\n getSnapshot,\n getAvailableActionsFor,\n getAvailableActions,\n getIntentBlockersFor,\n getActionMetadata,\n isActionAvailableFor,\n isActionAvailable,\n isIntentDispatchableFor,\n isIntentDispatchable,\n getIntentBlockers,\n getSchemaGraph,\n simulateSync,\n simulate,\n dispose,\n isDisposed: () => disposed,\n getCanonicalSnapshot,\n getVisibleCoreSnapshot: () => structuredClone(visibleCanonicalSnapshot),\n setVisibleSnapshot,\n restoreVisibleSnapshot,\n emitEvent,\n enqueue,\n ensureIntentId,\n executeHost,\n validateIntentInputFor,\n createUnavailableError,\n createNotDispatchableError,\n rejectInvalidInput,\n rejectUnavailable,\n rejectNotDispatchable,\n [EXTENSION_KERNEL]: extensionKernel,\n };\n}\n\nexport function createBaseRuntimeInstance<T extends ManifestoDomainShape>(\n kernel: RuntimeKernel<T>,\n): ManifestoBaseInstance<T> {\n async function processIntent(intent: TypedIntent<T>): Promise<Snapshot<T[\"state\"]>> {\n if (kernel.isDisposed()) {\n throw new DisposedError();\n }\n\n if (!kernel.isActionAvailable(intent.type as keyof T[\"actions\"])) {\n return kernel.rejectUnavailable(intent);\n }\n const invalidInput = kernel.validateIntentInputFor(kernel.getCanonicalSnapshot(), intent);\n if (invalidInput) {\n return kernel.rejectInvalidInput(intent, invalidInput.message);\n }\n if (!kernel.isIntentDispatchableFor(kernel.getCanonicalSnapshot(), intent)) {\n return kernel.rejectNotDispatchable(intent);\n }\n\n let result: HostResult;\n try {\n result = await kernel.executeHost(intent);\n } catch (error) {\n const failure = toError(error);\n kernel.emitEvent(\"dispatch:failed\", {\n intentId: intent.intentId ?? \"\",\n intent,\n error: failure,\n });\n throw failure;\n }\n\n if (result.status === \"error\") {\n const publishedSnapshot = kernel.setVisibleSnapshot(result.snapshot);\n const failure = result.error ?? new ManifestoError(\"HOST_ERROR\", \"Host dispatch failed\");\n kernel.emitEvent(\"dispatch:failed\", {\n intentId: intent.intentId ?? \"\",\n intent,\n error: failure,\n snapshot: publishedSnapshot,\n });\n throw failure;\n }\n\n const publishedSnapshot = kernel.setVisibleSnapshot(result.snapshot);\n kernel.emitEvent(\"dispatch:completed\", {\n intentId: intent.intentId ?? \"\",\n intent,\n snapshot: publishedSnapshot,\n });\n return publishedSnapshot;\n }\n\n function dispatchAsync(intent: TypedIntent<T>): Promise<Snapshot<T[\"state\"]>> {\n if (kernel.isDisposed()) {\n return Promise.reject(new DisposedError());\n }\n\n const enrichedIntent = kernel.ensureIntentId(intent);\n return kernel.enqueue(() => processIntent(enrichedIntent));\n }\n\n return attachExtensionKernel({\n createIntent: kernel.createIntent,\n dispatchAsync,\n subscribe: kernel.subscribe,\n on: kernel.on,\n getSnapshot: kernel.getSnapshot,\n getCanonicalSnapshot: kernel.getCanonicalSnapshot,\n getAvailableActions: kernel.getAvailableActions,\n isIntentDispatchable: kernel.isIntentDispatchable,\n getIntentBlockers: kernel.getIntentBlockers,\n getActionMetadata: kernel.getActionMetadata,\n isActionAvailable: kernel.isActionAvailable,\n getSchemaGraph: kernel.getSchemaGraph,\n simulate: kernel.simulate,\n MEL: kernel.MEL,\n schema: kernel.schema,\n dispose: kernel.dispose,\n }, kernel);\n}\n\nfunction toError(error: unknown): Error {\n return error instanceof Error\n ? error\n : new Error(String(error));\n}\n\nfunction generateUUID(): string {\n if (typeof crypto !== \"undefined\" && typeof crypto.randomUUID === \"function\") {\n return crypto.randomUUID();\n }\n\n return \"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx\".replace(/[xy]/g, (char) => {\n const random = (Math.random() * 16) | 0;\n const value = char === \"x\" ? random : (random & 0x3) | 0x8;\n return value.toString(16);\n });\n}\n","import {\n type DomainSchema,\n type Snapshot as CoreSnapshot,\n} from \"@manifesto-ai/core\";\n\nexport type CanonicalPlatformNamespaces = {\n $host?: Record<string, unknown>;\n $mel?: Record<string, unknown>;\n [k: `$${string}`]: unknown;\n};\n\nexport type Snapshot<T = unknown> = {\n data: T;\n computed: Record<string, unknown>;\n system: Pick<CoreSnapshot[\"system\"], \"status\" | \"lastError\">;\n meta: Pick<CoreSnapshot[\"meta\"], \"schemaHash\">;\n};\n\nexport type CanonicalSnapshot<T = unknown> =\n Omit<CoreSnapshot, \"data\"> & {\n data: T & CanonicalPlatformNamespaces;\n };\n\nexport type SnapshotProjectionPlan = {\n visibleComputedKeys: readonly string[];\n};\n\nconst COLLECTION_CONTEXT_ROOTS = new Set([\"$item\", \"$index\", \"$array\"]);\n\nexport function buildSnapshotProjectionPlan(\n schema: DomainSchema,\n): SnapshotProjectionPlan {\n const computedFields = schema.computed.fields;\n const memo = new Map<string, boolean>();\n\n function isVisibleComputed(\n name: string,\n visiting: Set<string>,\n ): boolean {\n const cached = memo.get(name);\n if (cached !== undefined) {\n return cached;\n }\n\n if (visiting.has(name)) {\n return false;\n }\n\n visiting.add(name);\n\n const field = computedFields[name];\n if (!field) {\n visiting.delete(name);\n memo.set(name, true);\n return true;\n }\n\n for (const path of collectExprGetPaths(field.expr)) {\n if (isPlatformDependency(path)) {\n visiting.delete(name);\n memo.set(name, false);\n return false;\n }\n\n const computedDependency = resolveComputedDependency(path, computedFields);\n if (\n computedDependency !== null\n && !isVisibleComputed(computedDependency, visiting)\n ) {\n visiting.delete(name);\n memo.set(name, false);\n return false;\n }\n }\n\n visiting.delete(name);\n memo.set(name, true);\n return true;\n }\n\n const visibleComputedKeys = Object.keys(computedFields)\n .filter((name) => isVisibleComputed(name, new Set()));\n\n return {\n visibleComputedKeys,\n };\n}\n\nexport function projectCanonicalSnapshot<T = unknown>(\n snapshot: CoreSnapshot,\n plan: SnapshotProjectionPlan,\n): Snapshot<T> {\n return {\n data: projectData<T>(snapshot.data),\n computed: projectComputed(snapshot.computed, plan),\n system: {\n status: snapshot.system.status,\n lastError: snapshot.system.lastError,\n },\n meta: {\n schemaHash: snapshot.meta.schemaHash,\n },\n };\n}\n\nexport function projectEffectContextSnapshot<T = unknown>(\n snapshot: CoreSnapshot,\n plan: SnapshotProjectionPlan,\n): Snapshot<T> {\n return projectCanonicalSnapshot<T>(snapshot, plan);\n}\n\nexport function cloneAndDeepFreeze<T>(value: T): T {\n return deepFreeze(structuredClone(value));\n}\n\nexport function projectedSnapshotsEqual<T>(\n left: Snapshot<T>,\n right: Snapshot<T>,\n): boolean {\n return cycleSafeEqual(left, right);\n}\n\nfunction projectData<T>(data: unknown): T {\n if (data === null || data === undefined) {\n return data as T;\n }\n\n if (Array.isArray(data) || typeof data !== \"object\") {\n return structuredClone(data) as T;\n }\n\n const projected: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(data as Record<string, unknown>)) {\n if (!key.startsWith(\"$\")) {\n projected[key] = value;\n }\n }\n\n return structuredClone(projected) as T;\n}\n\nfunction projectComputed(\n computed: CoreSnapshot[\"computed\"],\n plan: SnapshotProjectionPlan,\n): Snapshot[\"computed\"] {\n const projected: Record<string, unknown> = {};\n\n for (const key of plan.visibleComputedKeys) {\n if (Object.prototype.hasOwnProperty.call(computed, key)) {\n projected[key] = computed[key];\n }\n }\n\n return structuredClone(projected);\n}\n\nfunction resolveComputedDependency(\n dep: string,\n computedFields: DomainSchema[\"computed\"][\"fields\"],\n): string | null {\n if (Object.prototype.hasOwnProperty.call(computedFields, dep)) {\n return dep;\n }\n\n if (!dep.startsWith(\"computed.\")) {\n return null;\n }\n\n const candidate = dep.slice(\"computed.\".length);\n return Object.prototype.hasOwnProperty.call(computedFields, candidate)\n ? candidate\n : null;\n}\n\nfunction normalizeSemanticPath(path: string): string {\n if (path.startsWith(\"/\")) {\n return path.slice(1).replace(/\\//g, \".\");\n }\n\n return path;\n}\n\nfunction isPlatformDependency(dep: string): boolean {\n const normalized = normalizeSemanticPath(dep);\n const withoutDataRoot = normalized.startsWith(\"data.\")\n ? normalized.slice(\"data.\".length)\n : normalized;\n const match = /^([^.[\\]]+)/.exec(withoutDataRoot);\n const root = match?.[1] ?? \"\";\n if (!root.startsWith(\"$\")) {\n return false;\n }\n\n return !COLLECTION_CONTEXT_ROOTS.has(root);\n}\n\nfunction collectExprGetPaths(expr: unknown): string[] {\n const paths: string[] = [];\n const seen = new WeakSet<object>();\n\n const visit = (node: unknown): void => {\n if (node === null || node === undefined) {\n return;\n }\n\n if (Array.isArray(node)) {\n node.forEach(visit);\n return;\n }\n\n if (typeof node !== \"object\") {\n return;\n }\n\n const objectNode = node as Record<string, unknown>;\n if (seen.has(objectNode)) {\n return;\n }\n seen.add(objectNode);\n\n if (objectNode.kind === \"lit\") {\n return;\n }\n\n if (objectNode.kind === \"get\" && typeof objectNode.path === \"string\") {\n paths.push(objectNode.path);\n return;\n }\n\n for (const value of Object.values(objectNode)) {\n visit(value);\n }\n };\n\n visit(expr);\n return paths;\n}\n\nfunction cycleSafeEqual(left: unknown, right: unknown): boolean {\n return cycleSafeEqualInternal(left, right, new WeakMap<object, WeakSet<object>>());\n}\n\nfunction cycleSafeEqualInternal(\n left: unknown,\n right: unknown,\n seen: WeakMap<object, WeakSet<object>>,\n): boolean {\n if (Object.is(left, right)) {\n return true;\n }\n\n if (typeof left !== typeof right) {\n return false;\n }\n\n if (left === null || right === null) {\n return left === right;\n }\n\n if (typeof left !== \"object\" || typeof right !== \"object\") {\n return false;\n }\n\n const leftObject = left as object;\n const rightObject = right as object;\n const leftTag = Object.prototype.toString.call(leftObject);\n const rightTag = Object.prototype.toString.call(rightObject);\n\n if (leftTag !== rightTag) {\n return false;\n }\n\n let seenRight = seen.get(leftObject);\n if (seenRight?.has(rightObject)) {\n return true;\n }\n\n if (!seenRight) {\n seenRight = new WeakSet<object>();\n seen.set(leftObject, seenRight);\n }\n seenRight.add(rightObject);\n\n if (Array.isArray(leftObject) && Array.isArray(rightObject)) {\n if (leftObject.length !== rightObject.length) {\n return false;\n }\n\n for (let index = 0; index < leftObject.length; index += 1) {\n const leftHasValue = Object.prototype.hasOwnProperty.call(leftObject, index);\n const rightHasValue = Object.prototype.hasOwnProperty.call(rightObject, index);\n\n if (leftHasValue !== rightHasValue) {\n return false;\n }\n\n if (\n leftHasValue\n && !cycleSafeEqualInternal(leftObject[index], rightObject[index], seen)\n ) {\n return false;\n }\n }\n\n return true;\n }\n\n if (leftObject instanceof Date && rightObject instanceof Date) {\n return leftObject.getTime() === rightObject.getTime();\n }\n\n if (leftObject instanceof RegExp && rightObject instanceof RegExp) {\n return leftObject.source === rightObject.source\n && leftObject.flags === rightObject.flags;\n }\n\n if (ArrayBuffer.isView(leftObject) && ArrayBuffer.isView(rightObject)) {\n if (leftObject.constructor !== rightObject.constructor) {\n return false;\n }\n\n if (leftObject.byteLength !== rightObject.byteLength) {\n return false;\n }\n\n const leftBytes = new Uint8Array(\n leftObject.buffer,\n leftObject.byteOffset,\n leftObject.byteLength,\n );\n const rightBytes = new Uint8Array(\n rightObject.buffer,\n rightObject.byteOffset,\n rightObject.byteLength,\n );\n\n return leftBytes.every((value, index) => value === rightBytes[index]);\n }\n\n if (leftObject instanceof ArrayBuffer && rightObject instanceof ArrayBuffer) {\n if (leftObject.byteLength !== rightObject.byteLength) {\n return false;\n }\n\n const leftBytes = new Uint8Array(leftObject);\n const rightBytes = new Uint8Array(rightObject);\n return leftBytes.every((value, index) => value === rightBytes[index]);\n }\n\n if (leftObject instanceof Map && rightObject instanceof Map) {\n if (leftObject.size !== rightObject.size) {\n return false;\n }\n\n const leftEntries = Array.from(leftObject.entries());\n const rightEntries = Array.from(rightObject.entries());\n\n return leftEntries.every(([leftKey, leftValue], index) => {\n const rightEntry = rightEntries[index];\n if (!rightEntry) {\n return false;\n }\n\n const [rightKey, rightValue] = rightEntry;\n return cycleSafeEqualInternal(leftKey, rightKey, seen)\n && cycleSafeEqualInternal(leftValue, rightValue, seen);\n });\n }\n\n if (leftObject instanceof Set && rightObject instanceof Set) {\n if (leftObject.size !== rightObject.size) {\n return false;\n }\n\n const leftValues = Array.from(leftObject.values());\n const rightValues = Array.from(rightObject.values());\n\n return leftValues.every((value, index) =>\n cycleSafeEqualInternal(value, rightValues[index], seen));\n }\n\n const leftKeys = getComparableObjectKeys(leftObject);\n const rightKeys = getComparableObjectKeys(rightObject);\n\n if (leftKeys.length !== rightKeys.length) {\n return false;\n }\n\n for (let index = 0; index < leftKeys.length; index += 1) {\n const leftKey = leftKeys[index];\n const rightKey = rightKeys[index];\n if (leftKey !== rightKey) {\n return false;\n }\n\n const leftValue = (leftObject as Record<string, unknown>)[leftKey];\n const rightValue = (rightObject as Record<string, unknown>)[rightKey];\n if (!cycleSafeEqualInternal(leftValue, rightValue, seen)) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction getComparableObjectKeys(value: object): string[] {\n return Object.keys(value as Record<string, unknown>)\n .filter((key) => (value as Record<string, unknown>)[key] !== undefined)\n .sort();\n}\n\nfunction deepFreeze<T>(value: T, seen = new WeakSet<object>()): T {\n if (value === null || value === undefined || typeof value !== \"object\") {\n return value;\n }\n\n if (isBinaryValue(value)) {\n return cloneBinaryValue(value) as T;\n }\n\n const objectValue = value as Record<PropertyKey, unknown>;\n\n if (seen.has(objectValue)) {\n return value;\n }\n\n if (Object.isFrozen(value)) {\n return value;\n }\n\n seen.add(objectValue);\n\n for (const key of Reflect.ownKeys(objectValue)) {\n const child = objectValue[key];\n if (isBinaryValue(child)) {\n defineReadOnlyBinaryProperty(objectValue, key, child);\n continue;\n }\n deepFreeze(child, seen);\n }\n\n return Object.freeze(value);\n}\n\nfunction isBinaryValue(value: unknown): value is ArrayBuffer | ArrayBufferView {\n return value instanceof ArrayBuffer || ArrayBuffer.isView(value);\n}\n\nfunction cloneBinaryValue<T extends ArrayBuffer | ArrayBufferView>(value: T): T {\n return structuredClone(value);\n}\n\nfunction defineReadOnlyBinaryProperty(\n target: Record<PropertyKey, unknown>,\n key: PropertyKey,\n value: ArrayBuffer | ArrayBufferView,\n): void {\n const descriptor = Object.getOwnPropertyDescriptor(target, key);\n if (!descriptor || !(\"value\" in descriptor)) {\n return;\n }\n\n Object.defineProperty(target, key, {\n enumerable: descriptor.enumerable ?? true,\n configurable: false,\n get() {\n return cloneBinaryValue(value);\n },\n });\n}\n"],"mappings":"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","names":["ManifestoError","code","message","options","ReservedEffectError","effectType","CompileError","diagnostics","formattedMessage","DisposedError","AlreadyActivatedError","apply","applySystemDelta","computeSync","queryAvailableActions","queryActionAvailable","queryIntentDispatchable","queryIntentInputValidation","extractSchemaGraph","getHostState","COLLECTION_CONTEXT_ROOTS","buildSnapshotProjectionPlan","schema","computedFields","memo","isVisibleComputed","name","visiting","cached","field","path","collectExprGetPaths","isPlatformDependency","computedDependency","resolveComputedDependency","projectCanonicalSnapshot","snapshot","plan","projectData","projectComputed","projectEffectContextSnapshot","cloneAndDeepFreeze","value","deepFreeze","projectedSnapshotsEqual","left","right","cycleSafeEqual","data","projected","key","computed","dep","candidate","normalizeSemanticPath","normalized","withoutDataRoot","root","expr","paths","seen","visit","node","objectNode","cycleSafeEqualInternal","leftObject","rightObject","leftTag","rightTag","seenRight","index","leftHasValue","rightHasValue","leftBytes","rightBytes","leftEntries","rightEntries","leftKey","leftValue","rightEntry","rightKey","rightValue","leftValues","rightValues","leftKeys","getComparableObjectKeys","rightKeys","isBinaryValue","cloneBinaryValue","objectValue","child","defineReadOnlyBinaryProperty","target","descriptor","ACTION_PARAM_NAMES","ACTION_SINGLE_PARAM_OBJECT_VALUE","RUNTIME_KERNEL_FACTORY","ACTIVATION_STATE","EXTENSION_KERNEL","SCHEMA_GRAPH_NODE_ID_PATTERN","createSdkSchemaGraph","rawGraph","nodeIds","node","outgoing","incoming","link","index","from","to","next","edge","materialize","included","subgraph","trace","target","direction","seed","resolveSchemaGraphNodeId","frontier","seen","current","ManifestoError","nodeId","diffProjectedPaths","left","right","paths","visit","a","b","path","leftObject","rightObject","leftSeen","limit","leftHas","rightHas","childPath","isPlainDiffableObject","keys","key","value","attachRuntimeKernelFactory","manifesto","factory","activationState","state","getExistingActivationState","getRuntimeKernelFactory","attachExtensionKernel","runtime","kernel","getAttachedExtensionKernel","getActivationState","assertComposableNotActivated","AlreadyActivatedError","activateComposable","getActionParamNames","action","input","createRuntimeKernel","schema","projectionPlan","host","hostContextProvider","MEL","createIntent","initialCanonicalSnapshot","projectSnapshotFromCanonical","snapshot","cloneAndDeepFreeze","projectCanonicalSnapshot","visibleCanonicalSnapshot","visibleProjectedSnapshot","visibleCanonicalReadSnapshot","dispatchQueue","disposed","schemaGraph","extractSchemaGraph","actionNames","actionMetadataByName","name","rawParams","params","actionMetadata","subscribers","eventListeners","subscribe","selector","listener","lastValue","initialized","subscriber","on","event","handler","listeners","getSnapshot","getCanonicalSnapshot","getAvailableActionsFor","queryAvailableActions","getAvailableActions","buildDispatchBlocker","layer","expression","description","getActionMetadata","isActionAvailableFor","queryActionAvailable","isActionAvailable","isIntentDispatchableFor","intent","queryIntentDispatchable","isIntentDispatchable","args","getIntentBlockersFor","actionName","getIntentBlockers","getSchemaGraph","withHostIntentSlot","context","intentSlots","getHostState","intentSlot","apply","createSimulationUnavailableError","createSimulationNotDispatchableError","simulateSync","enrichedIntent","ensureIntentId","invalidInput","validateIntentInputFor","baseline","result","computeSync","afterPatches","canonicalSimulated","applySystemDelta","simulate","simulated","projectedSimulated","dispose","setVisibleSnapshot","options","nextProjectedSnapshot","projectedChanged","projectedSnapshotsEqual","notifySubscribers","restoreVisibleSnapshot","emitEvent","payload","enqueue","task","generateUUID","executeHost","createUnavailableError","createNotDispatchableError","createInvalidInputError","message","queryIntentInputValidation","rejectRejectedIntent","error","rejectUnavailable","rejectInvalidInput","rejectNotDispatchable","selected","extensionKernel","createBaseRuntimeInstance","processIntent","DisposedError","failure","toError","publishedSnapshot","dispatchAsync","char","random"]}