@blue-labs/document-processor 1.25.0 → 1.26.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1,8 +1,8 @@
1
- "use strict";var he=Object.defineProperty;var de=(c,e,t)=>e in c?he(c,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):c[e]=t;var l=(c,e,t)=>de(c,typeof e!="symbol"?e+"":e,t);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const d=require("@blue-repository/core-dev"),f=require("@blue-labs/language"),v=require("@blue-labs/shared-utils"),P=require("@blue-repository/myos-dev"),pe=(c,e)=>({on:(t,n)=>({end:()=>n(null)})});async function me(c){return new Promise((e,t)=>{pe().on("error",t).end()})}const b=(...c)=>c.map((e,t)=>{if(typeof e!="string")return"";if(t===0&&e==="/")return"/";const n=t>0?e.replace(/^\/+/,""):e;return t<c.length-1?n.replace(/\/+$/,""):n}).filter(Boolean).join("/").replace(/\/{2,}/g,"/");class z{constructor(e,t,n,o){l(this,"actions",[]);this.getDocument=e,this.taskInfo=t,this.blue=n,this.onFlush=o}get(e){const t=this.getDocument(),n=b(this.taskInfo.nodePath,e);return t.get(n)}addPatch(e){this.actions.push({kind:"patch",patch:{...e,path:b(this.taskInfo.nodePath,e.path)}})}emitEvent(e){const t=this.taskInfo.event,n=t.trace??[],o={...e,originNodePath:e.originNodePath??this.taskInfo.nodePath,rootEvent:e.rootEvent??t.rootEvent??t,trace:[...n]};this.actions.push({kind:"event",event:o})}async flush(){var t;if(!this.actions.length)return[];const e=[...this.actions];return this.actions.length=0,await((t=this.onFlush)==null?void 0:t.call(this,e)),e}getNodePath(){return this.taskInfo.nodePath}resolvePath(e){return b(this.taskInfo.nodePath,e)}getTaskInfo(){return this.taskInfo}getBlue(){return this.blue}loadExternalModule(e){if(!/^https?:\/\//.test(e))throw new Error("Only http/https URLs are allowed");return me()}loadBlueContent(e){throw new Error("Not implemented")}}class L extends Error{constructor(e,t){super(`Cannot apply patch ${JSON.stringify(e)}`),this.patch=e,this.cause=t,this.name="PatchApplicationError"}}class _ extends Error{constructor(e,t,n){super(`Patch ${JSON.stringify(e)} touches "${e.op==="move"||e.op==="copy"?`${e.from} → ${e.path}`:e.path}" which is inside embedded document "${t}" (Process Embedded @ "${n}")`),this.patch=e,this.offendingPath=t,this.contractNodePath=n,this.name="EmbeddedDocumentModificationError"}}class $ extends Error{constructor(e,t){super(`Failed to evaluate expression "${e}"`),this.code=e,this.cause=t,this.name="ExpressionEvaluationError"}}class A extends Error{constructor(e,t){super(`Failed to evaluate code block "${e}"`),this.code=e,this.cause=t,this.name="CodeBlockEvaluationError"}}function O(c,e,t="/",n=[]){const o=c.getContracts()??{};for(const[r,a]of Object.entries(o))if(f.BlueNodeTypeSchema.isTypeOf(a,d.ProcessEmbeddedSchema)){const u=e.nodeToSchemaOutput(a,d.ProcessEmbeddedSchema).paths??[];for(const h of u)n.push({absPath:b(t,h),contractPath:b(t,`contracts/${r}`)})}for(const[r,a]of Object.entries(c.getProperties()??{}))O(a,e,b(t,r),n);return n}function D(c,e){return c===e||c.startsWith(e.endsWith("/")?e:e+"/")}function W(c,e){if(!e.length)return c;let t=c.clone();for(const n of e)try{t=f.applyBlueNodePatch(t,n,!0)}catch(o){throw new L(n,o)}return v.deepFreeze(t)}function y(c){return c!=null}function C(c){return c instanceof f.BlueNode}class fe{constructor(e=[],t=(n,o)=>n<o?-1:n>o?1:0){l(this,"data");l(this,"length");l(this,"compare");if(this.data=e,this.length=this.data.length,this.compare=t,this.length>0)for(let n=(this.length>>1)-1;n>=0;n--)this._down(n)}push(e){this.data.push(e),this._up(this.length++)}pop(){if(this.length===0)return;const e=this.data[0],t=this.data.pop();return--this.length>0&&(this.data[0]=t,this._down(0)),e}peek(){return this.data[0]}_up(e){const{data:t,compare:n}=this,o=t[e];for(;e>0;){const r=e-1>>1,a=t[r];if(n(o,a)>=0)break;t[e]=a,e=r}t[e]=o}_down(e){const{data:t,compare:n}=this,o=this.length>>1,r=t[e];for(;e<o;){let a=(e<<1)+1;const s=a+1;if(s<this.length&&n(t[s],t[a])<0&&(a=s),n(t[a],r)>=0)break;t[e]=t[a],e=a}t[e]=r}}const ye=(c,e,t,n,o,r)=>[-c,e,t,n,o,r],ge=(c,e)=>{for(let t=0;t<c.key.length;t++){const n=c.key[t],o=e.key[t];if(n!==o)return typeof n=="number"&&typeof o=="number"?n-o:typeof n=="string"&&typeof o=="string"?n.localeCompare(o):0}return 0};class Ee{constructor(){l(this,"queue");this.queue=new fe([],ge)}push(e){this.queue.push(e)}pop(){return this.queue.pop()}get length(){return this.queue.length}}class ve{constructor(e=[]){l(this,"processors",new Map);l(this,"typeOrder",new Map);e.forEach((t,n)=>this.register(t,n))}register(e,t){if(this.processors.has(e.contractBlueId))throw new Error(`Processor for ${e.contractType} already registered`);this.processors.set(e.contractBlueId,e),this.typeOrder.has(e.contractBlueId)||this.typeOrder.set(e.contractBlueId,t??this.typeOrder.size)}get(e){if(!e)return;const t=e.getBlueId();if(t)return this.processors.get(t)}orderOf(e){if(!e)return 0;const t=e.getBlueId();return t?this.typeOrder.get(t)??0:0}values(){return this.processors.values()}}class we{constructor(){l(this,"isEnabled");this.isEnabled=process.env.TRACE_BLUE_ENABLED==="true"}makeHop(e,t){return`${e}#${t}`}shouldTrace(){return this.isEnabled}addHop(e,t,n){if(!this.shouldTrace())return{...e};const o=[...e.trace??[],this.makeHop(t,n)];return{...e,trace:o}}getTrace(e){return e.trace??[]}clearTrace(e){return{...e,trace:[]}}isTracingEnabled(){return this.isEnabled}}const Se=64;class be{constructor(e,t,n,o,r){l(this,"traceManager");this.blue=e,this.registry=t,this.queue=n,this.getNextTaskId=o,this.getNextEventSeq=r,this.traceManager=new we}async route(e,t,n,o,r=0){var i;if(n.seq===void 0&&(n.seq=this.getNextEventSeq()),t.length===0){if(n.dispatchPath){const u=n.dispatchPath.split("/").filter(Boolean),h={...n};return delete h.dispatchPath,this.route(e,u,h,o,r)}if(n.source==="channel"&&n.originNodePath&&n.originNodePath!=="/"){const u=((i=n.originNodePath)==null?void 0:i.split("/").filter(Boolean))??[];return this.route(e,u,n,o,r)}}const a=b("/",t.join("/")),s=e.get(a);C(s)&&await this.traverseContracts({doc:e,node:s,nodePath:a,event:n,afterTaskId:o,pathSegments:t,inlineDepth:r})}async traverseContracts(e){const{doc:t,node:n,nodePath:o,event:r,afterTaskId:a,pathSegments:s,inlineDepth:i}=e;if(!this.shouldSkipForChannel(r,o))for(const[u,h]of Object.entries(n.getContracts()??{})){if(!h.getType())continue;const p=this.registry.get(h.getType());if(!p){console.warn(`No processor registered for contract: ${u}`);continue}const m={nodePath:o,contractName:u,contractNode:h,event:r},g=new z(()=>t,m,this.blue);if(p.supports(r,h,g,u))switch(p.role){case"adapter":await this.processAdapter({cp:p,event:r,contractNode:h,ctx:g,contractName:u,doc:t,afterTaskId:a,inlineDepth:i});break;case"handler":this.scheduleHandler({contractNode:h,contractName:u,nodePath:o,event:r,depth:s.length,afterTaskId:a});break}}}async processAdapter(e){var w;const{cp:t,event:n,contractNode:o,ctx:r,contractName:a,doc:s,afterTaskId:i,inlineDepth:u}=e;if(u>=Se)throw new Error("Adapter recursion limit reached");const h=this.traceManager.addHop(n,((w=r.getTaskInfo())==null?void 0:w.nodePath)??"",a);await t.handle(h,o,r,a);const p=await r.flush();if(p.find(T=>T.kind==="patch"))throw new Error(`Contract "${a}" (adapter) attempted to patch the document`);const g=p.filter(T=>T.kind==="event");for(const T of g)await this.route(s,[],T.event,i,u+1)}scheduleHandler(e){const{contractNode:t,contractName:n,nodePath:o,event:r,depth:a,afterTaskId:s}=e,i=t.getType();if(!i){console.warn(`Contract node type is not defined for: ${n}`);return}const u=this.registry.orderOf(i),h=t.get("/order"),p=f.isBigNumber(h)?h.toNumber():0,m=this.getNextTaskId()+s,g=ye(a,r.seq,u,p,n,m),w=this.traceManager.addHop(r,o,n);this.queue.push({key:g,nodePath:o,contractName:n,contractNode:t,event:w})}shouldSkipForChannel(e,t){return e.source==="channel"&&!!e.originNodePath&&e.originNodePath!==t}}const Te=(c,e,t)=>{(t instanceof L||t instanceof _)&&console.error(`[Blue] Failed to apply patches for contract "${c}" on event ${JSON.stringify(e)}`,t)};function j(c,e){const t=c.clone(),n=o=>{if(!C(o))return;const r=o.getContracts();(!(r!=null&&r.checkpoint)||!f.BlueNodeTypeSchema.isTypeOf(r.checkpoint,d.ChannelEventCheckpointSchema))&&o.addContract("checkpoint",e.jsonValueToNode({type:{name:"Channel Event Checkpoint",blueId:d.blueIds["Channel Event Checkpoint"]},lastEvents:{}}))};n(t);for(const{absPath:o}of O(t,e)){const r=t.get(o);C(r)&&n(r)}return v.deepFreeze(t)}function Pe(c,e){const t=c.clone();return C(t)&&(H(t,e)||t.addContract("initialized",e.jsonValueToNode({type:{name:"Initialized Marker",blueId:d.blueIds["Initialized Marker"]}}))),v.deepFreeze(t)}function H(c,e){const t=c.getContracts();return Object.values(t??{}).some(n=>e.isTypeOf(n,d.InitializedMarkerSchema,{checkSchemaExtensions:!0}))}class R{constructor(e){l(this,"contractType","Channel Event Checkpoint");l(this,"contractBlueId",d.blueIds["Channel Event Checkpoint"]);l(this,"role","handler");this.cache=e}supports(e){var t,n;return e.source==="channel"&&((t=e.rootEvent)==null?void 0:t.payload)===e.payload&&((n=e.rootEvent)==null?void 0:n.source)==="external"}async handle(e,t,n){var a;if(!e.channelName||!((a=e.rootEvent)!=null&&a.seq))return;const o=await n.getBlue().calculateBlueId(e.rootEvent.payload),r=n.getNodePath().replace(/\/contracts\/checkpoint$/,"");this.cache.record(r,e,o)}}const x=(c,e)=>c.get(e)!==void 0;class Ce{constructor(){l(this,"firstSeen",new Map)}record(e,t,n){const o=e;this.firstSeen.has(o)||this.firstSeen.set(o,{docBase:e,event:t,eventBlueId:n})}flush(e){const t=[];for(const{docBase:n,event:o,eventBlueId:r}of this.firstSeen.values()){if(!o.channelName)continue;const a=b(n,"contracts/checkpoint/lastEvents",o.channelName),s=`${a}/blueId`;x(e,a)?t.push({op:x(e,s)?"replace":"add",path:s,val:r}):t.push({op:"add",path:a,val:{blueId:r}})}return t}clear(){this.firstSeen.clear()}}class k{constructor(){l(this,"role","adapter")}baseSupports(e){return e.source!=="channel"}}class Q extends k{constructor(){super(...arguments);l(this,"contractType","Composite Timeline Channel");l(this,"contractBlueId",d.blueIds["Composite Timeline Channel"])}supports(t,n,o){const r=o.getBlue().nodeToSchemaOutput(n,d.CompositeTimelineChannelSchema);return!r.channels||!t.channelName?!1:r.channels.includes(t.channelName)}handle(t,n,o,r){o.emitEvent({payload:t.payload,channelName:r,source:"channel"})}}class K extends k{constructor(){super(...arguments);l(this,"contractType","Document Update Channel");l(this,"contractBlueId",d.blueIds["Document Update Channel"])}supports(t,n,o,r){if(!this.baseSupports(t))return!1;const a=o.getBlue().nodeToSchemaOutput(n,d.DocumentUpdateChannelSchema),s=t.payload.get("/path");if(!s||t.channelName===r)return!1;const i=a.path;return v.isNonNullable(i)&&s===o.resolvePath(i)}handle(t,n,o,r){const a=t.payload;a&&o.emitEvent({payload:a,channelName:r,source:"channel"})}}class X extends k{constructor(){super(...arguments);l(this,"contractType","Embedded Node Channel");l(this,"contractBlueId",d.blueIds["Embedded Node Channel"])}supports(t,n,o){if(!this.baseSupports(t))return!1;const r=o.getBlue().nodeToSchemaOutput(n,d.EmbeddedNodeChannelSchema);return y(t.originNodePath)&&y(r.path)&&t.originNodePath===o.resolvePath(r.path)}handle(t,n,o,r){const a=o.getBlue().nodeToSchemaOutput(n,d.EmbeddedNodeChannelSchema),{originNodePath:s,payload:i}=t;y(a.path)&&s===o.resolvePath(a.path)&&o.emitEvent({payload:i,channelName:r,source:"channel"})}}class Y{constructor(){l(this,"contractType","Initialized Marker");l(this,"contractBlueId",d.blueIds["Initialized Marker"]);l(this,"role","marker")}supports(){return!1}handle(){}}class Z extends k{constructor(){super(...arguments);l(this,"contractType","Lifecycle Event Channel");l(this,"contractBlueId",d.blueIds["Lifecycle Event Channel"])}supports(t,n,o){return!this.baseSupports(t)||!this.isLifecycleEvent(t,o)?!1:this.isEventPatternMatch(t,n,o)}handle(t,n,o,r){o.emitEvent({payload:t.payload,channelName:r,source:"channel"})}isLifecycleEvent(t,n){const o=n.getBlue(),r=t.payload;return o.isTypeOf(r,d.LifecycleEventSchema,{checkSchemaExtensions:!0})}isEventPatternMatch(t,n,o){var a;const r=(a=n.getProperties())==null?void 0:a.event;if(!r)return!0;try{const s=o.getBlue(),i=s.nodeToJson(t.payload),u=s.nodeToJson(r);return v.deepContains(i,u)}catch(s){return console.warn("Error during lifecycle event pattern matching:",s),!1}}}const F=(c,e)=>{const t=e.getBlue();return t.isTypeOf(c.payload,d.TimelineEntrySchema)||t.isTypeOf(c.payload,P.MyOSTimelineEntrySchema)};class G extends k{constructor(){super(...arguments);l(this,"contractType","MyOS Timeline Channel");l(this,"contractBlueId",P.blueIds["MyOS Timeline Channel"])}supports(t,n,o){var m;if(!this.baseSupports(t)||!F(t,o))return!1;const a=o.getBlue().nodeToSchemaOutput(t.payload,P.MyOSTimelineEntrySchema),s=o.getBlue().nodeToSchemaOutput(n,P.MyOSTimelineChannelSchema),i=(m=a.timeline)==null?void 0:m.timelineId,u=y(s.timelineId)&&y(i),h=y(s.account)&&y(a.account),p=y(s.email)&&y(a.email);return u&&i===s.timelineId||h&&a.account===s.account||p&&a.email===s.email}handle(t,n,o,r){F(t,o)&&o.emitEvent({payload:t.payload,channelName:r,source:"channel"})}}class ee extends k{constructor(){super(...arguments);l(this,"contractType","MyOS Agent Channel");l(this,"contractBlueId",P.blueIds["MyOS Agent Channel"])}supports(t,n,o){if(!this.baseSupports(t))return!1;try{const{myosAgentEvent:r,myosAgentChannel:a}=this.parseEventAndChannel(t,n,o);return this.isAgentMatch(r,a)&&this.isEventPatternMatch(r,a,o)}catch(r){return console.warn("Error in MyOSAgentChannelProcessor.supports:",r),!1}}handle(t,n,o,r){o.emitEvent({payload:t.payload,channelName:r,source:"channel"})}parseEventAndChannel(t,n,o){const r=o.getBlue(),a=r.nodeToSchemaOutput(t.payload,P.MyOSAgentEventSchema),s=r.nodeToSchemaOutput(n,P.MyOSAgentChannelSchema);return{myosAgentEvent:a,myosAgentChannel:s}}isAgentMatch(t,n){var a;const o=t.agentId,r=(a=n.agent)==null?void 0:a.agentId;return y(o)&&y(r)&&o===r}isEventPatternMatch(t,n,o){const r=n.event;if(!r)return!0;const a=t.event;if(!a)return!1;try{const s=o.getBlue(),i=s.nodeToJson(a),u=s.nodeToJson(r);return v.deepContains(i,u)}catch(s){return console.warn("Error during event pattern matching:",s),!1}}}class te{constructor(){l(this,"contractType","Operation");l(this,"contractBlueId",d.blueIds.Operation);l(this,"role","adapter")}supports(e,t,n,o){const a=n.getBlue().nodeToSchemaOutput(t,d.OperationSchema),s=this.parseEventPayload(e,n);return y(s==null?void 0:s.operation)&&s.operation===o&&e.source==="channel"&&e.channelName===a.channel}async handle(e,t,n,o){n.emitEvent({payload:e.payload,channelName:o,source:"channel"})}parseEventPayload(e,t){const n=t.getBlue();if(n.isTypeOf(e.payload,d.TimelineEntrySchema,{checkSchemaExtensions:!0})){const o=n.nodeToSchemaOutput(e.payload,d.TimelineEntrySchema);if(o.message)return n.nodeToSchemaOutput(o.message,d.OperationRequestSchema)}return null}}class ne{constructor(){l(this,"contractType","Process Embedded");l(this,"role","adapter");l(this,"contractBlueId",d.blueIds["Process Embedded"])}supports(e){return e.source!=="channel"}handle(e,t,n){const o=n.getBlue().nodeToSchemaOutput(t,d.ProcessEmbeddedSchema);for(const r of o.paths??[])n.emitEvent({...e,dispatchPath:n.resolvePath(r)})}}const oe=!process.env.SKIP_ISOLATED_VM;let S=null;if(oe)try{S=require("isolated-vm")}catch{console.warn("isolated-vm not available, using fallback evaluation method")}function J(c){return/\bimport\s.+\sfrom\s+['"][^'"]+['"]/.test(c)||/\bexport\s+/.test(c)}class N{static async evaluate({code:e,ctx:t,bindings:n={},options:o={}}){return!S||!oe?this.evaluateSimple(e,n,o):this.evaluateSecure(e,n,t,o)}static async evaluateSimple(e,t,n={}){if(J(e))throw new Error("Static import/export syntax requires isolated-vm – start Node without SKIP_ISOLATED_VM.");try{if(n.isCodeBlock){const o=Object.keys(t);return await(await new Function(...o,`return async function codeBlock(${o.join(", ")}) { ${e} }`)(...o.map(s=>t[s])))(...o.map(s=>t[s]))}else return new Function(...Object.keys(t),`return ${e};`)(...Object.values(t))}catch(o){throw n.isCodeBlock?new A(e,o):new $(e,o)}}static async evaluateSecure(e,t,n,o={}){if(!S)throw new Error("isolated-vm not available");const r=new S.Isolate({memoryLimit:32}),a=await r.createContext(),s=a.global;try{await this.setupIsolateEnvironment(s,t);const i=new Map,u=this.createModuleResolver(r,a,i,n);return J(e)?await this.evaluateESModule(r,a,e,o,u):await this.evaluateSimpleScript(r,a,e,t,o)}catch(i){throw o.isCodeBlock?new A(e,i):new $(e,i)}finally{a.release(),r.dispose()}}static async setupIsolateEnvironment(e,t){if(!S)throw new Error("isolated-vm not available");const n=new S.Callback((...o)=>console.log(...o));await e.set("log",n);for(const[o,r]of Object.entries(t))typeof r=="function"?await e.set(o,new S.Callback(r)):await e.set(o,new S.ExternalCopy(r).copyInto())}static createModuleResolver(e,t,n,o){return async r=>{if(n.has(r))return n.get(r);if(r.startsWith("blue:")){const a=r.slice(5),s=o.loadBlueContent;if(typeof s!="function")throw new Error(`ProcessingContext is missing a loadBlueContent(blueId) implementation (needed for ${r})`);const i=await s(a),u=await e.compileModule(i);return n.set(r,u),await u.instantiate(t,this.createModuleResolver(e,t,n,o)),u}if(/^https?:\/\//.test(r)){let a;if(typeof o.loadExternalModule=="function")a=await o.loadExternalModule(r);else throw new Error(`ProcessingContext is missing a loadExternalModule(url) implementation (needed for ${r})`);const s=await e.compileModule(a);return n.set(r,s),await s.instantiate(t,this.createModuleResolver(e,t,n,o)),s}throw new Error(`Unsupported module specifier "${r}"`)}}static async evaluateSimpleScript(e,t,n,o,r){const a=Object.keys(o).join(", "),s=Object.keys(o).map(h=>h),i=`(async (${a}) => { ${r.isCodeBlock?n:`return (${n});`} })(${s.join(", ")})`;return await(await e.compileScript(i)).run(t,{timeout:r.timeout??500,promise:!0,copy:!0,release:!0})}static async evaluateESModule(e,t,n,o,r){let a=n;if(o.isCodeBlock){const u=/^\s*(import\s.+?;|export\s.+?;)/gm,h=(n.match(u)||[]).join(`
1
+ "use strict";var he=Object.defineProperty;var de=(c,e,t)=>e in c?he(c,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):c[e]=t;var l=(c,e,t)=>de(c,typeof e!="symbol"?e+"":e,t);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const d=require("@blue-repository/core-dev"),f=require("@blue-labs/language"),v=require("@blue-labs/shared-utils"),P=require("@blue-repository/myos-dev"),pe=(c,e)=>({on:(t,n)=>({end:()=>n(null)})});async function me(c){return new Promise((e,t)=>{pe().on("error",t).end()})}const b=(...c)=>c.map((e,t)=>{if(typeof e!="string")return"";if(t===0&&e==="/")return"/";const n=t>0?e.replace(/^\/+/,""):e;return t<c.length-1?n.replace(/\/+$/,""):n}).filter(Boolean).join("/").replace(/\/{2,}/g,"/");class z{constructor(e,t,n,o){l(this,"actions",[]);this.getDocument=e,this.taskInfo=t,this.blue=n,this.onFlush=o}get(e){const t=this.getDocument(),n=b(this.taskInfo.nodePath,e);return t.get(n)}addPatch(e){this.actions.push({kind:"patch",patch:{...e,path:b(this.taskInfo.nodePath,e.path)}})}emitEvent(e){const t=this.taskInfo.event,n=t.trace??[],o={...e,originNodePath:e.originNodePath??this.taskInfo.nodePath,rootEvent:e.rootEvent??t.rootEvent??t,trace:[...n]};this.actions.push({kind:"event",event:o})}async flush(){var t;if(!this.actions.length)return[];const e=[...this.actions];return this.actions.length=0,await((t=this.onFlush)==null?void 0:t.call(this,e)),e}getNodePath(){return this.taskInfo.nodePath}resolvePath(e){return b(this.taskInfo.nodePath,e)}getTaskInfo(){return this.taskInfo}getBlue(){return this.blue}loadExternalModule(e){if(!/^https?:\/\//.test(e))throw new Error("Only http/https URLs are allowed");return me()}loadBlueContent(e){throw new Error("Not implemented")}}class L extends Error{constructor(e,t){super(`Cannot apply patch ${JSON.stringify(e)}`),this.patch=e,this.cause=t,this.name="PatchApplicationError"}}class _ extends Error{constructor(e,t,n){super(`Patch ${JSON.stringify(e)} touches "${e.op==="move"||e.op==="copy"?`${e.from} → ${e.path}`:e.path}" which is inside embedded document "${t}" (Process Embedded @ "${n}")`),this.patch=e,this.offendingPath=t,this.contractNodePath=n,this.name="EmbeddedDocumentModificationError"}}class $ extends Error{constructor(e,t){super(`Failed to evaluate expression "${e}"`),this.code=e,this.cause=t,this.name="ExpressionEvaluationError"}}class A extends Error{constructor(e,t){super(`Failed to evaluate code block "${e}"`),this.code=e,this.cause=t,this.name="CodeBlockEvaluationError"}}function O(c,e,t="/",n=[]){const o=c.getContracts()??{};for(const[r,a]of Object.entries(o))if(f.BlueNodeTypeSchema.isTypeOf(a,d.ProcessEmbeddedSchema)){const u=e.nodeToSchemaOutput(a,d.ProcessEmbeddedSchema).paths??[];for(const h of u)n.push({absPath:b(t,h),contractPath:b(t,`contracts/${r}`)})}for(const[r,a]of Object.entries(c.getProperties()??{}))O(a,e,b(t,r),n);return n}function D(c,e){return c===e||c.startsWith(e.endsWith("/")?e:e+"/")}function W(c,e){if(!e.length)return c;let t=c.clone();for(const n of e)try{t=f.applyBlueNodePatch(t,n,!0)}catch(o){throw new L(n,o)}return v.deepFreeze(t)}function y(c){return c!=null}function C(c){return c instanceof f.BlueNode}class fe{constructor(e=[],t=(n,o)=>n<o?-1:n>o?1:0){l(this,"data");l(this,"length");l(this,"compare");if(this.data=e,this.length=this.data.length,this.compare=t,this.length>0)for(let n=(this.length>>1)-1;n>=0;n--)this._down(n)}push(e){this.data.push(e),this._up(this.length++)}pop(){if(this.length===0)return;const e=this.data[0],t=this.data.pop();return--this.length>0&&(this.data[0]=t,this._down(0)),e}peek(){return this.data[0]}_up(e){const{data:t,compare:n}=this,o=t[e];for(;e>0;){const r=e-1>>1,a=t[r];if(n(o,a)>=0)break;t[e]=a,e=r}t[e]=o}_down(e){const{data:t,compare:n}=this,o=this.length>>1,r=t[e];for(;e<o;){let a=(e<<1)+1;const s=a+1;if(s<this.length&&n(t[s],t[a])<0&&(a=s),n(t[a],r)>=0)break;t[e]=t[a],e=a}t[e]=r}}const ye=(c,e,t,n,o,r)=>[-c,e,t,n,o,r],ge=(c,e)=>{for(let t=0;t<c.key.length;t++){const n=c.key[t],o=e.key[t];if(n!==o)return typeof n=="number"&&typeof o=="number"?n-o:typeof n=="string"&&typeof o=="string"?n.localeCompare(o):0}return 0};class Ee{constructor(){l(this,"queue");this.queue=new fe([],ge)}push(e){this.queue.push(e)}pop(){return this.queue.pop()}get length(){return this.queue.length}}class ve{constructor(e=[]){l(this,"processors",new Map);l(this,"typeOrder",new Map);e.forEach((t,n)=>this.register(t,n))}register(e,t){if(this.processors.has(e.contractBlueId))throw new Error(`Processor for ${e.contractType} already registered`);this.processors.set(e.contractBlueId,e),this.typeOrder.has(e.contractBlueId)||this.typeOrder.set(e.contractBlueId,t??this.typeOrder.size)}get(e){if(!e)return;const t=e.getBlueId();if(t)return this.processors.get(t)}orderOf(e){if(!e)return 0;const t=e.getBlueId();return t?this.typeOrder.get(t)??0:0}values(){return this.processors.values()}}class we{constructor(){l(this,"isEnabled");this.isEnabled=process.env.TRACE_BLUE_ENABLED==="true"}makeHop(e,t){return`${e}#${t}`}shouldTrace(){return this.isEnabled}addHop(e,t,n){if(!this.shouldTrace())return{...e};const o=[...e.trace??[],this.makeHop(t,n)];return{...e,trace:o}}getTrace(e){return e.trace??[]}clearTrace(e){return{...e,trace:[]}}isTracingEnabled(){return this.isEnabled}}const Se=64;class be{constructor(e,t,n,o,r){l(this,"traceManager");this.blue=e,this.registry=t,this.queue=n,this.getNextTaskId=o,this.getNextEventSeq=r,this.traceManager=new we}async route(e,t,n,o,r=0){var i;if(n.seq===void 0&&(n.seq=this.getNextEventSeq()),t.length===0){if(n.dispatchPath){const u=n.dispatchPath.split("/").filter(Boolean),h={...n};return delete h.dispatchPath,this.route(e,u,h,o,r)}if(n.source==="channel"&&n.originNodePath&&n.originNodePath!=="/"){const u=((i=n.originNodePath)==null?void 0:i.split("/").filter(Boolean))??[];return this.route(e,u,n,o,r)}}const a=b("/",t.join("/")),s=e.get(a);C(s)&&await this.traverseContracts({doc:e,node:s,nodePath:a,event:n,afterTaskId:o,pathSegments:t,inlineDepth:r})}async traverseContracts(e){const{doc:t,node:n,nodePath:o,event:r,afterTaskId:a,pathSegments:s,inlineDepth:i}=e;if(!this.shouldSkipForChannel(r,o))for(const[u,h]of Object.entries(n.getContracts()??{})){if(!h.getType())continue;const p=this.registry.get(h.getType());if(!p){console.warn(`No processor registered for contract: ${u}`);continue}const m={nodePath:o,contractName:u,contractNode:h,event:r},g=new z(()=>t,m,this.blue);if(p.supports(r,h,g,u))switch(p.role){case"adapter":await this.processAdapter({cp:p,event:r,contractNode:h,ctx:g,contractName:u,doc:t,afterTaskId:a,inlineDepth:i});break;case"handler":this.scheduleHandler({contractNode:h,contractName:u,nodePath:o,event:r,depth:s.length,afterTaskId:a});break}}}async processAdapter(e){var w;const{cp:t,event:n,contractNode:o,ctx:r,contractName:a,doc:s,afterTaskId:i,inlineDepth:u}=e;if(u>=Se)throw new Error("Adapter recursion limit reached");const h=this.traceManager.addHop(n,((w=r.getTaskInfo())==null?void 0:w.nodePath)??"",a);await t.handle(h,o,r,a);const p=await r.flush();if(p.find(T=>T.kind==="patch"))throw new Error(`Contract "${a}" (adapter) attempted to patch the document`);const g=p.filter(T=>T.kind==="event");for(const T of g)await this.route(s,[],T.event,i,u+1)}scheduleHandler(e){const{contractNode:t,contractName:n,nodePath:o,event:r,depth:a,afterTaskId:s}=e,i=t.getType();if(!i){console.warn(`Contract node type is not defined for: ${n}`);return}const u=this.registry.orderOf(i),h=t.get("/order"),p=f.isBigNumber(h)?h.toNumber():0,m=this.getNextTaskId()+s,g=ye(a,r.seq,u,p,n,m),w=this.traceManager.addHop(r,o,n);this.queue.push({key:g,nodePath:o,contractName:n,contractNode:t,event:w})}shouldSkipForChannel(e,t){return e.source==="channel"&&!!e.originNodePath&&e.originNodePath!==t}}const Te=(c,e,t)=>{(t instanceof L||t instanceof _)&&console.error(`[Blue] Failed to apply patches for contract "${c}" on event ${JSON.stringify(e)}`,t)};function j(c,e){const t=c.clone(),n=o=>{if(!C(o))return;const r=o.getContracts();(!(r!=null&&r.checkpoint)||!f.BlueNodeTypeSchema.isTypeOf(r.checkpoint,d.ChannelEventCheckpointSchema))&&o.addContract("checkpoint",e.jsonValueToNode({type:{name:"Channel Event Checkpoint",blueId:d.blueIds["Channel Event Checkpoint"]},lastEvents:{}}))};n(t);for(const{absPath:o}of O(t,e)){const r=t.get(o);C(r)&&n(r)}return v.deepFreeze(t)}function Pe(c,e){const t=c.clone();return C(t)&&(H(t,e)||t.addContract("initialized",e.jsonValueToNode({type:{name:"Initialized Marker",blueId:d.blueIds["Initialized Marker"]}}))),v.deepFreeze(t)}function H(c,e){const t=c.getContracts();return Object.values(t??{}).some(n=>e.isTypeOf(n,d.InitializedMarkerSchema,{checkSchemaExtensions:!0}))}class R{constructor(e){l(this,"contractType","Channel Event Checkpoint");l(this,"contractBlueId",d.blueIds["Channel Event Checkpoint"]);l(this,"role","handler");this.cache=e}supports(e){var t,n;return e.source==="channel"&&((t=e.rootEvent)==null?void 0:t.payload)===e.payload&&((n=e.rootEvent)==null?void 0:n.source)==="external"}async handle(e,t,n){var a;if(!e.channelName||!((a=e.rootEvent)!=null&&a.seq))return;const o=await n.getBlue().calculateBlueId(e.rootEvent.payload),r=n.getNodePath().replace(/\/contracts\/checkpoint$/,"");this.cache.record(r,e,o)}}const x=(c,e)=>c.get(e)!==void 0;class Ce{constructor(){l(this,"firstSeen",new Map)}record(e,t,n){const o=e;this.firstSeen.has(o)||this.firstSeen.set(o,{docBase:e,event:t,eventBlueId:n})}flush(e){const t=[];for(const{docBase:n,event:o,eventBlueId:r}of this.firstSeen.values()){if(!o.channelName)continue;const a=b(n,"contracts/checkpoint/lastEvents",o.channelName),s=`${a}/blueId`;x(e,a)?t.push({op:x(e,s)?"replace":"add",path:s,val:r}):t.push({op:"add",path:a,val:{blueId:r}})}return t}clear(){this.firstSeen.clear()}}class k{constructor(){l(this,"role","adapter")}baseSupports(e){return e.source!=="channel"}}class Q extends k{constructor(){super(...arguments);l(this,"contractType","Composite Timeline Channel");l(this,"contractBlueId",d.blueIds["Composite Timeline Channel"])}supports(t,n,o){const r=o.getBlue().nodeToSchemaOutput(n,d.CompositeTimelineChannelSchema);return!r.channels||!t.channelName?!1:r.channels.includes(t.channelName)}handle(t,n,o,r){o.emitEvent({payload:t.payload,channelName:r,source:"channel"})}}class K extends k{constructor(){super(...arguments);l(this,"contractType","Document Update Channel");l(this,"contractBlueId",d.blueIds["Document Update Channel"])}supports(t,n,o,r){if(!this.baseSupports(t))return!1;const a=o.getBlue().nodeToSchemaOutput(n,d.DocumentUpdateChannelSchema),s=t.payload.get("/path");if(!s||t.channelName===r)return!1;const i=a.path;return v.isNonNullable(i)&&s===o.resolvePath(i)}handle(t,n,o,r){const a=t.payload;a&&o.emitEvent({payload:a,channelName:r,source:"channel"})}}class X extends k{constructor(){super(...arguments);l(this,"contractType","Embedded Node Channel");l(this,"contractBlueId",d.blueIds["Embedded Node Channel"])}supports(t,n,o){if(!this.baseSupports(t))return!1;const r=o.getBlue().nodeToSchemaOutput(n,d.EmbeddedNodeChannelSchema);return y(t.originNodePath)&&y(r.path)&&t.originNodePath===o.resolvePath(r.path)}handle(t,n,o,r){const a=o.getBlue().nodeToSchemaOutput(n,d.EmbeddedNodeChannelSchema),{originNodePath:s,payload:i}=t;y(a.path)&&s===o.resolvePath(a.path)&&o.emitEvent({payload:i,channelName:r,source:"channel"})}}class Y{constructor(){l(this,"contractType","Initialized Marker");l(this,"contractBlueId",d.blueIds["Initialized Marker"]);l(this,"role","marker")}supports(){return!1}handle(){}}class Z extends k{constructor(){super(...arguments);l(this,"contractType","Lifecycle Event Channel");l(this,"contractBlueId",d.blueIds["Lifecycle Event Channel"])}supports(t,n,o){return!this.baseSupports(t)||!this.isLifecycleEvent(t,o)?!1:this.isEventPatternMatch(t,n,o)}handle(t,n,o,r){o.emitEvent({payload:t.payload,channelName:r,source:"channel"})}isLifecycleEvent(t,n){const o=n.getBlue(),r=t.payload;return o.isTypeOf(r,d.LifecycleEventSchema,{checkSchemaExtensions:!0})}isEventPatternMatch(t,n,o){var a;const r=(a=n.getProperties())==null?void 0:a.event;if(!r)return!0;try{const s=o.getBlue(),i=s.nodeToJson(t.payload),u=s.nodeToJson(r);return v.deepContains(i,u)}catch(s){return console.warn("Error during lifecycle event pattern matching:",s),!1}}}const J=(c,e)=>{const t=e.getBlue();return t.isTypeOf(c.payload,d.TimelineEntrySchema)||t.isTypeOf(c.payload,P.MyOSTimelineEntrySchema)};class G extends k{constructor(){super(...arguments);l(this,"contractType","MyOS Timeline Channel");l(this,"contractBlueId",P.blueIds["MyOS Timeline Channel"])}supports(t,n,o){var m;if(!this.baseSupports(t)||!J(t,o))return!1;const a=o.getBlue().nodeToSchemaOutput(t.payload,P.MyOSTimelineEntrySchema),s=o.getBlue().nodeToSchemaOutput(n,P.MyOSTimelineChannelSchema),i=(m=a.timeline)==null?void 0:m.timelineId,u=y(s.timelineId)&&y(i),h=y(s.account)&&y(a.account),p=y(s.email)&&y(a.email);return u&&i===s.timelineId||h&&a.account===s.account||p&&a.email===s.email}handle(t,n,o,r){J(t,o)&&o.emitEvent({payload:t.payload,channelName:r,source:"channel"})}}class ee extends k{constructor(){super(...arguments);l(this,"contractType","MyOS Agent Channel");l(this,"contractBlueId",P.blueIds["MyOS Agent Channel"])}supports(t,n,o){if(!this.baseSupports(t))return!1;try{const{myosAgentEvent:r,myosAgentChannel:a}=this.parseEventAndChannel(t,n,o);return this.isAgentMatch(r,a)&&this.isEventPatternMatch(r,a,o)}catch(r){return console.warn("Error in MyOSAgentChannelProcessor.supports:",r),!1}}handle(t,n,o,r){o.emitEvent({payload:t.payload,channelName:r,source:"channel"})}parseEventAndChannel(t,n,o){const r=o.getBlue(),a=r.nodeToSchemaOutput(t.payload,P.MyOSAgentEventSchema),s=r.nodeToSchemaOutput(n,P.MyOSAgentChannelSchema);return{myosAgentEvent:a,myosAgentChannel:s}}isAgentMatch(t,n){var a;const o=t.agentId,r=(a=n.agent)==null?void 0:a.agentId;return y(o)&&y(r)&&o===r}isEventPatternMatch(t,n,o){const r=n.event;if(!r)return!0;const a=t.event;if(!a)return!1;try{const s=o.getBlue(),i=s.nodeToJson(a),u=s.nodeToJson(r);return v.deepContains(i,u)}catch(s){return console.warn("Error during event pattern matching:",s),!1}}}class te{constructor(){l(this,"contractType","Operation");l(this,"contractBlueId",d.blueIds.Operation);l(this,"role","adapter")}supports(e,t,n,o){const a=n.getBlue().nodeToSchemaOutput(t,d.OperationSchema),s=this.parseEventPayload(e,n);return y(s==null?void 0:s.operation)&&s.operation===o&&e.source==="channel"&&e.channelName===a.channel}async handle(e,t,n,o){n.emitEvent({payload:e.payload,channelName:o,source:"channel"})}parseEventPayload(e,t){const n=t.getBlue();if(n.isTypeOf(e.payload,d.TimelineEntrySchema,{checkSchemaExtensions:!0})){const o=n.nodeToSchemaOutput(e.payload,d.TimelineEntrySchema);if(o.message)return n.nodeToSchemaOutput(o.message,d.OperationRequestSchema)}return null}}class ne{constructor(){l(this,"contractType","Process Embedded");l(this,"role","adapter");l(this,"contractBlueId",d.blueIds["Process Embedded"])}supports(e){return e.source!=="channel"}handle(e,t,n){const o=n.getBlue().nodeToSchemaOutput(t,d.ProcessEmbeddedSchema);for(const r of o.paths??[])n.emitEvent({...e,dispatchPath:n.resolvePath(r)})}}const oe=!process.env.SKIP_ISOLATED_VM;let S=null;if(oe)try{S=require("isolated-vm")}catch{console.warn("isolated-vm not available, using fallback evaluation method")}function F(c){return/\bimport\s.+\sfrom\s+['"][^'"]+['"]/.test(c)||/\bexport\s+/.test(c)}class N{static async evaluate({code:e,ctx:t,bindings:n={},options:o={}}){return!S||!oe?this.evaluateSimple(e,n,o):this.evaluateSecure(e,n,t,o)}static async evaluateSimple(e,t,n={}){if(F(e))throw new Error("Static import/export syntax requires isolated-vm – start Node without SKIP_ISOLATED_VM.");try{if(n.isCodeBlock){const o=Object.keys(t);return await(await new Function(...o,`return async function codeBlock(${o.join(", ")}) { ${e} }`)(...o.map(s=>t[s])))(...o.map(s=>t[s]))}else return new Function(...Object.keys(t),`return ${e};`)(...Object.values(t))}catch(o){throw n.isCodeBlock?new A(e,o):new $(e,o)}}static async evaluateSecure(e,t,n,o={}){if(!S)throw new Error("isolated-vm not available");const r=new S.Isolate({memoryLimit:32}),a=await r.createContext(),s=a.global;try{await this.setupIsolateEnvironment(s,t);const i=new Map,u=this.createModuleResolver(r,a,i,n);return F(e)?await this.evaluateESModule(r,a,e,o,u):await this.evaluateSimpleScript(r,a,e,t,o)}catch(i){throw o.isCodeBlock?new A(e,i):new $(e,i)}finally{a.release(),r.dispose()}}static async setupIsolateEnvironment(e,t){if(!S)throw new Error("isolated-vm not available");const n=new S.Callback((...o)=>console.log(...o));await e.set("log",n);for(const[o,r]of Object.entries(t))typeof r=="function"?await e.set(o,new S.Callback(r)):await e.set(o,new S.ExternalCopy(r).copyInto())}static createModuleResolver(e,t,n,o){return async r=>{if(n.has(r))return n.get(r);if(r.startsWith("blue:")){const a=r.slice(5),s=o.loadBlueContent;if(typeof s!="function")throw new Error(`ProcessingContext is missing a loadBlueContent(blueId) implementation (needed for ${r})`);const i=await s(a),u=await e.compileModule(i);return n.set(r,u),await u.instantiate(t,this.createModuleResolver(e,t,n,o)),u}if(/^https?:\/\//.test(r)){let a;if(typeof o.loadExternalModule=="function")a=await o.loadExternalModule(r);else throw new Error(`ProcessingContext is missing a loadExternalModule(url) implementation (needed for ${r})`);const s=await e.compileModule(a);return n.set(r,s),await s.instantiate(t,this.createModuleResolver(e,t,n,o)),s}throw new Error(`Unsupported module specifier "${r}"`)}}static async evaluateSimpleScript(e,t,n,o,r){const a=Object.keys(o).join(", "),s=Object.keys(o).map(h=>h),i=`(async (${a}) => { ${r.isCodeBlock?n:`return (${n});`} })(${s.join(", ")})`;return await(await e.compileScript(i)).run(t,{timeout:r.timeout??500,promise:!0,copy:!0,release:!0})}static async evaluateESModule(e,t,n,o,r){let a=n;if(o.isCodeBlock){const u=/^\s*(import\s.+?;|export\s.+?;)/gm,h=(n.match(u)||[]).join(`
2
2
  `),p=n.replace(u,"").trim();a=`
3
3
  ${h}
4
4
  const run = function() {
5
5
  ${p}
6
6
  };
7
7
  export default run();
8
- `}const s=await e.compileModule(a);return await s.instantiate(t,r),await s.evaluate({timeout:o.timeout??500,promise:!0,reference:!0,release:!0}),await s.namespace.get("default",{timeout:o.timeout??500,promise:!0,copy:!0,release:!0})}}class B{static createStandardBindings(e,t,n){const o=e.getBlue(),r=o.nodeToJson(t.payload,"simple"),a=f.isBigNumber(r)?r.toNumber():r;return{document:s=>{const i=e.get(s);return f.isBigNumber(i)?i.toNumber():C(i)?o.nodeToJson(i,"original"):i},event:a,steps:n}}}function U(c,e){const{op:t,path:n,val:o,from:r}=c;if((t==="move"||t==="copy")&&!r)throw new Error(`${t} operation requires 'from' path`);if((t==="add"||t==="replace")&&o===void 0)throw new Error(`${t} operation requires 'val' property`);const a={type:"Document Update",op:t,path:n};return o!==void 0&&(a.val=o),r!==void 0&&(a.from=r),e.jsonValueToNode(a)}function ke(c){return c.jsonValueToNode({type:"Document Processing Initiated"})}class Ie{constructor(){l(this,"stepType","Update Document")}supports(e){return f.BlueNodeTypeSchema.isTypeOf(e,d.UpdateDocumentSchema)}async execute(e,t,n,o,r){const a=n.getBlue();if(!f.BlueNodeTypeSchema.isTypeOf(e,d.UpdateDocumentSchema))return;const s=await this.evaluateChangeset(e.get("/changeset"),n,t,r),i=f.applyBlueNodePatch(e,{op:"replace",path:"/changeset",val:s}),u=n.getBlue().nodeToSchemaOutput(i,d.UpdateDocumentSchema);for(const h of u.changeset??[]){if(!h.path)continue;const p=h.val;if((h.op==="replace"||h.op==="add")&&v.isNonNullable(p)){const m=await this.evaluateChangeValue(p,n,t,r);n.addPatch({op:h.op,path:h.path,val:m}),n.emitEvent({payload:U({op:h.op,path:n.resolvePath(h.path),val:a.nodeToJson(m,"original")},a)})}h.op==="remove"&&(n.addPatch({op:h.op,path:h.path}),n.emitEvent({payload:U({op:h.op,path:n.resolvePath(h.path),val:null},a)}))}}async evaluateChangeset(e,t,n,o){const r=t.getBlue();if(typeof e=="string"&&e.startsWith("${")&&e.endsWith("}")){const a=e.slice(2,-1),s=await N.evaluate({code:a,ctx:t,bindings:B.createStandardBindings(t,n,o)});return r.jsonValueToNode(s??null)}if(C(e))return e;throw new Error("Invalid changeset: expected a string or document node")}async evaluateChangeValue(e,t,n,o){const r=e.getValue(),a=t.getBlue();if(typeof r=="string"&&r.startsWith("${")&&r.endsWith("}")){const s=r.slice(2,-1),i=await N.evaluate({code:s,ctx:t,bindings:B.createStandardBindings(t,n,o)});return a.jsonValueToNode(i??null)}return e}}class Ne{constructor(){l(this,"stepType","Trigger Event")}supports(e){return f.BlueNodeTypeSchema.isTypeOf(e,d.TriggerEventSchema)}async execute(e,t,n){const o=n.getBlue();if(!f.BlueNodeTypeSchema.isTypeOf(e,d.TriggerEventSchema))return;const r=o.nodeToSchemaOutput(e,d.TriggerEventSchema);r.event&&n.emitEvent({payload:r.event})}}class Be{constructor(){l(this,"stepType","JavaScript Code")}supports(e){return f.BlueNodeTypeSchema.isTypeOf(e,d.JavaScriptCodeSchema)}async execute(e,t,n,o,r){if(!f.BlueNodeTypeSchema.isTypeOf(e,d.JavaScriptCodeSchema))return;const a=n.getBlue(),s=a.nodeToSchemaOutput(e,d.JavaScriptCodeSchema);if(!s.code)throw new Error("JavaScript code is required");const i=await N.evaluate({code:s.code,ctx:n,bindings:B.createStandardBindings(n,t,r),options:{isCodeBlock:!0,timeout:500}});if(i&&typeof i=="object"&&"events"in i){const u=i;if(Array.isArray(u.events))for(const h of u.events)n.emitEvent({payload:a.jsonValueToNode(h)})}return i}}const Oe=[new Ie,new Ne,new Be];class M{constructor(e=Oe){l(this,"contractType","Sequential Workflow");l(this,"contractBlueId",d.blueIds["Sequential Workflow"]);l(this,"role","handler");l(this,"executors",[]);this.executors=e}registerExecutor(e){this.executors.push(e)}supports(e,t,n){const a=n.getBlue().nodeToSchemaOutput(t,d.SequentialWorkflowSchema).channel;return e.source==="channel"&&e.channelName===a}async handle(e,t,n,o){var s;const r={},a=(s=t.getProperties())==null?void 0:s.steps.getItems();for(const[i,u]of(a??[]).entries()){const h=this.executors.find(m=>m.supports(u));if(!h)throw new Error(`Unsupported workflow step type "${u.getType()}"`);const p=await h.execute(u,e,n,o,r);if(p!==void 0){const m=u.getName(),g=typeof m=="string"?m:`Step${i+1}`;r[g]=p}await n.flush()}}}class re{constructor(e){l(this,"contractType","Sequential Workflow Operation");l(this,"contractBlueId",d.blueIds["Sequential Workflow Operation"]);l(this,"role","handler");l(this,"sequentialWorkflowProcessor");this.sequentialWorkflowProcessor=e||new M}supports(e,t,n){const a=n.getBlue().nodeToSchemaOutput(t,d.SequentialWorkflowOperationSchema).operation,s=e.channelName;return e.source==="channel"&&v.isNonNullable(s)&&v.isNonNullable(a)&&s===a}async handle(e,t,n,o){try{await this.sequentialWorkflowProcessor.handle(e,t,n,o)}catch(r){throw console.error("Error in SequentialWorkflowOperationProcessor.handle:",r),r}}}const V=c=>f.BlueNodeTypeSchema.isTypeOf(c.payload,d.TimelineEntrySchema);class ae extends k{constructor(){super(...arguments);l(this,"contractType","Timeline Channel");l(this,"contractBlueId",d.blueIds["Timeline Channel"])}supports(t,n,o){var h;if(!this.baseSupports(t)||!V(t))return!1;const a=o.getBlue().nodeToSchemaOutput(t.payload,d.TimelineEntrySchema),s=o.getBlue().nodeToSchemaOutput(n,d.TimelineChannelSchema),i=(h=a.timeline)==null?void 0:h.timelineId;return y(s.timelineId)&&y(i)&&i===s.timelineId}handle(t,n,o,r){V(t)&&o.emitEvent({payload:t.payload,channelName:r,source:"channel"})}}const Me=[new ne,new X,new K,new ae,new G,new ee,new Q,new Z,new te,new M,new re,new Y];class qe{constructor(e,t=Me){l(this,"taskCounter",0);l(this,"eventCounter",0);l(this,"registry");l(this,"queue");l(this,"router");l(this,"checkpointCache",new Ce);this.blue=e,this.registry=new ve(t),this.queue=new Ee,this.router=new be(this.blue,this.registry,this.queue,()=>++this.taskCounter,()=>++this.eventCounter),this.register(new R(this.checkpointCache),9999)}register(e,t){this.registry.register(e,t)}async initialize(e){let t=j(e,this.blue);const n={payload:ke(this.blue)},o=[n.payload];await this.router.route(t,[],n,0);const r=await this.drainQueue(t);return t=r.state,o.push(...r.emitted),t=Pe(t,this.blue),{state:t,emitted:o}}async processEvents(e,t){let n=j(e,this.blue);const o=[];if(!H(n,this.blue))throw new Error("Document is not initialized");for(const r of t)try{const a={payload:r,source:"external"};await this.router.route(n,[],a,0);const s=await this.drainQueue(n);n=s.state,o.push(...s.emitted);const i=this.checkpointCache.flush(n);i.length&&(n=W(n,i))}finally{this.checkpointCache.clear()}return{state:n,emitted:o}}async drainQueue(e){var a;let t=e;const n=[],o=1e4;let r=0;for(;this.queue.length;){if(++r>o)throw new Error("Possible cycle – too many iterations");const s=this.queue.pop(),{nodePath:i,contractName:u,contractNode:h,event:p}=s,m=t.get(i);if(!C(m)||!((a=m.getContracts())!=null&&a[u])||!h.getType())continue;const g=this.registry.get(h.getType());if(!g){console.warn(`No processor registered for contract: ${u}`);continue}const w=new z(()=>t,s,this.blue,async T=>{for(const E of T)if(E.kind==="patch"){const se=O(t,this.blue);for(const I of se){const ce=E.patch.op==="move"||E.patch.op==="copy"?[E.patch.from,E.patch.path]:[E.patch.path],q=w.getNodePath(),ie=ce.some(ue=>D(ue,I.absPath)),le=D(q,I.absPath);if(ie&&!le)throw new _(E.patch,I.absPath,q)}try{t=W(t,[E.patch])}catch(I){throw Te(u,p,I),I}}else E.kind==="event"&&(n.push(E.event.payload),await this.router.route(t,[],E.event,s.key[5]))});await g.handle(p,h,w,u),await w.flush()}return{state:t,emitted:n}}}exports.BlueDocumentProcessor=qe;exports.ChannelEventCheckpointProcessor=R;exports.CompositeTimelineChannelProcessor=Q;exports.DocumentUpdateChannelProcessor=K;exports.EmbeddedNodeChannelProcessor=X;exports.InitializedMarkerProcessor=Y;exports.LifecycleEventChannelProcessor=Z;exports.MyOSAgentChannelProcessor=ee;exports.MyOSTimelineChannelProcessor=G;exports.OperationProcessor=te;exports.ProcessEmbeddedProcessor=ne;exports.SequentialWorkflowOperationProcessor=re;exports.SequentialWorkflowProcessor=M;exports.TimelineChannelProcessor=ae;
8
+ `}const s=await e.compileModule(a);return await s.instantiate(t,r),await s.evaluate({timeout:o.timeout??500,promise:!0,reference:!0,release:!0}),await s.namespace.get("default",{timeout:o.timeout??500,promise:!0,copy:!0,release:!0})}}class B{static createStandardBindings(e,t,n){const o=e.getBlue(),r=o.nodeToJson(t.payload,"simple"),a=f.isBigNumber(r)?r.toNumber():r;return{document:s=>{const i=e.get(s);return f.isBigNumber(i)?i.toNumber():C(i)?o.nodeToJson(i,"original"):i},event:a,steps:n}}}function U(c,e){const{op:t,path:n,val:o,from:r}=c;if((t==="move"||t==="copy")&&!r)throw new Error(`${t} operation requires 'from' path`);if((t==="add"||t==="replace")&&o===void 0)throw new Error(`${t} operation requires 'val' property`);const a={type:"Document Update",op:t,path:n};return o!==void 0&&(a.val=o),r!==void 0&&(a.from=r),e.jsonValueToNode(a)}function ke(c){return c.jsonValueToNode({type:"Document Processing Initiated"})}class Ie{constructor(){l(this,"stepType","Update Document")}supports(e){return f.BlueNodeTypeSchema.isTypeOf(e,d.UpdateDocumentSchema)}async execute(e,t,n,o,r){const a=n.getBlue();if(!f.BlueNodeTypeSchema.isTypeOf(e,d.UpdateDocumentSchema))return;const s=await this.evaluateChangeset(e.get("/changeset"),n,t,r),i=f.applyBlueNodePatch(e,{op:"replace",path:"/changeset",val:s}),u=n.getBlue().nodeToSchemaOutput(i,d.UpdateDocumentSchema);for(const h of u.changeset??[]){if(!h.path)continue;const p=h.val;if((h.op==="replace"||h.op==="add")&&v.isNonNullable(p)){const m=await this.evaluateChangeValue(p,n,t,r);n.addPatch({op:h.op,path:h.path,val:m}),n.emitEvent({payload:U({op:h.op,path:n.resolvePath(h.path),val:a.nodeToJson(m,"original")},a)})}h.op==="remove"&&(n.addPatch({op:h.op,path:h.path}),n.emitEvent({payload:U({op:h.op,path:n.resolvePath(h.path),val:null},a)}))}}async evaluateChangeset(e,t,n,o){const r=t.getBlue();if(typeof e=="string"&&e.startsWith("${")&&e.endsWith("}")){const a=e.slice(2,-1),s=await N.evaluate({code:a,ctx:t,bindings:B.createStandardBindings(t,n,o)});return r.jsonValueToNode(s??null)}if(C(e))return e;throw new Error("Invalid changeset: expected a string or document node")}async evaluateChangeValue(e,t,n,o){const r=e.getValue(),a=t.getBlue();if(typeof r=="string"&&r.startsWith("${")&&r.endsWith("}")){const s=r.slice(2,-1),i=await N.evaluate({code:s,ctx:t,bindings:B.createStandardBindings(t,n,o)});return a.jsonValueToNode(i??null)}return e}}class Ne{constructor(){l(this,"stepType","Trigger Event")}supports(e){return f.BlueNodeTypeSchema.isTypeOf(e,d.TriggerEventSchema)}async execute(e,t,n){const o=n.getBlue();if(!f.BlueNodeTypeSchema.isTypeOf(e,d.TriggerEventSchema))return;const r=o.nodeToSchemaOutput(e,d.TriggerEventSchema);r.event&&n.emitEvent({payload:r.event})}}class Be{constructor(){l(this,"stepType","JavaScript Code")}supports(e){return f.BlueNodeTypeSchema.isTypeOf(e,d.JavaScriptCodeSchema)}async execute(e,t,n,o,r){if(!f.BlueNodeTypeSchema.isTypeOf(e,d.JavaScriptCodeSchema))return;const a=n.getBlue(),s=a.nodeToSchemaOutput(e,d.JavaScriptCodeSchema);if(!s.code)throw new Error("JavaScript code is required");const i=await N.evaluate({code:s.code,ctx:n,bindings:B.createStandardBindings(n,t,r),options:{isCodeBlock:!0,timeout:500}});if(i&&typeof i=="object"&&"events"in i){const u=i;if(Array.isArray(u.events))for(const h of u.events)n.emitEvent({payload:a.jsonValueToNode(Oe(h))})}return i}}function Oe(c){return JSON.parse(JSON.stringify(c))}const Me=[new Ie,new Ne,new Be];class M{constructor(e=Me){l(this,"contractType","Sequential Workflow");l(this,"contractBlueId",d.blueIds["Sequential Workflow"]);l(this,"role","handler");l(this,"executors",[]);this.executors=e}registerExecutor(e){this.executors.push(e)}supports(e,t,n){const a=n.getBlue().nodeToSchemaOutput(t,d.SequentialWorkflowSchema).channel;return e.source==="channel"&&e.channelName===a}async handle(e,t,n,o){var s;const r={},a=(s=t.getProperties())==null?void 0:s.steps.getItems();for(const[i,u]of(a??[]).entries()){const h=this.executors.find(m=>m.supports(u));if(!h)throw new Error(`Unsupported workflow step type "${u.getType()}"`);const p=await h.execute(u,e,n,o,r);if(p!==void 0){const m=u.getName(),g=typeof m=="string"?m:`Step${i+1}`;r[g]=p}await n.flush()}}}class re{constructor(e){l(this,"contractType","Sequential Workflow Operation");l(this,"contractBlueId",d.blueIds["Sequential Workflow Operation"]);l(this,"role","handler");l(this,"sequentialWorkflowProcessor");this.sequentialWorkflowProcessor=e||new M}supports(e,t,n){const a=n.getBlue().nodeToSchemaOutput(t,d.SequentialWorkflowOperationSchema).operation,s=e.channelName;return e.source==="channel"&&v.isNonNullable(s)&&v.isNonNullable(a)&&s===a}async handle(e,t,n,o){try{await this.sequentialWorkflowProcessor.handle(e,t,n,o)}catch(r){throw console.error("Error in SequentialWorkflowOperationProcessor.handle:",r),r}}}const V=c=>f.BlueNodeTypeSchema.isTypeOf(c.payload,d.TimelineEntrySchema);class ae extends k{constructor(){super(...arguments);l(this,"contractType","Timeline Channel");l(this,"contractBlueId",d.blueIds["Timeline Channel"])}supports(t,n,o){var h;if(!this.baseSupports(t)||!V(t))return!1;const a=o.getBlue().nodeToSchemaOutput(t.payload,d.TimelineEntrySchema),s=o.getBlue().nodeToSchemaOutput(n,d.TimelineChannelSchema),i=(h=a.timeline)==null?void 0:h.timelineId;return y(s.timelineId)&&y(i)&&i===s.timelineId}handle(t,n,o,r){V(t)&&o.emitEvent({payload:t.payload,channelName:r,source:"channel"})}}const qe=[new ne,new X,new K,new ae,new G,new ee,new Q,new Z,new te,new M,new re,new Y];class $e{constructor(e,t=qe){l(this,"taskCounter",0);l(this,"eventCounter",0);l(this,"registry");l(this,"queue");l(this,"router");l(this,"checkpointCache",new Ce);this.blue=e,this.registry=new ve(t),this.queue=new Ee,this.router=new be(this.blue,this.registry,this.queue,()=>++this.taskCounter,()=>++this.eventCounter),this.register(new R(this.checkpointCache),9999)}register(e,t){this.registry.register(e,t)}async initialize(e){let t=j(e,this.blue);const n={payload:ke(this.blue)},o=[n.payload];await this.router.route(t,[],n,0);const r=await this.drainQueue(t);return t=r.state,o.push(...r.emitted),t=Pe(t,this.blue),{state:t,emitted:o}}async processEvents(e,t){let n=j(e,this.blue);const o=[];if(!H(n,this.blue))throw new Error("Document is not initialized");for(const r of t)try{const a={payload:r,source:"external"};await this.router.route(n,[],a,0);const s=await this.drainQueue(n);n=s.state,o.push(...s.emitted);const i=this.checkpointCache.flush(n);i.length&&(n=W(n,i))}finally{this.checkpointCache.clear()}return{state:n,emitted:o}}async drainQueue(e){var a;let t=e;const n=[],o=1e4;let r=0;for(;this.queue.length;){if(++r>o)throw new Error("Possible cycle – too many iterations");const s=this.queue.pop(),{nodePath:i,contractName:u,contractNode:h,event:p}=s,m=t.get(i);if(!C(m)||!((a=m.getContracts())!=null&&a[u])||!h.getType())continue;const g=this.registry.get(h.getType());if(!g){console.warn(`No processor registered for contract: ${u}`);continue}const w=new z(()=>t,s,this.blue,async T=>{for(const E of T)if(E.kind==="patch"){const se=O(t,this.blue);for(const I of se){const ce=E.patch.op==="move"||E.patch.op==="copy"?[E.patch.from,E.patch.path]:[E.patch.path],q=w.getNodePath(),ie=ce.some(ue=>D(ue,I.absPath)),le=D(q,I.absPath);if(ie&&!le)throw new _(E.patch,I.absPath,q)}try{t=W(t,[E.patch])}catch(I){throw Te(u,p,I),I}}else E.kind==="event"&&(n.push(E.event.payload),await this.router.route(t,[],E.event,s.key[5]))});await g.handle(p,h,w,u),await w.flush()}return{state:t,emitted:n}}}exports.BlueDocumentProcessor=$e;exports.ChannelEventCheckpointProcessor=R;exports.CompositeTimelineChannelProcessor=Q;exports.DocumentUpdateChannelProcessor=K;exports.EmbeddedNodeChannelProcessor=X;exports.InitializedMarkerProcessor=Y;exports.LifecycleEventChannelProcessor=Z;exports.MyOSAgentChannelProcessor=ee;exports.MyOSTimelineChannelProcessor=G;exports.OperationProcessor=te;exports.ProcessEmbeddedProcessor=ne;exports.SequentialWorkflowOperationProcessor=re;exports.SequentialWorkflowProcessor=M;exports.TimelineChannelProcessor=ae;
package/dist/index.mjs CHANGED
@@ -1,16 +1,16 @@
1
1
  var ue = Object.defineProperty;
2
2
  var he = (c, e, t) => e in c ? ue(c, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : c[e] = t;
3
3
  var l = (c, e, t) => he(c, typeof e != "symbol" ? e + "" : e, t);
4
- import { ProcessEmbeddedSchema as $, ChannelEventCheckpointSchema as de, blueIds as f, InitializedMarkerSchema as pe, CompositeTimelineChannelSchema as me, DocumentUpdateChannelSchema as fe, EmbeddedNodeChannelSchema as x, LifecycleEventSchema as ye, TimelineEntrySchema as C, OperationSchema as ge, OperationRequestSchema as Ee, UpdateDocumentSchema as B, TriggerEventSchema as O, JavaScriptCodeSchema as M, SequentialWorkflowSchema as we, SequentialWorkflowOperationSchema as ve, TimelineChannelSchema as Te } from "@blue-repository/core-dev";
4
+ import { ProcessEmbeddedSchema as $, ChannelEventCheckpointSchema as de, blueIds as f, InitializedMarkerSchema as pe, CompositeTimelineChannelSchema as me, DocumentUpdateChannelSchema as fe, EmbeddedNodeChannelSchema as x, LifecycleEventSchema as ye, TimelineEntrySchema as k, OperationSchema as ge, OperationRequestSchema as Ee, UpdateDocumentSchema as O, TriggerEventSchema as B, JavaScriptCodeSchema as M, SequentialWorkflowSchema as we, SequentialWorkflowOperationSchema as ve, TimelineChannelSchema as Te } from "@blue-repository/core-dev";
5
5
  import { applyBlueNodePatch as K, BlueNodeTypeSchema as E, BlueNode as be, isBigNumber as q } from "@blue-labs/language";
6
6
  import { deepFreeze as I, isNonNullable as N, deepContains as X } from "@blue-labs/shared-utils";
7
- import { blueIds as Y, MyOSTimelineEntrySchema as Z, MyOSTimelineChannelSchema as Se, MyOSAgentEventSchema as Pe, MyOSAgentChannelSchema as ke } from "@blue-repository/myos-dev";
8
- const Ce = (c, e) => ({
7
+ import { blueIds as Y, MyOSTimelineEntrySchema as Z, MyOSTimelineChannelSchema as Se, MyOSAgentEventSchema as Pe, MyOSAgentChannelSchema as Ce } from "@blue-repository/myos-dev";
8
+ const ke = (c, e) => ({
9
9
  on: (t, n) => ({ end: () => n(null) })
10
10
  });
11
11
  async function Ie(c) {
12
12
  return new Promise((e, t) => {
13
- Ce().on("error", t).end();
13
+ ke().on("error", t).end();
14
14
  });
15
15
  }
16
16
  const T = (...c) => c.map((e, t) => {
@@ -176,14 +176,14 @@ class Ne {
176
176
  t[e] = r;
177
177
  }
178
178
  }
179
- const Be = (c, e, t, n, o, r) => [
179
+ const Oe = (c, e, t, n, o, r) => [
180
180
  -c,
181
181
  e,
182
182
  t,
183
183
  n,
184
184
  o,
185
185
  r
186
- ], Oe = (c, e) => {
186
+ ], Be = (c, e) => {
187
187
  for (let t = 0; t < c.key.length; t++) {
188
188
  const n = c.key[t], o = e.key[t];
189
189
  if (n !== o)
@@ -197,7 +197,7 @@ class Me {
197
197
  */
198
198
  constructor() {
199
199
  l(this, "queue");
200
- this.queue = new Ne([], Oe);
200
+ this.queue = new Ne([], Be);
201
201
  }
202
202
  /**
203
203
  * Adds a task to the queue
@@ -487,7 +487,7 @@ class De {
487
487
  console.warn(`Contract node type is not defined for: ${n}`);
488
488
  return;
489
489
  }
490
- const u = this.registry.orderOf(i), h = t.get("/order"), d = q(h) ? h.toNumber() : 0, p = this.getNextTaskId() + s, y = Be(
490
+ const u = this.registry.orderOf(i), h = t.get("/order"), d = q(h) ? h.toNumber() : 0, p = this.getNextTaskId() + s, y = Oe(
491
491
  a,
492
492
  r.seq,
493
493
  u,
@@ -741,7 +741,7 @@ class _e extends P {
741
741
  }
742
742
  const z = (c, e) => {
743
743
  const t = e.getBlue();
744
- return t.isTypeOf(c.payload, C) || t.isTypeOf(c.payload, Z);
744
+ return t.isTypeOf(c.payload, k) || t.isTypeOf(c.payload, Z);
745
745
  };
746
746
  class ze extends P {
747
747
  constructor() {
@@ -802,7 +802,7 @@ class He extends P {
802
802
  Pe
803
803
  ), s = r.nodeToSchemaOutput(
804
804
  n,
805
- ke
805
+ Ce
806
806
  );
807
807
  return { myosAgentEvent: a, myosAgentChannel: s };
808
808
  }
@@ -864,12 +864,12 @@ class Re {
864
864
  }
865
865
  parseEventPayload(e, t) {
866
866
  const n = t.getBlue();
867
- if (n.isTypeOf(e.payload, C, {
867
+ if (n.isTypeOf(e.payload, k, {
868
868
  checkSchemaExtensions: !0
869
869
  })) {
870
870
  const o = n.nodeToSchemaOutput(
871
871
  e.payload,
872
- C
872
+ k
873
873
  );
874
874
  if (o.message)
875
875
  return n.nodeToSchemaOutput(
@@ -1116,11 +1116,11 @@ class Xe {
1116
1116
  l(this, "stepType", "Update Document");
1117
1117
  }
1118
1118
  supports(e) {
1119
- return E.isTypeOf(e, B);
1119
+ return E.isTypeOf(e, O);
1120
1120
  }
1121
1121
  async execute(e, t, n, o, r) {
1122
1122
  const a = n.getBlue();
1123
- if (!E.isTypeOf(e, B)) return;
1123
+ if (!E.isTypeOf(e, O)) return;
1124
1124
  const s = await this.evaluateChangeset(
1125
1125
  e.get("/changeset"),
1126
1126
  n,
@@ -1130,7 +1130,7 @@ class Xe {
1130
1130
  op: "replace",
1131
1131
  path: "/changeset",
1132
1132
  val: s
1133
- }), u = n.getBlue().nodeToSchemaOutput(i, B);
1133
+ }), u = n.getBlue().nodeToSchemaOutput(i, O);
1134
1134
  for (const h of u.changeset ?? []) {
1135
1135
  if (!h.path) continue;
1136
1136
  const d = h.val;
@@ -1208,12 +1208,12 @@ class Ye {
1208
1208
  l(this, "stepType", "Trigger Event");
1209
1209
  }
1210
1210
  supports(e) {
1211
- return E.isTypeOf(e, O);
1211
+ return E.isTypeOf(e, B);
1212
1212
  }
1213
1213
  async execute(e, t, n) {
1214
1214
  const o = n.getBlue();
1215
- if (!E.isTypeOf(e, O)) return;
1216
- const r = o.nodeToSchemaOutput(e, O);
1215
+ if (!E.isTypeOf(e, B)) return;
1216
+ const r = o.nodeToSchemaOutput(e, B);
1217
1217
  r.event && n.emitEvent({
1218
1218
  payload: r.event
1219
1219
  });
@@ -1248,19 +1248,22 @@ class Ze {
1248
1248
  if (Array.isArray(u.events))
1249
1249
  for (const h of u.events)
1250
1250
  n.emitEvent({
1251
- payload: a.jsonValueToNode(h)
1251
+ payload: a.jsonValueToNode(Ge(h))
1252
1252
  });
1253
1253
  }
1254
1254
  return i;
1255
1255
  }
1256
1256
  }
1257
- const Ge = [
1257
+ function Ge(c) {
1258
+ return JSON.parse(JSON.stringify(c));
1259
+ }
1260
+ const et = [
1258
1261
  new Xe(),
1259
1262
  new Ye(),
1260
1263
  new Ze()
1261
1264
  ];
1262
1265
  class re {
1263
- constructor(e = Ge) {
1266
+ constructor(e = et) {
1264
1267
  l(this, "contractType", "Sequential Workflow");
1265
1268
  l(this, "contractBlueId", f["Sequential Workflow"]);
1266
1269
  l(this, "role", "handler");
@@ -1300,7 +1303,7 @@ class re {
1300
1303
  }
1301
1304
  }
1302
1305
  }
1303
- class et {
1306
+ class tt {
1304
1307
  constructor(e) {
1305
1308
  l(this, "contractType", "Sequential Workflow Operation");
1306
1309
  l(this, "contractBlueId", f["Sequential Workflow Operation"]);
@@ -1326,8 +1329,8 @@ class et {
1326
1329
  }
1327
1330
  }
1328
1331
  }
1329
- const Q = (c) => E.isTypeOf(c.payload, C);
1330
- class tt extends P {
1332
+ const Q = (c) => E.isTypeOf(c.payload, k);
1333
+ class nt extends P {
1331
1334
  constructor() {
1332
1335
  super(...arguments);
1333
1336
  l(this, "contractType", "Timeline Channel");
@@ -1338,7 +1341,7 @@ class tt extends P {
1338
1341
  if (!this.baseSupports(t) || !Q(t)) return !1;
1339
1342
  const a = o.getBlue().nodeToSchemaOutput(
1340
1343
  t.payload,
1341
- C
1344
+ k
1342
1345
  ), s = o.getBlue().nodeToSchemaOutput(n, Te), i = (h = a.timeline) == null ? void 0 : h.timelineId;
1343
1346
  return m(s.timelineId) && m(i) && i === s.timelineId;
1344
1347
  }
@@ -1350,12 +1353,12 @@ class tt extends P {
1350
1353
  });
1351
1354
  }
1352
1355
  }
1353
- const nt = [
1356
+ const ot = [
1354
1357
  new Qe(),
1355
1358
  // channels
1356
1359
  new Le(),
1357
1360
  new Fe(),
1358
- new tt(),
1361
+ new nt(),
1359
1362
  new ze(),
1360
1363
  new He(),
1361
1364
  new Ve(),
@@ -1363,17 +1366,17 @@ const nt = [
1363
1366
  new Re(),
1364
1367
  // sequential workflows
1365
1368
  new re(),
1366
- new et(),
1369
+ new tt(),
1367
1370
  // markers
1368
1371
  new Ue()
1369
1372
  ];
1370
- class lt {
1373
+ class ut {
1371
1374
  /**
1372
1375
  * Creates a new document processor
1373
1376
  *
1374
1377
  * @param processors - Initial list of processors to register
1375
1378
  */
1376
- constructor(e, t = nt) {
1379
+ constructor(e, t = ot) {
1377
1380
  l(this, "taskCounter", 0);
1378
1381
  l(this, "eventCounter", 0);
1379
1382
  l(this, "registry");
@@ -1466,24 +1469,24 @@ class lt {
1466
1469
  for (const g of b)
1467
1470
  if (g.kind === "patch") {
1468
1471
  const ae = W(t, this.blue);
1469
- for (const k of ae) {
1472
+ for (const C of ae) {
1470
1473
  const se = g.patch.op === "move" || g.patch.op === "copy" ? [g.patch.from, g.patch.path] : [g.patch.path], j = w.getNodePath(), ce = se.some(
1471
- (le) => F(le, k.absPath)
1474
+ (le) => F(le, C.absPath)
1472
1475
  ), ie = F(
1473
1476
  j,
1474
- k.absPath
1477
+ C.absPath
1475
1478
  );
1476
1479
  if (ce && !ie)
1477
1480
  throw new te(
1478
1481
  g.patch,
1479
- k.absPath,
1482
+ C.absPath,
1480
1483
  j
1481
1484
  );
1482
1485
  }
1483
1486
  try {
1484
1487
  t = L(t, [g.patch]);
1485
- } catch (k) {
1486
- throw We(u, d, k), k;
1488
+ } catch (C) {
1489
+ throw We(u, d, C), C;
1487
1490
  }
1488
1491
  } else g.kind === "event" && (n.push(g.event.payload), await this.router.route(t, [], g.event, s.key[5]));
1489
1492
  }
@@ -1494,7 +1497,7 @@ class lt {
1494
1497
  }
1495
1498
  }
1496
1499
  export {
1497
- lt as BlueDocumentProcessor,
1500
+ ut as BlueDocumentProcessor,
1498
1501
  xe as ChannelEventCheckpointProcessor,
1499
1502
  Ve as CompositeTimelineChannelProcessor,
1500
1503
  Fe as DocumentUpdateChannelProcessor,
@@ -1505,7 +1508,7 @@ export {
1505
1508
  ze as MyOSTimelineChannelProcessor,
1506
1509
  Re as OperationProcessor,
1507
1510
  Qe as ProcessEmbeddedProcessor,
1508
- et as SequentialWorkflowOperationProcessor,
1511
+ tt as SequentialWorkflowOperationProcessor,
1509
1512
  re as SequentialWorkflowProcessor,
1510
- tt as TimelineChannelProcessor
1513
+ nt as TimelineChannelProcessor
1511
1514
  };
package/package.json CHANGED
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "name": "@blue-labs/document-processor",
3
- "version": "1.25.0",
3
+ "version": "1.26.0",
4
4
  "dependencies": {
5
- "@blue-labs/language": "1.25.0",
6
- "@blue-labs/shared-utils": "1.25.0",
5
+ "@blue-labs/language": "1.26.0",
6
+ "@blue-labs/shared-utils": "1.26.0",
7
7
  "isolated-vm": "^5.0.4"
8
8
  },
9
9
  "main": "./dist/index.js",