@blue-labs/document-processor 1.28.0 → 1.30.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.
@@ -1 +1 @@
1
- {"version":3,"file":"BlueDocumentProcessor.d.ts","sourceRoot":"","sources":["../src/BlueDocumentProcessor.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,YAAY,EAEZ,gBAAgB,EAChB,gBAAgB,EACjB,MAAM,SAAS,CAAC;AAmBjB,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAI3C;;;;;GAKG;AACH,qBAAa,qBAAqB;IAc9B,OAAO,CAAC,QAAQ,CAAC,IAAI;IAbvB,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAmB;IAC5C,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAY;IAClC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAc;IACrC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAyB;IAEzD;;;;OAIG;gBAEgB,IAAI,EAAE,IAAI,EAC3B,UAAU,GAAE,iBAAiB,EAAsB;IAkBrD;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,EAAE,iBAAiB,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI;IAIzD;;;;;OAKG;IACG,UAAU,CAAC,QAAQ,EAAE,YAAY,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAuBnE;;;;;;OAMG;IACG,aAAa,CACjB,QAAQ,EAAE,YAAY,EACtB,QAAQ,EAAE,gBAAgB,EAAE,GAC3B,OAAO,CAAC,gBAAgB,CAAC;IA8B5B;;OAEG;YACW,UAAU;CAmFzB"}
1
+ {"version":3,"file":"BlueDocumentProcessor.d.ts","sourceRoot":"","sources":["../src/BlueDocumentProcessor.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,YAAY,EAEZ,gBAAgB,EAChB,gBAAgB,EACjB,MAAM,SAAS,CAAC;AAmBjB,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAI3C;;;;;GAKG;AACH,qBAAa,qBAAqB;IAc9B,OAAO,CAAC,QAAQ,CAAC,IAAI;IAbvB,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAmB;IAC5C,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAY;IAClC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAc;IACrC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAyB;IAEzD;;;;OAIG;gBAEgB,IAAI,EAAE,IAAI,EAC3B,UAAU,GAAE,iBAAiB,EAAsB;IAkBrD;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,EAAE,iBAAiB,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI;IAIzD;;;;;OAKG;IACG,UAAU,CAAC,QAAQ,EAAE,YAAY,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAuBnE;;;;;;OAMG;IACG,aAAa,CACjB,QAAQ,EAAE,YAAY,EACtB,QAAQ,EAAE,gBAAgB,EAAE,GAC3B,OAAO,CAAC,gBAAgB,CAAC;IA8B5B;;OAEG;YACW,UAAU;CAsFzB"}
package/dist/index.d.ts CHANGED
@@ -2,5 +2,6 @@ export * from './BlueDocumentProcessor';
2
2
  export * from './processors';
3
3
  export * from './types';
4
4
  export * from './utils/exceptions';
5
+ export { collectEmbeddedPathSpecs } from './utils/document';
5
6
  export * from './merge';
6
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC;AACxC,cAAc,cAAc,CAAC;AAC7B,cAAc,SAAS,CAAC;AACxB,cAAc,oBAAoB,CAAC;AACnC,cAAc,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC;AACxC,cAAc,cAAc,CAAC;AAC7B,cAAc,SAAS,CAAC;AACxB,cAAc,oBAAoB,CAAC;AACnC,OAAO,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAC5D,cAAc,SAAS,CAAC"}
package/dist/index.js CHANGED
@@ -1,8 +1,8 @@
1
- "use strict";var ye=Object.defineProperty;var ge=(s,e,t)=>e in s?ye(s,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):s[e]=t;var l=(s,e,t)=>ge(s,typeof e!="symbol"?e+"":e,t);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const d=require("@blue-repository/core-dev"),m=require("@blue-labs/language"),T=require("@blue-labs/shared-utils"),P=require("@blue-repository/myos-dev"),Ee=(s,e)=>({on:(t,n)=>({end:()=>n(null)})});async function we(s){return new Promise((e,t)=>{Ee().on("error",t).end()})}const S=(...s)=>s.map((e,t)=>{if(typeof e!="string")return"";if(t===0&&e==="/")return"/";const n=t>0?e.replace(/^\/+/,""):e;return t<s.length-1?n.replace(/\/+$/,""):n}).filter(Boolean).join("/").replace(/\/{2,}/g,"/");class K{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=S(this.taskInfo.nodePath,e);return t.get(n)}addPatch(e){this.actions.push({kind:"patch",patch:{...e,path:S(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 S(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 we()}loadBlueContent(e){throw new Error("Not implemented")}}class A extends Error{constructor(e,t){super(`Cannot apply patch ${JSON.stringify(e)}`),this.patch=e,this.cause=t,this.name="PatchApplicationError"}}class x 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 M extends Error{constructor(e,t){super(`Failed to evaluate expression "${e}"`),this.code=e,this.cause=t,this.name="ExpressionEvaluationError"}}class q extends Error{constructor(e,t){super(`Failed to evaluate code block "${e}"`),this.code=e,this.cause=t,this.name="CodeBlockEvaluationError"}}function N(s){return T.deepFreeze(s)}function B(s){return s.clone()}function j(s,e,t="/",n=[]){const o=s.getContracts()??{};for(const[r,a]of Object.entries(o))if(m.BlueNodeTypeSchema.isTypeOf(a,d.ProcessEmbeddedSchema)){const h=e.nodeToSchemaOutput(a,d.ProcessEmbeddedSchema).paths??[];for(const u of h)n.push({absPath:S(t,u),contractPath:S(t,`contracts/${r}`)})}for(const[r,a]of Object.entries(s.getProperties()??{}))j(a,e,S(t,r),n);return n}function J(s,e){return s===e||s.startsWith(e.endsWith("/")?e:e+"/")}function _(s,e){if(!e.length)return s;let t=B(s);for(const n of e)try{t=m.applyBlueNodePatch(t,n,!0)}catch(o){throw new A(n,o)}return N(t)}function y(s){return s!=null}function C(s){return s instanceof m.BlueNode}class ve{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 c=a+1;if(c<this.length&&n(t[c],t[a])<0&&(a=c),n(t[a],r)>=0)break;t[e]=t[a],e=a}t[e]=r}}const Se=(s,e,t,n,o,r)=>[-s,e,t,n,o,r],be=(s,e)=>{for(let t=0;t<s.key.length;t++){const n=s.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 Pe{constructor(){l(this,"queue");this.queue=new ve([],be)}push(e){this.queue.push(e)}pop(){return this.queue.pop()}get length(){return this.queue.length}}class Te{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 Ce{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 ke=64;class Ie{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 Ce}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 h=n.dispatchPath.split("/").filter(Boolean),u={...n};return delete u.dispatchPath,this.route(e,h,u,o,r)}if(n.source==="channel"&&n.originNodePath&&n.originNodePath!=="/"){const h=((i=n.originNodePath)==null?void 0:i.split("/").filter(Boolean))??[];return this.route(e,h,n,o,r)}}const a=S("/",t.join("/")),c=e.get(a);C(c)&&await this.traverseContracts({doc:e,node:c,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:c,inlineDepth:i}=e;if(!this.shouldSkipForChannel(r,o))for(const[h,u]of Object.entries(n.getContracts()??{})){if(!u.getType())continue;const p=this.registry.get(u.getType());if(!p){console.warn(`No processor registered for contract: ${h}`);continue}const f={nodePath:o,contractName:h,contractNode:u,event:r},g=new K(()=>t,f,this.blue);if(p.supports(r,u,g,h))switch(p.role){case"adapter":await this.processAdapter({cp:p,event:r,contractNode:u,ctx:g,contractName:h,doc:t,afterTaskId:a,inlineDepth:i});break;case"handler":this.scheduleHandler({contractNode:u,contractName:h,nodePath:o,event:r,depth:c.length,afterTaskId:a});break}}}async processAdapter(e){var v;const{cp:t,event:n,contractNode:o,ctx:r,contractName:a,doc:c,afterTaskId:i,inlineDepth:h}=e;if(h>=ke)throw new Error("Adapter recursion limit reached");const u=this.traceManager.addHop(n,((v=r.getTaskInfo())==null?void 0:v.nodePath)??"",a);await t.handle(u,o,r,a);const p=await r.flush();if(p.find(b=>b.kind==="patch"))throw new Error(`Contract "${a}" (adapter) attempted to patch the document`);const g=p.filter(b=>b.kind==="event");for(const b of g)await this.route(c,[],b.event,i,h+1)}scheduleHandler(e){const{contractNode:t,contractName:n,nodePath:o,event:r,depth:a,afterTaskId:c}=e,i=t.getType();if(!i){console.warn(`Contract node type is not defined for: ${n}`);return}const h=this.registry.orderOf(i),u=t.get("/order"),p=m.isBigNumber(u)?u.toNumber():0,f=this.getNextTaskId()+c,g=Se(a,r.seq,h,p,n,f),v=this.traceManager.addHop(r,o,n);this.queue.push({key:g,nodePath:o,contractName:n,contractNode:t,event:v})}shouldSkipForChannel(e,t){return e.source==="channel"&&!!e.originNodePath&&e.originNodePath!==t}}const Ne=(s,e,t)=>{(t instanceof A||t instanceof x)&&console.error(`[Blue] Failed to apply patches for contract "${s}" on event ${JSON.stringify(e)}`,t)};function U(s,e){const t=B(s),n=o=>{if(!C(o))return;const r=o.getContracts();(!(r!=null&&r.checkpoint)||!m.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 j(t,e)){const r=t.get(o);C(r)&&n(r)}return N(t)}function Be(s,e){const t=B(s);return C(t)&&(X(t,e)||t.addContract("initialized",e.jsonValueToNode({type:{name:"Initialized Marker",blueId:d.blueIds["Initialized Marker"]}}))),N(t)}function X(s,e){const t=s.getContracts();return Object.values(t??{}).some(n=>e.isTypeOf(n,d.InitializedMarkerSchema,{checkSchemaExtensions:!0}))}class Y{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 F=(s,e)=>s.get(e)!==void 0;class Oe{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=S(n,"contracts/checkpoint/lastEvents",o.channelName),c=`${a}/blueId`;F(e,a)?t.push({op:F(e,c)?"replace":"add",path:c,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 Z 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 G 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),c=t.payload.get("/path");if(!c||t.channelName===r)return!1;const i=a.path;return T.isNonNullable(i)&&c===o.resolvePath(i)}handle(t,n,o,r){const a=t.payload;a&&o.emitEvent({payload:a,channelName:r,source:"channel"})}}class ee 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:c,payload:i}=t;y(a.path)&&c===o.resolvePath(a.path)&&o.emitEvent({payload:i,channelName:r,source:"channel"})}}class te{constructor(){l(this,"contractType","Initialized Marker");l(this,"contractBlueId",d.blueIds["Initialized Marker"]);l(this,"role","marker")}supports(){return!1}handle(){}}class ne 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 c=o.getBlue(),i=c.nodeToJson(t.payload),h=c.nodeToJson(r);return T.deepContains(i,h)}catch(c){return console.warn("Error during lifecycle event pattern matching:",c),!1}}}const L=(s,e)=>{const t=e.getBlue();return t.isTypeOf(s.payload,d.TimelineEntrySchema)||t.isTypeOf(s.payload,P.MyOSTimelineEntrySchema)};class oe extends k{constructor(){super(...arguments);l(this,"contractType","MyOS Timeline Channel");l(this,"contractBlueId",P.blueIds["MyOS Timeline Channel"])}supports(t,n,o){var f;if(!this.baseSupports(t)||!L(t,o))return!1;const a=o.getBlue().nodeToSchemaOutput(t.payload,P.MyOSTimelineEntrySchema),c=o.getBlue().nodeToSchemaOutput(n,P.MyOSTimelineChannelSchema),i=(f=a.timeline)==null?void 0:f.timelineId,h=y(c.timelineId)&&y(i),u=y(c.account)&&y(a.account),p=y(c.email)&&y(a.email);return h&&i===c.timelineId||u&&a.account===c.account||p&&a.email===c.email}handle(t,n,o,r){L(t,o)&&o.emitEvent({payload:t.payload,channelName:r,source:"channel"})}}class re 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),c=r.nodeToSchemaOutput(n,P.MyOSAgentChannelSchema);return{myosAgentEvent:a,myosAgentChannel:c}}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 c=o.getBlue(),i=c.nodeToJson(a),h=c.nodeToJson(r);return T.deepContains(i,h)}catch(c){return console.warn("Error during event pattern matching:",c),!1}}}class ae{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),c=this.parseEventPayload(e,n);return y(c==null?void 0:c.operation)&&c.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 se{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 ce=!process.env.SKIP_ISOLATED_VM;let w=null;if(ce)try{w=require("isolated-vm")}catch{console.warn("isolated-vm not available, using fallback evaluation method")}function z(s){return/\bimport\s.+\sfrom\s+['"][^'"]+['"]/.test(s)||/\bexport\s+/.test(s)}class ${static async evaluate({code:e,ctx:t,bindings:n={},options:o={}}){return!w||!ce?this.evaluateSimple(e,n,o):this.evaluateSecure(e,n,t,o)}static async evaluateSimple(e,t,n={}){if(z(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(c=>t[c])))(...o.map(c=>t[c]))}else return new Function(...Object.keys(t),`return ${e};`)(...Object.values(t))}catch(o){throw n.isCodeBlock?new q(e,o):new M(e,o)}}static async evaluateSecure(e,t,n,o={}){if(!w)throw new Error("isolated-vm not available");const r=new w.Isolate({memoryLimit:32}),a=await r.createContext(),c=a.global;try{await this.setupIsolateEnvironment(c,t);const i=new Map,h=this.createModuleResolver(r,a,i,n);let u;return z(e)?u=await this.evaluateESModule(r,a,e,o,h):u=await this.evaluateSimpleScript(r,a,e,t,o),this.deepClone(u)}catch(i){throw o.isCodeBlock?new q(e,i):new M(e,i)}finally{a.release(),r.dispose()}}static async setupIsolateEnvironment(e,t){if(!w)throw new Error("isolated-vm not available");const n=new w.Callback((...r)=>console.log(...r)),o=new w.ExternalCopy({log:n}).copyInto();await e.set("console",o);for(const[r,a]of Object.entries(t))typeof a=="function"?await e.set(r,new w.Callback(a)):await e.set(r,new w.ExternalCopy(a).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),c=o.loadBlueContent;if(typeof c!="function")throw new Error(`ProcessingContext is missing a loadBlueContent(blueId) implementation (needed for ${r})`);const i=await c(a),h=await e.compileModule(i);return n.set(r,h),await h.instantiate(t,this.createModuleResolver(e,t,n,o)),h}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 c=await e.compileModule(a);return n.set(r,c),await c.instantiate(t,this.createModuleResolver(e,t,n,o)),c}throw new Error(`Unsupported module specifier "${r}"`)}}static async evaluateSimpleScript(e,t,n,o,r){const a=Object.keys(o).join(", "),c=Object.keys(o).map(u=>u),i=`(async (${a}) => { ${r.isCodeBlock?n:`return (${n});`} })(${c.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 h=/^\s*(import\s.+?;|export\s.+?;)/gm,u=(n.match(h)||[]).join(`
1
+ "use strict";var ye=Object.defineProperty;var ge=(s,e,t)=>e in s?ye(s,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):s[e]=t;var l=(s,e,t)=>ge(s,typeof e!="symbol"?e+"":e,t);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const d=require("@blue-repository/core-dev"),m=require("@blue-labs/language"),T=require("@blue-labs/shared-utils"),P=require("@blue-repository/myos-dev"),Ee=(s,e)=>({on:(t,n)=>({end:()=>n(null)})});async function we(s){return new Promise((e,t)=>{Ee().on("error",t).end()})}const S=(...s)=>s.map((e,t)=>{if(typeof e!="string")return"";if(t===0&&e==="/")return"/";const n=t>0?e.replace(/^\/+/,""):e;return t<s.length-1?n.replace(/\/+$/,""):n}).filter(Boolean).join("/").replace(/\/{2,}/g,"/");class K{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=S(this.taskInfo.nodePath,e);return t.get(n)}addPatch(e){this.actions.push({kind:"patch",patch:{...e,path:S(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 S(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 we()}loadBlueContent(e){throw new Error("Not implemented")}}class j extends Error{constructor(e,t){super(`Cannot apply patch ${JSON.stringify(e)}`),this.patch=e,this.cause=t,this.name="PatchApplicationError"}}class x 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 q extends Error{constructor(e,t){super(`Failed to evaluate expression "${e}"`),this.code=e,this.cause=t,this.name="ExpressionEvaluationError"}}class $ extends Error{constructor(e,t){super(`Failed to evaluate code block "${e}"`),this.code=e,this.cause=t,this.name="CodeBlockEvaluationError"}}function N(s){return T.deepFreeze(s)}function B(s){return s.clone()}function M(s,e,t="/",n=[]){const o=s.getContracts()??{};for(const[r,a]of Object.entries(o))if(e.isTypeOf(a,d.ProcessEmbeddedSchema)){const h=e.nodeToSchemaOutput(a,d.ProcessEmbeddedSchema).paths??[];for(const u of h)n.push({absPath:S(t,u),contractPath:S(t,`contracts/${r}`)})}for(const[r,a]of Object.entries(s.getProperties()??{}))M(a,e,S(t,r),n);return n}function J(s,e){return s===e||s.startsWith(e.endsWith("/")?e:e+"/")}function _(s,e){if(!e.length)return s;let t=B(s);for(const n of e)try{t=m.applyBlueNodePatch(t,n,!0)}catch(o){throw new j(n,o)}return N(t)}function y(s){return s!=null}function C(s){return s instanceof m.BlueNode}class ve{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 c=a+1;if(c<this.length&&n(t[c],t[a])<0&&(a=c),n(t[a],r)>=0)break;t[e]=t[a],e=a}t[e]=r}}const Se=(s,e,t,n,o,r)=>[-s,e,t,n,o,r],be=(s,e)=>{for(let t=0;t<s.key.length;t++){const n=s.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 Pe{constructor(){l(this,"queue");this.queue=new ve([],be)}push(e){this.queue.push(e)}pop(){return this.queue.pop()}get length(){return this.queue.length}}class Te{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 Ce{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 ke=64;class Ie{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 Ce}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 h=n.dispatchPath.split("/").filter(Boolean),u={...n};return delete u.dispatchPath,this.route(e,h,u,o,r)}if(n.source==="channel"&&n.originNodePath&&n.originNodePath!=="/"){const h=((i=n.originNodePath)==null?void 0:i.split("/").filter(Boolean))??[];return this.route(e,h,n,o,r)}}const a=S("/",t.join("/")),c=e.get(a);C(c)&&await this.traverseContracts({doc:e,node:c,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:c,inlineDepth:i}=e;if(!this.shouldSkipForChannel(r,o))for(const[h,u]of Object.entries(n.getContracts()??{})){if(!u.getType())continue;const p=this.registry.get(u.getType());if(!p){console.warn(`No processor registered for contract: ${h}`);continue}const f={nodePath:o,contractName:h,contractNode:u,event:r},g=new K(()=>t,f,this.blue);if(p.supports(r,u,g,h))switch(p.role){case"adapter":await this.processAdapter({cp:p,event:r,contractNode:u,ctx:g,contractName:h,doc:t,afterTaskId:a,inlineDepth:i});break;case"handler":this.scheduleHandler({contractNode:u,contractName:h,nodePath:o,event:r,depth:c.length,afterTaskId:a});break}}}async processAdapter(e){var v;const{cp:t,event:n,contractNode:o,ctx:r,contractName:a,doc:c,afterTaskId:i,inlineDepth:h}=e;if(h>=ke)throw new Error("Adapter recursion limit reached");const u=this.traceManager.addHop(n,((v=r.getTaskInfo())==null?void 0:v.nodePath)??"",a);await t.handle(u,o,r,a);const p=await r.flush();if(p.find(b=>b.kind==="patch"))throw new Error(`Contract "${a}" (adapter) attempted to patch the document`);const g=p.filter(b=>b.kind==="event");for(const b of g)await this.route(c,[],b.event,i,h+1)}scheduleHandler(e){const{contractNode:t,contractName:n,nodePath:o,event:r,depth:a,afterTaskId:c}=e,i=t.getType();if(!i){console.warn(`Contract node type is not defined for: ${n}`);return}const h=this.registry.orderOf(i),u=t.get("/order"),p=m.isBigNumber(u)?u.toNumber():0,f=this.getNextTaskId()+c,g=Se(a,r.seq,h,p,n,f),v=this.traceManager.addHop(r,o,n);this.queue.push({key:g,nodePath:o,contractName:n,contractNode:t,event:v})}shouldSkipForChannel(e,t){return e.source==="channel"&&!!e.originNodePath&&e.originNodePath!==t}}const Ne=(s,e,t)=>{(t instanceof j||t instanceof x)&&console.error(`[Blue] Failed to apply patches for contract "${s}" on event ${JSON.stringify(e)}`,t)};function U(s,e){const t=B(s),n=o=>{if(!C(o))return;const r=o.getContracts();(!(r!=null&&r.checkpoint)||!m.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 M(t,e)){const r=t.get(o);C(r)&&n(r)}return N(t)}function Be(s,e){const t=B(s);return C(t)&&(X(t,e)||t.addContract("initialized",e.jsonValueToNode({type:{name:"Initialized Marker",blueId:d.blueIds["Initialized Marker"]}}))),N(t)}function X(s,e){const t=s.getContracts();return Object.values(t??{}).some(n=>e.isTypeOf(n,d.InitializedMarkerSchema,{checkSchemaExtensions:!0}))}class Y{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 getEventBlueId(e,t){var o;const n=(o=e.rootEvent)==null?void 0:o.payload;if(!n)throw new Error("Cannot calculate blueId for checkpoint: missing root event payload");if(n instanceof m.ResolvedBlueNode){const r=n.getMinimalNode();return await t.getBlue().calculateBlueId(r)}return await t.getBlue().calculateBlueId(n)}async handle(e,t,n){var a;if(!e.channelName||!((a=e.rootEvent)!=null&&a.seq))return;const o=await this.getEventBlueId(e,n),r=n.getNodePath().replace(/\/contracts\/checkpoint$/,"");this.cache.record(r,e,o)}}const F=(s,e)=>s.get(e)!==void 0;class Oe{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=S(n,"contracts/checkpoint/lastEvents",o.channelName),c=`${a}/blueId`;F(e,a)?t.push({op:F(e,c)?"replace":"add",path:c,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 Z 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 G 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),c=t.payload.get("/path");if(!c||t.channelName===r)return!1;const i=a.path;return T.isNonNullable(i)&&c===o.resolvePath(i)}handle(t,n,o,r){const a=t.payload;a&&o.emitEvent({payload:a,channelName:r,source:"channel"})}}class ee 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:c,payload:i}=t;y(a.path)&&c===o.resolvePath(a.path)&&o.emitEvent({payload:i,channelName:r,source:"channel"})}}class te{constructor(){l(this,"contractType","Initialized Marker");l(this,"contractBlueId",d.blueIds["Initialized Marker"]);l(this,"role","marker")}supports(){return!1}handle(){}}class ne 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 c=o.getBlue(),i=c.nodeToJson(t.payload),h=c.nodeToJson(r);return T.deepContains(i,h)}catch(c){return console.warn("Error during lifecycle event pattern matching:",c),!1}}}const L=(s,e)=>{const t=e.getBlue();return t.isTypeOf(s.payload,d.TimelineEntrySchema)||t.isTypeOf(s.payload,P.MyOSTimelineEntrySchema)};class oe extends k{constructor(){super(...arguments);l(this,"contractType","MyOS Timeline Channel");l(this,"contractBlueId",P.blueIds["MyOS Timeline Channel"])}supports(t,n,o){var f;if(!this.baseSupports(t)||!L(t,o))return!1;const a=o.getBlue().nodeToSchemaOutput(t.payload,P.MyOSTimelineEntrySchema),c=o.getBlue().nodeToSchemaOutput(n,P.MyOSTimelineChannelSchema),i=(f=a.timeline)==null?void 0:f.timelineId,h=y(c.timelineId)&&y(i),u=y(c.account)&&y(a.account),p=y(c.email)&&y(a.email);return h&&i===c.timelineId||u&&a.account===c.account||p&&a.email===c.email}handle(t,n,o,r){L(t,o)&&o.emitEvent({payload:t.payload,channelName:r,source:"channel"})}}class re 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),c=r.nodeToSchemaOutput(n,P.MyOSAgentChannelSchema);return{myosAgentEvent:a,myosAgentChannel:c}}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 c=o.getBlue(),i=c.nodeToJson(a),h=c.nodeToJson(r);return T.deepContains(i,h)}catch(c){return console.warn("Error during event pattern matching:",c),!1}}}class ae{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),c=this.parseEventPayload(e,n);return y(c==null?void 0:c.operation)&&c.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 se{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 ce=!process.env.SKIP_ISOLATED_VM;let w=null;if(ce)try{w=require("isolated-vm")}catch{console.warn("isolated-vm not available, using fallback evaluation method")}function z(s){return/\bimport\s.+\sfrom\s+['"][^'"]+['"]/.test(s)||/\bexport\s+/.test(s)}class D{static async evaluate({code:e,ctx:t,bindings:n={},options:o={}}){return!w||!ce?this.evaluateSimple(e,n,o):this.evaluateSecure(e,n,t,o)}static async evaluateSimple(e,t,n={}){if(z(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(c=>t[c])))(...o.map(c=>t[c]))}else return new Function(...Object.keys(t),`return ${e};`)(...Object.values(t))}catch(o){throw n.isCodeBlock?new $(e,o):new q(e,o)}}static async evaluateSecure(e,t,n,o={}){if(!w)throw new Error("isolated-vm not available");const r=new w.Isolate({memoryLimit:32}),a=await r.createContext(),c=a.global;try{await this.setupIsolateEnvironment(c,t);const i=new Map,h=this.createModuleResolver(r,a,i,n);let u;return z(e)?u=await this.evaluateESModule(r,a,e,o,h):u=await this.evaluateSimpleScript(r,a,e,t,o),this.deepClone(u)}catch(i){throw o.isCodeBlock?new $(e,i):new q(e,i)}finally{a.release(),r.dispose()}}static async setupIsolateEnvironment(e,t){if(!w)throw new Error("isolated-vm not available");const n=new w.Callback((...r)=>console.log(...r)),o=new w.ExternalCopy({log:n}).copyInto();await e.set("console",o);for(const[r,a]of Object.entries(t))typeof a=="function"?await e.set(r,new w.Callback(a)):await e.set(r,new w.ExternalCopy(a).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),c=o.loadBlueContent;if(typeof c!="function")throw new Error(`ProcessingContext is missing a loadBlueContent(blueId) implementation (needed for ${r})`);const i=await c(a),h=await e.compileModule(i);return n.set(r,h),await h.instantiate(t,this.createModuleResolver(e,t,n,o)),h}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 c=await e.compileModule(a);return n.set(r,c),await c.instantiate(t,this.createModuleResolver(e,t,n,o)),c}throw new Error(`Unsupported module specifier "${r}"`)}}static async evaluateSimpleScript(e,t,n,o,r){const a=Object.keys(o).join(", "),c=Object.keys(o).map(u=>u),i=`(async (${a}) => { ${r.isCodeBlock?n:`return (${n});`} })(${c.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 h=/^\s*(import\s.+?;|export\s.+?;)/gm,u=(n.match(h)||[]).join(`
2
2
  `),p=n.replace(h,"").trim();a=`
3
3
  ${u}
4
4
  const run = function() {
5
5
  ${p}
6
6
  };
7
7
  export default run();
8
- `}const c=await e.compileModule(a);return await c.instantiate(t,r),await c.evaluate({timeout:o.timeout??500,promise:!0,reference:!0,release:!0}),await c.namespace.get("default",{timeout:o.timeout??500,promise:!0,copy:!0,release:!0})}static deepClone(e){return typeof e>"u"?e:JSON.parse(JSON.stringify(e))}}class D{static createStandardBindings(e,t,n){const o=e.getBlue(),r=o.nodeToJson(t.payload,"simple"),a=m.isBigNumber(r)?r.toNumber():r;return{document:c=>{const i=e.get(c);return m.isBigNumber(i)?i.toNumber():C(i)?o.nodeToJson(i,"original"):i},event:a,steps:n}}}function R(s,e){const{op:t,path:n,val:o,from:r}=s;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 Me(s){return s.jsonValueToNode({type:"Document Processing Initiated"})}const qe=/^\$\{(.*)\}$/,O=s=>typeof s!="string"?!1:qe.test(s),H=s=>{if(!O(s))throw new Error(`Invalid expression: ${s}`);return s.slice(2,-1)};class $e{constructor(){l(this,"stepType","Update Document")}supports(e){return m.BlueNodeTypeSchema.isTypeOf(e,d.UpdateDocumentSchema)}async execute(e,t,n,o,r){const a=n.getBlue();if(!m.BlueNodeTypeSchema.isTypeOf(e,d.UpdateDocumentSchema))return;const c=await this.evaluateChangeset(e.get("/changeset"),n,t,r),i=m.applyBlueNodePatch(e,{op:"replace",path:"/changeset",val:c}),h=n.getBlue().nodeToSchemaOutput(i,d.UpdateDocumentSchema);for(const u of h.changeset??[]){if(!u.path)continue;const p=u.val;if((u.op==="replace"||u.op==="add")&&T.isNonNullable(p)){const f=await this.evaluateChangeValue(p,n,t,r);n.addPatch({op:u.op,path:u.path,val:f}),n.emitEvent({payload:R({op:u.op,path:n.resolvePath(u.path),val:a.nodeToJson(f,"original")},a)})}u.op==="remove"&&(n.addPatch({op:u.op,path:u.path}),n.emitEvent({payload:R({op:u.op,path:n.resolvePath(u.path),val:null},a)}))}}async evaluateChangeset(e,t,n,o){const r=t.getBlue();if(O(e)){const a=H(e),c=await $.evaluate({code:a,ctx:t,bindings:D.createStandardBindings(t,n,o)});return r.jsonValueToNode(c??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(O(r)){const c=H(r),i=await $.evaluate({code:c,ctx:t,bindings:D.createStandardBindings(t,n,o)});return a.jsonValueToNode(i??null)}return e}}class De{constructor(){l(this,"stepType","Trigger Event")}supports(e){return m.BlueNodeTypeSchema.isTypeOf(e,d.TriggerEventSchema)}async execute(e,t,n){const o=n.getBlue();if(!m.BlueNodeTypeSchema.isTypeOf(e,d.TriggerEventSchema))return;const r=o.nodeToSchemaOutput(e,d.TriggerEventSchema);r.event&&n.emitEvent({payload:r.event})}}class Ae{constructor(){l(this,"stepType","JavaScript Code")}supports(e){return m.BlueNodeTypeSchema.isTypeOf(e,d.JavaScriptCodeSchema)}async execute(e,t,n,o,r){if(!m.BlueNodeTypeSchema.isTypeOf(e,d.JavaScriptCodeSchema))return;const a=n.getBlue(),c=a.nodeToSchemaOutput(e,d.JavaScriptCodeSchema);if(!c.code)throw new Error("JavaScript code is required");const i=await $.evaluate({code:c.code,ctx:n,bindings:D.createStandardBindings(n,t,r),options:{isCodeBlock:!0,timeout:500}});if(i&&typeof i=="object"&&"events"in i){const h=i;if(Array.isArray(h.events))for(const u of h.events)n.emitEvent({payload:a.jsonValueToNode(u)})}return i}}const xe=[new $e,new De,new Ae];class V{constructor(e=xe){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 c;const r={},a=(c=t.getProperties())==null?void 0:c.steps.getItems();for(const[i,h]of(a??[]).entries()){const u=this.executors.find(f=>f.supports(h));if(!u)throw new Error(`Unsupported workflow step type "${h.getType()}"`);const p=await u.execute(h,e,n,o,r);if(p!==void 0){const f=h.getName(),g=typeof f=="string"?f:`Step${i+1}`;r[g]=p}await n.flush()}}}class ie{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 V}supports(e,t,n){const a=n.getBlue().nodeToSchemaOutput(t,d.SequentialWorkflowOperationSchema).operation,c=e.channelName;return e.source==="channel"&&T.isNonNullable(c)&&T.isNonNullable(a)&&c===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 Q=s=>m.BlueNodeTypeSchema.isTypeOf(s.payload,d.TimelineEntrySchema);class le extends k{constructor(){super(...arguments);l(this,"contractType","Timeline Channel");l(this,"contractBlueId",d.blueIds["Timeline Channel"])}supports(t,n,o){var u;if(!this.baseSupports(t)||!Q(t))return!1;const a=o.getBlue().nodeToSchemaOutput(t.payload,d.TimelineEntrySchema),c=o.getBlue().nodeToSchemaOutput(n,d.TimelineChannelSchema),i=(u=a.timeline)==null?void 0:u.timelineId;return y(c.timelineId)&&y(i)&&i===c.timelineId}handle(t,n,o,r){Q(t)&&o.emitEvent({payload:t.payload,channelName:r,source:"channel"})}}const je=[new se,new ee,new G,new le,new oe,new re,new Z,new ne,new ae,new V,new ie,new te];class Ve{constructor(e,t=je){l(this,"taskCounter",0);l(this,"eventCounter",0);l(this,"registry");l(this,"queue");l(this,"router");l(this,"checkpointCache",new Oe);this.blue=e,this.registry=new Te(t),this.queue=new Pe,this.router=new Ie(this.blue,this.registry,this.queue,()=>++this.taskCounter,()=>++this.eventCounter),this.register(new Y(this.checkpointCache),9999)}register(e,t){this.registry.register(e,t)}async initialize(e){let t=U(N(e),this.blue);const n={payload:Me(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=Be(t,this.blue),{state:B(t),emitted:o}}async processEvents(e,t){let n=U(N(e),this.blue);const o=[];if(!X(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 c=await this.drainQueue(n);n=c.state,o.push(...c.emitted);const i=this.checkpointCache.flush(n);i.length&&(n=_(n,i))}finally{this.checkpointCache.clear()}return{state:B(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 c=this.queue.pop(),{nodePath:i,contractName:h,contractNode:u,event:p}=c,f=t.get(i);if(!C(f)||!((a=f.getContracts())!=null&&a[h])||!u.getType())continue;const g=this.registry.get(u.getType());if(!g){console.warn(`No processor registered for contract: ${h}`);continue}const v=new K(()=>t,c,this.blue,async b=>{for(const E of b)if(E.kind==="patch"){const he=j(t,this.blue);for(const I of he){const de=E.patch.op==="move"||E.patch.op==="copy"?[E.patch.from,E.patch.path]:[E.patch.path],W=v.getNodePath(),pe=de.some(fe=>J(fe,I.absPath)),me=J(W,I.absPath);if(pe&&!me)throw new x(E.patch,I.absPath,W)}try{t=_(t,[E.patch])}catch(I){throw Ne(h,p,I),I}}else E.kind==="event"&&(n.push(E.event.payload),await this.router.route(t,[],E.event,c.key[5]))});await g.handle(p,u,v,h),await v.flush()}return{state:t,emitted:n}}}class ue{process(e,t){const n=t.getValue();if(O(n)){const o=t.clone();return o.setValue(n),o.setProperties(void 0),o.setItems(void 0),o.setType(void 0),o}return e}postProcess(e,t){const n=t.getValue();if(O(n)&&e.getValue()!==n&&n!==void 0){const o=e.clone();return o.setValue(n),o}return e}}const We=Object.freeze(Object.defineProperty({__proto__:null,ExpressionPreserver:ue},Symbol.toStringTag,{value:"Module"}));function Je(){return new m.MergingProcessors.SequentialMergingProcessor([new m.MergingProcessors.ValuePropagator,new ue,new m.MergingProcessors.TypeAssigner,new m.MergingProcessors.ListProcessor,new m.MergingProcessors.DictionaryProcessor,new m.MergingProcessors.BasicTypesVerifier])}exports.BlueDocumentProcessor=Ve;exports.ChannelEventCheckpointProcessor=Y;exports.CodeBlockEvaluationError=q;exports.CompositeTimelineChannelProcessor=Z;exports.DocumentUpdateChannelProcessor=G;exports.EmbeddedDocumentModificationError=x;exports.EmbeddedNodeChannelProcessor=ee;exports.ExpressionEvaluationError=M;exports.InitializedMarkerProcessor=te;exports.LifecycleEventChannelProcessor=ne;exports.MergingProcessors=We;exports.MyOSAgentChannelProcessor=re;exports.MyOSTimelineChannelProcessor=oe;exports.OperationProcessor=ae;exports.PatchApplicationError=A;exports.ProcessEmbeddedProcessor=se;exports.SequentialWorkflowOperationProcessor=ie;exports.SequentialWorkflowProcessor=V;exports.TimelineChannelProcessor=le;exports.createDefaultMergingProcessor=Je;
8
+ `}const c=await e.compileModule(a);return await c.instantiate(t,r),await c.evaluate({timeout:o.timeout??500,promise:!0,reference:!0,release:!0}),await c.namespace.get("default",{timeout:o.timeout??500,promise:!0,copy:!0,release:!0})}static deepClone(e){return typeof e>"u"?e:JSON.parse(JSON.stringify(e))}}class A{static createStandardBindings(e,t,n){const o=e.getBlue(),r=o.nodeToJson(t.payload,"simple"),a=m.isBigNumber(r)?r.toNumber():r;return{document:c=>{const i=e.get(c);return m.isBigNumber(i)?i.toNumber():C(i)?o.nodeToJson(i,"original"):i},event:a,steps:n}}}function R(s,e){const{op:t,path:n,val:o,from:r}=s;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 Me(s){return s.jsonValueToNode({type:"Document Processing Initiated"})}const qe=/^\$\{(.*)\}$/,O=s=>typeof s!="string"?!1:qe.test(s),H=s=>{if(!O(s))throw new Error(`Invalid expression: ${s}`);return s.slice(2,-1)};class $e{constructor(){l(this,"stepType","Update Document")}supports(e){return m.BlueNodeTypeSchema.isTypeOf(e,d.UpdateDocumentSchema)}async execute(e,t,n,o,r){const a=n.getBlue();if(!m.BlueNodeTypeSchema.isTypeOf(e,d.UpdateDocumentSchema))return;const c=await this.evaluateChangeset(e.get("/changeset"),n,t,r),i=m.applyBlueNodePatch(e,{op:"replace",path:"/changeset",val:c}),h=n.getBlue().nodeToSchemaOutput(i,d.UpdateDocumentSchema);for(const u of h.changeset??[]){if(!u.path)continue;const p=u.val;if((u.op==="replace"||u.op==="add")&&T.isNonNullable(p)){const f=await this.evaluateChangeValue(p,n,t,r);n.addPatch({op:u.op,path:u.path,val:f}),n.emitEvent({payload:R({op:u.op,path:n.resolvePath(u.path),val:a.nodeToJson(f,"original")},a)})}u.op==="remove"&&(n.addPatch({op:u.op,path:u.path}),n.emitEvent({payload:R({op:u.op,path:n.resolvePath(u.path),val:null},a)}))}}async evaluateChangeset(e,t,n,o){const r=t.getBlue();if(O(e)){const a=H(e),c=await D.evaluate({code:a,ctx:t,bindings:A.createStandardBindings(t,n,o)});return r.jsonValueToNode(c??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(O(r)){const c=H(r),i=await D.evaluate({code:c,ctx:t,bindings:A.createStandardBindings(t,n,o)});return a.jsonValueToNode(i??null)}return e}}class De{constructor(){l(this,"stepType","Trigger Event")}supports(e){return m.BlueNodeTypeSchema.isTypeOf(e,d.TriggerEventSchema)}async execute(e,t,n){const o=n.getBlue();if(!m.BlueNodeTypeSchema.isTypeOf(e,d.TriggerEventSchema))return;const r=o.nodeToSchemaOutput(e,d.TriggerEventSchema);r.event&&n.emitEvent({payload:r.event})}}class Ae{constructor(){l(this,"stepType","JavaScript Code")}supports(e){return m.BlueNodeTypeSchema.isTypeOf(e,d.JavaScriptCodeSchema)}async execute(e,t,n,o,r){if(!m.BlueNodeTypeSchema.isTypeOf(e,d.JavaScriptCodeSchema))return;const a=n.getBlue(),c=a.nodeToSchemaOutput(e,d.JavaScriptCodeSchema);if(!c.code)throw new Error("JavaScript code is required");const i=await D.evaluate({code:c.code,ctx:n,bindings:A.createStandardBindings(n,t,r),options:{isCodeBlock:!0,timeout:500}});if(i&&typeof i=="object"&&"events"in i){const h=i;if(Array.isArray(h.events))for(const u of h.events)n.emitEvent({payload:a.jsonValueToNode(u)})}return i}}const je=[new $e,new De,new Ae];class V{constructor(e=je){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 c;const r={},a=(c=t.getProperties())==null?void 0:c.steps.getItems();for(const[i,h]of(a??[]).entries()){const u=this.executors.find(f=>f.supports(h));if(!u)throw new Error(`Unsupported workflow step type "${h.getType()}"`);const p=await u.execute(h,e,n,o,r);if(p!==void 0){const f=h.getName(),g=typeof f=="string"?f:`Step${i+1}`;r[g]=p}await n.flush()}}}class ie{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 V}supports(e,t,n){const a=n.getBlue().nodeToSchemaOutput(t,d.SequentialWorkflowOperationSchema).operation,c=e.channelName;return e.source==="channel"&&T.isNonNullable(c)&&T.isNonNullable(a)&&c===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 Q=s=>m.BlueNodeTypeSchema.isTypeOf(s.payload,d.TimelineEntrySchema);class le extends k{constructor(){super(...arguments);l(this,"contractType","Timeline Channel");l(this,"contractBlueId",d.blueIds["Timeline Channel"])}supports(t,n,o){var u;if(!this.baseSupports(t)||!Q(t))return!1;const a=o.getBlue().nodeToSchemaOutput(t.payload,d.TimelineEntrySchema),c=o.getBlue().nodeToSchemaOutput(n,d.TimelineChannelSchema),i=(u=a.timeline)==null?void 0:u.timelineId;return y(c.timelineId)&&y(i)&&i===c.timelineId}handle(t,n,o,r){Q(t)&&o.emitEvent({payload:t.payload,channelName:r,source:"channel"})}}const xe=[new se,new ee,new G,new le,new oe,new re,new Z,new ne,new ae,new V,new ie,new te];class Ve{constructor(e,t=xe){l(this,"taskCounter",0);l(this,"eventCounter",0);l(this,"registry");l(this,"queue");l(this,"router");l(this,"checkpointCache",new Oe);this.blue=e,this.registry=new Te(t),this.queue=new Pe,this.router=new Ie(this.blue,this.registry,this.queue,()=>++this.taskCounter,()=>++this.eventCounter),this.register(new Y(this.checkpointCache),9999)}register(e,t){this.registry.register(e,t)}async initialize(e){let t=U(N(e),this.blue);const n={payload:Me(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=Be(t,this.blue),{state:B(t),emitted:o}}async processEvents(e,t){let n=U(N(e),this.blue);const o=[];if(!X(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 c=await this.drainQueue(n);n=c.state,o.push(...c.emitted);const i=this.checkpointCache.flush(n);i.length&&(n=_(n,i))}finally{this.checkpointCache.clear()}return{state:B(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 c=this.queue.pop(),{nodePath:i,contractName:h,contractNode:u,event:p}=c,f=t.get(i);if(!C(f)||!((a=f.getContracts())!=null&&a[h])||!u.getType())continue;const g=this.registry.get(u.getType());if(!g){console.warn(`No processor registered for contract: ${h}`);continue}const v=new K(()=>t,c,this.blue,async b=>{for(const E of b)if(E.kind==="patch"){const he=M(t,this.blue);for(const I of he){const de=E.patch.op==="move"||E.patch.op==="copy"?[E.patch.from,E.patch.path]:[E.patch.path],W=v.getNodePath(),pe=de.some(fe=>J(fe,I.absPath)),me=J(W,I.absPath);if(pe&&!me)throw new x(E.patch,I.absPath,W)}try{t=_(t,[E.patch])}catch(I){throw Ne(h,p,I),I}}else E.kind==="event"&&(n.push(E.event.payload),await this.router.route(t,[],E.event,c.key[5]))});await g.handle(p,u,v,h),await v.flush()}return{state:t,emitted:n}}}class ue{process(e,t){const n=t.getValue();if(O(n)){const o=t.clone();return o.setValue(n),o.setProperties(void 0),o.setItems(void 0),o.setType(void 0),o}return e}postProcess(e,t){const n=t.getValue();if(O(n)&&e.getValue()!==n&&n!==void 0){const o=e.clone();return o.setValue(n),o}return e}}const We=Object.freeze(Object.defineProperty({__proto__:null,ExpressionPreserver:ue},Symbol.toStringTag,{value:"Module"}));function Je(){return new m.MergingProcessors.SequentialMergingProcessor([new m.MergingProcessors.ValuePropagator,new ue,new m.MergingProcessors.TypeAssigner,new m.MergingProcessors.ListProcessor,new m.MergingProcessors.DictionaryProcessor,new m.MergingProcessors.BasicTypesVerifier])}exports.BlueDocumentProcessor=Ve;exports.ChannelEventCheckpointProcessor=Y;exports.CodeBlockEvaluationError=$;exports.CompositeTimelineChannelProcessor=Z;exports.DocumentUpdateChannelProcessor=G;exports.EmbeddedDocumentModificationError=x;exports.EmbeddedNodeChannelProcessor=ee;exports.ExpressionEvaluationError=q;exports.InitializedMarkerProcessor=te;exports.LifecycleEventChannelProcessor=ne;exports.MergingProcessors=We;exports.MyOSAgentChannelProcessor=re;exports.MyOSTimelineChannelProcessor=oe;exports.OperationProcessor=ae;exports.PatchApplicationError=j;exports.ProcessEmbeddedProcessor=se;exports.SequentialWorkflowOperationProcessor=ie;exports.SequentialWorkflowProcessor=V;exports.TimelineChannelProcessor=le;exports.collectEmbeddedPathSpecs=M;exports.createDefaultMergingProcessor=Je;
package/dist/index.mjs CHANGED
@@ -1,19 +1,19 @@
1
1
  var me = Object.defineProperty;
2
2
  var ye = (s, e, t) => e in s ? me(s, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : s[e] = t;
3
3
  var l = (s, e, t) => ye(s, typeof e != "symbol" ? e + "" : e, t);
4
- import { ProcessEmbeddedSchema as D, ChannelEventCheckpointSchema as ge, blueIds as m, InitializedMarkerSchema as Ee, CompositeTimelineChannelSchema as we, DocumentUpdateChannelSchema as ve, EmbeddedNodeChannelSchema as _, LifecycleEventSchema as be, TimelineEntrySchema as N, OperationSchema as Te, OperationRequestSchema as Pe, UpdateDocumentSchema as $, TriggerEventSchema as q, JavaScriptCodeSchema as A, SequentialWorkflowSchema as Se, SequentialWorkflowOperationSchema as Ce, TimelineChannelSchema as ke } from "@blue-repository/core-dev";
5
- import { applyBlueNodePatch as G, BlueNodeTypeSchema as w, BlueNode as Ie, isBigNumber as x, MergingProcessors as k } from "@blue-labs/language";
6
- import { deepFreeze as Ne, isNonNullable as M, deepContains as ee } from "@blue-labs/shared-utils";
7
- import { blueIds as te, MyOSTimelineEntrySchema as ne, MyOSTimelineChannelSchema as Oe, MyOSAgentEventSchema as Be, MyOSAgentChannelSchema as Me } from "@blue-repository/myos-dev";
8
- const $e = (s, e) => ({
4
+ import { ProcessEmbeddedSchema as D, ChannelEventCheckpointSchema as ge, blueIds as m, InitializedMarkerSchema as Ee, CompositeTimelineChannelSchema as we, DocumentUpdateChannelSchema as ve, EmbeddedNodeChannelSchema as _, LifecycleEventSchema as be, TimelineEntrySchema as N, OperationSchema as Pe, OperationRequestSchema as Te, UpdateDocumentSchema as $, TriggerEventSchema as q, JavaScriptCodeSchema as A, SequentialWorkflowSchema as Se, SequentialWorkflowOperationSchema as Ce, TimelineChannelSchema as ke } from "@blue-repository/core-dev";
5
+ import { applyBlueNodePatch as G, BlueNode as Ie, isBigNumber as x, BlueNodeTypeSchema as b, ResolvedBlueNode as Ne, MergingProcessors as k } from "@blue-labs/language";
6
+ import { deepFreeze as Be, isNonNullable as M, deepContains as ee } from "@blue-labs/shared-utils";
7
+ import { blueIds as te, MyOSTimelineEntrySchema as ne, MyOSTimelineChannelSchema as Oe, MyOSAgentEventSchema as Me, MyOSAgentChannelSchema as $e } from "@blue-repository/myos-dev";
8
+ const qe = (s, e) => ({
9
9
  on: (t, n) => ({ end: () => n(null) })
10
10
  });
11
- async function qe(s) {
11
+ async function Ae(s) {
12
12
  return new Promise((e, t) => {
13
- $e().on("error", t).end();
13
+ qe().on("error", t).end();
14
14
  });
15
15
  }
16
- const b = (...s) => s.map((e, t) => {
16
+ const v = (...s) => s.map((e, t) => {
17
17
  if (typeof e != "string") return "";
18
18
  if (t === 0 && e === "/") return "/";
19
19
  const n = t > 0 ? e.replace(/^\/+/, "") : e;
@@ -25,7 +25,7 @@ class oe {
25
25
  this.getDocument = e, this.taskInfo = t, this.blue = n, this.onFlush = o;
26
26
  }
27
27
  get(e) {
28
- const t = this.getDocument(), n = b(this.taskInfo.nodePath, e);
28
+ const t = this.getDocument(), n = v(this.taskInfo.nodePath, e);
29
29
  return t.get(n);
30
30
  }
31
31
  addPatch(e) {
@@ -33,7 +33,7 @@ class oe {
33
33
  kind: "patch",
34
34
  patch: {
35
35
  ...e,
36
- path: b(this.taskInfo.nodePath, e.path)
36
+ path: v(this.taskInfo.nodePath, e.path)
37
37
  }
38
38
  });
39
39
  }
@@ -56,7 +56,7 @@ class oe {
56
56
  return this.taskInfo.nodePath;
57
57
  }
58
58
  resolvePath(e) {
59
- return b(this.taskInfo.nodePath, e);
59
+ return v(this.taskInfo.nodePath, e);
60
60
  }
61
61
  getTaskInfo() {
62
62
  return this.taskInfo;
@@ -68,7 +68,7 @@ class oe {
68
68
  loadExternalModule(e) {
69
69
  if (!/^https?:\/\//.test(e))
70
70
  throw new Error("Only http/https URLs are allowed");
71
- return qe();
71
+ return Ae();
72
72
  }
73
73
  loadBlueContent(e) {
74
74
  throw new Error("Not implemented");
@@ -97,30 +97,32 @@ class L extends Error {
97
97
  }
98
98
  }
99
99
  function I(s) {
100
- return Ne(s);
100
+ return Be(s);
101
101
  }
102
- function O(s) {
102
+ function B(s) {
103
103
  return s.clone();
104
104
  }
105
105
  function W(s, e, t = "/", n = []) {
106
106
  const o = s.getContracts() ?? {};
107
107
  for (const [r, a] of Object.entries(o))
108
- if (w.isTypeOf(
109
- a,
110
- D
111
- )) {
108
+ if (e.isTypeOf(a, D)) {
112
109
  const h = e.nodeToSchemaOutput(
113
110
  a,
114
111
  D
115
112
  ).paths ?? [];
116
113
  for (const u of h)
117
114
  n.push({
118
- absPath: b(t, u),
119
- contractPath: b(t, `contracts/${r}`)
115
+ absPath: v(t, u),
116
+ contractPath: v(t, `contracts/${r}`)
120
117
  });
121
118
  }
122
119
  for (const [r, a] of Object.entries(s.getProperties() ?? {}))
123
- W(a, e, b(t, r), n);
120
+ W(
121
+ a,
122
+ e,
123
+ v(t, r),
124
+ n
125
+ );
124
126
  return n;
125
127
  }
126
128
  function z(s, e) {
@@ -128,7 +130,7 @@ function z(s, e) {
128
130
  }
129
131
  function U(s, e) {
130
132
  if (!e.length) return s;
131
- let t = O(s);
133
+ let t = B(s);
132
134
  for (const n of e)
133
135
  try {
134
136
  t = G(t, n, !0);
@@ -140,10 +142,10 @@ function U(s, e) {
140
142
  function f(s) {
141
143
  return s != null;
142
144
  }
143
- function P(s) {
145
+ function T(s) {
144
146
  return s instanceof Ie;
145
147
  }
146
- class Ae {
148
+ class De {
147
149
  constructor(e = [], t = (n, o) => n < o ? -1 : n > o ? 1 : 0) {
148
150
  l(this, "data");
149
151
  l(this, "length");
@@ -182,14 +184,14 @@ class Ae {
182
184
  t[e] = r;
183
185
  }
184
186
  }
185
- const De = (s, e, t, n, o, r) => [
187
+ const xe = (s, e, t, n, o, r) => [
186
188
  -s,
187
189
  e,
188
190
  t,
189
191
  n,
190
192
  o,
191
193
  r
192
- ], xe = (s, e) => {
194
+ ], je = (s, e) => {
193
195
  for (let t = 0; t < s.key.length; t++) {
194
196
  const n = s.key[t], o = e.key[t];
195
197
  if (n !== o)
@@ -197,13 +199,13 @@ const De = (s, e, t, n, o, r) => [
197
199
  }
198
200
  return 0;
199
201
  };
200
- class je {
202
+ class Ve {
201
203
  /**
202
204
  * Creates a new task queue with the task key comparator
203
205
  */
204
206
  constructor() {
205
207
  l(this, "queue");
206
- this.queue = new Ae([], xe);
208
+ this.queue = new De([], je);
207
209
  }
208
210
  /**
209
211
  * Adds a task to the queue
@@ -228,7 +230,7 @@ class je {
228
230
  return this.queue.length;
229
231
  }
230
232
  }
231
- class Ve {
233
+ class We {
232
234
  /**
233
235
  * Creates a new contract registry
234
236
  *
@@ -283,7 +285,7 @@ class Ve {
283
285
  return this.processors.values();
284
286
  }
285
287
  }
286
- class We {
288
+ class Je {
287
289
  constructor() {
288
290
  l(this, "isEnabled");
289
291
  this.isEnabled = process.env.TRACE_BLUE_ENABLED === "true";
@@ -350,8 +352,8 @@ class We {
350
352
  return this.isEnabled;
351
353
  }
352
354
  }
353
- const Je = 64;
354
- class _e {
355
+ const _e = 64;
356
+ class Fe {
355
357
  /**
356
358
  * Creates a new event router
357
359
  *
@@ -362,7 +364,7 @@ class _e {
362
364
  */
363
365
  constructor(e, t, n, o, r) {
364
366
  l(this, "traceManager");
365
- this.blue = e, this.registry = t, this.queue = n, this.getNextTaskId = o, this.getNextEventSeq = r, this.traceManager = new We();
367
+ this.blue = e, this.registry = t, this.queue = n, this.getNextTaskId = o, this.getNextEventSeq = r, this.traceManager = new Je();
366
368
  }
367
369
  /**
368
370
  * Routes an event to matching contracts in the document
@@ -385,8 +387,8 @@ class _e {
385
387
  return this.route(e, h, n, o, r);
386
388
  }
387
389
  }
388
- const a = b("/", t.join("/")), c = e.get(a);
389
- P(c) && await this.traverseContracts({
390
+ const a = v("/", t.join("/")), c = e.get(a);
391
+ T(c) && await this.traverseContracts({
390
392
  doc: e,
391
393
  node: c,
392
394
  nodePath: a,
@@ -456,7 +458,7 @@ class _e {
456
458
  * Processes an adapter contract and routes any emitted events
457
459
  */
458
460
  async processAdapter(e) {
459
- var v;
461
+ var w;
460
462
  const {
461
463
  cp: t,
462
464
  event: n,
@@ -467,22 +469,22 @@ class _e {
467
469
  afterTaskId: i,
468
470
  inlineDepth: h
469
471
  } = e;
470
- if (h >= Je)
472
+ if (h >= _e)
471
473
  throw new Error("Adapter recursion limit reached");
472
474
  const u = this.traceManager.addHop(
473
475
  n,
474
- ((v = r.getTaskInfo()) == null ? void 0 : v.nodePath) ?? "",
476
+ ((w = r.getTaskInfo()) == null ? void 0 : w.nodePath) ?? "",
475
477
  a
476
478
  );
477
479
  await t.handle(u, o, r, a);
478
480
  const d = await r.flush();
479
- if (d.find((T) => T.kind === "patch"))
481
+ if (d.find((P) => P.kind === "patch"))
480
482
  throw new Error(
481
483
  `Contract "${a}" (adapter) attempted to patch the document`
482
484
  );
483
- const y = d.filter((T) => T.kind === "event");
484
- for (const T of y)
485
- await this.route(c, [], T.event, i, h + 1);
485
+ const y = d.filter((P) => P.kind === "event");
486
+ for (const P of y)
487
+ await this.route(c, [], P.event, i, h + 1);
486
488
  }
487
489
  /**
488
490
  * Schedules a handler contract for future execution
@@ -493,20 +495,20 @@ class _e {
493
495
  console.warn(`Contract node type is not defined for: ${n}`);
494
496
  return;
495
497
  }
496
- const h = this.registry.orderOf(i), u = t.get("/order"), d = x(u) ? u.toNumber() : 0, p = this.getNextTaskId() + c, y = De(
498
+ const h = this.registry.orderOf(i), u = t.get("/order"), d = x(u) ? u.toNumber() : 0, p = this.getNextTaskId() + c, y = xe(
497
499
  a,
498
500
  r.seq,
499
501
  h,
500
502
  d,
501
503
  n,
502
504
  p
503
- ), v = this.traceManager.addHop(r, o, n);
505
+ ), w = this.traceManager.addHop(r, o, n);
504
506
  this.queue.push({
505
507
  key: y,
506
508
  nodePath: o,
507
509
  contractName: n,
508
510
  contractNode: t,
509
- event: v
511
+ event: w
510
512
  });
511
513
  }
512
514
  /**
@@ -516,17 +518,17 @@ class _e {
516
518
  return e.source === "channel" && !!e.originNodePath && e.originNodePath !== t;
517
519
  }
518
520
  }
519
- const Fe = (s, e, t) => {
521
+ const Le = (s, e, t) => {
520
522
  (t instanceof re || t instanceof ae) && console.error(
521
523
  `[Blue] Failed to apply patches for contract "${s}" on event ${JSON.stringify(e)}`,
522
524
  t
523
525
  );
524
526
  };
525
527
  function R(s, e) {
526
- const t = O(s), n = (o) => {
527
- if (!P(o)) return;
528
+ const t = B(s), n = (o) => {
529
+ if (!T(o)) return;
528
530
  const r = o.getContracts();
529
- (!(r != null && r.checkpoint) || !w.isTypeOf(
531
+ (!(r != null && r.checkpoint) || !b.isTypeOf(
530
532
  r.checkpoint,
531
533
  ge
532
534
  )) && o.addContract(
@@ -543,13 +545,13 @@ function R(s, e) {
543
545
  n(t);
544
546
  for (const { absPath: o } of W(t, e)) {
545
547
  const r = t.get(o);
546
- P(r) && n(r);
548
+ T(r) && n(r);
547
549
  }
548
550
  return I(t);
549
551
  }
550
- function Le(s, e) {
551
- const t = O(s);
552
- return P(t) && (se(t, e) || t.addContract(
552
+ function ze(s, e) {
553
+ const t = B(s);
554
+ return T(t) && (se(t, e) || t.addContract(
553
555
  "initialized",
554
556
  e.jsonValueToNode({
555
557
  type: {
@@ -567,7 +569,7 @@ function se(s, e) {
567
569
  })
568
570
  );
569
571
  }
570
- class ze {
572
+ class Ue {
571
573
  constructor(e) {
572
574
  l(this, "contractType", "Channel Event Checkpoint");
573
575
  l(this, "contractBlueId", m["Channel Event Checkpoint"]);
@@ -578,15 +580,28 @@ class ze {
578
580
  var t, n;
579
581
  return e.source === "channel" && ((t = e.rootEvent) == null ? void 0 : t.payload) === e.payload && ((n = e.rootEvent) == null ? void 0 : n.source) === "external";
580
582
  }
583
+ async getEventBlueId(e, t) {
584
+ var o;
585
+ const n = (o = e.rootEvent) == null ? void 0 : o.payload;
586
+ if (!n)
587
+ throw new Error(
588
+ "Cannot calculate blueId for checkpoint: missing root event payload"
589
+ );
590
+ if (n instanceof Ne) {
591
+ const r = n.getMinimalNode();
592
+ return await t.getBlue().calculateBlueId(r);
593
+ }
594
+ return await t.getBlue().calculateBlueId(n);
595
+ }
581
596
  async handle(e, t, n) {
582
597
  var a;
583
598
  if (!e.channelName || !((a = e.rootEvent) != null && a.seq)) return;
584
- const o = await n.getBlue().calculateBlueId(e.rootEvent.payload), r = n.getNodePath().replace(/\/contracts\/checkpoint$/, "");
599
+ const o = await this.getEventBlueId(e, n), r = n.getNodePath().replace(/\/contracts\/checkpoint$/, "");
585
600
  this.cache.record(r, e, o);
586
601
  }
587
602
  }
588
603
  const H = (s, e) => s.get(e) !== void 0;
589
- class Ue {
604
+ class Re {
590
605
  constructor() {
591
606
  l(this, "firstSeen", /* @__PURE__ */ new Map());
592
607
  }
@@ -599,7 +614,7 @@ class Ue {
599
614
  const t = [];
600
615
  for (const { docBase: n, event: o, eventBlueId: r } of this.firstSeen.values()) {
601
616
  if (!o.channelName) continue;
602
- const a = b(
617
+ const a = v(
603
618
  n,
604
619
  "contracts/checkpoint/lastEvents",
605
620
  o.channelName
@@ -632,7 +647,7 @@ class S {
632
647
  return e.source !== "channel";
633
648
  }
634
649
  }
635
- class Re extends S {
650
+ class He extends S {
636
651
  constructor() {
637
652
  super(...arguments);
638
653
  l(this, "contractType", "Composite Timeline Channel");
@@ -650,7 +665,7 @@ class Re extends S {
650
665
  });
651
666
  }
652
667
  }
653
- class He extends S {
668
+ class Qe extends S {
654
669
  constructor() {
655
670
  super(...arguments);
656
671
  l(this, "contractType", "Document Update Channel");
@@ -672,7 +687,7 @@ class He extends S {
672
687
  });
673
688
  }
674
689
  }
675
- class Qe extends S {
690
+ class Ke extends S {
676
691
  constructor() {
677
692
  super(...arguments);
678
693
  l(this, "contractType", "Embedded Node Channel");
@@ -692,7 +707,7 @@ class Qe extends S {
692
707
  });
693
708
  }
694
709
  }
695
- class Ke {
710
+ class Xe {
696
711
  constructor() {
697
712
  l(this, "contractType", "Initialized Marker");
698
713
  l(this, "contractBlueId", m["Initialized Marker"]);
@@ -704,7 +719,7 @@ class Ke {
704
719
  handle() {
705
720
  }
706
721
  }
707
- class Xe extends S {
722
+ class Ye extends S {
708
723
  constructor() {
709
724
  super(...arguments);
710
725
  l(this, "contractType", "Lifecycle Event Channel");
@@ -749,7 +764,7 @@ const Q = (s, e) => {
749
764
  const t = e.getBlue();
750
765
  return t.isTypeOf(s.payload, N) || t.isTypeOf(s.payload, ne);
751
766
  };
752
- class Ye extends S {
767
+ class Ze extends S {
753
768
  constructor() {
754
769
  super(...arguments);
755
770
  l(this, "contractType", "MyOS Timeline Channel");
@@ -772,7 +787,7 @@ class Ye extends S {
772
787
  });
773
788
  }
774
789
  }
775
- class Ze extends S {
790
+ class Ge extends S {
776
791
  constructor() {
777
792
  super(...arguments);
778
793
  l(this, "contractType", "MyOS Agent Channel");
@@ -805,10 +820,10 @@ class Ze extends S {
805
820
  parseEventAndChannel(t, n, o) {
806
821
  const r = o.getBlue(), a = r.nodeToSchemaOutput(
807
822
  t.payload,
808
- Be
823
+ Me
809
824
  ), c = r.nodeToSchemaOutput(
810
825
  n,
811
- Me
826
+ $e
812
827
  );
813
828
  return { myosAgentEvent: a, myosAgentChannel: c };
814
829
  }
@@ -851,14 +866,14 @@ class Ze extends S {
851
866
  }
852
867
  }
853
868
  }
854
- class Ge {
869
+ class et {
855
870
  constructor() {
856
871
  l(this, "contractType", "Operation");
857
872
  l(this, "contractBlueId", m.Operation);
858
873
  l(this, "role", "adapter");
859
874
  }
860
875
  supports(e, t, n, o) {
861
- const a = n.getBlue().nodeToSchemaOutput(t, Te), c = this.parseEventPayload(e, n);
876
+ const a = n.getBlue().nodeToSchemaOutput(t, Pe), c = this.parseEventPayload(e, n);
862
877
  return f(c == null ? void 0 : c.operation) && c.operation === o && e.source === "channel" && e.channelName === a.channel;
863
878
  }
864
879
  async handle(e, t, n, o) {
@@ -880,13 +895,13 @@ class Ge {
880
895
  if (o.message)
881
896
  return n.nodeToSchemaOutput(
882
897
  o.message,
883
- Pe
898
+ Te
884
899
  );
885
900
  }
886
901
  return null;
887
902
  }
888
903
  }
889
- class et {
904
+ class tt {
890
905
  constructor() {
891
906
  l(this, "contractType", "Process Embedded");
892
907
  l(this, "role", "adapter");
@@ -1102,7 +1117,7 @@ class V {
1102
1117
  return {
1103
1118
  document: (c) => {
1104
1119
  const i = e.get(c);
1105
- return x(i) ? i.toNumber() : P(i) ? o.nodeToJson(i, "original") : i;
1120
+ return x(i) ? i.toNumber() : T(i) ? o.nodeToJson(i, "original") : i;
1106
1121
  },
1107
1122
  event: a,
1108
1123
  steps: n
@@ -1122,26 +1137,26 @@ function X(s, e) {
1122
1137
  };
1123
1138
  return o !== void 0 && (a.val = o), r !== void 0 && (a.from = r), e.jsonValueToNode(a);
1124
1139
  }
1125
- function tt(s) {
1140
+ function nt(s) {
1126
1141
  return s.jsonValueToNode({
1127
1142
  type: "Document Processing Initiated"
1128
1143
  });
1129
1144
  }
1130
- const nt = /^\$\{(.*)\}$/, B = (s) => typeof s != "string" ? !1 : nt.test(s), Y = (s) => {
1131
- if (!B(s))
1145
+ const ot = /^\$\{(.*)\}$/, O = (s) => typeof s != "string" ? !1 : ot.test(s), Y = (s) => {
1146
+ if (!O(s))
1132
1147
  throw new Error(`Invalid expression: ${s}`);
1133
1148
  return s.slice(2, -1);
1134
1149
  };
1135
- class ot {
1150
+ class rt {
1136
1151
  constructor() {
1137
1152
  l(this, "stepType", "Update Document");
1138
1153
  }
1139
1154
  supports(e) {
1140
- return w.isTypeOf(e, $);
1155
+ return b.isTypeOf(e, $);
1141
1156
  }
1142
1157
  async execute(e, t, n, o, r) {
1143
1158
  const a = n.getBlue();
1144
- if (!w.isTypeOf(e, $)) return;
1159
+ if (!b.isTypeOf(e, $)) return;
1145
1160
  const c = await this.evaluateChangeset(
1146
1161
  e.get("/changeset"),
1147
1162
  n,
@@ -1191,7 +1206,7 @@ class ot {
1191
1206
  }
1192
1207
  async evaluateChangeset(e, t, n, o) {
1193
1208
  const r = t.getBlue();
1194
- if (B(e)) {
1209
+ if (O(e)) {
1195
1210
  const a = Y(e), c = await j.evaluate({
1196
1211
  code: a,
1197
1212
  ctx: t,
@@ -1203,13 +1218,13 @@ class ot {
1203
1218
  });
1204
1219
  return r.jsonValueToNode(c ?? null);
1205
1220
  }
1206
- if (P(e))
1221
+ if (T(e))
1207
1222
  return e;
1208
1223
  throw new Error("Invalid changeset: expected a string or document node");
1209
1224
  }
1210
1225
  async evaluateChangeValue(e, t, n, o) {
1211
1226
  const r = e.getValue(), a = t.getBlue();
1212
- if (B(r)) {
1227
+ if (O(r)) {
1213
1228
  const c = Y(r), i = await j.evaluate({
1214
1229
  code: c,
1215
1230
  ctx: t,
@@ -1224,31 +1239,31 @@ class ot {
1224
1239
  return e;
1225
1240
  }
1226
1241
  }
1227
- class rt {
1242
+ class at {
1228
1243
  constructor() {
1229
1244
  l(this, "stepType", "Trigger Event");
1230
1245
  }
1231
1246
  supports(e) {
1232
- return w.isTypeOf(e, q);
1247
+ return b.isTypeOf(e, q);
1233
1248
  }
1234
1249
  async execute(e, t, n) {
1235
1250
  const o = n.getBlue();
1236
- if (!w.isTypeOf(e, q)) return;
1251
+ if (!b.isTypeOf(e, q)) return;
1237
1252
  const r = o.nodeToSchemaOutput(e, q);
1238
1253
  r.event && n.emitEvent({
1239
1254
  payload: r.event
1240
1255
  });
1241
1256
  }
1242
1257
  }
1243
- class at {
1258
+ class st {
1244
1259
  constructor() {
1245
1260
  l(this, "stepType", "JavaScript Code");
1246
1261
  }
1247
1262
  supports(e) {
1248
- return w.isTypeOf(e, A);
1263
+ return b.isTypeOf(e, A);
1249
1264
  }
1250
1265
  async execute(e, t, n, o, r) {
1251
- if (!w.isTypeOf(e, A)) return;
1266
+ if (!b.isTypeOf(e, A)) return;
1252
1267
  const a = n.getBlue(), c = a.nodeToSchemaOutput(
1253
1268
  e,
1254
1269
  A
@@ -1275,13 +1290,13 @@ class at {
1275
1290
  return i;
1276
1291
  }
1277
1292
  }
1278
- const st = [
1279
- new ot(),
1293
+ const ct = [
1280
1294
  new rt(),
1281
- new at()
1295
+ new at(),
1296
+ new st()
1282
1297
  ];
1283
1298
  class ie {
1284
- constructor(e = st) {
1299
+ constructor(e = ct) {
1285
1300
  l(this, "contractType", "Sequential Workflow");
1286
1301
  l(this, "contractBlueId", m["Sequential Workflow"]);
1287
1302
  l(this, "role", "handler");
@@ -1321,7 +1336,7 @@ class ie {
1321
1336
  }
1322
1337
  }
1323
1338
  }
1324
- class ct {
1339
+ class it {
1325
1340
  constructor(e) {
1326
1341
  l(this, "contractType", "Sequential Workflow Operation");
1327
1342
  l(this, "contractBlueId", m["Sequential Workflow Operation"]);
@@ -1347,8 +1362,8 @@ class ct {
1347
1362
  }
1348
1363
  }
1349
1364
  }
1350
- const Z = (s) => w.isTypeOf(s.payload, N);
1351
- class it extends S {
1365
+ const Z = (s) => b.isTypeOf(s.payload, N);
1366
+ class lt extends S {
1352
1367
  constructor() {
1353
1368
  super(...arguments);
1354
1369
  l(this, "contractType", "Timeline Channel");
@@ -1371,44 +1386,44 @@ class it extends S {
1371
1386
  });
1372
1387
  }
1373
1388
  }
1374
- const lt = [
1375
- new et(),
1389
+ const ut = [
1390
+ new tt(),
1376
1391
  // channels
1392
+ new Ke(),
1377
1393
  new Qe(),
1378
- new He(),
1379
- new it(),
1380
- new Ye(),
1394
+ new lt(),
1381
1395
  new Ze(),
1382
- new Re(),
1383
- new Xe(),
1384
1396
  new Ge(),
1397
+ new He(),
1398
+ new Ye(),
1399
+ new et(),
1385
1400
  // sequential workflows
1386
1401
  new ie(),
1387
- new ct(),
1402
+ new it(),
1388
1403
  // markers
1389
- new Ke()
1404
+ new Xe()
1390
1405
  ];
1391
- class yt {
1406
+ class gt {
1392
1407
  /**
1393
1408
  * Creates a new document processor
1394
1409
  *
1395
1410
  * @param processors - Initial list of processors to register
1396
1411
  */
1397
- constructor(e, t = lt) {
1412
+ constructor(e, t = ut) {
1398
1413
  l(this, "taskCounter", 0);
1399
1414
  l(this, "eventCounter", 0);
1400
1415
  l(this, "registry");
1401
1416
  l(this, "queue");
1402
1417
  l(this, "router");
1403
- l(this, "checkpointCache", new Ue());
1404
- this.blue = e, this.registry = new Ve(t), this.queue = new je(), this.router = new _e(
1418
+ l(this, "checkpointCache", new Re());
1419
+ this.blue = e, this.registry = new We(t), this.queue = new Ve(), this.router = new Fe(
1405
1420
  this.blue,
1406
1421
  this.registry,
1407
1422
  this.queue,
1408
1423
  () => ++this.taskCounter,
1409
1424
  () => ++this.eventCounter
1410
1425
  ), this.register(
1411
- new ze(this.checkpointCache),
1426
+ new Ue(this.checkpointCache),
1412
1427
  9999
1413
1428
  );
1414
1429
  }
@@ -1430,11 +1445,11 @@ class yt {
1430
1445
  async initialize(e) {
1431
1446
  let t = R(I(e), this.blue);
1432
1447
  const n = {
1433
- payload: tt(this.blue)
1448
+ payload: nt(this.blue)
1434
1449
  }, o = [n.payload];
1435
1450
  await this.router.route(t, [], n, 0);
1436
1451
  const r = await this.drainQueue(t);
1437
- return t = r.state, o.push(...r.emitted), t = Le(t, this.blue), { state: O(t), emitted: o };
1452
+ return t = r.state, o.push(...r.emitted), t = ze(t, this.blue), { state: B(t), emitted: o };
1438
1453
  }
1439
1454
  /**
1440
1455
  * Processes a batch of events against the document
@@ -1459,7 +1474,7 @@ class yt {
1459
1474
  } finally {
1460
1475
  this.checkpointCache.clear();
1461
1476
  }
1462
- return { state: O(n), emitted: o };
1477
+ return { state: B(n), emitted: o };
1463
1478
  }
1464
1479
  /**
1465
1480
  * Drains the task queue and applies all actions
@@ -1473,22 +1488,25 @@ class yt {
1473
1488
  if (++r > o)
1474
1489
  throw new Error("Possible cycle – too many iterations");
1475
1490
  const c = this.queue.pop(), { nodePath: i, contractName: h, contractNode: u, event: d } = c, p = t.get(i);
1476
- if (!P(p) || !((a = p.getContracts()) != null && a[h]) || !u.getType()) continue;
1491
+ if (!T(p) || !((a = p.getContracts()) != null && a[h]) || !u.getType()) continue;
1477
1492
  const y = this.registry.get(u.getType());
1478
1493
  if (!y) {
1479
1494
  console.warn(`No processor registered for contract: ${h}`);
1480
1495
  continue;
1481
1496
  }
1482
- const v = new oe(
1497
+ const w = new oe(
1483
1498
  () => t,
1484
1499
  c,
1485
1500
  this.blue,
1486
- async (T) => {
1487
- for (const g of T)
1501
+ async (P) => {
1502
+ for (const g of P)
1488
1503
  if (g.kind === "patch") {
1489
- const ue = W(t, this.blue);
1504
+ const ue = W(
1505
+ t,
1506
+ this.blue
1507
+ );
1490
1508
  for (const C of ue) {
1491
- const he = g.patch.op === "move" || g.patch.op === "copy" ? [g.patch.from, g.patch.path] : [g.patch.path], J = v.getNodePath(), de = he.some(
1509
+ const he = g.patch.op === "move" || g.patch.op === "copy" ? [g.patch.from, g.patch.path] : [g.patch.path], J = w.getNodePath(), de = he.some(
1492
1510
  (fe) => z(fe, C.absPath)
1493
1511
  ), pe = z(
1494
1512
  J,
@@ -1504,12 +1522,12 @@ class yt {
1504
1522
  try {
1505
1523
  t = U(t, [g.patch]);
1506
1524
  } catch (C) {
1507
- throw Fe(h, d, C), C;
1525
+ throw Le(h, d, C), C;
1508
1526
  }
1509
1527
  } else g.kind === "event" && (n.push(g.event.payload), await this.router.route(t, [], g.event, c.key[5]));
1510
1528
  }
1511
1529
  );
1512
- await y.handle(d, u, v, h), await v.flush();
1530
+ await y.handle(d, u, w, h), await w.flush();
1513
1531
  }
1514
1532
  return { state: t, emitted: n };
1515
1533
  }
@@ -1517,7 +1535,7 @@ class yt {
1517
1535
  class le {
1518
1536
  process(e, t) {
1519
1537
  const n = t.getValue();
1520
- if (B(n)) {
1538
+ if (O(n)) {
1521
1539
  const o = t.clone();
1522
1540
  return o.setValue(n), o.setProperties(void 0), o.setItems(void 0), o.setType(void 0), o;
1523
1541
  }
@@ -1528,18 +1546,18 @@ class le {
1528
1546
  */
1529
1547
  postProcess(e, t) {
1530
1548
  const n = t.getValue();
1531
- if (B(n) && e.getValue() !== n && n !== void 0) {
1549
+ if (O(n) && e.getValue() !== n && n !== void 0) {
1532
1550
  const o = e.clone();
1533
1551
  return o.setValue(n), o;
1534
1552
  }
1535
1553
  return e;
1536
1554
  }
1537
1555
  }
1538
- const gt = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
1556
+ const Et = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
1539
1557
  __proto__: null,
1540
1558
  ExpressionPreserver: le
1541
1559
  }, Symbol.toStringTag, { value: "Module" }));
1542
- function Et() {
1560
+ function wt() {
1543
1561
  return new k.SequentialMergingProcessor([
1544
1562
  new k.ValuePropagator(),
1545
1563
  new le(),
@@ -1550,24 +1568,25 @@ function Et() {
1550
1568
  ]);
1551
1569
  }
1552
1570
  export {
1553
- yt as BlueDocumentProcessor,
1554
- ze as ChannelEventCheckpointProcessor,
1571
+ gt as BlueDocumentProcessor,
1572
+ Ue as ChannelEventCheckpointProcessor,
1555
1573
  L as CodeBlockEvaluationError,
1556
- Re as CompositeTimelineChannelProcessor,
1557
- He as DocumentUpdateChannelProcessor,
1574
+ He as CompositeTimelineChannelProcessor,
1575
+ Qe as DocumentUpdateChannelProcessor,
1558
1576
  ae as EmbeddedDocumentModificationError,
1559
- Qe as EmbeddedNodeChannelProcessor,
1577
+ Ke as EmbeddedNodeChannelProcessor,
1560
1578
  F as ExpressionEvaluationError,
1561
- Ke as InitializedMarkerProcessor,
1562
- Xe as LifecycleEventChannelProcessor,
1563
- gt as MergingProcessors,
1564
- Ze as MyOSAgentChannelProcessor,
1565
- Ye as MyOSTimelineChannelProcessor,
1566
- Ge as OperationProcessor,
1579
+ Xe as InitializedMarkerProcessor,
1580
+ Ye as LifecycleEventChannelProcessor,
1581
+ Et as MergingProcessors,
1582
+ Ge as MyOSAgentChannelProcessor,
1583
+ Ze as MyOSTimelineChannelProcessor,
1584
+ et as OperationProcessor,
1567
1585
  re as PatchApplicationError,
1568
- et as ProcessEmbeddedProcessor,
1569
- ct as SequentialWorkflowOperationProcessor,
1586
+ tt as ProcessEmbeddedProcessor,
1587
+ it as SequentialWorkflowOperationProcessor,
1570
1588
  ie as SequentialWorkflowProcessor,
1571
- it as TimelineChannelProcessor,
1572
- Et as createDefaultMergingProcessor
1589
+ lt as TimelineChannelProcessor,
1590
+ W as collectEmbeddedPathSpecs,
1591
+ wt as createDefaultMergingProcessor
1573
1592
  };
@@ -7,6 +7,7 @@ export declare class ChannelEventCheckpointProcessor implements ContractProcesso
7
7
  readonly role = "handler";
8
8
  constructor(cache: CheckpointCache);
9
9
  supports(evt: EventNode): boolean;
10
+ private getEventBlueId;
10
11
  handle(event: EventNode, node: DocumentNode, ctx: ProcessingContext): Promise<void>;
11
12
  }
12
13
  //# sourceMappingURL=ChannelEventCheckpointProcessor.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ChannelEventCheckpointProcessor.d.ts","sourceRoot":"","sources":["../../src/processors/ChannelEventCheckpointProcessor.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,iBAAiB,EACjB,YAAY,EACZ,SAAS,EACT,iBAAiB,EAClB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAM3D,qBAAa,+BAAgC,YAAW,iBAAiB;IAK3D,OAAO,CAAC,QAAQ,CAAC,KAAK;IAJlC,QAAQ,CAAC,YAAY,8BAA8B;IACnD,QAAQ,CAAC,cAAc,iDAAuC;IAC9D,QAAQ,CAAC,IAAI,aAAa;gBAEG,KAAK,EAAE,eAAe;IAEnD,QAAQ,CAAC,GAAG,EAAE,SAAS,GAAG,OAAO;IAQ3B,MAAM,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,EAAE,iBAAiB;CAS1E"}
1
+ {"version":3,"file":"ChannelEventCheckpointProcessor.d.ts","sourceRoot":"","sources":["../../src/processors/ChannelEventCheckpointProcessor.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,iBAAiB,EACjB,YAAY,EACZ,SAAS,EACT,iBAAiB,EAClB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAM3D,qBAAa,+BAAgC,YAAW,iBAAiB;IAK3D,OAAO,CAAC,QAAQ,CAAC,KAAK;IAJlC,QAAQ,CAAC,YAAY,8BAA8B;IACnD,QAAQ,CAAC,cAAc,iDAAuC;IAC9D,QAAQ,CAAC,IAAI,aAAa;gBAEG,KAAK,EAAE,eAAe;IAEnD,QAAQ,CAAC,GAAG,EAAE,SAAS,GAAG,OAAO;YAQnB,cAAc;IAgBtB,MAAM,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,EAAE,iBAAiB;CAQ1E"}
package/dist/types.d.ts CHANGED
@@ -1,7 +1,7 @@
1
- import { Blue, BlueNode, BlueNodePatch } from '@blue-labs/language';
1
+ import { Blue, BlueNode, BlueNodePatch, ResolvedBlueNode } from '@blue-labs/language';
2
2
  export type BlueId = string;
3
3
  export type DocumentNode = BlueNode;
4
- export type EventNodePayload = BlueNode;
4
+ export type EventNodePayload = BlueNode | ResolvedBlueNode;
5
5
  export interface EventNode<Payload = EventNodePayload> {
6
6
  payload: Payload;
7
7
  source?: 'channel' | 'external';
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAMpE,MAAM,MAAM,MAAM,GAAG,MAAM,CAAC;AAE5B,MAAM,MAAM,YAAY,GAAG,QAAQ,CAAC;AAEpC,MAAM,MAAM,gBAAgB,GAAG,QAAQ,CAAC;AAExC,MAAM,WAAW,SAAS,CAAC,OAAO,GAAG,gBAAgB;IACnD,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,SAAS,GAAG,UAAU,CAAC;IAChC,iEAAiE;IACjE,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,kDAAkD;IAClD,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,yDAAyD;IACzD,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,yCAAyC;IACzC,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb,6DAA6D;IAC7D,SAAS,CAAC,EAAE,SAAS,CAAC;IAEtB,mEAAmE;IACnE,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,gBAAgB;IAC/B,2BAA2B;IAC3B,KAAK,EAAE,YAAY,CAAC;IAEpB,yBAAyB;IACzB,OAAO,EAAE,gBAAgB,EAAE,CAAC;CAC7B;AAED,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,WAAW,GAAG,SAAS,GAAG,QAAQ,CAAC;AAK1E,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAC5B,QAAQ,CACN,GAAG,EAAE,SAAS,EACd,YAAY,EAAE,YAAY,EAC1B,GAAG,EAAE,iBAAiB,EACtB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC;IACX,MAAM,CACJ,GAAG,EAAE,SAAS,EACd,YAAY,EAAE,YAAY,EAC1B,GAAG,EAAE,iBAAiB,EACtB,YAAY,EAAE,MAAM,GACnB,IAAI,CAAC;CACT;AAED,MAAM,MAAM,gBAAgB,GACxB;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,aAAa,CAAA;CAAE,GACvC;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,SAAS,CAAA;CAAE,CAAC;AAExC,MAAM,MAAM,iBAAiB,GAAG,UAAU,CAAC,OAAO,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;AAK1E,MAAM,MAAM,iBAAiB,GAAG;IAC9B,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,CAAC;IACrC,QAAQ,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI,CAAC;IACrC,WAAW,IAAI,MAAM,CAAC;IACtB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IAElC;;;OAGG;IACH,SAAS,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,CAAC;IAElC;;OAEG;IACH,KAAK,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC;IAErC;;;OAGG;IACH,OAAO,IAAI,IAAI,CAAC;IAIhB;;;OAGG;IACH,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAEjD;;;OAGG;IACH,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CAClD,CAAC;AAEF,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,YAAY,CAAC;IAC3B,KAAK,EAAE,SAAS,CAAC;CAClB;AAED,MAAM,WAAW,IAAK,SAAQ,WAAW;IACvC,GAAG,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;CACvD"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
@@ -12,7 +12,14 @@ export declare function freeze(doc: DocumentNode): DocumentNode;
12
12
  * Creates a mutable copy of a document for processing
13
13
  */
14
14
  export declare function mutable(doc: DocumentNode): DocumentNode;
15
- export declare function collectEmbeddedPaths(doc: DocumentNode, blue: Blue, base?: string, out?: EmbeddedSpec[]): EmbeddedSpec[];
15
+ /**
16
+ * Collects all paths to embedded documents
17
+ * @param doc - The document to collect embedded paths from
18
+ * @param blue - The Blue instance
19
+ * @param base - The base path
20
+ * @param out - The output array
21
+ */
22
+ export declare function collectEmbeddedPathSpecs(doc: DocumentNode, blue: Blue, base?: string, out?: EmbeddedSpec[]): EmbeddedSpec[];
16
23
  export declare function isInside(target: string, root: string): boolean;
17
24
  /**
18
25
  * Apply a collection of patches to a document
@@ -1 +1 @@
1
- {"version":3,"file":"document.d.ts","sourceRoot":"","sources":["../../src/utils/document.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAIxC,OAAO,EAEL,KAAK,aAAa,EAElB,IAAI,EACL,MAAM,qBAAqB,CAAC;AAM7B,KAAK,YAAY,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,CAAC;AAE9D;;GAEG;AACH,wBAAgB,MAAM,CAAC,GAAG,EAAE,YAAY,GAAG,YAAY,CAEtD;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,GAAG,EAAE,YAAY,GAAG,YAAY,CAEvD;AAED,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,YAAY,EACjB,IAAI,EAAE,IAAI,EACV,IAAI,SAAM,EACV,GAAG,GAAE,YAAY,EAAO,GACvB,YAAY,EAAE,CA4BhB;AAKD,wBAAgB,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAI9D;AAED;;GAEG;AACH,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,YAAY,EACtB,OAAO,EAAE,aAAa,EAAE,GACvB,YAAY,CAcd"}
1
+ {"version":3,"file":"document.d.ts","sourceRoot":"","sources":["../../src/utils/document.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAIxC,OAAO,EAEL,KAAK,aAAa,EAClB,IAAI,EACL,MAAM,qBAAqB,CAAC;AAM7B,KAAK,YAAY,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,CAAC;AAE9D;;GAEG;AACH,wBAAgB,MAAM,CAAC,GAAG,EAAE,YAAY,GAAG,YAAY,CAEtD;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,GAAG,EAAE,YAAY,GAAG,YAAY,CAEvD;AAED;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CACtC,GAAG,EAAE,YAAY,EACjB,IAAI,EAAE,IAAI,EACV,IAAI,SAAM,EACV,GAAG,GAAE,YAAY,EAAO,GACvB,YAAY,EAAE,CA8BhB;AAKD,wBAAgB,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAI9D;AAED;;GAEG;AACH,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,YAAY,EACtB,OAAO,EAAE,aAAa,EAAE,GACvB,YAAY,CAcd"}
package/package.json CHANGED
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "name": "@blue-labs/document-processor",
3
- "version": "1.28.0",
3
+ "version": "1.30.0",
4
4
  "dependencies": {
5
- "@blue-labs/language": "1.28.0",
6
- "@blue-labs/shared-utils": "1.28.0",
5
+ "@blue-labs/language": "1.30.0",
6
+ "@blue-labs/shared-utils": "1.30.0",
7
7
  "isolated-vm": "^5.0.4"
8
8
  },
9
9
  "main": "./dist/index.js",