yaml-flow 8.5.3 → 8.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/browser/asset-integrity.json +3 -3
- package/examples/board/demo-shell-with-server.html +2 -2
- package/examples/board/doc.html +2 -2
- package/examples/board/server/board-server.js +266 -5
- package/examples/board/server/board-worker/task-executor.js +166 -51
- package/examples/board/server/chat-flow/copilot-chat/assistant.js +25 -12
- package/examples/board/server/chat-flow/copilot-chat/probe.js +7 -0
- package/examples/board/server/chat-flow/copilot-chat/shared.js +97 -0
- package/examples/board/server/chat-flow/flow-steps.json +109 -51
- package/examples/board/server-config.json +1 -0
- package/examples/board/test/server-http-test.js +870 -67
- package/examples/board-local/demo-shell-localstorage.html +3 -3
- package/lib/{artifacts-store-lib-D-k-E8Vy.d.ts → artifacts-store-lib-C1rtrkxm.d.ts} +1 -1
- package/lib/{artifacts-store-lib-CVgtQrNZ.d.cts → artifacts-store-lib-CLOtsiav.d.cts} +1 -1
- package/lib/artifacts-store-public.cjs +1 -1
- package/lib/artifacts-store-public.d.cts +3 -3
- package/lib/artifacts-store-public.d.ts +3 -3
- package/lib/artifacts-store-public.js +1 -1
- package/lib/batch/index.cjs +1 -1
- package/lib/batch/index.js +1 -1
- package/lib/board-live-cards-mcp.cjs +1 -1
- package/lib/board-live-cards-mcp.d.cts +35 -15
- package/lib/board-live-cards-mcp.d.ts +35 -15
- package/lib/board-live-cards-mcp.js +1 -1
- package/lib/board-live-cards-node.cjs +8 -16
- package/lib/board-live-cards-node.d.cts +32 -12
- package/lib/board-live-cards-node.d.ts +32 -12
- package/lib/board-live-cards-node.js +8 -16
- package/lib/{board-live-cards-public-BGS22cMb.d.ts → board-live-cards-public-CBVjm327.d.ts} +59 -24
- package/lib/{board-live-cards-public-B13InXhC.d.cts → board-live-cards-public-CPJy-aGW.d.cts} +59 -24
- package/lib/board-live-cards-public.cjs +1 -2
- package/lib/board-live-cards-public.d.cts +2 -2
- package/lib/board-live-cards-public.d.ts +2 -2
- package/lib/board-live-cards-public.js +1 -2
- package/lib/board-live-cards-server-runtime.cjs +1 -7
- package/lib/board-live-cards-server-runtime.d.cts +5 -5
- package/lib/board-live-cards-server-runtime.d.ts +5 -5
- package/lib/board-live-cards-server-runtime.js +1 -7
- package/lib/board-livegraph-runtime/index.cjs +1 -2
- package/lib/board-livegraph-runtime/index.js +1 -2
- package/lib/board-worker-adapter.cjs +21 -7
- package/lib/board-worker-adapter.d.cts +17 -2
- package/lib/board-worker-adapter.d.ts +17 -2
- package/lib/board-worker-adapter.js +21 -7
- package/lib/card-compute/index.cjs +1 -9
- package/lib/card-compute/index.js +1 -9
- package/lib/card-store-public.cjs +1 -1
- package/lib/card-store-public.d.cts +2 -2
- package/lib/card-store-public.d.ts +2 -2
- package/lib/card-store-public.js +1 -1
- package/lib/card-validation.cjs +1 -9
- package/lib/card-validation.js +1 -9
- package/lib/{chat-storage-lib-CJn7a6OH.d.ts → chat-storage-lib-Bce-xx6l.d.ts} +1 -1
- package/lib/{chat-storage-lib-0imhRX3l.d.cts → chat-storage-lib-CKylihjm.d.cts} +1 -1
- package/lib/chat-store-public.cjs +1 -1
- package/lib/chat-store-public.d.cts +3 -3
- package/lib/chat-store-public.d.ts +3 -3
- package/lib/chat-store-public.js +1 -1
- package/lib/chunk-2MZUYY65.cjs +2 -0
- package/lib/chunk-5DB54ZX2.cjs +2 -0
- package/lib/chunk-5EA2ESS4.cjs +16 -0
- package/lib/chunk-6APH25VI.js +2 -0
- package/lib/chunk-76ON3V7R.js +2 -0
- package/lib/chunk-7BKNHFNH.js +2 -0
- package/lib/chunk-CWREBRXS.js +3 -0
- package/lib/chunk-DAXACY63.js +2 -0
- package/lib/chunk-FW4363Y4.js +2 -0
- package/lib/chunk-FZ2SBU5M.js +3 -0
- package/lib/chunk-G4XXRHL2.cjs +3 -0
- package/lib/chunk-GNFE24S7.cjs +2 -0
- package/lib/chunk-GYQXDNNI.cjs +2 -0
- package/lib/chunk-H5KD3JPY.cjs +2 -0
- package/lib/chunk-HLJH7LGW.js +16 -0
- package/lib/chunk-I4WH5U5D.cjs +2 -0
- package/lib/chunk-IXZG74EW.cjs +2 -0
- package/lib/chunk-JAL25FGA.cjs +2 -0
- package/lib/chunk-JM5EKT57.js +2 -0
- package/lib/chunk-JMDHDY6M.js +2 -0
- package/lib/chunk-KBELAKIY.js +2 -0
- package/lib/chunk-KHJABJ45.cjs +3 -0
- package/lib/chunk-KLRUISRY.cjs +2 -0
- package/lib/chunk-KNFFDVLD.cjs +2 -0
- package/lib/chunk-LBMEVV4U.js +2 -0
- package/lib/chunk-LDAP75GN.js +2 -0
- package/lib/chunk-LODXIALE.cjs +2 -0
- package/lib/chunk-LVNQCE5X.cjs +3 -0
- package/lib/chunk-M7EQRS6W.js +3 -0
- package/lib/chunk-MNEOJWPS.js +10 -0
- package/lib/chunk-NJJ7WEDT.cjs +2 -0
- package/lib/chunk-NMZ6XNLB.cjs +3 -0
- package/lib/chunk-OPNGCSXJ.js +2 -0
- package/lib/chunk-P64UKI3L.cjs +8 -0
- package/lib/chunk-P7ZCDICS.cjs +2 -0
- package/lib/chunk-Q6H7NINN.cjs +5 -0
- package/lib/chunk-Q6VSL327.js +8 -0
- package/lib/chunk-QWBNDVUA.js +5 -0
- package/lib/chunk-S6DRP2HX.cjs +2 -0
- package/lib/chunk-UJ7ZTV4J.cjs +10 -0
- package/lib/chunk-UVE65IPR.cjs +3 -0
- package/lib/chunk-VCCTAUIG.js +2 -0
- package/lib/chunk-VGT3TRQG.js +3 -0
- package/lib/chunk-VLBB3D6B.js +3 -0
- package/lib/chunk-WDPOGXTY.js +2 -0
- package/lib/chunk-X3LC4LII.js +2 -0
- package/lib/chunk-YGKDQLYP.js +2 -0
- package/lib/chunk-YMEIPKLW.cjs +2 -0
- package/lib/config/index.cjs +1 -1
- package/lib/config/index.js +1 -1
- package/lib/continuous-event-graph/index.cjs +1 -2
- package/lib/continuous-event-graph/index.js +1 -2
- package/lib/event-graph/index.cjs +1 -22
- package/lib/event-graph/index.js +1 -22
- package/lib/execution-refs.cjs +1 -2
- package/lib/execution-refs.d.cts +3 -2
- package/lib/execution-refs.d.ts +3 -2
- package/lib/execution-refs.js +1 -2
- package/lib/index.cjs +2 -24
- package/lib/index.d.cts +1 -1
- package/lib/index.d.ts +1 -1
- package/lib/index.js +2 -24
- package/lib/server-runtime/index.cjs +1 -7
- package/lib/server-runtime/index.d.cts +6 -6
- package/lib/server-runtime/index.d.ts +6 -6
- package/lib/server-runtime/index.js +1 -7
- package/lib/step-machine/index.cjs +1 -11
- package/lib/step-machine/index.js +1 -11
- package/lib/step-machine-public/index.cjs +1 -4
- package/lib/step-machine-public/index.d.cts +1 -1
- package/lib/step-machine-public/index.d.ts +1 -1
- package/lib/step-machine-public/index.js +1 -4
- package/lib/{storage-interface-B2WD9D5n.d.cts → storage-interface-Ct-C4tlz.d.cts} +28 -1
- package/lib/{storage-interface-B2WD9D5n.d.ts → storage-interface-Ct-C4tlz.d.ts} +28 -1
- package/lib/stores/index.cjs +1 -2
- package/lib/stores/index.d.cts +1 -1
- package/lib/stores/index.d.ts +1 -1
- package/lib/stores/index.js +1 -2
- package/lib/stores/kv.cjs +1 -2
- package/lib/stores/kv.d.cts +1 -1
- package/lib/stores/kv.d.ts +1 -1
- package/lib/stores/kv.js +1 -2
- package/lib/stores/memory.cjs +1 -1
- package/lib/stores/memory.js +1 -1
- package/lib/{types-30R357js.d.ts → types-BuK2UMxk.d.ts} +4 -4
- package/lib/{types-CIgsh56O.d.cts → types-DRl0Hy_p.d.cts} +4 -4
- package/package.json +2 -16
- package/cli/board-live-cards-lib-COi4bSpk.d.ts +0 -322
- package/cli/browser-api/board-live-cards-browser-adapter.d.ts +0 -36
- package/cli/browser-api/board-live-cards-browser-adapter.js +0 -4
- package/cli/browser-api/card-store-browser-api.d.ts +0 -25
- package/cli/browser-api/card-store-browser-api.js +0 -2
- package/cli/browser-api/jsonata-sync.cjs +0 -7623
- package/cli/bundled/artifacts-store-cli.mjs +0 -12
- package/cli/bundled/batch-runner-cli.mjs +0 -3
- package/cli/bundled/board-live-cards-cli.mjs +0 -29
- package/cli/bundled/card-store-cli.mjs +0 -154
- package/cli/bundled/chat-store-cli.mjs +0 -16
- package/cli/bundled/jsonata-sync.cjs +0 -7623
- package/cli/bundled/step-machine-cli.mjs +0 -150
- package/cli/execution-interface-BCIhu1gO.d.ts +0 -442
- package/cli/types-H3EMBPY2.d.ts +0 -398
- package/examples/board/server/README-mcp-api.md +0 -690
- package/examples/board/test/server-http-mcp-test.js +0 -1280
- package/lib/board-livegraph-runtime/jsonata-sync.cjs +0 -7623
- package/lib/card-compute/jsonata-sync.cjs +0 -7623
- package/lib/continuous-event-graph/jsonata-sync.cjs +0 -7623
- package/lib/server-runtime/jsonata-sync.cjs +0 -7623
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
function i(s){return btoa(s).replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"")}function a(s){return atob(s.replace(/-/g,"+").replace(/_/g,"/"))}var o=class{constructor(t){this.kv=t;}kv;stateKey(t){return `state_${i(t)}`}dataPrefix(t){return `data_${i(t)}_`}dataKey(t,e){return `${this.dataPrefix(t)}${i(e)}`}async saveRunState(t,e){this.kv.write(this.stateKey(t),e);}async loadRunState(t){let e=this.kv.read(this.stateKey(t));return e!=null&&typeof e=="object"?e:null}async deleteRunState(t){this.kv.delete(this.stateKey(t));for(let e of this.kv.listKeys(this.dataPrefix(t)))this.kv.delete(e);}async setData(t,e,r){this.kv.write(this.dataKey(t,e),r);}async getData(t,e){return this.kv.read(this.dataKey(t,e))}async getAllData(t){let e=this.dataPrefix(t),r={};for(let n of this.kv.listKeys(e))r[a(n.slice(e.length))]=this.kv.read(n);return r}async clearData(t){for(let e of this.kv.listKeys(this.dataPrefix(t)))this.kv.delete(e);}async listRuns(){return this.kv.listKeys("state_").map(t=>a(t.slice(6)))}};
|
|
2
|
+
export{o as a};//# sourceMappingURL=chunk-FZ2SBU5M.js.map
|
|
3
|
+
//# sourceMappingURL=chunk-FZ2SBU5M.js.map
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
'use strict';var chunkLODXIALE_cjs=require('./chunk-LODXIALE.cjs');function W(t,e){let n=e??`live-${Date.now()}`,s={};for(let d of Object.keys(t.tasks))s[d]=H();let a={status:"running",tasks:s,availableOutputs:[],stuckDetection:{is_stuck:false,stuck_description:null,outputs_unresolvable:[],tasks_blocked:[]},lastUpdated:new Date().toISOString(),executionId:n,executionConfig:{executionMode:t.settings.execution_mode??"eligibility-mode",conflictStrategy:t.settings.conflict_strategy??"alphabetical",completionStrategy:t.settings.completion}};return {config:t,state:a}}function X(t,e){let{config:n,state:s}=t;if("executionId"in e&&e.executionId&&e.executionId!==s.executionId)return t;switch(e.type){case "task-started":return {config:n,state:chunkLODXIALE_cjs.B(s,e.taskName,n)};case "task-completed":return {config:n,state:chunkLODXIALE_cjs.C(s,n,e.taskName,e.result,e.dataHash,e.data)};case "task-failed":return {config:n,state:chunkLODXIALE_cjs.D(s,n,e.taskName,e.error)};case "task-progress":return {config:n,state:chunkLODXIALE_cjs.E(s,e.taskName,e.message,e.progress)};case "task-restart":return {config:n,state:chunkLODXIALE_cjs.F(s,e.taskName)};case "inject-tokens":return {config:n,state:{...s,availableOutputs:[...new Set([...s.availableOutputs,...e.tokens])],lastUpdated:new Date().toISOString()}};case "agent-action":return {config:n,state:it(s,e.action)};case "task-upsert":return et(t,e.taskName,e.taskConfig);case "task-removal":return nt(t,e.taskName);case "node-requires-add":return st(t,e.nodeName,e.tokens);case "node-requires-remove":return rt(t,e.nodeName,e.tokens);case "node-provides-add":return at(t,e.nodeName,e.tokens);case "node-provides-remove":return ot(t,e.nodeName,e.tokens);default:return t}}function Y(t,e){return e.reduce((n,s)=>X(n,s),t)}function et(t,e,n){let s=!!t.config.tasks[e];return {config:{...t.config,tasks:{...t.config.tasks,[e]:n}},state:{...t.state,tasks:{...t.state.tasks,[e]:s?t.state.tasks[e]:H()},lastUpdated:new Date().toISOString()}}}function nt(t,e){if(!t.config.tasks[e])return t;let{[e]:n,...s}=t.config.tasks,{[e]:a,...d}=t.state.tasks;return {config:{...t.config,tasks:s},state:{...t.state,tasks:d,lastUpdated:new Date().toISOString()}}}function st(t,e,n){let s=t.config.tasks[e];if(!s)return t;let a=chunkLODXIALE_cjs.h(s),d=n.filter(u=>!a.includes(u));return d.length===0?t:{config:{...t.config,tasks:{...t.config.tasks,[e]:{...s,requires:[...a,...d]}}},state:t.state}}function rt(t,e,n){let s=t.config.tasks[e];if(!s)return t;let a=chunkLODXIALE_cjs.h(s),d=a.filter(u=>!n.includes(u));return d.length===a.length?t:{config:{...t.config,tasks:{...t.config.tasks,[e]:{...s,requires:d}}},state:t.state}}function at(t,e,n){let s=t.config.tasks[e];if(!s)return t;let a=chunkLODXIALE_cjs.g(s),d=n.filter(u=>!a.includes(u));return d.length===0?t:{config:{...t.config,tasks:{...t.config.tasks,[e]:{...s,provides:[...a,...d]}}},state:t.state}}function ot(t,e,n){let s=t.config.tasks[e];if(!s)return t;let a=chunkLODXIALE_cjs.g(s),d=a.filter(u=>!n.includes(u));return d.length===a.length?t:{config:{...t.config,tasks:{...t.config.tasks,[e]:{...s,provides:d}}},state:t.state}}function ht(t,e){return X(t,{type:"inject-tokens",tokens:e,timestamp:new Date().toISOString()})}function kt(t,e){let n=new Set(e),s=t.state.availableOutputs.filter(a=>!n.has(a));return s.length===t.state.availableOutputs.length?t:{config:t.config,state:{...t.state,availableOutputs:s,lastUpdated:new Date().toISOString()}}}function mt(t,e){return !t.config.tasks[e]||!t.state.tasks[e]?t:{config:t.config,state:{...t.state,tasks:{...t.state.tasks,[e]:H()},lastUpdated:new Date().toISOString()}}}function St(t,e){let n=t.state.tasks[e];return !n||n.status==="inactivated"?t:{config:t.config,state:{...t.state,tasks:{...t.state.tasks,[e]:{...n,status:"inactivated",lastUpdated:new Date().toISOString()}},lastUpdated:new Date().toISOString()}}}function vt(t,e){let n=t.state.tasks[e];return !n||n.status!=="inactivated"?t:{config:t.config,state:{...t.state,tasks:{...t.state.tasks,[e]:{...n,status:"not-started",lastUpdated:new Date().toISOString()}},lastUpdated:new Date().toISOString()}}}function yt(t,e){let n=t.config.tasks[e];if(!n)return;let s=t.state.tasks[e]??H();return {name:e,config:n,state:s}}function Z(t){return {version:1,config:t.config,state:t.state,snapshotAt:new Date().toISOString()}}function bt(t){if(!t||typeof t!="object")throw new Error("Invalid snapshot: expected an object");let e=t;if(!e.config||typeof e.config!="object")throw new Error('Invalid snapshot: missing or invalid "config"');if(!e.state||typeof e.state!="object")throw new Error('Invalid snapshot: missing or invalid "state"');let n=e.config,s=e.state;if(!n.settings||typeof n.settings!="object")throw new Error("Invalid snapshot: config.settings missing");if(!n.tasks||typeof n.tasks!="object")throw new Error("Invalid snapshot: config.tasks missing");if(!s.tasks||typeof s.tasks!="object")throw new Error("Invalid snapshot: state.tasks missing");if(!Array.isArray(s.availableOutputs))throw new Error("Invalid snapshot: state.availableOutputs must be an array");return {config:n,state:s}}function H(){return {status:"not-started",executionCount:0,retryCount:0,lastEpoch:0,messages:[],progress:null}}function it(t,e){let n=new Date().toISOString();switch(e){case "stop":return {...t,status:"stopped",lastUpdated:n};case "pause":return {...t,status:"paused",lastUpdated:n};case "resume":return {...t,status:"running",lastUpdated:n};default:return t}}function A(t){let{config:e,state:n}=t,s=chunkLODXIALE_cjs.i(e);if(Object.keys(s).length===0)return {eligible:[],pending:[],unresolved:[],blocked:[],conflicts:{}};let d=ct(s),u=chunkLODXIALE_cjs.r(e,n.tasks),l=new Set([...u,...n.availableOutputs]),f=[],y=[],O=[],G=[];for(let[v,p]of Object.entries(s)){let k=n.tasks[v],N=chunkLODXIALE_cjs.o(p,e.settings),I=N!=="once";if(k?.status===chunkLODXIALE_cjs.a.RUNNING||chunkLODXIALE_cjs.l(k))continue;let D=chunkLODXIALE_cjs.q(p);if(D!==void 0&&k&&k.executionCount>=D||p.circuit_breaker&&k&&k.executionCount>=p.circuit_breaker.max_executions||!I&&k?.status===chunkLODXIALE_cjs.a.COMPLETED)continue;if(I&&k?.status===chunkLODXIALE_cjs.a.COMPLETED){let c=chunkLODXIALE_cjs.h(p),i=false;switch(N){case "data-changed":{c.length>0&&c.some(S=>{for(let[w,T]of Object.entries(s))if(chunkLODXIALE_cjs.g(T).includes(S)){let b=n.tasks[w];if(!b)continue;let L=k.lastConsumedHashes?.[S];return b.lastDataHash==null?b.executionCount>k.lastEpoch:b.lastDataHash!==L}return false})||(i=true);break}case "epoch-changed":{c.length>0&&c.some(S=>{for(let[w,T]of Object.entries(s))if(chunkLODXIALE_cjs.g(T).includes(S)){let b=n.tasks[w];if(b&&b.executionCount>k.lastEpoch)return true}return false})||(i=true);break}case "time-based":{let m=p.refreshInterval??0;if(m<=0){i=true;break}let S=k.completedAt;if(!S){i=true;break}(Date.now()-Date.parse(S))/1e3<m&&(i=true);break}case "manual":i=true;break}if(i)continue}let r=chunkLODXIALE_cjs.h(p);if(r.length===0){f.push(v);continue}let o=[],g=[],h=[];for(let c of r){if(l.has(c))continue;let i=d[c]||[];i.length===0?o.push(c):i.every(S=>chunkLODXIALE_cjs.l(n.tasks[S]))?h.push({token:c,failedProducer:i[0]}):g.push(c);}o.length>0?O.push({taskName:v,missingTokens:o}):h.length>0?G.push({taskName:v,failedTokens:h.map(c=>c.token),failedProducers:[...new Set(h.map(c=>c.failedProducer))]}):g.length>0?y.push({taskName:v,waitingOn:g}):f.push(v);}let E={};if(f.length>1){let v=chunkLODXIALE_cjs.s(f,s);for(let[p,k]of Object.entries(v))k.length>1&&(E[p]=k);}return {eligible:f,pending:y,unresolved:O,blocked:G,conflicts:E}}function ct(t){let e={};for(let[n,s]of Object.entries(t)){for(let a of chunkLODXIALE_cjs.g(s))e[a]||(e[a]=[]),e[a].push(n);if(s.on)for(let a of Object.values(s.on))for(let d of a)e[d]||(e[d]=[]),e[d].includes(n)||e[d].push(n);if(s.on_failure)for(let a of s.on_failure)e[a]||(e[a]=[]),e[a].includes(n)||e[a].push(n);}return e}var C=class{buffer=[];append(e){this.buffer.push(e);}drain(){let e=this.buffer;return this.buffer=[],e}get size(){return this.buffer.length}};function U(t){let e=q(t);return dt(e)}function q(t){if(t==null||typeof t!="object")return JSON.stringify(t);if(Array.isArray(t))return "["+t.map(q).join(",")+"]";let e=t;return "{"+Object.keys(e).sort().map(s=>JSON.stringify(s)+":"+q(e[s])).join(",")+"}"}function dt(t){let e=0xcbf29ce484222325n,n=0x100000001b3n,s=0xffffffffffffffffn;for(let a=0;a<t.length;a++)e^=BigInt(t.charCodeAt(a)),e=e*n&s;return e.toString(16).padStart(16,"0")}function ut(t){if(typeof Buffer<"u")return Buffer.from(t,"utf8").toString("base64url");if(typeof btoa=="function"){let e=new TextEncoder().encode(t),n="";for(let s of e)n+=String.fromCharCode(s);return btoa(n).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/g,"")}throw new Error("No base64 encoder available in this runtime")}function pt(t){if(typeof Buffer<"u")return Buffer.from(t,"base64url").toString("utf8");if(typeof atob=="function"){let e=t.replace(/-/g,"+").replace(/_/g,"/"),n=e+"=".repeat((4-e.length%4)%4),s=atob(n),a=new Uint8Array(s.length);for(let d=0;d<s.length;d++)a[d]=s.charCodeAt(d);return new TextDecoder().decode(a)}throw new Error("No base64 decoder available in this runtime")}function tt(t){let e=JSON.stringify({t,n:Date.now().toString(36)+Math.random().toString(36).slice(2,6)});return ut(e)}function ft(t){try{let e=JSON.parse(pt(t));return typeof e?.t=="string"?{taskName:e.t}:null}catch{return null}}function Ct(t,e,n){let{handlers:s,onNodeRemoved:a,onDrain:d}=e,u=new C,l="state"in t&&"config"in t?t:W(t,n),f=false,y=new Set,O=new Map(Object.entries(s)),G=new C,E=false,v=false;function p(){if(!f){if(E){v=true;return}E=true;try{do v=!1,k();while(v)}finally{E=false;}}}function k(){let r=G.drain(),o=u.drain(),g=[...r,...o];if(g.length>0&&(l=Y(l,g),a)){for(let c of g)if(c.type==="task-removal")try{a(c.taskName);}catch(i){console.warn("[reactive] onNodeRemoved failed:",i instanceof Error?i.message:String(i));}}let h=A(l);g.length>0&&d?.(g,l,h);for(let c of h.eligible)D(c);for(let c of g)if(c.type==="task-progress"){let{taskName:i,update:m}=c;if(!l.config.tasks[i])continue;let w=l.state.tasks[i];if(!w||w.status!=="running")continue;let T=tt(i),b=I(i,T,m).catch(L=>{f||(G.append({type:"task-failed",taskName:i,error:L.message??String(L),timestamp:new Date().toISOString()}),p());}).finally(()=>{y.delete(b);});y.add(b);}}function N(r){let g=l.config.tasks[r].requires??[],h=new Map;for(let[i,m]of Object.entries(l.config.tasks))for(let S of m.provides??[])h.set(S,i);let c={};for(let i of g){let m=h.get(i);m?c[i]=l.state.tasks[m]?.data:c[i]=void 0;}return c}async function I(r,o,g){let h=l.config.tasks[r],c=h.taskHandlers??[],i=N(r);for(let m of c){let S=O.get(m);if(!S)throw new Error(`Handler '${m}' not found in registry (task '${r}')`);let w={nodeId:r,state:i,taskState:l.state.tasks[r],config:h,callbackToken:o,update:g};if(await S(w)==="task-initiate-failure")throw new Error(`Handler '${m}' returned task-initiate-failure (task '${r}')`)}}function D(r){let g=l.config.tasks[r]?.taskHandlers;if(!g||g.length===0)return;G.append({type:"task-started",taskName:r,timestamp:new Date().toISOString()}),p();let h=tt(r),c=I(r,h).catch(i=>{f||(G.append({type:"task-failed",taskName:r,error:i.message??String(i),timestamp:new Date().toISOString()}),p());}).finally(()=>{y.delete(c);});y.add(c);}return {push(r){f||(r.type==="task-completed"&&r.data&&!r.dataHash&&(r={...r,dataHash:U(r.data)}),u.append(r),p());},pushAll(r){if(!f){for(let o of r)o.type==="task-completed"&&o.data&&!o.dataHash?u.append({...o,dataHash:U(o.data)}):u.append(o);p();}},resolveCallback(r,o,g){if(f)return;let h=ft(r);if(!h)return;let{taskName:c}=h;if(l.config.tasks[c]){if(g&&g.length>0)u.append({type:"task-failed",taskName:c,error:g.join("; "),timestamp:new Date().toISOString()});else {let i=o&&Object.keys(o).length>0?U(o):void 0;u.append({type:"task-completed",taskName:c,data:o,dataHash:i,timestamp:new Date().toISOString()});}p();}},addNode(r,o){f||(u.append({type:"task-upsert",taskName:r,taskConfig:o,timestamp:new Date().toISOString()}),p());},removeNode(r){f||(u.append({type:"task-removal",taskName:r,timestamp:new Date().toISOString()}),p());},addRequires(r,o){f||(u.append({type:"node-requires-add",nodeName:r,tokens:o,timestamp:new Date().toISOString()}),p());},removeRequires(r,o){f||(u.append({type:"node-requires-remove",nodeName:r,tokens:o,timestamp:new Date().toISOString()}),p());},addProvides(r,o){f||(u.append({type:"node-provides-add",nodeName:r,tokens:o,timestamp:new Date().toISOString()}),p());},removeProvides(r,o){f||(u.append({type:"node-provides-remove",nodeName:r,tokens:o,timestamp:new Date().toISOString()}),p());},registerHandler(r,o){O.set(r,o);},unregisterHandler(r){O.delete(r);},retrigger(r){f||l.config.tasks[r]&&(u.append({type:"task-restart",taskName:r,timestamp:new Date().toISOString()}),p());},retriggerAll(r){if(!f){for(let o of r)l.config.tasks[o]&&u.append({type:"task-restart",taskName:o,timestamp:new Date().toISOString()});p();}},snapshot(){return Z(l)},getState(){return l},getSchedule(){return A(l)},async waitForHandlers(){y.size>0&&await Promise.allSettled([...y]);},async dispose(r){r?.wait&&y.size>0&&await Promise.allSettled([...y]),f=true;}}}
|
|
2
|
+
exports.a=W;exports.b=X;exports.c=Y;exports.d=et;exports.e=nt;exports.f=st;exports.g=rt;exports.h=at;exports.i=ot;exports.j=ht;exports.k=kt;exports.l=mt;exports.m=St;exports.n=vt;exports.o=yt;exports.p=Z;exports.q=bt;exports.r=A;exports.s=C;exports.t=U;exports.u=Ct;//# sourceMappingURL=chunk-G4XXRHL2.cjs.map
|
|
3
|
+
//# sourceMappingURL=chunk-G4XXRHL2.cjs.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
'use strict';var g=Object.create;var f=Object.defineProperty;var h=Object.getOwnPropertyDescriptor;var i=Object.getOwnPropertyNames;var j=Object.getPrototypeOf,k=Object.prototype.hasOwnProperty;var m=(b,a)=>()=>(a||b((a={exports:{}}).exports,a),a.exports);var l=(b,a,c,e)=>{if(a&&typeof a=="object"||typeof a=="function")for(let d of i(a))!k.call(b,d)&&d!==c&&f(b,d,{get:()=>a[d],enumerable:!(e=h(a,d))||e.enumerable});return b};var n=(b,a,c)=>(c=b!=null?g(j(b)):{},l(a||!b||!b.__esModule?f(c,"default",{value:b,enumerable:true}):c,b));exports.a=m;exports.b=n;//# sourceMappingURL=chunk-GNFE24S7.cjs.map
|
|
2
|
+
//# sourceMappingURL=chunk-GNFE24S7.cjs.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
'use strict';function P(c){function T(n){let r=typeof n=="number"?n:Number(n);return Number.isInteger(r)&&r>0?r:null}function k(n,r){let t=r;for(let e=n.length-1;e>=0;e-=1)if(n[e]?.role==="user"&&(t-=1,t===0))return n.slice(e);return n}function S(n){return n.some(r=>typeof r?.turn=="string"&&r.turn!=="")}function w(n,r){if(r<=0)return [];if(!S(n))return k(n,r);let t=new Map,e=[];for(let s of n){let u=typeof s?.turn=="string"?s.turn:"";t.has(u)||(t.set(u,[]),e.push(u)),t.get(u).push(s);}return e.slice(Math.max(0,e.length-r)).flatMap(s=>t.get(s)??[])}function o(n){return {status:"success",data:n}}function a(n){return {status:"fail",error:n}}function i(n){return {status:"error",error:n instanceof Error?n.message:String(n)}}function R(n,r="command envelope"){let t=typeof n.cardId=="string"?n.cardId:void 0;if(!n.command)return a(`chat-store: ${r} missing "command"`);if(!t)return a(`chat-store: ${r} missing "cardId"`);if(n.command==="append")return d.append({params:{cardId:t},body:{role:n.role,text:n.text,files:n.files,turn:n.turn}});if(n.command==="read-all")return d.readAll({params:{cardId:t},body:{lastUserTurns:n.lastUserTurns,tailTurns:n.tailTurns,turnId:n.turnId,allTurns:n.allTurns,tailTurnsBeforeId:n.tailTurnsBeforeId}});if(n.command==="read-after")return d.readAfter({params:{cardId:t},body:{cursor:n.cursor??null}});if(n.command==="clear")return d.clear({params:{cardId:t}});if(n.command==="set-processing")return d.setProcessing({params:{cardId:t},body:{active:n.active}});if(n.command==="is-processing")return d.isProcessing({params:{cardId:t}});if(n.command==="get-config")return d.getConfig({params:{cardId:t}});if(n.command==="set-config"){let{command:e,cardId:m,...s}=n;return d.setConfig({params:{cardId:t},body:s})}return a(`chat-store: unknown command "${String(n.command)}"`)}function A(n){if(!Array.isArray(n.commands)||n.commands.length===0)return a('chat-store: command envelope must include a non-empty "commands" array');let r=[];for(let t=0;t<n.commands.length;t+=1){let e=n.commands[t];if(!e||typeof e!="object"||Array.isArray(e))return a(`chat-store: command envelope entry ${t} must be an object`);let m={cardId:n.cardId,...e},s=R(m,`command envelope entry ${t}`);if(s.status!=="success")return s;r.push({index:t,command:String(m.command),data:s.data});}return o({results:r})}let d={append(n){try{let r=n.params?.cardId;if(!r)return a("append requires params.cardId");let t=n.body??{},e=typeof t.role=="string"?t.role:"",m=typeof t.text=="string"?t.text:"",s=Array.isArray(t.files)?t.files:[],u=typeof t.turn=="string"?t.turn:"";if(!e)return a("append requires body.role");let l=c.append(r,e,m,s,u);return o({id:l})}catch(r){return i(r)}},readAll(n){try{let r=n.params?.cardId;if(!r)return a("readAll requires params.cardId");let t=n.body??{},e=typeof t.turnId=="string"?t.turnId:"",m=t.allTurns===!0,s=typeof t.tailTurnsBeforeId=="string"?t.tailTurnsBeforeId:"",u=t.tailTurns===void 0?t.lastUserTurns:t.tailTurns,l=u===void 0?m||e?void 0:1:T(u);if(u!==void 0&&l===null)return a("readAll requires body.tailTurns (positive integer)");let b=c.readAll(r),g=b.filter(f=>!e||String(f.turn||"")===e);if(s){let f=l;if(typeof f!="number"||!Number.isInteger(f)||f<=0)return a("readAll requires body.tailTurns (positive integer) when body.tailTurnsBeforeId is provided");let p=new Map,I=[];for(let C of b){let h=String(C.turn||"");p.has(h)||(p.set(h,[]),I.push(h)),p.get(h).push(C);}let y=I.findIndex(C=>C===s),x=Math.max(0,y-f);return g=(y===-1?[]:I.slice(x,y)).flatMap(C=>p.get(C)??[]),o({records:g})}return o(typeof l=="number"?{records:w(g,l)}:{records:g})}catch(r){return i(r)}},readAfter(n){try{let r=n.params?.cardId;if(!r)return a("readAfter requires params.cardId");let e=(n.body??{}).cursor??null;return o(c.readAfter(r,e))}catch(r){return i(r)}},clear(n){try{let r=n.params?.cardId;return r?(c.clear(r),o({ok:!0})):a("clear requires params.cardId")}catch(r){return i(r)}},setProcessing(n){try{let r=n.params?.cardId;if(!r)return a("setProcessing requires params.cardId");let t=n.body??{};return typeof t.active!="boolean"?a("setProcessing requires body.active (boolean)"):(c.setProcessing(r,t.active),o({ok:!0}))}catch(r){return i(r)}},isProcessing(n){try{let r=n.params?.cardId;return r?o({active:c.isProcessing(r)}):a("isProcessing requires params.cardId")}catch(r){return i(r)}},getConfig(n){try{let r=n.params?.cardId;return r?o({config:c.getConfig(r)}):a("getConfig requires params.cardId")}catch(r){return i(r)}},setConfig(n){try{let r=n.params?.cardId;if(!r)return a("setConfig requires params.cardId");let t=n.body??{};return c.setConfig(r,t),o({ok:!0})}catch(r){return i(r)}},run:R,runBatch:A};return d}exports.a=P;//# sourceMappingURL=chunk-GYQXDNNI.cjs.map
|
|
2
|
+
//# sourceMappingURL=chunk-GYQXDNNI.cjs.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
'use strict';var a=class{runs=new Map;data=new Map;async saveRunState(t,e){this.runs.set(t,{...e});}async loadRunState(t){let e=this.runs.get(t);return e?{...e}:null}async deleteRunState(t){this.runs.delete(t),this.data.delete(t);}async setData(t,e,s){this.data.has(t)||this.data.set(t,{});let n=this.data.get(t);n[e]=s;}async getData(t,e){return this.data.get(t)?.[e]}async getAllData(t){return {...this.data.get(t)??{}}}async clearData(t){this.data.delete(t);}async listRuns(){return Array.from(this.runs.keys())}clear(){this.runs.clear(),this.data.clear();}};exports.a=a;//# sourceMappingURL=chunk-H5KD3JPY.cjs.map
|
|
2
|
+
//# sourceMappingURL=chunk-H5KD3JPY.cjs.map
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import {g,t,s,i,a,l,r,h,o,q as q$1,F as F$1,E,D,C,B,A as A$1,z}from'./chunk-WDPOGXTY.js';import {q}from'./chunk-MNEOJWPS.js';import {b}from'./chunk-FW4363Y4.js';import Pe from'ajv-formats';function F(t,e,n,s){switch(s){case "alphabetical":return Y(t);case "priority-first":return ie(t,e);case "duration-first":return ae(t,e);case "cost-optimized":return ce(t,e);case "resource-aware":return ue(t,e);case "round-robin":return le(t,n);default:return Y(t)}}function Y(t){return [...t].sort((e,n)=>e.localeCompare(n))[0]}function ie(t,e){return [...t].sort((n,s)=>{let o=e[n]?.priority??0,r=e[s]?.priority??0;if(o!==r)return r-o;let i=A(e[n]),a=A(e[s]);return i!==a?i-a:n.localeCompare(s)})[0]}function ae(t,e){return [...t].sort((n,s)=>{let o=A(e[n]),r=A(e[s]);if(o!==r)return o-r;let i=e[n]?.priority??0,a=e[s]?.priority??0;return i!==a?a-i:n.localeCompare(s)})[0]}function ce(t,e){return [...t].sort((n,s)=>{let o=e[n]?.estimatedCost??0,r=e[s]?.estimatedCost??0;if(o!==r)return o-r;let i=e[n]?.priority??0,a=e[s]?.priority??0;return i!==a?a-i:n.localeCompare(s)})[0]}function ue(t,e){return [...t].sort((n,s)=>{let o=e[n]?.estimatedResources?.cpu??1,r=e[s]?.estimatedResources?.cpu??1;if(o!==r)return o-r;let i=e[n]?.priority??0,a=e[s]?.priority??0;return i!==a?a-i:n.localeCompare(s)})[0]}function le(t,e){let n=Object.values(e.tasks).reduce((o,r)=>o+r.executionCount,0),s=[...t].sort();return s[n%s.length]}function A(t){return t?.estimatedDuration??1/0}function j(t$1,e){return t$1.filter(n=>{let s=g(e[n]);return !t(n,s,t$1,e)})}function U(t,e){let n=s(t,e),s$1=[];for(let r of Object.values(n))if(r.length===1)s$1.push(...r);else {let i=Math.floor(Math.random()*r.length);s$1.push(r[i]);}return j(t,e).forEach(r=>{s$1.includes(r)||s$1.push(r);}),s$1}function W(t,e){switch(e.executionConfig.completionStrategy){case "all-tasks-done":return pe(t,e);case "all-outputs-done":return K(t,e);case "only-resolved":return fe(t,e);case "goal-reached":return de(t,e);case "manual":return {isComplete:false,expectedCompletion:{taskNames:[],outputs:[]}};default:return K(t,e)}}function pe(t,e){let n=i(t),s=Object.keys(n);return s.length===0?{isComplete:true,expectedCompletion:{taskNames:[],outputs:[]}}:{isComplete:s.every(r=>{let i=e.tasks[r];return i?.status===a.COMPLETED||l(i)}),expectedCompletion:{taskNames:s,outputs:[]}}}function K(t,e){let n=i(t),s=new Set;for(let i of Object.values(n))g(i).forEach(a=>s.add(a));let o=r(t,e.tasks);return {isComplete:[...s].every(i=>o.includes(i)),expectedCompletion:{taskNames:[],outputs:[...s]}}}function fe(t,e){let n=i(t),s=r(t,e.tasks),o=new Set,r$1={};for(let[c,u]of Object.entries(n))g(u).forEach(p=>{o.add(p),r$1[p]||(r$1[p]=[]),r$1[p].push(c);});for(let c of o){if(s.includes(c))continue;if((r$1[c]??[]).some(p=>{let g=e.tasks[p];if(g?.status===a.COMPLETED||l(g))return false;let l$1=n[p];return h(l$1).every(m=>s.includes(m))}))return {isComplete:false,expectedCompletion:{taskNames:[],outputs:[]}}}let i$1=ge(t,e);return i$1.length>0?{isComplete:false,expectedCompletion:{taskNames:i$1,outputs:[]}}:{isComplete:Object.values(e.tasks).filter(c=>c.status===a.COMPLETED).length>0||s.length>0,expectedCompletion:{taskNames:[],outputs:[]}}}function de(t,e){let n=t.settings.goal??[];if(n.length===0)return K(t,e);let s=r(t,e.tasks);return {isComplete:n.every(r=>s.includes(r)),expectedCompletion:{taskNames:[],outputs:n}}}function ge(t,e){let n=i(t),s=r(t,e.tasks),o=[];for(let[r,i]of Object.entries(n)){let a$1=e.tasks[r];if(a$1?.status===a.COMPLETED||a$1?.status===a.RUNNING||l(a$1))continue;if(h(i).every(u=>s.includes(u))){let u=g(i);u.length>0&&u.every(p=>s.includes(p))||o.push(r);}}return o}function H(t){let{graph:e,state:n,eligibleTasks:s,completionResult:o}=t,r$1=n.tasks,i$1=i(e),a$1=r(e,r$1);if(s.length>0)return {is_stuck:false,stuck_description:null,outputs_unresolvable:[],tasks_blocked:[]};if(Object.values(r$1).some(p=>p.status===a.RUNNING))return {is_stuck:false,stuck_description:null,outputs_unresolvable:[],tasks_blocked:[]};if(o?.expectedCompletion){let{taskNames:p=[],outputs:g$1=[]}=o.expectedCompletion;if(p.length>0){let l$1=p.filter(f=>l(r$1[f]));if(l$1.length>0&&l$1.length===p.length)return {is_stuck:true,stuck_description:`Completion expects tasks ${p.join(", ")} but all are failed`,tasks_blocked:l$1,outputs_unresolvable:g$1}}if(g$1.length>0&&n.executionConfig.completionStrategy!=="only-resolved"){let l$1=g$1.filter(f=>!a$1.includes(f));if(l$1.length>0){let f=[];for(let m of l$1)Object.entries(i$1).filter(([,C])=>g(C).includes(m)).map(([C])=>C).filter(C=>!l(r$1[C])).length===0&&f.push(m);if(f.length>0)return {is_stuck:true,stuck_description:`Completion expects outputs '${f.join("', '")}' but no viable tasks can provide them`,tasks_blocked:[],outputs_unresolvable:f}}}}let u=[],d=new Set;for(let[p,g$1]of Object.entries(i$1)){let l$1=r$1[p];if(l$1?.status===a.COMPLETED||l(l$1)||l$1?.status===a.RUNNING)continue;let m=h(g$1).filter(k=>!a$1.includes(k));m.length>0&&(m.every(x=>Object.entries(i$1).filter(([,v])=>g(v).includes(x)).map(([v])=>v).some(v=>!l(r$1[v])&&r$1[v]?.status!==a.COMPLETED))||(u.push(p),m.forEach(x=>d.add(x))));}return u.length>0?{is_stuck:true,stuck_description:`Tasks [${u.join(", ")}] blocked by unresolvable dependencies: ${[...d].join(", ")}`,tasks_blocked:u,outputs_unresolvable:[...d]}:{is_stuck:false,stuck_description:null,outputs_unresolvable:[],tasks_blocked:[]}}function me(t,e){let n=[],s=i(t);if(Object.keys(s).length===0)return {eligibleTasks:[],isComplete:true,stuckDetection:{is_stuck:false,stuck_description:null,outputs_unresolvable:[],tasks_blocked:[]},hasConflicts:false,conflicts:{},strategy:e.executionConfig.conflictStrategy,processingLog:["No tasks defined"]};let o=e.executionConfig.executionMode,r=e.executionConfig.conflictStrategy,i$1=J(t,e);n.push(`Found ${i$1.length} candidate tasks: ${i$1.join(", ")||"none"}`);let a,c=false,u={};if(o==="dependency-mode")a=i$1;else {let g=he(i$1,t,e,r);a=g.eligibleTasks,c=g.hasConflicts,u=g.conflicts;}n.push(`Eligible after conflict resolution: ${a.join(", ")||"none"}`);let d=W(t,e);n.push(`Execution complete: ${d.isComplete}`);let p=H({graph:t,state:e,eligibleTasks:a,completionResult:d});return p.is_stuck&&n.push(`STUCK: ${p.stuck_description}`),{eligibleTasks:a,isComplete:d.isComplete,stuckDetection:p,hasConflicts:c,conflicts:u,strategy:r,processingLog:n}}function J(t,e){let n=i(t),s=r(t,e.tasks),o$1=[...new Set([...s,...e.availableOutputs])],r$1=[];for(let[i,a$1]of Object.entries(n)){let c=e.tasks[i],u=o(a$1,t.settings),d=u!=="once";if(c?.status===a.RUNNING||l(c))continue;let p=q$1(a$1);if(p!==void 0&&c&&c.executionCount>=p||a$1.circuit_breaker&&c&&c.executionCount>=a$1.circuit_breaker.max_executions||!d&&c?.status===a.COMPLETED)continue;if(d&&c?.status===a.COMPLETED){let l=h(a$1);switch(u){case "data-changed":{if(l.length>0){if(!l.some(m=>{for(let[k,x]of Object.entries(n))if(g(x).includes(m)){let C=e.tasks[k];if(!C)continue;let v=c.lastConsumedHashes?.[m];return C.lastDataHash==null?C.executionCount>c.lastEpoch:C.lastDataHash!==v}return false}))continue}else continue;break}case "epoch-changed":{if(l.length>0){if(!l.some(m=>{for(let[k,x]of Object.entries(n))if(g(x).includes(m)){let C=e.tasks[k];if(C&&C.executionCount>c.lastEpoch)return true}return false}))continue}else continue;break}case "time-based":{let f=a$1.refreshInterval??0;if(f<=0)continue;let m=c.completedAt;if(!m||(Date.now()-Date.parse(m))/1e3<f)continue;break}case "manual":continue;default:continue}}if(h(a$1).every(l=>o$1.includes(l))){if(!d){let l=g(a$1);if(l.length>0&&l.every(m=>o$1.includes(m)))continue}r$1.push(i);}}return r$1}function he(t,e,n,s$1){let o={eligibleTasks:[],hasConflicts:false,conflicts:{}};if(t.length===0)return o;let r=i(e);switch(s$1){case "parallel-all":return o.eligibleTasks=t,o;case "user-choice":{if(o.eligibleTasks=t,t.length>1){let p=s(t,r);for(let[g,l]of Object.entries(p))l.length>1&&(o.conflicts[g]=l,o.hasConflicts=true);}return o}case "skip-conflicts":return o.eligibleTasks=j(t,r),o;case "random-select":return o.eligibleTasks=U(t,r),o}let i$1=s(t,r),a$1=new Set;for(let[p,g$1]of Object.entries(n.tasks))if(g$1.status===a.RUNNING){let l=e.tasks[p];l&&g(l).forEach(f=>a$1.add(f));}let c=[],u=new Set;for(let[p,g]of Object.entries(i$1))if(!a$1.has(p)){if(g.length===1)c.push(g[0]);else {let l=F(g,r,n,s$1);c.push(l);}g.forEach(l=>u.add(l));}return t.filter(p=>!u.has(p)).forEach(p=>{c.includes(p)||c.push(p);}),o.eligibleTasks=c,o}function X(t,e,n){if("executionId"in e&&e.executionId&&e.executionId!==t.executionId)return t;switch(e.type){case "task-started":return B(t,e.taskName,n);case "task-completed":return C(t,n,e.taskName,e.result,e.dataHash,e.data);case "task-failed":return D(t,n,e.taskName,e.error);case "task-progress":return E(t,e.taskName,e.message,e.progress);case "task-restart":return F$1(t,e.taskName);case "inject-tokens":return ye(t,e.tokens);case "agent-action":return Ce(t,e.action,n,e.config);case "task-upsert":return be(t,e.taskName,e.taskConfig);default:return t}}function ke(t,e,n){return e.reduce((s,o)=>X(s,o,n),t)}function ye(t,e){return {...t,availableOutputs:[...new Set([...t.availableOutputs,...e])],lastUpdated:new Date().toISOString()}}function Ce(t,e,n,s){let o=new Date().toISOString();switch(e){case "start":{let r=`exec-${Date.now()}`,i=A$1(n,r);return s&&(s.executionMode&&(i.executionConfig.executionMode=s.executionMode),s.conflictStrategy&&(i.executionConfig.conflictStrategy=s.conflictStrategy),s.completionStrategy&&(i.executionConfig.completionStrategy=s.completionStrategy)),i}case "stop":return {...t,status:"stopped",executionId:null,lastUpdated:o};case "pause":return {...t,status:"paused",lastUpdated:o};case "resume":return {...t,status:"running",lastUpdated:o};default:return t}}function be(t,e,n){return !e||!n||!Array.isArray(n.provides)?t:{...t,tasks:{...t.tasks,[e]:t.tasks[e]??z()},lastUpdated:new Date().toISOString()}}function Te(t){let e={};for(let[n,s]of Object.entries(t)){for(let o of g(s))e[o]||(e[o]=[]),e[o].push(n);if(s.on)for(let o of Object.values(s.on))for(let r of o)e[r]||(e[r]=[]),e[r].includes(n)||e[r].push(n);if(s.on_failure)for(let o of s.on_failure)e[o]||(e[o]=[]),e[o].includes(n)||e[o].push(n);}return e}function xe(t,e){let n={};for(let[s,o]of Object.entries(t)){let r=h(o),i=new Set;for(let a of r){let c=e[a]||[];for(let u of c)u!==s&&i.add(u);}n[s]=[...i];}return n}function Se(t,e){let n=new Set(t),s={},o={};for(let a of t)s[a]=0,o[a]=[];for(let a of t)for(let c of e[a]||[])n.has(c)&&(s[a]++,o[c].push(a));let r=[],i=new Set(t);for(;i.size>0;){let a=[];for(let c of i)s[c]===0&&a.push(c);if(a.length===0){r.push([...i]);break}a.sort(),r.push(a);for(let c of a){i.delete(c);for(let u of o[c]||[])i.has(u)&&s[u]--;}}return r}function ve(t){let e=i(t),n=Object.keys(e);if(n.length===0)return {phases:[],dependencies:{},conflicts:{},entryPoints:[],leafTasks:[],unreachableTokens:[],blockedTasks:[],depth:0,maxParallelism:0};let s=Te(e),o=xe(e,s),r={};for(let[f,m]of Object.entries(s))m.length>1&&(r[f]=m);let i$1=n.filter(f=>h(e[f]).length===0),a=new Set;for(let f of Object.values(o))for(let m of f)a.add(m);let c=n.filter(f=>!a.has(f)),u=new Set;for(let f of Object.values(e))for(let m of h(f))u.add(m);let d=[...u].filter(f=>!s[f]),p=new Set(d),g=n.filter(f=>h(e[f]).some(m=>p.has(m))),l=Se(n,o);return {phases:l,dependencies:o,conflicts:r,entryPoints:i$1,leafTasks:c.sort(),unreachableTokens:d.sort(),blockedTasks:g.sort(),depth:l.length,maxParallelism:Math.max(0,...l.map(f=>f.length))}}function R(t){return t.replace(/[^a-zA-Z0-9_]/g,"_")}function Ee(t,e={}){let{direction:n="TD",showTokens:s=true,title:o}=e,r=i(t),i$1=Object.keys(r);if(i$1.length===0)return `graph ${n}
|
|
2
|
+
empty[No tasks defined]`;let a={};for(let[l,f]of Object.entries(r)){for(let m of g(f))a[m]||(a[m]=[]),a[m].push(l);if(f.on)for(let m of Object.values(f.on))for(let k of m)a[k]||(a[k]=[]),a[k].includes(l)||a[k].push(l);}let c=[],u=o||t.id||"Event Graph";c.push(`%% ${u}`),c.push(`graph ${n}`);let d=new Set;for(let l of Object.values(r))for(let f of h(l))d.add(f);let p=new Set(i$1.filter(l=>{let f=g(r[l]);return f.length===0||f.every(m=>!d.has(m))}));for(let l of i$1){let f=R(l);h(r[l]).length===0?c.push(` ${f}([${l}])`):p.has(l)?c.push(` ${f}[[${l}]]`):c.push(` ${f}[${l}]`);}let g$1=new Set;for(let[l,f]of Object.entries(r)){let m=h(f);for(let k of m){let x=a[k]||[];for(let C of x){if(C===l)continue;let v=`${C}->${l}:${k}`;if(g$1.has(v))continue;g$1.add(v);let V=R(C),z=R(l);s?c.push(` ${V} -->|${k}| ${z}`):c.push(` ${V} --> ${z}`);}}for(let k of m)if(!a[k]){let x=`warn_${R(k)}`,C=R(l);c.push(` ${x}{{\u26A0 ${k}}} -.->|missing| ${C}`);}}return c.join(`
|
|
3
|
+
`)}function Re(t,e={}){let{direction:n="TD",title:s}=e,o=t.steps,r=t.terminal_states,i=t.settings.start_step,a=[],c=s||t.id||"Step Machine";a.push(`%% ${c}`),a.push(`graph ${n}`),a.push(" START(( ))"),a.push(` START --> ${R(i)}`);for(let u of Object.keys(o)){let d=R(u);a.push(` ${d}[${u}]`);}for(let[u,d]of Object.entries(r)){let p=R(u);a.push(` ${p}([${u}: ${d.return_intent}])`);}for(let[u,d]of Object.entries(o)){let p=R(u);for(let[g,l]of Object.entries(d.transitions)){let f=R(l);a.push(` ${p} -->|${g}| ${f}`);}}return a.join(`
|
|
4
|
+
`)}function Z(t){let e=[];if(!t||typeof t!="object")return ["Graph config must be an object"];let n=t;if(!n.settings||typeof n.settings!="object")e.push('Graph config must have a "settings" object');else {let s=n.settings;(!s.completion||typeof s.completion!="string")&&e.push("settings.completion must be a string"),s.completion==="goal-reached"&&(!Array.isArray(s.goal)||s.goal.length===0)&&e.push('settings.goal must be a non-empty array when completion is "goal-reached"');}if(!n.tasks||typeof n.tasks!="object")e.push('Graph config must have a "tasks" object');else {let s=n.tasks;Object.keys(s).length===0&&e.push("Graph config must have at least one task");for(let[o,r]of Object.entries(s)){if(!r||typeof r!="object"){e.push(`Task "${o}" must be an object`);continue}let i=r;if(Array.isArray(i.provides)||e.push(`Task "${o}" must have a "provides" array`),i.requires!==void 0&&!Array.isArray(i.requires)&&e.push(`Task "${o}".requires must be an array if present`),i.on!==void 0)if(typeof i.on!="object"||Array.isArray(i.on))e.push(`Task "${o}".on must be an object mapping result keys to token arrays`);else for(let[a,c]of Object.entries(i.on))Array.isArray(c)||e.push(`Task "${o}".on.${a} must be an array of tokens`);}}return e}async function Q(t){return (await import('yaml')).parse(t)}async function Oe(t){let e;if(typeof t=="string")if(t.startsWith("http://")||t.startsWith("https://")){let s=await fetch(t);if(!s.ok)throw new Error(`Failed to load graph config from ${t}: ${s.statusText}`);let o=await s.text();(s.headers.get("content-type")??"").includes("json")||t.endsWith(".json")?e=JSON.parse(o):e=await Q(o);}else if(t.includes("{"))e=JSON.parse(t);else {let o=await(await import('fs/promises')).readFile(t,"utf-8");t.endsWith(".json")?e=JSON.parse(o):e=await Q(o);}else e=t;let n=Z(e);if(n.length>0)throw new Error(`Invalid graph configuration:
|
|
5
|
+
- ${n.join(`
|
|
6
|
+
- `)}`);return e}function ee(t,e={}){let{format:n="json",indent:s=2}=e;return n==="yaml"?G(t,s):JSON.stringify(t,null,s)}async function Ae(t,e,n={}){let s=n.format??(e.endsWith(".yaml")||e.endsWith(".yml")?"yaml":"json"),o=ee(t,{...n,format:s});await(await import('fs/promises')).writeFile(e,o,"utf-8");}function G(t,e,n=0){let s=" ".repeat(e*n);if(t==null)return "null";if(typeof t=="boolean"||typeof t=="number")return String(t);if(typeof t=="string")return t.includes(":")||t.includes("#")||t.includes(`
|
|
7
|
+
`)||t.includes('"')||t.includes("'")||t.startsWith(" ")||t.startsWith("{")||t.startsWith("[")||t===""?JSON.stringify(t):t;if(Array.isArray(t))return t.length===0?"[]":t.every(o=>typeof o=="string"||typeof o=="number"||typeof o=="boolean")?`[${t.map(o=>typeof o=="string"?G(o,e,0):String(o)).join(", ")}]`:t.map(o=>{let r=G(o,e,n+1);if(typeof o=="object"&&o!==null&&!Array.isArray(o)){let i=r.trimStart().split(`
|
|
8
|
+
`);return `${s}- ${i[0]}
|
|
9
|
+
${i.slice(1).map(a=>`${s} ${a.trimStart()?a:""}`).filter(Boolean).join(`
|
|
10
|
+
`)}`}return `${s}- ${r}`}).join(`
|
|
11
|
+
`);if(typeof t=="object"){let o=Object.entries(t);return o.length===0?"{}":o.map(([r,i])=>{if(i===void 0)return "";let a=G(i,e,n+1);return typeof i=="object"&&i!==null&&!Array.isArray(i)&&Object.keys(i).length>0?`${s}${r}:
|
|
12
|
+
${a}`:Array.isArray(i)&&i.length>0&&!i.every(c=>typeof c=="string"||typeof c=="number"||typeof c=="boolean")?`${s}${r}:
|
|
13
|
+
${a}`:`${s}${r}: ${a}`}).filter(Boolean).join(`
|
|
14
|
+
`)}return String(t)}function je(t){let e={};for(let[n,s]of Object.entries(t)){for(let o of g(s))e[o]||(e[o]=[]),e[o].push(n);if(s.on)for(let o of Object.values(s.on))for(let r of o)e[r]||(e[r]=[]),e[r].includes(n)||e[r].push(n);if(s.on_failure)for(let o of s.on_failure)e[o]||(e[o]=[]),e[o].includes(n)||e[o].push(n);}return e}function Ge(t,e){let n={};for(let[s,o]of Object.entries(t)){n[s]=new Set;for(let r of h(o))for(let i of e[r]||[])i!==s&&n[s].add(i);}return n}function _e(t,e){let r={},i={},a=[];for(let u of t)r[u]=0,i[u]=null;function c(u){r[u]=1;for(let d of e[u]||[])if(r[d]===1){let p=[d],g=u;for(;g!==d;)p.push(g),g=i[g];p.push(d),p.reverse(),a.push(p);}else r[d]===0&&(i[d]=u,c(d));r[u]=2;}for(let u of t)r[u]===0&&c(u);return a}function $e(t){let e=[],n=i(t),s=Object.keys(n);if(s.length===0)return e.push({severity:"error",code:"EMPTY_GRAPH",message:"Graph has no tasks"}),te(e);let o=je(n),r=Ge(n,o);for(let[c,u]of Object.entries(n))for(let d of h(u))o[d]||e.push({severity:"error",code:"DANGLING_REQUIRES",message:`Task "${c}" requires token "${d}" but no task produces it`,tasks:[c],tokens:[d]});let i$1=_e(s,r);for(let c of i$1)e.push({severity:"error",code:"CIRCULAR_DEPENDENCY",message:`Circular dependency: ${c.join(" \u2192 ")}`,tasks:c.filter((u,d)=>d<c.length-1)});for(let[c,u]of Object.entries(n)){let d=h(u),p=g(u),g$1=d.filter(l=>p.includes(l));g$1.length>0&&e.push({severity:"error",code:"SELF_DEPENDENCY",message:`Task "${c}" requires tokens it provides itself: [${g$1.join(", ")}]`,tasks:[c],tokens:g$1});}for(let[c,u]of Object.entries(o))u.length>1&&e.push({severity:"warning",code:"PROVIDE_CONFLICT",message:`Token "${c}" is produced by multiple tasks: [${u.join(", ")}]. This requires a conflict strategy.`,tasks:u,tokens:[c]});if(t.settings.completion==="goal-reached"&&t.settings.goal)for(let c of t.settings.goal)o[c]||e.push({severity:"error",code:"UNREACHABLE_GOAL",message:`Goal token "${c}" cannot be produced by any task`,tokens:[c]});if(s.length>1)for(let[c,u]of Object.entries(n)){let d=g(u),p=u.on?Object.values(u.on).flat():[],g$1=u.on_failure||[];d.length===0&&p.length===0&&g$1.length===0&&e.push({severity:"warning",code:"DEAD_END_TASK",message:`Task "${c}" has no provides \u2014 it cannot unblock any downstream task`,tasks:[c]});}let a=new Set;for(let c of Object.values(n))for(let u of h(c))a.add(u);for(let[c,u]of Object.entries(n)){let d=h(u),p=g(u),g$1=u.on?Object.values(u.on).flat():[],l=[...p,...g$1],f=d.length===0,m=l.some(k=>a.has(k));f&&!m&&s.length>1&&(t.settings.completion==="goal-reached"&&t.settings.goal?.some(x=>l.includes(x))||e.push({severity:"info",code:"ISOLATED_TASK",message:`Task "${c}" is disconnected \u2014 it has no requires and nothing depends on its provides`,tasks:[c]}));}return t.settings.completion==="goal-reached"&&!t.settings.goal&&e.push({severity:"error",code:"MISSING_GOAL",message:'Completion strategy is "goal-reached" but no goal tokens are defined'}),te(e)}function te(t){let e=t.filter(s=>s.severity==="error"),n=t.filter(s=>s.severity==="warning");return {valid:e.length===0,issues:t,errors:e,warnings:n}}var se={$schema:"http://json-schema.org/draft-07/schema#",$id:"https://github.com/yaml-flow/schema/event-graph.json",title:"Event Graph Configuration",description:"Schema for stateless event-graph (DAG) workflow definitions in yaml-flow",type:"object",required:["settings","tasks"],additionalProperties:false,properties:{id:{type:"string",description:"Optional graph identifier"},settings:{$ref:"#/definitions/settings"},tasks:{type:"object",description:"Task definitions keyed by name",minProperties:1,additionalProperties:{$ref:"#/definitions/task"}}},definitions:{settings:{type:"object",required:["completion"],properties:{completion:{type:"string",enum:["all-tasks-done","all-outputs-done","only-resolved","goal-reached","manual"],description:"Completion strategy"},conflict_strategy:{type:"string",enum:["alphabetical","priority-first","duration-first","cost-optimized","resource-aware","random-select","user-choice","parallel-all","skip-conflicts","round-robin"],description:"Conflict resolution strategy"},execution_mode:{type:"string",enum:["dependency-mode","eligibility-mode"],description:"Execution mode"},goal:{type:"array",items:{type:"string"},minItems:1,description:"Goal outputs \u2014 required when completion is 'goal-reached'"},max_iterations:{type:"integer",minimum:1,description:"Max scheduler iterations (safety limit, default: 1000)"},timeout_ms:{type:"integer",minimum:0,description:"Timeout in ms (declared for drivers, not enforced by pure engine)"},refreshStrategy:{$ref:"#/definitions/refresh_strategy",description:"Default refresh strategy for all tasks (default: 'data-changed')"}},additionalProperties:false,if:{properties:{completion:{const:"goal-reached"}}},then:{required:["completion","goal"]}},task:{type:"object",required:["provides"],properties:{requires:{type:"array",items:{type:"string"},description:"Tokens this task needs to become eligible"},provides:{type:"array",items:{type:"string"},description:"Tokens this task produces on successful completion"},on:{type:"object",description:"Conditional provides based on handler result key",additionalProperties:{type:"array",items:{type:"string"}}},on_failure:{type:"array",items:{type:"string"},description:"Tokens to inject when this task fails"},method:{type:"string",description:"Task execution method (informational \u2014 driver concern)"},config:{type:"object",description:"Arbitrary task configuration (driver concern)"},priority:{type:"number",description:"Higher = preferred in conflict resolution"},estimatedDuration:{type:"number",minimum:0,description:"Estimated duration in ms (used by duration-first strategy)"},estimatedCost:{type:"number",minimum:0,description:"Estimated cost (used by cost-optimized strategy)"},estimatedResources:{type:"object",additionalProperties:{type:"number"},description:"Resource requirements (used by resource-aware strategy)"},retry:{$ref:"#/definitions/task_retry"},refreshStrategy:{$ref:"#/definitions/refresh_strategy",description:"Task-level refresh strategy (overrides settings default)"},refreshInterval:{type:"number",minimum:0,description:"Interval in seconds for time-based refresh strategy"},maxExecutions:{type:"integer",minimum:1,description:"Maximum number of times this task can execute"},circuit_breaker:{$ref:"#/definitions/task_circuit_breaker"},description:{type:"string",description:"Human-readable description"},inference:{$ref:"#/definitions/inference_hints"}},additionalProperties:false},task_retry:{type:"object",required:["max_attempts"],properties:{max_attempts:{type:"integer",minimum:1,description:"Maximum retry attempts"},delay_ms:{type:"integer",minimum:0,description:"Delay between retries in ms"},backoff_multiplier:{type:"number",minimum:1,description:"Backoff multiplier (e.g., 2 for exponential)"}},additionalProperties:false},refresh_strategy:{type:"string",enum:["data-changed","epoch-changed","time-based","manual","once"],description:"Strategy for determining when a completed task should re-run"},task_circuit_breaker:{type:"object",required:["max_executions","on_break"],properties:{max_executions:{type:"integer",minimum:1,description:"Max executions before breaker trips"},on_break:{type:"array",items:{type:"string"},minItems:1,description:"Tokens to inject when breaker trips"}},additionalProperties:false},inference_hints:{type:"object",description:"LLM inference hints \u2014 opt-in metadata for AI-assisted completion detection",properties:{criteria:{type:"string",description:"Human-readable completion criteria"},keywords:{type:"array",items:{type:"string"},description:"Keywords to help the LLM understand the domain"},suggestedChecks:{type:"array",items:{type:"string"},description:"Suggested checks for verification"},autoDetectable:{type:"boolean",description:"Whether the LLM should attempt to auto-detect completion (default: false)"}},additionalProperties:false}}};var ne=b(q(),1);var _=null;function Ie(){if(_)return _;let t=new ne.default({allErrors:true});return Pe(t),_=t.compile(se),_}function Ne(t){let e=Ie();return e(t)?{ok:true,errors:[]}:{ok:false,errors:(e.errors??[]).map(o=>`${o.instancePath||"/"}: ${o.message??"unknown error"}`)}}
|
|
15
|
+
export{F as a,j as b,U as c,W as d,H as e,me as f,J as g,X as h,ke as i,ve as j,Ee as k,Re as l,Z as m,Oe as n,ee as o,Ae as p,$e as q,Ne as r};//# sourceMappingURL=chunk-HLJH7LGW.js.map
|
|
16
|
+
//# sourceMappingURL=chunk-HLJH7LGW.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
'use strict';var chunkUVE65IPR_cjs=require('./chunk-UVE65IPR.cjs'),module$1=require('module'),url=require('url'),path=require('path'),fs=require('fs');var _documentCurrentScript=typeof document!=='undefined'?document.currentScript:null;var f=path.dirname(url.fileURLToPath((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('chunk-I4WH5U5D.cjs', document.baseURI).href)))),E=module$1.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('chunk-I4WH5U5D.cjs', document.baseURI).href)));function w(){let e=path.resolve(f,"./jsonata-sync.cjs");return fs.existsSync(e)?e:path.resolve(f,"../../card-compute/jsonata-sync.cjs")}var p=E(w());function u(e){e.registerFunction("fsPathRef",s=>chunkUVE65IPR_cjs.a({kind:"fs-path",value:String(s)}),"<s:s>");}function R(e,s,c){if(!e||typeof e!="object")return {};let i={};if(Array.isArray(e.cmdTemplate)){let r=[];for(let n of e.cmdTemplate)try{let a=p(n);u(a),r.push(String(a.evaluate(s)));}catch(a){let t=a instanceof Error?a.message:String(a);throw new Error(`[${c}] argsMassaging.cmdTemplate failed on "${n}": ${t}`)}i.cmdArgs=r;}if(typeof e.stdinTemplate=="string")try{let r=p(e.stdinTemplate);u(r),i.stdin=r.evaluate(s);}catch(r){let n=r instanceof Error?r.message:String(r);throw new Error(`[${c}] argsMassaging.stdinTemplate failed: ${n}`)}if(typeof e.urlTemplate=="string")try{let r=p(e.urlTemplate);u(r),i.url=String(r.evaluate(s));}catch(r){let n=r instanceof Error?r.message:String(r);throw new Error(`[${c}] argsMassaging.urlTemplate failed: ${n}`)}if(typeof e.headerTemplate=="string")try{let r=p(e.headerTemplate);u(r);let n=r.evaluate(s);if(typeof n!="object"||n===null)throw new Error(`headerTemplate must produce an object, got: ${JSON.stringify(n)}`);i.headers=n;}catch(r){let n=r instanceof Error?r.message:String(r);throw new Error(`[${c}] argsMassaging.headerTemplate failed: ${n}`)}if(typeof e.bodyTemplate=="string")try{let r=p(e.bodyTemplate);u(r),i.body=r.evaluate(s);}catch(r){let n=r instanceof Error?r.message:String(r);throw new Error(`[${c}] argsMassaging.bodyTemplate failed: ${n}`)}return i}function _(e,s,c){if(!e||typeof e!="object")return s;let i={output:s},r=s.result,n=s.data,a=s.error;if(typeof e.resultExpr=="string")try{let t=p(e.resultExpr);u(t);let o=t.evaluate(i);if(typeof o!="string"||!o.trim())throw new Error(`resultExpr did not produce a non-empty string (got ${JSON.stringify(o)})`);r=o;}catch(t){let o=t instanceof Error?t.message:String(t);throw new Error(`[${c}] outputTransforms.resultExpr failed: ${o}`)}if(typeof e.dataTemplate=="string")try{let t=p(e.dataTemplate);u(t);let o=t.evaluate(i);if(!o||typeof o!="object"||Array.isArray(o))throw new Error(`dataTemplate did not produce an object (got ${JSON.stringify(o)})`);n=o;}catch(t){let o=t instanceof Error?t.message:String(t);throw new Error(`[${c}] outputTransforms.dataTemplate failed: ${o}`)}if(typeof e.errorExpr=="string")try{let t=p(e.errorExpr);u(t);let o=t.evaluate(i);a=o!=null?String(o):void 0;}catch(t){let o=t instanceof Error?t.message:String(t);throw new Error(`[${c}] outputTransforms.errorExpr failed: ${o}`)}return a!==void 0?{result:r,data:n,error:a}:{result:r,data:n}}exports.a=R;exports.b=_;//# sourceMappingURL=chunk-I4WH5U5D.cjs.map
|
|
2
|
+
//# sourceMappingURL=chunk-I4WH5U5D.cjs.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
'use strict';var module$1=require('module');var _documentCurrentScript=typeof document!=='undefined'?document.currentScript:null;var y=module$1.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('chunk-IXZG74EW.cjs', document.baseURI).href))),u=y("./jsonata-sync.cjs"),p=u;function c(r,t){if(!t||!r)return;let s=t.split("."),e=r;for(let n=0;n<s.length;n++){if(e==null)return;e=e[s[n]];}return e}function l(r,t,s){let e=t.split("."),n=r;for(let o=0;o<e.length-1;o++)(n[e[o]]==null||typeof n[e[o]]!="object")&&(n[e[o]]={}),n=n[e[o]];n[e[e.length-1]]=s;}async function m(r,t){if(!r?.compute?.length)return r;r.card_data||(r.card_data={}),r.computed_values={},r._sourcesData=t?.sourcesData??{};let s=r.requires??{},e={card_data:r.card_data,requires:s,expects_data:s,fetched_sources:r._sourcesData,data:r.computed_values,computed_values:r.computed_values};for(let n of r.compute)try{let o=await u(n.expr).evaluate(e);l(r.computed_values,n.bindTo,o),e.computed_values=r.computed_values;}catch{}return r}function g(r,t){if(!r?.compute?.length)return {ok:true,node:r};r.card_data||(r.card_data={}),r.computed_values={},r._sourcesData=t?.sourcesData??{};let s=r.requires??{},e={card_data:r.card_data,requires:s,expects_data:s,fetched_sources:r._sourcesData,data:r.computed_values,computed_values:r.computed_values},n=[];for(let o of r.compute)try{let a=p(o.expr).evaluate(e);l(r.computed_values,o.bindTo,a),e.computed_values=r.computed_values;}catch(a){let i=a instanceof Error?a.message:String(a);n.push({bindTo:o.bindTo,error:i});}return n.length>0?{ok:true,node:r,errors:n}:{ok:true,node:r}}async function b(r,t,s){let e={...s??{},card_data:t.card_data??{},requires:t.requires??{},fetched_sources:t._sourcesData??{},computed_values:t.computed_values??{}};return u(r).evaluate(e)}function _(r,t){return t.startsWith("fetched_sources.")?c(r._sourcesData??{},t.slice(16)):c(r,t)}var d=new Set(["metric","table","editable-table","chart","form","filter","list","notes","todo","alert","narrative","badge","text","markdown","ref","custom","actions"]),v=new Set(["id","meta","requires","provides","view","card_data","compute","source_defs"]);function h(r){let t=[];if(!r||typeof r!="object"||Array.isArray(r))return {ok:false,errors:["Node must be a non-null object"]};let s=r;(typeof s.id!="string"||!s.id)&&t.push("id: required, must be a non-empty string");for(let e of Object.keys(s))v.has(e)||t.push(`Unknown top-level key: "${e}"`);if((s.card_data==null||typeof s.card_data!="object"||Array.isArray(s.card_data))&&t.push("card_data: required, must be an object"),s.meta!=null)if(typeof s.meta!="object"||Array.isArray(s.meta))t.push("meta: must be an object");else {let e=s.meta;e.title!=null&&typeof e.title!="string"&&t.push("meta.title: must be a string"),e.tags!=null&&!Array.isArray(e.tags)&&t.push("meta.tags: must be an array");}if(s.requires!=null&&!Array.isArray(s.requires)&&t.push("requires: must be an array of strings"),s.provides!=null&&(Array.isArray(s.provides)?s.provides.forEach((e,n)=>{if(!e||typeof e!="object"||Array.isArray(e))t.push(`provides[${n}]: must be an object with bindTo and ref`);else {let o=e;(typeof o.bindTo!="string"||!o.bindTo)&&t.push(`provides[${n}]: missing required "bindTo" string`),(typeof o.ref!="string"||!o.ref)&&t.push(`provides[${n}]: missing required "ref" string`);}}):t.push("provides: must be an array of { bindTo, ref } bindings")),s.compute!=null&&(Array.isArray(s.compute)?s.compute.forEach((e,n)=>{if(!e||typeof e!="object"||Array.isArray(e))t.push(`compute[${n}]: must be a compute step object`);else {let o=e;(typeof o.bindTo!="string"||!o.bindTo)&&t.push(`compute[${n}]: missing required "bindTo" property`),(typeof o.expr!="string"||!o.expr)&&t.push(`compute[${n}]: missing required "expr" string (JSONata expression)`);}}):t.push("compute: must be an array of compute steps")),s.source_defs!=null)if(!Array.isArray(s.source_defs))t.push("source_defs: must be an array");else {let e=new Set,n=new Set;s.source_defs.forEach((o,a)=>{if(!o||typeof o!="object"||Array.isArray(o))t.push(`source_defs[${a}]: must be an object`);else {let i=o;typeof i.bindTo!="string"||!i.bindTo?t.push(`source_defs[${a}]: missing required "bindTo" property`):(e.has(i.bindTo)&&t.push(`source_defs[${a}]: bindTo "${i.bindTo}" is not unique across source_defs`),e.add(i.bindTo)),typeof i.outputFile!="string"||!i.outputFile?t.push(`source_defs[${a}]: missing required "outputFile" property`):(n.has(i.outputFile)&&t.push(`source_defs[${a}]: outputFile "${i.outputFile}" is not unique across source_defs`),n.add(i.outputFile)),i.optionalForCompletionGating!=null&&typeof i.optionalForCompletionGating!="boolean"&&t.push(`source_defs[${a}]: optionalForCompletionGating must be a boolean`);}});}if(s.view!=null)if(typeof s.view!="object"||Array.isArray(s.view))t.push("view: must be an object");else {let e=s.view;!Array.isArray(e.elements)||e.elements.length===0?t.push("view.elements: required, must be a non-empty array"):e.elements.forEach((n,o)=>{if(!n||typeof n!="object"){t.push(`view.elements[${o}]: must be an object`);return}!n.kind||typeof n.kind!="string"?t.push(`view.elements[${o}].kind: required, must be a string`):d.has(n.kind)||t.push(`view.elements[${o}].kind: unknown kind "${n.kind}". Valid: ${[...d].join(", ")}`),n.data!=null&&(typeof n.data!="object"||Array.isArray(n.data))&&t.push(`view.elements[${o}].data: must be an object`);}),e.layout!=null&&(typeof e.layout!="object"||Array.isArray(e.layout))&&t.push("view.layout: must be an object"),e.features!=null&&(typeof e.features!="object"||Array.isArray(e.features))&&t.push("view.features: must be an object");}return {ok:t.length===0,errors:t}}async function k(r,t){if(!r||r.length===0)return [];let s={card_data:t.card_data??{},requires:t.requires??{}};return Promise.all(r.map(async e=>{let n={};if(e.projections&&typeof e.projections=="object"&&!Array.isArray(e.projections)){for(let[o,a]of Object.entries(e.projections))if(typeof a=="string"&&a.trim().length>0)try{n[o]=await u(a).evaluate(s);}catch{n[o]=void 0;}}return {...e,_projections:n}}))}function w(r,t){if(!r||r.length===0)return [];let s={card_data:t.card_data??{},requires:t.requires??{}};return r.map(e=>{let n={};if(e.projections&&typeof e.projections=="object"&&!Array.isArray(e.projections)){for(let[o,a]of Object.entries(e.projections))if(typeof a=="string"&&a.trim().length>0)try{n[o]=p(a).evaluate(s);}catch{n[o]=void 0;}}return {...e,_projections:n}})}var j={run:m,runSync:g,eval:b,resolve:_,validate:h,enrichSources:k,enrichSourcesSync:w},C=j;exports.a=j;exports.b=C;//# sourceMappingURL=chunk-IXZG74EW.cjs.map
|
|
2
|
+
//# sourceMappingURL=chunk-IXZG74EW.cjs.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
'use strict';var chunkG4XXRHL2_cjs=require('./chunk-G4XXRHL2.cjs'),chunkLODXIALE_cjs=require('./chunk-LODXIALE.cjs'),chunkIXZG74EW_cjs=require('./chunk-IXZG74EW.cjs'),child_process=require('child_process');function z(s){let{config:e,state:o}=s,a=chunkLODXIALE_cjs.i(e),i=Object.keys(a),d=0,c=0,l=0,f=0,t=0,r=0;for(let h of i){let T=o.tasks[h];if(!T||T.status===chunkLODXIALE_cjs.a.NOT_STARTED)t++;else switch(T.status){case chunkLODXIALE_cjs.a.RUNNING:d++;break;case chunkLODXIALE_cjs.a.COMPLETED:c++;break;case chunkLODXIALE_cjs.a.FAILED:l++;break;case "inactivated":r++;break;default:f++;}}let n={};for(let[h,T]of Object.entries(a)){for(let R of chunkLODXIALE_cjs.g(T))n[R]||(n[R]=[]),n[R].push(h);if(T.on)for(let R of Object.values(T.on))for(let g of R)n[g]||(n[g]=[]),n[g].includes(h)||n[g].push(h);if(T.on_failure)for(let R of T.on_failure)n[R]||(n[R]=[]),n[R].includes(h)||n[R].push(h);}let u=new Set,p=0,k=0;for(let[h,T]of Object.entries(a)){let R=o.tasks[h];if(R?.status===chunkLODXIALE_cjs.a.COMPLETED||R?.status===chunkLODXIALE_cjs.a.RUNNING)continue;let g=false,H=false;for(let x of chunkLODXIALE_cjs.h(T)){let q=n[x]||[];q.length===0?(u.add(x),g=true):q.every(Y=>{let W=o.tasks[Y];return W?.status===chunkLODXIALE_cjs.a.FAILED||W?.status==="inactivated"})&&(H=true);}g&&p++,H&&!g&&k++;}let m=[];for(let[h,T]of Object.entries(n))T.length>1&&m.push(h);let v=Q(a,n),b=Z(i,v);return {totalNodes:i.length,running:d,completed:c,failed:l,waiting:f,notStarted:t,disabled:r,unresolvedCount:p,blockedCount:k,openDependencies:[...u],cycles:b,conflictTokens:m}}function Q(s,e){let o={};for(let[a,i]of Object.entries(s)){o[a]=new Set;for(let d of chunkLODXIALE_cjs.h(i))for(let c of e[d]||[])c!==a&&o[a].add(c);}return o}function Z(s,e){let d={},c={},l=[];for(let t of s)d[t]=0,c[t]=null;function f(t){d[t]=1;for(let r of e[t]||[])if(d[r]===1){let n=[r],u=t;for(;u!==r;)n.push(u),u=c[u];n.push(r),n.reverse(),l.push(n);}else d[r]===0&&(c[r]=t,f(r));d[t]=2;}for(let t of s)d[t]===0&&f(t);return l}function B(s){let e={};for(let[o,a]of Object.entries(s)){for(let i of chunkLODXIALE_cjs.g(a))e[i]||(e[i]=[]),e[i].push(o);if(a.on)for(let i of Object.values(a.on))for(let d of i)e[d]||(e[d]=[]),e[d].includes(o)||e[d].push(o);if(a.on_failure)for(let i of a.on_failure)e[i]||(e[i]=[]),e[i].includes(o)||e[i].push(o);}return e}function V(s){let{config:e,state:o}=s,a=chunkLODXIALE_cjs.i(e),i=B(a),d=new Set([...o.availableOutputs]);for(let[n,u]of Object.entries(o.tasks))if(u.status==="completed"){let p=a[n];p&&chunkLODXIALE_cjs.g(p).forEach(k=>d.add(k));}let c=new Set;for(let n of Object.values(a))for(let u of chunkLODXIALE_cjs.h(n))c.add(u);let l=new Set,f=new Set;for(let n of c){if(d.has(n))continue;(i[n]||[]).length===0&&l.add(n);}let t=true;for(;t;){t=false;for(let[n,u]of Object.entries(a)){if(f.has(n))continue;let p=o.tasks[n];if(p?.status==="completed")continue;let k=chunkLODXIALE_cjs.l(p),v=chunkLODXIALE_cjs.h(u).some(b=>l.has(b));(k||v)&&(f.has(n)||(f.add(n),t=true));}for(let n of c){if(l.has(n)||d.has(n))continue;let u=i[n]||[],p=u.length>0&&u.every(k=>f.has(k)||chunkLODXIALE_cjs.l(o.tasks[k]));(u.length===0||p)&&(l.has(n)||(l.add(n),t=true));}}let r=[];for(let n of l){let u=i[n]||[],p;u.length===0?p="no-producer":p=u.every(m=>chunkLODXIALE_cjs.l(o.tasks[m]))?"all-producers-failed":"transitive",r.push({token:n,reason:p,producers:u});}return {tokens:r}}function ee(s){let{config:e,state:o}=s,a=chunkLODXIALE_cjs.i(e),{tokens:i}=V(s),d=new Set(i.map(l=>l.token)),c=[];for(let[l,f]of Object.entries(a)){let t=o.tasks[l];if(t?.status==="completed")continue;let n=chunkLODXIALE_cjs.h(f).filter(u=>d.has(u));n.length>0?c.push({nodeName:l,missingTokens:n}):chunkLODXIALE_cjs.l(t)&&c.push({nodeName:l,missingTokens:[]});}return {nodes:c}}function te(s,e){let o=chunkLODXIALE_cjs.i(s.config);if(!o[e])return {nodeName:e,nodes:[],tokens:[]};let a=B(o),i=new Set,d=new Set,c=new Map;function l(t){let r=o[t];if(r)for(let n of chunkLODXIALE_cjs.h(r)){let u=a[n]||[];for(let p of u)p!==e&&(d.add(n),c.has(p)||c.set(p,new Set),c.get(p).add(n),i.has(p)||(i.add(p),l(p)));}}l(e);let f=[...c.entries()].map(([t,r])=>({nodeName:t,providesTokens:[...r]}));return {nodeName:e,nodes:f,tokens:[...d]}}function ne(s,e){let o=chunkLODXIALE_cjs.i(s.config);if(!o[e])return {nodeName:e,nodes:[],tokens:[]};let a={};for(let[t,r]of Object.entries(o))for(let n of chunkLODXIALE_cjs.h(r))a[n]||(a[n]=[]),a[n].push(t);let i=new Set,d=new Set,c=new Map;function l(t){let r=o[t];if(r)for(let n of chunkLODXIALE_cjs.g(r)){let u=a[n]||[];for(let p of u)p!==e&&(d.add(n),c.has(p)||c.set(p,new Set),c.get(p).add(n),i.has(p)||(i.add(p),l(p)));}}l(e);let f=[...c.entries()].map(([t,r])=>({nodeName:t,requiresTokens:[...r]}));return {nodeName:e,nodes:f,tokens:[...d]}}function K(s){let e=[],{config:o,state:a}=s,i=chunkLODXIALE_cjs.i(o),d=Object.keys(i);for(let t of d)a.tasks[t]||e.push({severity:"error",code:"MISSING_STATE",message:`Task "${t}" exists in config but has no state entry`,tasks:[t]});for(let t of Object.keys(a.tasks))i[t]||e.push({severity:"warning",code:"ORPHAN_STATE",message:`State entry "${t}" has no corresponding task config`,tasks:[t]});for(let t of d){let r=a.tasks[t];r&&(r.status===chunkLODXIALE_cjs.a.RUNNING&&!r.startedAt&&e.push({severity:"warning",code:"RUNNING_WITHOUT_START",message:`Task "${t}" is running but has no startedAt timestamp`,tasks:[t]}),r.status===chunkLODXIALE_cjs.a.COMPLETED&&!r.completedAt&&e.push({severity:"warning",code:"COMPLETED_WITHOUT_TIMESTAMP",message:`Task "${t}" is completed but has no completedAt timestamp`,tasks:[t]}),r.status===chunkLODXIALE_cjs.a.FAILED&&(r.failedAt||e.push({severity:"warning",code:"FAILED_WITHOUT_INFO",message:`Task "${t}" is failed but has no failedAt timestamp`,tasks:[t]}),r.error||e.push({severity:"info",code:"FAILED_WITHOUT_INFO",message:`Task "${t}" is failed but has no error message`,tasks:[t]})));}let c=new Set;for(let t of d)if(a.tasks[t]?.status===chunkLODXIALE_cjs.a.COMPLETED)for(let n of chunkLODXIALE_cjs.g(i[t]))c.add(n);let l=new Set(a.availableOutputs),f=new Set;for(let t of Object.values(i)){for(let r of chunkLODXIALE_cjs.g(t))f.add(r);if(t.on)for(let r of Object.values(t.on))for(let n of r)f.add(n);if(t.on_failure)for(let r of t.on_failure)f.add(r);}for(let t of l)!c.has(t)&&!f.has(t)&&e.push({severity:"info",code:"INJECTED_TOKEN",message:`Token "${t}" is available but no task in the graph can produce it (likely injected)`,tokens:[t]});for(let t of c)l.has(t)||e.push({severity:"warning",code:"MISSING_OUTPUT",message:`Token "${t}" should be available (its producer completed) but is not in availableOutputs`,tokens:[t]});for(let t of d){let r=a.tasks[t];if(!r)continue;r.executionCount<0&&e.push({severity:"error",code:"INVALID_EXECUTION_COUNT",message:`Task "${t}" has negative execution count: ${r.executionCount}`,tasks:[t]});let n=i[t].maxExecutions;n!==void 0&&r.executionCount>n&&e.push({severity:"error",code:"EXCEEDED_MAX_EXECUTIONS",message:`Task "${t}" executed ${r.executionCount} times, exceeding maxExecutions of ${n}`,tasks:[t]});}return J(e)}function se(s){let{graph:e,handlers:o}=s,a=e.getState(),i=[],d=chunkLODXIALE_cjs.i(a.config),c=Object.keys(d),l=new Set(Object.keys(o)),f=new Set;for(let r of c){let n=d[r].taskHandlers;if(n)for(let u of n)f.add(u);}for(let r of c){let n=d[r].taskHandlers;if(n)for(let u of n)o[u]||i.push({severity:"error",code:"MISSING_HANDLER",message:`Task "${r}" references handler "${u}" but it is not in the registry`,tasks:[r]});}for(let r of l)f.has(r)||i.push({severity:"warning",code:"ORPHAN_HANDLER",message:`Handler "${r}" is registered but not referenced by any task's taskHandlers`,tasks:[r]});let t=K(a);return i.push(...t.issues),J(i)}function J(s){let e=s.filter(a=>a.severity==="error"),o=s.filter(a=>a.severity==="warning");return {valid:e.length===0,issues:s,errors:e,warnings:o}}function re(s,e){let o=s;for(let a of e)o=oe(o,a);return o}function oe(s,e){switch(e.type){case "add-node":return chunkG4XXRHL2_cjs.d(s,e.name,e.config);case "remove-node":return chunkG4XXRHL2_cjs.e(s,e.name);case "add-requires":return chunkG4XXRHL2_cjs.f(s,e.taskName,e.tokens);case "remove-requires":return chunkG4XXRHL2_cjs.g(s,e.taskName,e.tokens);case "add-provides":return chunkG4XXRHL2_cjs.h(s,e.taskName,e.tokens);case "remove-provides":return chunkG4XXRHL2_cjs.i(s,e.taskName,e.tokens);case "inject-tokens":return chunkG4XXRHL2_cjs.j(s,e.tokens);case "drain-tokens":return chunkG4XXRHL2_cjs.k(s,e.tokens);case "reset-node":return chunkG4XXRHL2_cjs.l(s,e.name);case "disable-node":return chunkG4XXRHL2_cjs.m(s,e.name);case "enable-node":return chunkG4XXRHL2_cjs.n(s,e.name);case "apply-events":return chunkG4XXRHL2_cjs.c(s,e.events);default:throw new Error(`Unknown mutation type: ${e.type}`)}}function ce(s,e){return async o=>{let{callbackToken:a}=o;return Promise.resolve(s(o)).then(i=>e()(a,i)).catch(i=>e()(a,{},[i instanceof Error?i.message:String(i)])),"task-initiated"}}function de(s,e){return async o=>{let{callbackToken:a}=o;return Promise.resolve(s(o)).then(()=>e()(a,{})).catch(()=>e()(a,{})),"task-initiated"}}function ue(s){let{command:e,cwd:o,env:a,timeoutMs:i=3e4,exitCodeMap:d,captureOutput:c=false,getResolve:l}=s;return async f=>{let{callbackToken:t,nodeId:r}=f,n=e.replace(/\$\{taskName\}/g,r);return child_process.exec(n,{cwd:o,env:a?{...process.env,...a}:void 0,timeout:i,maxBuffer:10*1024*1024},(u,p,k)=>{let m=u?.code??(u?1:0);if(m!==0&&!d?.[m]){l()(t,{},[`Command exited with code ${m}: ${k||u?.message}`]);return}let v={};c&&(v.stdout=p,v.stderr=k,v.exitCode=m),l()(t,v);}),"task-initiated"}}function X(s){let{command:e,args:o=[],cwd:a,env:i,timeoutMs:d=3e4,exitCodeMap:c,captureOutput:l=false,getResolve:f}=s;return async t=>{let{callbackToken:r,nodeId:n}=t,u=e.replace(/\$\{taskName\}/g,n),p=o.map(k=>k.replace(/\$\{taskName\}/g,n));return child_process.execFile(u,p,{cwd:a,env:i?{...process.env,...i}:void 0,timeout:d,maxBuffer:10*1024*1024,encoding:"utf8",windowsHide:true},(k,m,v)=>{let b=k?.code??(k?1:0);if(b!==0&&!c?.[b]){f()(r,{},[`Process exited with code ${b}: ${v||k?.message}`]);return}let h={};l&&(h.stdout=m,h.stderr=v,h.exitCode=b),f()(r,h);}),"task-initiated"}}function le(s){return s.endsWith(".js")||s.endsWith(".mjs")||s.endsWith(".ts")?"node":s.endsWith(".py")?"python3":(s.endsWith(".sh"),"bash")}function pe(s){let{scriptPath:e,runtime:o,args:a=[],cwd:i,timeoutMs:d=6e4,captureOutput:c=false,getResolve:l}=s,f=o??le(e),t=f==="node"?process.execPath:f;return X({command:t,args:[e,"${taskName}",...a],cwd:i,timeoutMs:d,captureOutput:c,getResolve:l})}function fe(s){let{url:e,method:o="POST",headers:a={},timeoutMs:i=3e4,failOnNon2xx:d=true,getResolve:c}=s;return async l=>{let{callbackToken:f,nodeId:t,config:r}=l,n=e.replace(/\$\{taskName\}/g,t),u=JSON.stringify({taskName:t,callbackToken:f,config:r}),p=new AbortController,k=setTimeout(()=>p.abort(),i);return fetch(n,{method:o,headers:{"Content-Type":"application/json",...a},body:u,signal:p.signal}).then(async m=>{if(clearTimeout(k),d&&!m.ok){let b=await m.text().catch(()=>"");c()(f,{},[`HTTP ${m.status}: ${b}`]);return}let v=await m.json().catch(()=>({}));c()(f,v);}).catch(m=>{clearTimeout(k),c()(f,{},[m instanceof Error?m.message:String(m)]);}),"task-initiated"}}function ge(s,e){return async o=>(s()(o.callbackToken,e??{}),"task-initiated")}function ke(s,e={}){let o,a={},i;if(!Array.isArray(s)&&"nodes"in s){let g=s;o=g.nodes,i=g.id,a=g.settings??{};}else o=s;let{sourceHandlers:d={},defaultSourceHandler:c,cardHandlers:l={},reactiveOptions:f={},graphSettings:t={},executionId:r}=e,n=new Map;for(let g of o){if(n.has(g.id))throw new Error(`Duplicate card ID: "${g.id}"`);n.set(g.id,g);}let u=e.sharedState??new Map,p={},k=new Set,m=new Map;for(let g of o)for(let H of g.provides??[{bindTo:g.id,ref:"card_data"}])k.add(H.bindTo),m.set(H.bindTo,g.id);for(let g of o){let H=g.requires??[];for(let x of H)if(!k.has(x))throw new Error(`Card "${g.id}" requires "${x}" but no card provides that token`);p[g.id]={requires:H.length>0?H:void 0,provides:(g.provides??[{bindTo:g.id,ref:"card_data"}]).map(x=>x.bindTo),taskHandlers:[g.id],description:g.meta?.title??g.id};}let v={id:i??`live-cards-${Date.now()}`,settings:{completion:"manual",execution_mode:"eligibility-mode",...a,...t},tasks:p},b={},h=null,T=()=>(g,H,x)=>{h.resolveCallback(g,H,x);};for(let g of o)g.source_defs&&g.source_defs.length>0?b[g.id]=me(g,d,c,u,T):b[g.id]=he(g,l,u,n,m,T);let R=chunkG4XXRHL2_cjs.u(v,{...f,handlers:b},r);return h=R,{graph:R,config:v,handlers:b,cards:n,sharedState:u}}function me(s,e,o,a,i){if(e[s.id]){let d=e[s.id];return async c=>d(c)}if(o){let d=o(s);return async c=>d(c)}return async d=>{let c={...s.card_data};return a.set(s.id,c),i()(d.callbackToken,c),"task-initiated"}}function he(s,e,o,a,i,d){if(e[s.id]){let c=e[s.id];return async l=>c(l)}return async c=>{let l={},f=s.requires??[];for(let u of f){let p=i.get(u)??u,k=o.get(p);k&&(l[u]=k[u]??k);}let t={id:s.id,card_data:{...s.card_data},requires:l,compute:s.compute};await chunkIXZG74EW_cjs.a.run(t);let r;if(s.provides&&s.provides.length>0){r={};for(let{bindTo:u,ref:p}of s.provides)r[u]=chunkIXZG74EW_cjs.a.resolve(t,p);}else r={...t.card_data,...t.computed_values};let n={...t.card_data,...t.computed_values};return o.set(s.id,n),d()(c.callbackToken,r),"task-initiated"}}exports.a=z;exports.b=V;exports.c=ee;exports.d=te;exports.e=ne;exports.f=K;exports.g=se;exports.h=re;exports.i=ce;exports.j=de;exports.k=ue;exports.l=X;exports.m=pe;exports.n=fe;exports.o=ge;exports.p=ke;//# sourceMappingURL=chunk-JAL25FGA.cjs.map
|
|
2
|
+
//# sourceMappingURL=chunk-JAL25FGA.cjs.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
var a=class{runs=new Map;data=new Map;async saveRunState(t,e){this.runs.set(t,{...e});}async loadRunState(t){let e=this.runs.get(t);return e?{...e}:null}async deleteRunState(t){this.runs.delete(t),this.data.delete(t);}async setData(t,e,s){this.data.has(t)||this.data.set(t,{});let n=this.data.get(t);n[e]=s;}async getData(t,e){return this.data.get(t)?.[e]}async getAllData(t){return {...this.data.get(t)??{}}}async clearData(t){this.data.delete(t);}async listRuns(){return Array.from(this.runs.keys())}clear(){this.runs.clear(),this.data.clear();}};export{a};//# sourceMappingURL=chunk-JM5EKT57.js.map
|
|
2
|
+
//# sourceMappingURL=chunk-JM5EKT57.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import {createRequire}from'module';var y=createRequire(import.meta.url),u=y("./jsonata-sync.cjs"),p=u;function c(r,t){if(!t||!r)return;let s=t.split("."),e=r;for(let n=0;n<s.length;n++){if(e==null)return;e=e[s[n]];}return e}function l(r,t,s){let e=t.split("."),n=r;for(let o=0;o<e.length-1;o++)(n[e[o]]==null||typeof n[e[o]]!="object")&&(n[e[o]]={}),n=n[e[o]];n[e[e.length-1]]=s;}async function m(r,t){if(!r?.compute?.length)return r;r.card_data||(r.card_data={}),r.computed_values={},r._sourcesData=t?.sourcesData??{};let s=r.requires??{},e={card_data:r.card_data,requires:s,expects_data:s,fetched_sources:r._sourcesData,data:r.computed_values,computed_values:r.computed_values};for(let n of r.compute)try{let o=await u(n.expr).evaluate(e);l(r.computed_values,n.bindTo,o),e.computed_values=r.computed_values;}catch{}return r}function g(r,t){if(!r?.compute?.length)return {ok:true,node:r};r.card_data||(r.card_data={}),r.computed_values={},r._sourcesData=t?.sourcesData??{};let s=r.requires??{},e={card_data:r.card_data,requires:s,expects_data:s,fetched_sources:r._sourcesData,data:r.computed_values,computed_values:r.computed_values},n=[];for(let o of r.compute)try{let a=p(o.expr).evaluate(e);l(r.computed_values,o.bindTo,a),e.computed_values=r.computed_values;}catch(a){let i=a instanceof Error?a.message:String(a);n.push({bindTo:o.bindTo,error:i});}return n.length>0?{ok:true,node:r,errors:n}:{ok:true,node:r}}async function b(r,t,s){let e={...s??{},card_data:t.card_data??{},requires:t.requires??{},fetched_sources:t._sourcesData??{},computed_values:t.computed_values??{}};return u(r).evaluate(e)}function _(r,t){return t.startsWith("fetched_sources.")?c(r._sourcesData??{},t.slice(16)):c(r,t)}var d=new Set(["metric","table","editable-table","chart","form","filter","list","notes","todo","alert","narrative","badge","text","markdown","ref","custom","actions"]),v=new Set(["id","meta","requires","provides","view","card_data","compute","source_defs"]);function h(r){let t=[];if(!r||typeof r!="object"||Array.isArray(r))return {ok:false,errors:["Node must be a non-null object"]};let s=r;(typeof s.id!="string"||!s.id)&&t.push("id: required, must be a non-empty string");for(let e of Object.keys(s))v.has(e)||t.push(`Unknown top-level key: "${e}"`);if((s.card_data==null||typeof s.card_data!="object"||Array.isArray(s.card_data))&&t.push("card_data: required, must be an object"),s.meta!=null)if(typeof s.meta!="object"||Array.isArray(s.meta))t.push("meta: must be an object");else {let e=s.meta;e.title!=null&&typeof e.title!="string"&&t.push("meta.title: must be a string"),e.tags!=null&&!Array.isArray(e.tags)&&t.push("meta.tags: must be an array");}if(s.requires!=null&&!Array.isArray(s.requires)&&t.push("requires: must be an array of strings"),s.provides!=null&&(Array.isArray(s.provides)?s.provides.forEach((e,n)=>{if(!e||typeof e!="object"||Array.isArray(e))t.push(`provides[${n}]: must be an object with bindTo and ref`);else {let o=e;(typeof o.bindTo!="string"||!o.bindTo)&&t.push(`provides[${n}]: missing required "bindTo" string`),(typeof o.ref!="string"||!o.ref)&&t.push(`provides[${n}]: missing required "ref" string`);}}):t.push("provides: must be an array of { bindTo, ref } bindings")),s.compute!=null&&(Array.isArray(s.compute)?s.compute.forEach((e,n)=>{if(!e||typeof e!="object"||Array.isArray(e))t.push(`compute[${n}]: must be a compute step object`);else {let o=e;(typeof o.bindTo!="string"||!o.bindTo)&&t.push(`compute[${n}]: missing required "bindTo" property`),(typeof o.expr!="string"||!o.expr)&&t.push(`compute[${n}]: missing required "expr" string (JSONata expression)`);}}):t.push("compute: must be an array of compute steps")),s.source_defs!=null)if(!Array.isArray(s.source_defs))t.push("source_defs: must be an array");else {let e=new Set,n=new Set;s.source_defs.forEach((o,a)=>{if(!o||typeof o!="object"||Array.isArray(o))t.push(`source_defs[${a}]: must be an object`);else {let i=o;typeof i.bindTo!="string"||!i.bindTo?t.push(`source_defs[${a}]: missing required "bindTo" property`):(e.has(i.bindTo)&&t.push(`source_defs[${a}]: bindTo "${i.bindTo}" is not unique across source_defs`),e.add(i.bindTo)),typeof i.outputFile!="string"||!i.outputFile?t.push(`source_defs[${a}]: missing required "outputFile" property`):(n.has(i.outputFile)&&t.push(`source_defs[${a}]: outputFile "${i.outputFile}" is not unique across source_defs`),n.add(i.outputFile)),i.optionalForCompletionGating!=null&&typeof i.optionalForCompletionGating!="boolean"&&t.push(`source_defs[${a}]: optionalForCompletionGating must be a boolean`);}});}if(s.view!=null)if(typeof s.view!="object"||Array.isArray(s.view))t.push("view: must be an object");else {let e=s.view;!Array.isArray(e.elements)||e.elements.length===0?t.push("view.elements: required, must be a non-empty array"):e.elements.forEach((n,o)=>{if(!n||typeof n!="object"){t.push(`view.elements[${o}]: must be an object`);return}!n.kind||typeof n.kind!="string"?t.push(`view.elements[${o}].kind: required, must be a string`):d.has(n.kind)||t.push(`view.elements[${o}].kind: unknown kind "${n.kind}". Valid: ${[...d].join(", ")}`),n.data!=null&&(typeof n.data!="object"||Array.isArray(n.data))&&t.push(`view.elements[${o}].data: must be an object`);}),e.layout!=null&&(typeof e.layout!="object"||Array.isArray(e.layout))&&t.push("view.layout: must be an object"),e.features!=null&&(typeof e.features!="object"||Array.isArray(e.features))&&t.push("view.features: must be an object");}return {ok:t.length===0,errors:t}}async function k(r,t){if(!r||r.length===0)return [];let s={card_data:t.card_data??{},requires:t.requires??{}};return Promise.all(r.map(async e=>{let n={};if(e.projections&&typeof e.projections=="object"&&!Array.isArray(e.projections)){for(let[o,a]of Object.entries(e.projections))if(typeof a=="string"&&a.trim().length>0)try{n[o]=await u(a).evaluate(s);}catch{n[o]=void 0;}}return {...e,_projections:n}}))}function w(r,t){if(!r||r.length===0)return [];let s={card_data:t.card_data??{},requires:t.requires??{}};return r.map(e=>{let n={};if(e.projections&&typeof e.projections=="object"&&!Array.isArray(e.projections)){for(let[o,a]of Object.entries(e.projections))if(typeof a=="string"&&a.trim().length>0)try{n[o]=p(a).evaluate(s);}catch{n[o]=void 0;}}return {...e,_projections:n}})}var j={run:m,runSync:g,eval:b,resolve:_,validate:h,enrichSources:k,enrichSourcesSync:w},C=j;export{j as a,C as b};//# sourceMappingURL=chunk-JMDHDY6M.js.map
|
|
2
|
+
//# sourceMappingURL=chunk-JMDHDY6M.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
function y(d){function s(a){return {status:"success",data:a}}function t(a){return {status:"fail",error:a}}function o(a){return {status:"error",error:a instanceof Error?a.message:String(a)}}function m(a){if(Array.isArray(a))return a;if(a&&typeof a=="object"){let r=a;return Array.isArray(r.files)?r.files:[a]}return null}return {get(a){try{let r=a.params?.id;if(r){let n=d.readCard(r);return n?s({cards:[n]}):t(`card "${r}" not found`)}return s({cards:d.readAllCards()})}catch(r){return o(r)}},set(a){try{let r=a.body;if(r==null)return t("set requires a body (card object or array of cards)");let n=Array.isArray(r)?r:[r];for(let e of n){if(typeof e.id!="string")return t("each card must have a string `id` field");d.writeCard(e.id,e);}return s({count:n.length})}catch(r){return o(r)}},del(a){try{let r=a.body?.ids??[],n=a.params?.id,e=n?[...r,n]:r;if(e.length===0)return t("del requires body.ids (string[]) or params.id");for(let i of e)d.removeCard(i);return s({count:e.length})}catch(r){return o(r)}},patch(a){try{let r=a.params?.id,n=a.params?.path;if(!r)return t("patch requires params.id");if(!n)return t("patch requires params.path");let e=a.body,i=e&&Object.prototype.hasOwnProperty.call(e,"value")?e.value:a.body;return d.patchCard(r,n,i),s({count:1})}catch(r){return o(r)}},appendFiles(a){try{let r=a.params?.id;if(!r)return t("appendFiles requires params.id");let n=d.readCard(r);if(!n)return t(`card "${r}" not found`);let e=m(a.body);if(!e||e.length===0)return t("appendFiles requires a file metadata object, array, or body.files array");let i=n.card_data&&typeof n.card_data=="object"&&!Array.isArray(n.card_data)?n.card_data:{},u=Array.isArray(i.files)?i.files:[],l=[...u,...e],f=e.map((p,C)=>({idx:u.length+C,entry:p})),c=this.patch({params:{id:r,path:"card_data.files"},body:{value:l}});return c.status!=="success"?c:s({files_added:f})}catch(r){return o(r)}}}}export{y as a};//# sourceMappingURL=chunk-KBELAKIY.js.map
|
|
2
|
+
//# sourceMappingURL=chunk-KBELAKIY.js.map
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
'use strict';function i(s){return btoa(s).replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"")}function a(s){return atob(s.replace(/-/g,"+").replace(/_/g,"/"))}var o=class{constructor(t){this.kv=t;}kv;stateKey(t){return `state_${i(t)}`}dataPrefix(t){return `data_${i(t)}_`}dataKey(t,e){return `${this.dataPrefix(t)}${i(e)}`}async saveRunState(t,e){this.kv.write(this.stateKey(t),e);}async loadRunState(t){let e=this.kv.read(this.stateKey(t));return e!=null&&typeof e=="object"?e:null}async deleteRunState(t){this.kv.delete(this.stateKey(t));for(let e of this.kv.listKeys(this.dataPrefix(t)))this.kv.delete(e);}async setData(t,e,r){this.kv.write(this.dataKey(t,e),r);}async getData(t,e){return this.kv.read(this.dataKey(t,e))}async getAllData(t){let e=this.dataPrefix(t),r={};for(let n of this.kv.listKeys(e))r[a(n.slice(e.length))]=this.kv.read(n);return r}async clearData(t){for(let e of this.kv.listKeys(this.dataPrefix(t)))this.kv.delete(e);}async listRuns(){return this.kv.listKeys("state_").map(t=>a(t.slice(6)))}};
|
|
2
|
+
exports.a=o;//# sourceMappingURL=chunk-KHJABJ45.cjs.map
|
|
3
|
+
//# sourceMappingURL=chunk-KHJABJ45.cjs.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
'use strict';async function y(u,f){let{concurrency:B=5,processor:w,onItemComplete:I,onItemError:R,onProgress:x,signal:T}=f,t=u.length,a=new Array(t),m=Date.now(),r=0,o=0,l=0;function g(c){let n=r+o;return {completed:r,failed:o,active:c,pending:t-n-c,total:t,percent:t===0?100:Math.round(n/t*100),elapsedMs:Date.now()-m}}return t===0?{items:[],completed:0,failed:0,total:0,durationMs:0}:new Promise(c=>{let n=0;function d(){for(;n<B&&l<t;){if(T?.aborted){for(;l<t;){let e=l++;a[e]={item:u[e],index:e,status:"failed",error:new Error("Batch aborted"),durationMs:0},o++;}n===0&&r+o===t&&c({items:a,completed:r,failed:o,total:t,durationMs:Date.now()-m});break}let s=l++,i=u[s];n++;let h=Date.now();w(i,s).then(e=>{a[s]={item:i,index:s,status:"completed",result:e,durationMs:Date.now()-h},r++,I?.(i,e,s);}).catch(e=>{let p=e instanceof Error?e:new Error(String(e));a[s]={item:i,index:s,status:"failed",error:p,durationMs:Date.now()-h},o++,R?.(i,p,s);}).finally(()=>{n--,x?.(g(n)),r+o===t?c({items:a,completed:r,failed:o,total:t,durationMs:Date.now()-m}):d();});}}d();})}exports.a=y;//# sourceMappingURL=chunk-KLRUISRY.cjs.map
|
|
2
|
+
//# sourceMappingURL=chunk-KLRUISRY.cjs.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
'use strict';var chunkIXZG74EW_cjs=require('./chunk-IXZG74EW.cjs');function w(o,i){if(o?.status==="success")return Object.prototype.hasOwnProperty.call(o,"data")?o.data:void 0;throw o?.status==="fail"||o?.status==="error"?new Error(o.error||`${i} failed`):new Error(`${i} returned an unexpected response`)}function z(o,i){if(o?.status==="success"&&Object.prototype.hasOwnProperty.call(o,"data"))return o.data;throw o?.status==="success"?new Error(`${i} returned success without data`):o?.status==="fail"||o?.status==="error"?new Error(o.error||`${i} failed`):new Error(`${i} returned an unexpected response`)}function t(o){return o&&typeof o=="object"&&!Array.isArray(o)?o:{}}function b(o){return Array.isArray(o)?o:[]}function N(o,i){if(typeof i!="string"||i.length===0)return;let u=o,m=i;m.startsWith("fetched_sources.")&&(u=t(o).fetched_sources,m=m.slice(16));for(let k of m.split(".")){if(u==null||typeof u!="object")return;u=u[k];}return u}function $(o,i){let u=t(o.view),m=b(u.elements);return {layout:u.layout,features:u.features,elements:m.map((k,x)=>{let v=t(k),I=t(v.data),B=typeof v.visible=="string"?!!N(i,v.visible):true,U=typeof I.bind=="string"?I.bind:void 0,M=typeof I.maxRows=="number"?I.maxRows:void 0,P=U?N(i,U):void 0,q={id:typeof v.id=="string"&&v.id?v.id:`element-${x}`,kind:v.kind,label:v.label,visible:B};return P!==void 0&&(q.resolved=Array.isArray(P)&&typeof M=="number"?P.slice(0,M):P),q})}}function K(o,i){let u=typeof o.id=="string"&&o.id?o.id:"card",m=b(o.provides),k=m.length>0?m:[{bindTo:u,ref:"card_data"}],x={};for(let v of k){let I=t(v),B=typeof I.bindTo=="string"?I.bindTo:"",U=typeof I.ref=="string"?I.ref:"";if(!B||!U)continue;let M=N(i,U);M!==void 0&&(x[B]=M);}return x}function ie(o){if(typeof o!="string"||!o.trim())return null;let i=/^(file uploaded|AI generated|AI geneterated):\s*.*?#(\d+)\s*$/i.exec(o.trim());if(!i)return null;let u=Number.parseInt(i[2],10);return !Number.isInteger(u)||u<0?null:u}function ce(o){return {"card-content":o}}function O(o){let{meta:i,...u}=o;return u}function ue(o,i){return Object.prototype.hasOwnProperty.call(o,i)}function W(o){return t(o.meta).__visible_controlplane_only===true}function L(o,i){let u=w(o.get({params:{id:i}}),"cardStore.get"),m=Array.isArray(u?.cards)?u.cards:[];if(m.length===0)throw new Error(`Card "${i}" not found`);return m[0]}function me(o){let{board:i,nonCore:u,cardStore:m,chatStore:k,uploadCardFile:x,buildFileDownloadUrl:v,readFetchedSourceJsonByRef:I}=o;function B(r){if(Array.isArray(r.bytes))return new Uint8Array(r.bytes.map(e=>Math.max(0,Math.min(255,Number(e)||0))));if(typeof r.text=="string")return new TextEncoder().encode(r.text);if(typeof r.base64=="string"){let e=String(r.base64).replace(/-/g,"+").replace(/_/g,"/"),n=e+"=".repeat((4-e.length%4)%4),s=atob(n);return Uint8Array.from(s,a=>a.charCodeAt(0))}throw new Error("file entry requires bytes, text, or base64")}async function U(){let r=t(await J(u.describeTaskExecutorCapabilities({}),"describeTaskExecutorCapabilities"));return {version:r.version,commonSourceFields:t(r.commonSourceDefFields),sourceKinds:t(r.sourceKinds)}}function M(){let r=t(w(i.status({}),"status")),e=t(r.summary),n=b(r.cards);return {meta:t(r.meta),summary:{card_count:typeof e.card_count=="number"?e.card_count:0,completed:typeof e.completed=="number"?e.completed:0,eligible:typeof e.eligible=="number"?e.eligible:0,pending:typeof e.pending=="number"?e.pending:0,blocked:typeof e.blocked=="number"?e.blocked:0,in_progress:typeof e.in_progress=="number"?e.in_progress:0,failed:typeof e.failed=="number"?e.failed:0,unresolved:typeof e.unresolved=="number"?e.unresolved:0},cards:n.map(s=>{let a=t(s);return {"card-id":typeof a.name=="string"?a.name:null,status:a.status??null,error:a.error??null,requires:b(a.requires),requires_satisfied:b(a.requires_satisfied),requires_missing:b(a.requires_missing),provides_declared:b(a.provides_declared),provides_runtime:b(a.provides_runtime)}})}}function P(r){let e=String(r.cardId||"").trim();if(!e)throw new Error("inspectCardDefinitionAndRuntime requires cardId");let n=t(w(i.status({}),"status")),a=b(n.cards).map(t).find(p=>p.name===e);if(!a)throw new Error(`card "${e}" not found in board status`);let d=t(L(m,e));if(W(d))throw Object.assign(new Error(`card "${e}" not found`),{statusCode:404});let f=O(d),c=b(a.requires_satisfied).filter(p=>typeof p=="string"&&!!p),g=b(a.provides_runtime).filter(p=>typeof p=="string"&&!!p),R=Object.fromEntries(c.map(p=>[p,w(i.getOutputsDataObject({params:{key:p}}),`getOutputsDataObject(${p})`)])),h=Object.fromEntries(g.map(p=>[p,w(i.getOutputsDataObject({params:{key:p}}),`getOutputsDataObject(${p})`)])),C=t(w(i.getOutputsComputedValues({params:{key:e}}),"getOutputsComputedValues")),l=w(i.getOutputsFetchedSources({params:{key:e}}),"getOutputsFetchedSources"),_=b(d.source_defs).map(t),y={};for(let p of _)typeof p.bindTo=="string"&&typeof p.outputFile=="string"&&(y[p.outputFile]=p.bindTo);let S={};for(let[p,j]of Object.entries(l)){let T=y[p]??p;if(!I||typeof j!="string"){S[T]=null;continue}try{S[T]=I({cardId:e,ref:j});}catch{S[T]=null;}}let A={card_data:t(d.card_data),requires:R,fetched_sources:S,computed_values:C};return {cardId:e,card_status_in_board:a,card_definition_and_static_data:f,refs_for_fetched_source_files:l,runtime_data:{requires:R,provides:h,computed_values:C,rendered_view:$(d,A)}}}function q(r){let e=String(r.cardId||"").trim();if(!e)throw new Error("inspectChatMessagesOnCards requires cardId");let n=typeof r.turnId=="string"?r.turnId:"",s=r.allTurns===true,a=typeof r.tailTurnsBeforeId=="string"?r.tailTurnsBeforeId:"",d=s?void 0:r.lastUserTurns??(n?void 0:1),f=r.tail,c={...d===void 0?{}:{tailTurns:d},...n?{turnId:n}:{},...s?{allTurns:true}:{},...a?{tailTurnsBeforeId:a}:{}},g=Object.keys(c).length>0?{params:{cardId:e},body:c}:{params:{cardId:e}},R=w(k.readAll(g),"chatStore.readAll"),h=t(L(m,e)),C=b(t(h.card_data).files).map((y,S)=>({idx:S,stored_name:t(y).stored_name})).filter(y=>typeof y.stored_name=="string"&&y.stored_name.length>0),_=(Array.isArray(R.records)?R.records:[]).map(y=>{let A=t(y.payload),p={...y},j=typeof y?.role=="string"?y.role:typeof A.role=="string"?String(A.role):"",T=typeof y?.text=="string"?y.text:typeof A.text=="string"?String(A.text):"";if(j==="system"){let D=ie(T);if(D!==null&&C.some(E=>E.idx===D)){let E=`Retrieve using inspect-file-contents --card-id ${e} --file-idx ${D}`;p.retrieval_hint=E,Object.keys(A).length>0&&typeof y.role!="string"&&(p.payload={...A,retrieval_hint:E});}}return p});return {cardId:e,messages:typeof f=="number"&&f>=0?_.slice(-f):_}}function H(r){let e=String(r.cardId||"").trim(),n=Number(r.fileIdx);if(!e)throw new Error("inspectFileContents requires cardId");if(!Number.isInteger(n)||n<0)throw new Error("inspectFileContents requires fileIdx to be a non-negative integer");let s=t(L(m,e)),a=b(t(s.card_data).files).map(t);if(n>=a.length)throw new Error(`attachment index ${n} is out of range for card "${e}"`);let d=a[n],f=typeof d.stored_name=="string"?d.stored_name:null;return {cardId:e,fileIdx:n,downloadUrl:v({cardId:e,fileIdx:n,storedName:f}),...typeof d.name=="string"?{name:d.name}:{},...typeof d.stored_name=="string"?{stored_name:d.stored_name}:{},...typeof d.mime_type=="string"?{mime_type:d.mime_type}:{},...typeof d.size=="number"?{size:d.size}:{},...typeof d.uploaded_at=="string"?{uploaded_at:d.uploaded_at}:{}}}async function F(r){return await u.validateCardPreflight({body:ce(r.candidateCardContent)})}function G(r){if(!r.mockRequires||typeof r.mockRequires!="object"||Array.isArray(r.mockRequires))throw new Error("preflightMaterializeCandidateCard requires mockRequires");if(!r.mockFetchedSources||typeof r.mockFetchedSources!="object"||Array.isArray(r.mockFetchedSources))throw new Error("preflightMaterializeCandidateCard requires mockFetchedSources");let e=u.evalCardCompute({body:{"card-content":r.candidateCardContent,"mock-requires":r.mockRequires,"mock-fetched-sources":r.mockFetchedSources}});if(e.status!=="success")return e;let n=t(z(e,"evalCardCompute")),s=t(r.candidateCardContent),a={card_data:t(s.card_data),requires:t(r.mockRequires),fetched_sources:t(r.mockFetchedSources),computed_values:t(n.computed_values)};return {status:"success",data:{cardId:typeof n.cardId=="string"?n.cardId:typeof s.id=="string"?s.id:"(unknown)",ok:n.ok===true,computed_values:t(n.computed_values),errors:b(n.errors).map(d=>{let f=t(d);return {bindTo:typeof f.bindTo=="string"?f.bindTo:"",error:typeof f.error=="string"?f.error:""}}),provides_outputs:K(s,a),rendered_view:$(s,a)}}}async function Q(r){return await u.probeSourcePreflight({params:{sourceIdx:r.sourceIdx},body:{"card-content":r.candidateCardContent,"mock-projections":r.mockProjections}})}async function X(r){return await u.runSourcePreflight({params:{sourceIdx:r.sourceIdx},body:{"card-content":r.candidateCardContent,"mock-projections":r.mockProjections}})}async function Y(r){let e=String(r.cardId||"").trim();if(!e)throw new Error("preflightRunSingleSourceInLiveCard requires cardId");if(!r.mockRequires||typeof r.mockRequires!="object"||Array.isArray(r.mockRequires))throw new Error("preflightRunSingleSourceInLiveCard requires mockRequires");let n=t(L(m,e)),s=b(n.source_defs).filter(d=>!!d&&typeof d=="object"&&!Array.isArray(d)),a={};if(r.sourceIdx>=0&&r.sourceIdx<s.length){let d=s[r.sourceIdx],f=chunkIXZG74EW_cjs.a.enrichSourcesSync([d],{card_data:t(n.card_data),requires:r.mockRequires});Array.isArray(f)&&f.length>0&&(a=t(f[0]._projections));}return await u.runSourcePreflight({params:{sourceIdx:r.sourceIdx},body:{"card-content":n,"mock-requires":r.mockRequires,"mock-projections":a}})}async function Z(r){let e=t(await J(u.simulateCardCycle({body:{"card-content":r.candidateCardContent,"mock-requires":r.mockRequires}}),"simulateCardCycle")),n=t(r.candidateCardContent),s=t(e.validation),a=b(e.source_probes),d=b(e.projection_errors),f=t(e.fetched_sources),c=b(e.compute_errors),g=t(e.computed_values),R={card_data:t(n.card_data),requires:r.mockRequires,fetched_sources:f,computed_values:g},h=[];for(let C of b(s.issues))typeof C=="string"&&C&&h.push(C);for(let C of a){let l=t(C),_=typeof l.bindTo=="string"?l.bindTo:"source",y=typeof l.error=="string"?l.error:"";y&&h.push(`${_}: ${y}`);}for(let C of d){let l=t(C),_=typeof l.bindTo=="string"?l.bindTo:"source",y=typeof l.key=="string"?l.key:"projection",S=typeof l.error=="string"?l.error:"projection failed";h.push(`${_}.${y}: ${S}`);}for(let C of c){let l=t(C),_=typeof l.bindTo=="string"?l.bindTo:"compute",y=typeof l.error=="string"?l.error:"compute failed";h.push(`${_}: ${y}`);}return {status:"success",data:{cardId:typeof e.cardId=="string"?e.cardId:"(unknown)",ok:e.ok===true,issues:h,provides_outputs:K(n,R),rendered_view:$(n,R)}}}function ee(r){let e=String(r.cardId||"").trim();if(!e)throw new Error("manageReadCard requires cardId");let n=w(m.get({params:{id:e}}),"cardStore.get"),s=Array.isArray(n.cards)?n.cards.map(t):[];if(s.some(W))throw Object.assign(new Error(`Card "${e}" not found`),{statusCode:404});return s.map(a=>O(a))}function re(r){let e=String(r.cardId||"").trim(),n=String(r.role||"").trim(),s=typeof r.text=="string"?r.text:"",a=typeof r.turn=="string"?r.turn:"";if(!e)throw new Error("manageAddChatEntryAndAnyAttachments requires cardId");if(!n)throw new Error("manageAddChatEntryAndAnyAttachments requires role");if(n==="assistant"&&a){let c=w(k.readAll({params:{cardId:e},body:{turnId:a}}),"chatStore.readAll(existing turn messages)"),g=Array.isArray(c.records)?c.records.find(R=>R.role==="assistant"&&String(R.turn||"")===a):void 0;if(g)return {status:"success",data:{cardId:e,id:String(g.id),role:n,turn:a,files:Array.isArray(g.files)?g.files:[]}}}let d=b(r.files).map(c=>{let g=t(c),R=String(g.file_name??g.fileName??g.name??"").trim(),h=String(g.content_type??g.contentType??"application/octet-stream");if(!R)throw new Error("file entry requires file_name");return x({cardId:e,fileName:R,contentType:h,bytes:B(g)}).file});d.forEach((c,g)=>{let R=n==="assistant"?`AI generated: ${String(c.name||"")} as ${String(c.stored_name||"")} #${g}`:`file uploaded: ${String(c.name||"")} as ${String(c.stored_name||"")} #${g}`;w(k.append({params:{cardId:e},body:{role:"system",text:R,files:[],turn:a}}),"chatStore.append(system attachment message)");});let f=w(k.append({params:{cardId:e},body:{role:n,text:s,files:d,turn:a}}),"chatStore.append");return {status:"success",data:{cardId:e,id:String(f.id),role:n,turn:a,files:d}}}async function te(r){let e=String(r.cardId||"").trim(),n=t(r.candidateCardContent),s=O(n);if(!e)throw new Error("manageUpsertCard requires cardId");if(typeof s.id!="string"||!s.id.trim())throw new Error("candidateCardContent.id must be a non-empty string");if(s.id!==e)throw new Error(`candidateCardContent.id must match cardId (${e})`);let a=await F({candidateCardContent:s}),d=t(a),f=t(d.data);if(d.status!=="success"||f.isValid!==true)return {status:"fail",step:"validate",validation:a};let c=null;try{c=L(m,e);}catch{c=null;}let g=c&&ue(t(c),"meta")?{...s,meta:t(c).meta}:s,R=m.set({body:g});w(R,"cardStore.set");let h;try{h=i.upsertCard({params:{cardId:e,restart:!0}}),w(h,"upsertCard");}catch(l){try{c&&m.set({body:c});}catch{}throw l}let C=null;try{C=i.cardRefreshedNotify({params:{cardId:e}}),w(C,"cardRefreshedNotify");}catch{C=null;}return {status:"success",data:{validation:a,card_saved:null,board_result:h,refresh_notify:C}}}function ne(r){let e=String(r.cardId||"").trim();if(!e)throw new Error("manageRemoveCard requires cardId");let n=i.removeCard({params:{id:e}});w(n,"removeCard");let s=m.del({params:{id:e}});return w(s,"cardStore.del"),{status:"success",data:{board_result:n,store_result:s}}}function oe(r){let e=String(r.cardId||"").trim();if(!e)throw new Error("adminReadCard requires cardId");let n=w(m.get({params:{id:e}}),"cardStore.get");return Array.isArray(n.cards)?n.cards.map(s=>t(s)):[]}async function ae(r){let e=String(r.cardId||"").trim(),n=t(r.candidateCardContent),s=O(n);if(!e)throw new Error("adminUpsertCard requires cardId");if(typeof s.id!="string"||!s.id.trim())throw new Error("candidateCardContent.id must be a non-empty string");if(s.id!==e)throw new Error(`candidateCardContent.id must match cardId (${e})`);let a=await F({candidateCardContent:s}),d=t(a),f=t(d.data);if(d.status!=="success"||f.isValid!==true)return {status:"fail",step:"validate",validation:a};let c=null;try{c=L(m,e);}catch{c=null;}let g=c?t(t(c).meta):{},R={...s,meta:{...g,__visible_controlplane_only:true}},h=m.set({body:R});w(h,"cardStore.set");let C;try{C=i.upsertCard({params:{cardId:e,restart:!0}}),w(C,"upsertCard");}catch(_){try{c&&m.set({body:c});}catch{}throw _}let l=null;try{l=i.cardRefreshedNotify({params:{cardId:e}}),w(l,"cardRefreshedNotify");}catch{l=null;}return {status:"success",data:{validation:a,card_saved:null,board_result:C,refresh_notify:l}}}function se(r){let e=String(r.cardId||"").trim();if(!e)throw new Error("getChatProcessing requires cardId");let n=z(k.isProcessing({params:{cardId:e}}),"chatStore.isProcessing");return {cardId:e,active:!!n.active}}function de(r){let e=String(r.cardId||"").trim();if(!e)throw new Error("setChatProcessing requires cardId");if(typeof r.active!="boolean")throw new Error("setChatProcessing requires boolean active");return w(k.setProcessing({params:{cardId:e},body:{active:r.active}}),"chatStore.setProcessing"),{cardId:e,active:r.active}}return {discoverSourceKinds:U,inspectBoardRuntimeStatus:M,inspectCardDefinitionAndRuntime:P,inspectChatMessagesOnCards:q,inspectFileContents:H,preflightValidateCandidateCardDefinition:F,preflightMaterializeCandidateCard:G,preflightProbeSingleSourceInCandidateCard:Q,preflightRunSingleSourceInCandidateCard:X,preflightRunSingleSourceInLiveCard:Y,preflightRunOneCycleWithCandidateCard:Z,manageReadCard:ee,manageAddChatEntryAndAnyAttachments:re,manageUpsertCard:te,manageRemoveCard:ne,adminReadCard:oe,adminUpsertCard:ae,getChatProcessing:se,setChatProcessing:de}}async function J(o,i){return w(await o,i)}exports.a=me;//# sourceMappingURL=chunk-KNFFDVLD.cjs.map
|
|
2
|
+
//# sourceMappingURL=chunk-KNFFDVLD.cjs.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import {a as a$1}from'./chunk-CWREBRXS.js';function i(e,t){let n;return /\.m?js$/i.test(e)?n="local-node":/\.py$/i.test(e)?n="local-python":n="local-process",{meta:"task-executor",howToRun:n,whatToRun:a$1({kind:"fs-path",value:e}),...t?{extra:t}:{}}}function s(e){return JSON.stringify(e)}function a(e){let t;try{t=JSON.parse(e);}catch{throw new Error(`parseExecutionRef: invalid JSON \u2014 ${e}`)}if(typeof t!="object"||t===null||typeof t.howToRun!="string"||typeof t.whatToRun!="string")throw new Error(`parseExecutionRef: missing required fields howToRun/whatToRun \u2014 ${e}`);return t}export{i as a,s as b,a as c};//# sourceMappingURL=chunk-LBMEVV4U.js.map
|
|
2
|
+
//# sourceMappingURL=chunk-LBMEVV4U.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import {a}from'./chunk-CWREBRXS.js';import {createRequire}from'module';import {fileURLToPath}from'url';import {dirname,resolve}from'path';import {existsSync}from'fs';var f=dirname(fileURLToPath(import.meta.url)),E=createRequire(import.meta.url);function w(){let e=resolve(f,"./jsonata-sync.cjs");return existsSync(e)?e:resolve(f,"../../card-compute/jsonata-sync.cjs")}var p=E(w());function u(e){e.registerFunction("fsPathRef",s=>a({kind:"fs-path",value:String(s)}),"<s:s>");}function R(e,s,c){if(!e||typeof e!="object")return {};let i={};if(Array.isArray(e.cmdTemplate)){let r=[];for(let n of e.cmdTemplate)try{let a=p(n);u(a),r.push(String(a.evaluate(s)));}catch(a){let t=a instanceof Error?a.message:String(a);throw new Error(`[${c}] argsMassaging.cmdTemplate failed on "${n}": ${t}`)}i.cmdArgs=r;}if(typeof e.stdinTemplate=="string")try{let r=p(e.stdinTemplate);u(r),i.stdin=r.evaluate(s);}catch(r){let n=r instanceof Error?r.message:String(r);throw new Error(`[${c}] argsMassaging.stdinTemplate failed: ${n}`)}if(typeof e.urlTemplate=="string")try{let r=p(e.urlTemplate);u(r),i.url=String(r.evaluate(s));}catch(r){let n=r instanceof Error?r.message:String(r);throw new Error(`[${c}] argsMassaging.urlTemplate failed: ${n}`)}if(typeof e.headerTemplate=="string")try{let r=p(e.headerTemplate);u(r);let n=r.evaluate(s);if(typeof n!="object"||n===null)throw new Error(`headerTemplate must produce an object, got: ${JSON.stringify(n)}`);i.headers=n;}catch(r){let n=r instanceof Error?r.message:String(r);throw new Error(`[${c}] argsMassaging.headerTemplate failed: ${n}`)}if(typeof e.bodyTemplate=="string")try{let r=p(e.bodyTemplate);u(r),i.body=r.evaluate(s);}catch(r){let n=r instanceof Error?r.message:String(r);throw new Error(`[${c}] argsMassaging.bodyTemplate failed: ${n}`)}return i}function _(e,s,c){if(!e||typeof e!="object")return s;let i={output:s},r=s.result,n=s.data,a=s.error;if(typeof e.resultExpr=="string")try{let t=p(e.resultExpr);u(t);let o=t.evaluate(i);if(typeof o!="string"||!o.trim())throw new Error(`resultExpr did not produce a non-empty string (got ${JSON.stringify(o)})`);r=o;}catch(t){let o=t instanceof Error?t.message:String(t);throw new Error(`[${c}] outputTransforms.resultExpr failed: ${o}`)}if(typeof e.dataTemplate=="string")try{let t=p(e.dataTemplate);u(t);let o=t.evaluate(i);if(!o||typeof o!="object"||Array.isArray(o))throw new Error(`dataTemplate did not produce an object (got ${JSON.stringify(o)})`);n=o;}catch(t){let o=t instanceof Error?t.message:String(t);throw new Error(`[${c}] outputTransforms.dataTemplate failed: ${o}`)}if(typeof e.errorExpr=="string")try{let t=p(e.errorExpr);u(t);let o=t.evaluate(i);a=o!=null?String(o):void 0;}catch(t){let o=t instanceof Error?t.message:String(t);throw new Error(`[${c}] outputTransforms.errorExpr failed: ${o}`)}return a!==void 0?{result:r,data:n,error:a}:{result:r,data:n}}export{R as a,_ as b};//# sourceMappingURL=chunk-LDAP75GN.js.map
|
|
2
|
+
//# sourceMappingURL=chunk-LDAP75GN.js.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
'use strict';var f={NOT_STARTED:"not-started",RUNNING:"running",COMPLETED:"completed",FAILED:"failed",INACTIVATED:"inactivated"},I={CREATED:"created",RUNNING:"running",PAUSED:"paused",STOPPED:"stopped",COMPLETED:"completed",FAILED:"failed"},D={ALL_TASKS_DONE:"all-tasks-done",ALL_OUTPUTS_DONE:"all-outputs-done",ONLY_RESOLVED:"only-resolved",GOAL_REACHED:"goal-reached",MANUAL:"manual"},A={DEPENDENCY_MODE:"dependency-mode",ELIGIBILITY_MODE:"eligibility-mode"},y={ALPHABETICAL:"alphabetical",PRIORITY_FIRST:"priority-first",DURATION_FIRST:"duration-first",COST_OPTIMIZED:"cost-optimized",RESOURCE_AWARE:"resource-aware",RANDOM_SELECT:"random-select",USER_CHOICE:"user-choice",PARALLEL_ALL:"parallel-all",SKIP_CONFLICTS:"skip-conflicts",ROUND_ROBIN:"round-robin"},R={EXECUTION_MODE:"eligibility-mode",CONFLICT_STRATEGY:"alphabetical",COMPLETION_STRATEGY:"all-outputs-done",MAX_ITERATIONS:1e3};function c(t){return t?Array.isArray(t.provides)?t.provides:[]:[]}function p(t){return t?Array.isArray(t.requires)?t.requires:[]:[]}function G(t){return t.tasks??{}}function b(t,n){return t.tasks[n]}function L(t,n){return n in t.tasks}function U(t){return t?t.status===f.FAILED||t.status===f.INACTIVATED:false}function v(t){return t?.status===f.COMPLETED}function w(t){return t?.status===f.RUNNING}function h(t,n){return t.refreshStrategy??n?.refreshStrategy??"data-changed"}function N(t,n){return h(t,n)!=="once"}function P(t){return t.maxExecutions}function M(t,n){let e=new Set;for(let[r,o]of Object.entries(n))if(o.status===f.COMPLETED){let s=t.tasks[r];s&&c(s).forEach(a=>e.add(a));}return Array.from(e)}function H(t,n){let e={};return t.forEach(r=>{let o=n[r];if(!o)return;c(o).forEach(i=>{e[i]||(e[i]=[]),e[i].push(r);});}),e}function F(t,n,e,r){for(let o of e){if(o===t)continue;let s=c(r[o]);if(n.some(a=>s.includes(a)))return true}return false}function q(t,n){let e=c(t);return e.includes(n)?t:{...t,provides:[...e,n]}}function K(t,n){let e=c(t);return {...t,provides:e.filter(r=>r!==n)}}function j(t,n){let e=p(t);return e.includes(n)?t:{...t,requires:[...e,n]}}function Y(t,n){let e=p(t);return {...t,requires:e.filter(r=>r!==n)}}function B(t,n,e){return {...t,tasks:{...t.tasks,[n]:e}}}function O(){return {status:"not-started",executionCount:0,retryCount:0,lastEpoch:0,messages:[],progress:null}}function X(t,n){let e={};for(let r of Object.keys(t.tasks))e[r]=O();return {status:"running",tasks:e,availableOutputs:[],stuckDetection:{is_stuck:false,stuck_description:null,outputs_unresolvable:[],tasks_blocked:[]},lastUpdated:new Date().toISOString(),executionId:n,executionConfig:{executionMode:t.settings.execution_mode??"eligibility-mode",conflictStrategy:t.settings.conflict_strategy??"alphabetical",completionStrategy:t.settings.completion}}}function W(t,n,e){let r=t.tasks[n]??l(),o={};if(e){let i=e.tasks[n],a=p(i);for(let u of a)for(let[g,S]of Object.entries(e.tasks))if(c(S).includes(u)){let d=t.tasks[g];d?.lastDataHash&&(o[u]=d.lastDataHash);break}}let s={...r,status:"running",startedAt:new Date().toISOString(),lastUpdated:new Date().toISOString(),progress:0,error:void 0,startConsumedHashes:o};return {...t,tasks:{...t.tasks,[n]:s},lastUpdated:new Date().toISOString()}}function Z(t,n,e,r,o,s){let i=t.tasks[e]??l(),a=n.tasks[e];if(!a)throw new Error(`Task "${e}" not found in graph`);let u;r&&a.on&&a.on[r]?u=a.on[r]:u=c(a);let g=i.startConsumedHashes?{...i.startConsumedHashes}:{...i.lastConsumedHashes};if(!i.startConsumedHashes){let C=a.requires??[];for(let E of C)for(let[k,x]of Object.entries(n.tasks))if(c(x).includes(E)){let T=t.tasks[k];T?.lastDataHash&&(g[E]=T.lastDataHash);break}}let S={...i,status:"completed",completedAt:new Date().toISOString(),lastUpdated:new Date().toISOString(),executionCount:i.executionCount+1,lastEpoch:i.executionCount+1,lastDataHash:o,data:s,lastConsumedHashes:g,error:void 0},d=[...new Set([...t.availableOutputs,...u])];return {...t,tasks:{...t.tasks,[e]:S},availableOutputs:d,lastUpdated:new Date().toISOString()}}function $(t,n,e,r){let o=t.tasks[e]??l(),s=n.tasks[e];if(s?.retry){let u=o.retryCount+1;if(u<=s.retry.max_attempts){let g={...o,status:"not-started",retryCount:u,lastUpdated:new Date().toISOString(),error:r};return {...t,tasks:{...t.tasks,[e]:g},lastUpdated:new Date().toISOString()}}}let i={...o,status:"failed",failedAt:new Date().toISOString(),lastUpdated:new Date().toISOString(),error:r,executionCount:o.executionCount+1},a=t.availableOutputs;if(s?.on_failure&&s.on_failure.length>0&&(a=[...new Set([...t.availableOutputs,...s.on_failure])]),s?.circuit_breaker&&i.executionCount>=s.circuit_breaker.max_executions){let u=s.circuit_breaker.on_break;a=[...new Set([...a,...u])];}return {...t,tasks:{...t.tasks,[e]:i},availableOutputs:a,lastUpdated:new Date().toISOString()}}function J(t,n,e,r){let o=t.tasks[n]??l(),s={...o,progress:typeof r=="number"?r:o.progress,messages:[...o.messages??[],...e?[{message:e,timestamp:new Date().toISOString(),status:o.status}]:[]],lastUpdated:new Date().toISOString()};return {...t,tasks:{...t.tasks,[n]:s},lastUpdated:new Date().toISOString()}}function Q(t,n){let e=t.tasks[n];if(!e)return t;let r={...e,status:"not-started",startedAt:void 0,completedAt:void 0,failedAt:void 0,error:void 0,data:void 0,progress:null,lastUpdated:new Date().toISOString()};return {...t,tasks:{...t.tasks,[n]:r},lastUpdated:new Date().toISOString()}}function l(){return {status:"not-started",executionCount:0,retryCount:0,lastEpoch:0,messages:[],progress:null}}exports.A=X;exports.B=W;exports.C=Z;exports.D=$;exports.E=J;exports.F=Q;exports.a=f;exports.b=I;exports.c=D;exports.d=A;exports.e=y;exports.f=R;exports.g=c;exports.h=p;exports.i=G;exports.j=b;exports.k=L;exports.l=U;exports.m=v;exports.n=w;exports.o=h;exports.p=N;exports.q=P;exports.r=M;exports.s=H;exports.t=F;exports.u=q;exports.v=K;exports.w=j;exports.x=Y;exports.y=B;exports.z=O;//# sourceMappingURL=chunk-LODXIALE.cjs.map
|
|
2
|
+
//# sourceMappingURL=chunk-LODXIALE.cjs.map
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
'use strict';var chunk5DB54ZX2_cjs=require('./chunk-5DB54ZX2.cjs'),chunkUVE65IPR_cjs=require('./chunk-UVE65IPR.cjs'),chunkG4XXRHL2_cjs=require('./chunk-G4XXRHL2.cjs'),chunkIXZG74EW_cjs=require('./chunk-IXZG74EW.cjs'),chunkYMEIPKLW_cjs=require('./chunk-YMEIPKLW.cjs');function _e(t,r){function n(){return t.readIndex()??{}}function c(l,m,g){let f=String(m||"").split(".").filter(Boolean);if(f.length===0)return g&&typeof g=="object"&&!Array.isArray(g)?g:{value:g};let I={...l},A=I;for(let j=0;j<f.length-1;j++){let B=f[j],K=A[B],Y=K&&typeof K=="object"&&!Array.isArray(K)?{...K}:{};A[B]=Y,A=Y;}return A[f[f.length-1]]=g,I}return {readCard(l){let m=n()[l];return !m||!t.cardExists(m.key)?null:t.readCard(m.key)},readCardKey(l){return n()[l]?.key??null},readAllCards(){let l=[];for(let[m,g]of Object.entries(n())){if(!t.cardExists(g.key))continue;let f=t.readCard(g.key);f?l.push(f):r?.(`[card-store] could not read card "${m}" at key "${g.key}"`);}return l},readChecksumIndex(){let l={};for(let[m,g]of Object.entries(n()))l[m]=g.checksum;return l},changedSince(l){let m=n(),g=[];for(let[f,I]of Object.entries(m))l[f]!==I.checksum&&g.push(f);for(let f of Object.keys(l))m[f]||g.push(f);return g},validateUpsert(l,m){let g=n(),f=g[l],I=Object.entries(g).find(([,A])=>A.key===m);return f&&f.key!==m?{ok:false,error:`Card id "${l}" is already mapped to key "${f.key}", cannot remap to "${m}"`}:I&&I[0]!==l?{ok:false,error:`Key "${m}" is already mapped to card id "${I[0]}", cannot remap to "${l}"`}:{ok:true}},writeCard(l,m,g){let f=n(),I=g??f[l]?.key??t.defaultCardKey(l),A=t.writeCard(I,m);f[l]={key:I,checksum:A,updatedAt:new Date().toISOString()},t.writeIndex(f);},patchCard(l,m,g){let f=n(),I=f[l];if(!I||!t.cardExists(I.key))throw new Error(`card "${l}" not found`);let A=t.readCard(I.key);if(!A||typeof A!="object"||Array.isArray(A))throw new Error(`card "${l}" is not patchable`);let j=c(A,m,g),B=t.writeCard(I.key,j);f[l]={key:I.key,checksum:B,updatedAt:new Date().toISOString()},t.writeIndex(f);},removeCard(l){let m=n(),g=m[l];g&&(t.removeCard(g.key),delete m[l],t.writeIndex(m));},readIndex(){return n()}}}function be(t,r){return {readSourceData(n,c){let l=t.read(`${n}/${c}`);if(l==null)return null;let m=l.trim();if(!m)return null;try{return JSON.parse(m)}catch{return m}},ingestSourceDataStaged(n,c,l,m){let g=r(l);t.write(`${n}/.staged/${m}/${c}`,g);},commitSourceData(n,c,l){let m=`${n}/.staged/${l}/${c}`,g=t.read(m);return g==null?false:(t.write(`${n}/${c}`,g),t.remove(m),true)},hasSource(n,c){return t.exists(`${n}/${c}`)},listSources(n){return t.listKeys(`${n}/`).filter(c=>!c.includes("/.staged/")).map(c=>c.slice(`${n}/`.length))}}}function ze(t){function r(n){let c=t.readAllEntries();if(!n)return c;let l=c.findIndex(m=>m.id===n);return l===-1?c:c.slice(l+1)}return {readEntriesAfterCursor(n){let c=r(n);return c.length===0?{events:[],newCursor:n}:{events:c.map(l=>l.event),newCursor:c[c.length-1].id}},pendingCount(n){return r(n).length},appendEvent(n){t.appendEntry({id:t.generateId(),event:n});}}}function Qe(t,r){return {appendEntries(n,c){if(!n||c.length===0)return;let l=t.read(n)??[];t.write(n,[...l,...c]);},dispatchEntriesForJournalId(n,c){if(!n)return;let l=t.read(n);if(!(!l||l.length===0)){for(let m of l)try{c(m);}catch(g){let f=g instanceof Error?g.message:String(g);try{r(m,f);}catch{}}t.delete(n);}}}}var ve="v1",ce="board/graph",Ze="board/lastJournalProcessedId";function Ue(t){return `cards/${t}/runtime`}function et(t){return {readRuntime(r){return t.read(Ue(r))??{_sources:{}}},writeRuntime(r,n){t.write(Ue(r),n);}}}function ht(t,r){let n={...t};for(let c of r.deleteKeys)delete n[c];return {...n,...r.shallowMerge}}function tt(t){return {readSnapshot(r){return t.readValues(r)},commitSnapshot(r,n){if(n.schemaVersion!==ve)throw new Error(`Unsupported snapshot schema version: ${n.schemaVersion}`);let c=t.readValues(r);if(c.version!==n.expectedVersion)return {ok:false,reason:"version-mismatch",currentVersion:c.version};let l=ht(c.values,n);return {ok:true,newVersion:t.writeValues(r,l,n.deleteKeys)}}}}function Oe(t){function r(n){let c=t.read(n);return c==null?null:typeof c=="string"?c:JSON.stringify(c)}return {readTaskExecutorRef(){let n=r("task-executor");if(n?.trim())return chunk5DB54ZX2_cjs.c(n.trim())},writeTaskExecutorRef(n){t.write("task-executor",chunk5DB54ZX2_cjs.b(n));},readChatHandlerFlow(){return t.read("chat-handler-flow")},writeChatHandlerFlow(n){t.write("chat-handler-flow",n);},readCardStoreRef(){return r("card-store-ref")},writeCardStoreRef(n){t.write("card-store-ref",n);},readOutputsStoreRef(){return r("outputs-store-ref")},writeOutputsStoreRef(n){t.write("outputs-store-ref",n);},readScratchStoreRef(){return r("scratch-store-ref")},writeScratchStoreRef(n){t.write("scratch-store-ref",n);},readArchiveStoreRef(){return r("archive-store-ref")},writeArchiveStoreRef(n){t.write("archive-store-ref",n);},readChatStoreRef(){return r("chat-store-ref")},writeChatStoreRef(n){t.write("chat-store-ref",n);},readArtifactsStoreRef(){return r("artifacts-store-ref")},writeArtifactsStoreRef(n){t.write("artifacts-store-ref",n);}}}function rt(t){return {writeComputedValues(r,n){t.write(`cards/${r}/computed_values`,n);},readComputedValues(r){return t.read(`cards/${r}/computed_values`)},readAllComputedValues(){let r={};for(let n of t.listKeys("cards/")){let c=n.match(/^cards\/([^/]+)\/computed_values$/);c&&(r[c[1]]=t.read(n));}return r},writeDataObjects(r){for(let[n,c]of Object.entries(r))n&&t.write(`data-objects/${n}`,c);},readDataObject(r){return t.read(`data-objects/${r}`)},readAllDataObjects(){let r={};for(let n of t.listKeys("data-objects/"))r[n.slice(13)]=t.read(n);return r},writeStatusSnapshot(r){t.write("status",r);},readStatusSnapshot(){return t.read("status")}}}function We(t){return t?{lastRequestedToken:t.lastRequestedToken,lastCompletedToken:t.lastCompletedToken,lastCompletionStatus:t.lastCompletionStatus??(t.lastCompletedToken?"success":"not-started"),queueRequestedToken:t.queueRequestedToken}:{lastCompletionStatus:"not-started"}}function Rt(t){return t?.lastRequestedToken?t.lastCompletedToken!==t.lastRequestedToken:false}function Xe(t,r){return t?.lastRequestedToken?Rt(t)?"in-flight":!t.lastCompletedToken||t.lastCompletedToken<r?"dispatch":"idle":"dispatch"}function kt(t,r){return {...t,lastCompletedToken:r,lastCompletionStatus:"success"}}function Ye(t,r){return {...t,lastCompletedToken:r,lastCompletionStatus:"failure"}}function we(t,r){let n=r.state.tasks,c=r.config.tasks,l=Object.keys(n),m=chunkG4XXRHL2_cjs.r(r),g={completed:0,failed:0,in_progress:0,pending:0,blocked:0,unresolved:0},f=new Map;for(let y of m.pending)f.set(y.taskName,y.waitingOn);for(let y of m.unresolved)f.set(y.taskName,y.missingTokens);for(let y of m.blocked)f.set(y.taskName,y.failedTokens);let I=new Map;for(let[y,a]of Object.entries(c))for(let o of a.requires??[]){let u=I.get(o)??[];u.push(y),I.set(o,u);}let A=l.sort().map(y=>{let a=n[y],o=c[y]??{requires:[],provides:[]};a.status==="completed"?g.completed+=1:a.status==="failed"?g.failed+=1:a.status==="in-progress"&&(g.in_progress+=1);let u=o.requires??[],h=o.provides??[],b=Object.keys(a.data??{}).sort(),E=u.filter(L=>r.state.availableOutputs.includes(L)),_=u.filter(L=>!r.state.availableOutputs.includes(L)),V=f.get(y)??_,F=new Set;for(let L of h)for(let J of I.get(L)??[])J!==y&&F.add(J);let D=a.failedAt,$=a.error?{message:a.error,code:"TASK_FAILED",at:D,source:"task-runtime"}:void 0;return {name:y,status:a.status,error:$,requires:u,requires_satisfied:E,requires_missing:_,provides_declared:h,provides_runtime:b,blocked_by:V,unblocks:Array.from(F).sort(),runtime:{attempt_count:a.executionCount??0,restart_count:a.retryCount??0,in_progress_since:a.status==="in-progress"?a.startedAt??null:null,last_transition_at:a.lastUpdated??null,last_completed_at:a.completedAt??null,last_restarted_at:a.startedAt??null,status_age_ms:a.lastUpdated?0:null}}});g.pending=m.pending.length,g.blocked=m.blocked.length,g.unresolved=m.unresolved.length;let j=A.map(y=>({name:y.name,fanOut:y.unblocks.length})).sort((y,a)=>a.fanOut-y.fanOut||y.name.localeCompare(a.name)),B=j.length>0?j[0]:{name:null,fanOut:0},K=new Set;for(let y of Object.values(c))for(let a of y.requires??[])K.add(a);let Y=0;for(let[y,a]of Object.entries(c)){let o=(a.requires??[]).length===0,h=(a.provides??[]).some(b=>(I.get(b)??[]).some(E=>E!==y));o&&!h&&(Y+=1);}return {schema_version:"v1",meta:{board:{path:t}},summary:{card_count:l.length,completed:g.completed,eligible:m.eligible.length,pending:g.pending,blocked:g.blocked,unresolved:g.unresolved,failed:g.failed,in_progress:g.in_progress,orphan_cards:Y,topology:{edge_count:Array.from(K).length,max_fan_out_card:B.name,max_fan_out:B.fanOut}},cards:A}}function St(){return new Date().toISOString()}function nt(t,r,n,c,l,m,g){return async f=>{let I=[],A=n.cardStore.readCard(f.nodeId);if(!A)return "task-initiate-failure";let j=A.id,B=A.card_data??{},K=A.source_defs??[],Y=K.filter(S=>S.optionalForCompletionGating!==true),y=n.cardRuntimeStore.readRuntime(j),a=false,o=()=>{a&&(n.cardRuntimeStore.writeRuntime(j,y),a=false);},u=S=>We(y._sources[S]),h=(S,C)=>{y._sources[S]=We(C),a=true;},b=f.taskState?.executionCount??0;if(y._lastExecutionCount!==b&&(y._sources={},y._lastExecutionCount=b,a=true),f.update){let S=f.update,C=S.outputFile;if(C){let v=u(C);if(S.failure){let P=S.rqt??v.lastRequestedToken??v.queueRequestedToken;P&&h(C,Ye(v,P));}else {let P=S.rqt;if(!v.lastCompletedToken||P>v.lastCompletedToken){let M=typeof S.deliveryToken=="string"?S.deliveryToken:void 0,z=false;M&&(z=n.fetchedSourcesStore.commitSourceData(j,C,M)),z?h(C,kt(v,P)):h(C,Ye(v,P));}}o();}}let _={};for(let S of K)if(S.outputFile){let C=n.fetchedSourcesStore.readSourceData(j,S.outputFile);C!==null&&(_[S.bindTo]=C);}let V={};for(let[S,C]of Object.entries(f.state??{}))if(C!==null&&typeof C=="object"&&!Array.isArray(C)){let v=C[S];V[S]=v!==void 0?v:C;}else V[S]=C;let F={id:j,card_data:{...B},requires:V,source_defs:K,compute:A.compute};F._sourcesData=_,A.compute&&chunkIXZG74EW_cjs.a.runSync(F,{sourcesData:_}),(m??n.outputStore.writeComputedValues.bind(n.outputStore))(j,F.computed_values??{});let D={...A},$=chunkIXZG74EW_cjs.a.enrichSourcesSync(Array.isArray(A.source_defs)?A.source_defs:void 0,{card_data:A.card_data,requires:V}),L=t.value;D.source_defs=Array.isArray($)?$.map(S=>({...S,boardDir:typeof S.boardDir=="string"&&S.boardDir?S.boardDir:L})):$;let J=St(),te=f.update?void 0:J,re=Y.filter(S=>{let C=S.outputFile;if(typeof C!="string"||!C)return true;let v=u(C);te&&(v={...v,queueRequestedToken:te},h(C,v));let P=v.queueRequestedToken??v.lastRequestedToken??J,M=Xe(v,P);return M==="in-flight"?false:M==="dispatch"});if(o(),re.length>0){let S=false,C=J;for(let v of re){let P=v.outputFile;if(typeof P!="string"||!P)continue;let M=u(P),z=M.queueRequestedToken??J;h(P,{...M,lastRequestedToken:z}),C=z,S=true;}return S&&o(),S&&(I.push({taskKind:"source-fetch",payload:{boardRef:chunkUVE65IPR_cjs.a(t),enrichedCard:D,callbackToken:f.callbackToken,rqt:C}}),n.executionRequestStore.appendEntries(r,I)),"task-initiated"}if(Y.some(S=>{let C=S.outputFile;if(typeof C!="string"||!C)return false;let v=u(C),P=v.queueRequestedToken??v.lastRequestedToken??J;return Xe(v,P)==="in-flight"}))return "task-initiated";let ne=A.provides??[],oe={};for(let{bindTo:S,ref:C}of ne)oe[S]=chunkIXZG74EW_cjs.a.resolve(F,C);return (g??n.outputStore.writeDataObjects.bind(n.outputStore))(oe),K.filter(S=>{if(S.optionalForCompletionGating!==true)return false;let C=u(S.outputFile);return !C.lastRequestedToken||!C.lastCompletedToken?true:C.lastCompletedToken<=C.lastRequestedToken}).length>0&&I.push({taskKind:"source-fetch",payload:{boardRef:chunkUVE65IPR_cjs.a(t),enrichedCard:D,callbackToken:f.callbackToken,rqt:J}}),c(f.nodeId,oe),I.length>0&&n.executionRequestStore.appendEntries(r,I),"task-initiated"}}var Fe={settings:{completion:"manual",refreshStrategy:"data-changed"},tasks:{}};function ot(t){return {[ce]:t.graph,[Ze]:t.lastDrainedJournalId}}function st(t){let r=t[ce],n=t[Ze];if(!r||typeof r!="object")throw new Error(`State snapshot is missing required key: ${ce}`);return {graph:r,lastDrainedJournalId:typeof n=="string"?n:""}}function at(t){let r=t.requires,n=t.provides?.map(c=>c.bindTo)??[];return {requires:r&&r.length>0?r:void 0,provides:n,taskHandlers:["card-handler"],description:t.meta?.title??t.id}}function x(t){return t!==void 0?{status:"success",data:t}:{status:"success"}}function k(t){return {status:"fail",error:t}}function T(t){return {status:"error",error:t instanceof Error?t.message:String(t)}}function yt(t){let r=new TextEncoder().encode(t),n=Array.from(r,c=>String.fromCharCode(c)).join("");return btoa(n).replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"")}function ut(t){let r=t.replace(/-/g,"+").replace(/_/g,"/"),n=r+"=".repeat((4-r.length%4)%4),c=atob(n),l=Uint8Array.from(c,m=>m.charCodeAt(0));return new TextDecoder().decode(l)}function xe(t){try{let r=JSON.parse(ut(t));return typeof r?.t=="string"?{taskName:r.t}:null}catch{return null}}function bt(t){return yt(JSON.stringify(t))}function it(t){try{let r=JSON.parse(ut(t));return typeof r?.cbk=="string"&&typeof r?.cid=="string"&&typeof r?.b=="string"&&typeof r?.d=="string"?r:null}catch{return null}}function H(){return new Date().toISOString()}function Vt(t,r){let n=r.onWarn??(()=>{}),c=chunkUVE65IPR_cjs.a(t);function l(s){if(s.length!==0)try{let e=r.publishBoardChangeNotifications?.(s);e&&typeof e.catch=="function"&&e.catch(i=>n(`[board-live-cards-public] publishBoardChangeNotifications failed: ${i instanceof Error?i.message:String(i)}`));}catch(e){n(`[board-live-cards-public] publishBoardChangeNotifications failed: ${e instanceof Error?e.message:String(e)}`);}}function m(){let s=f().readCardStoreRef();if(!s)throw new Error(`Board at ${t.value} has no card store configured. Run: init --base-ref <ref> --store-ref <b64-ref>`);let e=r.kvStorageForRef(s);return {readIndex(){return e.read("_index")},writeIndex(i){e.write("_index",i);},readCard(i){return e.read(i)},writeCard(i,p){return e.write(i,p),r.hashFn(p)},removeCard(i){e.delete(i);},cardExists(i){return e.read(i)!==null},defaultCardKey(i){return i}}}let g={readValues(s){let e=r.kvStorage("state-snapshot"),i=e.listKeys().sort();if(i.length===0)return {version:null,values:{}};let p={};for(let w of i)p[w]=e.read(w);return {version:r.hashFn(p),values:p}},writeValues(s,e,i){let p=r.kvStorage("state-snapshot");for(let w of i)p.delete(w);for(let[w,O]of Object.entries(e))p.write(w,O);return r.hashFn(e)}},f=()=>Oe(r.kvStorage("config")),I=()=>tt(g),A=()=>ze(r.journalAdapter()),j=()=>_e(m(),n),B=()=>{let s=f().readOutputsStoreRef();if(!s)throw new Error(`Board at ${t.value} has no outputs store configured. Run: init --outputs-store-ref <b64-ref>`);return rt(r.kvStorageForRef(s))},K=()=>{let s=f().readArchiveStoreRef();return s?r.archiveFactoryForRef(s):r.archiveFactory()};function Y(){return !!I().readSnapshot(t.value).values[ce]}function y(){let s=I().readSnapshot(t.value);if(!s.values[ce])throw new Error(`Board not initialized at ${t.value}`);return st(s.values)}function a(s,e){let i=I().commitSnapshot(t.value,{schemaVersion:ve,expectedVersion:e,commitId:r.genId(),committedAt:H(),deleteKeys:[],shallowMerge:ot(s)});if(!i.ok)throw new Error(`Snapshot commit failed (version mismatch): expected=${e??"null"} current=${i.currentVersion??"null"}`)}function o(s){A().appendEvent(s);}async function u(){let s=(d,R)=>{let q=d.payload,X=(q?.enrichedCard??{}).id??q?.cardId??"unknown";o({type:"task-failed",taskName:X,error:R,timestamp:H()});},e=Qe(r.kvStorage("execution-requests"),s),i=et(r.kvStorage("card-runtime")),p=be(r.blobStorage("sources"),d=>r.resolveBlob(d)),w=new Map,O={readRuntime(d){return w.get(d)??i.readRuntime(d)},writeRuntime(d,R){w.set(d,R);}},U=[],N=new Map,W={readSourceData(d,R){let q=`${d}/${R}`;return N.has(q)?N.get(q):p.readSourceData(d,R)},ingestSourceDataStaged(d,R,q,ie){p.ingestSourceDataStaged(d,R,q,ie);},commitSourceData(d,R,q){let ie=`${d}/.staged/${q}/${R}`,ue=r.blobStorage("sources").read(ie);if(ue==null)return false;let Se=`${d}/${R}`,ee=ue.trim();try{N.set(Se,JSON.parse(ee));}catch{N.set(Se,ee);}return U.push({cardId:d,outputFile:R,deliveryToken:q}),true},hasSource(d,R){let q=`${d}/${R}`;return N.has(q)?true:p.hasSource(d,R)},listSources(d){let R=p.listSources(d),q=new Set;for(let X of N.keys())X.startsWith(`${d}/`)&&q.add(X.slice(`${d}/`.length));let ie=new Set([...R,...q]);return Array.from(ie)}},G={cardStore:j(),cardRuntimeStore:O,fetchedSourcesStore:W,outputStore:B(),executionRequestStore:e},se=y(),fe=chunkG4XXRHL2_cjs.q(se.graph),{events:me,newCursor:ge}=A().readEntriesAfterCursor(se.lastDrainedJournalId),ae=[],he=[],Ie=[],Ee=new Map,je=new Set,mt=(d,R)=>{ae.push({type:"task-completed",taskName:d,data:R,timestamp:H()});try{K().stream("exec-history").append({taskName:d,status:"completed",completedAt:H()});}catch{}},Ve=(d,R)=>{o({type:"task-failed",taskName:d,error:R,timestamp:H()});try{K().stream("exec-history").append({taskName:d,status:"failed",error:R,completedAt:H()});}catch{}},Re=chunkG4XXRHL2_cjs.u(fe,{handlers:{"card-handler":nt(t,ge,G,mt,Ve,(d,R)=>{he.push({cardId:d,values:R});},d=>{Ie.push(d);})},onNodeRemoved:d=>{Ee.delete(d),w.delete(d),je.add(d);}});for(ae=me;ae.length>0;){let d=ae;ae=[];for(let R of d)if(R.type==="task-restart"){let q=G.cardStore.readCard(R.taskName);q&&Ee.set(R.taskName,q);}Re.pushAll(d),await Re.waitForHandlers();}let Ne=Re.getState();await Re.dispose({wait:true});let gt=I().readSnapshot(t.value).version;a({lastDrainedJournalId:ge,graph:chunkG4XXRHL2_cjs.p(Ne)},gt);for(let{cardId:d,values:R}of he)G.outputStore.writeComputedValues(d,R);for(let d of Ie)G.outputStore.writeDataObjects(d);for(let[d,R]of w)i.writeRuntime(d,R);for(let{cardId:d,outputFile:R,deliveryToken:q}of U)p.commitSourceData(d,R,q);let ke;try{ke=we(c,Ne),G.outputStore.writeStatusSnapshot(ke);}catch(d){n(`[board-live-cards-public] status publish failed: ${d instanceof Error?d.message:String(d)}`);}let pe=[];for(let{cardId:d,values:R}of he)pe.push({kind:"computed_values",cardId:d,values:R});for(let d of Ie)for(let[R,q]of Object.entries(d))R&&pe.push({kind:"data_object",key:R,payload:q});for(let[d,R]of Ee)pe.push({kind:"card_refreshed",cardId:d,card:R});for(let d of je)pe.push({kind:"card_removed",cardId:d});ke!==void 0&&pe.push({kind:"status",status:ke}),l(pe);let $e=f().readTaskExecutorRef()??{howToRun:"built-in",whatToRun:chunkUVE65IPR_cjs.a({kind:"built-in",value:"source-cli-task-executor"})},pt=r.supportsDirectSourceOutput?.($e)===true;e.dispatchEntriesForJournalId(ge,d=>{if(d.taskKind!=="source-fetch"){n(`[process-accumulated-events] unknown taskKind "${d.taskKind}" \u2014 skipping`);return}let R=d.payload,q=R.enrichedCard?.id??"unknown",ie=R.enrichedCard?.source_defs??[];for(let X of ie){if(!X.outputFile){n(`[dispatch] source "${X.bindTo}" has no outputFile \u2014 skipping`);continue}let ue;if(pt){let ee=r.genId(),Ct=`${q}/.staged/${ee}/${X.outputFile}`,Be=r.blobStorage("sources").keyRef?.(Ct);Be?ue={ref:chunkUVE65IPR_cjs.a(Be),deliveryToken:ee,outputFile:X.outputFile,cardId:q}:n("[dispatch] hosted board-worker requested but sources BlobStorage cannot produce portable refs; falling back to scratch protocol");}let Se=bt({cbk:R.callbackToken,rg:t.value,br:chunkUVE65IPR_cjs.a(t),cid:q,b:X.bindTo,d:X.outputFile,cs:void 0,rqt:R.rqt,...ue?{dt:ue.deliveryToken}:{}});r.dispatchExecution($e,{source_def:X,base_ref:chunkUVE65IPR_cjs.a(t),callback:{token:Se,via:r.selfRef},...ue?{output:ue}:{}}).catch(ee=>Ve(q,ee instanceof Error?ee.message:String(ee)));}});}async function h(){try{let s=()=>{let i=y(),{events:p}=A().readEntriesAfterCursor(i.lastDrainedJournalId);p.length<=0||(h(),r.requestProcessAccumulated?.());},e=await chunkUVE65IPR_cjs.c(r.lock,u,s);return x({ran:e!==!1})}catch(s){return T(s)}}function b(){h(),r.requestProcessAccumulated?.();}function E(s){try{let e=s.params?.cardStoreRef;if(!e)return k("init requires params.cardStoreRef \u2014 create a card store with card-store-cli and pass its ref here");if(!Y()){let G=chunkG4XXRHL2_cjs.a(Fe);a({lastDrainedJournalId:"",graph:chunkG4XXRHL2_cjs.p(G)},null);}let i=s.params?.outputsStoreRef;if(!i)return k("init requires params.outputsStoreRef \u2014 pass the outputs store ref here");let p=s.params?.scratchStoreRef,w=s.params?.archiveStoreRef,O=s.params?.chatStoreRef,U=s.params?.artifactsStoreRef,N=f();N.writeCardStoreRef(e),N.writeOutputsStoreRef(i),p&&N.writeScratchStoreRef(p),w&&N.writeArchiveStoreRef(w),O&&N.writeChatStoreRef(O),U&&N.writeArtifactsStoreRef(U);let W=s.body??{};W["task-executor-ref"]&&N.writeTaskExecutorRef(W["task-executor-ref"]),Object.prototype.hasOwnProperty.call(W,"chat-handler-flow")&&N.writeChatHandlerFlow(W["chat-handler-flow"]);try{B().writeStatusSnapshot(we(c,chunkG4XXRHL2_cjs.q(y().graph)));}catch{}return x()}catch(e){return T(e)}}function _(s){try{let e=B().readStatusSnapshot();if(!e){e=we(c,chunkG4XXRHL2_cjs.q(y().graph));try{B().writeStatusSnapshot(e);}catch{}}return x(e)}catch(e){return T(e)}}function V(s){try{let e=s.params?.id;if(!e)return k("removeCard requires params.id");try{r.kvStorage("card-upsert").delete(e);}catch{}return o({type:"task-removal",taskName:e,timestamp:H()}),b(),x()}catch(e){return T(e)}}function F(s){try{let e=s.params?.cardId;if(!e)return k("addCardFiles requires params.cardId");let i=chunkYMEIPKLW_cjs.a(j()).appendFiles({params:{id:e},body:s.body});if(i.status!=="success")return i;let p=D({params:{cardId:e}});return p.status!=="success"?p:x({cardId:e,files_added:i.data.files_added,notified:!0})}catch(e){return T(e)}}function D(s){try{let e=s.params?.cardId;if(!e)return k("cardRefreshedNotify requires params.cardId");let i=j().readCard(e);return i?(l([{kind:"card_refreshed",cardId:e,card:i}]),x({cardId:e,notified:!0})):k(`Card "${e}" not found in board at ${t.value}`)}catch(e){return T(e)}}function $(s){try{let e=s.params?.id;return e?(o({type:"task-restart",taskName:e,timestamp:H()}),b(),x()):k("retrigger requires params.id")}catch(e){return T(e)}}async function L(s){return h()}function J(s){try{let e=s.params?.cardId,i=s.params?.all,p=!!s.params?.restart;if(!e&&!i)return k("upsertCard requires --card-id <id> or --all");let w=i?j().readAllCards().map(O=>O.id):[e];for(let O of w)if(!j().readCard(O))return k(`Card "${O}" not found in board at ${t.value}`);for(let O of w){let U=j().readCard(O),N=at(U),W=r.hashFn(N),G=r.kvStorage("card-upsert"),se=G.read(O),fe=se?.taskConfigHash!==W;if(!(!fe&&!p)){if(fe){let me=se?.blobRef??j().readCardKey(O)??O;o({type:"task-upsert",taskName:O,taskConfig:N,timestamp:H()}),G.write(O,{blobRef:me,taskConfigHash:W,updatedAt:H()});}p&&o({type:"task-restart",taskName:O,timestamp:H()});}}return b(),x()}catch(e){return T(e)}}function te(s){try{let e=s.params?.token;if(!e)return k("taskFailed requires params.token");let i=s.params?.error??"unknown error",p=xe(e);if(!p)return k("Invalid callback token");o({type:"task-failed",taskName:p.taskName,error:i,timestamp:H()});try{K().stream("exec-history").append({taskName:p.taskName,status:"failed",error:i,completedAt:H()});}catch{}return b(),x()}catch(e){return T(e)}}function re(s){try{let e=s.params?.token;if(!e)return k("taskProgress requires params.token");let p=(s.body??{}).update??{},w=xe(e);return w?(o({type:"task-progress",taskName:w.taskName,update:p,timestamp:H()}),b(),x()):k("Invalid callback token")}catch(e){return T(e)}}function Ce(s){try{let e=s.params?.token,i=s.params?.ref;if(!e)return k("sourceDataFetched requires params.token");if(!i)return k("sourceDataFetched requires params.ref");let p=it(e);if(!p)return k("Invalid source token");let{cbk:w,cid:O,b:U,d:N,cs:W,rqt:G,dt:se}=p,fe=be(r.blobStorage("sources"),he=>r.resolveBlob(he)),me=se||r.genId();se||fe.ingestSourceDataStaged(O,N,chunkUVE65IPR_cjs.b(i),me);let ge=xe(w);if(!ge)return k("Invalid callback token embedded in source token");let ae=H();return o({type:"task-progress",taskName:ge.taskName,update:{bindTo:U,outputFile:N,fetchedAt:ae,deliveryToken:me,sourceChecksum:W,rqt:G},timestamp:ae}),b(),x()}catch(e){return T(e)}}function ne(s){try{let e=s.params?.token,i=s.params?.reason??"unknown";if(!e)return k("sourceDataFetchFailure requires params.token");let p=it(e);if(!p)return k("Invalid source token");let{cbk:w,b:O,d:U,cs:N,rqt:W}=p,G=xe(w);return G?(o({type:"task-progress",taskName:G.taskName,update:{bindTo:O,outputFile:U,failure:!0,reason:i,sourceChecksum:N,rqt:W},timestamp:H()}),b(),x()):k("Invalid callback token embedded in source token")}catch(e){return T(e)}}function oe(s){try{let e=f().readCardStoreRef();return e?x({storeRef:e}):k(`Board at ${t.value} has no card store configured`)}catch(e){return T(e)}}function le(s){try{let e=f().readOutputsStoreRef();return e?x({storeRef:e}):k(`Board at ${t.value} has no outputs store configured`)}catch(e){return T(e)}}function S(s){try{let e=f().readScratchStoreRef();return x({storeRef:e})}catch(e){return T(e)}}function C(s){try{let e=f().readArchiveStoreRef();return x({storeRef:e})}catch(e){return T(e)}}function v(s){try{let e=f().readChatStoreRef();return x({storeRef:e})}catch(e){return T(e)}}function P(s){try{let e=f().readArtifactsStoreRef();return x({storeRef:e})}catch(e){return T(e)}}function M(s){try{let e=s.params?.key;if(!e)return k("getConfig requires params.key");let i=f(),p;switch(e){case "task-executor":p=i.readTaskExecutorRef()??null;break;case "chat-handler-flow":p=i.readChatHandlerFlow()??null;break;case "card-store-ref":p=i.readCardStoreRef();break;case "outputs-store-ref":p=i.readOutputsStoreRef();break;case "scratch-store-ref":p=i.readScratchStoreRef();break;case "archive-store-ref":p=i.readArchiveStoreRef();break;case "chat-store-ref":p=i.readChatStoreRef();break;case "artifacts-store-ref":p=i.readArtifactsStoreRef();break;default:return k(`getConfig: unknown key "${e}"`)}return x({value:p})}catch(e){return T(e)}}function z(s){try{let e=s.params?.key;if(!e)return k("getOutputsDataObject requires params.key");let i=B().readDataObject(e);return x(i)}catch(e){return T(e)}}function Z(s){try{return x(B().readAllDataObjects())}catch(e){return T(e)}}function dt(s){try{let e=s.params?.key;if(!e)return k("getOutputsComputedValues requires params.key");let i=B().readComputedValues(e);return x(i)}catch(e){return T(e)}}function ct(s){try{return x(B().readAllComputedValues())}catch(e){return T(e)}}function qe(){return be(r.blobStorage("sources"),s=>r.resolveBlob(s))}function Pe(s){let e=r.blobStorage("sources").keyRef?.(s);return e?chunkUVE65IPR_cjs.a(e):s}function lt(s){try{let e=s.params?.key;if(!e)return k("getOutputsFetchedSources requires params.key");let i=qe().listSources(e),p={};for(let w of i)p[w]=Pe(`${e}/${w}`);return x(p)}catch(e){return T(e)}}function ft(s){try{let e=qe(),i=new Set;for(let w of r.blobStorage("sources").listKeys()){let O=w.indexOf("/");O>0&&!w.includes("/.staged/")&&i.add(w.slice(0,O));}let p={};for(let w of i){let O=e.listSources(w);if(O.length>0){p[w]={};for(let U of O)p[w][U]=Pe(`${w}/${U}`);}}return x(p)}catch(e){return T(e)}}return {init:E,status:_,getCardStoreRef:oe,getOutputsStoreRef:le,getScratchStoreRef:S,getArchiveStoreRef:C,getChatStoreRef:v,getArtifactsStoreRef:P,getConfig:M,getOutputsDataObject:z,getAllOutputsDataObjects:Z,getOutputsComputedValues:dt,getAllOutputsComputedValues:ct,getOutputsFetchedSources:lt,getAllOutputsFetchedSources:ft,removeCard:V,addCardFiles:F,cardRefreshedNotify:D,retrigger:$,processAccumulatedEvents:L,upsertCard:J,taskFailed:te,taskProgress:re,sourceDataFetched:Ce,sourceDataFetchFailure:ne}}function Nt(t,r){let n=()=>Oe(r.kvStorage("config"));function c(){let a=n().readCardStoreRef();if(!a)throw new Error(`Board at ${t.value} has no card store configured. Run: init --base-ref <ref> --store-ref <b64-ref>`);let o=r.kvStorageForRef(a);return {readIndex(){return o.read("_index")},writeIndex(u){o.write("_index",u);},readCard(u){return o.read(u)},writeCard(u,h){return o.write(u,h),r.hashFn(h)},removeCard(u){o.delete(u);},cardExists(u){return o.read(u)!==null},defaultCardKey(u){return u}}}let l=()=>_e(c(),r.onWarn??(()=>{}));async function m(a,o){let u=r.validateSchema(o),h=[],b=n().readTaskExecutorRef();if(b&&Array.isArray(o.source_defs))for(let _ of o.source_defs){let V=typeof _.bindTo=="string"?_.bindTo:"(unknown)";try{let F;try{F=await r.invokeExecutor(b,"validate-source-def",{timeout:r.executorTimeouts?.validationMs??1e4,input:JSON.stringify(_)});}catch($){let L=$;if(F=typeof L?.stdout=="string"?L.stdout:"",!F.trim()){h.push(`source "${V}": executor validate-source-def failed \u2014 ${$ instanceof Error?$.message:String($)}`);continue}}let D=JSON.parse(F.trim());if(!D.ok&&Array.isArray(D.errors))for(let $ of D.errors)h.push(`source "${V}": ${$}`);}catch(F){h.push(`source "${V}": executor validate-source-def failed \u2014 ${F instanceof Error?F.message:String(F)}`);}}let E=[...u.errors,...h];return x({cardId:a,isValid:E.length===0,issues:E})}function g(a,o){let u=a.params?.sourceIdx,h=a.params?.outRef;if(u===void 0)return k(`${o} requires params.sourceIdx`);if(!a.body||typeof a.body!="object"||Array.isArray(a.body))return k(`${o} requires card JSON object in body`);let b=a.body,E=b["card-content"]??b,_=b["mock-projections"]??{},V=E.source_defs??[];if(u<0||u>=V.length)return k(`sourceIdx ${u} out of range (card has ${V.length} source(s))`);let F=V[u],D=typeof F.bindTo=="string"?F.bindTo:"source";return {src:F,bindTo:D,outRef:h,mockProjections:_}}async function f(a){try{if(!a.body||typeof a.body!="object"||Array.isArray(a.body))return k("validateCardPreflight requires card JSON object in body");let o=a.body,u=o["card-content"]??o,h=typeof u.id=="string"?u.id:"(unknown)";return await m(h,u)}catch(o){return T(o)}}async function I(a){try{let o=g(a,"probeSourcePreflight");if("status"in o)return o;let u=n().readTaskExecutorRef();if(!u)return k("No task-executor registered for this board");try{let h={...o.src,_projections:o.mockProjections},b=await r.invokeExecutor(u,"probe-source-preflight",{timeout:o.src.timeout??r.executorTimeouts?.preflightMs??6e4,input:JSON.stringify(h)}),E=JSON.parse(b.trim());return E.ok?x({bindTo:o.bindTo,reachable:E.reachable,latencyMs:E.latencyMs,note:E.note}):k(E.error??"Preflight probe failed")}catch{return k("Executor does not support probe-source-preflight")}}catch(o){return T(o)}}async function A(a){try{let o=g(a,"runSourcePreflight");if("status"in o)return o;let u=n().readTaskExecutorRef();if(!u)return k("No task-executor registered for this board");try{let h={...o.src,_projections:o.mockProjections},b=await r.invokeExecutor(u,"run-source-preflight",{timeout:o.src.timeout??r.executorTimeouts?.probeMs??6e4,input:JSON.stringify(h)}),E=JSON.parse(b.trim());if(!E.ok)return x({bindTo:o.bindTo,ok:!1,result:null,issues:[E.error??"Preflight run failed"]});if(o.outRef){let _=chunkUVE65IPR_cjs.b(o.outRef);r.absoluteBlob.write(_.value,JSON.stringify(E.resultValue,null,2));}return x({bindTo:typeof E.bindTo=="string"?E.bindTo:o.bindTo,ok:!0,result:E.resultValue??null,issues:[]})}catch(h){let b=h instanceof Error?h.message:String(h);return x({bindTo:o.bindTo,ok:!1,result:null,issues:[b]})}}catch(o){return T(o)}}async function j(a){try{let o=n().readTaskExecutorRef();if(!o)return k("No task-executor registered for this board");let u=await r.invokeExecutor(o,"describe-capabilities",{timeout:r.executorTimeouts?.describeMs??1e4});return x(JSON.parse(u.trim()))}catch(o){return T(o)}}function B(a){try{let o=a.body;if(!o||!Array.isArray(o.ops))return k("updatesInCardStore requires body.ops array");let u=o.ops,h=l();for(let b of u){let E=b.op,_=b.id;if(!_)return k('op is missing "id"');if(E==="update"){let V=b["card-content"];if(!V)return k(`update op for "${_}" is missing "card-content"`);h.writeCard(_,V);}else return k(`Unknown op type: "${E??"(none)"}"`)}return x()}catch(o){return T(o)}}function K(a){try{let o=a.body;if(!o||!Array.isArray(o.ids))return k("readFromCardStore requires body.ids array");let u=o.ids,h=l(),b=u.map(E=>({id:E,"card-content":h.readCard(E)}));return x({cards:b})}catch(o){return T(o)}}function Y(a){try{if(!a.body||typeof a.body!="object"||Array.isArray(a.body))return k("evalCardCompute requires a JSON object in body");let o=a.body,u=o["card-content"]??o,h=typeof u.id=="string"?u.id:"(unknown)",b=o["mock-fetched-sources"]??{},E=o["mock-requires"]??{},_=u.compute;if(!_||!Array.isArray(_)||_.length===0)return x({cardId:h,ok:!0,computed_values:{},errors:[]});let V={id:h,card_data:u.card_data??{},requires:E,source_defs:u.source_defs,compute:_},F=chunkIXZG74EW_cjs.a.runSync(V,{sourcesData:b}),D=F.node.computed_values??{},$=F.errors??[];return x({cardId:h,ok:$.length===0,computed_values:D,errors:$})}catch(o){return T(o)}}async function y(a){try{if(!a.body||typeof a.body!="object"||Array.isArray(a.body))return k("simulateCardCycle requires a JSON object in body");let o=a.body,u=o["card-content"]??o,h=typeof u.id=="string"?u.id:"(unknown)",b=o["mock-fetched-sources"]??{},E=o["mock-requires"]??{},_=await m(h,u),V=_.status==="success"?{isValid:_.data.isValid,issues:_.data.issues}:{isValid:!1,issues:[_.status==="fail"?_.error:"internal error"]},F=u.source_defs??[],D=u.card_data??{},$=[],L=[];if(F.length>0){$=chunkIXZG74EW_cjs.a.enrichSourcesSync(F,{card_data:D,requires:E});for(let C of $){let v=C.projections,P=C._projections;if(v&&P){for(let M of Object.keys(v))if(P[M]===void 0){let z=typeof C.bindTo=="string"?C.bindTo:"(unknown)";L.push({bindTo:z,key:M,error:`Projection "${M}" resolved to undefined`});}}}}let J=[],te={...b},re=o["task-executor-ref"],Ce=(re?.howToRun&&re?.whatToRun?re:void 0)??n().readTaskExecutorRef();for(let C=0;C<$.length;C++){let v=$[C],P=typeof v.bindTo=="string"?v.bindTo:`source_${C}`;if(!Ce){J.push({bindTo:P,skipped:!0,error:"No task executor configured"});continue}try{let M={...v},z=await r.invokeExecutor(Ce,"run-source-preflight",{timeout:v.timeout??r.executorTimeouts?.preflightMs??6e4,input:JSON.stringify(M)}),Z=JSON.parse(z.trim());Z.ok&&!Object.prototype.hasOwnProperty.call(b,P)&&Object.prototype.hasOwnProperty.call(Z,"resultValue")&&(te[P]=Z.resultValue),J.push({bindTo:P,reachable:Z.reachable,latencyMs:Z.latencyMs,error:Z.ok?void 0:Z.error});}catch{J.push({bindTo:P,skipped:!0,error:"Executor does not support run-source-preflight"});}}let ne=u.compute,oe={},le=[];if(ne&&Array.isArray(ne)&&ne.length>0){let C={id:h,card_data:D,requires:E,source_defs:u.source_defs,compute:ne},v=chunkIXZG74EW_cjs.a.runSync(C,{sourcesData:te});oe=v.node.computed_values??{},le=v.errors??[];}let S=V.isValid&&L.length===0&&le.length===0&&J.every(C=>C.reachable!==!1);return x({cardId:h,ok:S,validation:V,source_probes:J,projection_errors:L,fetched_sources:te,computed_values:oe,compute_errors:le})}catch(o){return T(o)}}return {validateCardPreflight:f,probeSourcePreflight:I,runSourcePreflight:A,evalCardCompute:Y,simulateCardCycle:y,describeTaskExecutorCapabilities:j,updatesInCardStore:B,readFromCardStore:K}}
|
|
2
|
+
exports.a=_e;exports.b=ve;exports.c=ce;exports.d=Fe;exports.e=Vt;exports.f=Nt;//# sourceMappingURL=chunk-LVNQCE5X.cjs.map
|
|
3
|
+
//# sourceMappingURL=chunk-LVNQCE5X.cjs.map
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import {b as b$1,c as c$1}from'./chunk-LBMEVV4U.js';import {a,b,c}from'./chunk-CWREBRXS.js';import {a as a$1,p,q,r,u}from'./chunk-VGT3TRQG.js';import {a as a$3}from'./chunk-JMDHDY6M.js';import {a as a$2}from'./chunk-KBELAKIY.js';function _e(t,r){function n(){return t.readIndex()??{}}function c(l,m,g){let f=String(m||"").split(".").filter(Boolean);if(f.length===0)return g&&typeof g=="object"&&!Array.isArray(g)?g:{value:g};let I={...l},A=I;for(let j=0;j<f.length-1;j++){let B=f[j],K=A[B],Y=K&&typeof K=="object"&&!Array.isArray(K)?{...K}:{};A[B]=Y,A=Y;}return A[f[f.length-1]]=g,I}return {readCard(l){let m=n()[l];return !m||!t.cardExists(m.key)?null:t.readCard(m.key)},readCardKey(l){return n()[l]?.key??null},readAllCards(){let l=[];for(let[m,g]of Object.entries(n())){if(!t.cardExists(g.key))continue;let f=t.readCard(g.key);f?l.push(f):r?.(`[card-store] could not read card "${m}" at key "${g.key}"`);}return l},readChecksumIndex(){let l={};for(let[m,g]of Object.entries(n()))l[m]=g.checksum;return l},changedSince(l){let m=n(),g=[];for(let[f,I]of Object.entries(m))l[f]!==I.checksum&&g.push(f);for(let f of Object.keys(l))m[f]||g.push(f);return g},validateUpsert(l,m){let g=n(),f=g[l],I=Object.entries(g).find(([,A])=>A.key===m);return f&&f.key!==m?{ok:false,error:`Card id "${l}" is already mapped to key "${f.key}", cannot remap to "${m}"`}:I&&I[0]!==l?{ok:false,error:`Key "${m}" is already mapped to card id "${I[0]}", cannot remap to "${l}"`}:{ok:true}},writeCard(l,m,g){let f=n(),I=g??f[l]?.key??t.defaultCardKey(l),A=t.writeCard(I,m);f[l]={key:I,checksum:A,updatedAt:new Date().toISOString()},t.writeIndex(f);},patchCard(l,m,g){let f=n(),I=f[l];if(!I||!t.cardExists(I.key))throw new Error(`card "${l}" not found`);let A=t.readCard(I.key);if(!A||typeof A!="object"||Array.isArray(A))throw new Error(`card "${l}" is not patchable`);let j=c(A,m,g),B=t.writeCard(I.key,j);f[l]={key:I.key,checksum:B,updatedAt:new Date().toISOString()},t.writeIndex(f);},removeCard(l){let m=n(),g=m[l];g&&(t.removeCard(g.key),delete m[l],t.writeIndex(m));},readIndex(){return n()}}}function be(t,r){return {readSourceData(n,c){let l=t.read(`${n}/${c}`);if(l==null)return null;let m=l.trim();if(!m)return null;try{return JSON.parse(m)}catch{return m}},ingestSourceDataStaged(n,c,l,m){let g=r(l);t.write(`${n}/.staged/${m}/${c}`,g);},commitSourceData(n,c,l){let m=`${n}/.staged/${l}/${c}`,g=t.read(m);return g==null?false:(t.write(`${n}/${c}`,g),t.remove(m),true)},hasSource(n,c){return t.exists(`${n}/${c}`)},listSources(n){return t.listKeys(`${n}/`).filter(c=>!c.includes("/.staged/")).map(c=>c.slice(`${n}/`.length))}}}function ze(t){function r(n){let c=t.readAllEntries();if(!n)return c;let l=c.findIndex(m=>m.id===n);return l===-1?c:c.slice(l+1)}return {readEntriesAfterCursor(n){let c=r(n);return c.length===0?{events:[],newCursor:n}:{events:c.map(l=>l.event),newCursor:c[c.length-1].id}},pendingCount(n){return r(n).length},appendEvent(n){t.appendEntry({id:t.generateId(),event:n});}}}function Qe(t,r){return {appendEntries(n,c){if(!n||c.length===0)return;let l=t.read(n)??[];t.write(n,[...l,...c]);},dispatchEntriesForJournalId(n,c){if(!n)return;let l=t.read(n);if(!(!l||l.length===0)){for(let m of l)try{c(m);}catch(g){let f=g instanceof Error?g.message:String(g);try{r(m,f);}catch{}}t.delete(n);}}}}var ve="v1",ce="board/graph",Ze="board/lastJournalProcessedId";function Ue(t){return `cards/${t}/runtime`}function et(t){return {readRuntime(r){return t.read(Ue(r))??{_sources:{}}},writeRuntime(r,n){t.write(Ue(r),n);}}}function ht(t,r){let n={...t};for(let c of r.deleteKeys)delete n[c];return {...n,...r.shallowMerge}}function tt(t){return {readSnapshot(r){return t.readValues(r)},commitSnapshot(r,n){if(n.schemaVersion!==ve)throw new Error(`Unsupported snapshot schema version: ${n.schemaVersion}`);let c=t.readValues(r);if(c.version!==n.expectedVersion)return {ok:false,reason:"version-mismatch",currentVersion:c.version};let l=ht(c.values,n);return {ok:true,newVersion:t.writeValues(r,l,n.deleteKeys)}}}}function Oe(t){function r(n){let c=t.read(n);return c==null?null:typeof c=="string"?c:JSON.stringify(c)}return {readTaskExecutorRef(){let n=r("task-executor");if(n?.trim())return c$1(n.trim())},writeTaskExecutorRef(n){t.write("task-executor",b$1(n));},readChatHandlerFlow(){return t.read("chat-handler-flow")},writeChatHandlerFlow(n){t.write("chat-handler-flow",n);},readCardStoreRef(){return r("card-store-ref")},writeCardStoreRef(n){t.write("card-store-ref",n);},readOutputsStoreRef(){return r("outputs-store-ref")},writeOutputsStoreRef(n){t.write("outputs-store-ref",n);},readScratchStoreRef(){return r("scratch-store-ref")},writeScratchStoreRef(n){t.write("scratch-store-ref",n);},readArchiveStoreRef(){return r("archive-store-ref")},writeArchiveStoreRef(n){t.write("archive-store-ref",n);},readChatStoreRef(){return r("chat-store-ref")},writeChatStoreRef(n){t.write("chat-store-ref",n);},readArtifactsStoreRef(){return r("artifacts-store-ref")},writeArtifactsStoreRef(n){t.write("artifacts-store-ref",n);}}}function rt(t){return {writeComputedValues(r,n){t.write(`cards/${r}/computed_values`,n);},readComputedValues(r){return t.read(`cards/${r}/computed_values`)},readAllComputedValues(){let r={};for(let n of t.listKeys("cards/")){let c=n.match(/^cards\/([^/]+)\/computed_values$/);c&&(r[c[1]]=t.read(n));}return r},writeDataObjects(r){for(let[n,c]of Object.entries(r))n&&t.write(`data-objects/${n}`,c);},readDataObject(r){return t.read(`data-objects/${r}`)},readAllDataObjects(){let r={};for(let n of t.listKeys("data-objects/"))r[n.slice(13)]=t.read(n);return r},writeStatusSnapshot(r){t.write("status",r);},readStatusSnapshot(){return t.read("status")}}}function We(t){return t?{lastRequestedToken:t.lastRequestedToken,lastCompletedToken:t.lastCompletedToken,lastCompletionStatus:t.lastCompletionStatus??(t.lastCompletedToken?"success":"not-started"),queueRequestedToken:t.queueRequestedToken}:{lastCompletionStatus:"not-started"}}function Rt(t){return t?.lastRequestedToken?t.lastCompletedToken!==t.lastRequestedToken:false}function Xe(t,r){return t?.lastRequestedToken?Rt(t)?"in-flight":!t.lastCompletedToken||t.lastCompletedToken<r?"dispatch":"idle":"dispatch"}function kt(t,r){return {...t,lastCompletedToken:r,lastCompletionStatus:"success"}}function Ye(t,r){return {...t,lastCompletedToken:r,lastCompletionStatus:"failure"}}function we(t,r$1){let n=r$1.state.tasks,c=r$1.config.tasks,l=Object.keys(n),m=r(r$1),g={completed:0,failed:0,in_progress:0,pending:0,blocked:0,unresolved:0},f=new Map;for(let y of m.pending)f.set(y.taskName,y.waitingOn);for(let y of m.unresolved)f.set(y.taskName,y.missingTokens);for(let y of m.blocked)f.set(y.taskName,y.failedTokens);let I=new Map;for(let[y,a]of Object.entries(c))for(let o of a.requires??[]){let u=I.get(o)??[];u.push(y),I.set(o,u);}let A=l.sort().map(y=>{let a=n[y],o=c[y]??{requires:[],provides:[]};a.status==="completed"?g.completed+=1:a.status==="failed"?g.failed+=1:a.status==="in-progress"&&(g.in_progress+=1);let u=o.requires??[],h=o.provides??[],b=Object.keys(a.data??{}).sort(),E=u.filter(L=>r$1.state.availableOutputs.includes(L)),_=u.filter(L=>!r$1.state.availableOutputs.includes(L)),V=f.get(y)??_,F=new Set;for(let L of h)for(let J of I.get(L)??[])J!==y&&F.add(J);let D=a.failedAt,$=a.error?{message:a.error,code:"TASK_FAILED",at:D,source:"task-runtime"}:void 0;return {name:y,status:a.status,error:$,requires:u,requires_satisfied:E,requires_missing:_,provides_declared:h,provides_runtime:b,blocked_by:V,unblocks:Array.from(F).sort(),runtime:{attempt_count:a.executionCount??0,restart_count:a.retryCount??0,in_progress_since:a.status==="in-progress"?a.startedAt??null:null,last_transition_at:a.lastUpdated??null,last_completed_at:a.completedAt??null,last_restarted_at:a.startedAt??null,status_age_ms:a.lastUpdated?0:null}}});g.pending=m.pending.length,g.blocked=m.blocked.length,g.unresolved=m.unresolved.length;let j=A.map(y=>({name:y.name,fanOut:y.unblocks.length})).sort((y,a)=>a.fanOut-y.fanOut||y.name.localeCompare(a.name)),B=j.length>0?j[0]:{name:null,fanOut:0},K=new Set;for(let y of Object.values(c))for(let a of y.requires??[])K.add(a);let Y=0;for(let[y,a]of Object.entries(c)){let o=(a.requires??[]).length===0,h=(a.provides??[]).some(b=>(I.get(b)??[]).some(E=>E!==y));o&&!h&&(Y+=1);}return {schema_version:"v1",meta:{board:{path:t}},summary:{card_count:l.length,completed:g.completed,eligible:m.eligible.length,pending:g.pending,blocked:g.blocked,unresolved:g.unresolved,failed:g.failed,in_progress:g.in_progress,orphan_cards:Y,topology:{edge_count:Array.from(K).length,max_fan_out_card:B.name,max_fan_out:B.fanOut}},cards:A}}function St(){return new Date().toISOString()}function nt(t,r,n,c,l,m,g){return async f=>{let I=[],A=n.cardStore.readCard(f.nodeId);if(!A)return "task-initiate-failure";let j=A.id,B=A.card_data??{},K=A.source_defs??[],Y=K.filter(S=>S.optionalForCompletionGating!==true),y=n.cardRuntimeStore.readRuntime(j),a$1=false,o=()=>{a$1&&(n.cardRuntimeStore.writeRuntime(j,y),a$1=false);},u=S=>We(y._sources[S]),h=(S,C)=>{y._sources[S]=We(C),a$1=true;},b=f.taskState?.executionCount??0;if(y._lastExecutionCount!==b&&(y._sources={},y._lastExecutionCount=b,a$1=true),f.update){let S=f.update,C=S.outputFile;if(C){let v=u(C);if(S.failure){let P=S.rqt??v.lastRequestedToken??v.queueRequestedToken;P&&h(C,Ye(v,P));}else {let P=S.rqt;if(!v.lastCompletedToken||P>v.lastCompletedToken){let M=typeof S.deliveryToken=="string"?S.deliveryToken:void 0,z=false;M&&(z=n.fetchedSourcesStore.commitSourceData(j,C,M)),z?h(C,kt(v,P)):h(C,Ye(v,P));}}o();}}let _={};for(let S of K)if(S.outputFile){let C=n.fetchedSourcesStore.readSourceData(j,S.outputFile);C!==null&&(_[S.bindTo]=C);}let V={};for(let[S,C]of Object.entries(f.state??{}))if(C!==null&&typeof C=="object"&&!Array.isArray(C)){let v=C[S];V[S]=v!==void 0?v:C;}else V[S]=C;let F={id:j,card_data:{...B},requires:V,source_defs:K,compute:A.compute};F._sourcesData=_,A.compute&&a$3.runSync(F,{sourcesData:_}),(m??n.outputStore.writeComputedValues.bind(n.outputStore))(j,F.computed_values??{});let D={...A},$=a$3.enrichSourcesSync(Array.isArray(A.source_defs)?A.source_defs:void 0,{card_data:A.card_data,requires:V}),L=t.value;D.source_defs=Array.isArray($)?$.map(S=>({...S,boardDir:typeof S.boardDir=="string"&&S.boardDir?S.boardDir:L})):$;let J=St(),te=f.update?void 0:J,re=Y.filter(S=>{let C=S.outputFile;if(typeof C!="string"||!C)return true;let v=u(C);te&&(v={...v,queueRequestedToken:te},h(C,v));let P=v.queueRequestedToken??v.lastRequestedToken??J,M=Xe(v,P);return M==="in-flight"?false:M==="dispatch"});if(o(),re.length>0){let S=false,C=J;for(let v of re){let P=v.outputFile;if(typeof P!="string"||!P)continue;let M=u(P),z=M.queueRequestedToken??J;h(P,{...M,lastRequestedToken:z}),C=z,S=true;}return S&&o(),S&&(I.push({taskKind:"source-fetch",payload:{boardRef:a(t),enrichedCard:D,callbackToken:f.callbackToken,rqt:C}}),n.executionRequestStore.appendEntries(r,I)),"task-initiated"}if(Y.some(S=>{let C=S.outputFile;if(typeof C!="string"||!C)return false;let v=u(C),P=v.queueRequestedToken??v.lastRequestedToken??J;return Xe(v,P)==="in-flight"}))return "task-initiated";let ne=A.provides??[],oe={};for(let{bindTo:S,ref:C}of ne)oe[S]=a$3.resolve(F,C);return (g??n.outputStore.writeDataObjects.bind(n.outputStore))(oe),K.filter(S=>{if(S.optionalForCompletionGating!==true)return false;let C=u(S.outputFile);return !C.lastRequestedToken||!C.lastCompletedToken?true:C.lastCompletedToken<=C.lastRequestedToken}).length>0&&I.push({taskKind:"source-fetch",payload:{boardRef:a(t),enrichedCard:D,callbackToken:f.callbackToken,rqt:J}}),c(f.nodeId,oe),I.length>0&&n.executionRequestStore.appendEntries(r,I),"task-initiated"}}var Fe={settings:{completion:"manual",refreshStrategy:"data-changed"},tasks:{}};function ot(t){return {[ce]:t.graph,[Ze]:t.lastDrainedJournalId}}function st(t){let r=t[ce],n=t[Ze];if(!r||typeof r!="object")throw new Error(`State snapshot is missing required key: ${ce}`);return {graph:r,lastDrainedJournalId:typeof n=="string"?n:""}}function at(t){let r=t.requires,n=t.provides?.map(c=>c.bindTo)??[];return {requires:r&&r.length>0?r:void 0,provides:n,taskHandlers:["card-handler"],description:t.meta?.title??t.id}}function x(t){return t!==void 0?{status:"success",data:t}:{status:"success"}}function k(t){return {status:"fail",error:t}}function T(t){return {status:"error",error:t instanceof Error?t.message:String(t)}}function yt(t){let r=new TextEncoder().encode(t),n=Array.from(r,c=>String.fromCharCode(c)).join("");return btoa(n).replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"")}function ut(t){let r=t.replace(/-/g,"+").replace(/_/g,"/"),n=r+"=".repeat((4-r.length%4)%4),c=atob(n),l=Uint8Array.from(c,m=>m.charCodeAt(0));return new TextDecoder().decode(l)}function xe(t){try{let r=JSON.parse(ut(t));return typeof r?.t=="string"?{taskName:r.t}:null}catch{return null}}function bt(t){return yt(JSON.stringify(t))}function it(t){try{let r=JSON.parse(ut(t));return typeof r?.cbk=="string"&&typeof r?.cid=="string"&&typeof r?.b=="string"&&typeof r?.d=="string"?r:null}catch{return null}}function H(){return new Date().toISOString()}function Vt(t,r){let n=r.onWarn??(()=>{}),c$1=a(t);function l(s){if(s.length!==0)try{let e=r.publishBoardChangeNotifications?.(s);e&&typeof e.catch=="function"&&e.catch(i=>n(`[board-live-cards-public] publishBoardChangeNotifications failed: ${i instanceof Error?i.message:String(i)}`));}catch(e){n(`[board-live-cards-public] publishBoardChangeNotifications failed: ${e instanceof Error?e.message:String(e)}`);}}function m(){let s=f().readCardStoreRef();if(!s)throw new Error(`Board at ${t.value} has no card store configured. Run: init --base-ref <ref> --store-ref <b64-ref>`);let e=r.kvStorageForRef(s);return {readIndex(){return e.read("_index")},writeIndex(i){e.write("_index",i);},readCard(i){return e.read(i)},writeCard(i,p){return e.write(i,p),r.hashFn(p)},removeCard(i){e.delete(i);},cardExists(i){return e.read(i)!==null},defaultCardKey(i){return i}}}let g={readValues(s){let e=r.kvStorage("state-snapshot"),i=e.listKeys().sort();if(i.length===0)return {version:null,values:{}};let p={};for(let w of i)p[w]=e.read(w);return {version:r.hashFn(p),values:p}},writeValues(s,e,i){let p=r.kvStorage("state-snapshot");for(let w of i)p.delete(w);for(let[w,O]of Object.entries(e))p.write(w,O);return r.hashFn(e)}},f=()=>Oe(r.kvStorage("config")),I=()=>tt(g),A=()=>ze(r.journalAdapter()),j=()=>_e(m(),n),B=()=>{let s=f().readOutputsStoreRef();if(!s)throw new Error(`Board at ${t.value} has no outputs store configured. Run: init --outputs-store-ref <b64-ref>`);return rt(r.kvStorageForRef(s))},K=()=>{let s=f().readArchiveStoreRef();return s?r.archiveFactoryForRef(s):r.archiveFactory()};function Y(){return !!I().readSnapshot(t.value).values[ce]}function y(){let s=I().readSnapshot(t.value);if(!s.values[ce])throw new Error(`Board not initialized at ${t.value}`);return st(s.values)}function a$3(s,e){let i=I().commitSnapshot(t.value,{schemaVersion:ve,expectedVersion:e,commitId:r.genId(),committedAt:H(),deleteKeys:[],shallowMerge:ot(s)});if(!i.ok)throw new Error(`Snapshot commit failed (version mismatch): expected=${e??"null"} current=${i.currentVersion??"null"}`)}function o(s){A().appendEvent(s);}async function u$1(){let s=(d,R)=>{let q=d.payload,X=(q?.enrichedCard??{}).id??q?.cardId??"unknown";o({type:"task-failed",taskName:X,error:R,timestamp:H()});},e=Qe(r.kvStorage("execution-requests"),s),i=et(r.kvStorage("card-runtime")),p$1=be(r.blobStorage("sources"),d=>r.resolveBlob(d)),w=new Map,O={readRuntime(d){return w.get(d)??i.readRuntime(d)},writeRuntime(d,R){w.set(d,R);}},U=[],N=new Map,W={readSourceData(d,R){let q=`${d}/${R}`;return N.has(q)?N.get(q):p$1.readSourceData(d,R)},ingestSourceDataStaged(d,R,q,ie){p$1.ingestSourceDataStaged(d,R,q,ie);},commitSourceData(d,R,q){let ie=`${d}/.staged/${q}/${R}`,ue=r.blobStorage("sources").read(ie);if(ue==null)return false;let Se=`${d}/${R}`,ee=ue.trim();try{N.set(Se,JSON.parse(ee));}catch{N.set(Se,ee);}return U.push({cardId:d,outputFile:R,deliveryToken:q}),true},hasSource(d,R){let q=`${d}/${R}`;return N.has(q)?true:p$1.hasSource(d,R)},listSources(d){let R=p$1.listSources(d),q=new Set;for(let X of N.keys())X.startsWith(`${d}/`)&&q.add(X.slice(`${d}/`.length));let ie=new Set([...R,...q]);return Array.from(ie)}},G={cardStore:j(),cardRuntimeStore:O,fetchedSourcesStore:W,outputStore:B(),executionRequestStore:e},se=y(),fe=q(se.graph),{events:me,newCursor:ge}=A().readEntriesAfterCursor(se.lastDrainedJournalId),ae=[],he=[],Ie=[],Ee=new Map,je=new Set,mt=(d,R)=>{ae.push({type:"task-completed",taskName:d,data:R,timestamp:H()});try{K().stream("exec-history").append({taskName:d,status:"completed",completedAt:H()});}catch{}},Ve=(d,R)=>{o({type:"task-failed",taskName:d,error:R,timestamp:H()});try{K().stream("exec-history").append({taskName:d,status:"failed",error:R,completedAt:H()});}catch{}},Re=u(fe,{handlers:{"card-handler":nt(t,ge,G,mt,Ve,(d,R)=>{he.push({cardId:d,values:R});},d=>{Ie.push(d);})},onNodeRemoved:d=>{Ee.delete(d),w.delete(d),je.add(d);}});for(ae=me;ae.length>0;){let d=ae;ae=[];for(let R of d)if(R.type==="task-restart"){let q=G.cardStore.readCard(R.taskName);q&&Ee.set(R.taskName,q);}Re.pushAll(d),await Re.waitForHandlers();}let Ne=Re.getState();await Re.dispose({wait:true});let gt=I().readSnapshot(t.value).version;a$3({lastDrainedJournalId:ge,graph:p(Ne)},gt);for(let{cardId:d,values:R}of he)G.outputStore.writeComputedValues(d,R);for(let d of Ie)G.outputStore.writeDataObjects(d);for(let[d,R]of w)i.writeRuntime(d,R);for(let{cardId:d,outputFile:R,deliveryToken:q}of U)p$1.commitSourceData(d,R,q);let ke;try{ke=we(c$1,Ne),G.outputStore.writeStatusSnapshot(ke);}catch(d){n(`[board-live-cards-public] status publish failed: ${d instanceof Error?d.message:String(d)}`);}let pe=[];for(let{cardId:d,values:R}of he)pe.push({kind:"computed_values",cardId:d,values:R});for(let d of Ie)for(let[R,q]of Object.entries(d))R&&pe.push({kind:"data_object",key:R,payload:q});for(let[d,R]of Ee)pe.push({kind:"card_refreshed",cardId:d,card:R});for(let d of je)pe.push({kind:"card_removed",cardId:d});ke!==void 0&&pe.push({kind:"status",status:ke}),l(pe);let $e=f().readTaskExecutorRef()??{howToRun:"built-in",whatToRun:a({kind:"built-in",value:"source-cli-task-executor"})},pt=r.supportsDirectSourceOutput?.($e)===true;e.dispatchEntriesForJournalId(ge,d=>{if(d.taskKind!=="source-fetch"){n(`[process-accumulated-events] unknown taskKind "${d.taskKind}" \u2014 skipping`);return}let R=d.payload,q=R.enrichedCard?.id??"unknown",ie=R.enrichedCard?.source_defs??[];for(let X of ie){if(!X.outputFile){n(`[dispatch] source "${X.bindTo}" has no outputFile \u2014 skipping`);continue}let ue;if(pt){let ee=r.genId(),Ct=`${q}/.staged/${ee}/${X.outputFile}`,Be=r.blobStorage("sources").keyRef?.(Ct);Be?ue={ref:a(Be),deliveryToken:ee,outputFile:X.outputFile,cardId:q}:n("[dispatch] hosted board-worker requested but sources BlobStorage cannot produce portable refs; falling back to scratch protocol");}let Se=bt({cbk:R.callbackToken,rg:t.value,br:a(t),cid:q,b:X.bindTo,d:X.outputFile,cs:void 0,rqt:R.rqt,...ue?{dt:ue.deliveryToken}:{}});r.dispatchExecution($e,{source_def:X,base_ref:a(t),callback:{token:Se,via:r.selfRef},...ue?{output:ue}:{}}).catch(ee=>Ve(q,ee instanceof Error?ee.message:String(ee)));}});}async function h(){try{let s=()=>{let i=y(),{events:p}=A().readEntriesAfterCursor(i.lastDrainedJournalId);p.length<=0||(h(),r.requestProcessAccumulated?.());},e=await c(r.lock,u$1,s);return x({ran:e!==!1})}catch(s){return T(s)}}function b$1(){h(),r.requestProcessAccumulated?.();}function E(s){try{let e=s.params?.cardStoreRef;if(!e)return k("init requires params.cardStoreRef \u2014 create a card store with card-store-cli and pass its ref here");if(!Y()){let G=a$1(Fe);a$3({lastDrainedJournalId:"",graph:p(G)},null);}let i=s.params?.outputsStoreRef;if(!i)return k("init requires params.outputsStoreRef \u2014 pass the outputs store ref here");let p$1=s.params?.scratchStoreRef,w=s.params?.archiveStoreRef,O=s.params?.chatStoreRef,U=s.params?.artifactsStoreRef,N=f();N.writeCardStoreRef(e),N.writeOutputsStoreRef(i),p$1&&N.writeScratchStoreRef(p$1),w&&N.writeArchiveStoreRef(w),O&&N.writeChatStoreRef(O),U&&N.writeArtifactsStoreRef(U);let W=s.body??{};W["task-executor-ref"]&&N.writeTaskExecutorRef(W["task-executor-ref"]),Object.prototype.hasOwnProperty.call(W,"chat-handler-flow")&&N.writeChatHandlerFlow(W["chat-handler-flow"]);try{B().writeStatusSnapshot(we(c$1,q(y().graph)));}catch{}return x()}catch(e){return T(e)}}function _(s){try{let e=B().readStatusSnapshot();if(!e){e=we(c$1,q(y().graph));try{B().writeStatusSnapshot(e);}catch{}}return x(e)}catch(e){return T(e)}}function V(s){try{let e=s.params?.id;if(!e)return k("removeCard requires params.id");try{r.kvStorage("card-upsert").delete(e);}catch{}return o({type:"task-removal",taskName:e,timestamp:H()}),b$1(),x()}catch(e){return T(e)}}function F(s){try{let e=s.params?.cardId;if(!e)return k("addCardFiles requires params.cardId");let i=a$2(j()).appendFiles({params:{id:e},body:s.body});if(i.status!=="success")return i;let p=D({params:{cardId:e}});return p.status!=="success"?p:x({cardId:e,files_added:i.data.files_added,notified:!0})}catch(e){return T(e)}}function D(s){try{let e=s.params?.cardId;if(!e)return k("cardRefreshedNotify requires params.cardId");let i=j().readCard(e);return i?(l([{kind:"card_refreshed",cardId:e,card:i}]),x({cardId:e,notified:!0})):k(`Card "${e}" not found in board at ${t.value}`)}catch(e){return T(e)}}function $(s){try{let e=s.params?.id;return e?(o({type:"task-restart",taskName:e,timestamp:H()}),b$1(),x()):k("retrigger requires params.id")}catch(e){return T(e)}}async function L(s){return h()}function J(s){try{let e=s.params?.cardId,i=s.params?.all,p=!!s.params?.restart;if(!e&&!i)return k("upsertCard requires --card-id <id> or --all");let w=i?j().readAllCards().map(O=>O.id):[e];for(let O of w)if(!j().readCard(O))return k(`Card "${O}" not found in board at ${t.value}`);for(let O of w){let U=j().readCard(O),N=at(U),W=r.hashFn(N),G=r.kvStorage("card-upsert"),se=G.read(O),fe=se?.taskConfigHash!==W;if(!(!fe&&!p)){if(fe){let me=se?.blobRef??j().readCardKey(O)??O;o({type:"task-upsert",taskName:O,taskConfig:N,timestamp:H()}),G.write(O,{blobRef:me,taskConfigHash:W,updatedAt:H()});}p&&o({type:"task-restart",taskName:O,timestamp:H()});}}return b$1(),x()}catch(e){return T(e)}}function te(s){try{let e=s.params?.token;if(!e)return k("taskFailed requires params.token");let i=s.params?.error??"unknown error",p=xe(e);if(!p)return k("Invalid callback token");o({type:"task-failed",taskName:p.taskName,error:i,timestamp:H()});try{K().stream("exec-history").append({taskName:p.taskName,status:"failed",error:i,completedAt:H()});}catch{}return b$1(),x()}catch(e){return T(e)}}function re(s){try{let e=s.params?.token;if(!e)return k("taskProgress requires params.token");let p=(s.body??{}).update??{},w=xe(e);return w?(o({type:"task-progress",taskName:w.taskName,update:p,timestamp:H()}),b$1(),x()):k("Invalid callback token")}catch(e){return T(e)}}function Ce(s){try{let e=s.params?.token,i=s.params?.ref;if(!e)return k("sourceDataFetched requires params.token");if(!i)return k("sourceDataFetched requires params.ref");let p=it(e);if(!p)return k("Invalid source token");let{cbk:w,cid:O,b:U,d:N,cs:W,rqt:G,dt:se}=p,fe=be(r.blobStorage("sources"),he=>r.resolveBlob(he)),me=se||r.genId();se||fe.ingestSourceDataStaged(O,N,b(i),me);let ge=xe(w);if(!ge)return k("Invalid callback token embedded in source token");let ae=H();return o({type:"task-progress",taskName:ge.taskName,update:{bindTo:U,outputFile:N,fetchedAt:ae,deliveryToken:me,sourceChecksum:W,rqt:G},timestamp:ae}),b$1(),x()}catch(e){return T(e)}}function ne(s){try{let e=s.params?.token,i=s.params?.reason??"unknown";if(!e)return k("sourceDataFetchFailure requires params.token");let p=it(e);if(!p)return k("Invalid source token");let{cbk:w,b:O,d:U,cs:N,rqt:W}=p,G=xe(w);return G?(o({type:"task-progress",taskName:G.taskName,update:{bindTo:O,outputFile:U,failure:!0,reason:i,sourceChecksum:N,rqt:W},timestamp:H()}),b$1(),x()):k("Invalid callback token embedded in source token")}catch(e){return T(e)}}function oe(s){try{let e=f().readCardStoreRef();return e?x({storeRef:e}):k(`Board at ${t.value} has no card store configured`)}catch(e){return T(e)}}function le(s){try{let e=f().readOutputsStoreRef();return e?x({storeRef:e}):k(`Board at ${t.value} has no outputs store configured`)}catch(e){return T(e)}}function S(s){try{let e=f().readScratchStoreRef();return x({storeRef:e})}catch(e){return T(e)}}function C(s){try{let e=f().readArchiveStoreRef();return x({storeRef:e})}catch(e){return T(e)}}function v(s){try{let e=f().readChatStoreRef();return x({storeRef:e})}catch(e){return T(e)}}function P(s){try{let e=f().readArtifactsStoreRef();return x({storeRef:e})}catch(e){return T(e)}}function M(s){try{let e=s.params?.key;if(!e)return k("getConfig requires params.key");let i=f(),p;switch(e){case "task-executor":p=i.readTaskExecutorRef()??null;break;case "chat-handler-flow":p=i.readChatHandlerFlow()??null;break;case "card-store-ref":p=i.readCardStoreRef();break;case "outputs-store-ref":p=i.readOutputsStoreRef();break;case "scratch-store-ref":p=i.readScratchStoreRef();break;case "archive-store-ref":p=i.readArchiveStoreRef();break;case "chat-store-ref":p=i.readChatStoreRef();break;case "artifacts-store-ref":p=i.readArtifactsStoreRef();break;default:return k(`getConfig: unknown key "${e}"`)}return x({value:p})}catch(e){return T(e)}}function z(s){try{let e=s.params?.key;if(!e)return k("getOutputsDataObject requires params.key");let i=B().readDataObject(e);return x(i)}catch(e){return T(e)}}function Z(s){try{return x(B().readAllDataObjects())}catch(e){return T(e)}}function dt(s){try{let e=s.params?.key;if(!e)return k("getOutputsComputedValues requires params.key");let i=B().readComputedValues(e);return x(i)}catch(e){return T(e)}}function ct(s){try{return x(B().readAllComputedValues())}catch(e){return T(e)}}function qe(){return be(r.blobStorage("sources"),s=>r.resolveBlob(s))}function Pe(s){let e=r.blobStorage("sources").keyRef?.(s);return e?a(e):s}function lt(s){try{let e=s.params?.key;if(!e)return k("getOutputsFetchedSources requires params.key");let i=qe().listSources(e),p={};for(let w of i)p[w]=Pe(`${e}/${w}`);return x(p)}catch(e){return T(e)}}function ft(s){try{let e=qe(),i=new Set;for(let w of r.blobStorage("sources").listKeys()){let O=w.indexOf("/");O>0&&!w.includes("/.staged/")&&i.add(w.slice(0,O));}let p={};for(let w of i){let O=e.listSources(w);if(O.length>0){p[w]={};for(let U of O)p[w][U]=Pe(`${w}/${U}`);}}return x(p)}catch(e){return T(e)}}return {init:E,status:_,getCardStoreRef:oe,getOutputsStoreRef:le,getScratchStoreRef:S,getArchiveStoreRef:C,getChatStoreRef:v,getArtifactsStoreRef:P,getConfig:M,getOutputsDataObject:z,getAllOutputsDataObjects:Z,getOutputsComputedValues:dt,getAllOutputsComputedValues:ct,getOutputsFetchedSources:lt,getAllOutputsFetchedSources:ft,removeCard:V,addCardFiles:F,cardRefreshedNotify:D,retrigger:$,processAccumulatedEvents:L,upsertCard:J,taskFailed:te,taskProgress:re,sourceDataFetched:Ce,sourceDataFetchFailure:ne}}function Nt(t,r){let n=()=>Oe(r.kvStorage("config"));function c(){let a=n().readCardStoreRef();if(!a)throw new Error(`Board at ${t.value} has no card store configured. Run: init --base-ref <ref> --store-ref <b64-ref>`);let o=r.kvStorageForRef(a);return {readIndex(){return o.read("_index")},writeIndex(u){o.write("_index",u);},readCard(u){return o.read(u)},writeCard(u,h){return o.write(u,h),r.hashFn(h)},removeCard(u){o.delete(u);},cardExists(u){return o.read(u)!==null},defaultCardKey(u){return u}}}let l=()=>_e(c(),r.onWarn??(()=>{}));async function m(a,o){let u=r.validateSchema(o),h=[],b=n().readTaskExecutorRef();if(b&&Array.isArray(o.source_defs))for(let _ of o.source_defs){let V=typeof _.bindTo=="string"?_.bindTo:"(unknown)";try{let F;try{F=await r.invokeExecutor(b,"validate-source-def",{timeout:r.executorTimeouts?.validationMs??1e4,input:JSON.stringify(_)});}catch($){let L=$;if(F=typeof L?.stdout=="string"?L.stdout:"",!F.trim()){h.push(`source "${V}": executor validate-source-def failed \u2014 ${$ instanceof Error?$.message:String($)}`);continue}}let D=JSON.parse(F.trim());if(!D.ok&&Array.isArray(D.errors))for(let $ of D.errors)h.push(`source "${V}": ${$}`);}catch(F){h.push(`source "${V}": executor validate-source-def failed \u2014 ${F instanceof Error?F.message:String(F)}`);}}let E=[...u.errors,...h];return x({cardId:a,isValid:E.length===0,issues:E})}function g(a,o){let u=a.params?.sourceIdx,h=a.params?.outRef;if(u===void 0)return k(`${o} requires params.sourceIdx`);if(!a.body||typeof a.body!="object"||Array.isArray(a.body))return k(`${o} requires card JSON object in body`);let b=a.body,E=b["card-content"]??b,_=b["mock-projections"]??{},V=E.source_defs??[];if(u<0||u>=V.length)return k(`sourceIdx ${u} out of range (card has ${V.length} source(s))`);let F=V[u],D=typeof F.bindTo=="string"?F.bindTo:"source";return {src:F,bindTo:D,outRef:h,mockProjections:_}}async function f(a){try{if(!a.body||typeof a.body!="object"||Array.isArray(a.body))return k("validateCardPreflight requires card JSON object in body");let o=a.body,u=o["card-content"]??o,h=typeof u.id=="string"?u.id:"(unknown)";return await m(h,u)}catch(o){return T(o)}}async function I(a){try{let o=g(a,"probeSourcePreflight");if("status"in o)return o;let u=n().readTaskExecutorRef();if(!u)return k("No task-executor registered for this board");try{let h={...o.src,_projections:o.mockProjections},b=await r.invokeExecutor(u,"probe-source-preflight",{timeout:o.src.timeout??r.executorTimeouts?.preflightMs??6e4,input:JSON.stringify(h)}),E=JSON.parse(b.trim());return E.ok?x({bindTo:o.bindTo,reachable:E.reachable,latencyMs:E.latencyMs,note:E.note}):k(E.error??"Preflight probe failed")}catch{return k("Executor does not support probe-source-preflight")}}catch(o){return T(o)}}async function A(a){try{let o=g(a,"runSourcePreflight");if("status"in o)return o;let u=n().readTaskExecutorRef();if(!u)return k("No task-executor registered for this board");try{let h={...o.src,_projections:o.mockProjections},b$1=await r.invokeExecutor(u,"run-source-preflight",{timeout:o.src.timeout??r.executorTimeouts?.probeMs??6e4,input:JSON.stringify(h)}),E=JSON.parse(b$1.trim());if(!E.ok)return x({bindTo:o.bindTo,ok:!1,result:null,issues:[E.error??"Preflight run failed"]});if(o.outRef){let _=b(o.outRef);r.absoluteBlob.write(_.value,JSON.stringify(E.resultValue,null,2));}return x({bindTo:typeof E.bindTo=="string"?E.bindTo:o.bindTo,ok:!0,result:E.resultValue??null,issues:[]})}catch(h){let b=h instanceof Error?h.message:String(h);return x({bindTo:o.bindTo,ok:!1,result:null,issues:[b]})}}catch(o){return T(o)}}async function j(a){try{let o=n().readTaskExecutorRef();if(!o)return k("No task-executor registered for this board");let u=await r.invokeExecutor(o,"describe-capabilities",{timeout:r.executorTimeouts?.describeMs??1e4});return x(JSON.parse(u.trim()))}catch(o){return T(o)}}function B(a){try{let o=a.body;if(!o||!Array.isArray(o.ops))return k("updatesInCardStore requires body.ops array");let u=o.ops,h=l();for(let b of u){let E=b.op,_=b.id;if(!_)return k('op is missing "id"');if(E==="update"){let V=b["card-content"];if(!V)return k(`update op for "${_}" is missing "card-content"`);h.writeCard(_,V);}else return k(`Unknown op type: "${E??"(none)"}"`)}return x()}catch(o){return T(o)}}function K(a){try{let o=a.body;if(!o||!Array.isArray(o.ids))return k("readFromCardStore requires body.ids array");let u=o.ids,h=l(),b=u.map(E=>({id:E,"card-content":h.readCard(E)}));return x({cards:b})}catch(o){return T(o)}}function Y(a){try{if(!a.body||typeof a.body!="object"||Array.isArray(a.body))return k("evalCardCompute requires a JSON object in body");let o=a.body,u=o["card-content"]??o,h=typeof u.id=="string"?u.id:"(unknown)",b=o["mock-fetched-sources"]??{},E=o["mock-requires"]??{},_=u.compute;if(!_||!Array.isArray(_)||_.length===0)return x({cardId:h,ok:!0,computed_values:{},errors:[]});let V={id:h,card_data:u.card_data??{},requires:E,source_defs:u.source_defs,compute:_},F=a$3.runSync(V,{sourcesData:b}),D=F.node.computed_values??{},$=F.errors??[];return x({cardId:h,ok:$.length===0,computed_values:D,errors:$})}catch(o){return T(o)}}async function y(a){try{if(!a.body||typeof a.body!="object"||Array.isArray(a.body))return k("simulateCardCycle requires a JSON object in body");let o=a.body,u=o["card-content"]??o,h=typeof u.id=="string"?u.id:"(unknown)",b=o["mock-fetched-sources"]??{},E=o["mock-requires"]??{},_=await m(h,u),V=_.status==="success"?{isValid:_.data.isValid,issues:_.data.issues}:{isValid:!1,issues:[_.status==="fail"?_.error:"internal error"]},F=u.source_defs??[],D=u.card_data??{},$=[],L=[];if(F.length>0){$=a$3.enrichSourcesSync(F,{card_data:D,requires:E});for(let C of $){let v=C.projections,P=C._projections;if(v&&P){for(let M of Object.keys(v))if(P[M]===void 0){let z=typeof C.bindTo=="string"?C.bindTo:"(unknown)";L.push({bindTo:z,key:M,error:`Projection "${M}" resolved to undefined`});}}}}let J=[],te={...b},re=o["task-executor-ref"],Ce=(re?.howToRun&&re?.whatToRun?re:void 0)??n().readTaskExecutorRef();for(let C=0;C<$.length;C++){let v=$[C],P=typeof v.bindTo=="string"?v.bindTo:`source_${C}`;if(!Ce){J.push({bindTo:P,skipped:!0,error:"No task executor configured"});continue}try{let M={...v},z=await r.invokeExecutor(Ce,"run-source-preflight",{timeout:v.timeout??r.executorTimeouts?.preflightMs??6e4,input:JSON.stringify(M)}),Z=JSON.parse(z.trim());Z.ok&&!Object.prototype.hasOwnProperty.call(b,P)&&Object.prototype.hasOwnProperty.call(Z,"resultValue")&&(te[P]=Z.resultValue),J.push({bindTo:P,reachable:Z.reachable,latencyMs:Z.latencyMs,error:Z.ok?void 0:Z.error});}catch{J.push({bindTo:P,skipped:!0,error:"Executor does not support run-source-preflight"});}}let ne=u.compute,oe={},le=[];if(ne&&Array.isArray(ne)&&ne.length>0){let C={id:h,card_data:D,requires:E,source_defs:u.source_defs,compute:ne},v=a$3.runSync(C,{sourcesData:te});oe=v.node.computed_values??{},le=v.errors??[];}let S=V.isValid&&L.length===0&&le.length===0&&J.every(C=>C.reachable!==!1);return x({cardId:h,ok:S,validation:V,source_probes:J,projection_errors:L,fetched_sources:te,computed_values:oe,compute_errors:le})}catch(o){return T(o)}}return {validateCardPreflight:f,probeSourcePreflight:I,runSourcePreflight:A,evalCardCompute:Y,simulateCardCycle:y,describeTaskExecutorCapabilities:j,updatesInCardStore:B,readFromCardStore:K}}
|
|
2
|
+
export{_e as a,ve as b,ce as c,Fe as d,Vt as e,Nt as f};//# sourceMappingURL=chunk-M7EQRS6W.js.map
|
|
3
|
+
//# sourceMappingURL=chunk-M7EQRS6W.js.map
|