yaml-flow 8.11.4 → 8.11.6

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.
Files changed (82) hide show
  1. package/browser/adapters/firestore-storage.js +2 -2
  2. package/browser/adapters/localstorage-storage.js +3 -3
  3. package/browser/asset-integrity.json +7 -7
  4. package/browser/server-runtime-controlface.js +4 -4
  5. package/lib/board-live-cards-node.cjs +2 -2
  6. package/lib/board-live-cards-node.js +2 -2
  7. package/lib/board-live-cards-public.cjs +1 -1
  8. package/lib/board-live-cards-public.js +1 -1
  9. package/lib/board-live-cards-server-runtime.cjs +1 -1
  10. package/lib/board-live-cards-server-runtime.js +1 -1
  11. package/lib/board-livegraph-runtime/index.cjs +1 -1
  12. package/lib/board-livegraph-runtime/index.js +1 -1
  13. package/lib/board-sse-state.cjs +2 -0
  14. package/lib/board-sse-state.d.cts +19 -0
  15. package/lib/board-sse-state.d.ts +19 -0
  16. package/lib/board-sse-state.js +2 -0
  17. package/lib/board-state-reducer.cjs +1 -1
  18. package/lib/board-state-reducer.js +1 -1
  19. package/lib/card-store-public.cjs +1 -1
  20. package/lib/card-store-public.js +1 -1
  21. package/lib/{chunk-MEL5LKF7.js → chunk-23PEDGFN.js} +2 -2
  22. package/lib/{chunk-O65MSWUE.cjs → chunk-52XPRCZC.cjs} +2 -2
  23. package/lib/chunk-5RUSICUC.cjs +3 -0
  24. package/lib/chunk-7SBE7A6E.cjs +2 -0
  25. package/lib/chunk-7Y47QXMX.cjs +2 -0
  26. package/lib/chunk-AW3COGCI.cjs +3 -0
  27. package/lib/chunk-CAQHA4GK.js +2 -0
  28. package/lib/chunk-CJQEM63S.cjs +2 -0
  29. package/lib/chunk-CODPG5MY.js +3 -0
  30. package/lib/chunk-EHREWADE.js +2 -0
  31. package/lib/chunk-EOVTMJYZ.js +2 -0
  32. package/lib/chunk-FULAMLUU.js +3 -0
  33. package/lib/chunk-HOSD6UHA.js +3 -0
  34. package/lib/{chunk-37JSBRZO.js → chunk-I3ZOFU3F.js} +2 -2
  35. package/lib/chunk-IXZV5BS5.js +2 -0
  36. package/lib/chunk-J7KE7SPA.cjs +2 -0
  37. package/lib/{chunk-LRO5AL75.cjs → chunk-NOAERAOE.cjs} +2 -2
  38. package/lib/chunk-Q444D72R.js +2 -0
  39. package/lib/chunk-QKWQ4HRE.js +3 -0
  40. package/lib/chunk-R7SQQSDX.js +2 -0
  41. package/lib/chunk-SIPLKLWU.cjs +2 -0
  42. package/lib/{chunk-HLJH7LGW.js → chunk-SK2R5ILQ.js} +3 -3
  43. package/lib/chunk-VI36DRWG.cjs +2 -0
  44. package/lib/chunk-WE7JOO4T.cjs +3 -0
  45. package/lib/chunk-WGYS2L4V.js +2 -0
  46. package/lib/chunk-X5MLNGGM.cjs +16 -0
  47. package/lib/{chunk-Z26U6RSG.cjs → chunk-YAPTL2MP.cjs} +2 -2
  48. package/lib/{chunk-MQAVZUXB.cjs → chunk-ZWXZ5DBX.cjs} +3 -3
  49. package/lib/cloud-storage.cjs +1 -1
  50. package/lib/cloud-storage.js +1 -1
  51. package/lib/continuous-event-graph/index.cjs +1 -1
  52. package/lib/continuous-event-graph/index.js +1 -1
  53. package/lib/event-graph/index.cjs +1 -1
  54. package/lib/event-graph/index.js +1 -1
  55. package/lib/firestore-storage/index.cjs +1 -1
  56. package/lib/firestore-storage/index.js +1 -1
  57. package/lib/index.cjs +2 -2
  58. package/lib/index.js +1 -1
  59. package/lib/localstorage-storage/index.cjs +1 -1
  60. package/lib/localstorage-storage/index.js +1 -1
  61. package/lib/notification-consumer/index.cjs +1 -1
  62. package/lib/notification-consumer/index.js +1 -1
  63. package/lib/server-runtime/index.cjs +1 -1
  64. package/lib/server-runtime/index.js +1 -1
  65. package/lib/server-runtime-controlface/index.cjs +1 -1
  66. package/lib/server-runtime-controlface/index.js +1 -1
  67. package/lib/server-runtime-core/index.cjs +1 -1
  68. package/lib/server-runtime-core/index.js +1 -1
  69. package/package.json +6 -1
  70. package/lib/chunk-4BEQXKRF.js +0 -2
  71. package/lib/chunk-5EA2ESS4.cjs +0 -16
  72. package/lib/chunk-5VTIOM2U.js +0 -3
  73. package/lib/chunk-5XLFPPTY.cjs +0 -2
  74. package/lib/chunk-7QNEV5S3.js +0 -2
  75. package/lib/chunk-BAG7MHZP.cjs +0 -3
  76. package/lib/chunk-EZOXABJ2.js +0 -3
  77. package/lib/chunk-G4XXRHL2.cjs +0 -3
  78. package/lib/chunk-HVLWVMG6.cjs +0 -3
  79. package/lib/chunk-LODXIALE.cjs +0 -2
  80. package/lib/chunk-VGT3TRQG.js +0 -3
  81. package/lib/chunk-WDPOGXTY.js +0 -2
  82. package/lib/chunk-WHKT5HN4.js +0 -3
