@manifesto-ai/sdk 3.5.0 → 3.6.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,7 +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.1.0 activation-and-introspection model documented in [docs/sdk-SPEC.md](docs/sdk-SPEC.md).
7
+ > **Current Contract Note:** The current SDK contract is the living v3.3.0 activation-and-introspection model documented in [docs/sdk-SPEC.md](docs/sdk-SPEC.md). That current contract now includes `@manifesto-ai/sdk/extensions` for safe arbitrary-snapshot read-only helpers after activation, including `createSimulationSession(instance)`.
8
8
 
9
9
  ## What This Package Owns
10
10
 
@@ -72,8 +72,61 @@ The activated base runtime exposes:
72
72
  - `schema`
73
73
  - `dispose`
74
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
+
75
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.
76
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
+
77
130
  ## Governed Composition Direction
78
131
 
79
132
  SDK no longer re-exports the old World facade or its bootstrap helpers.
@@ -0,0 +1,2 @@
1
+ var T=class extends Error{code;constructor(t,n,o){super(n,o),this.name="ManifestoError",this.code=t}},V=class extends T{effectType;constructor(t){super("RESERVED_EFFECT",`Effect type "${t}" is reserved and cannot be overridden`),this.name="ReservedEffectError",this.effectType=t}},_=class extends T{diagnostics;constructor(t,n){super("COMPILE_ERROR",n),this.name="CompileError",this.diagnostics=t}},M=class extends T{constructor(){super("DISPOSED","Cannot use a disposed Manifesto runtime"),this.name="DisposedError"}},j=class extends T{constructor(){super("ALREADY_ACTIVATED","ComposableManifesto.activate() may only be called once"),this.name="AlreadyActivatedError"}};import{apply as q,applySystemDelta as je,computeSync as ve,getAvailableActions as Ie,isActionAvailable as Oe}from"@manifesto-ai/core";import{extractSchemaGraph as Pe}from"@manifesto-ai/compiler";import{getHostState as ke}from"@manifesto-ai/host";var be=new Set(["$item","$index","$array"]);function Be(e){let t=e.computed.fields,n=new Map;function o(r,p){let i=n.get(r);if(i!==void 0)return i;if(p.has(r))return!1;p.add(r);let y=t[r];if(!y)return p.delete(r),n.set(r,!0),!0;for(let d of Ce(y.expr)){if(Re(d))return p.delete(r),n.set(r,!1),!1;let l=we(d,t);if(l!==null&&!o(l,p))return p.delete(r),n.set(r,!1),!1}return p.delete(r),n.set(r,!0),!0}return{visibleComputedKeys:Object.keys(t).filter(r=>o(r,new Set))}}function D(e,t){return{data:ge(e.data),computed:Ae(e.computed,t),system:{status:e.system.status,lastError:e.system.lastError},meta:{schemaHash:e.meta.schemaHash}}}function Ue(e,t){return D(e,t)}function x(e){return F(structuredClone(e))}function U(e,t){return Ee(e,t)}function ge(e){if(e==null)return e;if(Array.isArray(e)||typeof e!="object")return structuredClone(e);let t={};for(let[n,o]of Object.entries(e))n.startsWith("$")||(t[n]=o);return structuredClone(t)}function Ae(e,t){let n={};for(let o of t.visibleComputedKeys)Object.prototype.hasOwnProperty.call(e,o)&&(n[o]=e[o]);return structuredClone(n)}function we(e,t){if(Object.prototype.hasOwnProperty.call(t,e))return e;if(!e.startsWith("computed."))return null;let n=e.slice(9);return Object.prototype.hasOwnProperty.call(t,n)?n:null}function xe(e){return e.startsWith("/")?e.slice(1).replace(/\//g,"."):e}function Re(e){let t=xe(e),n=t.startsWith("data.")?t.slice(5):t,a=/^([^.[\]]+)/.exec(n)?.[1]??"";return a.startsWith("$")?!be.has(a):!1}function Ce(e){let t=[],n=new WeakSet,o=a=>{if(a==null)return;if(Array.isArray(a)){a.forEach(o);return}if(typeof a!="object")return;let r=a;if(!n.has(r)&&(n.add(r),r.kind!=="lit")){if(r.kind==="get"&&typeof r.path=="string"){t.push(r.path);return}for(let p of Object.values(r))o(p)}};return o(e),t}function Ee(e,t){return E(e,t,new WeakMap)}function E(e,t,n){if(Object.is(e,t))return!0;if(typeof e!=typeof t)return!1;if(e===null||t===null)return e===t;if(typeof e!="object"||typeof t!="object")return!1;let o=e,a=t,r=Object.prototype.toString.call(o),p=Object.prototype.toString.call(a);if(r!==p)return!1;let i=n.get(o);if(i?.has(a))return!0;if(i||(i=new WeakSet,n.set(o,i)),i.add(a),Array.isArray(o)&&Array.isArray(a)){if(o.length!==a.length)return!1;for(let l=0;l<o.length;l+=1){let m=Object.prototype.hasOwnProperty.call(o,l),f=Object.prototype.hasOwnProperty.call(a,l);if(m!==f||m&&!E(o[l],a[l],n))return!1}return!0}if(o instanceof Date&&a instanceof Date)return o.getTime()===a.getTime();if(o instanceof RegExp&&a instanceof RegExp)return o.source===a.source&&o.flags===a.flags;if(ArrayBuffer.isView(o)&&ArrayBuffer.isView(a)){if(o.constructor!==a.constructor||o.byteLength!==a.byteLength)return!1;let l=new Uint8Array(o.buffer,o.byteOffset,o.byteLength),m=new Uint8Array(a.buffer,a.byteOffset,a.byteLength);return l.every((f,h)=>f===m[h])}if(o instanceof ArrayBuffer&&a instanceof ArrayBuffer){if(o.byteLength!==a.byteLength)return!1;let l=new Uint8Array(o),m=new Uint8Array(a);return l.every((f,h)=>f===m[h])}if(o instanceof Map&&a instanceof Map){if(o.size!==a.size)return!1;let l=Array.from(o.entries()),m=Array.from(a.entries());return l.every(([f,h],b)=>{let g=m[b];if(!g)return!1;let[R,C]=g;return E(f,R,n)&&E(h,C,n)})}if(o instanceof Set&&a instanceof Set){if(o.size!==a.size)return!1;let l=Array.from(o.values()),m=Array.from(a.values());return l.every((f,h)=>E(f,m[h],n))}let y=z(o),d=z(a);if(y.length!==d.length)return!1;for(let l=0;l<y.length;l+=1){let m=y[l],f=d[l];if(m!==f)return!1;let h=o[m],b=a[f];if(!E(h,b,n))return!1}return!0}function z(e){return Object.keys(e).filter(t=>e[t]!==void 0).sort()}function F(e,t=new WeakSet){if(e==null||typeof e!="object")return e;if(B(e))return $(e);let n=e;if(t.has(n)||Object.isFrozen(e))return e;t.add(n);for(let o of Reflect.ownKeys(n)){let a=n[o];if(B(a)){Me(n,o,a);continue}F(a,t)}return Object.freeze(e)}function B(e){return e instanceof ArrayBuffer||ArrayBuffer.isView(e)}function $(e){return structuredClone(e)}function Me(e,t,n){let o=Object.getOwnPropertyDescriptor(e,t);!o||!("value"in o)||Object.defineProperty(e,t,{enumerable:o.enumerable??!0,configurable:!1,get(){return $(n)}})}var De=Symbol("manifesto-sdk.action-param-names"),Y=Symbol("manifesto-sdk.runtime-kernel-factory"),N=Symbol("manifesto-sdk.activation-state"),P=Symbol("manifesto-sdk.extension-kernel"),Ne=/^(state|computed|action):.+$/;function Q(e){let t=new Set(e.nodes.map(i=>i.id)),n=new Map,o=new Map,a=(i,y,d)=>{let l=i.get(y);if(l){l.add(d);return}i.set(y,new Set([d]))};for(let i of e.edges)a(n,i.from,i.to),a(o,i.to,i.from);let r=i=>{let y=Object.freeze({nodes:Object.freeze(e.nodes.filter(d=>i.has(d.id))),edges:Object.freeze(e.edges.filter(d=>i.has(d.from)&&i.has(d.to)))});return Q(y)},p=(i,y)=>{let d=Ke(i,t),l=[d],m=new Set([d]),f=y==="incoming"?o:n;for(;l.length>0;){let h=l.shift();if(h)for(let b of f.get(h)??[])m.has(b)||(m.add(b),l.push(b))}return r(m)};return Object.freeze({nodes:e.nodes,edges:e.edges,traceUp(i){return p(i,"incoming")},traceDown(i){return p(i,"outgoing")}})}function Ke(e,t){if(typeof e=="string"){if(!Ne.test(e))throw new T("SCHEMA_ERROR",'SchemaGraph node id must use "state:<name>", "computed:<name>", or "action:<name>"');if(!t.has(e))throw new T("SCHEMA_ERROR",`Unknown SchemaGraph node id "${e}"`);return e}let n;switch(e.__kind){case"ActionRef":n=`action:${String(e.name)}`;break;case"FieldRef":n=`state:${e.name}`;break;case"ComputedRef":n=`computed:${e.name}`;break;default:throw new T("SCHEMA_ERROR","Unsupported SchemaGraph ref lookup target")}if(!t.has(n))throw new T("SCHEMA_ERROR",`SchemaGraph node "${n}" is not part of the projected graph`);return n}function Le(e,t){let n=new Set,o=new WeakMap,a=(r,p,i)=>{if(Object.is(r,p))return;if(r===null||p===null){n.add(i);return}if(typeof r!="object"||typeof p!="object"){n.add(i);return}let y=r,d=p,l=o.get(y);if(l?.has(d))return;if(l?l.add(d):o.set(y,new WeakSet([d])),Array.isArray(r)||Array.isArray(p)){if(!Array.isArray(r)||!Array.isArray(p)){n.add(i);return}let f=Math.max(r.length,p.length);for(let h=0;h<f;h+=1){let b=Object.prototype.hasOwnProperty.call(r,h),g=Object.prototype.hasOwnProperty.call(p,h),R=`${i}[${h}]`;if(b!==g){n.add(R);continue}!b&&!g||a(r[h],p[h],R)}return}if(!W(r)||!W(p)){n.add(i);return}let m=new Set([...Object.keys(r),...Object.keys(p)]);for(let f of[...m].sort()){let h=Object.prototype.hasOwnProperty.call(r,f),b=Object.prototype.hasOwnProperty.call(p,f),g=`${i}.${f}`;if(h!==b){n.add(g);continue}a(r[f],p[f],g)}};return a(e.data,t.data,"data"),a(e.computed,t.computed,"computed"),a(e.system,t.system,"system"),a(e.meta,t.meta,"meta"),Object.freeze([...n].sort())}function W(e){return Object.prototype.toString.call(e)==="[object Object]"}function Qe(e,t,n){Object.defineProperty(e,Y,{enumerable:!1,configurable:!1,writable:!1,value:t});let o=n??X(e)??{activated:!1};return X(e)||Object.defineProperty(e,N,{enumerable:!1,configurable:!1,writable:!1,value:o}),e}function Je(e){let n=e[Y];if(typeof n!="function")throw new T("SCHEMA_ERROR","ComposableManifesto is missing its runtime kernel factory");return n}function Ge(e,t){return Object.defineProperty(e,P,{enumerable:!1,configurable:!1,writable:!1,value:t[P]}),e}function Ze(e){let n=e[P];if(!n)throw new T("SCHEMA_ERROR","Activated runtime is missing its extension kernel");return n}function J(e){let n=e[N];if(!n)throw new T("SCHEMA_ERROR","ComposableManifesto is missing its activation state");return n}function et(e){if(J(e).activated)throw new j}function tt(e){let t=J(e);if(t.activated)throw new j;t.activated=!0}function X(e){return e[N]??null}function He(e){return!e||e.type!=="object"||!e.fields?[]:Object.keys(e.fields)}function nt({schema:e,projectionPlan:t,host:n,hostContextProvider:o,MEL:a,createIntent:r}){let p=n.getSnapshot();if(!p)throw new T("SCHEMA_ERROR","Host failed to initialize its genesis snapshot");function i(s){return x(D(s,t))}let y=structuredClone(p),d=i(y),l=x(y),m=Promise.resolve(),f=!1,h=Q(Pe(e)),b=Object.keys(e.actions),g=Object.freeze(Object.fromEntries(b.map(s=>{let c=e.actions[s],S=a.actions[s]?.[De],A=Object.freeze(Array.isArray(S)?[...S]:He(c.input));return[s,Object.freeze({name:s,params:A,input:c.input,description:c.description})]}))),R=Object.freeze(b.map(s=>g[s])),C=new Set,v=new Map;function Z(s,c){if(f)return()=>{};let u,S=!1;try{u=s(d),S=!0}catch{u=void 0,S=!1}let A={selector:s,listener:c,lastValue:u,initialized:S};return C.add(A),()=>{C.delete(A)}}function ee(s,c){if(f)return()=>{};let u=v.get(s);return u||(u=new Set,v.set(s,u)),u.add(c),()=>{u?.delete(c)}}function te(){return d}function K(){return l}function I(s){return Object.freeze([...Ie(e,s)])}function ne(){return I(l)}let oe=(s=>s!==void 0?g[String(s)]:R);function O(s,c){return Oe(e,s,String(c))}function ae(s){return O(l,s)}function se(){return h}function re(s,c,u){let A=ke(s.data)?.intentSlots??{},w=c.input===void 0?{type:c.type}:{type:c.type,input:c.input};return q(e,s,[{op:"merge",path:[{kind:"prop",name:"$host"}],value:{intentSlots:{...A,[c.intentId]:w}}}],u)}function ie(s){return new T("ACTION_UNAVAILABLE",`Action "${s.type}" is unavailable against the provided canonical snapshot`)}function k(s,c){let u=G(c);if(!O(s,u.type))throw ie(u);let S=o.createFrozenContext(u.intentId),A=re(structuredClone(s),u,S),w=ve(e,A,u,S),Se=q(e,A,w.patches,S),Te=je(Se,w.systemDelta);return Object.freeze({snapshot:x(Te),patches:x(w.patches),systemDelta:x(w.systemDelta),status:w.status,requirements:x(w.systemDelta.addRequirements)})}let ce=((s,...c)=>{let u=k(l,r(s,...c)),S=i(u.snapshot);return Object.freeze({snapshot:S,changedPaths:Le(d,S),newAvailableActions:I(u.snapshot),requirements:u.requirements,status:u.status})});function le(){f||(f=!0,C.clear(),v.clear())}function ue(s,c){y=structuredClone(s),n.reset(structuredClone(y)),l=x(y);let u=i(y),S=!U(u,d);return S&&(d=u),c?.notify!==!1&&S&&he(d),d}function pe(){n.reset(structuredClone(y))}function L(s,c){let u=v.get(s);if(u)for(let S of u)try{S(c)}catch{}}function de(s){let c=m.catch(()=>{}).then(s);return m=c.then(()=>{},()=>{}),c}function G(s){return s.intentId&&s.intentId.length>0?s:{...s,intentId:_e()}}async function fe(s,c){return n.dispatch(s,c)}function H(s){return new T("ACTION_UNAVAILABLE",`Action "${s.type}" is unavailable against the current visible snapshot`)}function ye(s){let c=H(s);throw L("dispatch:rejected",{intentId:s.intentId??"",intent:s,reason:c.message}),c}function he(s){for(let c of C){let u;try{u=c.selector(s)}catch{continue}if(!(c.initialized&&Object.is(c.lastValue,u))){c.lastValue=u,c.initialized=!0;try{c.listener(u)}catch{}}}}let me=Object.freeze({MEL:a,schema:e,createIntent:r,getCanonicalSnapshot:K,projectSnapshot:s=>i(s),simulateSync:(s,c)=>{let u=k(s,c);return Object.freeze({snapshot:u.snapshot,patches:u.patches,requirements:u.requirements,status:u.status})},getAvailableActionsFor:I,isActionAvailableFor:O});return{schema:e,MEL:a,createIntent:r,subscribe:Z,on:ee,getSnapshot:te,getAvailableActionsFor:I,getAvailableActions:ne,getActionMetadata:oe,isActionAvailableFor:O,isActionAvailable:ae,getSchemaGraph:se,simulateSync:k,simulate:ce,dispose:le,isDisposed:()=>f,getCanonicalSnapshot:K,getVisibleCoreSnapshot:()=>structuredClone(y),setVisibleSnapshot:ue,restoreVisibleSnapshot:pe,emitEvent:L,enqueue:de,ensureIntentId:G,executeHost:fe,createUnavailableError:H,rejectUnavailable:ye,[P]:me}}function ot(e){async function t(o){if(e.isDisposed())throw new M;if(!e.isActionAvailable(o.type))return e.rejectUnavailable(o);let a;try{a=await e.executeHost(o)}catch(p){let i=Ve(p);throw e.emitEvent("dispatch:failed",{intentId:o.intentId??"",intent:o,error:i}),i}if(a.status==="error"){let p=e.setVisibleSnapshot(a.snapshot),i=a.error??new T("HOST_ERROR","Host dispatch failed");throw e.emitEvent("dispatch:failed",{intentId:o.intentId??"",intent:o,error:i,snapshot:p}),i}let r=e.setVisibleSnapshot(a.snapshot);return e.emitEvent("dispatch:completed",{intentId:o.intentId??"",intent:o,snapshot:r}),r}function n(o){if(e.isDisposed())return Promise.reject(new M);let a=e.ensureIntentId(o);return e.enqueue(()=>t(a))}return Ge({createIntent:e.createIntent,dispatchAsync:n,subscribe:e.subscribe,on:e.on,getSnapshot:e.getSnapshot,getCanonicalSnapshot:e.getCanonicalSnapshot,getAvailableActions:e.getAvailableActions,getActionMetadata:e.getActionMetadata,isActionAvailable:e.isActionAvailable,getSchemaGraph:e.getSchemaGraph,simulate:e.simulate,MEL:e.MEL,schema:e.schema,dispose:e.dispose},e)}function Ve(e){return e instanceof Error?e:new Error(String(e))}function _e(){return typeof crypto<"u"&&typeof crypto.randomUUID=="function"?crypto.randomUUID():"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,e=>{let t=Math.random()*16|0;return(e==="x"?t:t&3|8).toString(16)})}export{T as a,V as b,_ as c,M as d,j as e,Be as f,Ue as g,x as h,De as i,Qe as j,Je as k,Ge as l,Ze as m,J as n,et as o,tt as p,nt as q,ot as r};
2
+ //# sourceMappingURL=chunk-NXOXNSXB.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 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 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 TypedIntent,\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 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};\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 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 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 createUnavailableError: (intent: TypedIntent<T>) => ManifestoError;\n readonly rejectUnavailable: (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 getActionInputFieldNames(\n input: DomainSchema[\"actions\"][string][\"input\"],\n): readonly string[] {\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] : getActionInputFieldNames(action.input),\n );\n\n return [name, Object.freeze({\n name,\n params,\n input: action.input,\n description: action.description,\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 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 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 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\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 rejectUnavailable(intent: TypedIntent<T>): never {\n const error = createUnavailableError(intent);\n emitEvent(\"dispatch:rejected\", {\n intentId: intent.intentId ?? \"\",\n intent,\n reason: error.message,\n });\n throw error;\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 }) as ExtensionKernel<T>;\n\n return {\n schema,\n MEL,\n createIntent,\n subscribe,\n on,\n getSnapshot,\n getAvailableActionsFor,\n getAvailableActions,\n getActionMetadata,\n isActionAvailableFor,\n isActionAvailable,\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 createUnavailableError,\n rejectUnavailable,\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\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 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","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","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","getActionInputFieldNames","input","createRuntimeKernel","schema","projectionPlan","host","hostContextProvider","MEL","createIntent","initialCanonicalSnapshot","projectSnapshotFromCanonical","snapshot","cloneAndDeepFreeze","projectCanonicalSnapshot","visibleCanonicalSnapshot","visibleProjectedSnapshot","visibleCanonicalReadSnapshot","dispatchQueue","disposed","schemaGraph","extractSchemaGraph","actionNames","actionMetadataByName","name","action","rawParams","params","actionMetadata","subscribers","eventListeners","subscribe","selector","listener","lastValue","initialized","subscriber","on","event","handler","listeners","getSnapshot","getCanonicalSnapshot","getAvailableActionsFor","queryAvailableActions","getAvailableActions","getActionMetadata","isActionAvailableFor","queryActionAvailable","isActionAvailable","getSchemaGraph","withHostIntentSlot","intent","context","intentSlots","getHostState","intentSlot","apply","createSimulationUnavailableError","simulateSync","enrichedIntent","ensureIntentId","baseline","result","computeSync","afterPatches","canonicalSimulated","applySystemDelta","simulate","args","simulated","projectedSimulated","dispose","setVisibleSnapshot","options","nextProjectedSnapshot","projectedChanged","projectedSnapshotsEqual","notifySubscribers","restoreVisibleSnapshot","emitEvent","payload","enqueue","task","generateUUID","executeHost","createUnavailableError","rejectUnavailable","error","selected","extensionKernel","createBaseRuntimeInstance","processIntent","DisposedError","failure","toError","publishedSnapshot","dispatchAsync","char","random"]}
@@ -0,0 +1,52 @@
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";
3
+ export type ExtensionSimulateResult<T extends ManifestoDomainShape = ManifestoDomainShape> = {
4
+ readonly snapshot: CanonicalSnapshot<T["state"]>;
5
+ readonly patches: readonly Patch[];
6
+ readonly requirements: readonly Requirement[];
7
+ readonly status: ComputeStatus;
8
+ };
9
+ export interface ExtensionKernel<T extends ManifestoDomainShape> {
10
+ readonly MEL: TypedMEL<T>;
11
+ readonly schema: DomainSchema;
12
+ readonly createIntent: TypedCreateIntent<T>;
13
+ readonly getCanonicalSnapshot: () => CanonicalSnapshot<T["state"]>;
14
+ readonly projectSnapshot: (snapshot: CanonicalSnapshot<T["state"]>) => Snapshot<T["state"]>;
15
+ readonly simulateSync: (snapshot: CanonicalSnapshot<T["state"]>, intent: TypedIntent<T>) => ExtensionSimulateResult<T>;
16
+ readonly getAvailableActionsFor: (snapshot: CanonicalSnapshot<T["state"]>) => readonly (keyof T["actions"])[];
17
+ readonly isActionAvailableFor: (snapshot: CanonicalSnapshot<T["state"]>, actionName: keyof T["actions"]) => boolean;
18
+ }
19
+ export type SimulationSessionStatus = ComputeStatus | "idle" | "computing";
20
+ export type SimulationActionRef<T extends ManifestoDomainShape = ManifestoDomainShape> = TypedActionRef<T, keyof T["actions"]>;
21
+ export type SimulationSessionStep<T extends ManifestoDomainShape = ManifestoDomainShape> = {
22
+ readonly intent: TypedIntent<T>;
23
+ readonly snapshot: Snapshot<T["state"]>;
24
+ readonly canonicalSnapshot: CanonicalSnapshot<T["state"]>;
25
+ readonly availableActions: readonly SimulationActionRef<T>[];
26
+ readonly requirements: readonly Requirement[];
27
+ readonly status: ComputeStatus;
28
+ readonly isTerminal: boolean;
29
+ };
30
+ export type SimulationSessionResult<T extends ManifestoDomainShape = ManifestoDomainShape> = {
31
+ readonly snapshot: Snapshot<T["state"]>;
32
+ readonly canonicalSnapshot: CanonicalSnapshot<T["state"]>;
33
+ readonly depth: number;
34
+ readonly trajectory: readonly SimulationSessionStep<T>[];
35
+ readonly availableActions: readonly SimulationActionRef<T>[];
36
+ readonly requirements: readonly Requirement[];
37
+ readonly status: SimulationSessionStatus;
38
+ readonly isTerminal: boolean;
39
+ };
40
+ export interface SimulationSession<T extends ManifestoDomainShape> {
41
+ readonly snapshot: Snapshot<T["state"]>;
42
+ readonly canonicalSnapshot: CanonicalSnapshot<T["state"]>;
43
+ readonly depth: number;
44
+ readonly trajectory: readonly SimulationSessionStep<T>[];
45
+ readonly availableActions: readonly SimulationActionRef<T>[];
46
+ readonly requirements: readonly Requirement[];
47
+ readonly status: SimulationSessionStatus;
48
+ readonly isTerminal: boolean;
49
+ next<K extends keyof T["actions"]>(action: TypedActionRef<T, K>, ...args: CreateIntentArgs<T, K>): SimulationSession<T>;
50
+ next(intent: TypedIntent<T>): SimulationSession<T>;
51
+ finish(): SimulationSessionResult<T>;
52
+ }
@@ -0,0 +1,5 @@
1
+ import type { ExtensionKernel } from "./extensions-types.js";
2
+ import type { BaseLaws, ActivatedInstance, ManifestoDomainShape } from "./types.js";
3
+ export type { ExtensionKernel, ExtensionSimulateResult, SimulationActionRef, SimulationSession, SimulationSessionResult, SimulationSessionStatus, SimulationSessionStep, } from "./extensions-types.js";
4
+ export { createSimulationSession } from "./simulation-session.js";
5
+ export declare function getExtensionKernel<T extends ManifestoDomainShape, Laws extends BaseLaws>(app: ActivatedInstance<T, Laws>): ExtensionKernel<T>;
@@ -0,0 +1,2 @@
1
+ import{a as S,h as m,m as c}from"./chunk-NXOXNSXB.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
+ //# sourceMappingURL=extensions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/simulation-session.ts","../src/extensions.ts"],"sourcesContent":["import { ManifestoError } from \"./errors.js\";\nimport { getAttachedExtensionKernel } from \"./internal.js\";\nimport { cloneAndDeepFreeze } from \"./snapshot-projection.js\";\nimport type {\n ExtensionKernel,\n SimulationActionRef,\n SimulationSession,\n SimulationSessionResult,\n SimulationSessionStatus,\n SimulationSessionStep,\n} from \"./extensions-types.js\";\nimport type {\n ActivatedInstance,\n BaseLaws,\n CanonicalSnapshot,\n CreateIntentArgs,\n ManifestoDomainShape,\n TypedActionRef,\n TypedIntent,\n} from \"./types.js\";\n\nfunction isTerminalStatus(status: SimulationSessionStatus): boolean {\n return status === \"pending\" || status === \"halted\" || status === \"error\";\n}\n\nfunction isActionRef<T extends ManifestoDomainShape>(\n value: TypedIntent<T> | TypedActionRef<T, keyof T[\"actions\"]>,\n): value is TypedActionRef<T, keyof T[\"actions\"]> {\n return (value as { __kind?: string }).__kind === \"ActionRef\";\n}\n\nfunction freezeArray<T>(values: readonly T[]): readonly T[] {\n return Object.freeze([...values]);\n}\n\nfunction getAvailableActionRefs<T extends ManifestoDomainShape>(\n ext: ExtensionKernel<T>,\n snapshot: CanonicalSnapshot<T[\"state\"]>,\n isTerminal: boolean,\n): readonly SimulationActionRef<T>[] {\n if (isTerminal) {\n return Object.freeze([]);\n }\n\n return Object.freeze(\n ext.getAvailableActionsFor(snapshot).map(\n (name) => ext.MEL.actions[name],\n ) as readonly SimulationActionRef<T>[],\n );\n}\n\nfunction createSessionStep<T extends ManifestoDomainShape>(\n intent: TypedIntent<T>,\n ext: ExtensionKernel<T>,\n snapshot: CanonicalSnapshot<T[\"state\"]>,\n requirements: readonly import(\"@manifesto-ai/core\").Requirement[],\n status: import(\"@manifesto-ai/core\").ComputeStatus,\n): SimulationSessionStep<T> {\n const isTerminal = isTerminalStatus(status);\n return Object.freeze({\n intent: cloneAndDeepFreeze(intent),\n snapshot: ext.projectSnapshot(snapshot),\n canonicalSnapshot: snapshot,\n availableActions: getAvailableActionRefs(ext, snapshot, isTerminal),\n requirements: freezeArray(requirements),\n status,\n isTerminal,\n });\n}\n\nfunction createSession<T extends ManifestoDomainShape>(\n ext: ExtensionKernel<T>,\n state: SimulationSessionResult<T>,\n): SimulationSession<T> {\n const result = Object.freeze({\n snapshot: state.snapshot,\n canonicalSnapshot: state.canonicalSnapshot,\n depth: state.depth,\n trajectory: state.trajectory,\n availableActions: state.availableActions,\n requirements: state.requirements,\n status: state.status,\n isTerminal: state.isTerminal,\n finish(): SimulationSessionResult<T> {\n return state;\n },\n next(\n actionOrIntent: TypedIntent<T> | TypedActionRef<T, keyof T[\"actions\"]>,\n ...args: readonly unknown[]\n ): SimulationSession<T> {\n if (state.isTerminal) {\n throw new ManifestoError(\n \"SIMULATION_SESSION_TERMINAL\",\n \"SimulationSession.next() cannot advance a terminal session\",\n );\n }\n\n const intent = isActionRef(actionOrIntent)\n ? ext.createIntent(\n actionOrIntent as TypedActionRef<T, never>,\n ...(args as CreateIntentArgs<T, never>),\n )\n : actionOrIntent;\n const simulated = ext.simulateSync(state.canonicalSnapshot, intent);\n const step = createSessionStep(\n intent,\n ext,\n simulated.snapshot,\n simulated.requirements,\n simulated.status,\n );\n const nextState = Object.freeze({\n snapshot: step.snapshot,\n canonicalSnapshot: simulated.snapshot,\n depth: state.depth + 1,\n trajectory: freezeArray([...state.trajectory, step]),\n availableActions: step.availableActions,\n requirements: step.requirements,\n status: step.status,\n isTerminal: step.isTerminal,\n }) satisfies SimulationSessionResult<T>;\n\n return createSession(ext, nextState);\n },\n });\n\n return result as SimulationSession<T>;\n}\n\nexport function createSimulationSession<\n T extends ManifestoDomainShape,\n Laws extends BaseLaws,\n>(\n app: ActivatedInstance<T, Laws>,\n): SimulationSession<T> {\n const ext = getAttachedExtensionKernel<T>(app as object);\n const canonicalSnapshot = ext.getCanonicalSnapshot();\n const status = canonicalSnapshot.system.status;\n const isTerminal = isTerminalStatus(status);\n\n return createSession(\n ext,\n Object.freeze({\n snapshot: ext.projectSnapshot(canonicalSnapshot),\n canonicalSnapshot,\n depth: 0,\n trajectory: Object.freeze([]),\n availableActions: getAvailableActionRefs(ext, canonicalSnapshot, isTerminal),\n requirements: freezeArray(canonicalSnapshot.system.pendingRequirements),\n status,\n isTerminal,\n }),\n );\n}\n","/**\n * Public post-activation extension seam for safe arbitrary-snapshot operations.\n * App code should prefer the main sdk entry point unless it needs hypothetical\n * read-only analysis over caller-provided canonical snapshots.\n */\nimport { getAttachedExtensionKernel } from \"./internal.js\";\nimport type { ExtensionKernel } from \"./extensions-types.js\";\nimport type {\n BaseLaws,\n ActivatedInstance,\n ManifestoDomainShape,\n} from \"./types.js\";\n\nexport type {\n ExtensionKernel,\n ExtensionSimulateResult,\n SimulationActionRef,\n SimulationSession,\n SimulationSessionResult,\n SimulationSessionStatus,\n SimulationSessionStep,\n} from \"./extensions-types.js\";\nexport { createSimulationSession } from \"./simulation-session.js\";\n\nexport function getExtensionKernel<\n T extends ManifestoDomainShape,\n Laws extends BaseLaws,\n>(\n app: ActivatedInstance<T, Laws>,\n): ExtensionKernel<T> {\n return getAttachedExtensionKernel<T>(app as object);\n}\n"],"mappings":"sDAqBA,SAASA,EAAiBC,EAA0C,CAClE,OAAOA,IAAW,WAAaA,IAAW,UAAYA,IAAW,OACnE,CAEA,SAASC,EACPC,EACgD,CAChD,OAAQA,EAA8B,SAAW,WACnD,CAEA,SAASC,EAAeC,EAAoC,CAC1D,OAAO,OAAO,OAAO,CAAC,GAAGA,CAAM,CAAC,CAClC,CAEA,SAASC,EACPC,EACAC,EACAC,EACmC,CACnC,OACS,OAAO,OADZA,EACmB,CAAC,EAItBF,EAAI,uBAAuBC,CAAQ,EAAE,IAClCE,GAASH,EAAI,IAAI,QAAQG,CAAI,CAChC,CANuB,CAQ3B,CAEA,SAASC,EACPC,EACAL,EACAC,EACAK,EACAZ,EAC0B,CAC1B,IAAMQ,EAAaT,EAAiBC,CAAM,EAC1C,OAAO,OAAO,OAAO,CACnB,OAAQa,EAAmBF,CAAM,EACjC,SAAUL,EAAI,gBAAgBC,CAAQ,EACtC,kBAAmBA,EACnB,iBAAkBF,EAAuBC,EAAKC,EAAUC,CAAU,EAClE,aAAcL,EAAYS,CAAY,EACtC,OAAAZ,EACA,WAAAQ,CACF,CAAC,CACH,CAEA,SAASM,EACPR,EACAS,EACsB,CAqDtB,OApDe,OAAO,OAAO,CAC3B,SAAUA,EAAM,SAChB,kBAAmBA,EAAM,kBACzB,MAAOA,EAAM,MACb,WAAYA,EAAM,WAClB,iBAAkBA,EAAM,iBACxB,aAAcA,EAAM,aACpB,OAAQA,EAAM,OACd,WAAYA,EAAM,WAClB,QAAqC,CACnC,OAAOA,CACT,EACA,KACEC,KACGC,EACmB,CACtB,GAAIF,EAAM,WACR,MAAM,IAAIG,EACR,8BACA,4DACF,EAGF,IAAMP,EAASV,EAAYe,CAAc,EACrCV,EAAI,aACJU,EACA,GAAIC,CACN,EACED,EACEG,EAAYb,EAAI,aAAaS,EAAM,kBAAmBJ,CAAM,EAC5DS,EAAOV,EACXC,EACAL,EACAa,EAAU,SACVA,EAAU,aACVA,EAAU,MACZ,EACME,EAAY,OAAO,OAAO,CAC9B,SAAUD,EAAK,SACf,kBAAmBD,EAAU,SAC7B,MAAOJ,EAAM,MAAQ,EACrB,WAAYZ,EAAY,CAAC,GAAGY,EAAM,WAAYK,CAAI,CAAC,EACnD,iBAAkBA,EAAK,iBACvB,aAAcA,EAAK,aACnB,OAAQA,EAAK,OACb,WAAYA,EAAK,UACnB,CAAC,EAED,OAAON,EAAcR,EAAKe,CAAS,CACrC,CACF,CAAC,CAGH,CAEO,SAASC,EAIdC,EACsB,CACtB,IAAMjB,EAAMkB,EAA8BD,CAAa,EACjDE,EAAoBnB,EAAI,qBAAqB,EAC7CN,EAASyB,EAAkB,OAAO,OAClCjB,EAAaT,EAAiBC,CAAM,EAE1C,OAAOc,EACLR,EACA,OAAO,OAAO,CACZ,SAAUA,EAAI,gBAAgBmB,CAAiB,EAC/C,kBAAAA,EACA,MAAO,EACP,WAAY,OAAO,OAAO,CAAC,CAAC,EAC5B,iBAAkBpB,EAAuBC,EAAKmB,EAAmBjB,CAAU,EAC3E,aAAcL,EAAYsB,EAAkB,OAAO,mBAAmB,EACtE,OAAAzB,EACA,WAAAQ,CACF,CAAC,CACH,CACF,CCjIO,SAASkB,EAIdC,EACoB,CACpB,OAAOC,EAA8BD,CAAa,CACpD","names":["isTerminalStatus","status","isActionRef","value","freezeArray","values","getAvailableActionRefs","ext","snapshot","isTerminal","name","createSessionStep","intent","requirements","cloneAndDeepFreeze","createSession","state","actionOrIntent","args","ManifestoError","simulated","step","nextState","createSimulationSession","app","getAttachedExtensionKernel","canonicalSnapshot","getExtensionKernel","app","getAttachedExtensionKernel"]}
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import{a as l,b as p,c as h,d as k,e as D,f as b,g,h as R,i as u,j as E,n as P,o as y,p as x}from"./chunk-N774NZRO.js";import{createHostContextProvider as $,createHost as _,defaultRuntime as H}from"@manifesto-ai/host";import{createIntent as L,extractDefaults as N,hashSchemaSync as z,semanticPathToPatchPath as G}from"@manifesto-ai/core";import{compileMelDomain as B,parse as F,tokenize as K}from"@manifesto-ai/compiler";var S="system.get",j="system.",q=Object.freeze({__baseLaws:!0});function U(e,t){if(S in t)throw new p(S);let n=V(e);Y(n.schema);let r={_laws:q,schema:n.schema,activate(){P(r);let o=C(n.schema,n.projectionPlan,t);return x(y({schema:n.schema,projectionPlan:n.projectionPlan,host:o.host,hostContextProvider:o.contextProvider,MEL:M(n.schema,n.actionParamMetadata),createIntent:w()}))}};return E(r,()=>{let o=C(n.schema,n.projectionPlan,t);return y({schema:n.schema,projectionPlan:n.projectionPlan,host:o.host,hostContextProvider:o.contextProvider,MEL:M(n.schema,n.actionParamMetadata),createIntent:w()})})}function V(e){let t=typeof e=="string"?W(e):{schema:e,actionParamMetadata:v(e)},n=X(t.schema);return{schema:n,actionParamMetadata:t.actionParamMetadata,projectionPlan:b(n)}}function W(e){let t=B(e,{mode:"domain"});if(t.errors.length>0){let r=t.errors.map(o=>{let a=o.location;if(!a||a.start.line===0&&a.start.column===0)return`[${o.code}] ${o.message}`;let s=`[${o.code}] ${o.message} (${a.start.line}:${a.start.column})`,c=e.split(`
1
+ import{a as l,b as p,c as h,d as k,e as D,f as b,g,h as R,i as u,j as E,p as P,q as y,r as x}from"./chunk-NXOXNSXB.js";import{createHostContextProvider as $,createHost as _,defaultRuntime as H}from"@manifesto-ai/host";import{createIntent as L,extractDefaults as N,hashSchemaSync as z,semanticPathToPatchPath as G}from"@manifesto-ai/core";import{compileMelDomain as B,parse as F,tokenize as K}from"@manifesto-ai/compiler";var S="system.get",j="system.",q=Object.freeze({__baseLaws:!0});function U(e,t){if(S in t)throw new p(S);let n=V(e);Y(n.schema);let r={_laws:q,schema:n.schema,activate(){P(r);let o=C(n.schema,n.projectionPlan,t);return x(y({schema:n.schema,projectionPlan:n.projectionPlan,host:o.host,hostContextProvider:o.contextProvider,MEL:M(n.schema,n.actionParamMetadata),createIntent:w()}))}};return E(r,()=>{let o=C(n.schema,n.projectionPlan,t);return y({schema:n.schema,projectionPlan:n.projectionPlan,host:o.host,hostContextProvider:o.contextProvider,MEL:M(n.schema,n.actionParamMetadata),createIntent:w()})})}function V(e){let t=typeof e=="string"?W(e):{schema:e,actionParamMetadata:v(e)},n=X(t.schema);return{schema:n,actionParamMetadata:t.actionParamMetadata,projectionPlan:b(n)}}function W(e){let t=B(e,{mode:"domain"});if(t.errors.length>0){let r=t.errors.map(o=>{let a=o.location;if(!a||a.start.line===0&&a.start.column===0)return`[${o.code}] ${o.message}`;let s=`[${o.code}] ${o.message} (${a.start.line}:${a.start.column})`,c=e.split(`
2
2
  `)[a.start.line-1];if(!c)return s;let d=String(a.start.line).padStart(4," "),i=Math.max(1,a.end.line===a.start.line?Math.min(a.end.column-a.start.column,Math.max(1,c.length-a.start.column+1)):1),f=" ".repeat(d.length+3+a.start.column-1);return`${s}
3
3
  ${d} | ${c}
4
4
  ${f}${"^".repeat(i)}`}).join(`
@@ -1,15 +1,24 @@
1
- import { type DomainSchema, type Snapshot as CoreSnapshot } from "@manifesto-ai/core";
1
+ import { type ComputeStatus, type DomainSchema, type Patch, type Requirement, type Snapshot as CoreSnapshot, type SystemDelta } from "@manifesto-ai/core";
2
2
  import type { HostContextProvider, HostResult, ManifestoHost } from "@manifesto-ai/host";
3
3
  import { ManifestoError } from "./errors.js";
4
4
  import type { BaseLaws, CanonicalSnapshot, ComposableManifesto, ManifestoBaseInstance, ManifestoDomainShape, ManifestoEvent, ManifestoEventMap, SchemaGraph, Snapshot, TypedCreateIntent, TypedGetActionMetadata, TypedIntent, TypedMEL, TypedOn, TypedSimulate, TypedSubscribe } from "./types.js";
5
5
  import { type SnapshotProjectionPlan } from "./snapshot-projection.js";
6
+ import type { ExtensionKernel } from "./extensions-types.js";
6
7
  export declare const ACTION_PARAM_NAMES: unique symbol;
7
8
  export declare const RUNTIME_KERNEL_FACTORY: unique symbol;
8
9
  export declare const ACTIVATION_STATE: unique symbol;
10
+ export declare const EXTENSION_KERNEL: unique symbol;
9
11
  export type ActivationState = {
10
12
  activated: boolean;
11
13
  };
12
14
  export type HostDispatchOptions = NonNullable<Parameters<ManifestoHost["dispatch"]>[1]>;
15
+ export type SimulateResult<T extends ManifestoDomainShape = ManifestoDomainShape> = {
16
+ readonly snapshot: CanonicalSnapshot<T["state"]>;
17
+ readonly patches: readonly Patch[];
18
+ readonly systemDelta: Readonly<SystemDelta>;
19
+ readonly status: ComputeStatus;
20
+ readonly requirements: readonly Requirement[];
21
+ };
13
22
  export interface RuntimeKernel<T extends ManifestoDomainShape> {
14
23
  readonly schema: DomainSchema;
15
24
  readonly MEL: TypedMEL<T>;
@@ -18,10 +27,13 @@ export interface RuntimeKernel<T extends ManifestoDomainShape> {
18
27
  readonly on: TypedOn<T>;
19
28
  readonly getSnapshot: () => Snapshot<T["state"]>;
20
29
  readonly getCanonicalSnapshot: () => CanonicalSnapshot<T["state"]>;
30
+ readonly getAvailableActionsFor: (snapshot: CanonicalSnapshot<T["state"]>) => readonly (keyof T["actions"])[];
21
31
  readonly getAvailableActions: () => readonly (keyof T["actions"])[];
22
32
  readonly getActionMetadata: TypedGetActionMetadata<T>;
33
+ readonly isActionAvailableFor: (snapshot: CanonicalSnapshot<T["state"]>, name: keyof T["actions"]) => boolean;
23
34
  readonly isActionAvailable: (name: keyof T["actions"]) => boolean;
24
35
  readonly getSchemaGraph: () => SchemaGraph;
36
+ readonly simulateSync: (snapshot: CanonicalSnapshot<T["state"]>, intent: TypedIntent<T>) => SimulateResult<T>;
25
37
  readonly simulate: TypedSimulate<T>;
26
38
  readonly dispose: () => void;
27
39
  readonly isDisposed: () => boolean;
@@ -36,6 +48,7 @@ export interface RuntimeKernel<T extends ManifestoDomainShape> {
36
48
  readonly executeHost: (intent: TypedIntent<T>, options?: HostDispatchOptions) => Promise<HostResult>;
37
49
  readonly createUnavailableError: (intent: TypedIntent<T>) => ManifestoError;
38
50
  readonly rejectUnavailable: (intent: TypedIntent<T>) => never;
51
+ readonly [EXTENSION_KERNEL]: ExtensionKernel<T>;
39
52
  }
40
53
  export type RuntimeKernelFactory<T extends ManifestoDomainShape> = () => RuntimeKernel<T>;
41
54
  export type InternalComposableManifesto<T extends ManifestoDomainShape, Laws extends BaseLaws> = ComposableManifesto<T, Laws> & {
@@ -52,6 +65,8 @@ type RuntimeKernelOptions<T extends ManifestoDomainShape> = {
52
65
  };
53
66
  export declare function attachRuntimeKernelFactory<T extends ManifestoDomainShape, Laws extends BaseLaws>(manifesto: ComposableManifesto<T, Laws>, factory: RuntimeKernelFactory<T>, activationState?: ActivationState): InternalComposableManifesto<T, Laws>;
54
67
  export declare function getRuntimeKernelFactory<T extends ManifestoDomainShape, Laws extends BaseLaws>(manifesto: ComposableManifesto<T, Laws>): RuntimeKernelFactory<T>;
68
+ export declare function attachExtensionKernel<T extends ManifestoDomainShape, TInstance extends object>(runtime: TInstance, kernel: RuntimeKernel<T>): TInstance;
69
+ export declare function getAttachedExtensionKernel<T extends ManifestoDomainShape>(runtime: object): ExtensionKernel<T>;
55
70
  export declare function getActivationState<T extends ManifestoDomainShape, Laws extends BaseLaws>(manifesto: ComposableManifesto<T, Laws>): ActivationState;
56
71
  export declare function assertComposableNotActivated<T extends ManifestoDomainShape, Laws extends BaseLaws>(manifesto: ComposableManifesto<T, Laws>): void;
57
72
  export declare function activateComposable<T extends ManifestoDomainShape, Laws extends BaseLaws>(manifesto: ComposableManifesto<T, Laws>): void;
@@ -3,5 +3,5 @@
3
3
  * App code should prefer the main sdk entry point; decorator and provider authors
4
4
  * can rely on this subpath when composing or promoting runtime verbs.
5
5
  */
6
- export type { ActivationState, HostDispatchOptions, RuntimeKernel, RuntimeKernelFactory, } from "./internal.js";
7
- export { activateComposable, assertComposableNotActivated, attachRuntimeKernelFactory, createRuntimeKernel, getActivationState, getRuntimeKernelFactory, } from "./internal.js";
6
+ export type { ActivationState, HostDispatchOptions, RuntimeKernel, RuntimeKernelFactory, SimulateResult, } from "./internal.js";
7
+ export { activateComposable, assertComposableNotActivated, attachExtensionKernel, attachRuntimeKernelFactory, createRuntimeKernel, getActivationState, getRuntimeKernelFactory, } from "./internal.js";
package/dist/provider.js CHANGED
@@ -1,2 +1,2 @@
1
- import{j as t,k as e,l as a,m as o,n,o as r}from"./chunk-N774NZRO.js";export{n as activateComposable,o as assertComposableNotActivated,t as attachRuntimeKernelFactory,r as createRuntimeKernel,a as getActivationState,e as getRuntimeKernelFactory};
1
+ import{j as t,k as e,l as a,n,o,p as i,q as r}from"./chunk-NXOXNSXB.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
@@ -0,0 +1,3 @@
1
+ import type { SimulationSession } from "./extensions-types.js";
2
+ import type { ActivatedInstance, BaseLaws, ManifestoDomainShape } from "./types.js";
3
+ export declare function createSimulationSession<T extends ManifestoDomainShape, Laws extends BaseLaws>(app: ActivatedInstance<T, Laws>): SimulationSession<T>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@manifesto-ai/sdk",
3
- "version": "3.5.0",
3
+ "version": "3.6.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",
@@ -30,6 +30,10 @@
30
30
  "types": "./dist/index.d.ts",
31
31
  "import": "./dist/index.js"
32
32
  },
33
+ "./extensions": {
34
+ "types": "./dist/extensions.d.ts",
35
+ "import": "./dist/extensions.js"
36
+ },
33
37
  "./provider": {
34
38
  "types": "./dist/provider.d.ts",
35
39
  "import": "./dist/provider.js"
@@ -1,2 +0,0 @@
1
- var b=class extends Error{code;constructor(t,o,n){super(o,n),this.name="ManifestoError",this.code=t}},L=class extends b{effectType;constructor(t){super("RESERVED_EFFECT",`Effect type "${t}" is reserved and cannot be overridden`),this.name="ReservedEffectError",this.effectType=t}},H=class extends b{diagnostics;constructor(t,o){super("COMPILE_ERROR",o),this.name="CompileError",this.diagnostics=t}},v=class extends b{constructor(){super("DISPOSED","Cannot use a disposed Manifesto runtime"),this.name="DisposedError"}},j=class extends b{constructor(){super("ALREADY_ACTIVATED","ComposableManifesto.activate() may only be called once"),this.name="AlreadyActivatedError"}};import{apply as U,applySystemDelta as Re,computeSync as xe,getAvailableActions as $,isActionAvailable as Me}from"@manifesto-ai/core";import{extractSchemaGraph as Ce}from"@manifesto-ai/compiler";import{getHostState as ve}from"@manifesto-ai/host";var ye=new Set(["$item","$index","$array"]);function Ge(e){let t=e.computed.fields,o=new Map;function n(s,l){let r=o.get(s);if(r!==void 0)return r;if(l.has(s))return!1;l.add(s);let y=t[s];if(!y)return l.delete(s),o.set(s,!0),!0;for(let m of ge(y.expr)){if(Te(m))return l.delete(s),o.set(s,!1),!1;let c=Se(m,t);if(c!==null&&!n(c,l))return l.delete(s),o.set(s,!1),!1}return l.delete(s),o.set(s,!0),!0}return{visibleComputedKeys:Object.keys(t).filter(s=>n(s,new Set))}}function E(e,t){return{data:he(e.data),computed:me(e.computed,t),system:{status:e.system.status,lastError:e.system.lastError},meta:{schemaHash:e.meta.schemaHash}}}function Le(e,t){return E(e,t)}function R(e){return z(structuredClone(e))}function B(e,t){return we(e,t)}function he(e){if(e==null)return e;if(Array.isArray(e)||typeof e!="object")return structuredClone(e);let t={};for(let[o,n]of Object.entries(e))o.startsWith("$")||(t[o]=n);return structuredClone(t)}function me(e,t){let o={};for(let n of t.visibleComputedKeys)Object.prototype.hasOwnProperty.call(e,n)&&(o[n]=e[n]);return structuredClone(o)}function Se(e,t){if(Object.prototype.hasOwnProperty.call(t,e))return e;if(!e.startsWith("computed."))return null;let o=e.slice(9);return Object.prototype.hasOwnProperty.call(t,o)?o:null}function be(e){return e.startsWith("/")?e.slice(1).replace(/\//g,"."):e}function Te(e){let t=be(e),o=t.startsWith("data.")?t.slice(5):t,a=/^([^.[\]]+)/.exec(o)?.[1]??"";return a.startsWith("$")?!ye.has(a):!1}function ge(e){let t=[],o=new WeakSet,n=a=>{if(a==null)return;if(Array.isArray(a)){a.forEach(n);return}if(typeof a!="object")return;let s=a;if(!o.has(s)&&(o.add(s),s.kind!=="lit")){if(s.kind==="get"&&typeof s.path=="string"){t.push(s.path);return}for(let l of Object.values(s))n(l)}};return n(e),t}function we(e,t){return C(e,t,new WeakMap)}function C(e,t,o){if(Object.is(e,t))return!0;if(typeof e!=typeof t)return!1;if(e===null||t===null)return e===t;if(typeof e!="object"||typeof t!="object")return!1;let n=e,a=t,s=Object.prototype.toString.call(n),l=Object.prototype.toString.call(a);if(s!==l)return!1;let r=o.get(n);if(r?.has(a))return!0;if(r||(r=new WeakSet,o.set(n,r)),r.add(a),Array.isArray(n)&&Array.isArray(a)){if(n.length!==a.length)return!1;for(let c=0;c<n.length;c+=1){let p=Object.prototype.hasOwnProperty.call(n,c),h=Object.prototype.hasOwnProperty.call(a,c);if(p!==h||p&&!C(n[c],a[c],o))return!1}return!0}if(n instanceof Date&&a instanceof Date)return n.getTime()===a.getTime();if(n instanceof RegExp&&a instanceof RegExp)return n.source===a.source&&n.flags===a.flags;if(ArrayBuffer.isView(n)&&ArrayBuffer.isView(a)){if(n.constructor!==a.constructor||n.byteLength!==a.byteLength)return!1;let c=new Uint8Array(n.buffer,n.byteOffset,n.byteLength),p=new Uint8Array(a.buffer,a.byteOffset,a.byteLength);return c.every((h,f)=>h===p[f])}if(n instanceof ArrayBuffer&&a instanceof ArrayBuffer){if(n.byteLength!==a.byteLength)return!1;let c=new Uint8Array(n),p=new Uint8Array(a);return c.every((h,f)=>h===p[f])}if(n instanceof Map&&a instanceof Map){if(n.size!==a.size)return!1;let c=Array.from(n.entries()),p=Array.from(a.entries());return c.every(([h,f],T)=>{let g=p[T];if(!g)return!1;let[w,x]=g;return C(h,w,o)&&C(f,x,o)})}if(n instanceof Set&&a instanceof Set){if(n.size!==a.size)return!1;let c=Array.from(n.values()),p=Array.from(a.values());return c.every((h,f)=>C(h,p[f],o))}let y=K(n),m=K(a);if(y.length!==m.length)return!1;for(let c=0;c<y.length;c+=1){let p=y[c],h=m[c];if(p!==h)return!1;let f=n[p],T=a[h];if(!C(f,T,o))return!1}return!0}function K(e){return Object.keys(e).filter(t=>e[t]!==void 0).sort()}function z(e,t=new WeakSet){if(e==null||typeof e!="object")return e;if(V(e))return _(e);let o=e;if(t.has(o)||Object.isFrozen(e))return e;t.add(o);for(let n of Reflect.ownKeys(o)){let a=o[n];if(V(a)){Ae(o,n,a);continue}z(a,t)}return Object.freeze(e)}function V(e){return e instanceof ArrayBuffer||ArrayBuffer.isView(e)}function _(e){return structuredClone(e)}function Ae(e,t,o){let n=Object.getOwnPropertyDescriptor(e,t);!n||!("value"in n)||Object.defineProperty(e,t,{enumerable:n.enumerable??!0,configurable:!1,get(){return _(o)}})}var je=Symbol("manifesto-sdk.action-param-names"),q=Symbol("manifesto-sdk.runtime-kernel-factory"),O=Symbol("manifesto-sdk.activation-state"),Ee=/^(state|computed|action):.+$/;function Y(e){let t=new Set(e.nodes.map(r=>r.id)),o=new Map,n=new Map,a=(r,y,m)=>{let c=r.get(y);if(c){c.add(m);return}r.set(y,new Set([m]))};for(let r of e.edges)a(o,r.from,r.to),a(n,r.to,r.from);let s=r=>{let y=Object.freeze({nodes:Object.freeze(e.nodes.filter(m=>r.has(m.id))),edges:Object.freeze(e.edges.filter(m=>r.has(m.from)&&r.has(m.to)))});return Y(y)},l=(r,y)=>{let m=Ie(r,t),c=[m],p=new Set([m]),h=y==="incoming"?n:o;for(;c.length>0;){let f=c.shift();if(f)for(let T of h.get(f)??[])p.has(T)||(p.add(T),c.push(T))}return s(p)};return Object.freeze({nodes:e.nodes,edges:e.edges,traceUp(r){return l(r,"incoming")},traceDown(r){return l(r,"outgoing")}})}function Ie(e,t){if(typeof e=="string"){if(!Ee.test(e))throw new b("SCHEMA_ERROR",'SchemaGraph node id must use "state:<name>", "computed:<name>", or "action:<name>"');if(!t.has(e))throw new b("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 b("SCHEMA_ERROR","Unsupported SchemaGraph ref lookup target")}if(!t.has(o))throw new b("SCHEMA_ERROR",`SchemaGraph node "${o}" is not part of the projected graph`);return o}function Oe(e,t){let o=new Set,n=new WeakMap,a=(s,l,r)=>{if(Object.is(s,l))return;if(s===null||l===null){o.add(r);return}if(typeof s!="object"||typeof l!="object"){o.add(r);return}let y=s,m=l,c=n.get(y);if(c?.has(m))return;if(c?c.add(m):n.set(y,new WeakSet([m])),Array.isArray(s)||Array.isArray(l)){if(!Array.isArray(s)||!Array.isArray(l)){o.add(r);return}let h=Math.max(s.length,l.length);for(let f=0;f<h;f+=1){let T=Object.prototype.hasOwnProperty.call(s,f),g=Object.prototype.hasOwnProperty.call(l,f),w=`${r}[${f}]`;if(T!==g){o.add(w);continue}!T&&!g||a(s[f],l[f],w)}return}if(!F(s)||!F(l)){o.add(r);return}let p=new Set([...Object.keys(s),...Object.keys(l)]);for(let h of[...p].sort()){let f=Object.prototype.hasOwnProperty.call(s,h),T=Object.prototype.hasOwnProperty.call(l,h),g=`${r}.${h}`;if(f!==T){o.add(g);continue}a(s[h],l[h],g)}};return a(e.data,t.data,"data"),a(e.computed,t.computed,"computed"),a(e.system,t.system,"system"),a(e.meta,t.meta,"meta"),Object.freeze([...o].sort())}function F(e){return Object.prototype.toString.call(e)==="[object Object]"}function Ue(e,t,o){Object.defineProperty(e,q,{enumerable:!1,configurable:!1,writable:!1,value:t});let n=o??W(e)??{activated:!1};return W(e)||Object.defineProperty(e,O,{enumerable:!1,configurable:!1,writable:!1,value:n}),e}function $e(e){let o=e[q];if(typeof o!="function")throw new b("SCHEMA_ERROR","ComposableManifesto is missing its runtime kernel factory");return o}function Q(e){let o=e[O];if(!o)throw new b("SCHEMA_ERROR","ComposableManifesto is missing its activation state");return o}function Fe(e){if(Q(e).activated)throw new j}function We(e){let t=Q(e);if(t.activated)throw new j;t.activated=!0}function W(e){return e[O]??null}function Pe(e){return!e||e.type!=="object"||!e.fields?[]:Object.keys(e.fields)}function qe({schema:e,projectionPlan:t,host:o,hostContextProvider:n,MEL:a,createIntent:s}){let l=o.getSnapshot();if(!l)throw new b("SCHEMA_ERROR","Host failed to initialize its genesis snapshot");let r=structuredClone(l),y=R(E(r,t)),m=R(r),c=Promise.resolve(),p=!1,h=Y(Ce(e)),f=Object.keys(e.actions),T=Object.freeze(Object.fromEntries(f.map(i=>{let d=e.actions[i],S=a.actions[i]?.[je],A=Object.freeze(Array.isArray(S)?[...S]:Pe(d.input));return[i,Object.freeze({name:i,params:A,input:d.input,description:d.description})]}))),g=Object.freeze(f.map(i=>T[i])),w=new Set,x=new Map;function X(i,d){if(p)return()=>{};let u,S=!1;try{u=i(y),S=!0}catch{u=void 0,S=!1}let A={selector:i,listener:d,lastValue:u,initialized:S};return w.add(A),()=>{w.delete(A)}}function J(i,d){if(p)return()=>{};let u=x.get(i);return u||(u=new Set,x.set(i,u)),u.add(d),()=>{u?.delete(d)}}function Z(){return y}function ee(){return m}function te(){return $(e,r)}let ne=(i=>i!==void 0?T[String(i)]:g);function P(i){return Me(e,r,String(i))}function oe(){return h}function ae(i,d,u){let A=ve(i.data)?.intentSlots??{},M=d.input===void 0?{type:d.type}:{type:d.type,input:d.input};return U(e,i,[{op:"merge",path:[{kind:"prop",name:"$host"}],value:{intentSlots:{...A,[d.intentId]:M}}}],u)}let re=((i,...d)=>{let u=D(s(i,...d));if(!P(u.type))throw I(u);let S=n.createFrozenContext(u.intentId),A=ae(structuredClone(r),u,S),M=xe(e,A,u,S),fe=U(e,A,M.patches,S),N=Re(fe,M.systemDelta),G=R(E(N,t));return Object.freeze({snapshot:G,changedPaths:Oe(y,G),newAvailableActions:Object.freeze([...$(e,N)]),requirements:R(M.systemDelta.addRequirements),status:M.status})});function se(){p||(p=!0,w.clear(),x.clear())}function ie(i,d){r=structuredClone(i),o.reset(structuredClone(r)),m=R(r);let u=E(r,t),S=!B(u,y);return S&&(y=R(u)),d?.notify!==!1&&S&&pe(y),y}function ce(){o.reset(structuredClone(r))}function k(i,d){let u=x.get(i);if(u)for(let S of u)try{S(d)}catch{}}function le(i){let d=c.catch(()=>{}).then(i);return c=d.then(()=>{},()=>{}),d}function D(i){return i.intentId&&i.intentId.length>0?i:{...i,intentId:De()}}async function de(i,d){return o.dispatch(i,d)}function I(i){return new b("ACTION_UNAVAILABLE",`Action "${i.type}" is unavailable against the current visible snapshot`)}function ue(i){let d=I(i);throw k("dispatch:rejected",{intentId:i.intentId??"",intent:i,reason:d.message}),d}function pe(i){for(let d of w){let u;try{u=d.selector(i)}catch{continue}if(!(d.initialized&&Object.is(d.lastValue,u))){d.lastValue=u,d.initialized=!0;try{d.listener(u)}catch{}}}}return{schema:e,MEL:a,createIntent:s,subscribe:X,on:J,getSnapshot:Z,getAvailableActions:te,getActionMetadata:ne,isActionAvailable:P,getSchemaGraph:oe,simulate:re,dispose:se,isDisposed:()=>p,getCanonicalSnapshot:ee,getVisibleCoreSnapshot:()=>structuredClone(r),setVisibleSnapshot:ie,restoreVisibleSnapshot:ce,emitEvent:k,enqueue:le,ensureIntentId:D,executeHost:de,createUnavailableError:I,rejectUnavailable:ue}}function Ye(e){async function t(n){if(e.isDisposed())throw new v;if(!e.isActionAvailable(n.type))return e.rejectUnavailable(n);let a;try{a=await e.executeHost(n)}catch(l){let r=ke(l);throw e.emitEvent("dispatch:failed",{intentId:n.intentId??"",intent:n,error:r}),r}if(a.status==="error"){let l=e.setVisibleSnapshot(a.snapshot),r=a.error??new b("HOST_ERROR","Host dispatch failed");throw e.emitEvent("dispatch:failed",{intentId:n.intentId??"",intent:n,error:r,snapshot:l}),r}let s=e.setVisibleSnapshot(a.snapshot);return e.emitEvent("dispatch:completed",{intentId:n.intentId??"",intent:n,snapshot:s}),s}function o(n){if(e.isDisposed())return Promise.reject(new v);let a=e.ensureIntentId(n);return e.enqueue(()=>t(a))}return{createIntent:e.createIntent,dispatchAsync:o,subscribe:e.subscribe,on:e.on,getSnapshot:e.getSnapshot,getCanonicalSnapshot:e.getCanonicalSnapshot,getAvailableActions:e.getAvailableActions,getActionMetadata:e.getActionMetadata,isActionAvailable:e.isActionAvailable,getSchemaGraph:e.getSchemaGraph,simulate:e.simulate,MEL:e.MEL,schema:e.schema,dispose:e.dispose}}function ke(e){return e instanceof Error?e:new Error(String(e))}function De(){return typeof crypto<"u"&&typeof crypto.randomUUID=="function"?crypto.randomUUID():"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,e=>{let t=Math.random()*16|0;return(e==="x"?t:t&3|8).toString(16)})}export{b as a,L as b,H as c,v as d,j as e,Ge as f,Le as g,R as h,je as i,Ue as j,$e as k,Q as l,Fe as m,We as n,qe as o,Ye as p};
2
- //# sourceMappingURL=chunk-N774NZRO.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 type DomainSchema,\n type Snapshot as CoreSnapshot,\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 ManifestoBaseInstance,\n ManifestoDomainShape,\n ManifestoEvent,\n ManifestoEventMap,\n SchemaGraph,\n SchemaGraphNodeId,\n SchemaGraphNodeRef,\n Selector,\n SimulateResult,\n Snapshot,\n TypedActionMetadata,\n TypedCreateIntent,\n TypedGetActionMetadata,\n TypedIntent,\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\";\n\nexport const ACTION_PARAM_NAMES = Symbol(\"manifesto-sdk.action-param-names\");\nexport const RUNTIME_KERNEL_FACTORY = Symbol(\"manifesto-sdk.runtime-kernel-factory\");\nexport const ACTIVATION_STATE = Symbol(\"manifesto-sdk.activation-state\");\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};\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 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 getAvailableActions: () => readonly (keyof T[\"actions\"])[];\n readonly getActionMetadata: TypedGetActionMetadata<T>;\n readonly isActionAvailable: (name: keyof T[\"actions\"]) => boolean;\n readonly getSchemaGraph: () => SchemaGraph;\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 createUnavailableError: (intent: TypedIntent<T>) => ManifestoError;\n readonly rejectUnavailable: (intent: TypedIntent<T>) => never;\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 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 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 getActionInputFieldNames(\n input: DomainSchema[\"actions\"][string][\"input\"],\n): readonly string[] {\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 let visibleCanonicalSnapshot: CoreSnapshot = structuredClone(initialCanonicalSnapshot);\n let visibleProjectedSnapshot = cloneAndDeepFreeze(\n projectCanonicalSnapshot<T[\"state\"]>(\n visibleCanonicalSnapshot,\n projectionPlan,\n ),\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] : getActionInputFieldNames(action.input),\n );\n\n return [name, Object.freeze({\n name,\n params,\n input: action.input,\n description: action.description,\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 getAvailableActions(): readonly (keyof T[\"actions\"])[] {\n return queryAvailableActions(\n schema,\n visibleCanonicalSnapshot,\n ) as readonly (keyof T[\"actions\"])[];\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 isActionAvailable(name: keyof T[\"actions\"]): boolean {\n return queryActionAvailable(schema, visibleCanonicalSnapshot, String(name));\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 const simulate: TypedSimulate<T> = ((\n action,\n ...args\n ) => {\n const intent = ensureIntentId(createIntent(action, ...args));\n if (!isActionAvailable(intent.type as keyof T[\"actions\"])) {\n throw createUnavailableError(intent);\n }\n\n const context = hostContextProvider.createFrozenContext(intent.intentId);\n const baseline = withHostIntentSlot(\n structuredClone(visibleCanonicalSnapshot),\n intent,\n context,\n );\n const result = computeSync(schema, baseline, intent, context);\n const afterPatches = apply(schema, baseline, result.patches, context);\n const canonicalSimulated = applySystemDelta(afterPatches, result.systemDelta);\n const projectedSimulated = cloneAndDeepFreeze(\n projectCanonicalSnapshot<T[\"state\"]>(canonicalSimulated, projectionPlan),\n );\n\n return Object.freeze({\n snapshot: projectedSimulated,\n changedPaths: diffProjectedPaths(visibleProjectedSnapshot, projectedSimulated),\n newAvailableActions: Object.freeze(\n [\n ...queryAvailableActions(schema, canonicalSimulated),\n ] as Array<keyof T[\"actions\"]>,\n ),\n requirements: cloneAndDeepFreeze(result.systemDelta.addRequirements),\n status: result.status,\n }) as SimulateResult<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 = projectCanonicalSnapshot<T[\"state\"]>(\n visibleCanonicalSnapshot,\n projectionPlan,\n );\n const projectedChanged = !projectedSnapshotsEqual(\n nextProjectedSnapshot,\n visibleProjectedSnapshot,\n );\n\n if (projectedChanged) {\n visibleProjectedSnapshot = cloneAndDeepFreeze(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 rejectUnavailable(intent: TypedIntent<T>): never {\n const error = createUnavailableError(intent);\n emitEvent(\"dispatch:rejected\", {\n intentId: intent.intentId ?? \"\",\n intent,\n reason: error.message,\n });\n throw error;\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 return {\n schema,\n MEL,\n createIntent,\n subscribe,\n on,\n getSnapshot,\n getAvailableActions,\n getActionMetadata,\n isActionAvailable,\n getSchemaGraph,\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 createUnavailableError,\n rejectUnavailable,\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\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 {\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 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 };\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","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","RUNTIME_KERNEL_FACTORY","ACTIVATION_STATE","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","getActivationState","assertComposableNotActivated","AlreadyActivatedError","activateComposable","getActionInputFieldNames","input","createRuntimeKernel","schema","projectionPlan","host","hostContextProvider","MEL","createIntent","initialCanonicalSnapshot","visibleCanonicalSnapshot","visibleProjectedSnapshot","cloneAndDeepFreeze","projectCanonicalSnapshot","visibleCanonicalReadSnapshot","dispatchQueue","disposed","schemaGraph","extractSchemaGraph","actionNames","actionMetadataByName","name","action","rawParams","params","actionMetadata","subscribers","eventListeners","subscribe","selector","listener","lastValue","initialized","subscriber","on","event","handler","listeners","getSnapshot","getCanonicalSnapshot","getAvailableActions","queryAvailableActions","getActionMetadata","isActionAvailable","queryActionAvailable","getSchemaGraph","withHostIntentSlot","snapshot","intent","context","intentSlots","getHostState","intentSlot","apply","simulate","args","ensureIntentId","createUnavailableError","baseline","result","computeSync","afterPatches","canonicalSimulated","applySystemDelta","projectedSimulated","dispose","setVisibleSnapshot","options","nextProjectedSnapshot","projectedChanged","projectedSnapshotsEqual","notifySubscribers","restoreVisibleSnapshot","emitEvent","payload","enqueue","task","generateUUID","executeHost","rejectUnavailable","error","selected","createBaseRuntimeInstance","kernel","processIntent","DisposedError","failure","toError","publishedSnapshot","dispatchAsync","enrichedIntent","char","random"]}