@@ -0,0 +1,3 @@
1
+ 'use strict';var chunkAW3COGCI_cjs=require('./chunk-AW3COGCI.cjs'),chunkJ7KE7SPA_cjs=require('./chunk-J7KE7SPA.cjs'),chunkVQCIOKJV_cjs=require('./chunk-VQCIOKJV.cjs'),chunkQBEQL4TL_cjs=require('./chunk-QBEQL4TL.cjs'),chunk2RIHC5TZ_cjs=require('./chunk-2RIHC5TZ.cjs');function Rt(o){return typeof o=="string"&&o.trim().length>0}function Ct(o,r){if(!o||typeof o!="object")throw new Error(`${r}: adapter.selfRef is required`);if(!Rt(o.howToRun))throw new Error(`${r}: adapter.selfRef.howToRun is required`);if(!Rt(o.whatToRun))throw new Error(`${r}: adapter.selfRef.whatToRun is required`)}function kt(o,r){if(!o||typeof o!="object")throw new Error(`${r}: adapter.callbackTransport is required`);if(typeof o.createCallback!="function")throw new Error(`${r}: adapter.callbackTransport.createCallback is required`)}function $t(o,r="callbackTransport"){return {createCallback(S){let _=o();return Ct(_,r),{token:S,via:_}}}}function He(o){return $t(()=>o,"createStaticExecutionRefCallbackTransport")}function Yt(o){return He({meta:"board-live-cards",howToRun:"http:post",whatToRun:chunkVQCIOKJV_cjs.a({kind:"http-url",value:String(o||"").trim()})})}function Ut(o){return He({meta:"board-live-cards",howToRun:"in-process-loop",whatToRun:chunkVQCIOKJV_cjs.a({kind:"in-process-loop",value:String(o||"").trim()})})}function Xt(o){let r=typeof o=="string"?{notifyChannel:o}:o??{},S={};return r.notifyChannel&&(S.notifyChannel=r.notifyChannel),r.boardRuntimeStoreRef&&(S.boardRuntimeStoreRef=r.boardRuntimeStoreRef),r.queueStoreRef&&(S.queueStoreRef=r.queueStoreRef),He({meta:"board-live-cards",howToRun:"built-in",whatToRun:chunkVQCIOKJV_cjs.a({kind:"built-in",value:"board-live-cards"}),...Object.keys(S).length>0?{extra:S}:{}})}function m(o){return o!==void 0?{status:"success",data:o}:{status:"success"}}function d(o){return {status:"fail",error:o}}function g(o){return {status:"error",error:o instanceof Error?o.message:String(o)}}function Dt(o){let r=new TextEncoder().encode(o),S=Array.from(r,_=>String.fromCharCode(_)).join("");return btoa(S).replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"")}function bt(o){let r=o.replace(/-/g,"+").replace(/_/g,"/"),S=r+"=".repeat((4-r.length%4)%4),_=atob(S),E=Uint8Array.from(_,M=>M.charCodeAt(0));return new TextDecoder().decode(E)}function _e(o){try{let r=JSON.parse(bt(o));return typeof r?.t=="string"?{taskName:r.t}:null}catch{return null}}function ht(o){return Dt(JSON.stringify(o))}function St(o){try{let r=JSON.parse(bt(o));return typeof r?.cbk=="string"&&typeof r?.cid=="string"&&typeof r?.b=="string"&&typeof r?.d=="string"?r:null}catch{return null}}function N(){return new Date().toISOString()}function Vt(o){let r=new Map;return {appendEntries(S,_){if(!S||_.length===0)return;let E=r.get(S)??[];r.set(S,[...E,..._]);},dispatchEntriesForJournalId(S,_){if(!S)return;let E=r.get(S);if(!(!E||E.length===0)){for(let M of E)try{_(M);}catch(j){try{o(M,j instanceof Error?j.message:String(j));}catch{}}r.delete(S);}}}}function sr(o,r,S={}){kt(r.callbackTransport,"createBoardLiveCardsPublic");let _=r.callbackTransport,E=r.onWarn??(()=>{}),M=chunkVQCIOKJV_cjs.a(o),j=S.boardRuntimeStoreRef,G=S.scratchStoreRef,ue=S.taskExecutorRef,Re=S.chatHandlerFlow,Ce=S.emitNotification??(t=>{if(!r.publishBoardChangeNotifications)return;let e=t.kind==="notification-batch"?t.notifications:[t];return r.publishBoardChangeNotifications(e)});function te(){if(!j)throw new Error(`Board at ${o.value} has no board runtime store configured. Pass boardRuntimeStoreRef at construction or init.`);return j}function Fe(t){if(t.length!==0)try{let e=chunk2RIHC5TZ_cjs.e(t),s=chunk2RIHC5TZ_cjs.f({kind:"notification-batch",notifications:e}),i=Ce(s);i&&typeof i.catch=="function"&&i.catch(f=>E(`[board-live-cards-public] emitNotification failed: ${f instanceof Error?f.message:String(f)}`));}catch(e){E(`[board-live-cards-public] emitNotification failed: ${e instanceof Error?e.message:String(e)}`);}}function Oe(){let t=q().readCardStoreRef();if(!t)throw new Error(`Board at ${o.value} has no card store configured. Run: init --base-ref <ref> --store-ref <b64-ref>`);let e=r.kvStorageForRef(t);return {readIndex(){return e.read("_index")},writeIndex(s){e.write("_index",s);},readCard(s){return e.read(s)},writeCard(s,i){return e.write(s,i),r.hashFn(i)},removeCard(s){e.delete(s);},cardExists(s){return e.read(s)!==null},defaultCardKey(s){return s}}}let Pe={readValues(t){let e=r.kvStorageForRef(te()),s=e.listKeys().sort();if(s.length===0)return {version:null,values:{}};let i={};for(let f of s)i[f]=e.read(f);return {version:r.hashFn(i),values:i}},writeValues(t,e,s){let i=r.kvStorageForRef(te());for(let f of s)i.delete(f);for(let[f,v]of Object.entries(e))i.write(f,v);return r.hashFn(e)}},q=()=>chunkJ7KE7SPA_cjs.t(r.kvStorageForRef(te())),re=()=>chunkJ7KE7SPA_cjs.s(Pe),ce=()=>chunkJ7KE7SPA_cjs.o(r.journalAdapterForRef(te())),l=()=>chunkJ7KE7SPA_cjs.m(Oe(),E),n=()=>{let t=q().readOutputsStoreRef();if(!t)throw new Error(`Board at ${o.value} has no outputs store configured. Run: init --outputs-store-ref <b64-ref>`);return chunkJ7KE7SPA_cjs.u(r.kvStorageForRef(t))};function u(){return ue??q().readTaskExecutorRef()}function R(){return !!re().readSnapshot(o.value).values[chunkJ7KE7SPA_cjs.q]}function y(){let t=re().readSnapshot(o.value);if(!t.values[chunkJ7KE7SPA_cjs.q])throw new Error(`Board not initialized at ${o.value}`);return chunkJ7KE7SPA_cjs.F(t.values)}function k(t,e){let s=re().commitSnapshot(o.value,{schemaVersion:chunkJ7KE7SPA_cjs.p,expectedVersion:e,commitId:r.genId(),committedAt:N(),deleteKeys:[],shallowMerge:chunkJ7KE7SPA_cjs.E(t)});if(!s.ok)throw new Error(`Snapshot commit failed (version mismatch): expected=${e??"null"} current=${s.currentVersion??"null"}`)}function p(t){ce().appendEvent(t);}async function A(){let e=Vt((a,c)=>{let h=a.payload,w=(h?.enrichedCard??{}).id??h?.cardId??"unknown";p({type:"task-failed",taskName:w,error:c,timestamp:N()});}),s=y(),i=chunkAW3COGCI_cjs.q(s.graph),{events:f,newCursor:v}=ce().readEntriesAfterCursor(s.lastDrainedJournalId),C=x(),b=chunkJ7KE7SPA_cjs.n(C,a=>r.resolveBlob(a)),I={...s.runtimeByCardId},P=new Map,Q={readRuntime(a){return P.get(a)??I[a]??{_sources:{}}},writeRuntime(a,c){P.set(a,c),I[a]=c;}},W=[],J=new Map,se={readSourceData(a,c){let h=`${a}/${c}`;return J.has(h)?J.get(h):b.readSourceData(a,c)},ingestSourceDataStaged(a,c,h,H){b.ingestSourceDataStaged(a,c,h,H);},commitSourceData(a,c,h){let H=`${a}/.staged/${h}/${c}`,w=C.read(H);if(w==null){let B=C.keyRef?.(H);B&&(w=r.resolveBlob(B));}if(w==null)return false;let L=`${a}/${c}`,X=w.trim();try{J.set(L,JSON.parse(X));}catch{J.set(L,X);}return W.push({cardId:a,outputFile:c,deliveryToken:h}),true},hasSource(a,c){let h=`${a}/${c}`;return J.has(h)?true:b.hasSource(a,c)},listSources(a){let c=b.listSources(a),h=new Set;for(let w of J.keys())w.startsWith(`${a}/`)&&h.add(w.slice(`${a}/`.length));let H=new Set([...c,...h]);return Array.from(H)}},me=()=>i.config.tasks,Z={cardStore:l(),cardRuntimeStore:Q,fetchedSourcesStore:se,outputStore:n(),executionRequestStore:e,activeTaskConfigs:()=>me()},pe=[],qe=[],je=[],$e=new Map,ze=new Set,Nt=(a,c)=>{pe.push({type:"task-completed",taskName:a,data:c,timestamp:N()});},De=(a,c)=>{p({type:"task-failed",taskName:a,error:c,timestamp:N()});},ge=chunkAW3COGCI_cjs.t(i,{handlers:{"card-handler":chunkJ7KE7SPA_cjs.C(o,v,Z,Nt,De,(a,c)=>{qe.push({cardId:a,values:c});},a=>{je.push(a);})},onNodeRemoved:a=>{$e.delete(a),P.delete(a),delete I[a],ze.add(a);}});for(me=()=>ge.getState().config.tasks,pe=f;pe.length>0;){let a=pe;pe=[];for(let c of a)if(c.type==="task-restart"){let h=Z.cardStore.readCard(c.taskName);h&&$e.set(c.taskName,h);}ge.pushAll(a),await ge.waitForHandlers();}let Qe=ge.getState();await ge.dispose({wait:true});let qt=re().readSnapshot(o.value).version;k({lastDrainedJournalId:v,graph:chunkAW3COGCI_cjs.p(Qe),runtimeByCardId:I},qt);for(let{cardId:a,values:c}of qe)Z.outputStore.writeComputedValues(a,c);for(let a of je)Z.outputStore.writeDataObjects(a);for(let{cardId:a,outputFile:c,deliveryToken:h}of W)b.commitSourceData(a,c,h);let Se;try{Se=chunkJ7KE7SPA_cjs.z(chunkJ7KE7SPA_cjs.B(M,Qe)),Z.outputStore.writeStatusSnapshot(Se);}catch(a){E(`[board-live-cards-public] status publish failed: ${a instanceof Error?a.message:String(a)}`);}let ae=[];for(let{cardId:a,values:c}of qe)ae.push({kind:"computed_values",cardId:a,values:c});for(let a of je)for(let[c,h]of Object.entries(a))c&&ae.push({kind:"data_object",key:c,payload:h});for(let[a,c]of $e)a!==chunkJ7KE7SPA_cjs.i&&ae.push({kind:"card_refreshed",cardId:a,card:c});for(let a of ze)ae.push({kind:"card_removed",cardId:a});Se!==void 0&&ae.push({kind:"status",status:Se}),Fe(ae);let ie=u()??{howToRun:"built-in",whatToRun:chunkVQCIOKJV_cjs.a({kind:"built-in",value:"source-cli-task-executor"})},We=r.supportsDirectSourceOutput?.(ie)===true;e.dispatchEntriesForJournalId(v,a=>{if(a.taskKind!=="source-fetch"){E(`[process-accumulated-events] unknown taskKind "${a.taskKind}" \u2014 skipping`);return}let c=a.payload,h=c.enrichedCard?.id??"unknown",H=c.enrichedCard?.source_defs??[];if(ie.howToRun==="queue-storage"&&We){try{let w=r.queueStorageForRef(T(),"task-executor"),L=typeof ie.extra?.boardId=="string"?ie.extra.boardId:void 0,X=[];for(let B of H){if(!B.outputFile){E(`[dispatch] source "${B.bindTo}" has no outputFile \u2014 skipping`);continue}let be=r.genId(),ye=`${h}/.staged/${be}/${B.outputFile}`,Ze=C.keyRef?.(ye);if(!Ze)continue;let et={ref:chunkVQCIOKJV_cjs.a(Ze),deliveryToken:be,outputFile:B.outputFile,cardId:h},jt=ht({cbk:c.callbackToken,rg:o.value,br:chunkVQCIOKJV_cjs.a(o),cid:h,b:B.bindTo,d:B.outputFile,cs:void 0,rqt:c.rqt,dt:et.deliveryToken});X.push({...L?{boardId:L}:{},ref:ie,args:{source_def:B,base_ref:chunkVQCIOKJV_cjs.a(o),callback:_.createCallback(jt),output:et}});}X.length>0&&w.enqueueMany(X);}catch(w){De(h,w instanceof Error?w.message:String(w));}return}for(let w of H){if(!w.outputFile){E(`[dispatch] source "${w.bindTo}" has no outputFile \u2014 skipping`);continue}let L;if(We){let B=r.genId(),be=`${h}/.staged/${B}/${w.outputFile}`,ye=C.keyRef?.(be);ye&&(L={ref:chunkVQCIOKJV_cjs.a(ye),deliveryToken:B,outputFile:w.outputFile,cardId:h});}let X=ht({cbk:c.callbackToken,rg:o.value,br:chunkVQCIOKJV_cjs.a(o),cid:h,b:w.bindTo,d:w.outputFile,cs:void 0,rqt:c.rqt,...L?{dt:L.deliveryToken}:{}});r.dispatchExecution(ie,{source_def:w,base_ref:chunkVQCIOKJV_cjs.a(o),callback:_.createCallback(X),...L?{output:L}:{}}).catch(B=>De(h,B instanceof Error?B.message:String(B)));}});}function T(){let t=q().readQueueStoreRef();if(!t)throw new Error(`Board at ${o.value} has no queue store configured. Run: init --queue-store-ref <b64-ref>`);return t}function $(){r.queueStorageForRef(T(),"process-accumulated").enqueue({boardRef:chunkVQCIOKJV_cjs.a(o)}),r.requestProcessAccumulated?.();}function F(){let t=r.queueStorageForRef(T(),"process-accumulated");for(;;){let e=t.lease({max:64,visibilityMs:1e3});if(e.length<=0)return;for(let s of e)t.ack(s.id,s.leaseToken);if(e.length<64)return}}async function U(){try{let t=()=>{let s=y(),{events:i}=ce().readEntriesAfterCursor(s.lastDrainedJournalId);i.length<=0||$();},e=await chunkVQCIOKJV_cjs.c(r.lock,A,t);return m({ran:e!==!1})}catch(t){return g(t)}}function D(){$();}function de(t){try{let e=t.params?.cardStoreRef;if(!e)return d("init requires params.cardStoreRef \u2014 create a card store with card-store-cli and pass its ref here");if(j=t.params?.boardRuntimeStoreRef,!j)return d("init requires params.boardRuntimeStoreRef \u2014 pass the board runtime store ref here");if(!R()){let P=chunkAW3COGCI_cjs.a(chunkJ7KE7SPA_cjs.D);k({lastDrainedJournalId:"",graph:chunkAW3COGCI_cjs.p(P),runtimeByCardId:{}},null);}let s=t.params?.outputsStoreRef;if(!s)return d("init requires params.outputsStoreRef \u2014 pass the outputs store ref here");let i=t.params?.queueStoreRef;if(!i)return d("init requires params.queueStoreRef \u2014 pass the queue store ref here");let f=t.params?.fetchedSourcesStoreRef;if(!f)return d("init requires params.fetchedSourcesStoreRef \u2014 pass the fetched sources store ref here");G=t.params?.scratchStoreRef;let v=t.params?.chatStoreRef;if(!v)return d("init requires params.chatStoreRef \u2014 pass the chat store ref here");let C=t.params?.artifactsStoreRef;if(!C)return d("init requires params.artifactsStoreRef \u2014 pass the artifacts store ref here");let b=q();b.writeBoardRuntimeStoreRef(j),b.writeCardStoreRef(e),b.writeOutputsStoreRef(s),b.writeQueueStoreRef(i),b.writeFetchedSourcesStoreRef(f),b.writeChatStoreRef(v),b.writeArtifactsStoreRef(C),l().writeCard(chunkJ7KE7SPA_cjs.l().id,chunkJ7KE7SPA_cjs.l());let I=V({params:{cardId:chunkJ7KE7SPA_cjs.l().id,restart:!0}});if(I.status!=="success")return I;try{n().writeStatusSnapshot(chunkJ7KE7SPA_cjs.z(chunkJ7KE7SPA_cjs.B(M,chunkAW3COGCI_cjs.q(y().graph))));}catch{}return m()}catch(e){return g(e)}}function ne(t){try{let e=n().readStatusSnapshot();if(!e){e=chunkJ7KE7SPA_cjs.z(chunkJ7KE7SPA_cjs.B(M,chunkAW3COGCI_cjs.q(y().graph)));try{n().writeStatusSnapshot(e);}catch{}}return m(e)}catch(e){return g(e)}}function ke(t){try{let e=t.params?.id;if(!e)return d("removeCard requires params.id");try{r.kvStorage("card-upsert").delete(e);}catch{}return p({type:"task-removal",taskName:e,timestamp:N()}),e!==chunkJ7KE7SPA_cjs.i&&p({type:"task-restart",taskName:chunkJ7KE7SPA_cjs.i,timestamp:N()}),D(),m()}catch(e){return g(e)}}function oe(t){try{let e=t.params?.cardId;if(!e)return d("addCardFiles requires params.cardId");let s=chunkJ7KE7SPA_cjs.H(l(),{emitNotification:Ce}).appendFiles({params:{id:e},body:t.body});return s.status!=="success"?s:m({cardId:e,files_added:s.data.files_added,notified:!0})}catch(e){return g(e)}}function he(t){try{let e=t.params?.id;return e?(p({type:"task-restart",taskName:e,timestamp:N()}),D(),m()):d("retrigger requires params.id")}catch(e){return g(e)}}async function le(t){return F(),U()}function Ne(){let t=q().readFetchedSourcesStoreRef();if(!t)throw new Error(`Board at ${o.value} has no fetched sources store configured. Run: init --fetched-sources-store-ref <b64-ref>`);return t}function x(){return r.blobStorageForRef(Ne())}function V(t){try{let e=t.params?.cardId,s=t.params?.all,i=!!t.params?.restart;if(!e&&!s)return d("upsertCard requires --card-id <id> or --all");let f=s?l().readAllCards().map(C=>C.id):[e];for(let C of f)if(!l().readCard(C))return d(`Card "${C}" not found in board at ${o.value}`);let v=!1;for(let C of f){let b=l().readCard(C),I=chunkJ7KE7SPA_cjs.G(b),P=r.hashFn(I),Q=r.kvStorage("card-upsert"),W=Q.read(C),J=W?.taskConfigHash!==P;if(!(!J&&!i)){if(J){let se=W?.blobRef??l().readCardKey(C)??C;p({type:"task-upsert",taskName:C,taskConfig:I,timestamp:N()}),Q.write(C,{blobRef:se,taskConfigHash:P,updatedAt:N()}),v=v||C!==chunkJ7KE7SPA_cjs.i;}i&&p({type:"task-restart",taskName:C,timestamp:N()});}}return v&&p({type:"task-restart",taskName:chunkJ7KE7SPA_cjs.i,timestamp:N()}),D(),m()}catch(e){return g(e)}}function K(t){try{let e=t.params?.token;if(!e)return d("taskFailed requires params.token");let s=t.params?.error??"unknown error",i=_e(e);return i?(p({type:"task-failed",taskName:i.taskName,error:s,timestamp:N()}),D(),m()):d("Invalid callback token")}catch(e){return g(e)}}function z(t){try{let e=t.params?.token;if(!e)return d("taskProgress requires params.token");let i=(t.body??{}).update??{},f=_e(e);return f?(p({type:"task-progress",taskName:f.taskName,update:i,timestamp:N()}),D(),m()):d("Invalid callback token")}catch(e){return g(e)}}function fe(t){try{let e=t.params?.token,s=t.params?.ref;if(!e)return d("sourceDataFetched requires params.token");if(!s)return d("sourceDataFetched requires params.ref");let i=St(e);if(!i)return d("Invalid source token");let{cbk:f,cid:v,b:C,d:b,cs:I,rqt:P,dt:Q}=i,W=chunkJ7KE7SPA_cjs.n(x(),Z=>r.resolveBlob(Z)),J=Q||r.genId();Q||W.ingestSourceDataStaged(v,b,chunkVQCIOKJV_cjs.b(s),J);let se=_e(f);if(!se)return d("Invalid callback token embedded in source token");let me=N();return p({type:"task-progress",taskName:se.taskName,update:{bindTo:C,outputFile:b,fetchedAt:me,deliveryToken:J,sourceChecksum:I,rqt:P},timestamp:me}),D(),m()}catch(e){return g(e)}}function Y(t){try{let e=t.params?.token,s=t.params?.reason??"unknown";if(!e)return d("sourceDataFetchFailure requires params.token");let i=St(e);if(!i)return d("Invalid source token");let{cbk:f,b:v,d:C,cs:b,rqt:I}=i,P=_e(f);return P?(p({type:"task-progress",taskName:P.taskName,update:{bindTo:v,outputFile:C,failure:!0,reason:s,sourceChecksum:b,rqt:I},timestamp:N()}),D(),m()):d("Invalid callback token embedded in source token")}catch(e){return g(e)}}function yt(t){try{let e=q().readCardStoreRef();return e?m({storeRef:e}):d(`Board at ${o.value} has no card store configured`)}catch(e){return g(e)}}function vt(t){try{return m({storeRef:j??null})}catch(e){return g(e)}}function wt(t){try{let e=q().readOutputsStoreRef();return e?m({storeRef:e}):d(`Board at ${o.value} has no outputs store configured`)}catch(e){return g(e)}}function Tt(t){try{return m({storeRef:G??null})}catch(e){return g(e)}}function It(t){try{let e=q().readChatStoreRef();return m({storeRef:e})}catch(e){return g(e)}}function xt(t){try{let e=q().readArtifactsStoreRef();return m({storeRef:e})}catch(e){return g(e)}}function Et(t){try{let e=q().readFetchedSourcesStoreRef();return m({storeRef:e})}catch(e){return g(e)}}function At(t){try{let e=t.params?.key;if(!e)return d("getConfig requires params.key");let s=q(),i;switch(e){case "task-executor":i=ue??null;break;case "chat-handler-flow":i=Re??null;break;case "board-runtime-store-ref":i=s.readBoardRuntimeStoreRef();break;case "card-store-ref":i=s.readCardStoreRef();break;case "outputs-store-ref":i=s.readOutputsStoreRef();break;case "scratch-store-ref":i=G??null;break;case "chat-store-ref":i=s.readChatStoreRef();break;case "artifacts-store-ref":i=s.readArtifactsStoreRef();break;case "fetched-sources-store-ref":i=s.readFetchedSourcesStoreRef();break;default:return d(`getConfig: unknown key "${e}"`)}return m({value:i})}catch(e){return g(e)}}function Bt(t){try{let e=t.params?.key;if(!e)return d("getOutputsDataObject requires params.key");if(e===chunkJ7KE7SPA_cjs.h)return m(null);let s=n().readDataObject(e);return m(s)}catch(e){return g(e)}}function Ge(t){try{return m(chunkJ7KE7SPA_cjs.A(n().readAllDataObjects()))}catch(e){return g(e)}}function _t(t){try{let e=t.params?.key;if(!e)return d("getOutputsComputedValues requires params.key");let s=n().readComputedValues(e);return m(s)}catch(e){return g(e)}}function Ye(t){try{return m(n().readAllComputedValues())}catch(e){return g(e)}}function Ue(){return chunkJ7KE7SPA_cjs.n(x(),t=>r.resolveBlob(t))}function Xe(t){let e=x().keyRef?.(t);if(!e)throw new Error("configured fetched-sources store does not support keyRef");return chunkVQCIOKJV_cjs.a(e)}function Ft(t){try{let e=t.params?.key;if(!e)return d("getOutputsFetchedSources requires params.key");let s=Ue().listSources(e),i={};for(let f of s)i[f]=Xe(`${e}/${f}`);return m(i)}catch(e){return g(e)}}function Ot(t){try{let e=Ue(),s=new Set;for(let f of x().listKeys()){let v=f.indexOf("/");v>0&&!f.includes("/.staged/")&&s.add(f.slice(0,v));}let i={};for(let f of s){let v=e.listSources(f);if(v.length>0){i[f]={};for(let C of v)i[f][C]=Xe(`${f}/${C}`);}}return m(i)}catch(e){return g(e)}}function Pt(t){try{let e=l().readAllCards().filter(b=>b.id!==chunkJ7KE7SPA_cjs.i),s=ne({});if(s.status!=="success")return s;let i=Ge({});if(i.status!=="success")return i;let f=Ye({});if(f.status!=="success")return f;let v=f.data,C={};for(let b of e){let I=typeof b?.id=="string"?b.id:null;if(!I)continue;let P=b.card_data&&typeof b.card_data=="object"&&!Array.isArray(b.card_data)?b.card_data:{};C[I]={schema_version:"v1",card_id:I,card_data:{...P},computed_values:v[I]&&typeof v[I]=="object"?v[I]:{}};}return m({cardDefinitions:e,statusSnapshot:s.data,dataObjectsByToken:i.data,cardRuntimeById:C})}catch(e){return g(e)}}return {init:de,status:ne,getBoardRuntimeStoreRef:vt,getCardStoreRef:yt,getOutputsStoreRef:wt,getScratchStoreRef:Tt,getChatStoreRef:It,getArtifactsStoreRef:xt,getFetchedSourcesStoreRef:Et,getConfig:At,getOutputsDataObject:Bt,getAllOutputsDataObjects:Ge,getOutputsComputedValues:_t,getAllOutputsComputedValues:Ye,getOutputsFetchedSources:Ft,getAllOutputsFetchedSources:Ot,buildSseOneShotPayload:Pt,removeCard:ke,addCardFiles:oe,retrigger:he,processAccumulatedEvents:le,upsertCard:V,taskFailed:K,taskProgress:z,sourceDataFetched:fe,sourceDataFetchFailure:Y}}function ar(o,r,S){let _=S?.taskExecutorRef,E=()=>{if(S){if(!S.boardRuntimeStoreRef)throw new Error(`Board at ${o.value} requires boardRuntimeStoreRef for non-core runtime operations.`);return chunkJ7KE7SPA_cjs.t(r.kvStorageForRef(S.boardRuntimeStoreRef))}return chunkJ7KE7SPA_cjs.t(r.kvStorage("config"))};function M(){let l=E().readCardStoreRef();if(!l)throw new Error(`Board at ${o.value} has no card store configured. Run: init --base-ref <ref> --store-ref <b64-ref>`);let n=r.kvStorageForRef(l);return {readIndex(){return n.read("_index")},writeIndex(u){n.write("_index",u);},readCard(u){return n.read(u)},writeCard(u,R){return n.write(u,R),r.hashFn(R)},removeCard(u){n.delete(u);},cardExists(u){return n.read(u)!==null},defaultCardKey(u){return u}}}let j=()=>chunkJ7KE7SPA_cjs.m(M(),r.onWarn??(()=>{}));function G(){return _??E().readTaskExecutorRef()}async function ue(l,n){let u=r.validateSchema(n),R=[],y=G();if(y&&Array.isArray(n.source_defs))for(let p of n.source_defs){let A=typeof p.bindTo=="string"?p.bindTo:"(unknown)";try{let T;try{T=await r.invokeExecutor(y,"validate-source-def",{timeout:r.executorTimeouts?.validationMs??1e4,input:JSON.stringify(p)});}catch(F){let U=F;if(T=typeof U?.stdout=="string"?U.stdout:"",!T.trim()){R.push(`source "${A}": executor validate-source-def failed \u2014 ${F instanceof Error?F.message:String(F)}`);continue}}let $=JSON.parse(T.trim());if(!$.ok&&Array.isArray($.errors))for(let F of $.errors)R.push(`source "${A}": ${F}`);}catch(T){R.push(`source "${A}": executor validate-source-def failed \u2014 ${T instanceof Error?T.message:String(T)}`);}}let k=[...u.errors,...R];return m({cardId:l,isValid:k.length===0,issues:k})}function Re(l,n){let u=l.params?.sourceIdx,R=l.params?.outRef;if(u===void 0)return d(`${n} requires params.sourceIdx`);if(!l.body||typeof l.body!="object"||Array.isArray(l.body))return d(`${n} requires card JSON object in body`);let y=l.body,k=y["card-content"]??y,p=y["mock-projections"]??{},A=k.source_defs??[];if(u<0||u>=A.length)return d(`sourceIdx ${u} out of range (card has ${A.length} source(s))`);let T=A[u],$=typeof T.bindTo=="string"?T.bindTo:"source";return {src:T,bindTo:$,outRef:R,mockProjections:p}}async function Ce(l){try{if(!l.body||typeof l.body!="object"||Array.isArray(l.body))return d("validateCardPreflight requires card JSON object in body");let n=l.body,u=n["card-content"]??n,R=typeof u.id=="string"?u.id:"(unknown)";return await ue(R,u)}catch(n){return g(n)}}async function te(l){try{let n=Re(l,"probeSourcePreflight");if("status"in n)return n;let u=G();if(!u)return d("No task-executor registered for this board");try{let R={...n.src,_projections:n.mockProjections},y=await r.invokeExecutor(u,"probe-source-preflight",{timeout:n.src.timeout??r.executorTimeouts?.preflightMs??6e4,input:JSON.stringify(R)}),k=JSON.parse(y.trim());return k.ok?m({bindTo:n.bindTo,reachable:k.reachable,latencyMs:k.latencyMs,note:k.note}):d(k.error??"Preflight probe failed")}catch{return d("Executor does not support probe-source-preflight")}}catch(n){return g(n)}}async function Fe(l){try{let n=Re(l,"runSourcePreflight");if("status"in n)return n;let u=G();if(!u)return d("No task-executor registered for this board");try{let R={...n.src,_projections:n.mockProjections},y=await r.invokeExecutor(u,"run-source-preflight",{timeout:n.src.timeout??r.executorTimeouts?.probeMs??6e4,input:JSON.stringify(R)}),k=JSON.parse(y.trim());if(!k.ok)return m({bindTo:n.bindTo,ok:!1,result:null,issues:[k.error??"Preflight run failed"]});if(n.outRef){let p=chunkVQCIOKJV_cjs.b(n.outRef);r.absoluteBlob.write(p.value,JSON.stringify(k.resultValue,null,2));}return m({bindTo:typeof k.bindTo=="string"?k.bindTo:n.bindTo,ok:!0,result:k.resultValue??null,issues:[]})}catch(R){let y=R instanceof Error?R.message:String(R);return m({bindTo:n.bindTo,ok:!1,result:null,issues:[y]})}}catch(n){return g(n)}}async function Oe(l){try{let n=G();if(!n)return d("No task-executor registered for this board");let u=await r.invokeExecutor(n,"describe-capabilities",{timeout:r.executorTimeouts?.describeMs??1e4});return m(JSON.parse(u.trim()))}catch(n){return g(n)}}function Pe(l){try{let n=l.body;if(!n||!Array.isArray(n.ops))return d("updatesInCardStore requires body.ops array");let u=n.ops,R=j();for(let y of u){let k=y.op,p=y.id;if(!p)return d('op is missing "id"');if(k==="update"){let A=y["card-content"];if(!A)return d(`update op for "${p}" is missing "card-content"`);R.writeCard(p,A);}else return d(`Unknown op type: "${k??"(none)"}"`)}return m()}catch(n){return g(n)}}function q(l){try{let n=l.body;if(!n||!Array.isArray(n.ids))return d("readFromCardStore requires body.ids array");let u=n.ids,R=j(),y=u.map(k=>({id:k,"card-content":R.readCard(k)}));return m({cards:y})}catch(n){return g(n)}}function re(l){try{if(!l.body||typeof l.body!="object"||Array.isArray(l.body))return d("evalCardCompute requires a JSON object in body");let n=l.body,u=n["card-content"]??n,R=typeof u.id=="string"?u.id:"(unknown)",y=n["mock-fetched-sources"]??{},k=n["mock-requires"]??{},p=u.compute;if(!p||!Array.isArray(p)||p.length===0)return m({cardId:R,ok:!0,computed_values:{},errors:[]});let A={id:R,card_data:u.card_data??{},requires:k,source_defs:u.source_defs,compute:p},T=chunkQBEQL4TL_cjs.a.runSync(A,{sourcesData:y}),$=T.node.computed_values??{},F=T.errors??[];return m({cardId:R,ok:F.length===0,computed_values:$,errors:F})}catch(n){return g(n)}}async function ce(l){try{if(!l.body||typeof l.body!="object"||Array.isArray(l.body))return d("simulateCardCycle requires a JSON object in body");let n=l.body,u=n["card-content"]??n,R=typeof u.id=="string"?u.id:"(unknown)",y=n["mock-fetched-sources"]??{},k=n["mock-requires"]??{},p=await ue(R,u),A=p.status==="success"?{isValid:p.data.isValid,issues:p.data.issues}:{isValid:!1,issues:[p.status==="fail"?p.error:"internal error"]},T=u.source_defs??[],$=u.card_data??{},F=[],U=[];if(T.length>0){F=chunkQBEQL4TL_cjs.a.enrichSourcesSync(T,{card_data:$,requires:k});for(let x of F){let V=x.projections,K=x._projections;if(V&&K){for(let z of Object.keys(V))if(K[z]===void 0){let fe=typeof x.bindTo=="string"?x.bindTo:"(unknown)";U.push({bindTo:fe,key:z,error:`Projection "${z}" resolved to undefined`});}}}}let D=[],de={...y},ne=n["task-executor-ref"],ke=(ne?.howToRun&&ne?.whatToRun?ne:void 0)??G();for(let x=0;x<F.length;x++){let V=F[x],K=typeof V.bindTo=="string"?V.bindTo:`source_${x}`;if(!ke){D.push({bindTo:K,skipped:!0,error:"No task executor configured"});continue}try{let z={...V},fe=await r.invokeExecutor(ke,"run-source-preflight",{timeout:V.timeout??r.executorTimeouts?.preflightMs??6e4,input:JSON.stringify(z)}),Y=JSON.parse(fe.trim());Y.ok&&!Object.prototype.hasOwnProperty.call(y,K)&&Object.prototype.hasOwnProperty.call(Y,"resultValue")&&(de[K]=Y.resultValue),D.push({bindTo:K,reachable:Y.reachable,latencyMs:Y.latencyMs,error:Y.ok?void 0:Y.error});}catch{D.push({bindTo:K,skipped:!0,error:"Executor does not support run-source-preflight"});}}let oe=u.compute,he={},le=[];if(oe&&Array.isArray(oe)&&oe.length>0){let x={id:R,card_data:$,requires:k,source_defs:u.source_defs,compute:oe},V=chunkQBEQL4TL_cjs.a.runSync(x,{sourcesData:de});he=V.node.computed_values??{},le=V.errors??[];}let Ne=A.isValid&&U.length===0&&le.length===0&&D.every(x=>x.reachable!==!1);return m({cardId:R,ok:Ne,validation:A,source_probes:D,projection_errors:U,fetched_sources:de,computed_values:he,compute_errors:le})}catch(n){return g(n)}}return {validateCardPreflight:Ce,probeSourcePreflight:te,runSourcePreflight:Fe,evalCardCompute:re,simulateCardCycle:ce,describeTaskExecutorCapabilities:Oe,updatesInCardStore:Pe,readFromCardStore:q}}
2
+ exports.a=kt;exports.b=Yt;exports.c=Ut;exports.d=Xt;exports.e=sr;exports.f=ar;//# sourceMappingURL=chunk-WE7JOO4T.cjs.map
3
+ //# sourceMappingURL=chunk-WE7JOO4T.cjs.map
@@ -0,0 +1,2 @@
1
+ import {b,c}from'./chunk-ANKA7HEJ.js';import {a as a$2}from'./chunk-44L64VQ2.js';import {a}from'./chunk-Q444D72R.js';import {a as a$1}from'./chunk-ATOQP3BD.js';import {e,f}from'./chunk-UGB7PC4P.js';function L(e){return typeof e=="object"&&e!==null&&"then"in e&&typeof e.then=="function"}function J(e,r){return L(e)?e.then(r):r(e)}function Z(e,r){let t={...e};for(let o of r.deleteKeys)delete t[o];return {...t,...r.shallowMerge}}function Re(e,r){return {readValues(o){let n=e(o);return J(n.listKeys(),s=>{let a=[...s].sort();if(a.length===0)return {version:null,values:{}};let i={},c=null;for(let g of a){let d=n.read(g);L(d)?c=(c??Promise.resolve()).then(async()=>{i[g]=await d;}):i[g]=d;}return c?c.then(()=>({version:r(i),values:i})):{version:r(i),values:i}})},writeValues(o,n,s){let a=e(o),i=null;for(let c of s){let g=a.delete(c);L(g)&&(i=(i??Promise.resolve()).then(()=>g).then(()=>{}));}for(let[c,g]of Object.entries(n)){let d=a.write(c,g);L(d)&&(i=(i??Promise.resolve()).then(()=>d).then(()=>{}));}return i?i.then(()=>r(n)):r(n)}}}function ee(e,r){return {readSnapshot(t){return e.readValues(t)},commitSnapshot(t,o){if(o.schemaVersion!==r)throw new Error(`Unsupported snapshot schema version: ${o.schemaVersion}`);return J(e.readValues(t),n=>{if(n.version!==o.expectedVersion)return {ok:false,reason:"version-mismatch",currentVersion:n.version};let s=Z(n.values,o);return J(e.writeValues(t,s,o.deleteKeys),a=>({ok:true,newVersion:a}))})}}}function X(e,r){if(!r)return e;let t=e.findIndex(o=>o.id===r);return t===-1?e:e.slice(t+1)}function te(e){return {readEntriesAfterCursor(r){let t=X(e.readAllEntries(),r);return t.length===0?{events:[],newCursor:r}:{events:t.map(o=>o.event),newCursor:t[t.length-1].id}},pendingCount(r){return X(e.readAllEntries(),r).length},appendEvent(r){e.appendEntry({id:e.generateId(),event:r});}}}function ve(e){return {appendEvent(r){return e.append(r).then(()=>{})},async readEntriesAfterCursor(r){let t=await e.readAfter(r||null);return {events:t.entries.map(o=>o.payload),newCursor:t.newCursor??r}}}}function j(e){return typeof e=="object"&&e!==null&&"then"in e&&typeof e.then=="function"}function v(e,r){return j(e)?e.then(r):r(e)}function M(e,r){let t=null;for(let o of e){if(t){t=t.then(()=>r(o)).then(()=>{});continue}let n=r(o);j(n)&&(t=Promise.resolve(n).then(()=>{}));}return t??void 0}function le(e){if(e==null)return null;let r=e.trim();if(!r)return null;try{return JSON.parse(r)}catch{return r}}function pe(e,r){let t=e.match(r);return t?t[1]:null}function re(e,r,t){let o={},n=M(e,s=>{let a=t(s);if(a)return v(r(s),i=>{o[a]=i;})});return j(n)?n.then(()=>o):o}function ne(e,r){return {readSourceData(t,o){return v(e.read(`${t}/${o}`),le)},ingestSourceDataStaged(t,o,n,s){return v(r(n),a=>e.write(`${t}/.staged/${s}/${o}`,a))},commitSourceData(t,o,n){let s=`${t}/.staged/${n}/${o}`,a=`${t}/${o}`;return e.renameKey(s,a)},hasSource(t,o){return e.exists(`${t}/${o}`)},listSources(t){return v(e.listKeys(`${t}/`),o=>o.filter(n=>!n.includes("/.staged/")).map(n=>n.slice(`${t}/`.length)))}}}function ge(e,r){let t=(o,n)=>{try{let s=n(o);return j(s)?s.catch(a=>r(o,a instanceof Error?a.message:String(a))):void 0}catch(s){try{return r(o,s instanceof Error?s.message:String(s))}catch{return}}};return {appendEntries(o,n){if(!(!o||n.length===0))return v(e.read(o),s=>e.write(o,[...s??[],...n]))},dispatchEntriesForJournalId(o,n){if(o)return v(e.read(o),s=>{let a=s;if(!(!a||a.length===0))return v(M(a,i=>t(i,n)),()=>e.delete(o))})}}}function fe(e,r,t){return {readRuntime(o){return v(e.read(r(o)),n=>n??t())},writeRuntime(o,n){return e.write(r(o),n)}}}function oe(e){return {writeComputedValues(r,t){return e.write(`cards/${r}/computed_values`,t)},readComputedValues(r){return e.read(`cards/${r}/computed_values`)},readAllComputedValues(){return v(e.listKeys("cards/"),r=>re(r,t=>e.read(t),t=>pe(t,/^cards\/([^/]+)\/computed_values$/)))},writeDataObjects(r){return M(Object.entries(r),([t,o])=>{if(t)return o===void 0?e.delete(`data-objects/${t}`):e.write(`data-objects/${t}`,o)})},readDataObject(r){return e.read(`data-objects/${r}`)},readAllDataObjects(){return v(e.listKeys("data-objects/"),r=>re(r,t=>e.read(t),t=>t.slice(13)))},writeStatusSnapshot(r){return e.write("status",r)},readStatusSnapshot(){return e.read("status")}}}var _="sys_keys_board_state",I="__sys_keys_board_state_init";function de(e){if(!e||typeof e!="object"||Array.isArray(e))return false;let r=e.__private;return !!r&&typeof r=="object"&&!Array.isArray(r)&&r.visible_controlplane_only===true}function me(e){let r=e.filter(n=>!de(n)),t=[...new Set(r.map(n=>n.id).filter(n=>typeof n=="string"&&n.length>0))].sort(),o=[...new Set(r.flatMap(n=>Array.isArray(n.provides)?n.provides:[]).map(n=>n&&typeof n=="object"&&!Array.isArray(n)?n.bindTo:void 0).filter(n=>typeof n=="string"&&n.length>0&&n!==_))].sort();return {card_ids:t,data_object_keys:o}}function Se(e,r){let t=e.filter(s=>!de(s)),o=[...new Set(t.map(s=>s.id).filter(s=>typeof s=="string"&&s.length>0))].sort(),n=[...new Set(Object.entries(r).filter(([s])=>s!==I).flatMap(([,s])=>Array.isArray(s.provides)?s.provides:[]).filter(s=>typeof s=="string"&&s.length>0&&s!==_))].sort();return {card_ids:o,data_object_keys:n}}function Fe(){return {id:I,meta:{title:"System Keys Board State",synthetic:true},provides:[{bindTo:_,ref:`card_data.${_}`}],card_data:{[_]:{card_ids:[],data_object_keys:[]}},__private:{visible_controlplane_only:true}}}function Ve(e,r){function t(){return e.readIndex()??{}}function o(n,s,a){let i=String(s||"").split(".").filter(Boolean);if(i.length===0)return a&&typeof a=="object"&&!Array.isArray(a)?a:{value:a};let c={...n},g=c;for(let d=0;d<i.length-1;d++){let u=i[d],l=g[u],y=l&&typeof l=="object"&&!Array.isArray(l)?{...l}:{};g[u]=y,g=y;}return g[i[i.length-1]]=a,c}return {readCard(n){let s=t()[n];return !s||!e.cardExists(s.key)?null:e.readCard(s.key)},readCardKey(n){return t()[n]?.key??null},readAllCards(){let n=[];for(let[s,a]of Object.entries(t())){if(!e.cardExists(a.key))continue;let i=e.readCard(a.key);i?n.push(i):r?.(`[card-store] could not read card "${s}" at key "${a.key}"`);}return n},readChecksumIndex(){let n={};for(let[s,a]of Object.entries(t()))n[s]=a.checksum;return n},changedSince(n){let s=t(),a=[];for(let[i,c]of Object.entries(s))n[i]!==c.checksum&&a.push(i);for(let i of Object.keys(n))s[i]||a.push(i);return a},validateUpsert(n,s){let a=t(),i=a[n],c=Object.entries(a).find(([,g])=>g.key===s);return i&&i.key!==s?{ok:false,error:`Card id "${n}" is already mapped to key "${i.key}", cannot remap to "${s}"`}:c&&c[0]!==n?{ok:false,error:`Key "${s}" is already mapped to card id "${c[0]}", cannot remap to "${n}"`}:{ok:true}},writeCard(n,s,a){let i=t(),c=a??i[n]?.key??e.defaultCardKey(n),g=e.writeCard(c,s);i[n]={key:c,checksum:g,updatedAt:new Date().toISOString()},e.writeIndex(i);},patchCard(n,s,a){let i=t(),c=i[n];if(!c||!e.cardExists(c.key))throw new Error(`card "${n}" not found`);let g=e.readCard(c.key);if(!g||typeof g!="object"||Array.isArray(g))throw new Error(`card "${n}" is not patchable`);let d=o(g,s,a),u=e.writeCard(c.key,d);i[n]={key:c.key,checksum:u,updatedAt:new Date().toISOString()},e.writeIndex(i);},removeCard(n){let s=t(),a=s[n];a&&(e.removeCard(a.key),delete s[n],e.writeIndex(s));},readIndex(){return t()}}}function Pe(e,r){return ne(e,r)}function Ke(e){return te(e)}var ye="v1",U="board/graph",ue="board/lastJournalProcessedId";function qe(e){return `cards/${e}/runtime`}function Be(e){return ee(e,ye)}function Le(e){function r(t){let o=e.read(t);return o==null?null:typeof o=="string"?o:JSON.stringify(o)}return {readTaskExecutorRef(){let t=r("task-executor");if(t?.trim())return c(t.trim())},writeTaskExecutorRef(t){e.write("task-executor",b(t));},readChatHandlerFlow(){return e.read("chat-handler-flow")},writeChatHandlerFlow(t){e.write("chat-handler-flow",t);},readBoardRuntimeStoreRef(){return r("board-runtime-store-ref")},writeBoardRuntimeStoreRef(t){e.write("board-runtime-store-ref",t);},readCardStoreRef(){return r("card-store-ref")},writeCardStoreRef(t){e.write("card-store-ref",t);},readOutputsStoreRef(){return r("outputs-store-ref")},writeOutputsStoreRef(t){e.write("outputs-store-ref",t);},readQueueStoreRef(){return r("queue-store-ref")},writeQueueStoreRef(t){e.write("queue-store-ref",t);},readScratchStoreRef(){return r("scratch-store-ref")},writeScratchStoreRef(t){e.write("scratch-store-ref",t);},readChatStoreRef(){return r("chat-store-ref")},writeChatStoreRef(t){e.write("chat-store-ref",t);},readArtifactsStoreRef(){return r("artifacts-store-ref")},writeArtifactsStoreRef(t){e.write("artifacts-store-ref",t);},readFetchedSourcesStoreRef(){return r("fetched-sources-store-ref")},writeFetchedSourcesStoreRef(t){e.write("fetched-sources-store-ref",t);}}}function je(e){return oe(e)}function se(e){return e?{lastRequestedToken:e.lastRequestedToken,lastCompletedToken:e.lastCompletedToken,lastCompletionStatus:e.lastCompletionStatus??(e.lastCompletedToken?"success":"not-started"),queueRequestedToken:e.queueRequestedToken}:{lastCompletionStatus:"not-started"}}function he(e){return e?.lastRequestedToken?e.lastCompletedToken!==e.lastRequestedToken:false}function ie(e,r){return e?.lastRequestedToken?he(e)?"in-flight":!e.lastCompletedToken||e.lastCompletedToken<r?"dispatch":"idle":"dispatch"}function ke(e,r){return {...e,lastCompletedToken:r,lastCompletionStatus:"success"}}function ae(e,r){return {...e,lastCompletedToken:r,lastCompletionStatus:"failure"}}function De(e){let r=e.cards.filter(i=>i.name!==I);if(r.length===e.cards.length)return e;let t=new Set;for(let i of r)for(let c of i.requires)t.add(c);let o=r.map(i=>({name:i.name,fanOut:i.unblocks.length})).sort((i,c)=>c.fanOut-i.fanOut||i.name.localeCompare(c.name)),n=o.length>0?o[0]:{name:null,fanOut:0},s=i=>r.filter(c=>c.status===i).length,a=r.filter(i=>i.requires.length===0&&i.unblocks.length===0).length;return {...e,summary:{...e.summary,card_count:r.length,completed:s("completed"),eligible:s("eligible"),pending:s("pending"),blocked:s("blocked"),unresolved:s("unresolved"),failed:s("failed"),in_progress:s("in-progress"),orphan_cards:a,topology:{edge_count:t.size,max_fan_out_card:n.name,max_fan_out:n.fanOut}},cards:r}}function $e(e){let{[_]:r,...t}=e;return t}function Ne(e,r){let t=r.state.tasks,o=r.config.tasks,n=Object.keys(t),s=a(r),a$1={completed:0,failed:0,in_progress:0,pending:0,blocked:0,unresolved:0},i=new Map;for(let p of s.pending)i.set(p.taskName,p.waitingOn);for(let p of s.unresolved)i.set(p.taskName,p.missingTokens);for(let p of s.blocked)i.set(p.taskName,p.failedTokens);let c=new Map;for(let[p,f]of Object.entries(o))for(let w of f.requires??[]){let C=c.get(w)??[];C.push(p),c.set(w,C);}let g=n.sort().map(p=>{let f=t[p],w=o[p]??{requires:[],provides:[]};f.status==="completed"?a$1.completed+=1:f.status==="failed"?a$1.failed+=1:f.status==="in-progress"&&(a$1.in_progress+=1);let C=w.requires??[],R=w.provides??[],b=Object.keys(f.data??{}).sort(),O=C.filter(T=>r.state.availableOutputs.includes(T)),F=C.filter(T=>!r.state.availableOutputs.includes(T)),V=i.get(p)??F,E=new Set;for(let T of R)for(let x of c.get(T)??[])x!==p&&E.add(x);let q=f.failedAt,P=f.error?{message:f.error,code:"TASK_FAILED",at:q,source:"task-runtime"}:void 0;return {name:p,status:f.status,error:P,requires:C,requires_satisfied:O,requires_missing:F,provides_declared:R,provides_runtime:b,blocked_by:V,unblocks:Array.from(E).sort(),runtime:{attempt_count:f.executionCount??0,restart_count:f.retryCount??0,in_progress_since:f.status==="in-progress"?f.startedAt??null:null,last_transition_at:f.lastUpdated??null,last_completed_at:f.completedAt??null,last_restarted_at:f.startedAt??null,status_age_ms:f.lastUpdated?0:null}}});a$1.pending=s.pending.length,a$1.blocked=s.blocked.length,a$1.unresolved=s.unresolved.length;let d=g.map(p=>({name:p.name,fanOut:p.unblocks.length})).sort((p,f)=>f.fanOut-p.fanOut||p.name.localeCompare(f.name)),u=d.length>0?d[0]:{name:null,fanOut:0},l=new Set;for(let p of Object.values(o))for(let f of p.requires??[])l.add(f);let y=0;for(let[p,f]of Object.entries(o)){let w=(f.requires??[]).length===0,R=(f.provides??[]).some(b=>(c.get(b)??[]).some(O=>O!==p));w&&!R&&(y+=1);}return {schema_version:"v1",meta:{board:{path:e}},summary:{card_count:n.length,completed:a$1.completed,eligible:s.eligible.length,pending:a$1.pending,blocked:a$1.blocked,unresolved:a$1.unresolved,failed:a$1.failed,in_progress:a$1.in_progress,orphan_cards:y,topology:{edge_count:Array.from(l).length,max_fan_out_card:u.name,max_fan_out:u.fanOut}},cards:g}}function Ce(){return new Date().toISOString()}function Je(e,r,t,o,n,s,a){return async i=>{let c=[],g=t.cardStore.readCard(i.nodeId);if(!g)return "task-initiate-failure";let d=g.id;if(d===I){let m=t.activeTaskConfigs?.(),S={[_]:m?Se(Object.keys(m).filter(h=>h!==I).map(h=>t.cardStore.readCard(h)).filter(h=>!!h),m):me(t.cardStore.readAllCards())};return (a??t.outputStore.writeDataObjects.bind(t.outputStore))(S),o(i.nodeId,S),"task-initiated"}let u=g.card_data??{},l=g.source_defs??[],y=l,p=t.cardRuntimeStore.readRuntime(d),f=false,w=()=>{f&&(t.cardRuntimeStore.writeRuntime(d,p),f=false);},C=m=>se(p._sources[m]),R=(m,S)=>{p._sources[m]=se(S),f=true;},b=i.taskState?.executionCount??0;if(p._lastExecutionCount!==b&&(p._sources={},p._lastExecutionCount=b,f=true),i.update){let m=i.update,S=m.outputFile;if(S){let h=C(S);if(m.failure){let k=m.rqt??h.lastRequestedToken??h.queueRequestedToken;k&&R(S,ae(h,k));}else {let k=m.rqt;if(!h.lastCompletedToken||k>h.lastCompletedToken){let A=typeof m.deliveryToken=="string"?m.deliveryToken:void 0,K=false;A&&(K=t.fetchedSourcesStore.commitSourceData(d,S,A)),K?R(S,ke(h,k)):R(S,ae(h,k));}}w();}}let F={};for(let m of l)if(m.outputFile){let S=t.fetchedSourcesStore.readSourceData(d,m.outputFile);S!==null&&(F[m.bindTo]=S);}let V={};for(let[m,S]of Object.entries(i.state??{}))if(S!==null&&typeof S=="object"&&!Array.isArray(S)){let h=S[m];V[m]=h!==void 0?h:S;}else V[m]=S;let E={id:d,card_data:{...u},requires:V,source_defs:l,compute:g.compute};E._sourcesData=F,g.compute&&a$1.runSync(E,{sourcesData:F}),(s??t.outputStore.writeComputedValues.bind(t.outputStore))(d,E.computed_values??{});let q={...g},P=a$1.enrichSourcesSync(Array.isArray(g.source_defs)?g.source_defs:void 0,{card_data:g.card_data,requires:V}),T=e.value;q.source_defs=Array.isArray(P)?P.map(m=>({...m,boardDir:typeof m.boardDir=="string"&&m.boardDir?m.boardDir:T})):P;let x=Ce(),H=i.update?void 0:x,G=y.filter(m=>{let S=m.outputFile;if(typeof S!="string"||!S)return true;let h=C(S);H&&(h={...h,queueRequestedToken:H},R(S,h));let k=h.queueRequestedToken??h.lastRequestedToken??x,A=ie(h,k);return A==="in-flight"?false:A==="dispatch"});if(w(),G.length>0){let m=false,S=x;for(let h of G){let k=h.outputFile;if(typeof k!="string"||!k)continue;let A=C(k),K=A.queueRequestedToken??x;R(k,{...A,lastRequestedToken:K}),S=K,m=true;}return m&&w(),m&&(c.push({taskKind:"source-fetch",payload:{boardRef:a$2(e),enrichedCard:q,callbackToken:i.callbackToken,rqt:S}}),t.executionRequestStore.appendEntries(r,c)),"task-initiated"}if(y.some(m=>{let S=m.outputFile;if(typeof S!="string"||!S)return false;let h=C(S),k=h.queueRequestedToken??h.lastRequestedToken??x;return ie(h,k)==="in-flight"}))return "task-initiated";let ce=g.provides??[],D={};for(let{bindTo:m,ref:S}of ce)D[m]=a$1.resolve(E,S);return (a??t.outputStore.writeDataObjects.bind(t.outputStore))(D),o(i.nodeId,D),c.length>0&&t.executionRequestStore.appendEntries(r,c),"task-initiated"}}var Me={settings:{completion:"manual",refreshStrategy:"data-changed"},tasks:{}};function Ue(e){return {[U]:e.graph,[ue]:e.lastDrainedJournalId,board:{runtimeByCardId:e.runtimeByCardId}}}function He(e){let r=e[U],t=e[ue],n=e.board?.runtimeByCardId;if(!r||typeof r!="object")throw new Error(`State snapshot is missing required key: ${U}`);return {graph:r,lastDrainedJournalId:typeof t=="string"?t:"",runtimeByCardId:n&&typeof n=="object"?n:{}}}function Ge(e){let r=e.requires;return {provides:e.provides?.map(o=>o.bindTo)??[],taskHandlers:["card-handler"],description:e.meta?.title??e.id,...r&&r.length>0?{requires:r}:{}}}function We(e$1,r={}){function t(d){return {status:"success",data:d}}function o(d){return {status:"fail",error:d}}function n(d){return {status:"error",error:d instanceof Error?d.message:String(d)}}function s(d){return d===I}async function a(d){let u=r.emitNotification;if(!u||d.length===0)return;let l=e(d.filter(y=>y.kind!=="card_refreshed"?true:!s(y.cardId)));if(l.length!==0){if(l.length===1){await u(l[0]);return}await u(f({kind:"notification-batch",notifications:l}));}}function i(d){let u=d.params?.id;if(u){if(s(u))throw new Error(`card "${u}" not found`);let l=e$1.readCard(u);if(!l)throw new Error(`card "${u}" not found`);return [l]}return e$1.readAllCards().filter(l=>!s(l.id))}function c(d){let u=d.filter(l=>!s(l.id));return f({kind:"notification-batch",notifications:e(u.map(l=>({kind:"card_refreshed",cardId:l.id,card:l})))})}function g(d){if(Array.isArray(d))return d;if(d&&typeof d=="object"){let u=d;return Array.isArray(u.files)?u.files:[d]}return null}return {get(d){try{return t({cards:i(d)})}catch(u){return n(u)}},buildNotificationBatch(d){try{return t(c(i(d)))}catch(u){return n(u)}},set(d){try{let u=d.body;if(u==null)return o("set requires a body (card object or array of cards)");let l=Array.isArray(u)?u:[u];for(let y of l){if(typeof y.id!="string")return o("each card must have a string `id` field");e$1.writeCard(y.id,y);}return a(l.map(y=>({kind:"card_refreshed",cardId:y.id,card:y}))),t({count:l.length})}catch(u){return n(u)}},del(d){try{let u=d.body?.ids??[],l=d.params?.id,y=l?[...u,l]:u;if(y.length===0)return o("del requires body.ids (string[]) or params.id");for(let p of y)e$1.removeCard(p);return a(y.map(p=>({kind:"card_removed",cardId:p}))),t({count:y.length})}catch(u){return n(u)}},patch(d){try{let u=d.params?.id,l=d.params?.path;if(!u)return o("patch requires params.id");if(!l)return o("patch requires params.path");let y=d.body,p=y&&Object.prototype.hasOwnProperty.call(y,"value")?y.value:d.body;e$1.patchCard(u,l,p);let f=e$1.readCard(u);return f?(a([{kind:"card_refreshed",cardId:u,card:f}]),t({count:1})):o(`card "${u}" not found`)}catch(u){return n(u)}},appendFiles(d){try{let u=d.params?.id;if(!u)return o("appendFiles requires params.id");let l=e$1.readCard(u);if(!l)return o(`card "${u}" not found`);let y=g(d.body);if(!y||y.length===0)return o("appendFiles requires a file metadata object, array, or body.files array");let p=l.card_data&&typeof l.card_data=="object"&&!Array.isArray(l.card_data)?l.card_data:{},f=Array.isArray(p.files)?p.files:[],w=[...f,...y],C=y.map((b,O)=>({idx:f.length+O,entry:b})),R=this.patch({params:{id:u,path:"card_data.files"},body:{value:w}});return R.status!=="success"?R:t({files_added:C})}catch(u){return n(u)}}}}export{$e as A,Ne as B,Je as C,Me as D,Ue as E,He as F,Ge as G,We as H,Re as a,ee as b,ve as c,ne as d,ge as e,fe as f,oe as g,_ as h,I as i,me as j,Se as k,Fe as l,Ve as m,Pe as n,Ke as o,ye as p,U as q,qe as r,Be as s,Le as t,je as u,se as v,ie as w,ke as x,ae as y,De as z};//# sourceMappingURL=chunk-WGYS2L4V.js.map
2
+ //# sourceMappingURL=chunk-WGYS2L4V.js.map
@@ -0,0 +1,16 @@
1
+ 'use strict';var chunkSIPLKLWU_cjs=require('./chunk-SIPLKLWU.cjs'),chunk7Y47QXMX_cjs=require('./chunk-7Y47QXMX.cjs'),chunkUJ7ZTV4J_cjs=require('./chunk-UJ7ZTV4J.cjs'),chunkGNFE24S7_cjs=require('./chunk-GNFE24S7.cjs'),Pe=require('ajv-formats');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var Pe__default=/*#__PURE__*/_interopDefault(Pe);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,e){return t.filter(n=>{let s=chunk7Y47QXMX_cjs.g(e[n]);return !chunk7Y47QXMX_cjs.t(n,s,t,e)})}function U(t,e){let n=chunk7Y47QXMX_cjs.s(t,e),s=[];for(let r of Object.values(n))if(r.length===1)s.push(...r);else {let i=Math.floor(Math.random()*r.length);s.push(r[i]);}return j(t,e).forEach(r=>{s.includes(r)||s.push(r);}),s}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=chunk7Y47QXMX_cjs.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===chunk7Y47QXMX_cjs.a.COMPLETED||chunk7Y47QXMX_cjs.l(i)}),expectedCompletion:{taskNames:s,outputs:[]}}}function K(t,e){let n=chunk7Y47QXMX_cjs.i(t),s=new Set;for(let i of Object.values(n))chunk7Y47QXMX_cjs.g(i).forEach(a=>s.add(a));let o=chunk7Y47QXMX_cjs.r(t,e.tasks);return {isComplete:[...s].every(i=>o.includes(i)),expectedCompletion:{taskNames:[],outputs:[...s]}}}function fe(t,e){let n=chunk7Y47QXMX_cjs.i(t),s=chunk7Y47QXMX_cjs.r(t,e.tasks),o=new Set,r={};for(let[c,u]of Object.entries(n))chunk7Y47QXMX_cjs.g(u).forEach(p=>{o.add(p),r[p]||(r[p]=[]),r[p].push(c);});for(let c of o){if(s.includes(c))continue;if((r[c]??[]).some(p=>{let g=e.tasks[p];if(g?.status===chunk7Y47QXMX_cjs.a.COMPLETED||chunk7Y47QXMX_cjs.l(g))return false;let l=n[p];return chunk7Y47QXMX_cjs.h(l).every(m=>s.includes(m))}))return {isComplete:false,expectedCompletion:{taskNames:[],outputs:[]}}}let i=ge(t,e);return i.length>0?{isComplete:false,expectedCompletion:{taskNames:i,outputs:[]}}:{isComplete:Object.values(e.tasks).filter(c=>c.status===chunk7Y47QXMX_cjs.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=chunk7Y47QXMX_cjs.r(t,e.tasks);return {isComplete:n.every(r=>s.includes(r)),expectedCompletion:{taskNames:[],outputs:n}}}function ge(t,e){let n=chunk7Y47QXMX_cjs.i(t),s=chunk7Y47QXMX_cjs.r(t,e.tasks),o=[];for(let[r,i]of Object.entries(n)){let a=e.tasks[r];if(a?.status===chunk7Y47QXMX_cjs.a.COMPLETED||a?.status===chunk7Y47QXMX_cjs.a.RUNNING||chunk7Y47QXMX_cjs.l(a))continue;if(chunk7Y47QXMX_cjs.h(i).every(u=>s.includes(u))){let u=chunk7Y47QXMX_cjs.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=n.tasks,i=chunk7Y47QXMX_cjs.i(e),a=chunk7Y47QXMX_cjs.r(e,r);if(s.length>0)return {is_stuck:false,stuck_description:null,outputs_unresolvable:[],tasks_blocked:[]};if(Object.values(r).some(p=>p.status===chunk7Y47QXMX_cjs.a.RUNNING))return {is_stuck:false,stuck_description:null,outputs_unresolvable:[],tasks_blocked:[]};if(o?.expectedCompletion){let{taskNames:p=[],outputs:g=[]}=o.expectedCompletion;if(p.length>0){let l=p.filter(f=>chunk7Y47QXMX_cjs.l(r[f]));if(l.length>0&&l.length===p.length)return {is_stuck:true,stuck_description:`Completion expects tasks ${p.join(", ")} but all are failed`,tasks_blocked:l,outputs_unresolvable:g}}if(g.length>0&&n.executionConfig.completionStrategy!=="only-resolved"){let l=g.filter(f=>!a.includes(f));if(l.length>0){let f=[];for(let m of l)Object.entries(i).filter(([,C])=>chunk7Y47QXMX_cjs.g(C).includes(m)).map(([C])=>C).filter(C=>!chunk7Y47QXMX_cjs.l(r[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]of Object.entries(i)){let l=r[p];if(l?.status===chunk7Y47QXMX_cjs.a.COMPLETED||chunk7Y47QXMX_cjs.l(l)||l?.status===chunk7Y47QXMX_cjs.a.RUNNING)continue;let m=chunk7Y47QXMX_cjs.h(g).filter(k=>!a.includes(k));m.length>0&&(m.every(x=>Object.entries(i).filter(([,v])=>chunk7Y47QXMX_cjs.g(v).includes(x)).map(([v])=>v).some(v=>!chunk7Y47QXMX_cjs.l(r[v])&&r[v]?.status!==chunk7Y47QXMX_cjs.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=chunk7Y47QXMX_cjs.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=J(t,e);n.push(`Found ${i.length} candidate tasks: ${i.join(", ")||"none"}`);let a,c=false,u={};if(o==="dependency-mode")a=i;else {let g=he(i,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=chunk7Y47QXMX_cjs.i(t),s=chunk7Y47QXMX_cjs.r(t,e.tasks),o=[...new Set([...s,...e.availableOutputs])],r=[];for(let[i,a]of Object.entries(n)){let c=e.tasks[i],u=chunk7Y47QXMX_cjs.o(a,t.settings),d=u!=="once";if(c?.status===chunk7Y47QXMX_cjs.a.RUNNING||chunk7Y47QXMX_cjs.l(c))continue;let p=chunk7Y47QXMX_cjs.q(a);if(p!==void 0&&c&&c.executionCount>=p||a.circuit_breaker&&c&&c.executionCount>=a.circuit_breaker.max_executions||!d&&c?.status===chunk7Y47QXMX_cjs.a.COMPLETED)continue;if(d&&c?.status===chunk7Y47QXMX_cjs.a.COMPLETED){let l=chunk7Y47QXMX_cjs.h(a);switch(u){case "data-changed":{if(l.length>0){if(!l.some(m=>{for(let[k,x]of Object.entries(n))if(chunk7Y47QXMX_cjs.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(chunk7Y47QXMX_cjs.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.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(chunk7Y47QXMX_cjs.h(a).every(l=>o.includes(l))){if(!d){let l=chunk7Y47QXMX_cjs.g(a);if(l.length>0&&l.every(m=>o.includes(m)))continue}r.push(i);}}return r}function he(t,e,n,s){let o={eligibleTasks:[],hasConflicts:false,conflicts:{}};if(t.length===0)return o;let r=chunk7Y47QXMX_cjs.i(e);switch(s){case "parallel-all":return o.eligibleTasks=t,o;case "user-choice":{if(o.eligibleTasks=t,t.length>1){let p=chunk7Y47QXMX_cjs.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=chunk7Y47QXMX_cjs.s(t,r),a=new Set;for(let[p,g]of Object.entries(n.tasks))if(g.status===chunk7Y47QXMX_cjs.a.RUNNING){let l=e.tasks[p];l&&chunk7Y47QXMX_cjs.g(l).forEach(f=>a.add(f));}let c=[],u=new Set;for(let[p,g]of Object.entries(i))if(!a.has(p)){if(g.length===1)c.push(g[0]);else {let l=F(g,r,n,s);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 chunkSIPLKLWU_cjs.a(t,e.taskName,n);case "task-completed":return chunkSIPLKLWU_cjs.b(t,n,e.taskName,e.result,e.dataHash,e.data);case "task-failed":return chunkSIPLKLWU_cjs.c(t,n,e.taskName,e.error);case "task-progress":return chunkSIPLKLWU_cjs.d(t,e.taskName,e.message,e.progress);case "task-restart":return chunkSIPLKLWU_cjs.e(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=chunk7Y47QXMX_cjs.A(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]??chunk7Y47QXMX_cjs.z()},lastUpdated:new Date().toISOString()}}function Te(t){let e={};for(let[n,s]of Object.entries(t)){for(let o of chunk7Y47QXMX_cjs.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=chunk7Y47QXMX_cjs.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=chunk7Y47QXMX_cjs.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=n.filter(f=>chunk7Y47QXMX_cjs.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 chunk7Y47QXMX_cjs.h(f))u.add(m);let d=[...u].filter(f=>!s[f]),p=new Set(d),g=n.filter(f=>chunk7Y47QXMX_cjs.h(e[f]).some(m=>p.has(m))),l=Se(n,o);return {phases:l,dependencies:o,conflicts:r,entryPoints:i,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=chunk7Y47QXMX_cjs.i(t),i=Object.keys(r);if(i.length===0)return `graph ${n}
2
+ empty[No tasks defined]`;let a={};for(let[l,f]of Object.entries(r)){for(let m of chunk7Y47QXMX_cjs.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 chunk7Y47QXMX_cjs.h(l))d.add(f);let p=new Set(i.filter(l=>{let f=chunk7Y47QXMX_cjs.g(r[l]);return f.length===0||f.every(m=>!d.has(m))}));for(let l of i){let f=R(l);chunk7Y47QXMX_cjs.h(r[l]).length===0?c.push(` ${f}([${l}])`):p.has(l)?c.push(` ${f}[[${l}]]`):c.push(` ${f}[${l}]`);}let g=new Set;for(let[l,f]of Object.entries(r)){let m=chunk7Y47QXMX_cjs.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.has(v))continue;g.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 chunk7Y47QXMX_cjs.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 chunk7Y47QXMX_cjs.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=chunk7Y47QXMX_cjs.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 chunk7Y47QXMX_cjs.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=_e(s,r);for(let c of i)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=chunk7Y47QXMX_cjs.h(u),p=chunk7Y47QXMX_cjs.g(u),g=d.filter(l=>p.includes(l));g.length>0&&e.push({severity:"error",code:"SELF_DEPENDENCY",message:`Task "${c}" requires tokens it provides itself: [${g.join(", ")}]`,tasks:[c],tokens:g});}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=chunk7Y47QXMX_cjs.g(u),p=u.on?Object.values(u.on).flat():[],g=u.on_failure||[];d.length===0&&p.length===0&&g.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 chunk7Y47QXMX_cjs.h(c))a.add(u);for(let[c,u]of Object.entries(n)){let d=chunk7Y47QXMX_cjs.h(u),p=chunk7Y47QXMX_cjs.g(u),g=u.on?Object.values(u.on).flat():[],l=[...p,...g],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=chunkGNFE24S7_cjs.b(chunkUJ7ZTV4J_cjs.q(),1);var _=null;function Ie(){if(_)return _;let t=new ne.default({allErrors:true});return Pe__default.default(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
+ exports.a=F;exports.b=j;exports.c=U;exports.d=W;exports.e=H;exports.f=me;exports.g=J;exports.h=X;exports.i=ke;exports.j=ve;exports.k=Ee;exports.l=Re;exports.m=Z;exports.n=Oe;exports.o=ee;exports.p=Ae;exports.q=$e;exports.r=Ne;//# sourceMappingURL=chunk-X5MLNGGM.cjs.map
16
+ //# sourceMappingURL=chunk-X5MLNGGM.cjs.map
@@ -1,2 +1,2 @@
1
- 'use strict';var chunkG4XXRHL2_cjs=require('./chunk-G4XXRHL2.cjs'),chunkQBEQL4TL_cjs=require('./chunk-QBEQL4TL.cjs');function b(e){return JSON.parse(JSON.stringify(e))}function E(e){let r=e.provides&&e.provides.length>0?e.provides.map(n=>n.bindTo):[e.id];return {requires:e.requires&&e.requires.length>0?[...e.requires]:void 0,provides:r,taskHandlers:[e.id],description:e.meta?.title??e.id}}function I(e){let r=new Map;for(let[n,u]of e.entries()){let o=u.provides&&u.provides.length>0?u.provides:[{bindTo:n,ref:"card_data"}];for(let h of o)r.set(h.bindTo,n);}return r}function O(e,r){let n=I(e),u=e.get(r);if(u){for(let o of u.requires??[])if(!n.has(o))throw new Error(`Card "${r}" requires token "${o}" but no card provides it`)}}var F={CARD_PREFIX:"yf:cards:",RUNTIME_OUT_PREFIX:"yf:runtime-out:cards:",STATUS_KEY:"yf:runtime-out:status",writeCard(e,r){try{localStorage.setItem(this.CARD_PREFIX+e,JSON.stringify(r));}catch(n){console.warn(`Failed to write card ${e} to localStorage:`,n);}},readCard(e){try{let r=localStorage.getItem(this.CARD_PREFIX+e);return r?JSON.parse(r):null}catch(r){return console.warn(`Failed to read card ${e} from localStorage:`,r),null}},readAllCards(e){let r={};for(let n of e){let u=this.readCard(n);u&&(r[n]=u);}return r},writeComputedArtifact(e){if(!(!e||!e.card_id))try{localStorage.setItem(this.RUNTIME_OUT_PREFIX+String(e.card_id),JSON.stringify(e));}catch(r){console.warn(`Failed to write computed artifact ${e.card_id}:`,r);}},readComputedArtifact(e){try{let r=localStorage.getItem(this.RUNTIME_OUT_PREFIX+e);return r?JSON.parse(r):null}catch(r){return console.warn(`Failed to read computed artifact ${e}:`,r),null}},readAllComputedArtifacts(e){let r={};for(let n of e){let u=this.readComputedArtifact(n);u&&(r[n]=u);}return r},writeStatusSnapshot(e){try{localStorage.setItem(this.STATUS_KEY,JSON.stringify(e));}catch(r){console.warn("Failed to write status snapshot to localStorage:",r);}},readStatusSnapshot(){try{let e=localStorage.getItem(this.STATUS_KEY);return e?JSON.parse(e):null}catch(e){return console.warn("Failed to read status snapshot from localStorage:",e),null}},clear(){let e=[];for(let r=0;r<localStorage.length;r++){let n=localStorage.key(r);n&&(n.startsWith(this.CARD_PREFIX)||n.startsWith(this.RUNTIME_OUT_PREFIX)||n===this.STATUS_KEY)&&e.push(n);}for(let r of e)localStorage.removeItem(r);}};function H(e,r={}){let n=Array.isArray(e)?{}:{id:e.id,title:e.title,mode:e.mode,positions:e.positions,settings:e.settings},u=Array.isArray(e)?e:e.nodes,o=new Map;for(let t of u){if(o.has(t.id))throw new Error(`Duplicate card ID: "${t.id}"`);o.set(t.id,b(t));}let h=new Set,S=r.taskExecutor,L=r.sourceAdapters??{},d=r.defaultSourceAdapter,m=null,A=(t,g)=>{let a={events:t,graph:g,nodes:v()};for(let w of h)w(a);},_=t=>async g=>{let a=o.get(t);if(!a)return "task-initiate-failure";let w={};for(let R of a.requires??[]){let y=g.state[R];if(!y||typeof y!="object")continue;let k=y.provides_data;!k||typeof k!="object"||Object.prototype.hasOwnProperty.call(k,R)&&(w[R]=k[R]);}let p={};if(a.source_defs&&a.source_defs.length>0){let R=L[t]??d,y=S?await S({card:a,input:g}):R?await R({card:a,input:g}):void 0;if(y&&typeof y=="object")for(let k of a.source_defs)Object.prototype.hasOwnProperty.call(y,k.bindTo)?p[k.bindTo]=y[k.bindTo]:a.source_defs.length===1&&(p[k.bindTo]=y);}let c={id:a.id,card_data:b(a.card_data??{}),requires:w,source_defs:a.source_defs,compute:a.compute};c._sourcesData=p,c.compute&&c.compute.length>0&&await chunkQBEQL4TL_cjs.a.run(c,{sourcesData:p});let T={};if(a.provides&&a.provides.length>0)for(let{bindTo:R,ref:y}of a.provides)T[R]=chunkQBEQL4TL_cjs.a.resolve(c,y);else T[a.id]={...c.card_data??{},...c.computed_values??{},...c._sourcesData??{}};let B={provides_data:T,card_data:c.card_data??{},computed_values:c.computed_values??{},fetched_sources:p,requires:w};return m?.resolveCallback(g.callbackToken,B),"task-initiated"},s={},f={};for(let[t,g]of o.entries())O(o,t),s[t]=E(g),f[t]=_(t);let l={id:n.id??`browser-board-${Date.now()}`,settings:{completion:"manual",execution_mode:"eligibility-mode",...n.settings??{},...r.graphSettings??{}},tasks:s},C=r.reactiveOptions?.onDrain,i=chunkG4XXRHL2_cjs.u(l,{...r.reactiveOptions??{},handlers:f,onDrain:(t,g,a)=>{C?.(t,g,a),A(t,g);}},r.executionId);m=i;function v(){let t=i.getState(),g=[];for(let[a,w]of o.entries()){let p=t.state.tasks[a]?.data,c=t.state.tasks[a],T={...w.card_data??{},...p&&typeof p.card_data=="object"?p.card_data:{}},B=c?.status==="running"?"loading":c?.status,R={...T,...B?{status:B}:{},...c?.lastUpdated?{lastRun:c.lastUpdated}:{},...c?.status==="failed"&&c.error?{error:c.error}:{}};g.push({id:a,card:b(w),card_data:R,requires:p&&typeof p.requires=="object"?b(p.requires):{},computed_values:p&&typeof p.computed_values=="object"?b(p.computed_values):{},runtime_state:c?b(c):{}});}return g}return {getGraph:()=>i,getState:()=>i.getState(),getSchedule:()=>i.getSchedule(),getNodes:()=>v(),getBoard:()=>({...n,nodes:v()}),subscribe(t){return h.add(t),t({events:[],graph:i.getState(),nodes:v()}),()=>h.delete(t)},addCard(t){if(o.has(t.id))throw new Error(`Card "${t.id}" already exists`);o.set(t.id,b(t)),O(o,t.id),i.registerHandler(t.id,_(t.id)),i.addNode(t.id,E(t));},upsertCard(t){o.set(t.id,b(t)),O(o,t.id),i.registerHandler(t.id,_(t.id)),i.addNode(t.id,E(t));},removeCard(t){o.delete(t),i.unregisterHandler(t),i.removeNode(t);},patchCardState(t,g){let a=o.get(t);if(!a)throw new Error(`Card "${t}" not found`);a.card_data={...a.card_data??{},...g},i.retrigger(t);},retrigger(t){i.retrigger(t);},retriggerAll(){i.retriggerAll(Array.from(o.keys()));},push(t){i.push(t);},pushAll(t){i.pushAll(t);},dispose(){h.clear(),i.dispose();}}}function G(e){return e==="running"||e==="in-progress"?"loading":e==="failed"?"error":"fresh"}function D(e){return e==="loading"?"in-progress":e==="error"?"failed":e==="stale"?"pending":e==="fresh"?"completed":"pending"}function M(e,r){let n=r&&typeof r=="object"&&!Array.isArray(r)?r:{};return {schema_version:n.schema_version||"v1",card_id:typeof n.card_id=="string"?n.card_id:e,card_data:n.card_data&&typeof n.card_data=="object"&&!Array.isArray(n.card_data)?structuredClone(n.card_data):{},computed_values:n.computed_values&&typeof n.computed_values=="object"&&!Array.isArray(n.computed_values)?structuredClone(n.computed_values):{}}}function P(e,r){if(!e||typeof e!="object")throw new Error("payload must be an object");if(!r)throw new Error("cardId is required");let u=(Array.isArray(e.cardDefinitions)?e.cardDefinitions:[]).find(t=>t.id===r);if(!u)throw new Error(`cardDefinitions has no entry with id ${r}`);let o=e.statusSnapshot&&typeof e.statusSnapshot=="object"?e.statusSnapshot:{},h=e.cardRuntimeById&&typeof e.cardRuntimeById=="object"?e.cardRuntimeById:{},S=e.dataObjectsByToken&&typeof e.dataObjectsByToken=="object"?e.dataObjectsByToken:{},d=(Array.isArray(o.cards)?o.cards:[]).find(t=>t.name===r),m=structuredClone(u),A=M(r,h[r]),s={...m.card_data&&typeof m.card_data=="object"&&!Array.isArray(m.card_data)?m.card_data:{},...A.card_data||{},status:G(d?.status),lastRun:d?.runtime?.last_transition_at??null};d?.error?.message&&(s.error=d.error.message);let f=d?{task_status:d.status??null,card_status:G(d.status),runtime:structuredClone(d.runtime??{}),error:d.error?structuredClone(d.error):null,blocked_by:Array.isArray(d.blocked_by)?structuredClone(d.blocked_by):[],requires_missing:Array.isArray(d.requires_missing)?structuredClone(d.requires_missing):[]}:{task_status:null,card_status:s.status??"fresh",runtime:{last_transition_at:s.lastRun??null},error:s.error?{message:s.error}:null,blocked_by:[],requires_missing:[]},l=Array.isArray(m.requires)?m.requires:[],C={};for(let[t,g]of Object.entries(S))C[t]=structuredClone(g);for(let t of l)Object.prototype.hasOwnProperty.call(C,t)||(C[t]=null);let v=(e.cardChatsByCardId&&typeof e.cardChatsByCardId=="object"?e.cardChatsByCardId:{})[r],q=v?{messages:Array.isArray(v.messages)?v.messages:[],receiving:!!v.receiving,processing:!!v.processing}:null;return {id:r,card:m,card_data:s,requires:C,computed_values:A.computed_values,runtime_state:f,card_chats:q}}function $(e){if(!e||typeof e!="object")throw new Error("payload must be an object");return (Array.isArray(e.cardDefinitions)?e.cardDefinitions:[]).map(n=>P(e,n.id))}function J({boardPath:e,cardDefinitions:r,runtimeModels:n,graphState:u}){let o=Array.isArray(r)?r:[],h=Array.isArray(n)?n:[],S=new Map(h.map(s=>[s.id,s])),d=u.state?.tasks??{},m={};for(let s of h)s?.id&&(m[s.id]={schema_version:"v1",card_id:s.id,card_data:structuredClone(s.card_data??{}),computed_values:structuredClone(s.computed_values??{})});let A={};for(let s of Object.keys(d)){let f=d[s]?.data?.provides_data;if(f&&typeof f=="object")for(let l of Object.keys(f))A[l]=structuredClone(f[l]);}let _=o.map(s=>{let f=S.get(s.id)??{},l=d[s.id],C=typeof l?.status=="string"?l.status:D(f.card_data?.status),i=typeof l?.error=="string"?l.error:typeof f.card_data?.error=="string"?f.card_data.error:null;return {name:s.id,status:C,...i?{error:{message:i,code:"TASK_FAILED",at:l?.failedAt??null,source:"browser-runtime"}}:{},requires:Array.isArray(s.requires)?s.requires:[],requires_satisfied:[],requires_missing:[],provides_declared:Array.isArray(s.provides)?s.provides.map(v=>v.bindTo):[s.id],provides_runtime:Object.keys(l?.data?.provides_data??{}).sort(),blocked_by:[],unblocks:[],runtime:{attempt_count:l?.executionCount??0,restart_count:l?.retryCount??0,in_progress_since:C==="in-progress"?l?.startedAt??null:null,last_transition_at:l?.lastUpdated??f.card_data?.lastRun??null,last_completed_at:l?.completedAt??null,last_restarted_at:l?.startedAt??null,status_age_ms:null}}});return {cardDefinitions:structuredClone(o),cardRuntimeById:m,dataObjectsByToken:A,statusSnapshot:{schema_version:"v1",meta:{board:{path:e??"browser-runtime"}},summary:{card_count:_.length,completed:_.filter(s=>s.status==="completed").length,eligible:0,pending:_.filter(s=>s.status==="pending").length,blocked:0,unresolved:0,failed:_.filter(s=>s.status==="failed").length,in_progress:_.filter(s=>s.status==="in-progress").length,orphan_cards:0,topology:{edge_count:0,max_fan_out_card:null,max_fan_out:0}},cards:_}}}exports.a=F;exports.b=H;exports.c=P;exports.d=$;exports.e=J;//# sourceMappingURL=chunk-Z26U6RSG.cjs.map
2
- //# sourceMappingURL=chunk-Z26U6RSG.cjs.map
1
+ 'use strict';var chunkAW3COGCI_cjs=require('./chunk-AW3COGCI.cjs'),chunkQBEQL4TL_cjs=require('./chunk-QBEQL4TL.cjs');function b(e){return JSON.parse(JSON.stringify(e))}function E(e){let r=e.provides&&e.provides.length>0?e.provides.map(n=>n.bindTo):[e.id];return {requires:e.requires&&e.requires.length>0?[...e.requires]:void 0,provides:r,taskHandlers:[e.id],description:e.meta?.title??e.id}}function I(e){let r=new Map;for(let[n,u]of e.entries()){let o=u.provides&&u.provides.length>0?u.provides:[{bindTo:n,ref:"card_data"}];for(let h of o)r.set(h.bindTo,n);}return r}function O(e,r){let n=I(e),u=e.get(r);if(u){for(let o of u.requires??[])if(!n.has(o))throw new Error(`Card "${r}" requires token "${o}" but no card provides it`)}}var F={CARD_PREFIX:"yf:cards:",RUNTIME_OUT_PREFIX:"yf:runtime-out:cards:",STATUS_KEY:"yf:runtime-out:status",writeCard(e,r){try{localStorage.setItem(this.CARD_PREFIX+e,JSON.stringify(r));}catch(n){console.warn(`Failed to write card ${e} to localStorage:`,n);}},readCard(e){try{let r=localStorage.getItem(this.CARD_PREFIX+e);return r?JSON.parse(r):null}catch(r){return console.warn(`Failed to read card ${e} from localStorage:`,r),null}},readAllCards(e){let r={};for(let n of e){let u=this.readCard(n);u&&(r[n]=u);}return r},writeComputedArtifact(e){if(!(!e||!e.card_id))try{localStorage.setItem(this.RUNTIME_OUT_PREFIX+String(e.card_id),JSON.stringify(e));}catch(r){console.warn(`Failed to write computed artifact ${e.card_id}:`,r);}},readComputedArtifact(e){try{let r=localStorage.getItem(this.RUNTIME_OUT_PREFIX+e);return r?JSON.parse(r):null}catch(r){return console.warn(`Failed to read computed artifact ${e}:`,r),null}},readAllComputedArtifacts(e){let r={};for(let n of e){let u=this.readComputedArtifact(n);u&&(r[n]=u);}return r},writeStatusSnapshot(e){try{localStorage.setItem(this.STATUS_KEY,JSON.stringify(e));}catch(r){console.warn("Failed to write status snapshot to localStorage:",r);}},readStatusSnapshot(){try{let e=localStorage.getItem(this.STATUS_KEY);return e?JSON.parse(e):null}catch(e){return console.warn("Failed to read status snapshot from localStorage:",e),null}},clear(){let e=[];for(let r=0;r<localStorage.length;r++){let n=localStorage.key(r);n&&(n.startsWith(this.CARD_PREFIX)||n.startsWith(this.RUNTIME_OUT_PREFIX)||n===this.STATUS_KEY)&&e.push(n);}for(let r of e)localStorage.removeItem(r);}};function H(e,r={}){let n=Array.isArray(e)?{}:{id:e.id,title:e.title,mode:e.mode,positions:e.positions,settings:e.settings},u=Array.isArray(e)?e:e.nodes,o=new Map;for(let t of u){if(o.has(t.id))throw new Error(`Duplicate card ID: "${t.id}"`);o.set(t.id,b(t));}let h=new Set,S=r.taskExecutor,L=r.sourceAdapters??{},d=r.defaultSourceAdapter,m=null,A=(t,g)=>{let a={events:t,graph:g,nodes:v()};for(let w of h)w(a);},_=t=>async g=>{let a=o.get(t);if(!a)return "task-initiate-failure";let w={};for(let R of a.requires??[]){let y=g.state[R];if(!y||typeof y!="object")continue;let k=y.provides_data;!k||typeof k!="object"||Object.prototype.hasOwnProperty.call(k,R)&&(w[R]=k[R]);}let p={};if(a.source_defs&&a.source_defs.length>0){let R=L[t]??d,y=S?await S({card:a,input:g}):R?await R({card:a,input:g}):void 0;if(y&&typeof y=="object")for(let k of a.source_defs)Object.prototype.hasOwnProperty.call(y,k.bindTo)?p[k.bindTo]=y[k.bindTo]:a.source_defs.length===1&&(p[k.bindTo]=y);}let c={id:a.id,card_data:b(a.card_data??{}),requires:w,source_defs:a.source_defs,compute:a.compute};c._sourcesData=p,c.compute&&c.compute.length>0&&await chunkQBEQL4TL_cjs.a.run(c,{sourcesData:p});let T={};if(a.provides&&a.provides.length>0)for(let{bindTo:R,ref:y}of a.provides)T[R]=chunkQBEQL4TL_cjs.a.resolve(c,y);else T[a.id]={...c.card_data??{},...c.computed_values??{},...c._sourcesData??{}};let B={provides_data:T,card_data:c.card_data??{},computed_values:c.computed_values??{},fetched_sources:p,requires:w};return m?.resolveCallback(g.callbackToken,B),"task-initiated"},s={},f={};for(let[t,g]of o.entries())O(o,t),s[t]=E(g),f[t]=_(t);let l={id:n.id??`browser-board-${Date.now()}`,settings:{completion:"manual",execution_mode:"eligibility-mode",...n.settings??{},...r.graphSettings??{}},tasks:s},C=r.reactiveOptions?.onDrain,i=chunkAW3COGCI_cjs.t(l,{...r.reactiveOptions??{},handlers:f,onDrain:(t,g,a)=>{C?.(t,g,a),A(t,g);}},r.executionId);m=i;function v(){let t=i.getState(),g=[];for(let[a,w]of o.entries()){let p=t.state.tasks[a]?.data,c=t.state.tasks[a],T={...w.card_data??{},...p&&typeof p.card_data=="object"?p.card_data:{}},B=c?.status==="running"?"loading":c?.status,R={...T,...B?{status:B}:{},...c?.lastUpdated?{lastRun:c.lastUpdated}:{},...c?.status==="failed"&&c.error?{error:c.error}:{}};g.push({id:a,card:b(w),card_data:R,requires:p&&typeof p.requires=="object"?b(p.requires):{},computed_values:p&&typeof p.computed_values=="object"?b(p.computed_values):{},runtime_state:c?b(c):{}});}return g}return {getGraph:()=>i,getState:()=>i.getState(),getSchedule:()=>i.getSchedule(),getNodes:()=>v(),getBoard:()=>({...n,nodes:v()}),subscribe(t){return h.add(t),t({events:[],graph:i.getState(),nodes:v()}),()=>h.delete(t)},addCard(t){if(o.has(t.id))throw new Error(`Card "${t.id}" already exists`);o.set(t.id,b(t)),O(o,t.id),i.registerHandler(t.id,_(t.id)),i.addNode(t.id,E(t));},upsertCard(t){o.set(t.id,b(t)),O(o,t.id),i.registerHandler(t.id,_(t.id)),i.addNode(t.id,E(t));},removeCard(t){o.delete(t),i.unregisterHandler(t),i.removeNode(t);},patchCardState(t,g){let a=o.get(t);if(!a)throw new Error(`Card "${t}" not found`);a.card_data={...a.card_data??{},...g},i.retrigger(t);},retrigger(t){i.retrigger(t);},retriggerAll(){i.retriggerAll(Array.from(o.keys()));},push(t){i.push(t);},pushAll(t){i.pushAll(t);},dispose(){h.clear(),i.dispose();}}}function G(e){return e==="running"||e==="in-progress"?"loading":e==="failed"?"error":"fresh"}function D(e){return e==="loading"?"in-progress":e==="error"?"failed":e==="stale"?"pending":e==="fresh"?"completed":"pending"}function M(e,r){let n=r&&typeof r=="object"&&!Array.isArray(r)?r:{};return {schema_version:n.schema_version||"v1",card_id:typeof n.card_id=="string"?n.card_id:e,card_data:n.card_data&&typeof n.card_data=="object"&&!Array.isArray(n.card_data)?structuredClone(n.card_data):{},computed_values:n.computed_values&&typeof n.computed_values=="object"&&!Array.isArray(n.computed_values)?structuredClone(n.computed_values):{}}}function P(e,r){if(!e||typeof e!="object")throw new Error("payload must be an object");if(!r)throw new Error("cardId is required");let u=(Array.isArray(e.cardDefinitions)?e.cardDefinitions:[]).find(t=>t.id===r);if(!u)throw new Error(`cardDefinitions has no entry with id ${r}`);let o=e.statusSnapshot&&typeof e.statusSnapshot=="object"?e.statusSnapshot:{},h=e.cardRuntimeById&&typeof e.cardRuntimeById=="object"?e.cardRuntimeById:{},S=e.dataObjectsByToken&&typeof e.dataObjectsByToken=="object"?e.dataObjectsByToken:{},d=(Array.isArray(o.cards)?o.cards:[]).find(t=>t.name===r),m=structuredClone(u),A=M(r,h[r]),s={...m.card_data&&typeof m.card_data=="object"&&!Array.isArray(m.card_data)?m.card_data:{},...A.card_data||{},status:G(d?.status),lastRun:d?.runtime?.last_transition_at??null};d?.error?.message&&(s.error=d.error.message);let f=d?{task_status:d.status??null,card_status:G(d.status),runtime:structuredClone(d.runtime??{}),error:d.error?structuredClone(d.error):null,blocked_by:Array.isArray(d.blocked_by)?structuredClone(d.blocked_by):[],requires_missing:Array.isArray(d.requires_missing)?structuredClone(d.requires_missing):[]}:{task_status:null,card_status:s.status??"fresh",runtime:{last_transition_at:s.lastRun??null},error:s.error?{message:s.error}:null,blocked_by:[],requires_missing:[]},l=Array.isArray(m.requires)?m.requires:[],C={};for(let[t,g]of Object.entries(S))C[t]=structuredClone(g);for(let t of l)Object.prototype.hasOwnProperty.call(C,t)||(C[t]=null);let v=(e.cardChatsByCardId&&typeof e.cardChatsByCardId=="object"?e.cardChatsByCardId:{})[r],q=v?{messages:Array.isArray(v.messages)?v.messages:[],receiving:!!v.receiving,processing:!!v.processing}:null;return {id:r,card:m,card_data:s,requires:C,computed_values:A.computed_values,runtime_state:f,card_chats:q}}function $(e){if(!e||typeof e!="object")throw new Error("payload must be an object");return (Array.isArray(e.cardDefinitions)?e.cardDefinitions:[]).map(n=>P(e,n.id))}function J({boardPath:e,cardDefinitions:r,runtimeModels:n,graphState:u}){let o=Array.isArray(r)?r:[],h=Array.isArray(n)?n:[],S=new Map(h.map(s=>[s.id,s])),d=u.state?.tasks??{},m={};for(let s of h)s?.id&&(m[s.id]={schema_version:"v1",card_id:s.id,card_data:structuredClone(s.card_data??{}),computed_values:structuredClone(s.computed_values??{})});let A={};for(let s of Object.keys(d)){let f=d[s]?.data?.provides_data;if(f&&typeof f=="object")for(let l of Object.keys(f))A[l]=structuredClone(f[l]);}let _=o.map(s=>{let f=S.get(s.id)??{},l=d[s.id],C=typeof l?.status=="string"?l.status:D(f.card_data?.status),i=typeof l?.error=="string"?l.error:typeof f.card_data?.error=="string"?f.card_data.error:null;return {name:s.id,status:C,...i?{error:{message:i,code:"TASK_FAILED",at:l?.failedAt??null,source:"browser-runtime"}}:{},requires:Array.isArray(s.requires)?s.requires:[],requires_satisfied:[],requires_missing:[],provides_declared:Array.isArray(s.provides)?s.provides.map(v=>v.bindTo):[s.id],provides_runtime:Object.keys(l?.data?.provides_data??{}).sort(),blocked_by:[],unblocks:[],runtime:{attempt_count:l?.executionCount??0,restart_count:l?.retryCount??0,in_progress_since:C==="in-progress"?l?.startedAt??null:null,last_transition_at:l?.lastUpdated??f.card_data?.lastRun??null,last_completed_at:l?.completedAt??null,last_restarted_at:l?.startedAt??null,status_age_ms:null}}});return {cardDefinitions:structuredClone(o),cardRuntimeById:m,dataObjectsByToken:A,statusSnapshot:{schema_version:"v1",meta:{board:{path:e??"browser-runtime"}},summary:{card_count:_.length,completed:_.filter(s=>s.status==="completed").length,eligible:0,pending:_.filter(s=>s.status==="pending").length,blocked:0,unresolved:0,failed:_.filter(s=>s.status==="failed").length,in_progress:_.filter(s=>s.status==="in-progress").length,orphan_cards:0,topology:{edge_count:0,max_fan_out_card:null,max_fan_out:0}},cards:_}}}exports.a=F;exports.b=H;exports.c=P;exports.d=$;exports.e=J;//# sourceMappingURL=chunk-YAPTL2MP.cjs.map
2
+ //# sourceMappingURL=chunk-YAPTL2MP.cjs.map
@@ -1,3 +1,3 @@
1
- 'use strict';var chunkLFVMX23W_cjs=require('./chunk-LFVMX23W.cjs'),chunkNM6O35RY_cjs=require('./chunk-NM6O35RY.cjs'),chunkNBJTYAYN_cjs=require('./chunk-NBJTYAYN.cjs'),chunkLRO5AL75_cjs=require('./chunk-LRO5AL75.cjs'),chunkBQUQTOPB_cjs=require('./chunk-BQUQTOPB.cjs'),chunkGPCMBPLK_cjs=require('./chunk-GPCMBPLK.cjs'),chunk7FGPOGRV_cjs=require('./chunk-7FGPOGRV.cjs'),chunkLPXVVMQT_cjs=require('./chunk-LPXVVMQT.cjs'),chunk272IYUKT_cjs=require('./chunk-272IYUKT.cjs'),chunkHVLWVMG6_cjs=require('./chunk-HVLWVMG6.cjs'),chunkWRMOGPRG_cjs=require('./chunk-WRMOGPRG.cjs'),chunkBAG7MHZP_cjs=require('./chunk-BAG7MHZP.cjs'),chunk5XLFPPTY_cjs=require('./chunk-5XLFPPTY.cjs'),chunkSDJ3747Q_cjs=require('./chunk-SDJ3747Q.cjs'),chunkOF4FPYNI_cjs=require('./chunk-OF4FPYNI.cjs'),chunk2RIHC5TZ_cjs=require('./chunk-2RIHC5TZ.cjs');function ce(g){let{apiBasePath:w,json:b,readJsonBody:I,bootstrapBoard:B,createMcpControlplaneToolRegistry:$,retriggerCard:N,applyCardAction:x,resolveChatHandlerTarget:_,sendCardFileDownloadResponse:H}=g;async function E(T,S,z){let q=T.method||"GET",K=z,l=K.pathname;try{if(q==="POST"&&l===`${w}/mcp-actions`){await B();let f=Date.now(),y=new Date(f).toISOString(),k=await I(T),u=typeof k.tool=="string"?k.tool.trim():"",P=k.args&&typeof k.args=="object"&&!Array.isArray(k.args)?k.args:{};if(!u)return b(S,400,{error:"tool is required"}),!0;let v=chunkLPXVVMQT_cjs.a(P,"card_id");if(!v)return b(S,400,{error:"MCP action requires card_id"}),!0;if(u==="retrigger-card"||u==="retrigger"){await N(v);let O=Date.now();return b(S,200,{status:"success",data:{ok:!0,cardId:v,actionType:u,requestReceivedAt:y,requestReceivedAtMs:f,responseSentAt:new Date(O).toISOString(),responseSentAtMs:O,responseStatus:200}}),!0}let A=chunkLPXVVMQT_cjs.c(P,"payload");if(u==="chat-send"&&!await _(v)){let O=Date.now();return b(S,409,{error:`chat handler is not configured for card: ${v}`,requestReceivedAt:y,requestReceivedAtMs:f,responseSentAt:new Date(O).toISOString(),responseSentAtMs:O,responseStatus:409}),!0}if(u==="chat-send"){let O=typeof A["turn-id"]=="string"?A["turn-id"]:typeof A.turnId=="string"?A.turnId:typeof A.turn=="string"?A.turn:"";if(!O||!String(O).trim()){let U=Date.now();return b(S,400,{error:`chat-send requires a non-empty 'turn-id' (or 'turnId'/'turn') in payload for card: ${v}`,requestReceivedAt:y,requestReceivedAtMs:f,responseSentAt:new Date(U).toISOString(),responseSentAtMs:U,responseStatus:400}),!0}}await x(v,u,A);let D=Date.now();return b(S,200,{status:"success",data:{ok:!0,cardId:v,actionType:u,requestReceivedAt:y,requestReceivedAtMs:f,responseSentAt:new Date(D).toISOString(),responseSentAtMs:D,responseStatus:200}}),!0}if(q==="POST"&&l===`${w}/mcp-controlplane`){await B();let f=await I(T),y=typeof f.tool=="string"?f.tool.trim():"",k=f.args&&typeof f.args=="object"&&!Array.isArray(f.args)?f.args:{};if(!y)return b(S,400,{error:"tool is required"}),!0;try{let u=await chunk272IYUKT_cjs.a(y,k,$());if(u&&typeof u=="object"&&!Array.isArray(u)){let P=u;if(P.status==="fail")return b(S,400,{error:chunk272IYUKT_cjs.b(u,"Request failed")}),!0;if(P.status==="error")return b(S,500,{error:chunk272IYUKT_cjs.b(u,"Internal error")}),!0}b(S,200,u);}catch(u){let P=typeof u?.statusCode=="number"?Number(u.statusCode):500,v=u instanceof Error?u.message:String(u);b(S,P,{error:v});}return !0}let R=l.match(new RegExp(`^${chunkBQUQTOPB_cjs.c(w)}/cards/([^/]+)/retrigger$`));if(q==="POST"&&R){await B();let f=decodeURIComponent(R[1]);return await N(f),b(S,200,{ok:!0}),!0}let F=l.match(new RegExp(`^${chunkBQUQTOPB_cjs.c(w)}/cards/([^/]+)/actions$`));if(q==="POST"&&F){await B();let f=decodeURIComponent(F[1]),y=Date.now(),k=new Date(y).toISOString(),u=await I(T),P=u?.actionType;if(P==="chat-send"&&!await _(f)){let A=Date.now();return b(S,409,{error:`chat handler is not configured for card: ${f}`,requestReceivedAt:k,requestReceivedAtMs:y,responseSentAt:new Date(A).toISOString(),responseSentAtMs:A,responseStatus:409}),!0}if(P==="chat-send"){let A=u?.payload??{},D=typeof A["turn-id"]=="string"?A["turn-id"]:typeof A.turnId=="string"?A.turnId:typeof A.turn=="string"?A.turn:"";if(!D||!String(D).trim()){let O=Date.now();return b(S,400,{error:`chat-send requires a non-empty 'turn-id' (or 'turnId'/'turn') in payload for card: ${f}`,requestReceivedAt:k,requestReceivedAtMs:y,responseSentAt:new Date(O).toISOString(),responseSentAtMs:O,responseStatus:400}),!0}}await x(f,P,u?.payload);let v=Date.now();return b(S,200,{ok:!0,requestReceivedAt:k,requestReceivedAtMs:y,responseSentAt:new Date(v).toISOString(),responseSentAtMs:v,responseStatus:200}),!0}let p=l.match(new RegExp(`^${chunkBQUQTOPB_cjs.c(w)}/cards/([^/]+)/files/(\\d+)$`));if(q==="GET"&&p){let f=decodeURIComponent(p[1]),y=parseInt(p[2],10),k=K.searchParams.get("sn");return await H(S,f,y,k),!0}return !1}catch(R){let F=R?.statusCode||500;return b(S,F,{error:String(R?.message||R)}),true}}return {handleRuntimeApi:E}}var Ke=3e4;function Ve(g){let w=g.socket?.remoteAddress??"";return w==="127.0.0.1"||w==="::1"||w==="::ffff:127.0.0.1"}function ue(g){let{apiBasePath:w,emitNotifications:b,readJsonBody:I,json:B}=g,$=`${w}/notify-q`;async function N(x,_,H){if(H.pathname!==$)return false;if((x.method??"").toUpperCase()!=="POST")return B(_,405,{status:"error",error:"Method not allowed"}),true;if(!Ve(x))return B(_,403,{status:"error",error:"Forbidden"}),true;let E;try{E=await I(x);}catch{return B(_,400,{status:"error",error:"Invalid JSON body"}),true}if(!E||typeof E!="object"||!Array.isArray(E.notifications))return B(_,400,{status:"error",error:"body.notifications must be an array"}),true;let T=E.notifications,{accepted:S,rejected:z}=chunkLRO5AL75_cjs.b(T,Date.now(),Ke);return S.length>0&&b(S),B(_,200,{status:"success",data:{accepted:S.length,rejected:z}}),true}return {handleNotifyRoute:N}}var le={"Access-Control-Allow-Origin":"*","Access-Control-Allow-Headers":"content-type,x-file-name","Access-Control-Allow-Methods":"GET,POST,PATCH,OPTIONS"},de="chat-handler-flow-queue",ot="__probe__echo__probe__";function Mr(g){let w=String(g.apiBasePath||"/api/board").replace(/\/$/,""),b={...le,...g.corsHeaders||{}},I=g.queueLaneTuning??{},B=g.boardId||"",$=Number.isInteger(g.chatBootstrapTailTurns)&&g.chatBootstrapTailTurns>0?g.chatBootstrapTailTurns:1,N=g.logger||{info:console.log,warn:console.warn,error:console.error},x=g.invocationAdapter,_=g.chatFlowRunner||null,H=g.notificationTransport||null,E=g.serverUrl||null,T=g.executionExtra||{},S=g.onSseClientConnected,z=g.onSseClientDisconnected,q=g.onChannelSubscribed,K=g.onChannelUnsubscribed,l=chunkLFVMX23W_cjs.a({buildChatOneShotBatch:async(t,e)=>await Q.buildSseOneShotBatch({params:{cardId:t},body:{receiving:e}}),onSseClientDisconnected:z}),R=chunkLFVMX23W_cjs.a({buildChatOneShotBatch:async()=>({status:"success",data:{kind:"notification-batch",category:"batch",notifications:[]}})});function F(t){function e(a){return {...a,queueStorageForRef(d,C){return chunkSDJ3747Q_cjs.a(a.queueStorageForRef(d,C),{lane:C,emitNotification:i})}}}function r(a){return {...a,queueStorageForRef(d,C){return chunkHVLWVMG6_cjs.h(a.queueStorageForRef(d,C),{lane:C,emitNotification:i})}}}function n(a){return {async get(d){return a.get(d)},async set(d){return a.set(d)},async del(d){return a.del(d)},async patch(d){return a.patch(d)},async appendFiles(d){return a.appendFiles(d)}}}function o(a){return {async get(d){return await a.get(d)},async set(d){return await a.set(d)},async del(d){return await a.del(d)},async patch(d){return await a.patch(d)},async appendFiles(d){return await a.appendFiles(d)}}}let s=null;function i(a){if(a.kind==="notification-batch"){V(a.notifications,s??void 0);return}V([a],s??void 0);}let c=chunkBQUQTOPB_cjs.a(t.boardAdapter)?r(t.boardAdapter):e(t.boardAdapter),j=t.nonCoreAdapter??(!chunkBQUQTOPB_cjs.a(c)&&P(c)?c:null),h=chunkBQUQTOPB_cjs.a(c)?chunkHVLWVMG6_cjs.i(t.baseRef,c,{boardRuntimeStoreRef:t.boardRuntimeStoreRef,scratchStoreRef:t.scratchStoreRef,taskExecutorRef:t.taskExecutorRef,chatHandlerFlow:t.chatHandlerFlow,emitNotification:i}):chunkBAG7MHZP_cjs.F(t.baseRef,c,{boardRuntimeStoreRef:t.boardRuntimeStoreRef,scratchStoreRef:t.scratchStoreRef,taskExecutorRef:t.taskExecutorRef,chatHandlerFlow:t.chatHandlerFlow,emitNotification:i}),M=t.nonCore??(j?chunkBAG7MHZP_cjs.G(t.baseRef,j,{boardRuntimeStoreRef:t.boardRuntimeStoreRef,taskExecutorRef:t.taskExecutorRef}):null),We=c.chatStorageForRef(t.chatStoreRef),lt,Je=chunkBQUQTOPB_cjs.a(c)?(()=>{let a=chunkHVLWVMG6_cjs.d(chunkHVLWVMG6_cjs.c(chunkHVLWVMG6_cjs.b(c.kvStorageForRef(t.cardStoreRef)),c.hashFn),N.warn),d=chunkHVLWVMG6_cjs.g(a,{emitNotification:i}),C=o(d);return lt={get(m){return C.get(m)},set(m){return C.set(m)}},C})():(()=>{let a=c.kvStorageForRef(t.cardStoreRef),C=chunk5XLFPPTY_cjs.a(chunkBAG7MHZP_cjs.q({readIndex:()=>a.read("_index"),writeIndex:m=>a.write("_index",m),readCard:m=>a.read(m),writeCard:(m,pt)=>(a.write(m,pt),m),removeCard:m=>{a.delete(m);},cardExists:m=>a.read(m)!==null,defaultCardKey:m=>m},N.warn),{emitNotification:i});return lt=C,n(C)})(),ft;if(chunkBQUQTOPB_cjs.a(c)){let a=c.blobStorageForRef(t.artifactsStoreRef);ft={async putBytes(d,C){if(a.writeBytes){await a.writeBytes(d,C);return}let m=JSON.stringify({__kind:"bytes-array",data:[...C]});await a.write(d,m);},async getBytes(d){if(a.readBytes){let m=await a.readBytes(d);if(m!==null)return m}let C=await a.read(d);if(C===null)return null;try{let m=JSON.parse(C);if(m&&m.__kind==="bytes-array"&&Array.isArray(m.data))return new Uint8Array(m.data)}catch{}return new TextEncoder().encode(C)},async listKeys(d){return await a.listKeys(d)}};}else {let a=c.blobStorageForRef(t.artifactsStoreRef),d=chunkNBJTYAYN_cjs.a(a);ft={putBytes(C,m,pt){d.putBytes(C,m,pt);},getBytes(C){return d.getBytes(C)},listKeys(C){return d.list(C).map(m=>m.key)}};}let ze={async init(a){return h.init(a)},async status(a){return h.status(a)},async getConfig(a){return h.getConfig(a)},async getAllOutputsDataObjects(a){return h.getAllOutputsDataObjects(a)},async getAllOutputsComputedValues(a){return h.getAllOutputsComputedValues(a)},async getOutputsFetchedSources(a){return h.getOutputsFetchedSources(a)},async buildSseOneShotPayload(a){return h.buildSseOneShotPayload(a)},async upsertCard(a){return h.upsertCard(a)},async removeCard(a){return h.removeCard(a)},async sourceDataFetched(a){return h.sourceDataFetched(a)},async sourceDataFetchFailure(a){return h.sourceDataFetchFailure(a)}};return s={label:t.label,board:h,nonCore:M,publicCardStore:lt,boardOps:ze,cardStoreOps:Je,get filesArtifacts(){return ft},get chatStorage(){return We},boardAdapter:c,boardRuntimeStoreRef:t.boardRuntimeStoreRef,cardStoreRef:t.cardStoreRef,outputsStoreRef:t.outputsStoreRef,artifactsStoreRef:t.artifactsStoreRef,fetchedSourcesStoreRef:t.fetchedSourcesStoreRef,queueStoreRef:t.queueStoreRef,chatStoreRef:t.chatStoreRef,scratchStoreRef:t.scratchStoreRef,notifyRef:t.notifyRef,taskExecutorRef:t.taskExecutorRef,chatHandlerRef:t.chatHandlerRef,chatHandlerFlow:t.chatHandlerFlow,inferenceAdapterRef:t.inferenceAdapterRef,notification:chunkLRO5AL75_cjs.c(),notificationTeardown:null,initialized:false,cardsBootstrapped:false},s}let p=g.boards.map(F),f=new Map;function y(t){return f.get(t)??0}function k(t){return t.queueStoreRef}function u(t,e){if(chunkBQUQTOPB_cjs.a(t.boardAdapter)){let n=t.boardAdapter.queueStorageForRef(k(t),e);return chunkWRMOGPRG_cjs.a(n)}let r=t.boardAdapter.queueStorageForRef(k(t),e);return chunkGPCMBPLK_cjs.a(r)}function P(t){let e=t;return typeof e.invokeExecutor=="function"&&typeof e.validateSchema=="function"}function v(t){let e=p[y(t)];return {files:e?e.filesArtifacts:null}}function A(){return chunkNBJTYAYN_cjs.c()}function D(t){return String(t||"").replace(/[^a-zA-Z0-9_-]/g,"_")||"unknown-card"}function O(t){return "cardId"in t&&typeof t.cardId=="string"?W(t.cardId)??void 0:p[0]??void 0}function U(t){for(let e of t){let r=O(e);if(r)return r}return p[0]??void 0}function ct(t,e={}){if(!t||t.length===0)return;let r=chunk2RIHC5TZ_cjs.e(t),n={kind:"notification-batch",category:"batch",notifications:r},o=e.ctx??U(r);if(e.appendState!==false&&o&&chunkLRO5AL75_cjs.e(o.notification,n),e.broadcastSse!==false){let s=r.filter(c=>c.kind==="message_enqueued"),i=r.filter(c=>c.kind!=="message_enqueued");i.length>0&&l.broadcastNotificationBatch(i),s.length>0&&R.broadcastNotificationBatch(s);}if(!(e.mirrorExternal===false||!o?.boardAdapter.publishBoardChangeNotifications))try{let s=r.filter(i=>i.category==="board-output"||i.category==="card-store");s.length>0&&o.boardAdapter.publishBoardChangeNotifications(s);}catch{}}function V(t,e){ct(t,{ctx:e,appendState:true,broadcastSse:true,mirrorExternal:true});}async function fe(t){if(!t||t.notificationTeardown||!H||!t.notifyRef)return;let e=await H.subscribe(t.notifyRef,r=>{let n=chunkLRO5AL75_cjs.a(r);ct(n,{ctx:t,appendState:true,broadcastSse:true,mirrorExternal:false});});t.notificationTeardown=e;}async function pe(t){if(!t||t.initialized)return;let e={boardRuntimeStoreRef:t.boardRuntimeStoreRef,cardStoreRef:t.cardStoreRef,outputsStoreRef:t.outputsStoreRef,fetchedSourcesStoreRef:t.fetchedSourcesStoreRef,artifactsStoreRef:t.artifactsStoreRef,queueStoreRef:t.queueStoreRef,chatStoreRef:t.chatStoreRef,scratchStoreRef:t.scratchStoreRef},r={};t.taskExecutorRef&&(r["task-executor-ref"]=t.taskExecutorRef),t.chatHandlerFlow!==void 0&&(r["chat-handler-flow"]=t.chatHandlerFlow);let n=await t.boardOps.init({params:e,body:r});if(n.status!=="success")throw Object.assign(new Error(n.error||`init failed for ${t.label}`),{statusCode:500});if(await fe(t),!t.chatHandlerFlow&&t.chatHandlerRef&&x.describe)try{let o=await x.describe(t.chatHandlerRef);o&&o.kind!=="chat-handler"?N.warn(`[init] chat-handler describe returned kind="${o.kind}", expected "chat-handler" for ${t.label}`):o&&N.info(`[init] chat-handler validated: ${o.name} (protocol ${o.protocolVersion}) for ${t.label}`);}catch(o){N.warn(`[init] chat-handler describe failed for ${t.label}: ${o?.message||String(o)}`);}t.initialized=true;}async function ut(t){let e=[],r=await t.boardOps.status({});r.status==="success"&&r.data!=null&&chunkLRO5AL75_cjs.d(r.data)&&e.push({kind:"status",status:r.data});let n=await t.boardOps.getAllOutputsDataObjects({});if(n.status==="success"&&n.data!=null)for(let[s,i]of Object.entries(n.data))s&&e.push({kind:"data_object",key:s,payload:i});let o=await t.boardOps.getAllOutputsComputedValues({});if(o.status==="success"&&o.data!=null)for(let[s,i]of Object.entries(o.data))s&&i&&typeof i=="object"&&!Array.isArray(i)&&e.push({kind:"computed_values",cardId:s,values:i});e.length>0&&ct(e,{ctx:t,appendState:true,broadcastSse:true,mirrorExternal:false});}async function Rt(t,e){if(!t||t.cardsBootstrapped)return;let r=await t.cardStoreOps.get({}),n=r.status==="success"&&Array.isArray(r.data?.cards)?r.data.cards:[];for(let o of n)typeof o.id=="string"&&(f.set(o.id,e),await t.boardOps.upsertCard({params:{cardId:o.id}}));t.cardsBootstrapped=true;}async function G(){for(let t of p)await pe(t);}async function at(){await G();for(let t=0;t<p.length;t++)await ut(p[t]),await Rt(p[t],t),await ut(p[t]);}async function yt(t=false){t||await G();for(let e of p){let r=await e.board.processAccumulatedEvents({});if(r.status!=="success")return r}return {status:"success"}}function W(t){return p[y(t)]??null}async function Y(t){let e=W(t);if(!e)return null;let r=await e.cardStoreOps.get({params:{id:t}});if(r.status!=="success")return null;let n=Array.isArray(r.data?.cards)?r.data.cards:[];return n.length>0?n[0]:null}async function me(){let t=async r=>{if(!r)return [];let n=await r.cardStoreOps.get({});return n.status!=="success"||!Array.isArray(n.data?.cards)?[]:n.data.cards},e=[];for(let r of p)e.push(...await t(r));return e}function ht(){return p[0]??null}function ge(t){return W(t)??ht()}function L(t){let e=ge(t);if(!e)throw Object.assign(new Error(`Board context is unavailable for chat operations: ${t}`),{statusCode:404});return e.chatStorage}async function Re(t){return await L(t).isProcessing(t)}async function tt(t,e){let r=await Q.setProcessing({params:{cardId:t},body:{active:e}});if(r.status!=="success")throw Object.assign(new Error(r.error||`Failed to set chat processing for card: ${t}`),{statusCode:500})}let Q=chunkOF4FPYNI_cjs.a({append(t,e,r,n,o){return L(t).append(t,e,r,n,o)},readAll(t){return L(t).readAll(t)},readAfter(t,e){return L(t).readAfter(t,e)},clear(t){return L(t).clear(t)},setProcessing(t,e){return L(t).setProcessing(t,e)},isProcessing(t){return L(t).isProcessing(t)},getConfig(t){return L(t).getConfig(t)},setConfig(t,e){return L(t).setConfig(t,e)}},{emitNotification(t){if(t.kind==="notification-batch"){V(t.notifications);return}V([t]);}}),wt=chunkLRO5AL75_cjs.p({boardContexts:p,cardOwnerIndex:f,cardContextForCard:t=>W(t),readStatusSnapshot:()=>Se(),readDataObjectsByToken:()=>Ae(),readCardRuntimeArtifacts:()=>Ce(),readCardFromStore:t=>Y(t),readCardDefinitions:()=>me(),processAccumulatedLaneInternal:t=>yt(t),reportSourceFetched:(t,e)=>kt(t,{ref:e}),reportSourceFetchFailure:(t,e)=>Pt(t,{reason:e}),uploadCardFile:(t,e,r,n,o)=>Ct(t,e,r,n,o),chatStorePublic:Q,serverUrl:E,apiBasePath:w}),ye=wt.mcpCardStoreFacade,st=wt.createMcpFacade,he=chunkLRO5AL75_cjs.j({boardId:B,bootstrapBoard:()=>at(),sseHub:l,onChannelSubscribed:q,onChannelUnsubscribed:K,getMcpFacade:()=>st(),getMcpCardStoreFacade:()=>ye()});function we(t){return chunkLRO5AL75_cjs.m(t)}function be(){return chunkLRO5AL75_cjs.n(st())}function bt(){return chunkLRO5AL75_cjs.o({boardId:B,uploadCardFile:Ct,getMcpFacade:()=>st(),controlplane:he})}let it=chunkLRO5AL75_cjs.k({boardId:B,boardContexts:p,readChatRecords:(t,e)=>ve(t,e),getChatProcessing:t=>Re(t),chatBootstrapTailTurns:$}),Se=it.readStatusSnapshot,Ce=it.readCardRuntimeArtifacts,Ae=it.readDataObjectsByToken,dt=it.buildPublishedRuntimePayload;async function St(t,e,r){let n=r?.syncBoard!==false,o=r?.restartOnlyIfChanged===true,s=W(t);if(!s)throw Object.assign(new Error(`Card not found: ${t}`),{statusCode:404});let i=await Y(t);if(!i)throw Object.assign(new Error(`Card not found: ${t}`),{statusCode:404});let c=o?JSON.stringify(i):null,j=e(i)||i;if(o&&JSON.stringify(j)===c)return;let h=await s.cardStoreOps.set({body:j});if(h.status!=="success")throw Object.assign(new Error(h.error||`Failed to persist card: ${t}`),{statusCode:500});if(n){let M=await s.boardOps.upsertCard({params:{cardId:t,restart:true}});if(M.status!=="success")throw Object.assign(new Error(M.error||`Failed to upsert card: ${t}`),{statusCode:500})}}async function Be(t,e){await St(t,e,{syncBoard:true});}async function ke(t,e){await St(t,e,{syncBoard:false});}async function Pe(t){let e=W(t);if(!e)throw Object.assign(new Error(`Card not found: ${t}`),{statusCode:404});if(!await Y(t))throw Object.assign(new Error(`Card not found: ${t}`),{statusCode:404});let n=await e.boardOps.upsertCard({params:{cardId:t,restart:true}});if(n.status!=="success")throw Object.assign(new Error(n.error||`Failed to retrigger card: ${t}`),{statusCode:500})}async function Oe(t){let e=await Q.clear({params:{cardId:t}});if(e.status!=="success")throw Object.assign(new Error(e.error||`Failed to clear chat records for card: ${t}`),{statusCode:500});try{await tt(t,!1);}catch{}}async function Fe(t,e,r,n,o=""){let s=typeof r=="string"?r.trim():"",i=await Q.append({params:{cardId:t},body:{role:e||"system",text:s,files:n,turn:o}});if(i.status!=="success")throw Object.assign(new Error(i.error||`Failed to append chat record for card: ${t}`),{statusCode:500});return String(i.data?.id||"")}async function ve(t,e){let r=Number.isInteger(e?.tailTurns)&&e?.tailTurns>0?e?.tailTurns:void 0,n=await Q.readAll({params:{cardId:t},...r===void 0?{}:{body:{tailTurns:r}}});if(n.status!=="success")throw Object.assign(new Error(n.error||`Failed to read chat records for card: ${t}`),{statusCode:500});return Array.isArray(n.data?.records)?n.data.records:[]}let Ct=chunkLRO5AL75_cjs.l({safeCardId:t=>D(t),artifactsStores:t=>v(t),cardFileMetadataStore:()=>A(),readCardFromStore:t=>Y(t),updateCardLocalOnly:(t,e)=>ke(t,e),writeChatRecord:(t,e,r,n,o)=>Fe(t,e,r,n,o)}).uploadCardFile;async function At(t){let e=W(t);if(!e)return null;let r=await e.boardOps.getConfig({params:{key:"chat-handler-flow"}}),o=(r.status==="success"?r.data?.value:null)??e.chatHandlerFlow??null,s=e.chatHandlerRef;return o==null&&(!s||typeof s!="object")?null:{ctx:e,handlerFlow:o,handlerRef:s}}function xe(t){let e=typeof t=="string"?t.trim():"";if(e.length<ot.length*2||!e.startsWith(ot)||!e.endsWith(ot))return null;let r=e.slice(ot.length,e.length-ot.length).trim(),n=/^([A-Za-z0-9_-]+)__(.*)$/s.exec(r);return n?{assistant:n[1].trim().toLowerCase(),text:n[2].trim()}:{assistant:"echo",text:r}}async function Te(t,e,r=false,n="",o=""){try{let s=await At(t);if(!s){try{await tt(t,!1);}catch{}return}let{ctx:i,handlerFlow:c,handlerRef:j}=s;if(!r)try{await tt(t,!0);}catch{}let h={boardId:B,cardId:String(t),lastChatEntryId:e,...n?{turnId:n}:{},...typeof o=="string"&&o.trim()?{probe:o.trim()}:{},...T,...E?{serverUrl:E}:{}},M=c!=null?{meta:"chat-handler-flow",howToRun:"built-in",whatToRun:{kind:"built-in",value:de}}:j;chunkBQUQTOPB_cjs.a(i.boardAdapter)?await u(i,"chat-agent").enqueueRequest({boardId:B,ref:M,args:c!=null?{...h,__chatHandlerFlow:c}:h}):u(i,"chat-agent").enqueueRequest({boardId:B,ref:M,args:c!=null?{...h,__chatHandlerFlow:c}:h}),await Promise.resolve(i.boardAdapter.requestProcessAccumulated?.());}catch(s){try{await tt(t,!1);}catch{}N.warn(`[chat-handler] queue failed for card "${t}": ${s instanceof Error?s.message:String(s)}`);}}async function Ne(t,e,r){if(e.howToRun==="built-in"&&chunkBQUQTOPB_cjs.b(e)===de){let n=_,o=r.__chatHandlerFlow,s={...r};return delete s.__chatHandlerFlow,n?n.run(o,s,{boardId:B,cardId:String(s.cardId||""),label:t.label,logger:N,serverUrl:E,executionExtra:T}):{dispatched:false,error:"chat-handler-flow configured but no chatFlowRunner was provided"}}return x.invoke(e,r)}async function Ee(t,e=false){e||await G();let r=typeof t.args?.cardId=="string"?t.args.cardId:"",n=r?W(r):ht();if(!n)throw new Error(r?`Board context is unavailable for chat-agent request: ${r}`:"Board context is unavailable for chat-agent request");let o=await Ne(n,t.ref,t.args);if(!o.dispatched){if(r)try{await tt(r,!1);}catch{}throw new Error(o.error||`chat-agent dispatch failed for card "${r||"unknown"}"`)}}async function je(t,e,r){if(e==="chat-send"){let o=r&&typeof r["turn-id"]=="string"?r["turn-id"]:r&&typeof r.turnId=="string"?r.turnId:r&&typeof r.turn=="string"?r.turn:"";if(r&&"files"in r&&r.files!==void 0&&r.files!==null)throw Object.assign(new Error('chat-send does not accept a "files" parameter; upload attachments via manage.add-chat-attachment first'),{statusCode:400});let s=bt(),i=xe(r?.text),c=i?i.text:r?.text,j=await chunk272IYUKT_cjs.a("manage.add-chat-entry-and-any-attachments",{board_id:B,card_id:t,role:"user",text:c,turn_id:o,files:[]},s);if(j?.status!=="success")throw new Error(chunk272IYUKT_cjs.b(j,`chat-send append failed for card ${t}`));let h=j?.data?.id;if(typeof h!="string"||!h)throw new Error(`chat-send did not return an append id for card ${t}`);let M=await chunk272IYUKT_cjs.a("setstate.chat-processing-started",{board_id:B,card_id:t},s);if(M?.status!=="success")throw new Error(chunk272IYUKT_cjs.b(M,`chat-send processing update failed for card ${t}`));Te(t,h,true,o,i?.assistant||"");return}await Be(t,o=>{let s=new Date().toISOString(),i=o.card_data&&typeof o.card_data=="object"?o.card_data:{};if(o.card_data=i,e==="file-upload"){let c=A().normalizeIncoming(r?.files,s);return c.length>0&&A().merge(i,c),o}if(e==="action"){let c=r&&typeof r.buttonId=="string"?r.buttonId:"";if(!c)return o;i.lastAction={buttonId:c,at:s},i.lastActionText=`${c} @ ${s}`;}return o});}function et(t,e,r){let n=JSON.stringify(r),o=typeof Buffer<"u"?Buffer.byteLength(n):new TextEncoder().encode(n).length;t.writeHead(e,{...b,"Content-Type":"application/json; charset=utf-8","Content-Length":o}),t.end(n);}async function Bt(t,e,r){let n=await Y(t);if(!n)throw Object.assign(new Error("Card not found"),{statusCode:404});let o=A().resolve(n.card_data,e,r);if(!o.ok&&o.reason==="stale_reference")throw Object.assign(new Error("File reference is stale. Refresh and try again."),{statusCode:409});if(!o.ok)throw Object.assign(new Error("File not found"),{statusCode:404});let s=o.file,i=D(t),c=v(t),j=String(s.stored_name||""),h=`${i}/${j}`,M=c.files?await c.files.getBytes(h):null;if(!M)throw Object.assign(new Error("File not found"),{statusCode:404});return {fileRecord:s,bytes:M}}async function Me(t,e,r,n){let{fileRecord:o,bytes:s}=await Bt(e,r,n),i=String(o.name||o.stored_name||"download.bin"),c=String(o.mime_type||"application/octet-stream");t.writeHead(200,{"Content-Type":c,"Content-Disposition":`attachment; filename="${i}"`,"Content-Length":s.length}),t.end(s);}function _e(t){let e=String(t||"").toLowerCase();return e.startsWith("text/")||e.includes("json")||e.includes("xml")||e.includes("javascript")||e.includes("typescript")||e.includes("yaml")||e.includes("csv")}function De(t,e,r){let n=t.split(/\r?\n/);return (e==="head"?n.slice(0,r):n.slice(-r)).join(`
2
- `)}async function rt(t){let e=[];for await(let n of t)e.push(n);let r=typeof Buffer<"u"?Buffer.concat(e).toString("utf-8").trim():new TextDecoder().decode(chunkBQUQTOPB_cjs.d(e)).trim();return r?JSON.parse(r):{}}async function kt(t,e){let r=typeof e.ref=="string"?e.ref.trim():"";if(!r)return {status:"fail",error:"board-worker success callback requires body.ref"};let n=p[0];return n?n.boardOps.sourceDataFetched({params:{token:t,ref:r}}):{status:"fail",error:"no board context"}}async function Pt(t,e){let r=typeof e.reason=="string"&&e.reason.trim()?e.reason:"unknown",n=p[0];return n?n.boardOps.sourceDataFetchFailure({params:{token:t,reason:r}}):{status:"fail",error:"no board context"}}let Ie=chunkLFVMX23W_cjs.b({sseHub:l,queueSseHub:R,corsHeaders:b,json:et,buildPublishedRuntimePayload:()=>dt(),onSseClientConnected:S,onChannelSubscribed:q,onChannelUnsubscribed:K,apiBasePath:w,readJsonBody:t=>rt(t),initBoardAndSetup:()=>G(),bootstrapBoard:()=>at(),boardContexts:p,publishPersistedStateSnapshot:t=>ut(t),upsertCardsFromSource:(t,e)=>Rt(t,e)}).handleWatchersRoutes,qe=chunk7FGPOGRV_cjs.a({apiBasePath:w,json:et,readJsonBody:t=>rt(t),bootstrapBoard:()=>at(),createMcpFacade:()=>st(),createMcpToolRegistry:t=>we(t),resolveCardFileDownloadPayload:(t,e,r)=>Bt(t,e,r),isLikelyTextMimeType:t=>_e(t),sliceTextByLines:(t,e,r)=>De(t,e,r)}).handleAgentfaceApi,$e=chunkNM6O35RY_cjs.a({apiBasePath:w,json:et,readJsonBody:t=>rt(t),initBoardAndSetup:()=>G(),createMcpWebhookToolRegistry:()=>be()}).handleWebhooksApi,He=ce({apiBasePath:w,json:et,readJsonBody:t=>rt(t),bootstrapBoard:()=>at(),createMcpControlplaneToolRegistry:()=>bt(),retriggerCard:t=>Pe(t),applyCardAction:(t,e,r)=>je(t,e,r),resolveChatHandlerTarget:t=>At(t),sendCardFileDownloadResponse:(t,e,r,n)=>Me(t,e,r,n)}).handleRuntimeApi,Le=ue({apiBasePath:w,emitNotifications:t=>V(t),readJsonBody:t=>rt(t),json:(t,e,r)=>et(t,e,r)}).handleNotifyRoute;async function Ue(t,e,r){return !!(await qe(t,e,r)||await $e(t,e,r)||await Ie(t,e,r)||await Le(t,e,r)||await He(t,e,r))}return {get apiBasePath(){return w},get corsHeaders(){return b},get queueLaneTuning(){return I},handleRuntimeApi:Ue,emitNotification(t){if(t.kind==="notification-batch"){V(t.notifications);return}V([t]);},buildPublishedRuntimePayload:dt,__drainProcessAccumulatedLane:yt,handleChatAgentRequest:Ee,clearChatRecords:Oe,reportSourceFetched(t,e){return kt(t,{ref:e})},reportSourceFetchFailure(t,e){return Pt(t,{reason:e})},get cardStore(){return p[0]?.publicCardStore??{get(){return Promise.resolve({status:"fail",error:"no board context"})},set(){return Promise.resolve({status:"fail",error:"no board context"})}}}}}function _r(g){let w=String(g.apiBasePath||"/api/boards").replace(/\/$/,""),b={...le,...g.corsHeaders||{}},I=g.serverMetaStore,B=g.boardRuntimeFactory,$=new Map,N="boards-config.json";function x(){let l=I.getText(N);if(!l)return {boards:[{id:"default",label:"Default Board"}]};try{return JSON.parse(l)}catch{return {boards:[{id:"default",label:"Default Board"}]}}}function _(l){I.putText(N,JSON.stringify(l,null,2));}function H(l){let R=String(l||"").replace(/[^a-zA-Z0-9_-]/g,"_").replace(/^_+|_+$/g,"");return R.length>0&&R.length<=64?R:null}function E(l){if($.has(l))return $.get(l);let F=x().boards.find(f=>f.id===l)||{},p=B(l,F);return $.set(l,p),p}function T(l,R,F){let p=JSON.stringify(F),f=typeof Buffer<"u"?Buffer.byteLength(p):new TextEncoder().encode(p).length;l.writeHead(R,{...b,"Content-Type":"application/json; charset=utf-8","Content-Length":f}),l.end(p);}async function S(l,R,F){let p=l.method||"GET",f=F.pathname;if(p==="GET"&&f===w)return T(R,200,{ok:true,boards:x().boards}),true;if(p==="POST"&&f===w){let y=[];for await(let O of l)y.push(O);let k=typeof Buffer<"u"?Buffer.concat(y).toString("utf-8").trim():new TextDecoder().decode(chunkBQUQTOPB_cjs.d(y)).trim(),u={};try{u=k?JSON.parse(k):{};}catch{u={};}let P=H(u.id);if(!P)return T(R,400,{error:"board id must be 1-64 alphanumeric/dash/underscore characters"}),true;let v=x();if(v.boards.some(O=>O.id===P))return T(R,409,{error:`Board "${P}" is already registered`}),true;let A=typeof u.label=="string"&&u.label.trim()?u.label.trim():P,D={id:P,label:A};for(let[O,U]of Object.entries(u))O==="id"||O==="label"||U!=null&&(D[O]=U);return v.boards.push(D),_(v),T(R,200,{ok:true,board:D}),true}return false}async function z(l,R,F){let f=F.pathname.match(new RegExp(`^${chunkBQUQTOPB_cjs.c(w)}/([^/]+)(/|$)`));if(!f)return false;let y=H(decodeURIComponent(f[1]));return y?x().boards.some(P=>P.id===y)?!!await E(y).handleRuntimeApi(l,R,F):(T(R,404,{error:`Board "${y}" not registered. POST ${w} with {id} to register it first.`}),true):(T(R,400,{error:"Invalid board id"}),true)}async function q(l,R,F){return !!(await S(l,R,F)||await z(l,R,F))}function K(l){if(!x().boards.some(F=>F.id===l))throw Object.assign(new Error(`Board "${l}" not registered`),{statusCode:404});return {service:E(l)}}return {get apiBasePath(){return w},get corsHeaders(){return b},handleApi:q,requireBoardService:K}}exports.a=Mr;exports.b=_r;//# sourceMappingURL=chunk-MQAVZUXB.cjs.map
3
- //# sourceMappingURL=chunk-MQAVZUXB.cjs.map
1
+ 'use strict';var chunkLFVMX23W_cjs=require('./chunk-LFVMX23W.cjs'),chunkNM6O35RY_cjs=require('./chunk-NM6O35RY.cjs'),chunkNBJTYAYN_cjs=require('./chunk-NBJTYAYN.cjs'),chunkNOAERAOE_cjs=require('./chunk-NOAERAOE.cjs'),chunkBQUQTOPB_cjs=require('./chunk-BQUQTOPB.cjs'),chunkGPCMBPLK_cjs=require('./chunk-GPCMBPLK.cjs'),chunk7FGPOGRV_cjs=require('./chunk-7FGPOGRV.cjs'),chunkLPXVVMQT_cjs=require('./chunk-LPXVVMQT.cjs'),chunk272IYUKT_cjs=require('./chunk-272IYUKT.cjs'),chunk5RUSICUC_cjs=require('./chunk-5RUSICUC.cjs'),chunkWRMOGPRG_cjs=require('./chunk-WRMOGPRG.cjs'),chunkWE7JOO4T_cjs=require('./chunk-WE7JOO4T.cjs'),chunkJ7KE7SPA_cjs=require('./chunk-J7KE7SPA.cjs'),chunkSDJ3747Q_cjs=require('./chunk-SDJ3747Q.cjs'),chunkOF4FPYNI_cjs=require('./chunk-OF4FPYNI.cjs'),chunk2RIHC5TZ_cjs=require('./chunk-2RIHC5TZ.cjs');function ce(g){let{apiBasePath:w,json:b,readJsonBody:I,bootstrapBoard:B,createMcpControlplaneToolRegistry:$,retriggerCard:N,applyCardAction:x,resolveChatHandlerTarget:_,sendCardFileDownloadResponse:H}=g;async function E(T,S,z){let q=T.method||"GET",K=z,l=K.pathname;try{if(q==="POST"&&l===`${w}/mcp-actions`){await B();let f=Date.now(),y=new Date(f).toISOString(),k=await I(T),u=typeof k.tool=="string"?k.tool.trim():"",P=k.args&&typeof k.args=="object"&&!Array.isArray(k.args)?k.args:{};if(!u)return b(S,400,{error:"tool is required"}),!0;let v=chunkLPXVVMQT_cjs.a(P,"card_id");if(!v)return b(S,400,{error:"MCP action requires card_id"}),!0;if(u==="retrigger-card"||u==="retrigger"){await N(v);let O=Date.now();return b(S,200,{status:"success",data:{ok:!0,cardId:v,actionType:u,requestReceivedAt:y,requestReceivedAtMs:f,responseSentAt:new Date(O).toISOString(),responseSentAtMs:O,responseStatus:200}}),!0}let A=chunkLPXVVMQT_cjs.c(P,"payload");if(u==="chat-send"&&!await _(v)){let O=Date.now();return b(S,409,{error:`chat handler is not configured for card: ${v}`,requestReceivedAt:y,requestReceivedAtMs:f,responseSentAt:new Date(O).toISOString(),responseSentAtMs:O,responseStatus:409}),!0}if(u==="chat-send"){let O=typeof A["turn-id"]=="string"?A["turn-id"]:typeof A.turnId=="string"?A.turnId:typeof A.turn=="string"?A.turn:"";if(!O||!String(O).trim()){let U=Date.now();return b(S,400,{error:`chat-send requires a non-empty 'turn-id' (or 'turnId'/'turn') in payload for card: ${v}`,requestReceivedAt:y,requestReceivedAtMs:f,responseSentAt:new Date(U).toISOString(),responseSentAtMs:U,responseStatus:400}),!0}}await x(v,u,A);let D=Date.now();return b(S,200,{status:"success",data:{ok:!0,cardId:v,actionType:u,requestReceivedAt:y,requestReceivedAtMs:f,responseSentAt:new Date(D).toISOString(),responseSentAtMs:D,responseStatus:200}}),!0}if(q==="POST"&&l===`${w}/mcp-controlplane`){await B();let f=await I(T),y=typeof f.tool=="string"?f.tool.trim():"",k=f.args&&typeof f.args=="object"&&!Array.isArray(f.args)?f.args:{};if(!y)return b(S,400,{error:"tool is required"}),!0;try{let u=await chunk272IYUKT_cjs.a(y,k,$());if(u&&typeof u=="object"&&!Array.isArray(u)){let P=u;if(P.status==="fail")return b(S,400,{error:chunk272IYUKT_cjs.b(u,"Request failed")}),!0;if(P.status==="error")return b(S,500,{error:chunk272IYUKT_cjs.b(u,"Internal error")}),!0}b(S,200,u);}catch(u){let P=typeof u?.statusCode=="number"?Number(u.statusCode):500,v=u instanceof Error?u.message:String(u);b(S,P,{error:v});}return !0}let R=l.match(new RegExp(`^${chunkBQUQTOPB_cjs.c(w)}/cards/([^/]+)/retrigger$`));if(q==="POST"&&R){await B();let f=decodeURIComponent(R[1]);return await N(f),b(S,200,{ok:!0}),!0}let F=l.match(new RegExp(`^${chunkBQUQTOPB_cjs.c(w)}/cards/([^/]+)/actions$`));if(q==="POST"&&F){await B();let f=decodeURIComponent(F[1]),y=Date.now(),k=new Date(y).toISOString(),u=await I(T),P=u?.actionType;if(P==="chat-send"&&!await _(f)){let A=Date.now();return b(S,409,{error:`chat handler is not configured for card: ${f}`,requestReceivedAt:k,requestReceivedAtMs:y,responseSentAt:new Date(A).toISOString(),responseSentAtMs:A,responseStatus:409}),!0}if(P==="chat-send"){let A=u?.payload??{},D=typeof A["turn-id"]=="string"?A["turn-id"]:typeof A.turnId=="string"?A.turnId:typeof A.turn=="string"?A.turn:"";if(!D||!String(D).trim()){let O=Date.now();return b(S,400,{error:`chat-send requires a non-empty 'turn-id' (or 'turnId'/'turn') in payload for card: ${f}`,requestReceivedAt:k,requestReceivedAtMs:y,responseSentAt:new Date(O).toISOString(),responseSentAtMs:O,responseStatus:400}),!0}}await x(f,P,u?.payload);let v=Date.now();return b(S,200,{ok:!0,requestReceivedAt:k,requestReceivedAtMs:y,responseSentAt:new Date(v).toISOString(),responseSentAtMs:v,responseStatus:200}),!0}let p=l.match(new RegExp(`^${chunkBQUQTOPB_cjs.c(w)}/cards/([^/]+)/files/(\\d+)$`));if(q==="GET"&&p){let f=decodeURIComponent(p[1]),y=parseInt(p[2],10),k=K.searchParams.get("sn");return await H(S,f,y,k),!0}return !1}catch(R){let F=R?.statusCode||500;return b(S,F,{error:String(R?.message||R)}),true}}return {handleRuntimeApi:E}}var Ke=3e4;function Ve(g){let w=g.socket?.remoteAddress??"";return w==="127.0.0.1"||w==="::1"||w==="::ffff:127.0.0.1"}function ue(g){let{apiBasePath:w,emitNotifications:b,readJsonBody:I,json:B}=g,$=`${w}/notify-q`;async function N(x,_,H){if(H.pathname!==$)return false;if((x.method??"").toUpperCase()!=="POST")return B(_,405,{status:"error",error:"Method not allowed"}),true;if(!Ve(x))return B(_,403,{status:"error",error:"Forbidden"}),true;let E;try{E=await I(x);}catch{return B(_,400,{status:"error",error:"Invalid JSON body"}),true}if(!E||typeof E!="object"||!Array.isArray(E.notifications))return B(_,400,{status:"error",error:"body.notifications must be an array"}),true;let T=E.notifications,{accepted:S,rejected:z}=chunkNOAERAOE_cjs.b(T,Date.now(),Ke);return S.length>0&&b(S),B(_,200,{status:"success",data:{accepted:S.length,rejected:z}}),true}return {handleNotifyRoute:N}}var le={"Access-Control-Allow-Origin":"*","Access-Control-Allow-Headers":"content-type,x-file-name","Access-Control-Allow-Methods":"GET,POST,PATCH,OPTIONS"},de="chat-handler-flow-queue",ot="__probe__echo__probe__";function Mr(g){let w=String(g.apiBasePath||"/api/board").replace(/\/$/,""),b={...le,...g.corsHeaders||{}},I=g.queueLaneTuning??{},B=g.boardId||"",$=Number.isInteger(g.chatBootstrapTailTurns)&&g.chatBootstrapTailTurns>0?g.chatBootstrapTailTurns:1,N=g.logger||{info:console.log,warn:console.warn,error:console.error},x=g.invocationAdapter,_=g.chatFlowRunner||null,H=g.notificationTransport||null,E=g.serverUrl||null,T=g.executionExtra||{},S=g.onSseClientConnected,z=g.onSseClientDisconnected,q=g.onChannelSubscribed,K=g.onChannelUnsubscribed,l=chunkLFVMX23W_cjs.a({buildChatOneShotBatch:async(t,e)=>await Q.buildSseOneShotBatch({params:{cardId:t},body:{receiving:e}}),onSseClientDisconnected:z}),R=chunkLFVMX23W_cjs.a({buildChatOneShotBatch:async()=>({status:"success",data:{kind:"notification-batch",category:"batch",notifications:[]}})});function F(t){function e(a){return {...a,queueStorageForRef(d,C){return chunkSDJ3747Q_cjs.a(a.queueStorageForRef(d,C),{lane:C,emitNotification:i})}}}function r(a){return {...a,queueStorageForRef(d,C){return chunk5RUSICUC_cjs.h(a.queueStorageForRef(d,C),{lane:C,emitNotification:i})}}}function n(a){return {async get(d){return a.get(d)},async set(d){return a.set(d)},async del(d){return a.del(d)},async patch(d){return a.patch(d)},async appendFiles(d){return a.appendFiles(d)}}}function o(a){return {async get(d){return await a.get(d)},async set(d){return await a.set(d)},async del(d){return await a.del(d)},async patch(d){return await a.patch(d)},async appendFiles(d){return await a.appendFiles(d)}}}let s=null;function i(a){if(a.kind==="notification-batch"){V(a.notifications,s??void 0);return}V([a],s??void 0);}let c=chunkBQUQTOPB_cjs.a(t.boardAdapter)?r(t.boardAdapter):e(t.boardAdapter),j=t.nonCoreAdapter??(!chunkBQUQTOPB_cjs.a(c)&&P(c)?c:null),h=chunkBQUQTOPB_cjs.a(c)?chunk5RUSICUC_cjs.i(t.baseRef,c,{boardRuntimeStoreRef:t.boardRuntimeStoreRef,scratchStoreRef:t.scratchStoreRef,taskExecutorRef:t.taskExecutorRef,chatHandlerFlow:t.chatHandlerFlow,emitNotification:i}):chunkWE7JOO4T_cjs.e(t.baseRef,c,{boardRuntimeStoreRef:t.boardRuntimeStoreRef,scratchStoreRef:t.scratchStoreRef,taskExecutorRef:t.taskExecutorRef,chatHandlerFlow:t.chatHandlerFlow,emitNotification:i}),M=t.nonCore??(j?chunkWE7JOO4T_cjs.f(t.baseRef,j,{boardRuntimeStoreRef:t.boardRuntimeStoreRef,taskExecutorRef:t.taskExecutorRef}):null),We=c.chatStorageForRef(t.chatStoreRef),lt,Je=chunkBQUQTOPB_cjs.a(c)?(()=>{let a=chunk5RUSICUC_cjs.d(chunk5RUSICUC_cjs.c(chunk5RUSICUC_cjs.b(c.kvStorageForRef(t.cardStoreRef)),c.hashFn),N.warn),d=chunk5RUSICUC_cjs.g(a,{emitNotification:i}),C=o(d);return lt={get(m){return C.get(m)},set(m){return C.set(m)}},C})():(()=>{let a=c.kvStorageForRef(t.cardStoreRef),C=chunkJ7KE7SPA_cjs.H(chunkJ7KE7SPA_cjs.m({readIndex:()=>a.read("_index"),writeIndex:m=>a.write("_index",m),readCard:m=>a.read(m),writeCard:(m,pt)=>(a.write(m,pt),m),removeCard:m=>{a.delete(m);},cardExists:m=>a.read(m)!==null,defaultCardKey:m=>m},N.warn),{emitNotification:i});return lt=C,n(C)})(),ft;if(chunkBQUQTOPB_cjs.a(c)){let a=c.blobStorageForRef(t.artifactsStoreRef);ft={async putBytes(d,C){if(a.writeBytes){await a.writeBytes(d,C);return}let m=JSON.stringify({__kind:"bytes-array",data:[...C]});await a.write(d,m);},async getBytes(d){if(a.readBytes){let m=await a.readBytes(d);if(m!==null)return m}let C=await a.read(d);if(C===null)return null;try{let m=JSON.parse(C);if(m&&m.__kind==="bytes-array"&&Array.isArray(m.data))return new Uint8Array(m.data)}catch{}return new TextEncoder().encode(C)},async listKeys(d){return await a.listKeys(d)}};}else {let a=c.blobStorageForRef(t.artifactsStoreRef),d=chunkNBJTYAYN_cjs.a(a);ft={putBytes(C,m,pt){d.putBytes(C,m,pt);},getBytes(C){return d.getBytes(C)},listKeys(C){return d.list(C).map(m=>m.key)}};}let ze={async init(a){return h.init(a)},async status(a){return h.status(a)},async getConfig(a){return h.getConfig(a)},async getAllOutputsDataObjects(a){return h.getAllOutputsDataObjects(a)},async getAllOutputsComputedValues(a){return h.getAllOutputsComputedValues(a)},async getOutputsFetchedSources(a){return h.getOutputsFetchedSources(a)},async buildSseOneShotPayload(a){return h.buildSseOneShotPayload(a)},async upsertCard(a){return h.upsertCard(a)},async removeCard(a){return h.removeCard(a)},async sourceDataFetched(a){return h.sourceDataFetched(a)},async sourceDataFetchFailure(a){return h.sourceDataFetchFailure(a)}};return s={label:t.label,board:h,nonCore:M,publicCardStore:lt,boardOps:ze,cardStoreOps:Je,get filesArtifacts(){return ft},get chatStorage(){return We},boardAdapter:c,boardRuntimeStoreRef:t.boardRuntimeStoreRef,cardStoreRef:t.cardStoreRef,outputsStoreRef:t.outputsStoreRef,artifactsStoreRef:t.artifactsStoreRef,fetchedSourcesStoreRef:t.fetchedSourcesStoreRef,queueStoreRef:t.queueStoreRef,chatStoreRef:t.chatStoreRef,scratchStoreRef:t.scratchStoreRef,notifyRef:t.notifyRef,taskExecutorRef:t.taskExecutorRef,chatHandlerRef:t.chatHandlerRef,chatHandlerFlow:t.chatHandlerFlow,inferenceAdapterRef:t.inferenceAdapterRef,notification:chunkNOAERAOE_cjs.c(),notificationTeardown:null,initialized:false,cardsBootstrapped:false},s}let p=g.boards.map(F),f=new Map;function y(t){return f.get(t)??0}function k(t){return t.queueStoreRef}function u(t,e){if(chunkBQUQTOPB_cjs.a(t.boardAdapter)){let n=t.boardAdapter.queueStorageForRef(k(t),e);return chunkWRMOGPRG_cjs.a(n)}let r=t.boardAdapter.queueStorageForRef(k(t),e);return chunkGPCMBPLK_cjs.a(r)}function P(t){let e=t;return typeof e.invokeExecutor=="function"&&typeof e.validateSchema=="function"}function v(t){let e=p[y(t)];return {files:e?e.filesArtifacts:null}}function A(){return chunkNBJTYAYN_cjs.c()}function D(t){return String(t||"").replace(/[^a-zA-Z0-9_-]/g,"_")||"unknown-card"}function O(t){return "cardId"in t&&typeof t.cardId=="string"?W(t.cardId)??void 0:p[0]??void 0}function U(t){for(let e of t){let r=O(e);if(r)return r}return p[0]??void 0}function ct(t,e={}){if(!t||t.length===0)return;let r=chunk2RIHC5TZ_cjs.e(t),n={kind:"notification-batch",category:"batch",notifications:r},o=e.ctx??U(r);if(e.appendState!==false&&o&&chunkNOAERAOE_cjs.e(o.notification,n),e.broadcastSse!==false){let s=r.filter(c=>c.kind==="message_enqueued"),i=r.filter(c=>c.kind!=="message_enqueued");i.length>0&&l.broadcastNotificationBatch(i),s.length>0&&R.broadcastNotificationBatch(s);}if(!(e.mirrorExternal===false||!o?.boardAdapter.publishBoardChangeNotifications))try{let s=r.filter(i=>i.category==="board-output"||i.category==="card-store");s.length>0&&o.boardAdapter.publishBoardChangeNotifications(s);}catch{}}function V(t,e){ct(t,{ctx:e,appendState:true,broadcastSse:true,mirrorExternal:true});}async function fe(t){if(!t||t.notificationTeardown||!H||!t.notifyRef)return;let e=await H.subscribe(t.notifyRef,r=>{let n=chunkNOAERAOE_cjs.a(r);ct(n,{ctx:t,appendState:true,broadcastSse:true,mirrorExternal:false});});t.notificationTeardown=e;}async function pe(t){if(!t||t.initialized)return;let e={boardRuntimeStoreRef:t.boardRuntimeStoreRef,cardStoreRef:t.cardStoreRef,outputsStoreRef:t.outputsStoreRef,fetchedSourcesStoreRef:t.fetchedSourcesStoreRef,artifactsStoreRef:t.artifactsStoreRef,queueStoreRef:t.queueStoreRef,chatStoreRef:t.chatStoreRef,scratchStoreRef:t.scratchStoreRef},r={};t.taskExecutorRef&&(r["task-executor-ref"]=t.taskExecutorRef),t.chatHandlerFlow!==void 0&&(r["chat-handler-flow"]=t.chatHandlerFlow);let n=await t.boardOps.init({params:e,body:r});if(n.status!=="success")throw Object.assign(new Error(n.error||`init failed for ${t.label}`),{statusCode:500});if(await fe(t),!t.chatHandlerFlow&&t.chatHandlerRef&&x.describe)try{let o=await x.describe(t.chatHandlerRef);o&&o.kind!=="chat-handler"?N.warn(`[init] chat-handler describe returned kind="${o.kind}", expected "chat-handler" for ${t.label}`):o&&N.info(`[init] chat-handler validated: ${o.name} (protocol ${o.protocolVersion}) for ${t.label}`);}catch(o){N.warn(`[init] chat-handler describe failed for ${t.label}: ${o?.message||String(o)}`);}t.initialized=true;}async function ut(t){let e=[],r=await t.boardOps.status({});r.status==="success"&&r.data!=null&&chunkNOAERAOE_cjs.d(r.data)&&e.push({kind:"status",status:r.data});let n=await t.boardOps.getAllOutputsDataObjects({});if(n.status==="success"&&n.data!=null)for(let[s,i]of Object.entries(n.data))s&&e.push({kind:"data_object",key:s,payload:i});let o=await t.boardOps.getAllOutputsComputedValues({});if(o.status==="success"&&o.data!=null)for(let[s,i]of Object.entries(o.data))s&&i&&typeof i=="object"&&!Array.isArray(i)&&e.push({kind:"computed_values",cardId:s,values:i});e.length>0&&ct(e,{ctx:t,appendState:true,broadcastSse:true,mirrorExternal:false});}async function Rt(t,e){if(!t||t.cardsBootstrapped)return;let r=await t.cardStoreOps.get({}),n=r.status==="success"&&Array.isArray(r.data?.cards)?r.data.cards:[];for(let o of n)typeof o.id=="string"&&(f.set(o.id,e),await t.boardOps.upsertCard({params:{cardId:o.id}}));t.cardsBootstrapped=true;}async function G(){for(let t of p)await pe(t);}async function at(){await G();for(let t=0;t<p.length;t++)await ut(p[t]),await Rt(p[t],t),await ut(p[t]);}async function yt(t=false){t||await G();for(let e of p){let r=await e.board.processAccumulatedEvents({});if(r.status!=="success")return r}return {status:"success"}}function W(t){return p[y(t)]??null}async function Y(t){let e=W(t);if(!e)return null;let r=await e.cardStoreOps.get({params:{id:t}});if(r.status!=="success")return null;let n=Array.isArray(r.data?.cards)?r.data.cards:[];return n.length>0?n[0]:null}async function me(){let t=async r=>{if(!r)return [];let n=await r.cardStoreOps.get({});return n.status!=="success"||!Array.isArray(n.data?.cards)?[]:n.data.cards},e=[];for(let r of p)e.push(...await t(r));return e}function ht(){return p[0]??null}function ge(t){return W(t)??ht()}function L(t){let e=ge(t);if(!e)throw Object.assign(new Error(`Board context is unavailable for chat operations: ${t}`),{statusCode:404});return e.chatStorage}async function Re(t){return await L(t).isProcessing(t)}async function tt(t,e){let r=await Q.setProcessing({params:{cardId:t},body:{active:e}});if(r.status!=="success")throw Object.assign(new Error(r.error||`Failed to set chat processing for card: ${t}`),{statusCode:500})}let Q=chunkOF4FPYNI_cjs.a({append(t,e,r,n,o){return L(t).append(t,e,r,n,o)},readAll(t){return L(t).readAll(t)},readAfter(t,e){return L(t).readAfter(t,e)},clear(t){return L(t).clear(t)},setProcessing(t,e){return L(t).setProcessing(t,e)},isProcessing(t){return L(t).isProcessing(t)},getConfig(t){return L(t).getConfig(t)},setConfig(t,e){return L(t).setConfig(t,e)}},{emitNotification(t){if(t.kind==="notification-batch"){V(t.notifications);return}V([t]);}}),wt=chunkNOAERAOE_cjs.p({boardContexts:p,cardOwnerIndex:f,cardContextForCard:t=>W(t),readStatusSnapshot:()=>Se(),readDataObjectsByToken:()=>Ae(),readCardRuntimeArtifacts:()=>Ce(),readCardFromStore:t=>Y(t),readCardDefinitions:()=>me(),processAccumulatedLaneInternal:t=>yt(t),reportSourceFetched:(t,e)=>kt(t,{ref:e}),reportSourceFetchFailure:(t,e)=>Pt(t,{reason:e}),uploadCardFile:(t,e,r,n,o)=>Ct(t,e,r,n,o),chatStorePublic:Q,serverUrl:E,apiBasePath:w}),ye=wt.mcpCardStoreFacade,st=wt.createMcpFacade,he=chunkNOAERAOE_cjs.j({boardId:B,bootstrapBoard:()=>at(),sseHub:l,onChannelSubscribed:q,onChannelUnsubscribed:K,getMcpFacade:()=>st(),getMcpCardStoreFacade:()=>ye()});function we(t){return chunkNOAERAOE_cjs.m(t)}function be(){return chunkNOAERAOE_cjs.n(st())}function bt(){return chunkNOAERAOE_cjs.o({boardId:B,uploadCardFile:Ct,getMcpFacade:()=>st(),controlplane:he})}let it=chunkNOAERAOE_cjs.k({boardId:B,boardContexts:p,readChatRecords:(t,e)=>ve(t,e),getChatProcessing:t=>Re(t),chatBootstrapTailTurns:$}),Se=it.readStatusSnapshot,Ce=it.readCardRuntimeArtifacts,Ae=it.readDataObjectsByToken,dt=it.buildPublishedRuntimePayload;async function St(t,e,r){let n=r?.syncBoard!==false,o=r?.restartOnlyIfChanged===true,s=W(t);if(!s)throw Object.assign(new Error(`Card not found: ${t}`),{statusCode:404});let i=await Y(t);if(!i)throw Object.assign(new Error(`Card not found: ${t}`),{statusCode:404});let c=o?JSON.stringify(i):null,j=e(i)||i;if(o&&JSON.stringify(j)===c)return;let h=await s.cardStoreOps.set({body:j});if(h.status!=="success")throw Object.assign(new Error(h.error||`Failed to persist card: ${t}`),{statusCode:500});if(n){let M=await s.boardOps.upsertCard({params:{cardId:t,restart:true}});if(M.status!=="success")throw Object.assign(new Error(M.error||`Failed to upsert card: ${t}`),{statusCode:500})}}async function Be(t,e){await St(t,e,{syncBoard:true});}async function ke(t,e){await St(t,e,{syncBoard:false});}async function Pe(t){let e=W(t);if(!e)throw Object.assign(new Error(`Card not found: ${t}`),{statusCode:404});if(!await Y(t))throw Object.assign(new Error(`Card not found: ${t}`),{statusCode:404});let n=await e.boardOps.upsertCard({params:{cardId:t,restart:true}});if(n.status!=="success")throw Object.assign(new Error(n.error||`Failed to retrigger card: ${t}`),{statusCode:500})}async function Oe(t){let e=await Q.clear({params:{cardId:t}});if(e.status!=="success")throw Object.assign(new Error(e.error||`Failed to clear chat records for card: ${t}`),{statusCode:500});try{await tt(t,!1);}catch{}}async function Fe(t,e,r,n,o=""){let s=typeof r=="string"?r.trim():"",i=await Q.append({params:{cardId:t},body:{role:e||"system",text:s,files:n,turn:o}});if(i.status!=="success")throw Object.assign(new Error(i.error||`Failed to append chat record for card: ${t}`),{statusCode:500});return String(i.data?.id||"")}async function ve(t,e){let r=Number.isInteger(e?.tailTurns)&&e?.tailTurns>0?e?.tailTurns:void 0,n=await Q.readAll({params:{cardId:t},...r===void 0?{}:{body:{tailTurns:r}}});if(n.status!=="success")throw Object.assign(new Error(n.error||`Failed to read chat records for card: ${t}`),{statusCode:500});return Array.isArray(n.data?.records)?n.data.records:[]}let Ct=chunkNOAERAOE_cjs.l({safeCardId:t=>D(t),artifactsStores:t=>v(t),cardFileMetadataStore:()=>A(),readCardFromStore:t=>Y(t),updateCardLocalOnly:(t,e)=>ke(t,e),writeChatRecord:(t,e,r,n,o)=>Fe(t,e,r,n,o)}).uploadCardFile;async function At(t){let e=W(t);if(!e)return null;let r=await e.boardOps.getConfig({params:{key:"chat-handler-flow"}}),o=(r.status==="success"?r.data?.value:null)??e.chatHandlerFlow??null,s=e.chatHandlerRef;return o==null&&(!s||typeof s!="object")?null:{ctx:e,handlerFlow:o,handlerRef:s}}function xe(t){let e=typeof t=="string"?t.trim():"";if(e.length<ot.length*2||!e.startsWith(ot)||!e.endsWith(ot))return null;let r=e.slice(ot.length,e.length-ot.length).trim(),n=/^([A-Za-z0-9_-]+)__(.*)$/s.exec(r);return n?{assistant:n[1].trim().toLowerCase(),text:n[2].trim()}:{assistant:"echo",text:r}}async function Te(t,e,r=false,n="",o=""){try{let s=await At(t);if(!s){try{await tt(t,!1);}catch{}return}let{ctx:i,handlerFlow:c,handlerRef:j}=s;if(!r)try{await tt(t,!0);}catch{}let h={boardId:B,cardId:String(t),lastChatEntryId:e,...n?{turnId:n}:{},...typeof o=="string"&&o.trim()?{probe:o.trim()}:{},...T,...E?{serverUrl:E}:{}},M=c!=null?{meta:"chat-handler-flow",howToRun:"built-in",whatToRun:{kind:"built-in",value:de}}:j;chunkBQUQTOPB_cjs.a(i.boardAdapter)?await u(i,"chat-agent").enqueueRequest({boardId:B,ref:M,args:c!=null?{...h,__chatHandlerFlow:c}:h}):u(i,"chat-agent").enqueueRequest({boardId:B,ref:M,args:c!=null?{...h,__chatHandlerFlow:c}:h}),await Promise.resolve(i.boardAdapter.requestProcessAccumulated?.());}catch(s){try{await tt(t,!1);}catch{}N.warn(`[chat-handler] queue failed for card "${t}": ${s instanceof Error?s.message:String(s)}`);}}async function Ne(t,e,r){if(e.howToRun==="built-in"&&chunkBQUQTOPB_cjs.b(e)===de){let n=_,o=r.__chatHandlerFlow,s={...r};return delete s.__chatHandlerFlow,n?n.run(o,s,{boardId:B,cardId:String(s.cardId||""),label:t.label,logger:N,serverUrl:E,executionExtra:T}):{dispatched:false,error:"chat-handler-flow configured but no chatFlowRunner was provided"}}return x.invoke(e,r)}async function Ee(t,e=false){e||await G();let r=typeof t.args?.cardId=="string"?t.args.cardId:"",n=r?W(r):ht();if(!n)throw new Error(r?`Board context is unavailable for chat-agent request: ${r}`:"Board context is unavailable for chat-agent request");let o=await Ne(n,t.ref,t.args);if(!o.dispatched){if(r)try{await tt(r,!1);}catch{}throw new Error(o.error||`chat-agent dispatch failed for card "${r||"unknown"}"`)}}async function je(t,e,r){if(e==="chat-send"){let o=r&&typeof r["turn-id"]=="string"?r["turn-id"]:r&&typeof r.turnId=="string"?r.turnId:r&&typeof r.turn=="string"?r.turn:"";if(r&&"files"in r&&r.files!==void 0&&r.files!==null)throw Object.assign(new Error('chat-send does not accept a "files" parameter; upload attachments via manage.add-chat-attachment first'),{statusCode:400});let s=bt(),i=xe(r?.text),c=i?i.text:r?.text,j=await chunk272IYUKT_cjs.a("manage.add-chat-entry-and-any-attachments",{board_id:B,card_id:t,role:"user",text:c,turn_id:o,files:[]},s);if(j?.status!=="success")throw new Error(chunk272IYUKT_cjs.b(j,`chat-send append failed for card ${t}`));let h=j?.data?.id;if(typeof h!="string"||!h)throw new Error(`chat-send did not return an append id for card ${t}`);let M=await chunk272IYUKT_cjs.a("setstate.chat-processing-started",{board_id:B,card_id:t},s);if(M?.status!=="success")throw new Error(chunk272IYUKT_cjs.b(M,`chat-send processing update failed for card ${t}`));Te(t,h,true,o,i?.assistant||"");return}await Be(t,o=>{let s=new Date().toISOString(),i=o.card_data&&typeof o.card_data=="object"?o.card_data:{};if(o.card_data=i,e==="file-upload"){let c=A().normalizeIncoming(r?.files,s);return c.length>0&&A().merge(i,c),o}if(e==="action"){let c=r&&typeof r.buttonId=="string"?r.buttonId:"";if(!c)return o;i.lastAction={buttonId:c,at:s},i.lastActionText=`${c} @ ${s}`;}return o});}function et(t,e,r){let n=JSON.stringify(r),o=typeof Buffer<"u"?Buffer.byteLength(n):new TextEncoder().encode(n).length;t.writeHead(e,{...b,"Content-Type":"application/json; charset=utf-8","Content-Length":o}),t.end(n);}async function Bt(t,e,r){let n=await Y(t);if(!n)throw Object.assign(new Error("Card not found"),{statusCode:404});let o=A().resolve(n.card_data,e,r);if(!o.ok&&o.reason==="stale_reference")throw Object.assign(new Error("File reference is stale. Refresh and try again."),{statusCode:409});if(!o.ok)throw Object.assign(new Error("File not found"),{statusCode:404});let s=o.file,i=D(t),c=v(t),j=String(s.stored_name||""),h=`${i}/${j}`,M=c.files?await c.files.getBytes(h):null;if(!M)throw Object.assign(new Error("File not found"),{statusCode:404});return {fileRecord:s,bytes:M}}async function Me(t,e,r,n){let{fileRecord:o,bytes:s}=await Bt(e,r,n),i=String(o.name||o.stored_name||"download.bin"),c=String(o.mime_type||"application/octet-stream");t.writeHead(200,{"Content-Type":c,"Content-Disposition":`attachment; filename="${i}"`,"Content-Length":s.length}),t.end(s);}function _e(t){let e=String(t||"").toLowerCase();return e.startsWith("text/")||e.includes("json")||e.includes("xml")||e.includes("javascript")||e.includes("typescript")||e.includes("yaml")||e.includes("csv")}function De(t,e,r){let n=t.split(/\r?\n/);return (e==="head"?n.slice(0,r):n.slice(-r)).join(`
2
+ `)}async function rt(t){let e=[];for await(let n of t)e.push(n);let r=typeof Buffer<"u"?Buffer.concat(e).toString("utf-8").trim():new TextDecoder().decode(chunkBQUQTOPB_cjs.d(e)).trim();return r?JSON.parse(r):{}}async function kt(t,e){let r=typeof e.ref=="string"?e.ref.trim():"";if(!r)return {status:"fail",error:"board-worker success callback requires body.ref"};let n=p[0];return n?n.boardOps.sourceDataFetched({params:{token:t,ref:r}}):{status:"fail",error:"no board context"}}async function Pt(t,e){let r=typeof e.reason=="string"&&e.reason.trim()?e.reason:"unknown",n=p[0];return n?n.boardOps.sourceDataFetchFailure({params:{token:t,reason:r}}):{status:"fail",error:"no board context"}}let Ie=chunkLFVMX23W_cjs.b({sseHub:l,queueSseHub:R,corsHeaders:b,json:et,buildPublishedRuntimePayload:()=>dt(),onSseClientConnected:S,onChannelSubscribed:q,onChannelUnsubscribed:K,apiBasePath:w,readJsonBody:t=>rt(t),initBoardAndSetup:()=>G(),bootstrapBoard:()=>at(),boardContexts:p,publishPersistedStateSnapshot:t=>ut(t),upsertCardsFromSource:(t,e)=>Rt(t,e)}).handleWatchersRoutes,qe=chunk7FGPOGRV_cjs.a({apiBasePath:w,json:et,readJsonBody:t=>rt(t),bootstrapBoard:()=>at(),createMcpFacade:()=>st(),createMcpToolRegistry:t=>we(t),resolveCardFileDownloadPayload:(t,e,r)=>Bt(t,e,r),isLikelyTextMimeType:t=>_e(t),sliceTextByLines:(t,e,r)=>De(t,e,r)}).handleAgentfaceApi,$e=chunkNM6O35RY_cjs.a({apiBasePath:w,json:et,readJsonBody:t=>rt(t),initBoardAndSetup:()=>G(),createMcpWebhookToolRegistry:()=>be()}).handleWebhooksApi,He=ce({apiBasePath:w,json:et,readJsonBody:t=>rt(t),bootstrapBoard:()=>at(),createMcpControlplaneToolRegistry:()=>bt(),retriggerCard:t=>Pe(t),applyCardAction:(t,e,r)=>je(t,e,r),resolveChatHandlerTarget:t=>At(t),sendCardFileDownloadResponse:(t,e,r,n)=>Me(t,e,r,n)}).handleRuntimeApi,Le=ue({apiBasePath:w,emitNotifications:t=>V(t),readJsonBody:t=>rt(t),json:(t,e,r)=>et(t,e,r)}).handleNotifyRoute;async function Ue(t,e,r){return !!(await qe(t,e,r)||await $e(t,e,r)||await Ie(t,e,r)||await Le(t,e,r)||await He(t,e,r))}return {get apiBasePath(){return w},get corsHeaders(){return b},get queueLaneTuning(){return I},handleRuntimeApi:Ue,emitNotification(t){if(t.kind==="notification-batch"){V(t.notifications);return}V([t]);},buildPublishedRuntimePayload:dt,__drainProcessAccumulatedLane:yt,handleChatAgentRequest:Ee,clearChatRecords:Oe,reportSourceFetched(t,e){return kt(t,{ref:e})},reportSourceFetchFailure(t,e){return Pt(t,{reason:e})},get cardStore(){return p[0]?.publicCardStore??{get(){return Promise.resolve({status:"fail",error:"no board context"})},set(){return Promise.resolve({status:"fail",error:"no board context"})}}}}}function _r(g){let w=String(g.apiBasePath||"/api/boards").replace(/\/$/,""),b={...le,...g.corsHeaders||{}},I=g.serverMetaStore,B=g.boardRuntimeFactory,$=new Map,N="boards-config.json";function x(){let l=I.getText(N);if(!l)return {boards:[{id:"default",label:"Default Board"}]};try{return JSON.parse(l)}catch{return {boards:[{id:"default",label:"Default Board"}]}}}function _(l){I.putText(N,JSON.stringify(l,null,2));}function H(l){let R=String(l||"").replace(/[^a-zA-Z0-9_-]/g,"_").replace(/^_+|_+$/g,"");return R.length>0&&R.length<=64?R:null}function E(l){if($.has(l))return $.get(l);let F=x().boards.find(f=>f.id===l)||{},p=B(l,F);return $.set(l,p),p}function T(l,R,F){let p=JSON.stringify(F),f=typeof Buffer<"u"?Buffer.byteLength(p):new TextEncoder().encode(p).length;l.writeHead(R,{...b,"Content-Type":"application/json; charset=utf-8","Content-Length":f}),l.end(p);}async function S(l,R,F){let p=l.method||"GET",f=F.pathname;if(p==="GET"&&f===w)return T(R,200,{ok:true,boards:x().boards}),true;if(p==="POST"&&f===w){let y=[];for await(let O of l)y.push(O);let k=typeof Buffer<"u"?Buffer.concat(y).toString("utf-8").trim():new TextDecoder().decode(chunkBQUQTOPB_cjs.d(y)).trim(),u={};try{u=k?JSON.parse(k):{};}catch{u={};}let P=H(u.id);if(!P)return T(R,400,{error:"board id must be 1-64 alphanumeric/dash/underscore characters"}),true;let v=x();if(v.boards.some(O=>O.id===P))return T(R,409,{error:`Board "${P}" is already registered`}),true;let A=typeof u.label=="string"&&u.label.trim()?u.label.trim():P,D={id:P,label:A};for(let[O,U]of Object.entries(u))O==="id"||O==="label"||U!=null&&(D[O]=U);return v.boards.push(D),_(v),T(R,200,{ok:true,board:D}),true}return false}async function z(l,R,F){let f=F.pathname.match(new RegExp(`^${chunkBQUQTOPB_cjs.c(w)}/([^/]+)(/|$)`));if(!f)return false;let y=H(decodeURIComponent(f[1]));return y?x().boards.some(P=>P.id===y)?!!await E(y).handleRuntimeApi(l,R,F):(T(R,404,{error:`Board "${y}" not registered. POST ${w} with {id} to register it first.`}),true):(T(R,400,{error:"Invalid board id"}),true)}async function q(l,R,F){return !!(await S(l,R,F)||await z(l,R,F))}function K(l){if(!x().boards.some(F=>F.id===l))throw Object.assign(new Error(`Board "${l}" not registered`),{statusCode:404});return {service:E(l)}}return {get apiBasePath(){return w},get corsHeaders(){return b},handleApi:q,requireBoardService:K}}exports.a=Mr;exports.b=_r;//# sourceMappingURL=chunk-ZWXZ5DBX.cjs.map
3
+ //# sourceMappingURL=chunk-ZWXZ5DBX.cjs.map
@@ -1,2 +1,2 @@
1
- 'use strict';var chunk6EJRZHFP_cjs=require('./chunk-6EJRZHFP.cjs'),chunkHVLWVMG6_cjs=require('./chunk-HVLWVMG6.cjs'),chunkWRMOGPRG_cjs=require('./chunk-WRMOGPRG.cjs');require('./chunk-BAG7MHZP.cjs'),require('./chunk-7JVHYHT2.cjs'),require('./chunk-VQCIOKJV.cjs'),require('./chunk-G4XXRHL2.cjs'),require('./chunk-LODXIALE.cjs'),require('./chunk-QBEQL4TL.cjs'),require('./chunk-QEHKMLHA.cjs'),require('./chunk-UJ7ZTV4J.cjs'),require('./chunk-5XLFPPTY.cjs'),require('./chunk-2RIHC5TZ.cjs'),require('./chunk-GNFE24S7.cjs');Object.defineProperty(exports,"createAzureBlobStorage",{enumerable:true,get:function(){return chunk6EJRZHFP_cjs.d}});Object.defineProperty(exports,"createAzureQueueStorage",{enumerable:true,get:function(){return chunk6EJRZHFP_cjs.e}});Object.defineProperty(exports,"createCosmosAtomicRelayLock",{enumerable:true,get:function(){return chunk6EJRZHFP_cjs.c}});Object.defineProperty(exports,"createCosmosJournalStorage",{enumerable:true,get:function(){return chunk6EJRZHFP_cjs.b}});Object.defineProperty(exports,"createCosmosKvStorage",{enumerable:true,get:function(){return chunk6EJRZHFP_cjs.a}});Object.defineProperty(exports,"createAsyncBoardLiveCardsPublic",{enumerable:true,get:function(){return chunkHVLWVMG6_cjs.i}});Object.defineProperty(exports,"createAsyncCardStorageAdapter",{enumerable:true,get:function(){return chunkHVLWVMG6_cjs.c}});Object.defineProperty(exports,"createAsyncCardStore",{enumerable:true,get:function(){return chunkHVLWVMG6_cjs.d}});Object.defineProperty(exports,"createAsyncCardStorePublic",{enumerable:true,get:function(){return chunkHVLWVMG6_cjs.g}});Object.defineProperty(exports,"createAsyncJsonStorage",{enumerable:true,get:function(){return chunkHVLWVMG6_cjs.b}});Object.defineProperty(exports,"createAsyncQueueStoragePublic",{enumerable:true,get:function(){return chunkHVLWVMG6_cjs.h}});Object.defineProperty(exports,"createAsyncStateSnapshotAdapter",{enumerable:true,get:function(){return chunkHVLWVMG6_cjs.e}});Object.defineProperty(exports,"createAsyncStorageProvider",{enumerable:true,get:function(){return chunkHVLWVMG6_cjs.f}});Object.defineProperty(exports,"withAsyncRelayLock",{enumerable:true,get:function(){return chunkHVLWVMG6_cjs.a}});Object.defineProperty(exports,"createAsyncBoardConfigStore",{enumerable:true,get:function(){return chunkWRMOGPRG_cjs.b}});Object.defineProperty(exports,"createAsyncBoardWorkerStore",{enumerable:true,get:function(){return chunkWRMOGPRG_cjs.a}});Object.defineProperty(exports,"createHostedAsyncBoardPlatformAdapter",{enumerable:true,get:function(){return chunkWRMOGPRG_cjs.c}});//# sourceMappingURL=cloud-storage.cjs.map
1
+ 'use strict';var chunk6EJRZHFP_cjs=require('./chunk-6EJRZHFP.cjs'),chunk5RUSICUC_cjs=require('./chunk-5RUSICUC.cjs'),chunkWRMOGPRG_cjs=require('./chunk-WRMOGPRG.cjs');require('./chunk-WE7JOO4T.cjs'),require('./chunk-AW3COGCI.cjs'),require('./chunk-SIPLKLWU.cjs'),require('./chunk-J7KE7SPA.cjs'),require('./chunk-7JVHYHT2.cjs'),require('./chunk-VQCIOKJV.cjs'),require('./chunk-VI36DRWG.cjs'),require('./chunk-7Y47QXMX.cjs'),require('./chunk-QBEQL4TL.cjs'),require('./chunk-QEHKMLHA.cjs'),require('./chunk-UJ7ZTV4J.cjs'),require('./chunk-2RIHC5TZ.cjs'),require('./chunk-GNFE24S7.cjs');Object.defineProperty(exports,"createAzureBlobStorage",{enumerable:true,get:function(){return chunk6EJRZHFP_cjs.d}});Object.defineProperty(exports,"createAzureQueueStorage",{enumerable:true,get:function(){return chunk6EJRZHFP_cjs.e}});Object.defineProperty(exports,"createCosmosAtomicRelayLock",{enumerable:true,get:function(){return chunk6EJRZHFP_cjs.c}});Object.defineProperty(exports,"createCosmosJournalStorage",{enumerable:true,get:function(){return chunk6EJRZHFP_cjs.b}});Object.defineProperty(exports,"createCosmosKvStorage",{enumerable:true,get:function(){return chunk6EJRZHFP_cjs.a}});Object.defineProperty(exports,"createAsyncBoardLiveCardsPublic",{enumerable:true,get:function(){return chunk5RUSICUC_cjs.i}});Object.defineProperty(exports,"createAsyncCardStorageAdapter",{enumerable:true,get:function(){return chunk5RUSICUC_cjs.c}});Object.defineProperty(exports,"createAsyncCardStore",{enumerable:true,get:function(){return chunk5RUSICUC_cjs.d}});Object.defineProperty(exports,"createAsyncCardStorePublic",{enumerable:true,get:function(){return chunk5RUSICUC_cjs.g}});Object.defineProperty(exports,"createAsyncJsonStorage",{enumerable:true,get:function(){return chunk5RUSICUC_cjs.b}});Object.defineProperty(exports,"createAsyncQueueStoragePublic",{enumerable:true,get:function(){return chunk5RUSICUC_cjs.h}});Object.defineProperty(exports,"createAsyncStateSnapshotAdapter",{enumerable:true,get:function(){return chunk5RUSICUC_cjs.e}});Object.defineProperty(exports,"createAsyncStorageProvider",{enumerable:true,get:function(){return chunk5RUSICUC_cjs.f}});Object.defineProperty(exports,"withAsyncRelayLock",{enumerable:true,get:function(){return chunk5RUSICUC_cjs.a}});Object.defineProperty(exports,"createAsyncBoardConfigStore",{enumerable:true,get:function(){return chunkWRMOGPRG_cjs.b}});Object.defineProperty(exports,"createAsyncBoardWorkerStore",{enumerable:true,get:function(){return chunkWRMOGPRG_cjs.a}});Object.defineProperty(exports,"createHostedAsyncBoardPlatformAdapter",{enumerable:true,get:function(){return chunkWRMOGPRG_cjs.c}});//# sourceMappingURL=cloud-storage.cjs.map
2
2
  //# sourceMappingURL=cloud-storage.cjs.map
@@ -1,2 +1,2 @@
1
- export{d as createAzureBlobStorage,e as createAzureQueueStorage,c as createCosmosAtomicRelayLock,b as createCosmosJournalStorage,a as createCosmosKvStorage}from'./chunk-QLB6PKOT.js';export{i as createAsyncBoardLiveCardsPublic,c as createAsyncCardStorageAdapter,d as createAsyncCardStore,g as createAsyncCardStorePublic,b as createAsyncJsonStorage,h as createAsyncQueueStoragePublic,e as createAsyncStateSnapshotAdapter,f as createAsyncStorageProvider,a as withAsyncRelayLock}from'./chunk-5VTIOM2U.js';export{b as createAsyncBoardConfigStore,a as createAsyncBoardWorkerStore,c as createHostedAsyncBoardPlatformAdapter}from'./chunk-6MD6FVE3.js';import'./chunk-EZOXABJ2.js';import'./chunk-ANKA7HEJ.js';import'./chunk-44L64VQ2.js';import'./chunk-VGT3TRQG.js';import'./chunk-WDPOGXTY.js';import'./chunk-ATOQP3BD.js';import'./chunk-YT76JNKE.js';import'./chunk-MNEOJWPS.js';import'./chunk-7QNEV5S3.js';import'./chunk-UGB7PC4P.js';import'./chunk-FW4363Y4.js';//# sourceMappingURL=cloud-storage.js.map
1
+ export{d as createAzureBlobStorage,e as createAzureQueueStorage,c as createCosmosAtomicRelayLock,b as createCosmosJournalStorage,a as createCosmosKvStorage}from'./chunk-QLB6PKOT.js';export{i as createAsyncBoardLiveCardsPublic,c as createAsyncCardStorageAdapter,d as createAsyncCardStore,g as createAsyncCardStorePublic,b as createAsyncJsonStorage,h as createAsyncQueueStoragePublic,e as createAsyncStateSnapshotAdapter,f as createAsyncStorageProvider,a as withAsyncRelayLock}from'./chunk-QKWQ4HRE.js';export{b as createAsyncBoardConfigStore,a as createAsyncBoardWorkerStore,c as createHostedAsyncBoardPlatformAdapter}from'./chunk-6MD6FVE3.js';import'./chunk-HOSD6UHA.js';import'./chunk-FULAMLUU.js';import'./chunk-EOVTMJYZ.js';import'./chunk-WGYS2L4V.js';import'./chunk-ANKA7HEJ.js';import'./chunk-44L64VQ2.js';import'./chunk-Q444D72R.js';import'./chunk-R7SQQSDX.js';import'./chunk-ATOQP3BD.js';import'./chunk-YT76JNKE.js';import'./chunk-MNEOJWPS.js';import'./chunk-UGB7PC4P.js';import'./chunk-FW4363Y4.js';//# sourceMappingURL=cloud-storage.js.map
2
2
  //# sourceMappingURL=cloud-storage.js.map
@@ -1,2 +1,2 @@
1
- 'use strict';var chunkO65MSWUE_cjs=require('../chunk-O65MSWUE.cjs'),chunkG4XXRHL2_cjs=require('../chunk-G4XXRHL2.cjs');require('../chunk-LODXIALE.cjs'),require('../chunk-QBEQL4TL.cjs'),require('../chunk-QEHKMLHA.cjs'),require('../chunk-UJ7ZTV4J.cjs'),require('../chunk-GNFE24S7.cjs');Object.defineProperty(exports,"createCallbackHandler",{enumerable:true,get:function(){return chunkO65MSWUE_cjs.i}});Object.defineProperty(exports,"createFireAndForgetHandler",{enumerable:true,get:function(){return chunkO65MSWUE_cjs.j}});Object.defineProperty(exports,"createNoopHandler",{enumerable:true,get:function(){return chunkO65MSWUE_cjs.o}});Object.defineProperty(exports,"createProcessHandler",{enumerable:true,get:function(){return chunkO65MSWUE_cjs.l}});Object.defineProperty(exports,"createScriptHandler",{enumerable:true,get:function(){return chunkO65MSWUE_cjs.m}});Object.defineProperty(exports,"createShellHandler",{enumerable:true,get:function(){return chunkO65MSWUE_cjs.k}});Object.defineProperty(exports,"createWebhookHandler",{enumerable:true,get:function(){return chunkO65MSWUE_cjs.n}});Object.defineProperty(exports,"getDownstream",{enumerable:true,get:function(){return chunkO65MSWUE_cjs.e}});Object.defineProperty(exports,"getUnreachableNodes",{enumerable:true,get:function(){return chunkO65MSWUE_cjs.c}});Object.defineProperty(exports,"getUnreachableTokens",{enumerable:true,get:function(){return chunkO65MSWUE_cjs.b}});Object.defineProperty(exports,"getUpstream",{enumerable:true,get:function(){return chunkO65MSWUE_cjs.d}});Object.defineProperty(exports,"inspect",{enumerable:true,get:function(){return chunkO65MSWUE_cjs.a}});Object.defineProperty(exports,"liveCardsToReactiveGraph",{enumerable:true,get:function(){return chunkO65MSWUE_cjs.p}});Object.defineProperty(exports,"mutateGraph",{enumerable:true,get:function(){return chunkO65MSWUE_cjs.h}});Object.defineProperty(exports,"validateLiveGraph",{enumerable:true,get:function(){return chunkO65MSWUE_cjs.f}});Object.defineProperty(exports,"validateReactiveGraph",{enumerable:true,get:function(){return chunkO65MSWUE_cjs.g}});Object.defineProperty(exports,"MemoryJournal",{enumerable:true,get:function(){return chunkG4XXRHL2_cjs.s}});Object.defineProperty(exports,"addNode",{enumerable:true,get:function(){return chunkG4XXRHL2_cjs.d}});Object.defineProperty(exports,"addProvides",{enumerable:true,get:function(){return chunkG4XXRHL2_cjs.h}});Object.defineProperty(exports,"addRequires",{enumerable:true,get:function(){return chunkG4XXRHL2_cjs.f}});Object.defineProperty(exports,"applyEvent",{enumerable:true,get:function(){return chunkG4XXRHL2_cjs.b}});Object.defineProperty(exports,"applyEvents",{enumerable:true,get:function(){return chunkG4XXRHL2_cjs.c}});Object.defineProperty(exports,"computeDataHash",{enumerable:true,get:function(){return chunkG4XXRHL2_cjs.t}});Object.defineProperty(exports,"createLiveGraph",{enumerable:true,get:function(){return chunkG4XXRHL2_cjs.a}});Object.defineProperty(exports,"createReactiveGraph",{enumerable:true,get:function(){return chunkG4XXRHL2_cjs.u}});Object.defineProperty(exports,"disableNode",{enumerable:true,get:function(){return chunkG4XXRHL2_cjs.m}});Object.defineProperty(exports,"drainTokens",{enumerable:true,get:function(){return chunkG4XXRHL2_cjs.k}});Object.defineProperty(exports,"enableNode",{enumerable:true,get:function(){return chunkG4XXRHL2_cjs.n}});Object.defineProperty(exports,"getNode",{enumerable:true,get:function(){return chunkG4XXRHL2_cjs.o}});Object.defineProperty(exports,"injectTokens",{enumerable:true,get:function(){return chunkG4XXRHL2_cjs.j}});Object.defineProperty(exports,"removeNode",{enumerable:true,get:function(){return chunkG4XXRHL2_cjs.e}});Object.defineProperty(exports,"removeProvides",{enumerable:true,get:function(){return chunkG4XXRHL2_cjs.i}});Object.defineProperty(exports,"removeRequires",{enumerable:true,get:function(){return chunkG4XXRHL2_cjs.g}});Object.defineProperty(exports,"resetNode",{enumerable:true,get:function(){return chunkG4XXRHL2_cjs.l}});Object.defineProperty(exports,"restore",{enumerable:true,get:function(){return chunkG4XXRHL2_cjs.q}});Object.defineProperty(exports,"schedule",{enumerable:true,get:function(){return chunkG4XXRHL2_cjs.r}});Object.defineProperty(exports,"snapshot",{enumerable:true,get:function(){return chunkG4XXRHL2_cjs.p}});//# sourceMappingURL=index.cjs.map
1
+ 'use strict';var chunk52XPRCZC_cjs=require('../chunk-52XPRCZC.cjs'),chunkAW3COGCI_cjs=require('../chunk-AW3COGCI.cjs');require('../chunk-SIPLKLWU.cjs');var chunkVI36DRWG_cjs=require('../chunk-VI36DRWG.cjs');require('../chunk-7Y47QXMX.cjs'),require('../chunk-QBEQL4TL.cjs'),require('../chunk-QEHKMLHA.cjs'),require('../chunk-UJ7ZTV4J.cjs'),require('../chunk-GNFE24S7.cjs');Object.defineProperty(exports,"createCallbackHandler",{enumerable:true,get:function(){return chunk52XPRCZC_cjs.i}});Object.defineProperty(exports,"createFireAndForgetHandler",{enumerable:true,get:function(){return chunk52XPRCZC_cjs.j}});Object.defineProperty(exports,"createNoopHandler",{enumerable:true,get:function(){return chunk52XPRCZC_cjs.o}});Object.defineProperty(exports,"createProcessHandler",{enumerable:true,get:function(){return chunk52XPRCZC_cjs.l}});Object.defineProperty(exports,"createScriptHandler",{enumerable:true,get:function(){return chunk52XPRCZC_cjs.m}});Object.defineProperty(exports,"createShellHandler",{enumerable:true,get:function(){return chunk52XPRCZC_cjs.k}});Object.defineProperty(exports,"createWebhookHandler",{enumerable:true,get:function(){return chunk52XPRCZC_cjs.n}});Object.defineProperty(exports,"getDownstream",{enumerable:true,get:function(){return chunk52XPRCZC_cjs.e}});Object.defineProperty(exports,"getUnreachableNodes",{enumerable:true,get:function(){return chunk52XPRCZC_cjs.c}});Object.defineProperty(exports,"getUnreachableTokens",{enumerable:true,get:function(){return chunk52XPRCZC_cjs.b}});Object.defineProperty(exports,"getUpstream",{enumerable:true,get:function(){return chunk52XPRCZC_cjs.d}});Object.defineProperty(exports,"inspect",{enumerable:true,get:function(){return chunk52XPRCZC_cjs.a}});Object.defineProperty(exports,"liveCardsToReactiveGraph",{enumerable:true,get:function(){return chunk52XPRCZC_cjs.p}});Object.defineProperty(exports,"mutateGraph",{enumerable:true,get:function(){return chunk52XPRCZC_cjs.h}});Object.defineProperty(exports,"validateLiveGraph",{enumerable:true,get:function(){return chunk52XPRCZC_cjs.f}});Object.defineProperty(exports,"validateReactiveGraph",{enumerable:true,get:function(){return chunk52XPRCZC_cjs.g}});Object.defineProperty(exports,"MemoryJournal",{enumerable:true,get:function(){return chunkAW3COGCI_cjs.r}});Object.defineProperty(exports,"addNode",{enumerable:true,get:function(){return chunkAW3COGCI_cjs.d}});Object.defineProperty(exports,"addProvides",{enumerable:true,get:function(){return chunkAW3COGCI_cjs.h}});Object.defineProperty(exports,"addRequires",{enumerable:true,get:function(){return chunkAW3COGCI_cjs.f}});Object.defineProperty(exports,"applyEvent",{enumerable:true,get:function(){return chunkAW3COGCI_cjs.b}});Object.defineProperty(exports,"applyEvents",{enumerable:true,get:function(){return chunkAW3COGCI_cjs.c}});Object.defineProperty(exports,"computeDataHash",{enumerable:true,get:function(){return chunkAW3COGCI_cjs.s}});Object.defineProperty(exports,"createLiveGraph",{enumerable:true,get:function(){return chunkAW3COGCI_cjs.a}});Object.defineProperty(exports,"createReactiveGraph",{enumerable:true,get:function(){return chunkAW3COGCI_cjs.t}});Object.defineProperty(exports,"disableNode",{enumerable:true,get:function(){return chunkAW3COGCI_cjs.m}});Object.defineProperty(exports,"drainTokens",{enumerable:true,get:function(){return chunkAW3COGCI_cjs.k}});Object.defineProperty(exports,"enableNode",{enumerable:true,get:function(){return chunkAW3COGCI_cjs.n}});Object.defineProperty(exports,"getNode",{enumerable:true,get:function(){return chunkAW3COGCI_cjs.o}});Object.defineProperty(exports,"injectTokens",{enumerable:true,get:function(){return chunkAW3COGCI_cjs.j}});Object.defineProperty(exports,"removeNode",{enumerable:true,get:function(){return chunkAW3COGCI_cjs.e}});Object.defineProperty(exports,"removeProvides",{enumerable:true,get:function(){return chunkAW3COGCI_cjs.i}});Object.defineProperty(exports,"removeRequires",{enumerable:true,get:function(){return chunkAW3COGCI_cjs.g}});Object.defineProperty(exports,"resetNode",{enumerable:true,get:function(){return chunkAW3COGCI_cjs.l}});Object.defineProperty(exports,"restore",{enumerable:true,get:function(){return chunkAW3COGCI_cjs.q}});Object.defineProperty(exports,"snapshot",{enumerable:true,get:function(){return chunkAW3COGCI_cjs.p}});Object.defineProperty(exports,"schedule",{enumerable:true,get:function(){return chunkVI36DRWG_cjs.a}});//# sourceMappingURL=index.cjs.map
2
2
  //# sourceMappingURL=index.cjs.map
@@ -1,2 +1,2 @@
1
- export{i as createCallbackHandler,j as createFireAndForgetHandler,o as createNoopHandler,l as createProcessHandler,m as createScriptHandler,k as createShellHandler,n as createWebhookHandler,e as getDownstream,c as getUnreachableNodes,b as getUnreachableTokens,d as getUpstream,a as inspect,p as liveCardsToReactiveGraph,h as mutateGraph,f as validateLiveGraph,g as validateReactiveGraph}from'../chunk-MEL5LKF7.js';export{s as MemoryJournal,d as addNode,h as addProvides,f as addRequires,b as applyEvent,c as applyEvents,t as computeDataHash,a as createLiveGraph,u as createReactiveGraph,m as disableNode,k as drainTokens,n as enableNode,o as getNode,j as injectTokens,e as removeNode,i as removeProvides,g as removeRequires,l as resetNode,q as restore,r as schedule,p as snapshot}from'../chunk-VGT3TRQG.js';import'../chunk-WDPOGXTY.js';import'../chunk-ATOQP3BD.js';import'../chunk-YT76JNKE.js';import'../chunk-MNEOJWPS.js';import'../chunk-FW4363Y4.js';//# sourceMappingURL=index.js.map
1
+ export{i as createCallbackHandler,j as createFireAndForgetHandler,o as createNoopHandler,l as createProcessHandler,m as createScriptHandler,k as createShellHandler,n as createWebhookHandler,e as getDownstream,c as getUnreachableNodes,b as getUnreachableTokens,d as getUpstream,a as inspect,p as liveCardsToReactiveGraph,h as mutateGraph,f as validateLiveGraph,g as validateReactiveGraph}from'../chunk-23PEDGFN.js';export{r as MemoryJournal,d as addNode,h as addProvides,f as addRequires,b as applyEvent,c as applyEvents,s as computeDataHash,a as createLiveGraph,t as createReactiveGraph,m as disableNode,k as drainTokens,n as enableNode,o as getNode,j as injectTokens,e as removeNode,i as removeProvides,g as removeRequires,l as resetNode,q as restore,p as snapshot}from'../chunk-FULAMLUU.js';import'../chunk-EOVTMJYZ.js';export{a as schedule}from'../chunk-Q444D72R.js';import'../chunk-R7SQQSDX.js';import'../chunk-ATOQP3BD.js';import'../chunk-YT76JNKE.js';import'../chunk-MNEOJWPS.js';import'../chunk-FW4363Y4.js';//# sourceMappingURL=index.js.map
2
2
  //# sourceMappingURL=index.js.map
@@ -1,2 +1,2 @@
1
- 'use strict';var chunk5EA2ESS4_cjs=require('../chunk-5EA2ESS4.cjs'),chunkLODXIALE_cjs=require('../chunk-LODXIALE.cjs');require('../chunk-UJ7ZTV4J.cjs'),require('../chunk-GNFE24S7.cjs');Object.defineProperty(exports,"apply",{enumerable:true,get:function(){return chunk5EA2ESS4_cjs.h}});Object.defineProperty(exports,"applyAll",{enumerable:true,get:function(){return chunk5EA2ESS4_cjs.i}});Object.defineProperty(exports,"detectStuckState",{enumerable:true,get:function(){return chunk5EA2ESS4_cjs.e}});Object.defineProperty(exports,"exportGraphConfig",{enumerable:true,get:function(){return chunk5EA2ESS4_cjs.o}});Object.defineProperty(exports,"exportGraphConfigToFile",{enumerable:true,get:function(){return chunk5EA2ESS4_cjs.p}});Object.defineProperty(exports,"flowToMermaid",{enumerable:true,get:function(){return chunk5EA2ESS4_cjs.l}});Object.defineProperty(exports,"getCandidateTasks",{enumerable:true,get:function(){return chunk5EA2ESS4_cjs.g}});Object.defineProperty(exports,"getNonConflictingTasks",{enumerable:true,get:function(){return chunk5EA2ESS4_cjs.b}});Object.defineProperty(exports,"graphToMermaid",{enumerable:true,get:function(){return chunk5EA2ESS4_cjs.k}});Object.defineProperty(exports,"isExecutionComplete",{enumerable:true,get:function(){return chunk5EA2ESS4_cjs.d}});Object.defineProperty(exports,"loadGraphConfig",{enumerable:true,get:function(){return chunk5EA2ESS4_cjs.n}});Object.defineProperty(exports,"next",{enumerable:true,get:function(){return chunk5EA2ESS4_cjs.f}});Object.defineProperty(exports,"planExecution",{enumerable:true,get:function(){return chunk5EA2ESS4_cjs.j}});Object.defineProperty(exports,"selectBestAlternative",{enumerable:true,get:function(){return chunk5EA2ESS4_cjs.a}});Object.defineProperty(exports,"selectRandomTasks",{enumerable:true,get:function(){return chunk5EA2ESS4_cjs.c}});Object.defineProperty(exports,"validateGraph",{enumerable:true,get:function(){return chunk5EA2ESS4_cjs.q}});Object.defineProperty(exports,"validateGraphConfig",{enumerable:true,get:function(){return chunk5EA2ESS4_cjs.m}});Object.defineProperty(exports,"validateGraphSchema",{enumerable:true,get:function(){return chunk5EA2ESS4_cjs.r}});Object.defineProperty(exports,"COMPLETION_STRATEGIES",{enumerable:true,get:function(){return chunkLODXIALE_cjs.c}});Object.defineProperty(exports,"CONFLICT_STRATEGIES",{enumerable:true,get:function(){return chunkLODXIALE_cjs.e}});Object.defineProperty(exports,"DEFAULTS",{enumerable:true,get:function(){return chunkLODXIALE_cjs.f}});Object.defineProperty(exports,"EXECUTION_MODES",{enumerable:true,get:function(){return chunkLODXIALE_cjs.d}});Object.defineProperty(exports,"EXECUTION_STATUS",{enumerable:true,get:function(){return chunkLODXIALE_cjs.b}});Object.defineProperty(exports,"TASK_STATUS",{enumerable:true,get:function(){return chunkLODXIALE_cjs.a}});Object.defineProperty(exports,"addDynamicTask",{enumerable:true,get:function(){return chunkLODXIALE_cjs.y}});Object.defineProperty(exports,"addKeyToProvides",{enumerable:true,get:function(){return chunkLODXIALE_cjs.u}});Object.defineProperty(exports,"addKeyToRequires",{enumerable:true,get:function(){return chunkLODXIALE_cjs.w}});Object.defineProperty(exports,"applyTaskCompletion",{enumerable:true,get:function(){return chunkLODXIALE_cjs.C}});Object.defineProperty(exports,"applyTaskFailure",{enumerable:true,get:function(){return chunkLODXIALE_cjs.D}});Object.defineProperty(exports,"applyTaskProgress",{enumerable:true,get:function(){return chunkLODXIALE_cjs.E}});Object.defineProperty(exports,"applyTaskRestart",{enumerable:true,get:function(){return chunkLODXIALE_cjs.F}});Object.defineProperty(exports,"applyTaskStart",{enumerable:true,get:function(){return chunkLODXIALE_cjs.B}});Object.defineProperty(exports,"computeAvailableOutputs",{enumerable:true,get:function(){return chunkLODXIALE_cjs.r}});Object.defineProperty(exports,"createDefaultGraphEngineStore",{enumerable:true,get:function(){return chunkLODXIALE_cjs.z}});Object.defineProperty(exports,"createInitialExecutionState",{enumerable:true,get:function(){return chunkLODXIALE_cjs.A}});Object.defineProperty(exports,"getAllTasks",{enumerable:true,get:function(){return chunkLODXIALE_cjs.i}});Object.defineProperty(exports,"getMaxExecutions",{enumerable:true,get:function(){return chunkLODXIALE_cjs.q}});Object.defineProperty(exports,"getProvides",{enumerable:true,get:function(){return chunkLODXIALE_cjs.g}});Object.defineProperty(exports,"getRefreshStrategy",{enumerable:true,get:function(){return chunkLODXIALE_cjs.o}});Object.defineProperty(exports,"getRequires",{enumerable:true,get:function(){return chunkLODXIALE_cjs.h}});Object.defineProperty(exports,"getTask",{enumerable:true,get:function(){return chunkLODXIALE_cjs.j}});Object.defineProperty(exports,"groupTasksByProvides",{enumerable:true,get:function(){return chunkLODXIALE_cjs.s}});Object.defineProperty(exports,"hasOutputConflict",{enumerable:true,get:function(){return chunkLODXIALE_cjs.t}});Object.defineProperty(exports,"hasTask",{enumerable:true,get:function(){return chunkLODXIALE_cjs.k}});Object.defineProperty(exports,"isNonActiveTask",{enumerable:true,get:function(){return chunkLODXIALE_cjs.l}});Object.defineProperty(exports,"isRerunnable",{enumerable:true,get:function(){return chunkLODXIALE_cjs.p}});Object.defineProperty(exports,"isTaskCompleted",{enumerable:true,get:function(){return chunkLODXIALE_cjs.m}});Object.defineProperty(exports,"isTaskRunning",{enumerable:true,get:function(){return chunkLODXIALE_cjs.n}});Object.defineProperty(exports,"removeKeyFromProvides",{enumerable:true,get:function(){return chunkLODXIALE_cjs.v}});Object.defineProperty(exports,"removeKeyFromRequires",{enumerable:true,get:function(){return chunkLODXIALE_cjs.x}});//# sourceMappingURL=index.cjs.map
1
+ 'use strict';var chunkX5MLNGGM_cjs=require('../chunk-X5MLNGGM.cjs'),chunkSIPLKLWU_cjs=require('../chunk-SIPLKLWU.cjs'),chunk7Y47QXMX_cjs=require('../chunk-7Y47QXMX.cjs');require('../chunk-UJ7ZTV4J.cjs'),require('../chunk-GNFE24S7.cjs');Object.defineProperty(exports,"apply",{enumerable:true,get:function(){return chunkX5MLNGGM_cjs.h}});Object.defineProperty(exports,"applyAll",{enumerable:true,get:function(){return chunkX5MLNGGM_cjs.i}});Object.defineProperty(exports,"detectStuckState",{enumerable:true,get:function(){return chunkX5MLNGGM_cjs.e}});Object.defineProperty(exports,"exportGraphConfig",{enumerable:true,get:function(){return chunkX5MLNGGM_cjs.o}});Object.defineProperty(exports,"exportGraphConfigToFile",{enumerable:true,get:function(){return chunkX5MLNGGM_cjs.p}});Object.defineProperty(exports,"flowToMermaid",{enumerable:true,get:function(){return chunkX5MLNGGM_cjs.l}});Object.defineProperty(exports,"getCandidateTasks",{enumerable:true,get:function(){return chunkX5MLNGGM_cjs.g}});Object.defineProperty(exports,"getNonConflictingTasks",{enumerable:true,get:function(){return chunkX5MLNGGM_cjs.b}});Object.defineProperty(exports,"graphToMermaid",{enumerable:true,get:function(){return chunkX5MLNGGM_cjs.k}});Object.defineProperty(exports,"isExecutionComplete",{enumerable:true,get:function(){return chunkX5MLNGGM_cjs.d}});Object.defineProperty(exports,"loadGraphConfig",{enumerable:true,get:function(){return chunkX5MLNGGM_cjs.n}});Object.defineProperty(exports,"next",{enumerable:true,get:function(){return chunkX5MLNGGM_cjs.f}});Object.defineProperty(exports,"planExecution",{enumerable:true,get:function(){return chunkX5MLNGGM_cjs.j}});Object.defineProperty(exports,"selectBestAlternative",{enumerable:true,get:function(){return chunkX5MLNGGM_cjs.a}});Object.defineProperty(exports,"selectRandomTasks",{enumerable:true,get:function(){return chunkX5MLNGGM_cjs.c}});Object.defineProperty(exports,"validateGraph",{enumerable:true,get:function(){return chunkX5MLNGGM_cjs.q}});Object.defineProperty(exports,"validateGraphConfig",{enumerable:true,get:function(){return chunkX5MLNGGM_cjs.m}});Object.defineProperty(exports,"validateGraphSchema",{enumerable:true,get:function(){return chunkX5MLNGGM_cjs.r}});Object.defineProperty(exports,"applyTaskCompletion",{enumerable:true,get:function(){return chunkSIPLKLWU_cjs.b}});Object.defineProperty(exports,"applyTaskFailure",{enumerable:true,get:function(){return chunkSIPLKLWU_cjs.c}});Object.defineProperty(exports,"applyTaskProgress",{enumerable:true,get:function(){return chunkSIPLKLWU_cjs.d}});Object.defineProperty(exports,"applyTaskRestart",{enumerable:true,get:function(){return chunkSIPLKLWU_cjs.e}});Object.defineProperty(exports,"applyTaskStart",{enumerable:true,get:function(){return chunkSIPLKLWU_cjs.a}});Object.defineProperty(exports,"COMPLETION_STRATEGIES",{enumerable:true,get:function(){return chunk7Y47QXMX_cjs.c}});Object.defineProperty(exports,"CONFLICT_STRATEGIES",{enumerable:true,get:function(){return chunk7Y47QXMX_cjs.e}});Object.defineProperty(exports,"DEFAULTS",{enumerable:true,get:function(){return chunk7Y47QXMX_cjs.f}});Object.defineProperty(exports,"EXECUTION_MODES",{enumerable:true,get:function(){return chunk7Y47QXMX_cjs.d}});Object.defineProperty(exports,"EXECUTION_STATUS",{enumerable:true,get:function(){return chunk7Y47QXMX_cjs.b}});Object.defineProperty(exports,"TASK_STATUS",{enumerable:true,get:function(){return chunk7Y47QXMX_cjs.a}});Object.defineProperty(exports,"addDynamicTask",{enumerable:true,get:function(){return chunk7Y47QXMX_cjs.y}});Object.defineProperty(exports,"addKeyToProvides",{enumerable:true,get:function(){return chunk7Y47QXMX_cjs.u}});Object.defineProperty(exports,"addKeyToRequires",{enumerable:true,get:function(){return chunk7Y47QXMX_cjs.w}});Object.defineProperty(exports,"computeAvailableOutputs",{enumerable:true,get:function(){return chunk7Y47QXMX_cjs.r}});Object.defineProperty(exports,"createDefaultGraphEngineStore",{enumerable:true,get:function(){return chunk7Y47QXMX_cjs.z}});Object.defineProperty(exports,"createInitialExecutionState",{enumerable:true,get:function(){return chunk7Y47QXMX_cjs.A}});Object.defineProperty(exports,"getAllTasks",{enumerable:true,get:function(){return chunk7Y47QXMX_cjs.i}});Object.defineProperty(exports,"getMaxExecutions",{enumerable:true,get:function(){return chunk7Y47QXMX_cjs.q}});Object.defineProperty(exports,"getProvides",{enumerable:true,get:function(){return chunk7Y47QXMX_cjs.g}});Object.defineProperty(exports,"getRefreshStrategy",{enumerable:true,get:function(){return chunk7Y47QXMX_cjs.o}});Object.defineProperty(exports,"getRequires",{enumerable:true,get:function(){return chunk7Y47QXMX_cjs.h}});Object.defineProperty(exports,"getTask",{enumerable:true,get:function(){return chunk7Y47QXMX_cjs.j}});Object.defineProperty(exports,"groupTasksByProvides",{enumerable:true,get:function(){return chunk7Y47QXMX_cjs.s}});Object.defineProperty(exports,"hasOutputConflict",{enumerable:true,get:function(){return chunk7Y47QXMX_cjs.t}});Object.defineProperty(exports,"hasTask",{enumerable:true,get:function(){return chunk7Y47QXMX_cjs.k}});Object.defineProperty(exports,"isNonActiveTask",{enumerable:true,get:function(){return chunk7Y47QXMX_cjs.l}});Object.defineProperty(exports,"isRerunnable",{enumerable:true,get:function(){return chunk7Y47QXMX_cjs.p}});Object.defineProperty(exports,"isTaskCompleted",{enumerable:true,get:function(){return chunk7Y47QXMX_cjs.m}});Object.defineProperty(exports,"isTaskRunning",{enumerable:true,get:function(){return chunk7Y47QXMX_cjs.n}});Object.defineProperty(exports,"removeKeyFromProvides",{enumerable:true,get:function(){return chunk7Y47QXMX_cjs.v}});Object.defineProperty(exports,"removeKeyFromRequires",{enumerable:true,get:function(){return chunk7Y47QXMX_cjs.x}});//# sourceMappingURL=index.cjs.map
2
2
  //# sourceMappingURL=index.cjs.map
@@ -1,2 +1,2 @@
1
- export{h as apply,i as applyAll,e as detectStuckState,o as exportGraphConfig,p as exportGraphConfigToFile,l as flowToMermaid,g as getCandidateTasks,b as getNonConflictingTasks,k as graphToMermaid,d as isExecutionComplete,n as loadGraphConfig,f as next,j as planExecution,a as selectBestAlternative,c as selectRandomTasks,q as validateGraph,m as validateGraphConfig,r as validateGraphSchema}from'../chunk-HLJH7LGW.js';export{c as COMPLETION_STRATEGIES,e as CONFLICT_STRATEGIES,f as DEFAULTS,d as EXECUTION_MODES,b as EXECUTION_STATUS,a as TASK_STATUS,y as addDynamicTask,u as addKeyToProvides,w as addKeyToRequires,C as applyTaskCompletion,D as applyTaskFailure,E as applyTaskProgress,F as applyTaskRestart,B as applyTaskStart,r as computeAvailableOutputs,z as createDefaultGraphEngineStore,A as createInitialExecutionState,i as getAllTasks,q as getMaxExecutions,g as getProvides,o as getRefreshStrategy,h as getRequires,j as getTask,s as groupTasksByProvides,t as hasOutputConflict,k as hasTask,l as isNonActiveTask,p as isRerunnable,m as isTaskCompleted,n as isTaskRunning,v as removeKeyFromProvides,x as removeKeyFromRequires}from'../chunk-WDPOGXTY.js';import'../chunk-MNEOJWPS.js';import'../chunk-FW4363Y4.js';//# sourceMappingURL=index.js.map
1
+ export{h as apply,i as applyAll,e as detectStuckState,o as exportGraphConfig,p as exportGraphConfigToFile,l as flowToMermaid,g as getCandidateTasks,b as getNonConflictingTasks,k as graphToMermaid,d as isExecutionComplete,n as loadGraphConfig,f as next,j as planExecution,a as selectBestAlternative,c as selectRandomTasks,q as validateGraph,m as validateGraphConfig,r as validateGraphSchema}from'../chunk-SK2R5ILQ.js';export{b as applyTaskCompletion,c as applyTaskFailure,d as applyTaskProgress,e as applyTaskRestart,a as applyTaskStart}from'../chunk-EOVTMJYZ.js';export{c as COMPLETION_STRATEGIES,e as CONFLICT_STRATEGIES,f as DEFAULTS,d as EXECUTION_MODES,b as EXECUTION_STATUS,a as TASK_STATUS,y as addDynamicTask,u as addKeyToProvides,w as addKeyToRequires,r as computeAvailableOutputs,z as createDefaultGraphEngineStore,A as createInitialExecutionState,i as getAllTasks,q as getMaxExecutions,g as getProvides,o as getRefreshStrategy,h as getRequires,j as getTask,s as groupTasksByProvides,t as hasOutputConflict,k as hasTask,l as isNonActiveTask,p as isRerunnable,m as isTaskCompleted,n as isTaskRunning,v as removeKeyFromProvides,x as removeKeyFromRequires}from'../chunk-R7SQQSDX.js';import'../chunk-MNEOJWPS.js';import'../chunk-FW4363Y4.js';//# sourceMappingURL=index.js.map
2
2
  //# sourceMappingURL=index.js.map